/*
 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
 * This devtool is neither made for production nor for readable output files.
 * It uses "eval()" calls to create a separate source file in the browser devtools.
 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
 * or disable the default devtool with "devtool: false".
 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
 */
(self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] = self["webpackChunk_JUPYTERLAB_CORE_OUTPUT"] || []).push([["vendors-node_modules_jupyterlab_lsp_lib_index_js"],{

/***/ "../node_modules/@jupyterlab/lsp/lib/adapters/adapter.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/adapters/adapter.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WidgetLSPAdapter\": () => (/* binding */ WidgetLSPAdapter)\n/* harmony export */ });\n/* harmony import */ var lodash_mergewith__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash.mergewith */ \"../node_modules/lodash.mergewith/index.js\");\n/* harmony import */ var lodash_mergewith__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_mergewith__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_3__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\nconst createButton = _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.Dialog.createButton;\n/**\n * The values should follow the https://microsoft.github.io/language-server-protocol/specification guidelines\n */\nconst MIME_TYPE_LANGUAGE_MAP = {\n    'text/x-rsrc': 'r',\n    'text/x-r-source': 'r',\n    // currently there are no LSP servers for IPython we are aware of\n    'text/x-ipython': 'python'\n};\n/**\n * Foreign code: low level adapter is not aware of the presence of foreign languages;\n * it operates on the virtual document and must not attempt to infer the language dependencies\n * as this would make the logic of inspections caching impossible to maintain, thus the WidgetAdapter\n * has to handle that, keeping multiple connections and multiple virtual documents.\n */\nclass WidgetLSPAdapter {\n    // note: it could be using namespace/IOptions pattern,\n    // but I do not know how to make it work with the generic type T\n    // (other than using 'any' in the IOptions interface)\n    constructor(widget, options) {\n        this.widget = widget;\n        this.options = options;\n        /**\n         * Signal emitted when the adapter is connected.\n         */\n        this._adapterConnected = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal(this);\n        /**\n         * Signal emitted when the active editor have changed.\n         */\n        this._activeEditorChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal(this);\n        /**\n         * Signal emitted when an editor is changed.\n         */\n        this._editorAdded = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal(this);\n        /**\n         * Signal emitted when an editor is removed.\n         */\n        this._editorRemoved = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal(this);\n        /**\n         * Signal emitted when the adapter is disposed.\n         */\n        this._disposed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal(this);\n        this._isDisposed = false;\n        this._virtualDocument = null;\n        this._connectionManager = options.connectionManager;\n        this._isConnected = false;\n        this._trans = (options.translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_2__.nullTranslator).load('jupyterlab');\n        // set up signal connections\n        this.widget.context.saveState.connect(this.onSaveState, this);\n        this.connectionManager.closed.connect(this.onConnectionClosed, this);\n        this.widget.disposed.connect(this.dispose, this);\n    }\n    /**\n     * Check if the adapter is disposed\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Check if the document contains multiple editors\n     */\n    get hasMultipleEditors() {\n        return this.editors.length > 1;\n    }\n    /**\n     * Get the ID of the internal widget.\n     */\n    get widgetId() {\n        return this.widget.id;\n    }\n    /**\n     * Get the language identifier of the document\n     */\n    get language() {\n        // the values should follow https://microsoft.github.io/language-server-protocol/specification guidelines,\n        // see the table in https://microsoft.github.io/language-server-protocol/specification#textDocumentItem\n        if (MIME_TYPE_LANGUAGE_MAP.hasOwnProperty(this.mimeType)) {\n            return MIME_TYPE_LANGUAGE_MAP[this.mimeType];\n        }\n        else {\n            let withoutParameters = this.mimeType.split(';')[0];\n            let [type, subtype] = withoutParameters.split('/');\n            if (type === 'application' || type === 'text') {\n                if (subtype.startsWith('x-')) {\n                    return subtype.substring(2);\n                }\n                else {\n                    return subtype;\n                }\n            }\n            else {\n                return this.mimeType;\n            }\n        }\n    }\n    /**\n     * Signal emitted when the adapter is connected.\n     */\n    get adapterConnected() {\n        return this._adapterConnected;\n    }\n    /**\n     * Signal emitted when the active editor have changed.\n     */\n    get activeEditorChanged() {\n        return this._activeEditorChanged;\n    }\n    /**\n     * Signal emitted when the adapter is disposed.\n     */\n    get disposed() {\n        return this._disposed;\n    }\n    /**\n     * Signal emitted when the an editor is changed.\n     */\n    get editorAdded() {\n        return this._editorAdded;\n    }\n    /**\n     * Signal emitted when the an editor is removed.\n     */\n    get editorRemoved() {\n        return this._editorRemoved;\n    }\n    /**\n     * The virtual document is connected or not\n     */\n    get isConnected() {\n        return this._isConnected;\n    }\n    /**\n     * The LSP document and connection manager instance.\n     */\n    get connectionManager() {\n        return this._connectionManager;\n    }\n    /**\n     * The translator provider.\n     */\n    get trans() {\n        return this._trans;\n    }\n    /**\n     * Promise that resolves once the document is updated\n     */\n    get updateFinished() {\n        return this._updateFinished;\n    }\n    /**\n     * Internal virtual document of the adapter.\n     */\n    get virtualDocument() {\n        return this._virtualDocument;\n    }\n    /**\n     * Callback on connection closed event.\n     */\n    onConnectionClosed(_, { virtualDocument }) {\n        if (virtualDocument === this.virtualDocument) {\n            this.dispose();\n        }\n    }\n    /**\n     * Dispose the adapter.\n     */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        this.disconnect();\n        this._virtualDocument = null;\n        this._disposed.emit();\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal.clearData(this);\n    }\n    /**\n     * Disconnect virtual document from the language server.\n     */\n    disconnect() {\n        var _a, _b;\n        const uri = (_a = this.virtualDocument) === null || _a === void 0 ? void 0 : _a.uri;\n        const { model } = this.widget.context;\n        if (uri) {\n            this.connectionManager.unregisterDocument(uri);\n        }\n        model.contentChanged.disconnect(this._onContentChanged, this);\n        // pretend that all editors were removed to trigger the disconnection of even handlers\n        // they will be connected again on new connection\n        for (let { ceEditor: editor } of this.editors) {\n            this._editorRemoved.emit({\n                editor: editor\n            });\n        }\n        (_b = this.virtualDocument) === null || _b === void 0 ? void 0 : _b.dispose();\n    }\n    /**\n     * Update the virtual document.\n     */\n    updateDocuments() {\n        if (this._isDisposed) {\n            console.warn('Cannot update documents: adapter disposed');\n            return Promise.reject('Cannot update documents: adapter disposed');\n        }\n        return this.virtualDocument.updateManager.updateDocuments(this.editors);\n    }\n    /**\n     * Callback called on the document changed event.\n     */\n    documentChanged(virtualDocument, document, isInit = false) {\n        if (this._isDisposed) {\n            console.warn('Cannot swap document: adapter disposed');\n            return;\n        }\n        // TODO only send the difference, using connection.sendSelectiveChange()\n        let connection = this.connectionManager.connections.get(virtualDocument.uri);\n        if (!(connection === null || connection === void 0 ? void 0 : connection.isReady)) {\n            console.log('Skipping document update signal: connection not ready');\n            return;\n        }\n        connection.sendFullTextChange(virtualDocument.value, virtualDocument.documentInfo);\n    }\n    // equivalent to triggering didClose and didOpen, as per syncing specification,\n    // but also reloads the connection; used during file rename (or when it was moved)\n    reloadConnection() {\n        // ignore premature calls (before the editor was initialized)\n        if (this.virtualDocument === null) {\n            return;\n        }\n        // disconnect all existing connections (and dispose adapters)\n        this.disconnect();\n        // recreate virtual document using current path and language\n        // as virtual editor assumes it gets the virtual document at init,\n        // just dispose virtual editor (which disposes virtual document too)\n        // and re-initialize both virtual editor and document\n        this.initVirtual();\n        // reconnect\n        this.connectDocument(this.virtualDocument, true).catch(console.warn);\n    }\n    /**\n     * Callback on document saved event.\n     */\n    onSaveState(context, state) {\n        // ignore premature calls (before the editor was initialized)\n        if (this.virtualDocument === null) {\n            return;\n        }\n        if (state === 'completed') {\n            // note: must only be send to the appropriate connections as\n            // some servers (Julia) break if they receive save notification\n            // for a document that was not opened before, see:\n            // https://github.com/jupyter-lsp/jupyterlab-lsp/issues/490\n            const documentsToSave = [this.virtualDocument];\n            for (let virtualDocument of documentsToSave) {\n                let connection = this.connectionManager.connections.get(virtualDocument.uri);\n                if (!connection) {\n                    continue;\n                }\n                connection.sendSaved(virtualDocument.documentInfo);\n                for (let foreign of virtualDocument.foreignDocuments.values()) {\n                    documentsToSave.push(foreign);\n                }\n            }\n        }\n    }\n    /**\n     * Connect the virtual document with the language server.\n     */\n    async onConnected(data) {\n        let { virtualDocument } = data;\n        this._adapterConnected.emit(data);\n        this._isConnected = true;\n        try {\n            await this.updateDocuments();\n        }\n        catch (reason) {\n            console.warn('Could not update documents', reason);\n            return;\n        }\n        // refresh the document on the LSP server\n        this.documentChanged(virtualDocument, virtualDocument, true);\n        data.connection.serverNotifications['$/logTrace'].connect((connection, message) => {\n            console.log(data.connection.serverIdentifier, 'trace', virtualDocument.uri, message);\n        });\n        data.connection.serverNotifications['window/logMessage'].connect((connection, message) => {\n            console.log(connection.serverIdentifier + ': ' + message.message);\n        });\n        data.connection.serverNotifications['window/showMessage'].connect((connection, message) => {\n            void (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.showDialog)({\n                title: this.trans.__('Message from ') + connection.serverIdentifier,\n                body: message.message\n            });\n        });\n        data.connection.serverRequests['window/showMessageRequest'].setHandler(async (params) => {\n            const actionItems = params.actions;\n            const buttons = actionItems\n                ? actionItems.map(action => {\n                    return createButton({\n                        label: action.title\n                    });\n                })\n                : [createButton({ label: this.trans.__('Dismiss') })];\n            const result = await (0,_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_1__.showDialog)({\n                title: this.trans.__('Message from ') + data.connection.serverIdentifier,\n                body: params.message,\n                buttons: buttons\n            });\n            const choice = buttons.indexOf(result.button);\n            if (choice === -1) {\n                return null;\n            }\n            if (actionItems) {\n                return actionItems[choice];\n            }\n            return null;\n        });\n    }\n    /**\n     * Opens a connection for the document. The connection may or may\n     * not be initialized, yet, and depending on when this is called, the client\n     * may not be fully connected.\n     *\n     * @param virtualDocument a VirtualDocument\n     * @param sendOpen whether to open the document immediately\n     */\n    async connectDocument(virtualDocument, sendOpen = false) {\n        virtualDocument.foreignDocumentOpened.connect(this.onForeignDocumentOpened, this);\n        const connectionContext = await this._connect(virtualDocument).catch(console.error);\n        if (connectionContext && connectionContext.connection) {\n            virtualDocument.changed.connect(this.documentChanged, this);\n            if (sendOpen) {\n                connectionContext.connection.sendOpenWhenReady(virtualDocument.documentInfo);\n            }\n        }\n    }\n    /**\n     * Create the virtual document using current path and language.\n     */\n    initVirtual() {\n        var _a;\n        const { model } = this.widget.context;\n        (_a = this._virtualDocument) === null || _a === void 0 ? void 0 : _a.dispose();\n        this._virtualDocument = this.createVirtualDocument();\n        model.contentChanged.connect(this._onContentChanged, this);\n    }\n    /**\n     * Handler for opening a document contained in a parent document. The assumption\n     * is that the editor already exists for this, and as such the document\n     * should be queued for immediate opening.\n     *\n     * @param host the VirtualDocument that contains the VirtualDocument in another language\n     * @param context information about the foreign VirtualDocument\n     */\n    async onForeignDocumentOpened(_, context) {\n        const { foreignDocument } = context;\n        await this.connectDocument(foreignDocument, true);\n        foreignDocument.foreignDocumentClosed.connect(this._onForeignDocumentClosed, this);\n    }\n    /**\n     * Callback called when a foreign document is closed,\n     * the associated signals with this virtual document\n     * are disconnected.\n     */\n    _onForeignDocumentClosed(_, context) {\n        const { foreignDocument } = context;\n        foreignDocument.foreignDocumentClosed.disconnect(this._onForeignDocumentClosed, this);\n        foreignDocument.foreignDocumentOpened.disconnect(this.onForeignDocumentOpened, this);\n        foreignDocument.changed.disconnect(this.documentChanged, this);\n    }\n    /**\n     * Detect the capabilities for the document type then\n     * open the websocket connection with the language server.\n     */\n    async _connect(virtualDocument) {\n        let language = virtualDocument.language;\n        let capabilities = {\n            textDocument: {\n                synchronization: {\n                    dynamicRegistration: true,\n                    willSave: false,\n                    didSave: true,\n                    willSaveWaitUntil: false\n                }\n            },\n            workspace: {\n                didChangeConfiguration: {\n                    dynamicRegistration: true\n                }\n            }\n        };\n        capabilities = lodash_mergewith__WEBPACK_IMPORTED_MODULE_0___default()(capabilities, this.options.featureManager.clientCapabilities());\n        let options = {\n            capabilities,\n            virtualDocument,\n            language,\n            hasLspSupportedFile: virtualDocument.hasLspSupportedFile\n        };\n        let connection = await this.connectionManager.connect(options);\n        if (connection) {\n            await this.onConnected({ virtualDocument, connection });\n            return {\n                connection,\n                virtualDocument\n            };\n        }\n        else {\n            return undefined;\n        }\n    }\n    /**\n     * Handle content changes and update all virtual documents after a change.\n     *\n     * #### Notes\n     * Update to the state of a notebook may be done without a notice on the\n     * CodeMirror level, e.g. when a cell is deleted. Therefore a\n     * JupyterLab-specific signal is watched instead.\n     *\n     * While by not using the change event of CodeMirror editors we lose an easy\n     * way to send selective (range) updates this can be still implemented by\n     * comparison of before/after states of the virtual documents, which is\n     * more resilient and editor-independent.\n     */\n    async _onContentChanged(_) {\n        // Update the virtual documents.\n        // Sending the updates to LSP is out of scope here.\n        const promise = this.updateDocuments();\n        if (!promise) {\n            console.warn('Could not update documents');\n            return;\n        }\n        this._updateFinished = promise.catch(console.warn);\n        await this.updateFinished;\n    }\n}\n//# sourceMappingURL=adapter.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/adapters/adapter.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/connection.js":
/*!*********************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/connection.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LSPConnection\": () => (/* binding */ LSPConnection),\n/* harmony export */   \"Provider\": () => (/* binding */ Provider)\n/* harmony export */ });\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _tokens__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./tokens */ \"../node_modules/@jupyterlab/lsp/lib/tokens.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ \"../node_modules/@jupyterlab/lsp/lib/utils.js\");\n/* harmony import */ var _ws_connection_server_capability_registration__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ws-connection/server-capability-registration */ \"../node_modules/@jupyterlab/lsp/lib/ws-connection/server-capability-registration.js\");\n/* harmony import */ var _ws_connection_ws_connection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ws-connection/ws-connection */ \"../node_modules/@jupyterlab/lsp/lib/ws-connection/ws-connection.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\n/**\n * Helper class to handle client request\n */\nclass ClientRequestHandler {\n    constructor(connection, method, emitter) {\n        this.connection = connection;\n        this.method = method;\n        this.emitter = emitter;\n    }\n    request(params) {\n        // TODO check if is ready?\n        this.emitter.log(MessageKind.clientRequested, {\n            method: this.method,\n            message: params\n        });\n        return this.connection\n            .sendRequest(this.method, params)\n            .then((result) => {\n            this.emitter.log(MessageKind.resultForClient, {\n                method: this.method,\n                message: params\n            });\n            return result;\n        });\n    }\n}\n/**\n * Helper class to handle server responses\n */\nclass ServerRequestHandler {\n    constructor(connection, method, emitter) {\n        this.connection = connection;\n        this.method = method;\n        this.emitter = emitter;\n        // on request accepts \"thenable\"\n        this.connection.onRequest(method, this._handle.bind(this));\n        this._handler = null;\n    }\n    setHandler(handler) {\n        this._handler = handler;\n    }\n    clearHandler() {\n        this._handler = null;\n    }\n    _handle(request) {\n        this.emitter.log(MessageKind.serverRequested, {\n            method: this.method,\n            message: request\n        });\n        if (!this._handler) {\n            return new Promise(() => undefined);\n        }\n        return this._handler(request, this.emitter).then(result => {\n            this.emitter.log(MessageKind.responseForServer, {\n                method: this.method,\n                message: result\n            });\n            return result;\n        });\n    }\n}\nconst Provider = {\n    TEXT_DOCUMENT_SYNC: 'textDocumentSync',\n    COMPLETION: 'completionProvider',\n    HOVER: 'hoverProvider',\n    SIGNATURE_HELP: 'signatureHelpProvider',\n    DECLARATION: 'declarationProvider',\n    DEFINITION: 'definitionProvider',\n    TYPE_DEFINITION: 'typeDefinitionProvider',\n    IMPLEMENTATION: 'implementationProvider',\n    REFERENCES: 'referencesProvider',\n    DOCUMENT_HIGHLIGHT: 'documentHighlightProvider',\n    DOCUMENT_SYMBOL: 'documentSymbolProvider',\n    CODE_ACTION: 'codeActionProvider',\n    CODE_LENS: 'codeLensProvider',\n    DOCUMENT_LINK: 'documentLinkProvider',\n    COLOR: 'colorProvider',\n    DOCUMENT_FORMATTING: 'documentFormattingProvider',\n    DOCUMENT_RANGE_FORMATTING: 'documentRangeFormattingProvider',\n    DOCUMENT_ON_TYPE_FORMATTING: 'documentOnTypeFormattingProvider',\n    RENAME: 'renameProvider',\n    FOLDING_RANGE: 'foldingRangeProvider',\n    EXECUTE_COMMAND: 'executeCommandProvider',\n    SELECTION_RANGE: 'selectionRangeProvider',\n    WORKSPACE_SYMBOL: 'workspaceSymbolProvider',\n    WORKSPACE: 'workspace'\n};\n/**\n * Create a map between the request method and its handler\n */\nfunction createMethodMap(methods, handlerFactory) {\n    const result = {};\n    for (let method of Object.values(methods)) {\n        result[method] = handlerFactory(method);\n    }\n    return result;\n}\nvar MessageKind;\n(function (MessageKind) {\n    MessageKind[MessageKind[\"clientNotifiedServer\"] = 0] = \"clientNotifiedServer\";\n    MessageKind[MessageKind[\"serverNotifiedClient\"] = 1] = \"serverNotifiedClient\";\n    MessageKind[MessageKind[\"serverRequested\"] = 2] = \"serverRequested\";\n    MessageKind[MessageKind[\"clientRequested\"] = 3] = \"clientRequested\";\n    MessageKind[MessageKind[\"resultForClient\"] = 4] = \"resultForClient\";\n    MessageKind[MessageKind[\"responseForServer\"] = 5] = \"responseForServer\";\n})(MessageKind || (MessageKind = {}));\nclass LSPConnection extends _ws_connection_ws_connection__WEBPACK_IMPORTED_MODULE_1__.LspWsConnection {\n    constructor(options) {\n        super(options);\n        /**\n         * Is the connection is closed manually?\n         */\n        this._closingManually = false;\n        this._closeSignal = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._errorSignal = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._serverInitialized = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._options = options;\n        this.logAllCommunication = false;\n        this.serverIdentifier = options.serverIdentifier;\n        this.serverLanguage = options.languageId;\n        this.documentsToOpen = [];\n        this.clientNotifications =\n            this.constructNotificationHandlers(_tokens__WEBPACK_IMPORTED_MODULE_2__.Method.ClientNotification);\n        this.serverNotifications =\n            this.constructNotificationHandlers(_tokens__WEBPACK_IMPORTED_MODULE_2__.Method.ServerNotification);\n    }\n    /**\n     * Signal emitted when the connection is closed.\n     */\n    get closeSignal() {\n        return this._closeSignal;\n    }\n    /**\n     * Signal emitted when the connection receives an error\n     * message.\n     */\n    get errorSignal() {\n        return this._errorSignal;\n    }\n    /**\n     * Signal emitted when the connection is initialized.\n     */\n    get serverInitialized() {\n        return this._serverInitialized;\n    }\n    /**\n     * Dispose the connection.\n     */\n    dispose() {\n        if (this.isDisposed) {\n            return;\n        }\n        Object.values(this.serverRequests).forEach(request => request.clearHandler());\n        this.close();\n        super.dispose();\n    }\n    /**\n     * Helper to print the logs to logger, for now we are using\n     * directly the browser's console.\n     */\n    log(kind, message) {\n        if (this.logAllCommunication) {\n            console.log(kind, message);\n        }\n    }\n    /**\n     * Send the open request to the backend when the server is\n     * ready.\n     */\n    sendOpenWhenReady(documentInfo) {\n        if (this.isReady) {\n            this.sendOpen(documentInfo);\n        }\n        else {\n            this.documentsToOpen.push(documentInfo);\n        }\n    }\n    /**\n     * Send the document changes to the server.\n     */\n    sendSelectiveChange(changeEvent, documentInfo) {\n        this._sendChange([changeEvent], documentInfo);\n    }\n    /**\n     * Send all changes to the server.\n     */\n    sendFullTextChange(text, documentInfo) {\n        this._sendChange([{ text }], documentInfo);\n    }\n    /**\n     * Check if a capability is available in the server capabilities.\n     */\n    provides(capability) {\n        return !!(this.serverCapabilities && this.serverCapabilities[capability]);\n    }\n    /**\n     * Close the connection to the server.\n     */\n    close() {\n        try {\n            this._closingManually = true;\n            super.close();\n        }\n        catch (e) {\n            this._closingManually = false;\n        }\n    }\n    /**\n     * Initialize a connection over a web socket that speaks the LSP.\n     */\n    connect(socket) {\n        super.connect(socket);\n        (0,_utils__WEBPACK_IMPORTED_MODULE_3__.untilReady)(() => {\n            return this.isConnected;\n        }, -1)\n            .then(() => {\n            const disposable = this.connection.onClose(() => {\n                this._isConnected = false;\n                this._closeSignal.emit(this._closingManually);\n            });\n            this._disposables.push(disposable);\n        })\n            .catch(() => {\n            console.error('Could not connect onClose signal');\n        });\n    }\n    /**\n     * Get send request to the server to get completion results\n     * from a completion item\n     */\n    async getCompletionResolve(completionItem) {\n        if (!this.isReady) {\n            return;\n        }\n        return this.connection.sendRequest('completionItem/resolve', completionItem);\n    }\n    /**\n     * Generate the notification handlers\n     */\n    constructNotificationHandlers(methods) {\n        const factory = () => new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        return createMethodMap(methods, factory);\n    }\n    /**\n     * Generate the client request handler\n     */\n    constructClientRequestHandler(methods) {\n        return createMethodMap(methods, method => new ClientRequestHandler(this.connection, method, this));\n    }\n    /**\n     * Generate the server response handler\n     */\n    constructServerRequestHandler(methods) {\n        return createMethodMap(methods, method => new ServerRequestHandler(this.connection, method, this));\n    }\n    /**\n     * Initialization parameters to be sent to the language server.\n     * Subclasses can overload this when adding more features.\n     */\n    initializeParams() {\n        return {\n            ...super.initializeParams(),\n            capabilities: this._options.capabilities,\n            initializationOptions: null,\n            processId: null,\n            workspaceFolders: null\n        };\n    }\n    /**\n     * Callback called when the server is initialized.\n     */\n    onServerInitialized(params) {\n        this.afterInitialized();\n        super.onServerInitialized(params);\n        while (this.documentsToOpen.length) {\n            this.sendOpen(this.documentsToOpen.pop());\n        }\n        this._serverInitialized.emit(this.serverCapabilities);\n    }\n    /**\n     * Once the server is initialized, this method generates the\n     * client and server handlers\n     */\n    afterInitialized() {\n        const disposable = this.connection.onError(e => this._errorSignal.emit(e));\n        this._disposables.push(disposable);\n        for (const method of Object.values(_tokens__WEBPACK_IMPORTED_MODULE_2__.Method.ServerNotification)) {\n            const signal = this.serverNotifications[method];\n            const disposable = this.connection.onNotification(method, params => {\n                this.log(MessageKind.serverNotifiedClient, {\n                    method,\n                    message: params\n                });\n                signal.emit(params);\n            });\n            this._disposables.push(disposable);\n        }\n        for (const method of Object.values(_tokens__WEBPACK_IMPORTED_MODULE_2__.Method.ClientNotification)) {\n            const signal = this.clientNotifications[method];\n            signal.connect((emitter, params) => {\n                this.log(MessageKind.clientNotifiedServer, {\n                    method,\n                    message: params\n                });\n                this.connection.sendNotification(method, params).catch(console.error);\n            });\n        }\n        this.clientRequests = this.constructClientRequestHandler(_tokens__WEBPACK_IMPORTED_MODULE_2__.Method.ClientRequest);\n        this.serverRequests = this.constructServerRequestHandler(_tokens__WEBPACK_IMPORTED_MODULE_2__.Method.ServerRequest);\n        this.serverRequests['client/registerCapability'].setHandler(async (params) => {\n            params.registrations.forEach((capabilityRegistration) => {\n                try {\n                    const updatedCapabilities = (0,_ws_connection_server_capability_registration__WEBPACK_IMPORTED_MODULE_4__.registerServerCapability)(this.serverCapabilities, capabilityRegistration);\n                    if (updatedCapabilities === null) {\n                        console.error(`Failed to register server capability: ${capabilityRegistration}`);\n                        return;\n                    }\n                    this.serverCapabilities = updatedCapabilities;\n                }\n                catch (err) {\n                    console.error(err);\n                }\n            });\n        });\n        this.serverRequests['client/unregisterCapability'].setHandler(async (params) => {\n            params.unregisterations.forEach((capabilityUnregistration) => {\n                this.serverCapabilities = (0,_ws_connection_server_capability_registration__WEBPACK_IMPORTED_MODULE_4__.unregisterServerCapability)(this.serverCapabilities, capabilityUnregistration);\n            });\n        });\n        this.serverRequests['workspace/configuration'].setHandler(async (params) => {\n            return params.items.map(item => {\n                // LSP: \"If the client can’t provide a configuration setting for a given scope\n                // then `null` needs to be present in the returned array.\"\n                // for now we do not support configuration, but yaml server does not respect\n                // client capability so we have a handler just for that\n                return null;\n            });\n        });\n    }\n    /**\n     * Send the document changed data to the server.\n     */\n    _sendChange(changeEvents, documentInfo) {\n        if (!this.isReady) {\n            return;\n        }\n        if (documentInfo.uri.length === 0) {\n            return;\n        }\n        if (!this.openedUris.get(documentInfo.uri)) {\n            this.sendOpen(documentInfo);\n        }\n        const textDocumentChange = {\n            textDocument: {\n                uri: documentInfo.uri,\n                version: documentInfo.version\n            },\n            contentChanges: changeEvents\n        };\n        this.connection\n            .sendNotification('textDocument/didChange', textDocumentChange)\n            .catch(console.error);\n        documentInfo.version++;\n    }\n}\n//# sourceMappingURL=connection.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/connection.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/connection_manager.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/connection_manager.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DocumentConnectionManager\": () => (/* binding */ DocumentConnectionManager)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _connection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./connection */ \"../node_modules/@jupyterlab/lsp/lib/connection.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"../node_modules/@jupyterlab/lsp/lib/utils.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n/**\n * Each Widget with a document (whether file or a notebook) has the same DocumentConnectionManager\n * (see JupyterLabWidgetAdapter). Using id_path instead of uri led to documents being overwritten\n * as two identical id_paths could be created for two different notebooks.\n */\nclass DocumentConnectionManager {\n    constructor(options) {\n        /**\n         * Fired the first time a connection is opened. These _should_ be the only\n         * invocation of `.on` (once remaining LSPFeature.connection_handlers are made\n         * singletons).\n         */\n        this.onNewConnection = (connection) => {\n            const errorSignalSlot = (_, e) => {\n                console.error(e);\n                let error = e.length && e.length >= 1 ? e[0] : new Error();\n                if (error.message.indexOf('code = 1005') !== -1) {\n                    console.error(`Connection failed for ${connection}`);\n                    this._forEachDocumentOfConnection(connection, virtualDocument => {\n                        console.error('disconnecting ' + virtualDocument.uri);\n                        this._closed.emit({ connection, virtualDocument });\n                        this._ignoredLanguages.add(virtualDocument.language);\n                        console.error(`Cancelling further attempts to connect ${virtualDocument.uri} and other documents for this language (no support from the server)`);\n                    });\n                }\n                else if (error.message.indexOf('code = 1006') !== -1) {\n                    console.error('Connection closed by the server');\n                }\n                else {\n                    console.error('Connection error:', e);\n                }\n            };\n            connection.errorSignal.connect(errorSignalSlot);\n            const serverInitializedSlot = () => {\n                // Initialize using settings stored in the SettingRegistry\n                this._forEachDocumentOfConnection(connection, virtualDocument => {\n                    // TODO: is this still necessary, e.g. for status bar to update responsively?\n                    this._initialized.emit({ connection, virtualDocument });\n                });\n                this.updateServerConfigurations(this.initialConfigurations);\n            };\n            connection.serverInitialized.connect(serverInitializedSlot);\n            const closeSignalSlot = (_, closedManually) => {\n                if (!closedManually) {\n                    console.error('Connection unexpectedly disconnected');\n                }\n                else {\n                    console.log('Connection closed');\n                    this._forEachDocumentOfConnection(connection, virtualDocument => {\n                        this._closed.emit({ connection, virtualDocument });\n                    });\n                }\n            };\n            connection.closeSignal.connect(closeSignalSlot);\n        };\n        this._initialized = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._connected = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._disconnected = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._closed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._documentsChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this.connections = new Map();\n        this.documents = new Map();\n        this.adapters = new Map();\n        this._ignoredLanguages = new Set();\n        this.languageServerManager = options.languageServerManager;\n        Private.setLanguageServerManager(options.languageServerManager);\n    }\n    /**\n     * Signal emitted when the manager is initialized.\n     */\n    get initialized() {\n        return this._initialized;\n    }\n    /**\n     * Signal emitted when the manager is connected to the server\n     */\n    get connected() {\n        return this._connected;\n    }\n    /**\n     * Connection temporarily lost or could not be fully established; a re-connection will be attempted;\n     */\n    get disconnected() {\n        return this._disconnected;\n    }\n    /**\n     * Connection was closed permanently and no-reconnection will be attempted, e.g.:\n     *  - there was a serious server error\n     *  - user closed the connection,\n     *  - re-connection attempts exceeded,\n     */\n    get closed() {\n        return this._closed;\n    }\n    /**\n     * Signal emitted when the document is changed.\n     */\n    get documentsChanged() {\n        return this._documentsChanged;\n    }\n    /**\n     * Promise resolved when the language server manager is ready.\n     */\n    get ready() {\n        return Private.getLanguageServerManager().ready;\n    }\n    /**\n     * Helper to connect various virtual document signal with callbacks of\n     * this class.\n     *\n     * @param  virtualDocument - virtual document to be connected.\n     */\n    connectDocumentSignals(virtualDocument) {\n        virtualDocument.foreignDocumentOpened.connect(this.onForeignDocumentOpened, this);\n        virtualDocument.foreignDocumentClosed.connect(this.onForeignDocumentClosed, this);\n        this.documents.set(virtualDocument.uri, virtualDocument);\n        this._documentsChanged.emit(this.documents);\n    }\n    /**\n     * Helper to disconnect various virtual document signal with callbacks of\n     * this class.\n     *\n     * @param  virtualDocument - virtual document to be disconnected.\n     */\n    disconnectDocumentSignals(virtualDocument, emit = true) {\n        virtualDocument.foreignDocumentOpened.disconnect(this.onForeignDocumentOpened, this);\n        virtualDocument.foreignDocumentClosed.disconnect(this.onForeignDocumentClosed, this);\n        this.documents.delete(virtualDocument.uri);\n        for (const foreign of virtualDocument.foreignDocuments.values()) {\n            this.disconnectDocumentSignals(foreign, false);\n        }\n        if (emit) {\n            this._documentsChanged.emit(this.documents);\n        }\n    }\n    /**\n     * Handle foreign document opened event.\n     */\n    onForeignDocumentOpened(_host, context) {\n        /** no-op */\n    }\n    /**\n     * Handle foreign document closed event.\n     */\n    onForeignDocumentClosed(_host, context) {\n        const { foreignDocument } = context;\n        this.unregisterDocument(foreignDocument.uri, false);\n        this.disconnectDocumentSignals(foreignDocument);\n    }\n    /**\n     * Register a widget adapter with this manager\n     *\n     * @param  path - path to the inner document of the adapter\n     * @param  adapter - the adapter to be registered\n     */\n    registerAdapter(path, adapter) {\n        this.adapters.set(path, adapter);\n        adapter.disposed.connect(() => {\n            if (adapter.virtualDocument) {\n                this.documents.delete(adapter.virtualDocument.uri);\n            }\n            this.adapters.delete(path);\n        });\n    }\n    /**\n     * Handles the settings that do not require an existing connection\n     * with a language server (or can influence to which server the\n     * connection will be created, e.g. `rank`).\n     *\n     * This function should be called **before** initialization of servers.\n     */\n    updateConfiguration(allServerSettings) {\n        this.languageServerManager.setConfiguration(allServerSettings);\n    }\n    /**\n     * Handles the settings that the language servers accept using\n     * `onDidChangeConfiguration` messages, which should be passed under\n     * the \"serverSettings\" keyword in the setting registry.\n     * Other configuration options are handled by `updateConfiguration` instead.\n     *\n     * This function should be called **after** initialization of servers.\n     */\n    updateServerConfigurations(allServerSettings) {\n        let languageServerId;\n        for (languageServerId in allServerSettings) {\n            if (!allServerSettings.hasOwnProperty(languageServerId)) {\n                continue;\n            }\n            const rawSettings = allServerSettings[languageServerId];\n            const parsedSettings = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.expandDottedPaths)(rawSettings.configuration || {});\n            const serverSettings = {\n                settings: parsedSettings\n            };\n            Private.updateServerConfiguration(languageServerId, serverSettings);\n        }\n    }\n    /**\n     * Retry to connect to the server each `reconnectDelay` seconds\n     * and for `retrialsLeft` times.\n     * TODO: presently no longer referenced. A failing connection would close\n     * the socket, triggering the language server on the other end to exit.\n     */\n    async retryToConnect(options, reconnectDelay, retrialsLeft = -1) {\n        let { virtualDocument } = options;\n        if (this._ignoredLanguages.has(virtualDocument.language)) {\n            return;\n        }\n        let interval = reconnectDelay * 1000;\n        let success = false;\n        while (retrialsLeft !== 0 && !success) {\n            await this.connect(options)\n                .then(() => {\n                success = true;\n            })\n                .catch(e => {\n                console.warn(e);\n            });\n            console.log('will attempt to re-connect in ' + interval / 1000 + ' seconds');\n            await (0,_utils__WEBPACK_IMPORTED_MODULE_2__.sleep)(interval);\n            // gradually increase the time delay, up to 5 sec\n            interval = interval < 5 * 1000 ? interval + 500 : interval;\n        }\n    }\n    /**\n     * Disconnect the connection to the language server of the requested\n     * language.\n     */\n    disconnect(languageId) {\n        Private.disconnect(languageId);\n    }\n    /**\n     * Create a new connection to the language server\n     * @return A promise of the LSP connection\n     */\n    async connect(options, firstTimeoutSeconds = 30, secondTimeoutMinutes = 5) {\n        let connection = await this._connectSocket(options);\n        let { virtualDocument } = options;\n        if (!connection) {\n            return;\n        }\n        if (!connection.isReady) {\n            try {\n                // user feedback hinted that 40 seconds was too short and some users are willing to wait more;\n                // to make the best of both worlds we first check frequently (6.6 times a second) for the first\n                // 30 seconds, and show the warning early in case if something is wrong; we then continue retrying\n                // for another 5 minutes, but only once per second.\n                await (0,_utils__WEBPACK_IMPORTED_MODULE_2__.untilReady)(() => connection.isReady, Math.round((firstTimeoutSeconds * 1000) / 150), 150);\n            }\n            catch (_a) {\n                console.log(`Connection to ${virtualDocument.uri} timed out after ${firstTimeoutSeconds} seconds, will continue retrying for another ${secondTimeoutMinutes} minutes`);\n                try {\n                    await (0,_utils__WEBPACK_IMPORTED_MODULE_2__.untilReady)(() => connection.isReady, 60 * secondTimeoutMinutes, 1000);\n                }\n                catch (_b) {\n                    console.log(`Connection to ${virtualDocument.uri} timed out again after ${secondTimeoutMinutes} minutes, giving up`);\n                    return;\n                }\n            }\n        }\n        this._connected.emit({ connection, virtualDocument });\n        return connection;\n    }\n    /**\n     * Disconnect the signals of requested virtual document URI.\n     */\n    unregisterDocument(uri, emit = true) {\n        const connection = this.connections.get(uri);\n        if (connection) {\n            this.connections.delete(uri);\n            const allConnection = new Set(this.connections.values());\n            if (!allConnection.has(connection)) {\n                this.disconnect(connection.serverIdentifier);\n                connection.dispose();\n            }\n            if (emit) {\n                this._documentsChanged.emit(this.documents);\n            }\n        }\n    }\n    /**\n     * Enable or disable the logging of language server communication.\n     */\n    updateLogging(logAllCommunication, setTrace) {\n        for (const connection of this.connections.values()) {\n            connection.logAllCommunication = logAllCommunication;\n            if (setTrace !== null) {\n                connection.clientNotifications['$/setTrace'].emit({ value: setTrace });\n            }\n        }\n    }\n    /**\n     * Create the LSP connection for requested virtual document.\n     *\n     * @return  Return the promise of the LSP connection.\n     */\n    async _connectSocket(options) {\n        let { language, capabilities, virtualDocument } = options;\n        this.connectDocumentSignals(virtualDocument);\n        const uris = DocumentConnectionManager.solveUris(virtualDocument, language);\n        const matchingServers = this.languageServerManager.getMatchingServers({\n            language\n        });\n        // for now use only the server with the highest rank.\n        const languageServerId = matchingServers.length === 0 ? null : matchingServers[0];\n        // lazily load 1) the underlying library (1.5mb) and/or 2) a live WebSocket-\n        // like connection: either already connected or potentially in the process\n        // of connecting.\n        if (!uris) {\n            return;\n        }\n        const connection = await Private.connection(language, languageServerId, uris, this.onNewConnection, capabilities);\n        // if connecting for the first time, all documents subsequent documents will\n        // be re-opened and synced\n        this.connections.set(virtualDocument.uri, connection);\n        return connection;\n    }\n    /**\n     * Helper to apply callback on all documents of a connection.\n     */\n    _forEachDocumentOfConnection(connection, callback) {\n        for (const [virtualDocumentUri, currentConnection] of this.connections.entries()) {\n            if (connection !== currentConnection) {\n                continue;\n            }\n            callback(this.documents.get(virtualDocumentUri));\n        }\n    }\n}\n(function (DocumentConnectionManager) {\n    /**\n     * Generate the URI of a virtual document from input\n     *\n     * @param  virtualDocument - the virtual document\n     * @param  language - language of the document\n     */\n    function solveUris(virtualDocument, language) {\n        var _a;\n        const serverManager = Private.getLanguageServerManager();\n        const wsBase = serverManager.settings.wsUrl;\n        const rootUri = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PageConfig.getOption('rootUri');\n        const virtualDocumentsUri = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PageConfig.getOption('virtualDocumentsUri');\n        // for now take the best match only\n        const serverOptions = {\n            language\n        };\n        const matchingServers = serverManager.getMatchingServers(serverOptions);\n        const languageServerId = matchingServers.length === 0 ? null : matchingServers[0];\n        if (languageServerId === null) {\n            return;\n        }\n        const specs = serverManager.getMatchingSpecs(serverOptions);\n        const spec = specs.get(languageServerId);\n        if (!spec) {\n            console.warn(`Specification not available for server ${languageServerId}`);\n        }\n        const requiresOnDiskFiles = (_a = spec === null || spec === void 0 ? void 0 : spec.requires_documents_on_disk) !== null && _a !== void 0 ? _a : true;\n        const supportsInMemoryFiles = !requiresOnDiskFiles;\n        const baseUri = virtualDocument.hasLspSupportedFile || supportsInMemoryFiles\n            ? rootUri\n            : virtualDocumentsUri;\n        // workaround url-parse bug(s) (see https://github.com/jupyter-lsp/jupyterlab-lsp/issues/595)\n        let documentUri = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.join(baseUri, virtualDocument.uri);\n        if (!documentUri.startsWith('file:///') &&\n            documentUri.startsWith('file://')) {\n            documentUri = documentUri.replace('file://', 'file:///');\n            if (documentUri.startsWith('file:///users/') &&\n                baseUri.startsWith('file:///Users/')) {\n                documentUri = documentUri.replace('file:///users/', 'file:///Users/');\n            }\n        }\n        return {\n            base: baseUri,\n            document: documentUri,\n            server: _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.join('ws://jupyter-lsp', language),\n            socket: _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.join(wsBase, 'lsp', 'ws', languageServerId)\n        };\n    }\n    DocumentConnectionManager.solveUris = solveUris;\n})(DocumentConnectionManager || (DocumentConnectionManager = {}));\n/**\n * Namespace primarily for language-keyed cache of LSPConnections\n */\nvar Private;\n(function (Private) {\n    const _connections = new Map();\n    let _languageServerManager;\n    function getLanguageServerManager() {\n        return _languageServerManager;\n    }\n    Private.getLanguageServerManager = getLanguageServerManager;\n    function setLanguageServerManager(languageServerManager) {\n        _languageServerManager = languageServerManager;\n    }\n    Private.setLanguageServerManager = setLanguageServerManager;\n    function disconnect(languageServerId) {\n        const connection = _connections.get(languageServerId);\n        if (connection) {\n            connection.close();\n            _connections.delete(languageServerId);\n        }\n    }\n    Private.disconnect = disconnect;\n    /**\n     * Return (or create and initialize) the WebSocket associated with the language\n     */\n    async function connection(language, languageServerId, uris, onCreate, capabilities) {\n        let connection = _connections.get(languageServerId);\n        if (!connection) {\n            const { settings } = Private.getLanguageServerManager();\n            const socket = new settings.WebSocket(uris.socket);\n            const connection = new _connection__WEBPACK_IMPORTED_MODULE_3__.LSPConnection({\n                languageId: language,\n                serverUri: uris.server,\n                rootUri: uris.base,\n                serverIdentifier: languageServerId,\n                capabilities: capabilities\n            });\n            _connections.set(languageServerId, connection);\n            connection.connect(socket);\n            onCreate(connection);\n        }\n        connection = _connections.get(languageServerId);\n        return connection;\n    }\n    Private.connection = connection;\n    function updateServerConfiguration(languageServerId, settings) {\n        const connection = _connections.get(languageServerId);\n        if (connection) {\n            connection.sendConfigurationChange(settings);\n        }\n    }\n    Private.updateServerConfiguration = updateServerConfiguration;\n})(Private || (Private = {}));\n//# sourceMappingURL=connection_manager.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/connection_manager.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/extractors/index.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/extractors/index.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CodeExtractorsManager\": () => (/* reexport safe */ _manager__WEBPACK_IMPORTED_MODULE_0__.CodeExtractorsManager),\n/* harmony export */   \"TextForeignCodeExtractor\": () => (/* reexport safe */ _text_extractor__WEBPACK_IMPORTED_MODULE_1__.TextForeignCodeExtractor)\n/* harmony export */ });\n/* harmony import */ var _manager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./manager */ \"../node_modules/@jupyterlab/lsp/lib/extractors/manager.js\");\n/* harmony import */ var _text_extractor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./text_extractor */ \"../node_modules/@jupyterlab/lsp/lib/extractors/text_extractor.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/extractors/index.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/extractors/manager.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/extractors/manager.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CodeExtractorsManager\": () => (/* binding */ CodeExtractorsManager)\n/* harmony export */ });\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * Manager for the code extractors\n */\nclass CodeExtractorsManager {\n    constructor() {\n        this._extractorMap = new Map();\n        this._extractorMapAnyLanguage = new Map();\n    }\n    /**\n     * Get the extractors for the input cell type and the main language of\n     * the document\n     *\n     * @param  cellType - type of cell\n     * @param  hostLanguage - main language of the document\n     */\n    getExtractors(cellType, hostLanguage) {\n        var _a, _b;\n        if (hostLanguage) {\n            const currentMap = this._extractorMap.get(cellType);\n            if (!currentMap) {\n                return [];\n            }\n            return (_a = currentMap.get(hostLanguage)) !== null && _a !== void 0 ? _a : [];\n        }\n        else {\n            return (_b = this._extractorMapAnyLanguage.get(cellType)) !== null && _b !== void 0 ? _b : [];\n        }\n    }\n    /**\n     * Register an extractor to extract foreign code from host documents of specified language.\n     */\n    register(extractor, hostLanguage) {\n        const cellType = extractor.cellType;\n        if (hostLanguage) {\n            cellType.forEach(type => {\n                if (!this._extractorMap.has(type)) {\n                    this._extractorMap.set(type, new Map());\n                }\n                const currentMap = this._extractorMap.get(type);\n                const extractorList = currentMap.get(hostLanguage);\n                if (!extractorList) {\n                    currentMap.set(hostLanguage, [extractor]);\n                }\n                else {\n                    extractorList.push(extractor);\n                }\n            });\n        }\n        else {\n            cellType.forEach(type => {\n                if (!this._extractorMapAnyLanguage.has(type)) {\n                    this._extractorMapAnyLanguage.set(type, []);\n                }\n                this._extractorMapAnyLanguage.get(type).push(extractor);\n            });\n        }\n    }\n}\n//# sourceMappingURL=manager.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/extractors/manager.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/extractors/text_extractor.js":
/*!************************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/extractors/text_extractor.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"TextForeignCodeExtractor\": () => (/* binding */ TextForeignCodeExtractor)\n/* harmony export */ });\n/* harmony import */ var _positioning__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../positioning */ \"../node_modules/@jupyterlab/lsp/lib/positioning.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * The code extractor for the raw and markdown text.\n */\nclass TextForeignCodeExtractor {\n    constructor(options) {\n        this.language = options.language;\n        this.standalone = options.isStandalone;\n        this.fileExtension = options.file_extension;\n        this.cellType = options.cellType;\n    }\n    /**\n     * Test if there is any foreign code in provided code snippet.\n     */\n    hasForeignCode(code, cellType) {\n        return this.cellType.includes(cellType);\n    }\n    /**\n     * Split the code into the host and foreign code (if any foreign code was detected)\n     */\n    extractForeignCode(code) {\n        let lines = code.split('\\n');\n        let extracts = new Array();\n        let foreignCodeFragment = code;\n        let start = (0,_positioning__WEBPACK_IMPORTED_MODULE_0__.positionAtOffset)(0, lines);\n        let end = (0,_positioning__WEBPACK_IMPORTED_MODULE_0__.positionAtOffset)(foreignCodeFragment.length, lines);\n        extracts.push({\n            hostCode: '',\n            foreignCode: foreignCodeFragment,\n            range: { start, end },\n            virtualShift: null\n        });\n        return extracts;\n    }\n}\n//# sourceMappingURL=text_extractor.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/extractors/text_extractor.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/feature.js":
/*!******************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/feature.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FeatureManager\": () => (/* binding */ FeatureManager)\n/* harmony export */ });\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_mergewith__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash.mergewith */ \"../node_modules/lodash.mergewith/index.js\");\n/* harmony import */ var lodash_mergewith__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_mergewith__WEBPACK_IMPORTED_MODULE_1__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n/**\n * Class to manager the registered features of the language servers.\n */\nclass FeatureManager {\n    constructor() {\n        /**\n         * List of registered features\n         */\n        this.features = [];\n        this._featuresRegistered = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n    }\n    /**\n     * Signal emitted when a new feature is registered.\n     */\n    get featuresRegistered() {\n        return this._featuresRegistered;\n    }\n    /**\n     * Register a new feature, skip if it is already registered.\n     */\n    register(feature) {\n        if (this.features.some(ft => ft.id === feature.id)) {\n            console.warn(`Feature with id ${feature.id} is already registered, skipping.`);\n        }\n        else {\n            this.features.push(feature);\n            this._featuresRegistered.emit(feature);\n        }\n    }\n    /**\n     * Get the capabilities of all clients.\n     */\n    clientCapabilities() {\n        let capabilities = {};\n        for (const feature of this.features) {\n            if (!feature.capabilities) {\n                continue;\n            }\n            capabilities = lodash_mergewith__WEBPACK_IMPORTED_MODULE_1___default()(capabilities, feature.capabilities);\n        }\n        return capabilities;\n    }\n}\n//# sourceMappingURL=feature.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/feature.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/index.js":
/*!****************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/index.js ***!
  \****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"CodeExtractorsManager\": () => (/* reexport safe */ _extractors__WEBPACK_IMPORTED_MODULE_2__.CodeExtractorsManager),\n/* harmony export */   \"DefaultMap\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_7__.DefaultMap),\n/* harmony export */   \"DocumentConnectionManager\": () => (/* reexport safe */ _connection_manager__WEBPACK_IMPORTED_MODULE_1__.DocumentConnectionManager),\n/* harmony export */   \"FeatureManager\": () => (/* reexport safe */ _feature__WEBPACK_IMPORTED_MODULE_3__.FeatureManager),\n/* harmony export */   \"ILSPCodeExtractorsManager\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_6__.ILSPCodeExtractorsManager),\n/* harmony export */   \"ILSPDocumentConnectionManager\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_6__.ILSPDocumentConnectionManager),\n/* harmony export */   \"ILSPFeatureManager\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_6__.ILSPFeatureManager),\n/* harmony export */   \"ILanguageServerManager\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_6__.ILanguageServerManager),\n/* harmony export */   \"LanguageServerManager\": () => (/* reexport safe */ _manager__WEBPACK_IMPORTED_MODULE_4__.LanguageServerManager),\n/* harmony export */   \"Method\": () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_6__.Method),\n/* harmony export */   \"ProtocolCoordinates\": () => (/* reexport safe */ _positioning__WEBPACK_IMPORTED_MODULE_5__.ProtocolCoordinates),\n/* harmony export */   \"TextForeignCodeExtractor\": () => (/* reexport safe */ _extractors__WEBPACK_IMPORTED_MODULE_2__.TextForeignCodeExtractor),\n/* harmony export */   \"UpdateManager\": () => (/* reexport safe */ _virtual_document__WEBPACK_IMPORTED_MODULE_8__.UpdateManager),\n/* harmony export */   \"VirtualDocument\": () => (/* reexport safe */ _virtual_document__WEBPACK_IMPORTED_MODULE_8__.VirtualDocument),\n/* harmony export */   \"VirtualDocumentInfo\": () => (/* reexport safe */ _virtual_document__WEBPACK_IMPORTED_MODULE_8__.VirtualDocumentInfo),\n/* harmony export */   \"WidgetLSPAdapter\": () => (/* reexport safe */ _adapters_adapter__WEBPACK_IMPORTED_MODULE_0__.WidgetLSPAdapter),\n/* harmony export */   \"collectDocuments\": () => (/* reexport safe */ _virtual_document__WEBPACK_IMPORTED_MODULE_8__.collectDocuments),\n/* harmony export */   \"expandDottedPaths\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_7__.expandDottedPaths),\n/* harmony export */   \"expandPath\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_7__.expandPath),\n/* harmony export */   \"isEqual\": () => (/* reexport safe */ _positioning__WEBPACK_IMPORTED_MODULE_5__.isEqual),\n/* harmony export */   \"isWithinRange\": () => (/* reexport safe */ _virtual_document__WEBPACK_IMPORTED_MODULE_8__.isWithinRange),\n/* harmony export */   \"offsetAtPosition\": () => (/* reexport safe */ _positioning__WEBPACK_IMPORTED_MODULE_5__.offsetAtPosition),\n/* harmony export */   \"positionAtOffset\": () => (/* reexport safe */ _positioning__WEBPACK_IMPORTED_MODULE_5__.positionAtOffset),\n/* harmony export */   \"sleep\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_7__.sleep),\n/* harmony export */   \"untilReady\": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_7__.untilReady)\n/* harmony export */ });\n/* harmony import */ var _adapters_adapter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./adapters/adapter */ \"../node_modules/@jupyterlab/lsp/lib/adapters/adapter.js\");\n/* harmony import */ var _connection_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./connection_manager */ \"../node_modules/@jupyterlab/lsp/lib/connection_manager.js\");\n/* harmony import */ var _extractors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./extractors */ \"../node_modules/@jupyterlab/lsp/lib/extractors/index.js\");\n/* harmony import */ var _feature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./feature */ \"../node_modules/@jupyterlab/lsp/lib/feature.js\");\n/* harmony import */ var _manager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./manager */ \"../node_modules/@jupyterlab/lsp/lib/manager.js\");\n/* harmony import */ var _positioning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./positioning */ \"../node_modules/@jupyterlab/lsp/lib/positioning.js\");\n/* harmony import */ var _tokens__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tokens */ \"../node_modules/@jupyterlab/lsp/lib/tokens.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils */ \"../node_modules/@jupyterlab/lsp/lib/utils.js\");\n/* harmony import */ var _virtual_document__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./virtual/document */ \"../node_modules/@jupyterlab/lsp/lib/virtual/document.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDocumentation\n * @module lsp\n */\n\n\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/index.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/manager.js":
/*!******************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/manager.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LanguageServerManager\": () => (/* binding */ LanguageServerManager)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/services */ \"webpack/sharing/consume/default/@jupyterlab/services/@jupyterlab/services\");\n/* harmony import */ var _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _tokens__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tokens */ \"../node_modules/@jupyterlab/lsp/lib/tokens.js\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n\n\nclass LanguageServerManager {\n    constructor(options) {\n        /**\n         * map of language server sessions.\n         */\n        this._sessions = new Map();\n        /**\n         * Map of language server specs.\n         */\n        this._specs = new Map();\n        /**\n         * Set of emitted warning message, message in this set will not be warned again.\n         */\n        this._warningsEmitted = new Set();\n        /**\n         * A promise resolved when this server manager is ready.\n         */\n        this._ready = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_3__.PromiseDelegate();\n        /**\n         * Signal emitted when a  language server session is changed\n         */\n        this._sessionsChanged = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__.Signal(this);\n        this._isDisposed = false;\n        /**\n         * Check if the manager is enabled or disabled\n         */\n        this._enabled = true;\n        this._settings = options.settings || _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.makeSettings();\n        this._baseUrl = options.baseUrl || _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.PageConfig.getBaseUrl();\n        this._retries = options.retries || 2;\n        this._retriesInterval = options.retriesInterval || 10000;\n        this._statusCode = -1;\n        this._configuration = {};\n        this.fetchSessions().catch(e => console.log(e));\n    }\n    /**\n     * Check if the manager is enabled or disabled\n     */\n    get isEnabled() {\n        return this._enabled;\n    }\n    /**\n     * Check if the manager is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Get server connection settings.\n     */\n    get settings() {\n        return this._settings;\n    }\n    /**\n     * Get the language server specs.\n     */\n    get specs() {\n        return this._specs;\n    }\n    /**\n     * Get the status end point.\n     */\n    get statusUrl() {\n        return _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.join(this._baseUrl, _tokens__WEBPACK_IMPORTED_MODULE_4__.ILanguageServerManager.URL_NS, 'status');\n    }\n    /**\n     * Signal emitted when a  language server session is changed\n     */\n    get sessionsChanged() {\n        return this._sessionsChanged;\n    }\n    /**\n     * Get the map of language server sessions.\n     */\n    get sessions() {\n        return this._sessions;\n    }\n    /**\n     * A promise resolved when this server manager is ready.\n     */\n    get ready() {\n        return this._ready.promise;\n    }\n    /**\n     * Get the status code of server's responses.\n     */\n    get statusCode() {\n        return this._statusCode;\n    }\n    /**\n     * Enable the language server services\n     */\n    async enable() {\n        this._enabled = true;\n        await this.fetchSessions();\n    }\n    /**\n     * Disable the language server services\n     */\n    disable() {\n        this._enabled = false;\n        this._sessions = new Map();\n        this._sessionsChanged.emit(void 0);\n    }\n    /**\n     * Dispose the manager.\n     */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__.Signal.clearData(this);\n    }\n    /**\n     * Update the language server configuration.\n     */\n    setConfiguration(configuration) {\n        this._configuration = configuration;\n    }\n    /**\n     * Get matching language server for input language option.\n     */\n    getMatchingServers(options) {\n        if (!options.language) {\n            console.error('Cannot match server by language: language not available; ensure that kernel and specs provide language and MIME type');\n            return [];\n        }\n        const matchingSessionsKeys = [];\n        for (const [key, session] of this._sessions.entries()) {\n            if (this.isMatchingSpec(options, session.spec)) {\n                matchingSessionsKeys.push(key);\n            }\n        }\n        return matchingSessionsKeys.sort(this.compareRanks.bind(this));\n    }\n    /**\n     * Get matching language server spec for input language option.\n     */\n    getMatchingSpecs(options) {\n        const result = new Map();\n        for (const [key, specification] of this._specs.entries()) {\n            if (this.isMatchingSpec(options, specification)) {\n                result.set(key, specification);\n            }\n        }\n        return result;\n    }\n    /**\n     * Fetch the server session list from the status endpoint. The server\n     * manager is ready once this method finishes.\n     */\n    async fetchSessions() {\n        if (!this._enabled) {\n            return;\n        }\n        let response = await _jupyterlab_services__WEBPACK_IMPORTED_MODULE_1__.ServerConnection.makeRequest(this.statusUrl, { method: 'GET' }, this._settings);\n        this._statusCode = response.status;\n        if (!response.ok) {\n            if (this._retries > 0) {\n                this._retries -= 1;\n                setTimeout(this.fetchSessions.bind(this), this._retriesInterval);\n            }\n            else {\n                this._ready.resolve(undefined);\n                console.log('Missing jupyter_lsp server extension, skipping.');\n            }\n            return;\n        }\n        let sessions;\n        try {\n            const data = await response.json();\n            sessions = data.sessions;\n            try {\n                this.version = data.version;\n                this._specs = new Map(Object.entries(data.specs));\n            }\n            catch (err) {\n                console.warn(err);\n            }\n        }\n        catch (err) {\n            console.warn(err);\n            this._ready.resolve(undefined);\n            return;\n        }\n        for (let key of Object.keys(sessions)) {\n            let id = key;\n            if (this._sessions.has(id)) {\n                Object.assign(this._sessions.get(id) || {}, sessions[key]);\n            }\n            else {\n                this._sessions.set(id, sessions[key]);\n            }\n        }\n        const oldKeys = this._sessions.keys();\n        for (const oldKey in oldKeys) {\n            if (!sessions[oldKey]) {\n                let oldId = oldKey;\n                this._sessions.delete(oldId);\n            }\n        }\n        this._sessionsChanged.emit(void 0);\n        this._ready.resolve(undefined);\n    }\n    /**\n     * Check if input language option maths the language server spec.\n     */\n    isMatchingSpec(options, spec) {\n        // most things speak language\n        // if language is not known, it is guessed based on MIME type earlier\n        // so some language should be available by now (which can be not so obvious, e.g. \"plain\" for txt documents)\n        const lowerCaseLanguage = options.language.toLocaleLowerCase();\n        return spec.languages.some((language) => language.toLocaleLowerCase() == lowerCaseLanguage);\n    }\n    /**\n     * Helper function to warn a message only once.\n     */\n    warnOnce(arg) {\n        if (!this._warningsEmitted.has(arg)) {\n            this._warningsEmitted.add(arg);\n            console.warn(arg);\n        }\n    }\n    /**\n     * Compare the rank of two servers with the same language.\n     */\n    compareRanks(a, b) {\n        var _a, _b, _c, _d;\n        const DEFAULT_RANK = 50;\n        const aRank = (_b = (_a = this._configuration[a]) === null || _a === void 0 ? void 0 : _a.rank) !== null && _b !== void 0 ? _b : DEFAULT_RANK;\n        const bRank = (_d = (_c = this._configuration[b]) === null || _c === void 0 ? void 0 : _c.rank) !== null && _d !== void 0 ? _d : DEFAULT_RANK;\n        if (aRank == bRank) {\n            this.warnOnce(`Two matching servers: ${a} and ${b} have the same rank; choose which one to use by changing the rank in Advanced Settings Editor`);\n            return a.localeCompare(b);\n        }\n        // higher rank = higher in the list (descending order)\n        return bRank - aRank;\n    }\n}\n//# sourceMappingURL=manager.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/manager.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/positioning.js":
/*!**********************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/positioning.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ProtocolCoordinates\": () => (/* binding */ ProtocolCoordinates),\n/* harmony export */   \"isEqual\": () => (/* binding */ isEqual),\n/* harmony export */   \"offsetAtPosition\": () => (/* binding */ offsetAtPosition),\n/* harmony export */   \"positionAtOffset\": () => (/* binding */ positionAtOffset)\n/* harmony export */ });\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * Compare two `IPosition` variable.\n *\n */\nfunction isEqual(self, other) {\n    return other && self.line === other.line && self.ch === other.ch;\n}\n/**\n * Given a list of line and an offset from the start, compute the corresponding\n * position in form of line and column number\n *\n * @param offset - number of spaces counted from the start of first line\n * @param  lines - list of lines to compute the position\n * @return  - the position of cursor\n */\nfunction positionAtOffset(offset, lines) {\n    let line = 0;\n    let column = 0;\n    for (let textLine of lines) {\n        // each line has a new line symbol which is accounted for in offset!\n        if (textLine.length + 1 <= offset) {\n            offset -= textLine.length + 1;\n            line += 1;\n        }\n        else {\n            column = offset;\n            break;\n        }\n    }\n    return { line, column };\n}\n/**\n * Given a list of line and position in form of line and column number,\n * compute the offset from the start of first line.\n * @param position - postion of cursor\n * @param  lines - list of lines to compute the position\n * @param linesIncludeBreaks - should count the line break as space?\n * return - offset number\n */\nfunction offsetAtPosition(position, lines, linesIncludeBreaks = false) {\n    let breakIncrement = linesIncludeBreaks ? 0 : 1;\n    let offset = 0;\n    for (let i = 0; i < lines.length; i++) {\n        let textLine = lines[i];\n        if (position.line > i) {\n            offset += textLine.length + breakIncrement;\n        }\n        else {\n            offset += position.column;\n            break;\n        }\n    }\n    return offset;\n}\nvar ProtocolCoordinates;\n(function (ProtocolCoordinates) {\n    /**\n     * Check if the position is in the input range\n     *\n     * @param position - position in form of line and character number.\n     * @param  range - range in from of start and end position.\n     */\n    function isWithinRange(position, range) {\n        const { line, character } = position;\n        return (line >= range.start.line &&\n            line <= range.end.line &&\n            // need to be non-overlapping see https://github.com/jupyter-lsp/jupyterlab-lsp/issues/628\n            (line != range.start.line || character > range.start.character) &&\n            (line != range.end.line || character <= range.end.character));\n    }\n    ProtocolCoordinates.isWithinRange = isWithinRange;\n})(ProtocolCoordinates || (ProtocolCoordinates = {}));\n//# sourceMappingURL=positioning.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/positioning.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/tokens.js":
/*!*****************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/tokens.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ILSPCodeExtractorsManager\": () => (/* binding */ ILSPCodeExtractorsManager),\n/* harmony export */   \"ILSPDocumentConnectionManager\": () => (/* binding */ ILSPDocumentConnectionManager),\n/* harmony export */   \"ILSPFeatureManager\": () => (/* binding */ ILSPFeatureManager),\n/* harmony export */   \"ILanguageServerManager\": () => (/* binding */ ILanguageServerManager),\n/* harmony export */   \"Method\": () => (/* binding */ Method)\n/* harmony export */ });\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nvar ILanguageServerManager;\n(function (ILanguageServerManager) {\n    /**\n     * LSP endpoint prefix.\n     */\n    ILanguageServerManager.URL_NS = 'lsp';\n})(ILanguageServerManager || (ILanguageServerManager = {}));\n/**\n * @alpha\n *\n * The virtual documents and language server connections manager\n * Require this token in your extension to access the associated virtual\n * document and LS connection of opened documents.\n *\n */\nconst ILSPDocumentConnectionManager = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/lsp:ILSPDocumentConnectionManager', 'Provides the virtual documents and language server connections service.');\n/**\n * @alpha\n *\n * The language server feature manager. Require this token in your extension\n * to register the client capabilities implemented by your extension.\n *\n */\nconst ILSPFeatureManager = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/lsp:ILSPFeatureManager', 'Provides the language server feature manager. This token is required to register new client capabilities.');\n/**\n * @alpha\n *\n * The code extractor manager. Require this token in your extension to\n * register new code extractors. Code extractor allows creating multiple\n * virtual documents from an opened document.\n *\n */\nconst ILSPCodeExtractorsManager = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/lsp:ILSPCodeExtractorsManager', 'Provides the code extractor manager. This token is required in your extension to register code extractor allowing the creation of multiple virtual document from an opened document.');\n/**\n * Method strings are reproduced here because a non-typing import of\n * `vscode-languageserver-protocol` is ridiculously expensive.\n */\nvar Method;\n(function (Method) {\n    /** Server notifications */\n    let ServerNotification;\n    (function (ServerNotification) {\n        ServerNotification[\"PUBLISH_DIAGNOSTICS\"] = \"textDocument/publishDiagnostics\";\n        ServerNotification[\"SHOW_MESSAGE\"] = \"window/showMessage\";\n        ServerNotification[\"LOG_TRACE\"] = \"$/logTrace\";\n        ServerNotification[\"LOG_MESSAGE\"] = \"window/logMessage\";\n    })(ServerNotification = Method.ServerNotification || (Method.ServerNotification = {}));\n    /** Client notifications */\n    let ClientNotification;\n    (function (ClientNotification) {\n        ClientNotification[\"DID_CHANGE\"] = \"textDocument/didChange\";\n        ClientNotification[\"DID_CHANGE_CONFIGURATION\"] = \"workspace/didChangeConfiguration\";\n        ClientNotification[\"DID_OPEN\"] = \"textDocument/didOpen\";\n        ClientNotification[\"DID_SAVE\"] = \"textDocument/didSave\";\n        ClientNotification[\"INITIALIZED\"] = \"initialized\";\n        ClientNotification[\"SET_TRACE\"] = \"$/setTrace\";\n    })(ClientNotification = Method.ClientNotification || (Method.ClientNotification = {}));\n    /** Server requests */\n    let ServerRequest;\n    (function (ServerRequest) {\n        ServerRequest[\"REGISTER_CAPABILITY\"] = \"client/registerCapability\";\n        ServerRequest[\"SHOW_MESSAGE_REQUEST\"] = \"window/showMessageRequest\";\n        ServerRequest[\"UNREGISTER_CAPABILITY\"] = \"client/unregisterCapability\";\n        ServerRequest[\"WORKSPACE_CONFIGURATION\"] = \"workspace/configuration\";\n    })(ServerRequest = Method.ServerRequest || (Method.ServerRequest = {}));\n    /** Client requests */\n    let ClientRequest;\n    (function (ClientRequest) {\n        ClientRequest[\"COMPLETION\"] = \"textDocument/completion\";\n        ClientRequest[\"COMPLETION_ITEM_RESOLVE\"] = \"completionItem/resolve\";\n        ClientRequest[\"DEFINITION\"] = \"textDocument/definition\";\n        ClientRequest[\"DOCUMENT_HIGHLIGHT\"] = \"textDocument/documentHighlight\";\n        ClientRequest[\"DOCUMENT_SYMBOL\"] = \"textDocument/documentSymbol\";\n        ClientRequest[\"HOVER\"] = \"textDocument/hover\";\n        ClientRequest[\"IMPLEMENTATION\"] = \"textDocument/implementation\";\n        ClientRequest[\"INITIALIZE\"] = \"initialize\";\n        ClientRequest[\"REFERENCES\"] = \"textDocument/references\";\n        ClientRequest[\"RENAME\"] = \"textDocument/rename\";\n        ClientRequest[\"SIGNATURE_HELP\"] = \"textDocument/signatureHelp\";\n        ClientRequest[\"TYPE_DEFINITION\"] = \"textDocument/typeDefinition\";\n    })(ClientRequest = Method.ClientRequest || (Method.ClientRequest = {}));\n})(Method || (Method = {}));\n//# sourceMappingURL=tokens.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/tokens.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/utils.js":
/*!****************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/utils.js ***!
  \****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DefaultMap\": () => (/* binding */ DefaultMap),\n/* harmony export */   \"expandDottedPaths\": () => (/* binding */ expandDottedPaths),\n/* harmony export */   \"expandPath\": () => (/* binding */ expandPath),\n/* harmony export */   \"sleep\": () => (/* binding */ sleep),\n/* harmony export */   \"untilReady\": () => (/* binding */ untilReady)\n/* harmony export */ });\n/* harmony import */ var lodash_mergewith__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash.mergewith */ \"../node_modules/lodash.mergewith/index.js\");\n/* harmony import */ var lodash_mergewith__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_mergewith__WEBPACK_IMPORTED_MODULE_0__);\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/**\n * Helper to wait for timeout.\n *\n * @param  timeout - time out in ms\n */\nasync function sleep(timeout) {\n    return new Promise(resolve => {\n        setTimeout(() => {\n            resolve();\n        }, timeout);\n    });\n}\n/**\n * Wait for an event by pooling the `isReady` function.\n */\nfunction untilReady(isReady, maxRetrials = 35, interval = 50, intervalModifier = (i) => i) {\n    return (async () => {\n        let i = 0;\n        while (isReady() !== true) {\n            i += 1;\n            if (maxRetrials !== -1 && i > maxRetrials) {\n                throw Error('Too many retrials');\n            }\n            interval = intervalModifier(interval);\n            await sleep(interval);\n        }\n        return isReady;\n    })();\n}\n/**\n * Convert dotted path into dictionary.\n */\nfunction expandDottedPaths(obj) {\n    const settings = [];\n    for (let key in obj) {\n        const parsed = expandPath(key.split('.'), obj[key]);\n        settings.push(parsed);\n    }\n    return lodash_mergewith__WEBPACK_IMPORTED_MODULE_0___default()({}, ...settings);\n}\n/**\n * The docs for many language servers show settings in the\n * VSCode format, e.g.: \"pyls.plugins.pyflakes.enabled\"\n *\n * VSCode converts that dot notation to JSON behind the scenes,\n * as the language servers themselves don't accept that syntax.\n */\nconst expandPath = (path, value) => {\n    const obj = Object.create(null);\n    let curr = obj;\n    path.forEach((prop, i) => {\n        curr[prop] = Object.create(null);\n        if (i === path.length - 1) {\n            curr[prop] = value;\n        }\n        else {\n            curr = curr[prop];\n        }\n    });\n    return obj;\n};\n/**\n * An extended map which will create value for key on the fly.\n */\nclass DefaultMap extends Map {\n    constructor(defaultFactory, entries) {\n        super(entries);\n        this.defaultFactory = defaultFactory;\n    }\n    get(k) {\n        return this.getOrCreate(k);\n    }\n    getOrCreate(k, ...args) {\n        if (this.has(k)) {\n            return super.get(k);\n        }\n        else {\n            let v = this.defaultFactory(k, ...args);\n            this.set(k, v);\n            return v;\n        }\n    }\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/utils.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/virtual/document.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/virtual/document.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"UpdateManager\": () => (/* binding */ UpdateManager),\n/* harmony export */   \"VirtualDocument\": () => (/* binding */ VirtualDocument),\n/* harmony export */   \"VirtualDocumentInfo\": () => (/* binding */ VirtualDocumentInfo),\n/* harmony export */   \"collectDocuments\": () => (/* binding */ collectDocuments),\n/* harmony export */   \"isWithinRange\": () => (/* binding */ isWithinRange)\n/* harmony export */ });\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _connection_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../connection_manager */ \"../node_modules/@jupyterlab/lsp/lib/connection_manager.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ \"../node_modules/@jupyterlab/lsp/lib/utils.js\");\n// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n\n\n/**\n * Check if given position is within range.\n * Both start and end are inclusive.\n * @param position\n * @param range\n */\nfunction isWithinRange(position, range) {\n    if (range.start.line === range.end.line) {\n        return (position.line === range.start.line &&\n            position.column >= range.start.column &&\n            position.column <= range.end.column);\n    }\n    return ((position.line === range.start.line &&\n        position.column >= range.start.column &&\n        position.line < range.end.line) ||\n        (position.line > range.start.line &&\n            position.column <= range.end.column &&\n            position.line === range.end.line) ||\n        (position.line > range.start.line && position.line < range.end.line));\n}\n/**\n * A virtual implementation of IDocumentInfo\n */\nclass VirtualDocumentInfo {\n    /**\n     * Creates an instance of VirtualDocumentInfo.\n     * @param document - the virtual document need to\n     * be wrapped.\n     */\n    constructor(document) {\n        /**\n         * Current version of the virtual document.\n         */\n        this.version = 0;\n        this._document = document;\n    }\n    /**\n     * Get the text content of the virtual document.\n     */\n    get text() {\n        return this._document.value;\n    }\n    /**\n     * Get the uri of the virtual document, if the document is not available,\n     * it returns an empty string, users need to check for the length of returned\n     * value before using it.\n     */\n    get uri() {\n        const uris = _connection_manager__WEBPACK_IMPORTED_MODULE_1__.DocumentConnectionManager.solveUris(this._document, this.languageId);\n        if (!uris) {\n            return '';\n        }\n        return uris.document;\n    }\n    /**\n     * Get the language identifier of the document.\n     */\n    get languageId() {\n        return this._document.language;\n    }\n}\n/**\n *\n * A notebook can hold one or more virtual documents; there is always one,\n * \"root\" document, corresponding to the language of the kernel. All other\n * virtual documents are extracted out of the notebook, based on magics,\n * or other syntax constructs, depending on the kernel language.\n *\n * Virtual documents represent the underlying code in a single language,\n * which has been parsed excluding interactive kernel commands (magics)\n * which could be misunderstood by the specific LSP server.\n *\n * VirtualDocument has no awareness of the notebook or editor it lives in,\n * however it is able to transform its content back to the notebook space,\n * as it keeps editor coordinates for each virtual line.\n *\n * The notebook/editor aware transformations are preferred to be placed in\n * VirtualEditor descendants rather than here.\n *\n * No dependency on editor implementation (such as CodeMirrorEditor)\n * is allowed for VirtualEditor.\n */\nclass VirtualDocument {\n    constructor(options) {\n        /**\n         * Number of blank lines appended to the virtual document between\n         * each cell.\n         */\n        this.blankLinesBetweenCells = 2;\n        this._isDisposed = false;\n        this._foreignDocumentClosed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._foreignDocumentOpened = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._changed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this.options = options;\n        this.path = this.options.path;\n        this.fileExtension = options.fileExtension;\n        this.hasLspSupportedFile = options.hasLspSupportedFile;\n        this.parent = options.parent;\n        this.language = options.language;\n        this.virtualLines = new Map();\n        this.sourceLines = new Map();\n        this.foreignDocuments = new Map();\n        this._editorToSourceLine = new Map();\n        this._foreignCodeExtractors = options.foreignCodeExtractors;\n        this.standalone = options.standalone || false;\n        this.instanceId = VirtualDocument.instancesCount;\n        VirtualDocument.instancesCount += 1;\n        this.unusedStandaloneDocuments = new _utils__WEBPACK_IMPORTED_MODULE_2__.DefaultMap(() => new Array());\n        this._remainingLifetime = 6;\n        this.unusedDocuments = new Set();\n        this.documentInfo = new VirtualDocumentInfo(this);\n        this.updateManager = new UpdateManager(this);\n        this.updateManager.updateBegan.connect(this._updateBeganSlot, this);\n        this.updateManager.blockAdded.connect(this._blockAddedSlot, this);\n        this.updateManager.updateFinished.connect(this._updateFinishedSlot, this);\n        this.clear();\n    }\n    /**\n     * Convert from code editor position into code mirror position.\n     */\n    static ceToCm(position) {\n        return { line: position.line, ch: position.column };\n    }\n    /**\n     * Test whether the document is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Signal emitted when the foreign document is closed\n     */\n    get foreignDocumentClosed() {\n        return this._foreignDocumentClosed;\n    }\n    /**\n     * Signal emitted when the foreign document is opened\n     */\n    get foreignDocumentOpened() {\n        return this._foreignDocumentOpened;\n    }\n    /**\n     * Signal emitted when the foreign document is changed\n     */\n    get changed() {\n        return this._changed;\n    }\n    /**\n     * Id of the virtual document.\n     */\n    get virtualId() {\n        // for easier debugging, the language information is included in the ID:\n        return this.standalone\n            ? this.instanceId + '(' + this.language + ')'\n            : this.language;\n    }\n    /**\n     * Return the ancestry to this document.\n     */\n    get ancestry() {\n        if (!this.parent) {\n            return [this];\n        }\n        return this.parent.ancestry.concat([this]);\n    }\n    /**\n     * Return the id path to the virtual document.\n     */\n    get idPath() {\n        if (!this.parent) {\n            return this.virtualId;\n        }\n        return this.parent.idPath + '-' + this.virtualId;\n    }\n    /**\n     * Get the uri of the virtual document.\n     */\n    get uri() {\n        const encodedPath = encodeURI(this.path);\n        if (!this.parent) {\n            return encodedPath;\n        }\n        return encodedPath + '.' + this.idPath + '.' + this.fileExtension;\n    }\n    /**\n     * Get the text value of the document\n     */\n    get value() {\n        let linesPadding = '\\n'.repeat(this.blankLinesBetweenCells);\n        return this.lineBlocks.join(linesPadding);\n    }\n    /**\n     * Get the last line in the virtual document\n     */\n    get lastLine() {\n        const linesInLastBlock = this.lineBlocks[this.lineBlocks.length - 1].split('\\n');\n        return linesInLastBlock[linesInLastBlock.length - 1];\n    }\n    /**\n     * Get the root document of current virtual document.\n     */\n    get root() {\n        return this.parent ? this.parent.root : this;\n    }\n    /**\n     * Dispose the virtual document.\n     */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        this.parent = null;\n        this.closeAllForeignDocuments();\n        this.updateManager.dispose();\n        // clear all the maps\n        this.foreignDocuments.clear();\n        this.sourceLines.clear();\n        this.unusedDocuments.clear();\n        this.unusedStandaloneDocuments.clear();\n        this.virtualLines.clear();\n        // just to be sure - if anything is accessed after disposal (it should not) we\n        // will get altered by errors in the console AND this will limit memory leaks\n        this.documentInfo = null;\n        this.lineBlocks = null;\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal.clearData(this);\n    }\n    /**\n     * Clear the virtual document and all related stuffs\n     */\n    clear() {\n        for (let document of this.foreignDocuments.values()) {\n            document.clear();\n        }\n        // TODO - deep clear (assure that there is no memory leak)\n        this.unusedStandaloneDocuments.clear();\n        this.unusedDocuments = new Set();\n        this.virtualLines.clear();\n        this.sourceLines.clear();\n        this.lastVirtualLine = 0;\n        this.lastSourceLine = 0;\n        this.lineBlocks = [];\n    }\n    /**\n     * Get the virtual document from the cursor position of the source\n     * document\n     * @param position - position in source document\n     */\n    documentAtSourcePosition(position) {\n        let sourceLine = this.sourceLines.get(position.line);\n        if (!sourceLine) {\n            return this;\n        }\n        let sourcePositionCe = {\n            line: sourceLine.editorLine,\n            column: position.ch\n        };\n        for (let [range, { virtualDocument: document }] of sourceLine.foreignDocumentsMap) {\n            if (isWithinRange(sourcePositionCe, range)) {\n                let sourcePositionCm = {\n                    line: sourcePositionCe.line - range.start.line,\n                    ch: sourcePositionCe.column - range.start.column\n                };\n                return document.documentAtSourcePosition(sourcePositionCm);\n            }\n        }\n        return this;\n    }\n    /**\n     * Detect if the input source position is belong to the current\n     * virtual document.\n     *\n     * @param sourcePosition - position in the source document\n     */\n    isWithinForeign(sourcePosition) {\n        let sourceLine = this.sourceLines.get(sourcePosition.line);\n        let sourcePositionCe = {\n            line: sourceLine.editorLine,\n            column: sourcePosition.ch\n        };\n        for (let [range] of sourceLine.foreignDocumentsMap) {\n            if (isWithinRange(sourcePositionCe, range)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    /**\n     * Compute the position in root document from the position of\n     * a child editor.\n     *\n     * @param editor - the active editor.\n     * @param position - position in the active editor.\n     */\n    transformFromEditorToRoot(editor, position) {\n        if (!this._editorToSourceLine.has(editor)) {\n            console.log('Editor not found in _editorToSourceLine map');\n            return null;\n        }\n        let shift = this._editorToSourceLine.get(editor);\n        return {\n            ...position,\n            line: position.line + shift\n        };\n    }\n    /**\n     * Compute the position in the virtual document from the position\n     * if the source document.\n     *\n     * @param sourcePosition - position in source document\n     */\n    virtualPositionAtDocument(sourcePosition) {\n        let sourceLine = this.sourceLines.get(sourcePosition.line);\n        if (sourceLine == null) {\n            throw new Error('Source line not mapped to virtual position');\n        }\n        let virtualLine = sourceLine.virtualLine;\n        // position inside the cell (block)\n        let sourcePositionCe = {\n            line: sourceLine.editorLine,\n            column: sourcePosition.ch\n        };\n        for (let [range, content] of sourceLine.foreignDocumentsMap) {\n            const { virtualLine, virtualDocument: document } = content;\n            if (isWithinRange(sourcePositionCe, range)) {\n                // position inside the foreign document block\n                let sourcePositionCm = {\n                    line: sourcePositionCe.line - range.start.line,\n                    ch: sourcePositionCe.column - range.start.column\n                };\n                if (document.isWithinForeign(sourcePositionCm)) {\n                    return this.virtualPositionAtDocument(sourcePositionCm);\n                }\n                else {\n                    // where in this block in the entire foreign document?\n                    sourcePositionCm.line += virtualLine;\n                    return sourcePositionCm;\n                }\n            }\n        }\n        return {\n            ch: sourcePosition.ch,\n            line: virtualLine\n        };\n    }\n    /**\n     * Append a code block to the end of the virtual document.\n     *\n     * @param  block - block to be appended\n     * @param  editorShift - position shift in source\n     * document\n     * @param  [virtualShift] - position shift in\n     * virtual document.\n     */\n    appendCodeBlock(block, editorShift = { line: 0, column: 0 }, virtualShift) {\n        let cellCode = block.value;\n        let ceEditor = block.ceEditor;\n        if (this.isDisposed) {\n            console.warn('Cannot append code block: document disposed');\n            return;\n        }\n        let sourceCellLines = cellCode.split('\\n');\n        let { lines, foreignDocumentsMap } = this.prepareCodeBlock(block, editorShift);\n        for (let i = 0; i < lines.length; i++) {\n            this.virtualLines.set(this.lastVirtualLine + i, {\n                skipInspect: [],\n                editor: ceEditor,\n                // TODO this is incorrect, wont work if something was extracted\n                sourceLine: this.lastSourceLine + i\n            });\n        }\n        for (let i = 0; i < sourceCellLines.length; i++) {\n            this.sourceLines.set(this.lastSourceLine + i, {\n                editorLine: i,\n                editorShift: {\n                    line: editorShift.line - ((virtualShift === null || virtualShift === void 0 ? void 0 : virtualShift.line) || 0),\n                    column: i === 0 ? editorShift.column - ((virtualShift === null || virtualShift === void 0 ? void 0 : virtualShift.column) || 0) : 0\n                },\n                // TODO: move those to a new abstraction layer (DocumentBlock class)\n                editor: ceEditor,\n                foreignDocumentsMap,\n                // TODO this is incorrect, wont work if something was extracted\n                virtualLine: this.lastVirtualLine + i\n            });\n        }\n        this.lastVirtualLine += lines.length;\n        // one empty line is necessary to separate code blocks, next 'n' lines are to silence linters;\n        // the final cell does not get the additional lines (thanks to the use of join, see below)\n        this.lineBlocks.push(lines.join('\\n') + '\\n');\n        // adding the virtual lines for the blank lines\n        for (let i = 0; i < this.blankLinesBetweenCells; i++) {\n            this.virtualLines.set(this.lastVirtualLine + i, {\n                skipInspect: [this.idPath],\n                editor: ceEditor,\n                sourceLine: null\n            });\n        }\n        this.lastVirtualLine += this.blankLinesBetweenCells;\n        this.lastSourceLine += sourceCellLines.length;\n    }\n    /**\n     * Extract a code block into list of string in supported language and\n     * a map of foreign document if any.\n     * @param  block - block to be appended\n     * @param  editorShift - position shift in source document\n     */\n    prepareCodeBlock(block, editorShift = { line: 0, column: 0 }) {\n        let { cellCodeKept, foreignDocumentsMap } = this.extractForeignCode(block, editorShift);\n        let lines = cellCodeKept.split('\\n');\n        return { lines, foreignDocumentsMap };\n    }\n    /**\n     * Extract the foreign code from input block by using the registered\n     * extractors.\n     * @param  block - block to be appended\n     * @param  editorShift - position shift in source document\n     */\n    extractForeignCode(block, editorShift) {\n        let foreignDocumentsMap = new Map();\n        let cellCode = block.value;\n        const extractorsForAnyLang = this._foreignCodeExtractors.getExtractors(block.type, null);\n        const extractorsForCurrentLang = this._foreignCodeExtractors.getExtractors(block.type, this.language);\n        for (let extractor of [\n            ...extractorsForAnyLang,\n            ...extractorsForCurrentLang\n        ]) {\n            if (!extractor.hasForeignCode(cellCode, block.type)) {\n                continue;\n            }\n            let results = extractor.extractForeignCode(cellCode);\n            let keptCellCode = '';\n            for (let result of results) {\n                if (result.foreignCode !== null) {\n                    // result.range should only be null if result.foregin_code is null\n                    if (result.range === null) {\n                        console.log('Failure in foreign code extraction: `range` is null but `foreign_code` is not!');\n                        continue;\n                    }\n                    let foreignDocument = this.chooseForeignDocument(extractor);\n                    foreignDocumentsMap.set(result.range, {\n                        virtualLine: foreignDocument.lastVirtualLine,\n                        virtualDocument: foreignDocument,\n                        editor: block.ceEditor\n                    });\n                    let foreignShift = {\n                        line: editorShift.line + result.range.start.line,\n                        column: editorShift.column + result.range.start.column\n                    };\n                    foreignDocument.appendCodeBlock({\n                        value: result.foreignCode,\n                        ceEditor: block.ceEditor,\n                        type: 'code'\n                    }, foreignShift, result.virtualShift);\n                }\n                if (result.hostCode != null) {\n                    keptCellCode += result.hostCode;\n                }\n            }\n            // not breaking - many extractors are allowed to process the code, one after each other\n            // (think JS and CSS in HTML, or %R inside of %%timeit).\n            cellCode = keptCellCode;\n        }\n        return { cellCodeKept: cellCode, foreignDocumentsMap };\n    }\n    /**\n     * Close a foreign document and disconnect all associated signals\n     */\n    closeForeign(document) {\n        this._foreignDocumentClosed.emit({\n            foreignDocument: document,\n            parentHost: this\n        });\n        // remove it from foreign documents list\n        this.foreignDocuments.delete(document.virtualId);\n        // and delete the documents within it\n        document.closeAllForeignDocuments();\n        document.foreignDocumentClosed.disconnect(this.forwardClosedSignal, this);\n        document.foreignDocumentOpened.disconnect(this.forwardOpenedSignal, this);\n        document.dispose();\n    }\n    /**\n     * Close all foreign documents.\n     */\n    closeAllForeignDocuments() {\n        for (let document of this.foreignDocuments.values()) {\n            this.closeForeign(document);\n        }\n    }\n    /**\n     * Close all expired documents.\n     */\n    closeExpiredDocuments() {\n        for (let document of this.unusedDocuments.values()) {\n            document.remainingLifetime -= 1;\n            if (document.remainingLifetime <= 0) {\n                document.dispose();\n            }\n        }\n    }\n    /**\n     * Transform the position of the source to the editor\n     * position.\n     *\n     * @param  pos - position in the source document\n     * @return position in the editor.\n     */\n    transformSourceToEditor(pos) {\n        let sourceLine = this.sourceLines.get(pos.line);\n        let editorLine = sourceLine.editorLine;\n        let editorShift = sourceLine.editorShift;\n        return {\n            // only shift column in the line beginning the virtual document (first list of the editor in cell magics, but might be any line of editor in line magics!)\n            ch: pos.ch + (editorLine === 0 ? editorShift.column : 0),\n            line: editorLine + editorShift.line\n            // TODO or:\n            //  line: pos.line + editor_shift.line - this.first_line_of_the_block(editor)\n        };\n    }\n    /**\n     * Transform the position in the virtual document to the\n     * editor position.\n     * Can be null because some lines are added as padding/anchors\n     * to the virtual document and those do not exist in the source document\n     * and thus they are absent in the editor.\n     */\n    transformVirtualToEditor(virtualPosition) {\n        let sourcePosition = this.transformVirtualToSource(virtualPosition);\n        if (sourcePosition == null) {\n            return null;\n        }\n        return this.transformSourceToEditor(sourcePosition);\n    }\n    /**\n     * Transform the position in the virtual document to the source.\n     * Can be null because some lines are added as padding/anchors\n     * to the virtual document and those do not exist in the source document.\n     */\n    transformVirtualToSource(position) {\n        const line = this.virtualLines.get(position.line).sourceLine;\n        if (line == null) {\n            return null;\n        }\n        return {\n            ch: position.ch,\n            line: line\n        };\n    }\n    /**\n     * Get the corresponding editor of the virtual line.\n     */\n    getEditorAtVirtualLine(pos) {\n        let line = pos.line;\n        // tolerate overshot by one (the hanging blank line at the end)\n        if (!this.virtualLines.has(line)) {\n            line -= 1;\n        }\n        return this.virtualLines.get(line).editor;\n    }\n    /**\n     * Get the corresponding editor of the source line\n     */\n    getEditorAtSourceLine(pos) {\n        return this.sourceLines.get(pos.line).editor;\n    }\n    /**\n     * Recursively emits changed signal from the document or any descendant foreign document.\n     */\n    maybeEmitChanged() {\n        if (this.value !== this.previousValue) {\n            this._changed.emit(this);\n        }\n        this.previousValue = this.value;\n        for (let document of this.foreignDocuments.values()) {\n            document.maybeEmitChanged();\n        }\n    }\n    /**\n     * When this counter goes down to 0, the document will be destroyed and the associated connection will be closed;\n     * This is meant to reduce the number of open connections when a a foreign code snippet was removed from the document.\n     *\n     * Note: top level virtual documents are currently immortal (unless killed by other means); it might be worth\n     * implementing culling of unused documents, but if and only if JupyterLab will also implement culling of\n     * idle kernels - otherwise the user experience could be a bit inconsistent, and we would need to invent our own rules.\n     */\n    get remainingLifetime() {\n        if (!this.parent) {\n            return Infinity;\n        }\n        return this._remainingLifetime;\n    }\n    set remainingLifetime(value) {\n        if (this.parent) {\n            this._remainingLifetime = value;\n        }\n    }\n    /**\n     * Get the foreign document that can be opened with the input extractor.\n     */\n    chooseForeignDocument(extractor) {\n        let foreignDocument;\n        // if not standalone, try to append to existing document\n        let foreignExists = this.foreignDocuments.has(extractor.language);\n        if (!extractor.standalone && foreignExists) {\n            foreignDocument = this.foreignDocuments.get(extractor.language);\n        }\n        else {\n            // if (previous document does not exists) or (extractor produces standalone documents\n            // and no old standalone document could be reused): create a new document\n            foreignDocument = this.openForeign(extractor.language, extractor.standalone, extractor.fileExtension);\n        }\n        return foreignDocument;\n    }\n    /**\n     * Create a foreign document from input language and file extension.\n     *\n     * @param  language - the required language\n     * @param  standalone - the document type is supported natively by LSP?\n     * @param  fileExtension - File extension.\n     */\n    openForeign(language, standalone, fileExtension) {\n        let document = new VirtualDocument({\n            ...this.options,\n            parent: this,\n            standalone: standalone,\n            fileExtension: fileExtension,\n            language: language\n        });\n        const context = {\n            foreignDocument: document,\n            parentHost: this\n        };\n        this._foreignDocumentOpened.emit(context);\n        // pass through any future signals\n        document.foreignDocumentClosed.connect(this.forwardClosedSignal, this);\n        document.foreignDocumentOpened.connect(this.forwardOpenedSignal, this);\n        this.foreignDocuments.set(document.virtualId, document);\n        return document;\n    }\n    /**\n     * Forward the closed signal from the foreign document to the host document's\n     * signal\n     */\n    forwardClosedSignal(host, context) {\n        this._foreignDocumentClosed.emit(context);\n    }\n    /**\n     * Forward the opened signal from the foreign document to the host document's\n     * signal\n     */\n    forwardOpenedSignal(host, context) {\n        this._foreignDocumentOpened.emit(context);\n    }\n    /**\n     * Slot of the `updateBegan` signal.\n     */\n    _updateBeganSlot() {\n        this._editorToSourceLineNew = new Map();\n    }\n    /**\n     * Slot of the `blockAdded` signal.\n     */\n    _blockAddedSlot(updateManager, blockData) {\n        this._editorToSourceLineNew.set(blockData.block.ceEditor, blockData.virtualDocument.lastSourceLine);\n    }\n    /**\n     * Slot of the `updateFinished` signal.\n     */\n    _updateFinishedSlot() {\n        this._editorToSourceLine = this._editorToSourceLineNew;\n    }\n}\nVirtualDocument.instancesCount = 0;\n\n/**\n * Create foreign documents if available from input virtual documents.\n * @param virtualDocument - the virtual document to be collected\n * @return - Set of generated foreign documents\n */\nfunction collectDocuments(virtualDocument) {\n    let collected = new Set();\n    collected.add(virtualDocument);\n    for (let foreign of virtualDocument.foreignDocuments.values()) {\n        let foreignLanguages = collectDocuments(foreign);\n        foreignLanguages.forEach(collected.add, collected);\n    }\n    return collected;\n}\nclass UpdateManager {\n    constructor(virtualDocument) {\n        this.virtualDocument = virtualDocument;\n        this._isDisposed = false;\n        /**\n         * Promise resolved when the updating process finishes.\n         */\n        this._updateDone = new Promise(resolve => {\n            resolve();\n        });\n        /**\n         * Virtual documents update guard.\n         */\n        this._isUpdateInProgress = false;\n        /**\n         * Update lock to prevent multiple updates are applied at the same time.\n         */\n        this._updateLock = false;\n        this._blockAdded = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._documentUpdated = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._updateBegan = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this._updateFinished = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal(this);\n        this.documentUpdated.connect(this._onUpdated, this);\n    }\n    /**\n     * Promise resolved when the updating process finishes.\n     */\n    get updateDone() {\n        return this._updateDone;\n    }\n    /**\n     * Test whether the document is disposed.\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Signal emitted when a code block is added to the document.\n     */\n    get blockAdded() {\n        return this._blockAdded;\n    }\n    /**\n     * Signal emitted by the editor that triggered the update,\n     * providing the root document of the updated documents.\n     */\n    get documentUpdated() {\n        return this._documentUpdated;\n    }\n    /**\n     * Signal emitted when the update is started\n     */\n    get updateBegan() {\n        return this._updateBegan;\n    }\n    /**\n     * Signal emitted when the update is finished\n     */\n    get updateFinished() {\n        return this._updateFinished;\n    }\n    /**\n     * Dispose the class\n     */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        this.documentUpdated.disconnect(this._onUpdated);\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_0__.Signal.clearData(this);\n    }\n    /**\n     * Execute provided callback within an update-locked context, which guarantees that:\n     *  - the previous updates must have finished before the callback call, and\n     *  - no update will happen when executing the callback\n     * @param fn - the callback to execute in update lock\n     */\n    async withUpdateLock(fn) {\n        await (0,_utils__WEBPACK_IMPORTED_MODULE_2__.untilReady)(() => this._canUpdate(), 12, 10).then(() => {\n            try {\n                this._updateLock = true;\n                fn();\n            }\n            finally {\n                this._updateLock = false;\n            }\n        });\n    }\n    /**\n     * Update all the virtual documents, emit documents updated with root document if succeeded,\n     * and resolve a void promise. The promise does not contain the text value of the root document,\n     * as to avoid an easy trap of ignoring the changes in the virtual documents.\n     */\n    async updateDocuments(blocks) {\n        let update = new Promise((resolve, reject) => {\n            // defer the update by up to 50 ms (10 retrials * 5 ms break),\n            // awaiting for the previous update to complete.\n            (0,_utils__WEBPACK_IMPORTED_MODULE_2__.untilReady)(() => this._canUpdate(), 10, 5)\n                .then(() => {\n                if (this.isDisposed || !this.virtualDocument) {\n                    resolve();\n                }\n                try {\n                    this._isUpdateInProgress = true;\n                    this._updateBegan.emit(blocks);\n                    this.virtualDocument.clear();\n                    for (let codeBlock of blocks) {\n                        this._blockAdded.emit({\n                            block: codeBlock,\n                            virtualDocument: this.virtualDocument\n                        });\n                        this.virtualDocument.appendCodeBlock(codeBlock);\n                    }\n                    this._updateFinished.emit(blocks);\n                    if (this.virtualDocument) {\n                        this._documentUpdated.emit(this.virtualDocument);\n                        this.virtualDocument.maybeEmitChanged();\n                    }\n                    resolve();\n                }\n                catch (e) {\n                    console.warn('Documents update failed:', e);\n                    reject(e);\n                }\n                finally {\n                    this._isUpdateInProgress = false;\n                }\n            })\n                .catch(console.error);\n        });\n        this._updateDone = update;\n        return update;\n    }\n    /**\n     * Once all the foreign documents were refreshed, the unused documents (and their connections)\n     * should be terminated if their lifetime has expired.\n     */\n    _onUpdated(manager, rootDocument) {\n        try {\n            rootDocument.closeExpiredDocuments();\n        }\n        catch (e) {\n            console.warn('Failed to close expired documents');\n        }\n    }\n    /**\n     * Check if the document can be updated.\n     */\n    _canUpdate() {\n        return !this.isDisposed && !this._isUpdateInProgress && !this._updateLock;\n    }\n}\n//# sourceMappingURL=document.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/virtual/document.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/ws-connection/server-capability-registration.js":
/*!*******************************************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/ws-connection/server-capability-registration.js ***!
  \*******************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"registerServerCapability\": () => (/* binding */ registerServerCapability),\n/* harmony export */   \"unregisterServerCapability\": () => (/* binding */ unregisterServerCapability)\n/* harmony export */ });\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n/**\n * Register the capabilities with the server capabilities provider\n *\n * @param serverCapabilities - server capabilities provider.\n * @param registration -  capabilities to be registered.\n * @return - the new server capabilities provider\n */\nfunction registerServerCapability(serverCapabilities, registration) {\n    const serverCapabilitiesCopy = JSON.parse(JSON.stringify(serverCapabilities));\n    const { method, registerOptions } = registration;\n    const providerName = method.substring(13) + 'Provider';\n    if (providerName) {\n        if (!registerOptions) {\n            serverCapabilitiesCopy[providerName] = true;\n        }\n        else {\n            serverCapabilitiesCopy[providerName] = JSON.parse(JSON.stringify(registerOptions));\n        }\n    }\n    else {\n        console.warn('Could not register server capability.', registration);\n        return null;\n    }\n    return serverCapabilitiesCopy;\n}\n/**\n * Unregister the capabilities with the server capabilities provider\n *\n * @param serverCapabilities - server capabilities provider.\n * @param registration -  capabilities to be unregistered.\n * @return - the new server capabilities provider\n */\nfunction unregisterServerCapability(serverCapabilities, unregistration) {\n    const serverCapabilitiesCopy = JSON.parse(JSON.stringify(serverCapabilities));\n    const { method } = unregistration;\n    const providerName = method.substring(13) + 'Provider';\n    delete serverCapabilitiesCopy[providerName];\n    return serverCapabilitiesCopy;\n}\n\n//# sourceMappingURL=server-capability-registration.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/ws-connection/server-capability-registration.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/lsp/lib/ws-connection/ws-connection.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@jupyterlab/lsp/lib/ws-connection/ws-connection.js ***!
  \**************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"LspWsConnection\": () => (/* binding */ LspWsConnection)\n/* harmony export */ });\n/* harmony import */ var vscode_ws_jsonrpc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vscode-ws-jsonrpc */ \"../node_modules/vscode-ws-jsonrpc/lib/index.js\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/signaling */ \"webpack/sharing/consume/default/@lumino/signaling/@lumino/signaling\");\n/* harmony import */ var _lumino_signaling__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_signaling__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _server_capability_registration__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./server-capability-registration */ \"../node_modules/@jupyterlab/lsp/lib/ws-connection/server-capability-registration.js\");\n/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n// Disclaimer/acknowledgement: Fragments are based on https://github.com/wylieconlon/lsp-editor-adapter,\n// which is copyright of wylieconlon and contributors and ISC licenced.\n// ISC licence is, quote, \"functionally equivalent to the simplified BSD and MIT licenses,\n// but without language deemed unnecessary following the Berne Convention.\" (Wikipedia).\n// Introduced modifications are BSD licenced, copyright JupyterLab development team.\n\n\n\nclass LspWsConnection {\n    constructor(options) {\n        /**\n         * Map to track opened virtual documents..\n         */\n        this.openedUris = new Map();\n        /**\n         * The connection is connected?\n         */\n        this._isConnected = false;\n        /**\n         * The connection is initialized?\n         */\n        this._isInitialized = false;\n        /**\n         * Array of LSP callback disposables, it is used to\n         * clear the callbacks when the connection is disposed.\n         */\n        this._disposables = [];\n        this._disposed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal(this);\n        this._isDisposed = false;\n        this._rootUri = options.rootUri;\n    }\n    /**\n     * Is the language server is connected?\n     */\n    get isConnected() {\n        return this._isConnected;\n    }\n    /**\n     * Is the language server is initialized?\n     */\n    get isInitialized() {\n        return this._isInitialized;\n    }\n    /**\n     * Is the language server is connected and initialized?\n     */\n    get isReady() {\n        return this._isConnected && this._isInitialized;\n    }\n    /**\n     * A signal emitted when the connection is disposed.\n     */\n    get disposed() {\n        return this._disposed;\n    }\n    /**\n     * Check if the connection is disposed\n     */\n    get isDisposed() {\n        return this._isDisposed;\n    }\n    /**\n     * Initialize a connection over a web socket that speaks the LSP protocol\n     */\n    connect(socket) {\n        this.socket = socket;\n        (0,vscode_ws_jsonrpc__WEBPACK_IMPORTED_MODULE_0__.listen)({\n            webSocket: this.socket,\n            logger: new vscode_ws_jsonrpc__WEBPACK_IMPORTED_MODULE_0__.ConsoleLogger(),\n            onConnection: (connection) => {\n                connection.listen();\n                this._isConnected = true;\n                this.connection = connection;\n                this.sendInitialize();\n                const registerCapabilityDisposable = this.connection.onRequest('client/registerCapability', (params) => {\n                    params.registrations.forEach((capabilityRegistration) => {\n                        try {\n                            this.serverCapabilities = (0,_server_capability_registration__WEBPACK_IMPORTED_MODULE_2__.registerServerCapability)(this.serverCapabilities, capabilityRegistration);\n                        }\n                        catch (err) {\n                            console.error(err);\n                        }\n                    });\n                });\n                this._disposables.push(registerCapabilityDisposable);\n                const unregisterCapabilityDisposable = this.connection.onRequest('client/unregisterCapability', (params) => {\n                    params.unregisterations.forEach((capabilityUnregistration) => {\n                        this.serverCapabilities = (0,_server_capability_registration__WEBPACK_IMPORTED_MODULE_2__.unregisterServerCapability)(this.serverCapabilities, capabilityUnregistration);\n                    });\n                });\n                this._disposables.push(unregisterCapabilityDisposable);\n                const disposable = this.connection.onClose(() => {\n                    this._isConnected = false;\n                });\n                this._disposables.push(disposable);\n            }\n        });\n    }\n    /**\n     * Close the connection\n     */\n    close() {\n        if (this.connection) {\n            this.connection.dispose();\n        }\n        this.openedUris.clear();\n        this.socket.close();\n    }\n    /**\n     * The initialize request telling the server which options the client supports\n     */\n    sendInitialize() {\n        if (!this._isConnected) {\n            return;\n        }\n        this.openedUris.clear();\n        const message = this.initializeParams();\n        this.connection\n            .sendRequest('initialize', message)\n            .then(params => {\n            this.onServerInitialized(params);\n        }, e => {\n            console.warn('LSP websocket connection initialization failure', e);\n        });\n    }\n    /**\n     * Inform the server that the document was opened\n     */\n    sendOpen(documentInfo) {\n        const textDocumentMessage = {\n            textDocument: {\n                uri: documentInfo.uri,\n                languageId: documentInfo.languageId,\n                text: documentInfo.text,\n                version: documentInfo.version\n            }\n        };\n        this.connection\n            .sendNotification('textDocument/didOpen', textDocumentMessage)\n            .catch(console.error);\n        this.openedUris.set(documentInfo.uri, true);\n        this.sendChange(documentInfo);\n    }\n    /**\n     * Sends the full text of the document to the server\n     */\n    sendChange(documentInfo) {\n        if (!this.isReady) {\n            return;\n        }\n        if (!this.openedUris.get(documentInfo.uri)) {\n            this.sendOpen(documentInfo);\n            return;\n        }\n        const textDocumentChange = {\n            textDocument: {\n                uri: documentInfo.uri,\n                version: documentInfo.version\n            },\n            contentChanges: [{ text: documentInfo.text }]\n        };\n        this.connection\n            .sendNotification('textDocument/didChange', textDocumentChange)\n            .catch(console.error);\n        documentInfo.version++;\n    }\n    /**\n     * Send save notification to the server.\n     */\n    sendSaved(documentInfo) {\n        if (!this.isReady) {\n            return;\n        }\n        const textDocumentChange = {\n            textDocument: {\n                uri: documentInfo.uri,\n                version: documentInfo.version\n            },\n            text: documentInfo.text\n        };\n        this.connection\n            .sendNotification('textDocument/didSave', textDocumentChange)\n            .catch(console.error);\n    }\n    /**\n     * Send configuration change to the server.\n     */\n    sendConfigurationChange(settings) {\n        if (!this.isReady) {\n            return;\n        }\n        this.connection\n            .sendNotification('workspace/didChangeConfiguration', settings)\n            .catch(console.error);\n    }\n    /**\n     * Dispose the connection.\n     */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        this._isDisposed = true;\n        this._disposables.forEach(disposable => {\n            disposable.dispose();\n        });\n        this._disposed.emit();\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_1__.Signal.clearData(this);\n    }\n    /**\n     * Callback called when the server is initialized.\n     */\n    onServerInitialized(params) {\n        this._isInitialized = true;\n        this.serverCapabilities = params.capabilities;\n        this.connection.sendNotification('initialized', {}).catch(console.error);\n        this.connection\n            .sendNotification('workspace/didChangeConfiguration', {\n            settings: {}\n        })\n            .catch(console.error);\n    }\n    /**\n     * Initialization parameters to be sent to the language server.\n     * Subclasses should override this when adding more features.\n     */\n    initializeParams() {\n        return {\n            capabilities: {},\n            processId: null,\n            rootUri: this._rootUri,\n            workspaceFolders: null\n        };\n    }\n}\n//# sourceMappingURL=ws-connection.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/lsp/lib/ws-connection/ws-connection.js?");

/***/ }),

/***/ "../node_modules/lodash.mergewith/index.js":
/*!*************************************************!*\
  !*** ../node_modules/lodash.mergewith/index.js ***!
  \*************************************************/
/***/ ((module, exports, __webpack_require__) => {

eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n    HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    asyncTag = '[object AsyncFunction]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    nullTag = '[object Null]',\n    objectTag = '[object Object]',\n    proxyTag = '[object Proxy]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    undefinedTag = '[object Undefined]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports =  true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    // Use `util.types` for Node.js 10+.\n    var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n    if (types) {\n      return types;\n    }\n\n    // Legacy `process.binding('util')` for Node.js < 10.\n    return freeProcess && freeProcess.binding && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n    Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    objectCreate = Object.create,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n  try {\n    var func = getNative(Object, 'defineProperty');\n    func({}, '', {});\n    return func;\n  } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n    nativeMax = Math.max,\n    nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n  function object() {}\n  return function(proto) {\n    if (!isObject(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object;\n    object.prototype = undefined;\n    return result;\n  };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  --this.size;\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries == null ? 0 : entries.length;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)['delete'](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key),\n      size = data.size;\n\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n  this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  var data = this.__data__,\n      result = data['delete'](key);\n\n  this.size = data.size;\n  return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray(value),\n      isArg = !isArr && isArguments(value),\n      isBuff = !isArr && !isArg && isBuffer(value),\n      isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n      skipIndexes = isArr || isArg || isBuff || isType,\n      result = skipIndexes ? baseTimes(value.length, String) : [],\n      length = result.length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (\n           // Safari 9 has enumerable `arguments.length` in strict mode.\n           key == 'length' ||\n           // Node.js 0.10 has enumerable non-index properties on buffers.\n           (isBuff && (key == 'offset' || key == 'parent')) ||\n           // PhantomJS 2 has enumerable non-index properties on typed arrays.\n           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n           // Skip index properties.\n           isIndex(key, length)\n        ))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n  if ((value !== undefined && !eq(object[key], value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    baseAssignValue(object, key, value);\n  }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n  if (key == '__proto__' && defineProperty) {\n    defineProperty(object, key, {\n      'configurable': true,\n      'enumerable': true,\n      'value': value,\n      'writable': true\n    });\n  } else {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n  return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack);\n    if (isObject(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    }\n    else {\n      var newValue = customizer\n        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      if (newValue === undefined) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n *  counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key),\n      srcValue = safeGet(source, key),\n      stacked = stack.get(srcValue);\n\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer\n    ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n    : undefined;\n\n  var isCommon = newValue === undefined;\n\n  if (isCommon) {\n    var isArr = isArray(srcValue),\n        isBuff = !isArr && isBuffer(srcValue),\n        isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray(objValue)) {\n        newValue = objValue;\n      }\n      else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray(objValue);\n      }\n      else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      }\n      else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      }\n      else {\n        newValue = [];\n      }\n    }\n    else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      }\n      else if (!isObject(objValue) || isFunction(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    }\n    else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    // Recursively merge objects and arrays (susceptible to call stack limits).\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack['delete'](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n  return defineProperty(func, 'toString', {\n    'configurable': true,\n    'enumerable': false,\n    'value': constant(string),\n    'writable': true\n  });\n};\n\n/**\n * Creates a clone of  `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length,\n      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n  buffer.copy(result);\n  return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n  return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n  var index = -1,\n      length = source.length;\n\n  array || (array = Array(length));\n  while (++index < length) {\n    array[index] = source[index];\n  }\n  return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    if (newValue === undefined) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n  return (typeof object.constructor == 'function' && !isPrototype(object))\n    ? baseCreate(getPrototype(object))\n    : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER : length;\n\n  return !!length &&\n    (type == 'number' ||\n      (type != 'symbol' && reIsUint.test(value))) &&\n        (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n  if (key === 'constructor' && typeof object[key] === 'function') {\n    return;\n  }\n\n  if (key == '__proto__') {\n    return;\n  }\n\n  return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n  var count = 0,\n      lastCalled = 0;\n\n  return function() {\n    var stamp = nativeNow(),\n        remaining = HOT_SPAN - (stamp - lastCalled);\n\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(undefined, arguments);\n  };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n    !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  if (!isObject(value)) {\n    return false;\n  }\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 9 which returns 'object' for typed arrays and other constructors.\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   if (_.isArray(objValue)) {\n *     return objValue.concat(srcValue);\n *   }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n  baseMerge(object, source, srcIndex, customizer);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n  return false;\n}\n\nmodule.exports = mergeWith;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash.mergewith/index.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/browser/main.js":
/*!**********************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/browser/main.js ***!
  \**********************************************************/
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createMessageConnection = exports.BrowserMessageWriter = exports.BrowserMessageReader = void 0;\nconst ril_1 = __webpack_require__(/*! ./ril */ \"../node_modules/vscode-jsonrpc/lib/browser/ril.js\");\n// Install the browser runtime abstract.\nril_1.default.install();\nconst api_1 = __webpack_require__(/*! ../common/api */ \"../node_modules/vscode-jsonrpc/lib/common/api.js\");\n__exportStar(__webpack_require__(/*! ../common/api */ \"../node_modules/vscode-jsonrpc/lib/common/api.js\"), exports);\nclass BrowserMessageReader extends api_1.AbstractMessageReader {\n    constructor(port) {\n        super();\n        this._onData = new api_1.Emitter();\n        this._messageListener = (event) => {\n            this._onData.fire(event.data);\n        };\n        port.addEventListener('error', (event) => this.fireError(event));\n        port.onmessage = this._messageListener;\n    }\n    listen(callback) {\n        return this._onData.event(callback);\n    }\n}\nexports.BrowserMessageReader = BrowserMessageReader;\nclass BrowserMessageWriter extends api_1.AbstractMessageWriter {\n    constructor(port) {\n        super();\n        this.port = port;\n        this.errorCount = 0;\n        port.addEventListener('error', (event) => this.fireError(event));\n    }\n    write(msg) {\n        try {\n            this.port.postMessage(msg);\n            return Promise.resolve();\n        }\n        catch (error) {\n            this.handleError(error, msg);\n            return Promise.reject(error);\n        }\n    }\n    handleError(error, msg) {\n        this.errorCount++;\n        this.fireError(error, msg, this.errorCount);\n    }\n    end() {\n    }\n}\nexports.BrowserMessageWriter = BrowserMessageWriter;\nfunction createMessageConnection(reader, writer, logger, options) {\n    if (logger === undefined) {\n        logger = api_1.NullLogger;\n    }\n    if (api_1.ConnectionStrategy.is(options)) {\n        options = { connectionStrategy: options };\n    }\n    return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/browser/main.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/browser/ril.js":
/*!*********************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/browser/ril.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst api_1 = __webpack_require__(/*! ../common/api */ \"../node_modules/vscode-jsonrpc/lib/common/api.js\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n    constructor(encoding = 'utf-8') {\n        super(encoding);\n        this.asciiDecoder = new TextDecoder('ascii');\n    }\n    emptyBuffer() {\n        return MessageBuffer.emptyBuffer;\n    }\n    fromString(value, _encoding) {\n        return (new TextEncoder()).encode(value);\n    }\n    toString(value, encoding) {\n        if (encoding === 'ascii') {\n            return this.asciiDecoder.decode(value);\n        }\n        else {\n            return (new TextDecoder(encoding)).decode(value);\n        }\n    }\n    asNative(buffer, length) {\n        if (length === undefined) {\n            return buffer;\n        }\n        else {\n            return buffer.slice(0, length);\n        }\n    }\n    allocNative(length) {\n        return new Uint8Array(length);\n    }\n}\nMessageBuffer.emptyBuffer = new Uint8Array(0);\nclass ReadableStreamWrapper {\n    constructor(socket) {\n        this.socket = socket;\n        this._onData = new api_1.Emitter();\n        this._messageListener = (event) => {\n            const blob = event.data;\n            blob.arrayBuffer().then((buffer) => {\n                this._onData.fire(new Uint8Array(buffer));\n            }, () => {\n                (0, api_1.RAL)().console.error(`Converting blob to array buffer failed.`);\n            });\n        };\n        this.socket.addEventListener('message', this._messageListener);\n    }\n    onClose(listener) {\n        this.socket.addEventListener('close', listener);\n        return api_1.Disposable.create(() => this.socket.removeEventListener('close', listener));\n    }\n    onError(listener) {\n        this.socket.addEventListener('error', listener);\n        return api_1.Disposable.create(() => this.socket.removeEventListener('error', listener));\n    }\n    onEnd(listener) {\n        this.socket.addEventListener('end', listener);\n        return api_1.Disposable.create(() => this.socket.removeEventListener('end', listener));\n    }\n    onData(listener) {\n        return this._onData.event(listener);\n    }\n}\nclass WritableStreamWrapper {\n    constructor(socket) {\n        this.socket = socket;\n    }\n    onClose(listener) {\n        this.socket.addEventListener('close', listener);\n        return api_1.Disposable.create(() => this.socket.removeEventListener('close', listener));\n    }\n    onError(listener) {\n        this.socket.addEventListener('error', listener);\n        return api_1.Disposable.create(() => this.socket.removeEventListener('error', listener));\n    }\n    onEnd(listener) {\n        this.socket.addEventListener('end', listener);\n        return api_1.Disposable.create(() => this.socket.removeEventListener('end', listener));\n    }\n    write(data, encoding) {\n        if (typeof data === 'string') {\n            if (encoding !== undefined && encoding !== 'utf-8') {\n                throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${encoding}`);\n            }\n            this.socket.send(data);\n        }\n        else {\n            this.socket.send(data);\n        }\n        return Promise.resolve();\n    }\n    end() {\n        this.socket.close();\n    }\n}\nconst _textEncoder = new TextEncoder();\nconst _ril = Object.freeze({\n    messageBuffer: Object.freeze({\n        create: (encoding) => new MessageBuffer(encoding)\n    }),\n    applicationJson: Object.freeze({\n        encoder: Object.freeze({\n            name: 'application/json',\n            encode: (msg, options) => {\n                if (options.charset !== 'utf-8') {\n                    throw new Error(`In a Browser environments only utf-8 text encoding is supported. But got encoding: ${options.charset}`);\n                }\n                return Promise.resolve(_textEncoder.encode(JSON.stringify(msg, undefined, 0)));\n            }\n        }),\n        decoder: Object.freeze({\n            name: 'application/json',\n            decode: (buffer, options) => {\n                if (!(buffer instanceof Uint8Array)) {\n                    throw new Error(`In a Browser environments only Uint8Arrays are supported.`);\n                }\n                return Promise.resolve(JSON.parse(new TextDecoder(options.charset).decode(buffer)));\n            }\n        })\n    }),\n    stream: Object.freeze({\n        asReadableStream: (socket) => new ReadableStreamWrapper(socket),\n        asWritableStream: (socket) => new WritableStreamWrapper(socket)\n    }),\n    console: console,\n    timer: Object.freeze({\n        setTimeout(callback, ms, ...args) {\n            const handle = setTimeout(callback, ms, ...args);\n            return { dispose: () => clearTimeout(handle) };\n        },\n        setImmediate(callback, ...args) {\n            const handle = setTimeout(callback, 0, ...args);\n            return { dispose: () => clearTimeout(handle) };\n        },\n        setInterval(callback, ms, ...args) {\n            const handle = setInterval(callback, ms, ...args);\n            return { dispose: () => clearInterval(handle) };\n        },\n    })\n});\nfunction RIL() {\n    return _ril;\n}\n(function (RIL) {\n    function install() {\n        api_1.RAL.install(_ril);\n    }\n    RIL.install = install;\n})(RIL || (RIL = {}));\nexports[\"default\"] = RIL;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/browser/ril.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/api.js":
/*!********************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/api.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// <reference path=\"../../typings/thenable.d.ts\" />\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = __webpack_require__(/*! ./messages */ \"../node_modules/vscode-jsonrpc/lib/common/messages.js\");\nObject.defineProperty(exports, \"Message\", ({ enumerable: true, get: function () { return messages_1.Message; } }));\nObject.defineProperty(exports, \"RequestType\", ({ enumerable: true, get: function () { return messages_1.RequestType; } }));\nObject.defineProperty(exports, \"RequestType0\", ({ enumerable: true, get: function () { return messages_1.RequestType0; } }));\nObject.defineProperty(exports, \"RequestType1\", ({ enumerable: true, get: function () { return messages_1.RequestType1; } }));\nObject.defineProperty(exports, \"RequestType2\", ({ enumerable: true, get: function () { return messages_1.RequestType2; } }));\nObject.defineProperty(exports, \"RequestType3\", ({ enumerable: true, get: function () { return messages_1.RequestType3; } }));\nObject.defineProperty(exports, \"RequestType4\", ({ enumerable: true, get: function () { return messages_1.RequestType4; } }));\nObject.defineProperty(exports, \"RequestType5\", ({ enumerable: true, get: function () { return messages_1.RequestType5; } }));\nObject.defineProperty(exports, \"RequestType6\", ({ enumerable: true, get: function () { return messages_1.RequestType6; } }));\nObject.defineProperty(exports, \"RequestType7\", ({ enumerable: true, get: function () { return messages_1.RequestType7; } }));\nObject.defineProperty(exports, \"RequestType8\", ({ enumerable: true, get: function () { return messages_1.RequestType8; } }));\nObject.defineProperty(exports, \"RequestType9\", ({ enumerable: true, get: function () { return messages_1.RequestType9; } }));\nObject.defineProperty(exports, \"ResponseError\", ({ enumerable: true, get: function () { return messages_1.ResponseError; } }));\nObject.defineProperty(exports, \"ErrorCodes\", ({ enumerable: true, get: function () { return messages_1.ErrorCodes; } }));\nObject.defineProperty(exports, \"NotificationType\", ({ enumerable: true, get: function () { return messages_1.NotificationType; } }));\nObject.defineProperty(exports, \"NotificationType0\", ({ enumerable: true, get: function () { return messages_1.NotificationType0; } }));\nObject.defineProperty(exports, \"NotificationType1\", ({ enumerable: true, get: function () { return messages_1.NotificationType1; } }));\nObject.defineProperty(exports, \"NotificationType2\", ({ enumerable: true, get: function () { return messages_1.NotificationType2; } }));\nObject.defineProperty(exports, \"NotificationType3\", ({ enumerable: true, get: function () { return messages_1.NotificationType3; } }));\nObject.defineProperty(exports, \"NotificationType4\", ({ enumerable: true, get: function () { return messages_1.NotificationType4; } }));\nObject.defineProperty(exports, \"NotificationType5\", ({ enumerable: true, get: function () { return messages_1.NotificationType5; } }));\nObject.defineProperty(exports, \"NotificationType6\", ({ enumerable: true, get: function () { return messages_1.NotificationType6; } }));\nObject.defineProperty(exports, \"NotificationType7\", ({ enumerable: true, get: function () { return messages_1.NotificationType7; } }));\nObject.defineProperty(exports, \"NotificationType8\", ({ enumerable: true, get: function () { return messages_1.NotificationType8; } }));\nObject.defineProperty(exports, \"NotificationType9\", ({ enumerable: true, get: function () { return messages_1.NotificationType9; } }));\nObject.defineProperty(exports, \"ParameterStructures\", ({ enumerable: true, get: function () { return messages_1.ParameterStructures; } }));\nconst linkedMap_1 = __webpack_require__(/*! ./linkedMap */ \"../node_modules/vscode-jsonrpc/lib/common/linkedMap.js\");\nObject.defineProperty(exports, \"LinkedMap\", ({ enumerable: true, get: function () { return linkedMap_1.LinkedMap; } }));\nObject.defineProperty(exports, \"LRUCache\", ({ enumerable: true, get: function () { return linkedMap_1.LRUCache; } }));\nObject.defineProperty(exports, \"Touch\", ({ enumerable: true, get: function () { return linkedMap_1.Touch; } }));\nconst disposable_1 = __webpack_require__(/*! ./disposable */ \"../node_modules/vscode-jsonrpc/lib/common/disposable.js\");\nObject.defineProperty(exports, \"Disposable\", ({ enumerable: true, get: function () { return disposable_1.Disposable; } }));\nconst events_1 = __webpack_require__(/*! ./events */ \"../node_modules/vscode-jsonrpc/lib/common/events.js\");\nObject.defineProperty(exports, \"Event\", ({ enumerable: true, get: function () { return events_1.Event; } }));\nObject.defineProperty(exports, \"Emitter\", ({ enumerable: true, get: function () { return events_1.Emitter; } }));\nconst cancellation_1 = __webpack_require__(/*! ./cancellation */ \"../node_modules/vscode-jsonrpc/lib/common/cancellation.js\");\nObject.defineProperty(exports, \"CancellationTokenSource\", ({ enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } }));\nObject.defineProperty(exports, \"CancellationToken\", ({ enumerable: true, get: function () { return cancellation_1.CancellationToken; } }));\nconst sharedArrayCancellation_1 = __webpack_require__(/*! ./sharedArrayCancellation */ \"../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", ({ enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } }));\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", ({ enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } }));\nconst messageReader_1 = __webpack_require__(/*! ./messageReader */ \"../node_modules/vscode-jsonrpc/lib/common/messageReader.js\");\nObject.defineProperty(exports, \"MessageReader\", ({ enumerable: true, get: function () { return messageReader_1.MessageReader; } }));\nObject.defineProperty(exports, \"AbstractMessageReader\", ({ enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } }));\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", ({ enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } }));\nconst messageWriter_1 = __webpack_require__(/*! ./messageWriter */ \"../node_modules/vscode-jsonrpc/lib/common/messageWriter.js\");\nObject.defineProperty(exports, \"MessageWriter\", ({ enumerable: true, get: function () { return messageWriter_1.MessageWriter; } }));\nObject.defineProperty(exports, \"AbstractMessageWriter\", ({ enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } }));\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", ({ enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } }));\nconst messageBuffer_1 = __webpack_require__(/*! ./messageBuffer */ \"../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", ({ enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } }));\nconst connection_1 = __webpack_require__(/*! ./connection */ \"../node_modules/vscode-jsonrpc/lib/common/connection.js\");\nObject.defineProperty(exports, \"ConnectionStrategy\", ({ enumerable: true, get: function () { return connection_1.ConnectionStrategy; } }));\nObject.defineProperty(exports, \"ConnectionOptions\", ({ enumerable: true, get: function () { return connection_1.ConnectionOptions; } }));\nObject.defineProperty(exports, \"NullLogger\", ({ enumerable: true, get: function () { return connection_1.NullLogger; } }));\nObject.defineProperty(exports, \"createMessageConnection\", ({ enumerable: true, get: function () { return connection_1.createMessageConnection; } }));\nObject.defineProperty(exports, \"ProgressToken\", ({ enumerable: true, get: function () { return connection_1.ProgressToken; } }));\nObject.defineProperty(exports, \"ProgressType\", ({ enumerable: true, get: function () { return connection_1.ProgressType; } }));\nObject.defineProperty(exports, \"Trace\", ({ enumerable: true, get: function () { return connection_1.Trace; } }));\nObject.defineProperty(exports, \"TraceValues\", ({ enumerable: true, get: function () { return connection_1.TraceValues; } }));\nObject.defineProperty(exports, \"TraceFormat\", ({ enumerable: true, get: function () { return connection_1.TraceFormat; } }));\nObject.defineProperty(exports, \"SetTraceNotification\", ({ enumerable: true, get: function () { return connection_1.SetTraceNotification; } }));\nObject.defineProperty(exports, \"LogTraceNotification\", ({ enumerable: true, get: function () { return connection_1.LogTraceNotification; } }));\nObject.defineProperty(exports, \"ConnectionErrors\", ({ enumerable: true, get: function () { return connection_1.ConnectionErrors; } }));\nObject.defineProperty(exports, \"ConnectionError\", ({ enumerable: true, get: function () { return connection_1.ConnectionError; } }));\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", ({ enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } }));\nObject.defineProperty(exports, \"CancellationSenderStrategy\", ({ enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } }));\nObject.defineProperty(exports, \"CancellationStrategy\", ({ enumerable: true, get: function () { return connection_1.CancellationStrategy; } }));\nObject.defineProperty(exports, \"MessageStrategy\", ({ enumerable: true, get: function () { return connection_1.MessageStrategy; } }));\nconst ral_1 = __webpack_require__(/*! ./ral */ \"../node_modules/vscode-jsonrpc/lib/common/ral.js\");\nexports.RAL = ral_1.default;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/api.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/cancellation.js":
/*!*****************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/cancellation.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = __webpack_require__(/*! ./ral */ \"../node_modules/vscode-jsonrpc/lib/common/ral.js\");\nconst Is = __webpack_require__(/*! ./is */ \"../node_modules/vscode-jsonrpc/lib/common/is.js\");\nconst events_1 = __webpack_require__(/*! ./events */ \"../node_modules/vscode-jsonrpc/lib/common/events.js\");\nvar CancellationToken;\n(function (CancellationToken) {\n    CancellationToken.None = Object.freeze({\n        isCancellationRequested: false,\n        onCancellationRequested: events_1.Event.None\n    });\n    CancellationToken.Cancelled = Object.freeze({\n        isCancellationRequested: true,\n        onCancellationRequested: events_1.Event.None\n    });\n    function is(value) {\n        const candidate = value;\n        return candidate && (candidate === CancellationToken.None\n            || candidate === CancellationToken.Cancelled\n            || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n    }\n    CancellationToken.is = is;\n})(CancellationToken = exports.CancellationToken || (exports.CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n    const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n    return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n    constructor() {\n        this._isCancelled = false;\n    }\n    cancel() {\n        if (!this._isCancelled) {\n            this._isCancelled = true;\n            if (this._emitter) {\n                this._emitter.fire(undefined);\n                this.dispose();\n            }\n        }\n    }\n    get isCancellationRequested() {\n        return this._isCancelled;\n    }\n    get onCancellationRequested() {\n        if (this._isCancelled) {\n            return shortcutEvent;\n        }\n        if (!this._emitter) {\n            this._emitter = new events_1.Emitter();\n        }\n        return this._emitter.event;\n    }\n    dispose() {\n        if (this._emitter) {\n            this._emitter.dispose();\n            this._emitter = undefined;\n        }\n    }\n}\nclass CancellationTokenSource {\n    get token() {\n        if (!this._token) {\n            // be lazy and create the token only when\n            // actually needed\n            this._token = new MutableToken();\n        }\n        return this._token;\n    }\n    cancel() {\n        if (!this._token) {\n            // save an object by returning the default\n            // cancelled token when cancellation happens\n            // before someone asks for the token\n            this._token = CancellationToken.Cancelled;\n        }\n        else {\n            this._token.cancel();\n        }\n    }\n    dispose() {\n        if (!this._token) {\n            // ensure to initialize with an empty token if we had none\n            this._token = CancellationToken.None;\n        }\n        else if (this._token instanceof MutableToken) {\n            // actually dispose\n            this._token.dispose();\n        }\n    }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/cancellation.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/connection.js":
/*!***************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/connection.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = __webpack_require__(/*! ./ral */ \"../node_modules/vscode-jsonrpc/lib/common/ral.js\");\nconst Is = __webpack_require__(/*! ./is */ \"../node_modules/vscode-jsonrpc/lib/common/is.js\");\nconst messages_1 = __webpack_require__(/*! ./messages */ \"../node_modules/vscode-jsonrpc/lib/common/messages.js\");\nconst linkedMap_1 = __webpack_require__(/*! ./linkedMap */ \"../node_modules/vscode-jsonrpc/lib/common/linkedMap.js\");\nconst events_1 = __webpack_require__(/*! ./events */ \"../node_modules/vscode-jsonrpc/lib/common/events.js\");\nconst cancellation_1 = __webpack_require__(/*! ./cancellation */ \"../node_modules/vscode-jsonrpc/lib/common/cancellation.js\");\nvar CancelNotification;\n(function (CancelNotification) {\n    CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n    function is(value) {\n        return typeof value === 'string' || typeof value === 'number';\n    }\n    ProgressToken.is = is;\n})(ProgressToken = exports.ProgressToken || (exports.ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n    ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n    constructor() {\n    }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n    function is(value) {\n        return Is.func(value);\n    }\n    StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n    error: () => { },\n    warn: () => { },\n    info: () => { },\n    log: () => { }\n});\nvar Trace;\n(function (Trace) {\n    Trace[Trace[\"Off\"] = 0] = \"Off\";\n    Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n    Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n    Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace = exports.Trace || (exports.Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n    /**\n     * Turn tracing off.\n     */\n    TraceValues.Off = 'off';\n    /**\n     * Trace messages only.\n     */\n    TraceValues.Messages = 'messages';\n    /**\n     * Compact message tracing.\n     */\n    TraceValues.Compact = 'compact';\n    /**\n     * Verbose message tracing.\n     */\n    TraceValues.Verbose = 'verbose';\n})(TraceValues = exports.TraceValues || (exports.TraceValues = {}));\n(function (Trace) {\n    function fromString(value) {\n        if (!Is.string(value)) {\n            return Trace.Off;\n        }\n        value = value.toLowerCase();\n        switch (value) {\n            case 'off':\n                return Trace.Off;\n            case 'messages':\n                return Trace.Messages;\n            case 'compact':\n                return Trace.Compact;\n            case 'verbose':\n                return Trace.Verbose;\n            default:\n                return Trace.Off;\n        }\n    }\n    Trace.fromString = fromString;\n    function toString(value) {\n        switch (value) {\n            case Trace.Off:\n                return 'off';\n            case Trace.Messages:\n                return 'messages';\n            case Trace.Compact:\n                return 'compact';\n            case Trace.Verbose:\n                return 'verbose';\n            default:\n                return 'off';\n        }\n    }\n    Trace.toString = toString;\n})(Trace = exports.Trace || (exports.Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n    TraceFormat[\"Text\"] = \"text\";\n    TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\n(function (TraceFormat) {\n    function fromString(value) {\n        if (!Is.string(value)) {\n            return TraceFormat.Text;\n        }\n        value = value.toLowerCase();\n        if (value === 'json') {\n            return TraceFormat.JSON;\n        }\n        else {\n            return TraceFormat.Text;\n        }\n    }\n    TraceFormat.fromString = fromString;\n})(TraceFormat = exports.TraceFormat || (exports.TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n    SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification = exports.SetTraceNotification || (exports.SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n    LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification = exports.LogTraceNotification || (exports.LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n    /**\n     * The connection is closed.\n     */\n    ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n    /**\n     * The connection got disposed.\n     */\n    ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n    /**\n     * The connection is already in listening mode.\n     */\n    ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors = exports.ConnectionErrors || (exports.ConnectionErrors = {}));\nclass ConnectionError extends Error {\n    constructor(code, message) {\n        super(message);\n        this.code = code;\n        Object.setPrototypeOf(this, ConnectionError.prototype);\n    }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && Is.func(candidate.cancelUndispatched);\n    }\n    ConnectionStrategy.is = is;\n})(ConnectionStrategy = exports.ConnectionStrategy || (exports.ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n    }\n    IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n    }\n    RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n    CancellationReceiverStrategy.Message = Object.freeze({\n        createCancellationTokenSource(_) {\n            return new cancellation_1.CancellationTokenSource();\n        }\n    });\n    function is(value) {\n        return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n    }\n    CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy = exports.CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n    CancellationSenderStrategy.Message = Object.freeze({\n        sendCancellation(conn, id) {\n            return conn.sendNotification(CancelNotification.type, { id });\n        },\n        cleanup(_) { }\n    });\n    function is(value) {\n        const candidate = value;\n        return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n    }\n    CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy = exports.CancellationSenderStrategy || (exports.CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n    CancellationStrategy.Message = Object.freeze({\n        receiver: CancellationReceiverStrategy.Message,\n        sender: CancellationSenderStrategy.Message\n    });\n    function is(value) {\n        const candidate = value;\n        return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n    }\n    CancellationStrategy.is = is;\n})(CancellationStrategy = exports.CancellationStrategy || (exports.CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && Is.func(candidate.handleMessage);\n    }\n    MessageStrategy.is = is;\n})(MessageStrategy = exports.MessageStrategy || (exports.MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n    function is(value) {\n        const candidate = value;\n        return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n    }\n    ConnectionOptions.is = is;\n})(ConnectionOptions = exports.ConnectionOptions || (exports.ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n    ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n    ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n    ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n    ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n    const logger = _logger !== undefined ? _logger : exports.NullLogger;\n    let sequenceNumber = 0;\n    let notificationSequenceNumber = 0;\n    let unknownResponseSequenceNumber = 0;\n    const version = '2.0';\n    let starRequestHandler = undefined;\n    const requestHandlers = new Map();\n    let starNotificationHandler = undefined;\n    const notificationHandlers = new Map();\n    const progressHandlers = new Map();\n    let timer;\n    let messageQueue = new linkedMap_1.LinkedMap();\n    let responsePromises = new Map();\n    let knownCanceledRequests = new Set();\n    let requestTokens = new Map();\n    let trace = Trace.Off;\n    let traceFormat = TraceFormat.Text;\n    let tracer;\n    let state = ConnectionState.New;\n    const errorEmitter = new events_1.Emitter();\n    const closeEmitter = new events_1.Emitter();\n    const unhandledNotificationEmitter = new events_1.Emitter();\n    const unhandledProgressEmitter = new events_1.Emitter();\n    const disposeEmitter = new events_1.Emitter();\n    const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n    function createRequestQueueKey(id) {\n        if (id === null) {\n            throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n        }\n        return 'req-' + id.toString();\n    }\n    function createResponseQueueKey(id) {\n        if (id === null) {\n            return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n        }\n        else {\n            return 'res-' + id.toString();\n        }\n    }\n    function createNotificationQueueKey() {\n        return 'not-' + (++notificationSequenceNumber).toString();\n    }\n    function addMessageToQueue(queue, message) {\n        if (messages_1.Message.isRequest(message)) {\n            queue.set(createRequestQueueKey(message.id), message);\n        }\n        else if (messages_1.Message.isResponse(message)) {\n            queue.set(createResponseQueueKey(message.id), message);\n        }\n        else {\n            queue.set(createNotificationQueueKey(), message);\n        }\n    }\n    function cancelUndispatched(_message) {\n        return undefined;\n    }\n    function isListening() {\n        return state === ConnectionState.Listening;\n    }\n    function isClosed() {\n        return state === ConnectionState.Closed;\n    }\n    function isDisposed() {\n        return state === ConnectionState.Disposed;\n    }\n    function closeHandler() {\n        if (state === ConnectionState.New || state === ConnectionState.Listening) {\n            state = ConnectionState.Closed;\n            closeEmitter.fire(undefined);\n        }\n        // If the connection is disposed don't sent close events.\n    }\n    function readErrorHandler(error) {\n        errorEmitter.fire([error, undefined, undefined]);\n    }\n    function writeErrorHandler(data) {\n        errorEmitter.fire(data);\n    }\n    messageReader.onClose(closeHandler);\n    messageReader.onError(readErrorHandler);\n    messageWriter.onClose(closeHandler);\n    messageWriter.onError(writeErrorHandler);\n    function triggerMessageQueue() {\n        if (timer || messageQueue.size === 0) {\n            return;\n        }\n        timer = (0, ral_1.default)().timer.setImmediate(() => {\n            timer = undefined;\n            processMessageQueue();\n        });\n    }\n    function handleMessage(message) {\n        if (messages_1.Message.isRequest(message)) {\n            handleRequest(message);\n        }\n        else if (messages_1.Message.isNotification(message)) {\n            handleNotification(message);\n        }\n        else if (messages_1.Message.isResponse(message)) {\n            handleResponse(message);\n        }\n        else {\n            handleInvalidMessage(message);\n        }\n    }\n    function processMessageQueue() {\n        if (messageQueue.size === 0) {\n            return;\n        }\n        const message = messageQueue.shift();\n        try {\n            const messageStrategy = options?.messageStrategy;\n            if (MessageStrategy.is(messageStrategy)) {\n                messageStrategy.handleMessage(message, handleMessage);\n            }\n            else {\n                handleMessage(message);\n            }\n        }\n        finally {\n            triggerMessageQueue();\n        }\n    }\n    const callback = (message) => {\n        try {\n            // We have received a cancellation message. Check if the message is still in the queue\n            // and cancel it if allowed to do so.\n            if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n                const cancelId = message.params.id;\n                const key = createRequestQueueKey(cancelId);\n                const toCancel = messageQueue.get(key);\n                if (messages_1.Message.isRequest(toCancel)) {\n                    const strategy = options?.connectionStrategy;\n                    const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n                    if (response && (response.error !== undefined || response.result !== undefined)) {\n                        messageQueue.delete(key);\n                        requestTokens.delete(cancelId);\n                        response.id = toCancel.id;\n                        traceSendingResponse(response, message.method, Date.now());\n                        messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n                        return;\n                    }\n                }\n                const cancellationToken = requestTokens.get(cancelId);\n                // The request is already running. Cancel the token\n                if (cancellationToken !== undefined) {\n                    cancellationToken.cancel();\n                    traceReceivedNotification(message);\n                    return;\n                }\n                else {\n                    // Remember the cancel but still queue the message to\n                    // clean up state in process message.\n                    knownCanceledRequests.add(cancelId);\n                }\n            }\n            addMessageToQueue(messageQueue, message);\n        }\n        finally {\n            triggerMessageQueue();\n        }\n    };\n    function handleRequest(requestMessage) {\n        if (isDisposed()) {\n            // we return here silently since we fired an event when the\n            // connection got disposed.\n            return;\n        }\n        function reply(resultOrError, method, startTime) {\n            const message = {\n                jsonrpc: version,\n                id: requestMessage.id\n            };\n            if (resultOrError instanceof messages_1.ResponseError) {\n                message.error = resultOrError.toJson();\n            }\n            else {\n                message.result = resultOrError === undefined ? null : resultOrError;\n            }\n            traceSendingResponse(message, method, startTime);\n            messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n        }\n        function replyError(error, method, startTime) {\n            const message = {\n                jsonrpc: version,\n                id: requestMessage.id,\n                error: error.toJson()\n            };\n            traceSendingResponse(message, method, startTime);\n            messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n        }\n        function replySuccess(result, method, startTime) {\n            // The JSON RPC defines that a response must either have a result or an error\n            // So we can't treat undefined as a valid response result.\n            if (result === undefined) {\n                result = null;\n            }\n            const message = {\n                jsonrpc: version,\n                id: requestMessage.id,\n                result: result\n            };\n            traceSendingResponse(message, method, startTime);\n            messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n        }\n        traceReceivedRequest(requestMessage);\n        const element = requestHandlers.get(requestMessage.method);\n        let type;\n        let requestHandler;\n        if (element) {\n            type = element.type;\n            requestHandler = element.handler;\n        }\n        const startTime = Date.now();\n        if (requestHandler || starRequestHandler) {\n            const tokenKey = requestMessage.id ?? String(Date.now()); //\n            const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n                ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n                : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n            if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n                cancellationSource.cancel();\n            }\n            if (requestMessage.id !== null) {\n                requestTokens.set(tokenKey, cancellationSource);\n            }\n            try {\n                let handlerResult;\n                if (requestHandler) {\n                    if (requestMessage.params === undefined) {\n                        if (type !== undefined && type.numberOfParams !== 0) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n                            return;\n                        }\n                        handlerResult = requestHandler(cancellationSource.token);\n                    }\n                    else if (Array.isArray(requestMessage.params)) {\n                        if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n                            return;\n                        }\n                        handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n                    }\n                    else {\n                        if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n                            return;\n                        }\n                        handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n                    }\n                }\n                else if (starRequestHandler) {\n                    handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n                }\n                const promise = handlerResult;\n                if (!handlerResult) {\n                    requestTokens.delete(tokenKey);\n                    replySuccess(handlerResult, requestMessage.method, startTime);\n                }\n                else if (promise.then) {\n                    promise.then((resultOrError) => {\n                        requestTokens.delete(tokenKey);\n                        reply(resultOrError, requestMessage.method, startTime);\n                    }, error => {\n                        requestTokens.delete(tokenKey);\n                        if (error instanceof messages_1.ResponseError) {\n                            replyError(error, requestMessage.method, startTime);\n                        }\n                        else if (error && Is.string(error.message)) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n                        }\n                        else {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n                        }\n                    });\n                }\n                else {\n                    requestTokens.delete(tokenKey);\n                    reply(handlerResult, requestMessage.method, startTime);\n                }\n            }\n            catch (error) {\n                requestTokens.delete(tokenKey);\n                if (error instanceof messages_1.ResponseError) {\n                    reply(error, requestMessage.method, startTime);\n                }\n                else if (error && Is.string(error.message)) {\n                    replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n                }\n                else {\n                    replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n                }\n            }\n        }\n        else {\n            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n        }\n    }\n    function handleResponse(responseMessage) {\n        if (isDisposed()) {\n            // See handle request.\n            return;\n        }\n        if (responseMessage.id === null) {\n            if (responseMessage.error) {\n                logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n            }\n            else {\n                logger.error(`Received response message without id. No further error information provided.`);\n            }\n        }\n        else {\n            const key = responseMessage.id;\n            const responsePromise = responsePromises.get(key);\n            traceReceivedResponse(responseMessage, responsePromise);\n            if (responsePromise !== undefined) {\n                responsePromises.delete(key);\n                try {\n                    if (responseMessage.error) {\n                        const error = responseMessage.error;\n                        responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n                    }\n                    else if (responseMessage.result !== undefined) {\n                        responsePromise.resolve(responseMessage.result);\n                    }\n                    else {\n                        throw new Error('Should never happen.');\n                    }\n                }\n                catch (error) {\n                    if (error.message) {\n                        logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n                    }\n                    else {\n                        logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n                    }\n                }\n            }\n        }\n    }\n    function handleNotification(message) {\n        if (isDisposed()) {\n            // See handle request.\n            return;\n        }\n        let type = undefined;\n        let notificationHandler;\n        if (message.method === CancelNotification.type.method) {\n            const cancelId = message.params.id;\n            knownCanceledRequests.delete(cancelId);\n            traceReceivedNotification(message);\n            return;\n        }\n        else {\n            const element = notificationHandlers.get(message.method);\n            if (element) {\n                notificationHandler = element.handler;\n                type = element.type;\n            }\n        }\n        if (notificationHandler || starNotificationHandler) {\n            try {\n                traceReceivedNotification(message);\n                if (notificationHandler) {\n                    if (message.params === undefined) {\n                        if (type !== undefined) {\n                            if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n                                logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n                            }\n                        }\n                        notificationHandler();\n                    }\n                    else if (Array.isArray(message.params)) {\n                        // There are JSON-RPC libraries that send progress message as positional params although\n                        // specified as named. So convert them if this is the case.\n                        const params = message.params;\n                        if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n                            notificationHandler({ token: params[0], value: params[1] });\n                        }\n                        else {\n                            if (type !== undefined) {\n                                if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n                                    logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n                                }\n                                if (type.numberOfParams !== message.params.length) {\n                                    logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n                                }\n                            }\n                            notificationHandler(...params);\n                        }\n                    }\n                    else {\n                        if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n                            logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n                        }\n                        notificationHandler(message.params);\n                    }\n                }\n                else if (starNotificationHandler) {\n                    starNotificationHandler(message.method, message.params);\n                }\n            }\n            catch (error) {\n                if (error.message) {\n                    logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n                }\n                else {\n                    logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n                }\n            }\n        }\n        else {\n            unhandledNotificationEmitter.fire(message);\n        }\n    }\n    function handleInvalidMessage(message) {\n        if (!message) {\n            logger.error('Received empty message.');\n            return;\n        }\n        logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n        // Test whether we find an id to reject the promise\n        const responseMessage = message;\n        if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n            const key = responseMessage.id;\n            const responseHandler = responsePromises.get(key);\n            if (responseHandler) {\n                responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n            }\n        }\n    }\n    function stringifyTrace(params) {\n        if (params === undefined || params === null) {\n            return undefined;\n        }\n        switch (trace) {\n            case Trace.Verbose:\n                return JSON.stringify(params, null, 4);\n            case Trace.Compact:\n                return JSON.stringify(params);\n            default:\n                return undefined;\n        }\n    }\n    function traceSendingRequest(message) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n                data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n            }\n            tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n        }\n        else {\n            logLSPMessage('send-request', message);\n        }\n    }\n    function traceSendingNotification(message) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.params) {\n                    data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n                }\n                else {\n                    data = 'No parameters provided.\\n\\n';\n                }\n            }\n            tracer.log(`Sending notification '${message.method}'.`, data);\n        }\n        else {\n            logLSPMessage('send-notification', message);\n        }\n    }\n    function traceSendingResponse(message, method, startTime) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.error && message.error.data) {\n                    data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n                }\n                else {\n                    if (message.result) {\n                        data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n                    }\n                    else if (message.error === undefined) {\n                        data = 'No result returned.\\n\\n';\n                    }\n                }\n            }\n            tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n        }\n        else {\n            logLSPMessage('send-response', message);\n        }\n    }\n    function traceReceivedRequest(message) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n                data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n            }\n            tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n        }\n        else {\n            logLSPMessage('receive-request', message);\n        }\n    }\n    function traceReceivedNotification(message) {\n        if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.params) {\n                    data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n                }\n                else {\n                    data = 'No parameters provided.\\n\\n';\n                }\n            }\n            tracer.log(`Received notification '${message.method}'.`, data);\n        }\n        else {\n            logLSPMessage('receive-notification', message);\n        }\n    }\n    function traceReceivedResponse(message, responsePromise) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.error && message.error.data) {\n                    data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n                }\n                else {\n                    if (message.result) {\n                        data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n                    }\n                    else if (message.error === undefined) {\n                        data = 'No result returned.\\n\\n';\n                    }\n                }\n            }\n            if (responsePromise) {\n                const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n                tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n            }\n            else {\n                tracer.log(`Received response ${message.id} without active response promise.`, data);\n            }\n        }\n        else {\n            logLSPMessage('receive-response', message);\n        }\n    }\n    function logLSPMessage(type, message) {\n        if (!tracer || trace === Trace.Off) {\n            return;\n        }\n        const lspMessage = {\n            isLSPMessage: true,\n            type,\n            message,\n            timestamp: Date.now()\n        };\n        tracer.log(lspMessage);\n    }\n    function throwIfClosedOrDisposed() {\n        if (isClosed()) {\n            throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n        }\n        if (isDisposed()) {\n            throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n        }\n    }\n    function throwIfListening() {\n        if (isListening()) {\n            throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n        }\n    }\n    function throwIfNotListening() {\n        if (!isListening()) {\n            throw new Error('Call listen() first.');\n        }\n    }\n    function undefinedToNull(param) {\n        if (param === undefined) {\n            return null;\n        }\n        else {\n            return param;\n        }\n    }\n    function nullToUndefined(param) {\n        if (param === null) {\n            return undefined;\n        }\n        else {\n            return param;\n        }\n    }\n    function isNamedParam(param) {\n        return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n    }\n    function computeSingleParam(parameterStructures, param) {\n        switch (parameterStructures) {\n            case messages_1.ParameterStructures.auto:\n                if (isNamedParam(param)) {\n                    return nullToUndefined(param);\n                }\n                else {\n                    return [undefinedToNull(param)];\n                }\n            case messages_1.ParameterStructures.byName:\n                if (!isNamedParam(param)) {\n                    throw new Error(`Received parameters by name but param is not an object literal.`);\n                }\n                return nullToUndefined(param);\n            case messages_1.ParameterStructures.byPosition:\n                return [undefinedToNull(param)];\n            default:\n                throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n        }\n    }\n    function computeMessageParams(type, params) {\n        let result;\n        const numberOfParams = type.numberOfParams;\n        switch (numberOfParams) {\n            case 0:\n                result = undefined;\n                break;\n            case 1:\n                result = computeSingleParam(type.parameterStructures, params[0]);\n                break;\n            default:\n                result = [];\n                for (let i = 0; i < params.length && i < numberOfParams; i++) {\n                    result.push(undefinedToNull(params[i]));\n                }\n                if (params.length < numberOfParams) {\n                    for (let i = params.length; i < numberOfParams; i++) {\n                        result.push(null);\n                    }\n                }\n                break;\n        }\n        return result;\n    }\n    const connection = {\n        sendNotification: (type, ...args) => {\n            throwIfClosedOrDisposed();\n            let method;\n            let messageParams;\n            if (Is.string(type)) {\n                method = type;\n                const first = args[0];\n                let paramStart = 0;\n                let parameterStructures = messages_1.ParameterStructures.auto;\n                if (messages_1.ParameterStructures.is(first)) {\n                    paramStart = 1;\n                    parameterStructures = first;\n                }\n                let paramEnd = args.length;\n                const numberOfParams = paramEnd - paramStart;\n                switch (numberOfParams) {\n                    case 0:\n                        messageParams = undefined;\n                        break;\n                    case 1:\n                        messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n                        break;\n                    default:\n                        if (parameterStructures === messages_1.ParameterStructures.byName) {\n                            throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n                        }\n                        messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n                        break;\n                }\n            }\n            else {\n                const params = args;\n                method = type.method;\n                messageParams = computeMessageParams(type, params);\n            }\n            const notificationMessage = {\n                jsonrpc: version,\n                method: method,\n                params: messageParams\n            };\n            traceSendingNotification(notificationMessage);\n            return messageWriter.write(notificationMessage).catch((error) => {\n                logger.error(`Sending notification failed.`);\n                throw error;\n            });\n        },\n        onNotification: (type, handler) => {\n            throwIfClosedOrDisposed();\n            let method;\n            if (Is.func(type)) {\n                starNotificationHandler = type;\n            }\n            else if (handler) {\n                if (Is.string(type)) {\n                    method = type;\n                    notificationHandlers.set(type, { type: undefined, handler });\n                }\n                else {\n                    method = type.method;\n                    notificationHandlers.set(type.method, { type, handler });\n                }\n            }\n            return {\n                dispose: () => {\n                    if (method !== undefined) {\n                        notificationHandlers.delete(method);\n                    }\n                    else {\n                        starNotificationHandler = undefined;\n                    }\n                }\n            };\n        },\n        onProgress: (_type, token, handler) => {\n            if (progressHandlers.has(token)) {\n                throw new Error(`Progress handler for token ${token} already registered`);\n            }\n            progressHandlers.set(token, handler);\n            return {\n                dispose: () => {\n                    progressHandlers.delete(token);\n                }\n            };\n        },\n        sendProgress: (_type, token, value) => {\n            // This should not await but simple return to ensure that we don't have another\n            // async scheduling. Otherwise one send could overtake another send.\n            return connection.sendNotification(ProgressNotification.type, { token, value });\n        },\n        onUnhandledProgress: unhandledProgressEmitter.event,\n        sendRequest: (type, ...args) => {\n            throwIfClosedOrDisposed();\n            throwIfNotListening();\n            let method;\n            let messageParams;\n            let token = undefined;\n            if (Is.string(type)) {\n                method = type;\n                const first = args[0];\n                const last = args[args.length - 1];\n                let paramStart = 0;\n                let parameterStructures = messages_1.ParameterStructures.auto;\n                if (messages_1.ParameterStructures.is(first)) {\n                    paramStart = 1;\n                    parameterStructures = first;\n                }\n                let paramEnd = args.length;\n                if (cancellation_1.CancellationToken.is(last)) {\n                    paramEnd = paramEnd - 1;\n                    token = last;\n                }\n                const numberOfParams = paramEnd - paramStart;\n                switch (numberOfParams) {\n                    case 0:\n                        messageParams = undefined;\n                        break;\n                    case 1:\n                        messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n                        break;\n                    default:\n                        if (parameterStructures === messages_1.ParameterStructures.byName) {\n                            throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n                        }\n                        messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n                        break;\n                }\n            }\n            else {\n                const params = args;\n                method = type.method;\n                messageParams = computeMessageParams(type, params);\n                const numberOfParams = type.numberOfParams;\n                token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n            }\n            const id = sequenceNumber++;\n            let disposable;\n            if (token) {\n                disposable = token.onCancellationRequested(() => {\n                    const p = cancellationStrategy.sender.sendCancellation(connection, id);\n                    if (p === undefined) {\n                        logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n                        return Promise.resolve();\n                    }\n                    else {\n                        return p.catch(() => {\n                            logger.log(`Sending cancellation messages for id ${id} failed`);\n                        });\n                    }\n                });\n            }\n            const requestMessage = {\n                jsonrpc: version,\n                id: id,\n                method: method,\n                params: messageParams\n            };\n            traceSendingRequest(requestMessage);\n            if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n                cancellationStrategy.sender.enableCancellation(requestMessage);\n            }\n            return new Promise(async (resolve, reject) => {\n                const resolveWithCleanup = (r) => {\n                    resolve(r);\n                    cancellationStrategy.sender.cleanup(id);\n                    disposable?.dispose();\n                };\n                const rejectWithCleanup = (r) => {\n                    reject(r);\n                    cancellationStrategy.sender.cleanup(id);\n                    disposable?.dispose();\n                };\n                const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n                try {\n                    await messageWriter.write(requestMessage);\n                    responsePromises.set(id, responsePromise);\n                }\n                catch (error) {\n                    logger.error(`Sending request failed.`);\n                    // Writing the message failed. So we need to reject the promise.\n                    responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n                    throw error;\n                }\n            });\n        },\n        onRequest: (type, handler) => {\n            throwIfClosedOrDisposed();\n            let method = null;\n            if (StarRequestHandler.is(type)) {\n                method = undefined;\n                starRequestHandler = type;\n            }\n            else if (Is.string(type)) {\n                method = null;\n                if (handler !== undefined) {\n                    method = type;\n                    requestHandlers.set(type, { handler: handler, type: undefined });\n                }\n            }\n            else {\n                if (handler !== undefined) {\n                    method = type.method;\n                    requestHandlers.set(type.method, { type, handler });\n                }\n            }\n            return {\n                dispose: () => {\n                    if (method === null) {\n                        return;\n                    }\n                    if (method !== undefined) {\n                        requestHandlers.delete(method);\n                    }\n                    else {\n                        starRequestHandler = undefined;\n                    }\n                }\n            };\n        },\n        hasPendingResponse: () => {\n            return responsePromises.size > 0;\n        },\n        trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n            let _sendNotification = false;\n            let _traceFormat = TraceFormat.Text;\n            if (sendNotificationOrTraceOptions !== undefined) {\n                if (Is.boolean(sendNotificationOrTraceOptions)) {\n                    _sendNotification = sendNotificationOrTraceOptions;\n                }\n                else {\n                    _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n                    _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n                }\n            }\n            trace = _value;\n            traceFormat = _traceFormat;\n            if (trace === Trace.Off) {\n                tracer = undefined;\n            }\n            else {\n                tracer = _tracer;\n            }\n            if (_sendNotification && !isClosed() && !isDisposed()) {\n                await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n            }\n        },\n        onError: errorEmitter.event,\n        onClose: closeEmitter.event,\n        onUnhandledNotification: unhandledNotificationEmitter.event,\n        onDispose: disposeEmitter.event,\n        end: () => {\n            messageWriter.end();\n        },\n        dispose: () => {\n            if (isDisposed()) {\n                return;\n            }\n            state = ConnectionState.Disposed;\n            disposeEmitter.fire(undefined);\n            const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n            for (const promise of responsePromises.values()) {\n                promise.reject(error);\n            }\n            responsePromises = new Map();\n            requestTokens = new Map();\n            knownCanceledRequests = new Set();\n            messageQueue = new linkedMap_1.LinkedMap();\n            // Test for backwards compatibility\n            if (Is.func(messageWriter.dispose)) {\n                messageWriter.dispose();\n            }\n            if (Is.func(messageReader.dispose)) {\n                messageReader.dispose();\n            }\n        },\n        listen: () => {\n            throwIfClosedOrDisposed();\n            throwIfListening();\n            state = ConnectionState.Listening;\n            messageReader.listen(callback);\n        },\n        inspect: () => {\n            // eslint-disable-next-line no-console\n            (0, ral_1.default)().console.log('inspect');\n        }\n    };\n    connection.onNotification(LogTraceNotification.type, (params) => {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n        tracer.log(params.message, verbose ? params.verbose : undefined);\n    });\n    connection.onNotification(ProgressNotification.type, (params) => {\n        const handler = progressHandlers.get(params.token);\n        if (handler) {\n            handler(params.value);\n        }\n        else {\n            unhandledProgressEmitter.fire(params);\n        }\n    });\n    return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/connection.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/disposable.js":
/*!***************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/disposable.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n    function create(func) {\n        return {\n            dispose: func\n        };\n    }\n    Disposable.create = create;\n})(Disposable = exports.Disposable || (exports.Disposable = {}));\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/disposable.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/events.js":
/*!***********************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/events.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = __webpack_require__(/*! ./ral */ \"../node_modules/vscode-jsonrpc/lib/common/ral.js\");\nvar Event;\n(function (Event) {\n    const _disposable = { dispose() { } };\n    Event.None = function () { return _disposable; };\n})(Event = exports.Event || (exports.Event = {}));\nclass CallbackList {\n    add(callback, context = null, bucket) {\n        if (!this._callbacks) {\n            this._callbacks = [];\n            this._contexts = [];\n        }\n        this._callbacks.push(callback);\n        this._contexts.push(context);\n        if (Array.isArray(bucket)) {\n            bucket.push({ dispose: () => this.remove(callback, context) });\n        }\n    }\n    remove(callback, context = null) {\n        if (!this._callbacks) {\n            return;\n        }\n        let foundCallbackWithDifferentContext = false;\n        for (let i = 0, len = this._callbacks.length; i < len; i++) {\n            if (this._callbacks[i] === callback) {\n                if (this._contexts[i] === context) {\n                    // callback & context match => remove it\n                    this._callbacks.splice(i, 1);\n                    this._contexts.splice(i, 1);\n                    return;\n                }\n                else {\n                    foundCallbackWithDifferentContext = true;\n                }\n            }\n        }\n        if (foundCallbackWithDifferentContext) {\n            throw new Error('When adding a listener with a context, you should remove it with the same context');\n        }\n    }\n    invoke(...args) {\n        if (!this._callbacks) {\n            return [];\n        }\n        const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n        for (let i = 0, len = callbacks.length; i < len; i++) {\n            try {\n                ret.push(callbacks[i].apply(contexts[i], args));\n            }\n            catch (e) {\n                // eslint-disable-next-line no-console\n                (0, ral_1.default)().console.error(e);\n            }\n        }\n        return ret;\n    }\n    isEmpty() {\n        return !this._callbacks || this._callbacks.length === 0;\n    }\n    dispose() {\n        this._callbacks = undefined;\n        this._contexts = undefined;\n    }\n}\nclass Emitter {\n    constructor(_options) {\n        this._options = _options;\n    }\n    /**\n     * For the public to allow to subscribe\n     * to events from this Emitter\n     */\n    get event() {\n        if (!this._event) {\n            this._event = (listener, thisArgs, disposables) => {\n                if (!this._callbacks) {\n                    this._callbacks = new CallbackList();\n                }\n                if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n                    this._options.onFirstListenerAdd(this);\n                }\n                this._callbacks.add(listener, thisArgs);\n                const result = {\n                    dispose: () => {\n                        if (!this._callbacks) {\n                            // disposable is disposed after emitter is disposed.\n                            return;\n                        }\n                        this._callbacks.remove(listener, thisArgs);\n                        result.dispose = Emitter._noop;\n                        if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n                            this._options.onLastListenerRemove(this);\n                        }\n                    }\n                };\n                if (Array.isArray(disposables)) {\n                    disposables.push(result);\n                }\n                return result;\n            };\n        }\n        return this._event;\n    }\n    /**\n     * To be kept private to fire an event to\n     * subscribers\n     */\n    fire(event) {\n        if (this._callbacks) {\n            this._callbacks.invoke.call(this._callbacks, event);\n        }\n    }\n    dispose() {\n        if (this._callbacks) {\n            this._callbacks.dispose();\n            this._callbacks = undefined;\n        }\n    }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/events.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/is.js":
/*!*******************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/is.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n    return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n    return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n    return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n    return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n    return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n    return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n    return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/is.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/linkedMap.js":
/*!**************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/linkedMap.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n    Touch.None = 0;\n    Touch.First = 1;\n    Touch.AsOld = Touch.First;\n    Touch.Last = 2;\n    Touch.AsNew = Touch.Last;\n})(Touch = exports.Touch || (exports.Touch = {}));\nclass LinkedMap {\n    constructor() {\n        this[_a] = 'LinkedMap';\n        this._map = new Map();\n        this._head = undefined;\n        this._tail = undefined;\n        this._size = 0;\n        this._state = 0;\n    }\n    clear() {\n        this._map.clear();\n        this._head = undefined;\n        this._tail = undefined;\n        this._size = 0;\n        this._state++;\n    }\n    isEmpty() {\n        return !this._head && !this._tail;\n    }\n    get size() {\n        return this._size;\n    }\n    get first() {\n        return this._head?.value;\n    }\n    get last() {\n        return this._tail?.value;\n    }\n    has(key) {\n        return this._map.has(key);\n    }\n    get(key, touch = Touch.None) {\n        const item = this._map.get(key);\n        if (!item) {\n            return undefined;\n        }\n        if (touch !== Touch.None) {\n            this.touch(item, touch);\n        }\n        return item.value;\n    }\n    set(key, value, touch = Touch.None) {\n        let item = this._map.get(key);\n        if (item) {\n            item.value = value;\n            if (touch !== Touch.None) {\n                this.touch(item, touch);\n            }\n        }\n        else {\n            item = { key, value, next: undefined, previous: undefined };\n            switch (touch) {\n                case Touch.None:\n                    this.addItemLast(item);\n                    break;\n                case Touch.First:\n                    this.addItemFirst(item);\n                    break;\n                case Touch.Last:\n                    this.addItemLast(item);\n                    break;\n                default:\n                    this.addItemLast(item);\n                    break;\n            }\n            this._map.set(key, item);\n            this._size++;\n        }\n        return this;\n    }\n    delete(key) {\n        return !!this.remove(key);\n    }\n    remove(key) {\n        const item = this._map.get(key);\n        if (!item) {\n            return undefined;\n        }\n        this._map.delete(key);\n        this.removeItem(item);\n        this._size--;\n        return item.value;\n    }\n    shift() {\n        if (!this._head && !this._tail) {\n            return undefined;\n        }\n        if (!this._head || !this._tail) {\n            throw new Error('Invalid list');\n        }\n        const item = this._head;\n        this._map.delete(item.key);\n        this.removeItem(item);\n        this._size--;\n        return item.value;\n    }\n    forEach(callbackfn, thisArg) {\n        const state = this._state;\n        let current = this._head;\n        while (current) {\n            if (thisArg) {\n                callbackfn.bind(thisArg)(current.value, current.key, this);\n            }\n            else {\n                callbackfn(current.value, current.key, this);\n            }\n            if (this._state !== state) {\n                throw new Error(`LinkedMap got modified during iteration.`);\n            }\n            current = current.next;\n        }\n    }\n    keys() {\n        const state = this._state;\n        let current = this._head;\n        const iterator = {\n            [Symbol.iterator]: () => {\n                return iterator;\n            },\n            next: () => {\n                if (this._state !== state) {\n                    throw new Error(`LinkedMap got modified during iteration.`);\n                }\n                if (current) {\n                    const result = { value: current.key, done: false };\n                    current = current.next;\n                    return result;\n                }\n                else {\n                    return { value: undefined, done: true };\n                }\n            }\n        };\n        return iterator;\n    }\n    values() {\n        const state = this._state;\n        let current = this._head;\n        const iterator = {\n            [Symbol.iterator]: () => {\n                return iterator;\n            },\n            next: () => {\n                if (this._state !== state) {\n                    throw new Error(`LinkedMap got modified during iteration.`);\n                }\n                if (current) {\n                    const result = { value: current.value, done: false };\n                    current = current.next;\n                    return result;\n                }\n                else {\n                    return { value: undefined, done: true };\n                }\n            }\n        };\n        return iterator;\n    }\n    entries() {\n        const state = this._state;\n        let current = this._head;\n        const iterator = {\n            [Symbol.iterator]: () => {\n                return iterator;\n            },\n            next: () => {\n                if (this._state !== state) {\n                    throw new Error(`LinkedMap got modified during iteration.`);\n                }\n                if (current) {\n                    const result = { value: [current.key, current.value], done: false };\n                    current = current.next;\n                    return result;\n                }\n                else {\n                    return { value: undefined, done: true };\n                }\n            }\n        };\n        return iterator;\n    }\n    [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n        return this.entries();\n    }\n    trimOld(newSize) {\n        if (newSize >= this.size) {\n            return;\n        }\n        if (newSize === 0) {\n            this.clear();\n            return;\n        }\n        let current = this._head;\n        let currentSize = this.size;\n        while (current && currentSize > newSize) {\n            this._map.delete(current.key);\n            current = current.next;\n            currentSize--;\n        }\n        this._head = current;\n        this._size = currentSize;\n        if (current) {\n            current.previous = undefined;\n        }\n        this._state++;\n    }\n    addItemFirst(item) {\n        // First time Insert\n        if (!this._head && !this._tail) {\n            this._tail = item;\n        }\n        else if (!this._head) {\n            throw new Error('Invalid list');\n        }\n        else {\n            item.next = this._head;\n            this._head.previous = item;\n        }\n        this._head = item;\n        this._state++;\n    }\n    addItemLast(item) {\n        // First time Insert\n        if (!this._head && !this._tail) {\n            this._head = item;\n        }\n        else if (!this._tail) {\n            throw new Error('Invalid list');\n        }\n        else {\n            item.previous = this._tail;\n            this._tail.next = item;\n        }\n        this._tail = item;\n        this._state++;\n    }\n    removeItem(item) {\n        if (item === this._head && item === this._tail) {\n            this._head = undefined;\n            this._tail = undefined;\n        }\n        else if (item === this._head) {\n            // This can only happened if size === 1 which is handle\n            // by the case above.\n            if (!item.next) {\n                throw new Error('Invalid list');\n            }\n            item.next.previous = undefined;\n            this._head = item.next;\n        }\n        else if (item === this._tail) {\n            // This can only happened if size === 1 which is handle\n            // by the case above.\n            if (!item.previous) {\n                throw new Error('Invalid list');\n            }\n            item.previous.next = undefined;\n            this._tail = item.previous;\n        }\n        else {\n            const next = item.next;\n            const previous = item.previous;\n            if (!next || !previous) {\n                throw new Error('Invalid list');\n            }\n            next.previous = previous;\n            previous.next = next;\n        }\n        item.next = undefined;\n        item.previous = undefined;\n        this._state++;\n    }\n    touch(item, touch) {\n        if (!this._head || !this._tail) {\n            throw new Error('Invalid list');\n        }\n        if ((touch !== Touch.First && touch !== Touch.Last)) {\n            return;\n        }\n        if (touch === Touch.First) {\n            if (item === this._head) {\n                return;\n            }\n            const next = item.next;\n            const previous = item.previous;\n            // Unlink the item\n            if (item === this._tail) {\n                // previous must be defined since item was not head but is tail\n                // So there are more than on item in the map\n                previous.next = undefined;\n                this._tail = previous;\n            }\n            else {\n                // Both next and previous are not undefined since item was neither head nor tail.\n                next.previous = previous;\n                previous.next = next;\n            }\n            // Insert the node at head\n            item.previous = undefined;\n            item.next = this._head;\n            this._head.previous = item;\n            this._head = item;\n            this._state++;\n        }\n        else if (touch === Touch.Last) {\n            if (item === this._tail) {\n                return;\n            }\n            const next = item.next;\n            const previous = item.previous;\n            // Unlink the item.\n            if (item === this._head) {\n                // next must be defined since item was not tail but is head\n                // So there are more than on item in the map\n                next.previous = undefined;\n                this._head = next;\n            }\n            else {\n                // Both next and previous are not undefined since item was neither head nor tail.\n                next.previous = previous;\n                previous.next = next;\n            }\n            item.next = undefined;\n            item.previous = this._tail;\n            this._tail.next = item;\n            this._tail = item;\n            this._state++;\n        }\n    }\n    toJSON() {\n        const data = [];\n        this.forEach((value, key) => {\n            data.push([key, value]);\n        });\n        return data;\n    }\n    fromJSON(data) {\n        this.clear();\n        for (const [key, value] of data) {\n            this.set(key, value);\n        }\n    }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n    constructor(limit, ratio = 1) {\n        super();\n        this._limit = limit;\n        this._ratio = Math.min(Math.max(0, ratio), 1);\n    }\n    get limit() {\n        return this._limit;\n    }\n    set limit(limit) {\n        this._limit = limit;\n        this.checkTrim();\n    }\n    get ratio() {\n        return this._ratio;\n    }\n    set ratio(ratio) {\n        this._ratio = Math.min(Math.max(0, ratio), 1);\n        this.checkTrim();\n    }\n    get(key, touch = Touch.AsNew) {\n        return super.get(key, touch);\n    }\n    peek(key) {\n        return super.get(key, Touch.None);\n    }\n    set(key, value) {\n        super.set(key, value, Touch.Last);\n        this.checkTrim();\n        return this;\n    }\n    checkTrim() {\n        if (this.size > this._limit) {\n            this.trimOld(Math.round(this._limit * this._ratio));\n        }\n    }\n}\nexports.LRUCache = LRUCache;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/linkedMap.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js":
/*!******************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n    constructor(encoding = 'utf-8') {\n        this._encoding = encoding;\n        this._chunks = [];\n        this._totalLength = 0;\n    }\n    get encoding() {\n        return this._encoding;\n    }\n    append(chunk) {\n        const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n        this._chunks.push(toAppend);\n        this._totalLength += toAppend.byteLength;\n    }\n    tryReadHeaders(lowerCaseKeys = false) {\n        if (this._chunks.length === 0) {\n            return undefined;\n        }\n        let state = 0;\n        let chunkIndex = 0;\n        let offset = 0;\n        let chunkBytesRead = 0;\n        row: while (chunkIndex < this._chunks.length) {\n            const chunk = this._chunks[chunkIndex];\n            offset = 0;\n            column: while (offset < chunk.length) {\n                const value = chunk[offset];\n                switch (value) {\n                    case CR:\n                        switch (state) {\n                            case 0:\n                                state = 1;\n                                break;\n                            case 2:\n                                state = 3;\n                                break;\n                            default:\n                                state = 0;\n                        }\n                        break;\n                    case LF:\n                        switch (state) {\n                            case 1:\n                                state = 2;\n                                break;\n                            case 3:\n                                state = 4;\n                                offset++;\n                                break row;\n                            default:\n                                state = 0;\n                        }\n                        break;\n                    default:\n                        state = 0;\n                }\n                offset++;\n            }\n            chunkBytesRead += chunk.byteLength;\n            chunkIndex++;\n        }\n        if (state !== 4) {\n            return undefined;\n        }\n        // The buffer contains the two CRLF at the end. So we will\n        // have two empty lines after the split at the end as well.\n        const buffer = this._read(chunkBytesRead + offset);\n        const result = new Map();\n        const headers = this.toString(buffer, 'ascii').split(CRLF);\n        if (headers.length < 2) {\n            return result;\n        }\n        for (let i = 0; i < headers.length - 2; i++) {\n            const header = headers[i];\n            const index = header.indexOf(':');\n            if (index === -1) {\n                throw new Error('Message header must separate key and value using :');\n            }\n            const key = header.substr(0, index);\n            const value = header.substr(index + 1).trim();\n            result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n        }\n        return result;\n    }\n    tryReadBody(length) {\n        if (this._totalLength < length) {\n            return undefined;\n        }\n        return this._read(length);\n    }\n    get numberOfBytes() {\n        return this._totalLength;\n    }\n    _read(byteCount) {\n        if (byteCount === 0) {\n            return this.emptyBuffer();\n        }\n        if (byteCount > this._totalLength) {\n            throw new Error(`Cannot read so many bytes!`);\n        }\n        if (this._chunks[0].byteLength === byteCount) {\n            // super fast path, precisely first chunk must be returned\n            const chunk = this._chunks[0];\n            this._chunks.shift();\n            this._totalLength -= byteCount;\n            return this.asNative(chunk);\n        }\n        if (this._chunks[0].byteLength > byteCount) {\n            // fast path, the reading is entirely within the first chunk\n            const chunk = this._chunks[0];\n            const result = this.asNative(chunk, byteCount);\n            this._chunks[0] = chunk.slice(byteCount);\n            this._totalLength -= byteCount;\n            return result;\n        }\n        const result = this.allocNative(byteCount);\n        let resultOffset = 0;\n        let chunkIndex = 0;\n        while (byteCount > 0) {\n            const chunk = this._chunks[chunkIndex];\n            if (chunk.byteLength > byteCount) {\n                // this chunk will survive\n                const chunkPart = chunk.slice(0, byteCount);\n                result.set(chunkPart, resultOffset);\n                resultOffset += byteCount;\n                this._chunks[chunkIndex] = chunk.slice(byteCount);\n                this._totalLength -= byteCount;\n                byteCount -= byteCount;\n            }\n            else {\n                // this chunk will be entirely read\n                result.set(chunk, resultOffset);\n                resultOffset += chunk.byteLength;\n                this._chunks.shift();\n                this._totalLength -= chunk.byteLength;\n                byteCount -= chunk.byteLength;\n            }\n        }\n        return result;\n    }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/messageReader.js":
/*!******************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/messageReader.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = __webpack_require__(/*! ./ral */ \"../node_modules/vscode-jsonrpc/lib/common/ral.js\");\nconst Is = __webpack_require__(/*! ./is */ \"../node_modules/vscode-jsonrpc/lib/common/is.js\");\nconst events_1 = __webpack_require__(/*! ./events */ \"../node_modules/vscode-jsonrpc/lib/common/events.js\");\nconst semaphore_1 = __webpack_require__(/*! ./semaphore */ \"../node_modules/vscode-jsonrpc/lib/common/semaphore.js\");\nvar MessageReader;\n(function (MessageReader) {\n    function is(value) {\n        let candidate = value;\n        return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n            Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n    }\n    MessageReader.is = is;\n})(MessageReader = exports.MessageReader || (exports.MessageReader = {}));\nclass AbstractMessageReader {\n    constructor() {\n        this.errorEmitter = new events_1.Emitter();\n        this.closeEmitter = new events_1.Emitter();\n        this.partialMessageEmitter = new events_1.Emitter();\n    }\n    dispose() {\n        this.errorEmitter.dispose();\n        this.closeEmitter.dispose();\n    }\n    get onError() {\n        return this.errorEmitter.event;\n    }\n    fireError(error) {\n        this.errorEmitter.fire(this.asError(error));\n    }\n    get onClose() {\n        return this.closeEmitter.event;\n    }\n    fireClose() {\n        this.closeEmitter.fire(undefined);\n    }\n    get onPartialMessage() {\n        return this.partialMessageEmitter.event;\n    }\n    firePartialMessage(info) {\n        this.partialMessageEmitter.fire(info);\n    }\n    asError(error) {\n        if (error instanceof Error) {\n            return error;\n        }\n        else {\n            return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n        }\n    }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n    function fromOptions(options) {\n        let charset;\n        let result;\n        let contentDecoder;\n        const contentDecoders = new Map();\n        let contentTypeDecoder;\n        const contentTypeDecoders = new Map();\n        if (options === undefined || typeof options === 'string') {\n            charset = options ?? 'utf-8';\n        }\n        else {\n            charset = options.charset ?? 'utf-8';\n            if (options.contentDecoder !== undefined) {\n                contentDecoder = options.contentDecoder;\n                contentDecoders.set(contentDecoder.name, contentDecoder);\n            }\n            if (options.contentDecoders !== undefined) {\n                for (const decoder of options.contentDecoders) {\n                    contentDecoders.set(decoder.name, decoder);\n                }\n            }\n            if (options.contentTypeDecoder !== undefined) {\n                contentTypeDecoder = options.contentTypeDecoder;\n                contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n            }\n            if (options.contentTypeDecoders !== undefined) {\n                for (const decoder of options.contentTypeDecoders) {\n                    contentTypeDecoders.set(decoder.name, decoder);\n                }\n            }\n        }\n        if (contentTypeDecoder === undefined) {\n            contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n            contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n        }\n        return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n    }\n    ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n    constructor(readable, options) {\n        super();\n        this.readable = readable;\n        this.options = ResolvedMessageReaderOptions.fromOptions(options);\n        this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n        this._partialMessageTimeout = 10000;\n        this.nextMessageLength = -1;\n        this.messageToken = 0;\n        this.readSemaphore = new semaphore_1.Semaphore(1);\n    }\n    set partialMessageTimeout(timeout) {\n        this._partialMessageTimeout = timeout;\n    }\n    get partialMessageTimeout() {\n        return this._partialMessageTimeout;\n    }\n    listen(callback) {\n        this.nextMessageLength = -1;\n        this.messageToken = 0;\n        this.partialMessageTimer = undefined;\n        this.callback = callback;\n        const result = this.readable.onData((data) => {\n            this.onData(data);\n        });\n        this.readable.onError((error) => this.fireError(error));\n        this.readable.onClose(() => this.fireClose());\n        return result;\n    }\n    onData(data) {\n        this.buffer.append(data);\n        while (true) {\n            if (this.nextMessageLength === -1) {\n                const headers = this.buffer.tryReadHeaders(true);\n                if (!headers) {\n                    return;\n                }\n                const contentLength = headers.get('content-length');\n                if (!contentLength) {\n                    this.fireError(new Error('Header must provide a Content-Length property.'));\n                    return;\n                }\n                const length = parseInt(contentLength);\n                if (isNaN(length)) {\n                    this.fireError(new Error('Content-Length value must be a number.'));\n                    return;\n                }\n                this.nextMessageLength = length;\n            }\n            const body = this.buffer.tryReadBody(this.nextMessageLength);\n            if (body === undefined) {\n                /** We haven't received the full message yet. */\n                this.setPartialMessageTimer();\n                return;\n            }\n            this.clearPartialMessageTimer();\n            this.nextMessageLength = -1;\n            // Make sure that we convert one received message after the\n            // other. Otherwise it could happen that a decoding of a second\n            // smaller message finished before the decoding of a first larger\n            // message and then we would deliver the second message first.\n            this.readSemaphore.lock(async () => {\n                const bytes = this.options.contentDecoder !== undefined\n                    ? await this.options.contentDecoder.decode(body)\n                    : body;\n                const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n                this.callback(message);\n            }).catch((error) => {\n                this.fireError(error);\n            });\n        }\n    }\n    clearPartialMessageTimer() {\n        if (this.partialMessageTimer) {\n            this.partialMessageTimer.dispose();\n            this.partialMessageTimer = undefined;\n        }\n    }\n    setPartialMessageTimer() {\n        this.clearPartialMessageTimer();\n        if (this._partialMessageTimeout <= 0) {\n            return;\n        }\n        this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n            this.partialMessageTimer = undefined;\n            if (token === this.messageToken) {\n                this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n                this.setPartialMessageTimer();\n            }\n        }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n    }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/messageReader.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/messageWriter.js":
/*!******************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/messageWriter.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = __webpack_require__(/*! ./ral */ \"../node_modules/vscode-jsonrpc/lib/common/ral.js\");\nconst Is = __webpack_require__(/*! ./is */ \"../node_modules/vscode-jsonrpc/lib/common/is.js\");\nconst semaphore_1 = __webpack_require__(/*! ./semaphore */ \"../node_modules/vscode-jsonrpc/lib/common/semaphore.js\");\nconst events_1 = __webpack_require__(/*! ./events */ \"../node_modules/vscode-jsonrpc/lib/common/events.js\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n    function is(value) {\n        let candidate = value;\n        return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n            Is.func(candidate.onError) && Is.func(candidate.write);\n    }\n    MessageWriter.is = is;\n})(MessageWriter = exports.MessageWriter || (exports.MessageWriter = {}));\nclass AbstractMessageWriter {\n    constructor() {\n        this.errorEmitter = new events_1.Emitter();\n        this.closeEmitter = new events_1.Emitter();\n    }\n    dispose() {\n        this.errorEmitter.dispose();\n        this.closeEmitter.dispose();\n    }\n    get onError() {\n        return this.errorEmitter.event;\n    }\n    fireError(error, message, count) {\n        this.errorEmitter.fire([this.asError(error), message, count]);\n    }\n    get onClose() {\n        return this.closeEmitter.event;\n    }\n    fireClose() {\n        this.closeEmitter.fire(undefined);\n    }\n    asError(error) {\n        if (error instanceof Error) {\n            return error;\n        }\n        else {\n            return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n        }\n    }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n    function fromOptions(options) {\n        if (options === undefined || typeof options === 'string') {\n            return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n        }\n        else {\n            return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n        }\n    }\n    ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n    constructor(writable, options) {\n        super();\n        this.writable = writable;\n        this.options = ResolvedMessageWriterOptions.fromOptions(options);\n        this.errorCount = 0;\n        this.writeSemaphore = new semaphore_1.Semaphore(1);\n        this.writable.onError((error) => this.fireError(error));\n        this.writable.onClose(() => this.fireClose());\n    }\n    async write(msg) {\n        return this.writeSemaphore.lock(async () => {\n            const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n                if (this.options.contentEncoder !== undefined) {\n                    return this.options.contentEncoder.encode(buffer);\n                }\n                else {\n                    return buffer;\n                }\n            });\n            return payload.then((buffer) => {\n                const headers = [];\n                headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n                headers.push(CRLF);\n                return this.doWrite(msg, headers, buffer);\n            }, (error) => {\n                this.fireError(error);\n                throw error;\n            });\n        });\n    }\n    async doWrite(msg, headers, data) {\n        try {\n            await this.writable.write(headers.join(''), 'ascii');\n            return this.writable.write(data);\n        }\n        catch (error) {\n            this.handleError(error, msg);\n            return Promise.reject(error);\n        }\n    }\n    handleError(error, msg) {\n        this.errorCount++;\n        this.fireError(error, msg, this.errorCount);\n    }\n    end() {\n        this.writable.end();\n    }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/messageWriter.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/messages.js":
/*!*************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/messages.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = __webpack_require__(/*! ./is */ \"../node_modules/vscode-jsonrpc/lib/common/is.js\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n    // Defined by JSON RPC\n    ErrorCodes.ParseError = -32700;\n    ErrorCodes.InvalidRequest = -32600;\n    ErrorCodes.MethodNotFound = -32601;\n    ErrorCodes.InvalidParams = -32602;\n    ErrorCodes.InternalError = -32603;\n    /**\n     * This is the start range of JSON RPC reserved error codes.\n     * It doesn't denote a real error code. No application error codes should\n     * be defined between the start and end range. For backwards\n     * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n     * are left in the range.\n     *\n     * @since 3.16.0\n    */\n    ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n    /** @deprecated use  jsonrpcReservedErrorRangeStart */\n    ErrorCodes.serverErrorStart = -32099;\n    /**\n     * An error occurred when write a message to the transport layer.\n     */\n    ErrorCodes.MessageWriteError = -32099;\n    /**\n     * An error occurred when reading a message from the transport layer.\n     */\n    ErrorCodes.MessageReadError = -32098;\n    /**\n     * The connection got disposed or lost and all pending responses got\n     * rejected.\n     */\n    ErrorCodes.PendingResponseRejected = -32097;\n    /**\n     * The connection is inactive and a use of it failed.\n     */\n    ErrorCodes.ConnectionInactive = -32096;\n    /**\n     * Error code indicating that a server received a notification or\n     * request before the server has received the `initialize` request.\n     */\n    ErrorCodes.ServerNotInitialized = -32002;\n    ErrorCodes.UnknownErrorCode = -32001;\n    /**\n     * This is the end range of JSON RPC reserved error codes.\n     * It doesn't denote a real error code.\n     *\n     * @since 3.16.0\n    */\n    ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n    /** @deprecated use  jsonrpcReservedErrorRangeEnd */\n    ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n    constructor(code, message, data) {\n        super(message);\n        this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n        this.data = data;\n        Object.setPrototypeOf(this, ResponseError.prototype);\n    }\n    toJson() {\n        const result = {\n            code: this.code,\n            message: this.message\n        };\n        if (this.data !== undefined) {\n            result.data = this.data;\n        }\n        return result;\n    }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n    constructor(kind) {\n        this.kind = kind;\n    }\n    static is(value) {\n        return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n    }\n    toString() {\n        return this.kind;\n    }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n    constructor(method, numberOfParams) {\n        this.method = method;\n        this.numberOfParams = numberOfParams;\n    }\n    get parameterStructures() {\n        return ParameterStructures.auto;\n    }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 0);\n    }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 2);\n    }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 3);\n    }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 4);\n    }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 5);\n    }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 6);\n    }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 7);\n    }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 8);\n    }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 9);\n    }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 0);\n    }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 2);\n    }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 3);\n    }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 4);\n    }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 5);\n    }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 6);\n    }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 7);\n    }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 8);\n    }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 9);\n    }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n    /**\n     * Tests if the given message is a request message\n     */\n    function isRequest(message) {\n        const candidate = message;\n        return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n    }\n    Message.isRequest = isRequest;\n    /**\n     * Tests if the given message is a notification message\n     */\n    function isNotification(message) {\n        const candidate = message;\n        return candidate && is.string(candidate.method) && message.id === void 0;\n    }\n    Message.isNotification = isNotification;\n    /**\n     * Tests if the given message is a response message\n     */\n    function isResponse(message) {\n        const candidate = message;\n        return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n    }\n    Message.isResponse = isResponse;\n})(Message = exports.Message || (exports.Message = {}));\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/messages.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/ral.js":
/*!********************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/ral.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nlet _ral;\nfunction RAL() {\n    if (_ral === undefined) {\n        throw new Error(`No runtime abstraction layer installed`);\n    }\n    return _ral;\n}\n(function (RAL) {\n    function install(ral) {\n        if (ral === undefined) {\n            throw new Error(`No runtime abstraction layer provided`);\n        }\n        _ral = ral;\n    }\n    RAL.install = install;\n})(RAL || (RAL = {}));\nexports[\"default\"] = RAL;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/ral.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/semaphore.js":
/*!**************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/semaphore.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Semaphore = void 0;\nconst ral_1 = __webpack_require__(/*! ./ral */ \"../node_modules/vscode-jsonrpc/lib/common/ral.js\");\nclass Semaphore {\n    constructor(capacity = 1) {\n        if (capacity <= 0) {\n            throw new Error('Capacity must be greater than 0');\n        }\n        this._capacity = capacity;\n        this._active = 0;\n        this._waiting = [];\n    }\n    lock(thunk) {\n        return new Promise((resolve, reject) => {\n            this._waiting.push({ thunk, resolve, reject });\n            this.runNext();\n        });\n    }\n    get active() {\n        return this._active;\n    }\n    runNext() {\n        if (this._waiting.length === 0 || this._active === this._capacity) {\n            return;\n        }\n        (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n    }\n    doRunNext() {\n        if (this._waiting.length === 0 || this._active === this._capacity) {\n            return;\n        }\n        const next = this._waiting.shift();\n        this._active++;\n        if (this._active > this._capacity) {\n            throw new Error(`To many thunks active`);\n        }\n        try {\n            const result = next.thunk();\n            if (result instanceof Promise) {\n                result.then((value) => {\n                    this._active--;\n                    next.resolve(value);\n                    this.runNext();\n                }, (err) => {\n                    this._active--;\n                    next.reject(err);\n                    this.runNext();\n                });\n            }\n            else {\n                this._active--;\n                next.resolve(result);\n                this.runNext();\n            }\n        }\n        catch (err) {\n            this._active--;\n            next.reject(err);\n            this.runNext();\n        }\n    }\n}\nexports.Semaphore = Semaphore;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/semaphore.js?");

/***/ }),

/***/ "../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js":
/*!****************************************************************************!*\
  !*** ../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
eval("\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = __webpack_require__(/*! ./cancellation */ \"../node_modules/vscode-jsonrpc/lib/common/cancellation.js\");\nvar CancellationState;\n(function (CancellationState) {\n    CancellationState.Continue = 0;\n    CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n    constructor() {\n        this.buffers = new Map();\n    }\n    enableCancellation(request) {\n        if (request.id === null) {\n            return;\n        }\n        const buffer = new SharedArrayBuffer(4);\n        const data = new Int32Array(buffer, 0, 1);\n        data[0] = CancellationState.Continue;\n        this.buffers.set(request.id, buffer);\n        request.$cancellationData = buffer;\n    }\n    async sendCancellation(_conn, id) {\n        const buffer = this.buffers.get(id);\n        if (buffer === undefined) {\n            return;\n        }\n        const data = new Int32Array(buffer, 0, 1);\n        Atomics.store(data, 0, CancellationState.Cancelled);\n    }\n    cleanup(id) {\n        this.buffers.delete(id);\n    }\n    dispose() {\n        this.buffers.clear();\n    }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n    constructor(buffer) {\n        this.data = new Int32Array(buffer, 0, 1);\n    }\n    get isCancellationRequested() {\n        return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n    }\n    get onCancellationRequested() {\n        throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n    }\n}\nclass SharedArrayBufferCancellationTokenSource {\n    constructor(buffer) {\n        this.token = new SharedArrayBufferCancellationToken(buffer);\n    }\n    cancel() {\n    }\n    dispose() {\n    }\n}\nclass SharedArrayReceiverStrategy {\n    constructor() {\n        this.kind = 'request';\n    }\n    createCancellationTokenSource(request) {\n        const buffer = request.$cancellationData;\n        if (buffer === undefined) {\n            return new cancellation_1.CancellationTokenSource();\n        }\n        return new SharedArrayBufferCancellationTokenSource(buffer);\n    }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/connection.js":
/*!***********************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/connection.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"listen\": () => (/* binding */ listen),\n/* harmony export */   \"toSocket\": () => (/* binding */ toSocket)\n/* harmony export */ });\n/* harmony import */ var _socket__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./socket */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/index.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"../node_modules/vscode-ws-jsonrpc/lib/logger.js\");\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\nfunction listen(options) {\r\n    const { webSocket, onConnection } = options;\r\n    const logger = options.logger || new _logger__WEBPACK_IMPORTED_MODULE_1__.ConsoleLogger();\r\n    webSocket.onopen = () => {\r\n        const socket = toSocket(webSocket);\r\n        const connection = (0,_socket__WEBPACK_IMPORTED_MODULE_0__.createWebSocketConnection)(socket, logger);\r\n        onConnection(connection);\r\n    };\r\n}\r\nfunction toSocket(webSocket) {\r\n    return {\r\n        send: content => webSocket.send(content),\r\n        onMessage: cb => {\r\n            webSocket.onmessage = event => cb(event.data);\r\n        },\r\n        onError: cb => {\r\n            webSocket.onerror = event => {\r\n                if ('message' in event) {\r\n                    cb(event.message);\r\n                }\r\n            };\r\n        },\r\n        onClose: cb => {\r\n            webSocket.onclose = event => cb(event.code, event.reason);\r\n        },\r\n        dispose: () => webSocket.close()\r\n    };\r\n}\r\n//# sourceMappingURL=connection.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/connection.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/disposable.js":
/*!***********************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/disposable.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Disposable\": () => (/* reexport safe */ vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__.Disposable),\n/* harmony export */   \"DisposableCollection\": () => (/* binding */ DisposableCollection)\n/* harmony export */ });\n/* harmony import */ var vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vscode-jsonrpc */ \"../node_modules/vscode-jsonrpc/lib/browser/main.js\");\n/* harmony import */ var vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__);\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\nclass DisposableCollection {\r\n    constructor() {\r\n        this.disposables = [];\r\n    }\r\n    dispose() {\r\n        while (this.disposables.length !== 0) {\r\n            this.disposables.pop().dispose();\r\n        }\r\n    }\r\n    push(disposable) {\r\n        const disposables = this.disposables;\r\n        disposables.push(disposable);\r\n        return {\r\n            dispose() {\r\n                const index = disposables.indexOf(disposable);\r\n                if (index !== -1) {\r\n                    disposables.splice(index, 1);\r\n                }\r\n            }\r\n        };\r\n    }\r\n}\r\n\r\n//# sourceMappingURL=disposable.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/disposable.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/index.js":
/*!******************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/index.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"AbstractMessageSignature\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.AbstractMessageSignature),\n/* harmony export */   \"ConsoleLogger\": () => (/* reexport safe */ _logger__WEBPACK_IMPORTED_MODULE_4__.ConsoleLogger),\n/* harmony export */   \"Disposable\": () => (/* reexport safe */ _disposable__WEBPACK_IMPORTED_MODULE_2__.Disposable),\n/* harmony export */   \"DisposableCollection\": () => (/* reexport safe */ _disposable__WEBPACK_IMPORTED_MODULE_2__.DisposableCollection),\n/* harmony export */   \"ErrorCodes\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.ErrorCodes),\n/* harmony export */   \"Message\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.Message),\n/* harmony export */   \"NotificationType\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType),\n/* harmony export */   \"NotificationType0\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType0),\n/* harmony export */   \"NotificationType1\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType1),\n/* harmony export */   \"NotificationType2\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType2),\n/* harmony export */   \"NotificationType3\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType3),\n/* harmony export */   \"NotificationType4\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType4),\n/* harmony export */   \"NotificationType5\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType5),\n/* harmony export */   \"NotificationType6\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType6),\n/* harmony export */   \"NotificationType7\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType7),\n/* harmony export */   \"NotificationType8\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType8),\n/* harmony export */   \"NotificationType9\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.NotificationType9),\n/* harmony export */   \"ParameterStructures\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.ParameterStructures),\n/* harmony export */   \"RequestType\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType),\n/* harmony export */   \"RequestType0\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType0),\n/* harmony export */   \"RequestType1\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType1),\n/* harmony export */   \"RequestType2\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType2),\n/* harmony export */   \"RequestType3\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType3),\n/* harmony export */   \"RequestType4\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType4),\n/* harmony export */   \"RequestType5\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType5),\n/* harmony export */   \"RequestType6\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType6),\n/* harmony export */   \"RequestType7\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType7),\n/* harmony export */   \"RequestType8\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType8),\n/* harmony export */   \"RequestType9\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.RequestType9),\n/* harmony export */   \"ResponseError\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.ResponseError),\n/* harmony export */   \"WebSocketMessageReader\": () => (/* reexport safe */ _socket__WEBPACK_IMPORTED_MODULE_3__.WebSocketMessageReader),\n/* harmony export */   \"WebSocketMessageWriter\": () => (/* reexport safe */ _socket__WEBPACK_IMPORTED_MODULE_3__.WebSocketMessageWriter),\n/* harmony export */   \"__esModule\": () => (/* reexport safe */ vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__.__esModule),\n/* harmony export */   \"createWebSocketConnection\": () => (/* reexport safe */ _socket__WEBPACK_IMPORTED_MODULE_3__.createWebSocketConnection),\n/* harmony export */   \"listen\": () => (/* reexport safe */ _connection__WEBPACK_IMPORTED_MODULE_5__.listen),\n/* harmony export */   \"toSocket\": () => (/* reexport safe */ _connection__WEBPACK_IMPORTED_MODULE_5__.toSocket)\n/* harmony export */ });\n/* harmony import */ var vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vscode-jsonrpc */ \"../node_modules/vscode-jsonrpc/lib/browser/main.js\");\n/* harmony import */ var vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var vscode_jsonrpc_lib_common_messages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vscode-jsonrpc/lib/common/messages */ \"../node_modules/vscode-jsonrpc/lib/common/messages.js\");\n/* harmony import */ var _disposable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./disposable */ \"../node_modules/vscode-ws-jsonrpc/lib/disposable.js\");\n/* harmony import */ var _socket__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./socket */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/index.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./logger */ \"../node_modules/vscode-ws-jsonrpc/lib/logger.js\");\n/* harmony import */ var _connection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./connection */ \"../node_modules/vscode-ws-jsonrpc/lib/connection.js\");\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\n\r\n\r\n\r\n\r\n\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/index.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/logger.js":
/*!*******************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/logger.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ConsoleLogger\": () => (/* binding */ ConsoleLogger)\n/* harmony export */ });\nclass ConsoleLogger {\r\n    error(message) {\r\n        console.error(message);\r\n    }\r\n    warn(message) {\r\n        console.warn(message);\r\n    }\r\n    info(message) {\r\n        console.info(message);\r\n    }\r\n    log(message) {\r\n        console.log(message);\r\n    }\r\n    debug(message) {\r\n        console.debug(message);\r\n    }\r\n}\r\n//# sourceMappingURL=logger.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/logger.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/socket/connection.js":
/*!******************************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/socket/connection.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"createWebSocketConnection\": () => (/* binding */ createWebSocketConnection)\n/* harmony export */ });\n/* harmony import */ var vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vscode-jsonrpc */ \"../node_modules/vscode-jsonrpc/lib/browser/main.js\");\n/* harmony import */ var vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _reader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reader */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/reader.js\");\n/* harmony import */ var _writer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./writer */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/writer.js\");\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\n\r\n\r\nfunction createWebSocketConnection(socket, logger) {\r\n    const messageReader = new _reader__WEBPACK_IMPORTED_MODULE_1__.WebSocketMessageReader(socket);\r\n    const messageWriter = new _writer__WEBPACK_IMPORTED_MODULE_2__.WebSocketMessageWriter(socket);\r\n    const connection = (0,vscode_jsonrpc__WEBPACK_IMPORTED_MODULE_0__.createMessageConnection)(messageReader, messageWriter, logger);\r\n    connection.onClose(() => connection.dispose());\r\n    return connection;\r\n}\r\n//# sourceMappingURL=connection.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/socket/connection.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/socket/index.js":
/*!*************************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/socket/index.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WebSocketMessageReader\": () => (/* reexport safe */ _reader__WEBPACK_IMPORTED_MODULE_1__.WebSocketMessageReader),\n/* harmony export */   \"WebSocketMessageWriter\": () => (/* reexport safe */ _writer__WEBPACK_IMPORTED_MODULE_2__.WebSocketMessageWriter),\n/* harmony export */   \"createWebSocketConnection\": () => (/* reexport safe */ _connection__WEBPACK_IMPORTED_MODULE_3__.createWebSocketConnection)\n/* harmony export */ });\n/* harmony import */ var _socket__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./socket */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/socket.js\");\n/* harmony import */ var _reader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reader */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/reader.js\");\n/* harmony import */ var _writer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./writer */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/writer.js\");\n/* harmony import */ var _connection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./connection */ \"../node_modules/vscode-ws-jsonrpc/lib/socket/connection.js\");\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\n\r\n\r\n\r\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/socket/index.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/socket/reader.js":
/*!**************************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/socket/reader.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WebSocketMessageReader\": () => (/* binding */ WebSocketMessageReader)\n/* harmony export */ });\n/* harmony import */ var vscode_jsonrpc_lib_common_messageReader__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vscode-jsonrpc/lib/common/messageReader */ \"../node_modules/vscode-jsonrpc/lib/common/messageReader.js\");\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\nclass WebSocketMessageReader extends vscode_jsonrpc_lib_common_messageReader__WEBPACK_IMPORTED_MODULE_0__.AbstractMessageReader {\r\n    constructor(socket) {\r\n        super();\r\n        this.socket = socket;\r\n        this.state = 'initial';\r\n        this.events = [];\r\n        this.socket.onMessage(message => this.readMessage(message));\r\n        this.socket.onError(error => this.fireError(error));\r\n        this.socket.onClose((code, reason) => {\r\n            if (code !== 1000) {\r\n                const error = {\r\n                    name: '' + code,\r\n                    message: `Error during socket reconnect: code = ${code}, reason = ${reason}`\r\n                };\r\n                this.fireError(error);\r\n            }\r\n            this.fireClose();\r\n        });\r\n    }\r\n    listen(callback) {\r\n        if (this.state === 'initial') {\r\n            this.state = 'listening';\r\n            this.callback = callback;\r\n            while (this.events.length !== 0) {\r\n                const event = this.events.pop();\r\n                if (event.message) {\r\n                    this.readMessage(event.message);\r\n                }\r\n                else if (event.error) {\r\n                    this.fireError(event.error);\r\n                }\r\n                else {\r\n                    this.fireClose();\r\n                }\r\n            }\r\n        }\r\n        return {\r\n            dispose: () => {\r\n                if (this.callback === callback) {\r\n                    this.callback = undefined;\r\n                }\r\n            }\r\n        };\r\n    }\r\n    readMessage(message) {\r\n        if (this.state === 'initial') {\r\n            this.events.splice(0, 0, { message });\r\n        }\r\n        else if (this.state === 'listening') {\r\n            const data = JSON.parse(message);\r\n            this.callback(data);\r\n        }\r\n    }\r\n    fireError(error) {\r\n        if (this.state === 'initial') {\r\n            this.events.splice(0, 0, { error });\r\n        }\r\n        else if (this.state === 'listening') {\r\n            super.fireError(error);\r\n        }\r\n    }\r\n    fireClose() {\r\n        if (this.state === 'initial') {\r\n            this.events.splice(0, 0, {});\r\n        }\r\n        else if (this.state === 'listening') {\r\n            super.fireClose();\r\n        }\r\n        this.state = 'closed';\r\n    }\r\n}\r\n//# sourceMappingURL=reader.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/socket/reader.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/socket/socket.js":
/*!**************************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/socket/socket.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\n//# sourceMappingURL=socket.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/socket/socket.js?");

/***/ }),

/***/ "../node_modules/vscode-ws-jsonrpc/lib/socket/writer.js":
/*!**************************************************************!*\
  !*** ../node_modules/vscode-ws-jsonrpc/lib/socket/writer.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WebSocketMessageWriter\": () => (/* binding */ WebSocketMessageWriter)\n/* harmony export */ });\n/* harmony import */ var vscode_jsonrpc_lib_common_messageWriter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vscode-jsonrpc/lib/common/messageWriter */ \"../node_modules/vscode-jsonrpc/lib/common/messageWriter.js\");\n/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\nclass WebSocketMessageWriter extends vscode_jsonrpc_lib_common_messageWriter__WEBPACK_IMPORTED_MODULE_0__.AbstractMessageWriter {\r\n    constructor(socket) {\r\n        super();\r\n        this.socket = socket;\r\n        this.errorCount = 0;\r\n    }\r\n    end() {\r\n    }\r\n    async write(msg) {\r\n        try {\r\n            const content = JSON.stringify(msg);\r\n            this.socket.send(content);\r\n        }\r\n        catch (e) {\r\n            this.errorCount++;\r\n            this.fireError(e, msg, this.errorCount);\r\n        }\r\n    }\r\n}\r\n//# sourceMappingURL=writer.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/vscode-ws-jsonrpc/lib/socket/writer.js?");

/***/ })

}]);