/*
 * 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_rendermime_lib_index_js"],{

/***/ "../node_modules/@jupyterlab/rendermime/lib/attachmentmodel.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/attachmentmodel.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 */   AttachmentModel: () => (/* binding */ AttachmentModel)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/observables */ \"webpack/sharing/consume/default/@jupyterlab/observables/@jupyterlab/observables\");\n/* harmony import */ var _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__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/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n/**\n * The default implementation of a notebook attachment model.\n */\nclass AttachmentModel {\n    /**\n     * Construct a new attachment model.\n     */\n    constructor(options) {\n        // All attachments are untrusted\n        this.trusted = false;\n        this._changed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__.Signal(this);\n        this._raw = {};\n        const data = Private.getData(options.value);\n        this._data = new _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_0__.ObservableJSON({ values: data });\n        this._rawData = data;\n        // Make a copy of the data.\n        const value = options.value;\n        for (const key in value) {\n            // Ignore data and metadata that were stripped.\n            switch (key) {\n                case 'data':\n                    break;\n                default:\n                    this._raw[key] = Private.extract(value, key);\n            }\n        }\n    }\n    /**\n     * A signal emitted when the attachment model changes.\n     */\n    get changed() {\n        return this._changed;\n    }\n    /**\n     * Dispose of the resources used by the attachment model.\n     */\n    dispose() {\n        this._data.dispose();\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_2__.Signal.clearData(this);\n    }\n    /**\n     * The data associated with the model.\n     */\n    get data() {\n        return this._rawData;\n    }\n    /**\n     * The metadata associated with the model.\n     */\n    get metadata() {\n        return {};\n    }\n    /**\n     * Set the data associated with the model.\n     *\n     * #### Notes\n     * Depending on the implementation of the mime model,\n     * this call may or may not have deferred effects,\n     */\n    setData(options) {\n        if (options.data) {\n            this._updateObservable(this._data, options.data);\n            this._rawData = options.data;\n        }\n        this._changed.emit(void 0);\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const attachment = {};\n        for (const key in this._raw) {\n            attachment[key] = Private.extract(this._raw, key);\n        }\n        return attachment;\n    }\n    /**\n     * Update an observable JSON object using a readonly JSON object.\n     */\n    _updateObservable(observable, data) {\n        const oldKeys = observable.keys();\n        const newKeys = Object.keys(data);\n        // Handle removed keys.\n        for (const key of oldKeys) {\n            if (newKeys.indexOf(key) === -1) {\n                observable.delete(key);\n            }\n        }\n        // Handle changed data.\n        for (const key of newKeys) {\n            const oldValue = observable.get(key);\n            const newValue = data[key];\n            if (oldValue !== newValue) {\n                observable.set(key, newValue);\n            }\n        }\n    }\n}\n/**\n * The namespace for AttachmentModel statics.\n */\n(function (AttachmentModel) {\n    /**\n     * Get the data for an attachment.\n     *\n     * @param bundle - A kernel attachment MIME bundle.\n     *\n     * @returns - The data for the payload.\n     */\n    function getData(bundle) {\n        return Private.getData(bundle);\n    }\n    AttachmentModel.getData = getData;\n})(AttachmentModel || (AttachmentModel = {}));\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * Get the data from a notebook attachment.\n     */\n    function getData(bundle) {\n        return convertBundle(bundle);\n    }\n    Private.getData = getData;\n    /**\n     * Get the bundle options given attachment model options.\n     */\n    function getBundleOptions(options) {\n        const data = getData(options.value);\n        return { data };\n    }\n    Private.getBundleOptions = getBundleOptions;\n    /**\n     * Extract a value from a JSONObject.\n     */\n    function extract(value, key) {\n        const item = value[key];\n        if (item === undefined || _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__.JSONExt.isPrimitive(item)) {\n            return item;\n        }\n        return _lumino_coreutils__WEBPACK_IMPORTED_MODULE_1__.JSONExt.deepCopy(item);\n    }\n    Private.extract = extract;\n    /**\n     * Convert a mime bundle to mime data.\n     */\n    function convertBundle(bundle) {\n        const map = Object.create(null);\n        for (const mimeType in bundle) {\n            map[mimeType] = extract(bundle, mimeType);\n        }\n        return map;\n    }\n})(Private || (Private = {}));\n//# sourceMappingURL=attachmentmodel.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/attachmentmodel.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/factories.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/factories.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 */   errorRendererFactory: () => (/* binding */ errorRendererFactory),\n/* harmony export */   htmlRendererFactory: () => (/* binding */ htmlRendererFactory),\n/* harmony export */   imageRendererFactory: () => (/* binding */ imageRendererFactory),\n/* harmony export */   javaScriptRendererFactory: () => (/* binding */ javaScriptRendererFactory),\n/* harmony export */   latexRendererFactory: () => (/* binding */ latexRendererFactory),\n/* harmony export */   markdownRendererFactory: () => (/* binding */ markdownRendererFactory),\n/* harmony export */   standardRendererFactories: () => (/* binding */ standardRendererFactories),\n/* harmony export */   svgRendererFactory: () => (/* binding */ svgRendererFactory),\n/* harmony export */   textRendererFactory: () => (/* binding */ textRendererFactory)\n/* harmony export */ });\n/* harmony import */ var _widgets__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./widgets */ \"../node_modules/@jupyterlab/rendermime/lib/widgets.js\");\n\n/**\n * A mime renderer factory for raw html.\n */\nconst htmlRendererFactory = {\n    safe: true,\n    mimeTypes: ['text/html'],\n    defaultRank: 50,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedHTML(options)\n};\n/**\n * A mime renderer factory for images.\n */\nconst imageRendererFactory = {\n    safe: true,\n    mimeTypes: [\n        'image/bmp',\n        'image/png',\n        'image/jpeg',\n        'image/gif',\n        'image/webp'\n    ],\n    defaultRank: 90,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedImage(options)\n};\n/**\n * A mime renderer factory for LaTeX.\n */\nconst latexRendererFactory = {\n    safe: true,\n    mimeTypes: ['text/latex'],\n    defaultRank: 70,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedLatex(options)\n};\n/**\n * A mime renderer factory for Markdown.\n */\nconst markdownRendererFactory = {\n    safe: true,\n    mimeTypes: ['text/markdown'],\n    defaultRank: 60,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedMarkdown(options)\n};\n/**\n * A mime renderer factory for svg.\n */\nconst svgRendererFactory = {\n    safe: false,\n    mimeTypes: ['image/svg+xml'],\n    defaultRank: 80,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedSVG(options)\n};\n/**\n * A mime renderer factory for rendering stderr outputs\n */\nconst errorRendererFactory = {\n    safe: true,\n    mimeTypes: ['application/vnd.jupyter.stderr'],\n    defaultRank: 110,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedError(options)\n};\n/**\n * A mime renderer factory for plain and jupyter console text data.\n */\nconst textRendererFactory = {\n    safe: true,\n    mimeTypes: ['text/plain', 'application/vnd.jupyter.stdout'],\n    defaultRank: 120,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedText(options)\n};\n/**\n * A placeholder factory for rendered JavaScript.\n */\nconst javaScriptRendererFactory = {\n    safe: false,\n    mimeTypes: ['text/javascript', 'application/javascript'],\n    defaultRank: 110,\n    createRenderer: options => new _widgets__WEBPACK_IMPORTED_MODULE_0__.RenderedJavaScript(options)\n};\n/**\n * The standard factories provided by the rendermime package.\n */\nconst standardRendererFactories = [\n    htmlRendererFactory,\n    markdownRendererFactory,\n    latexRendererFactory,\n    svgRendererFactory,\n    imageRendererFactory,\n    javaScriptRendererFactory,\n    errorRendererFactory,\n    textRendererFactory\n];\n//# sourceMappingURL=factories.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/factories.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/index.js":
/*!***********************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/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 */   AttachmentModel: () => (/* reexport safe */ _attachmentmodel__WEBPACK_IMPORTED_MODULE_1__.AttachmentModel),\n/* harmony export */   ILatexTypesetter: () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_8__.ILatexTypesetter),\n/* harmony export */   IMarkdownParser: () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_8__.IMarkdownParser),\n/* harmony export */   IRenderMimeRegistry: () => (/* reexport safe */ _tokens__WEBPACK_IMPORTED_MODULE_8__.IRenderMimeRegistry),\n/* harmony export */   MimeModel: () => (/* reexport safe */ _mimemodel__WEBPACK_IMPORTED_MODULE_4__.MimeModel),\n/* harmony export */   OutputModel: () => (/* reexport safe */ _outputmodel__WEBPACK_IMPORTED_MODULE_5__.OutputModel),\n/* harmony export */   RenderMimeRegistry: () => (/* reexport safe */ _registry__WEBPACK_IMPORTED_MODULE_6__.RenderMimeRegistry),\n/* harmony export */   RenderedCommon: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedCommon),\n/* harmony export */   RenderedError: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedError),\n/* harmony export */   RenderedHTML: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedHTML),\n/* harmony export */   RenderedHTMLCommon: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedHTMLCommon),\n/* harmony export */   RenderedImage: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedImage),\n/* harmony export */   RenderedJavaScript: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedJavaScript),\n/* harmony export */   RenderedLatex: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedLatex),\n/* harmony export */   RenderedMarkdown: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedMarkdown),\n/* harmony export */   RenderedSVG: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedSVG),\n/* harmony export */   RenderedText: () => (/* reexport safe */ _widgets__WEBPACK_IMPORTED_MODULE_9__.RenderedText),\n/* harmony export */   errorRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.errorRendererFactory),\n/* harmony export */   htmlRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.htmlRendererFactory),\n/* harmony export */   imageRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.imageRendererFactory),\n/* harmony export */   javaScriptRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.javaScriptRendererFactory),\n/* harmony export */   latexRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.latexRendererFactory),\n/* harmony export */   markdownRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.markdownRendererFactory),\n/* harmony export */   removeMath: () => (/* reexport safe */ _latex__WEBPACK_IMPORTED_MODULE_3__.removeMath),\n/* harmony export */   renderError: () => (/* reexport safe */ _renderers__WEBPACK_IMPORTED_MODULE_7__.renderError),\n/* harmony export */   renderHTML: () => (/* reexport safe */ _renderers__WEBPACK_IMPORTED_MODULE_7__.renderHTML),\n/* harmony export */   renderImage: () => (/* reexport safe */ _renderers__WEBPACK_IMPORTED_MODULE_7__.renderImage),\n/* harmony export */   renderLatex: () => (/* reexport safe */ _renderers__WEBPACK_IMPORTED_MODULE_7__.renderLatex),\n/* harmony export */   renderMarkdown: () => (/* reexport safe */ _renderers__WEBPACK_IMPORTED_MODULE_7__.renderMarkdown),\n/* harmony export */   renderSVG: () => (/* reexport safe */ _renderers__WEBPACK_IMPORTED_MODULE_7__.renderSVG),\n/* harmony export */   renderText: () => (/* reexport safe */ _renderers__WEBPACK_IMPORTED_MODULE_7__.renderText),\n/* harmony export */   replaceMath: () => (/* reexport safe */ _latex__WEBPACK_IMPORTED_MODULE_3__.replaceMath),\n/* harmony export */   standardRendererFactories: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.standardRendererFactories),\n/* harmony export */   svgRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.svgRendererFactory),\n/* harmony export */   textRendererFactory: () => (/* reexport safe */ _factories__WEBPACK_IMPORTED_MODULE_2__.textRendererFactory)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_rendermime_interfaces__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/rendermime-interfaces */ \"webpack/sharing/consume/default/@jupyterlab/rendermime-interfaces/@jupyterlab/rendermime-interfaces\");\n/* harmony import */ var _jupyterlab_rendermime_interfaces__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_rendermime_interfaces__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _jupyterlab_rendermime_interfaces__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== \"default\") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _jupyterlab_rendermime_interfaces__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _attachmentmodel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./attachmentmodel */ \"../node_modules/@jupyterlab/rendermime/lib/attachmentmodel.js\");\n/* harmony import */ var _factories__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./factories */ \"../node_modules/@jupyterlab/rendermime/lib/factories.js\");\n/* harmony import */ var _latex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./latex */ \"../node_modules/@jupyterlab/rendermime/lib/latex.js\");\n/* harmony import */ var _mimemodel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mimemodel */ \"../node_modules/@jupyterlab/rendermime/lib/mimemodel.js\");\n/* harmony import */ var _outputmodel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./outputmodel */ \"../node_modules/@jupyterlab/rendermime/lib/outputmodel.js\");\n/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./registry */ \"../node_modules/@jupyterlab/rendermime/lib/registry.js\");\n/* harmony import */ var _renderers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./renderers */ \"../node_modules/@jupyterlab/rendermime/lib/renderers.js\");\n/* harmony import */ var _tokens__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./tokens */ \"../node_modules/@jupyterlab/rendermime/lib/tokens.js\");\n/* harmony import */ var _widgets__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./widgets */ \"../node_modules/@jupyterlab/rendermime/lib/widgets.js\");\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n/**\n * @packageDocumentation\n * @module rendermime\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/rendermime/lib/index.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/latex.js":
/*!***********************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/latex.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 */   removeMath: () => (/* binding */ removeMath),\n/* harmony export */   replaceMath: () => (/* binding */ replaceMath)\n/* harmony export */ });\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n// Some magic for deferring mathematical expressions to MathJax\n// by hiding them from the Markdown parser.\n// Some of the code here is adapted with permission from Davide Cervone\n// under the terms of the Apache2 license governing the MathJax project.\n// Other minor modifications are also due to StackExchange and are used with\n// permission.\nconst inline = '$'; // the inline math delimiter\n// MATHSPLIT contains the pattern for math delimiters and special symbols\n// needed for searching for math in the text input.\nconst MATHSPLIT = /(\\$\\$?|\\\\(?:begin|end)\\{[a-z]*\\*?\\}|\\\\[{}$]|[{}]|(?:\\n\\s*)+|@@\\d+@@|\\\\\\\\(?:\\(|\\)|\\[|\\]))/i;\n/**\n *  Break up the text into its component parts and search\n *    through them for math delimiters, braces, linebreaks, etc.\n *  Math delimiters must match and braces must balance.\n *  Don't allow math to pass through a double linebreak\n *    (which will be a paragraph).\n */\nfunction removeMath(text) {\n    const math = []; // stores math strings for later\n    let start = null;\n    let end = null;\n    let last = null;\n    let braces = 0;\n    let deTilde;\n    // Except for extreme edge cases, this should catch precisely those pieces of the markdown\n    // source that will later be turned into code spans. While MathJax will not TeXify code spans,\n    // we still have to consider them at this point; the following issue has happened several times:\n    //\n    //     `$foo` and `$bar` are variables.  -->  <code>$foo ` and `$bar</code> are variables.\n    const hasCodeSpans = text.includes('`') || text.includes('~~~');\n    if (hasCodeSpans) {\n        text = text\n            .replace(/~/g, '~T')\n            // note: the `fence` (three or more consecutive tildes or backticks)\n            // can be followed by an `info string` but this cannot include backticks,\n            // see specification: https://spec.commonmark.org/0.30/#info-string\n            .replace(/^(?<fence>`{3,}|(~T){3,})[^`\\n]*\\n([\\s\\S]*?)^\\k<fence>`*$/gm, wholematch => wholematch.replace(/\\$/g, '~D'))\n            .replace(/(^|[^\\\\])(`+)([^\\n]*?[^`\\n])\\2(?!`)/gm, wholematch => wholematch.replace(/\\$/g, '~D'));\n        deTilde = (text) => {\n            return text.replace(/~([TD])/g, (wholematch, character) => character === 'T' ? '~' : inline);\n        };\n    }\n    else {\n        deTilde = (text) => {\n            return text;\n        };\n    }\n    let blocks = text.replace(/\\r\\n?/g, '\\n').split(MATHSPLIT);\n    for (let i = 1, m = blocks.length; i < m; i += 2) {\n        const block = blocks[i];\n        if (block.charAt(0) === '@') {\n            //\n            //  Things that look like our math markers will get\n            //  stored and then retrieved along with the math.\n            //\n            blocks[i] = '@@' + math.length + '@@';\n            math.push(block);\n        }\n        else if (start !== null) {\n            //\n            //  If we are in math, look for the end delimiter,\n            //    but don't go past double line breaks, and\n            //    and balance braces within the math.\n            //\n            if (block === end) {\n                if (braces) {\n                    last = i;\n                }\n                else {\n                    blocks = processMath(start, i, deTilde, math, blocks);\n                    start = null;\n                    end = null;\n                    last = null;\n                }\n            }\n            else if (block.match(/\\n.*\\n/)) {\n                if (last !== null) {\n                    i = last;\n                    blocks = processMath(start, i, deTilde, math, blocks);\n                }\n                start = null;\n                end = null;\n                last = null;\n                braces = 0;\n            }\n            else if (block === '{') {\n                braces++;\n            }\n            else if (block === '}' && braces) {\n                braces--;\n            }\n        }\n        else {\n            //\n            //  Look for math start delimiters and when\n            //    found, set up the end delimiter.\n            //\n            if (block === inline || block === '$$') {\n                start = i;\n                end = block;\n                braces = 0;\n            }\n            else if (block === '\\\\\\\\(' || block === '\\\\\\\\[') {\n                start = i;\n                end = block.slice(-1) === '(' ? '\\\\\\\\)' : '\\\\\\\\]';\n                braces = 0;\n            }\n            else if (block.substr(1, 5) === 'begin') {\n                start = i;\n                end = '\\\\end' + block.substr(6);\n                braces = 0;\n            }\n        }\n    }\n    if (start !== null && last !== null) {\n        blocks = processMath(start, last, deTilde, math, blocks);\n        start = null;\n        end = null;\n        last = null;\n    }\n    return { text: deTilde(blocks.join('')), math };\n}\n/**\n * Put back the math strings that were saved,\n * and clear the math array (no need to keep it around).\n */\nfunction replaceMath(text, math) {\n    /**\n     * Replace a math placeholder with its corresponding group.\n     * The math delimiters \"\\\\(\", \"\\\\[\", \"\\\\)\" and \"\\\\]\" are replaced\n     * removing one backslash in order to be interpreted correctly by MathJax.\n     */\n    const process = (match, n) => {\n        let group = math[n];\n        if (group.substr(0, 3) === '\\\\\\\\(' &&\n            group.substr(group.length - 3) === '\\\\\\\\)') {\n            group = '\\\\(' + group.substring(3, group.length - 3) + '\\\\)';\n        }\n        else if (group.substr(0, 3) === '\\\\\\\\[' &&\n            group.substr(group.length - 3) === '\\\\\\\\]') {\n            group = '\\\\[' + group.substring(3, group.length - 3) + '\\\\]';\n        }\n        return group;\n    };\n    // Replace all the math group placeholders in the text\n    // with the saved strings.\n    return text.replace(/@@(\\d+)@@/g, process);\n}\n/**\n * Process math blocks.\n *\n * The math is in blocks i through j, so\n *   collect it into one block and clear the others.\n *  Replace &, <, and > by named entities.\n *  For IE, put <br> at the ends of comments since IE removes \\n.\n *  Clear the current math positions and store the index of the\n *   math, then push the math string onto the storage array.\n *  The preProcess function is called on all blocks if it has been passed in\n */\nfunction processMath(i, j, preProcess, math, blocks) {\n    let block = blocks\n        .slice(i, j + 1)\n        .join('')\n        .replace(/&/g, '&amp;') // use HTML entity for &\n        .replace(/</g, '&lt;') // use HTML entity for <\n        .replace(/>/g, '&gt;'); // use HTML entity for >\n    if (navigator && navigator.appName === 'Microsoft Internet Explorer') {\n        block = block.replace(/(%[^\\n]*)\\n/g, '$1<br/>\\n');\n    }\n    while (j > i) {\n        blocks[j] = '';\n        j--;\n    }\n    blocks[i] = '@@' + math.length + '@@'; // replace the current block text with a unique tag to find later\n    if (preProcess) {\n        block = preProcess(block);\n    }\n    math.push(block);\n    return blocks;\n}\n//# sourceMappingURL=latex.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/latex.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/mimemodel.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/mimemodel.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 */   MimeModel: () => (/* binding */ MimeModel)\n/* harmony export */ });\n/**\n * The default mime model implementation.\n */\nclass MimeModel {\n    /**\n     * Construct a new mime model.\n     */\n    constructor(options = {}) {\n        this.trusted = !!options.trusted;\n        this._data = options.data || {};\n        this._metadata = options.metadata || {};\n        this._callback = options.callback || Private.noOp;\n    }\n    /**\n     * The data associated with the model.\n     */\n    get data() {\n        return this._data;\n    }\n    /**\n     * The metadata associated with the model.\n     */\n    get metadata() {\n        return this._metadata;\n    }\n    /**\n     * Set the data associated with the model.\n     *\n     * #### Notes\n     * Depending on the implementation of the mime model,\n     * this call may or may not have deferred effects,\n     */\n    setData(options) {\n        this._data = options.data || this._data;\n        this._metadata = options.metadata || this._metadata;\n        this._callback(options);\n    }\n}\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * A no-op callback function.\n     */\n    function noOp() {\n        /* no-op */\n    }\n    Private.noOp = noOp;\n})(Private || (Private = {}));\n//# sourceMappingURL=mimemodel.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/mimemodel.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/outputmodel.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/outputmodel.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 */   OutputModel: () => (/* binding */ OutputModel)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/nbformat */ \"webpack/sharing/consume/default/@jupyterlab/nbformat/@jupyterlab/nbformat\");\n/* harmony import */ var _jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/observables */ \"webpack/sharing/consume/default/@jupyterlab/observables/@jupyterlab/observables\");\n/* harmony import */ var _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_observables__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @lumino/coreutils */ \"webpack/sharing/consume/default/@lumino/coreutils/@lumino/coreutils\");\n/* harmony import */ var _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_lumino_coreutils__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/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n/**\n * The default implementation of a notebook output model.\n */\nclass OutputModel {\n    /**\n     * Construct a new output model.\n     */\n    constructor(options) {\n        this._changed = new _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal(this);\n        this._raw = {};\n        const { data, metadata, trusted } = Private.getBundleOptions(options);\n        this._data = new _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_1__.ObservableJSON({ values: data });\n        this._rawData = data;\n        this._metadata = new _jupyterlab_observables__WEBPACK_IMPORTED_MODULE_1__.ObservableJSON({ values: metadata });\n        this._rawMetadata = metadata;\n        this.trusted = trusted;\n        // Make a copy of the data.\n        const value = options.value;\n        for (const key in value) {\n            // Ignore data and metadata that were stripped.\n            switch (key) {\n                case 'data':\n                case 'metadata':\n                    break;\n                default:\n                    this._raw[key] = Private.extract(value, key);\n            }\n        }\n        this.type = value.output_type;\n        if (_jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isExecuteResult(value)) {\n            this.executionCount = value.execution_count;\n        }\n        else {\n            this.executionCount = null;\n        }\n    }\n    /**\n     * A signal emitted when the output model changes.\n     */\n    get changed() {\n        return this._changed;\n    }\n    /**\n     * Dispose of the resources used by the output model.\n     */\n    dispose() {\n        this._data.dispose();\n        this._metadata.dispose();\n        _lumino_signaling__WEBPACK_IMPORTED_MODULE_3__.Signal.clearData(this);\n    }\n    /**\n     * The data associated with the model.\n     */\n    get data() {\n        return this._rawData;\n    }\n    /**\n     * The metadata associated with the model.\n     */\n    get metadata() {\n        return this._rawMetadata;\n    }\n    /**\n     * Set the data associated with the model.\n     *\n     * #### Notes\n     * Depending on the implementation of the mime model,\n     * this call may or may not have deferred effects,\n     */\n    setData(options) {\n        if (options.data) {\n            this._updateObservable(this._data, options.data);\n            this._rawData = options.data;\n        }\n        if (options.metadata) {\n            this._updateObservable(this._metadata, options.metadata);\n            this._rawMetadata = options.metadata;\n        }\n        this._changed.emit();\n    }\n    /**\n     * Serialize the model to JSON.\n     */\n    toJSON() {\n        const output = {};\n        for (const key in this._raw) {\n            output[key] = Private.extract(this._raw, key);\n        }\n        switch (this.type) {\n            case 'display_data':\n            case 'execute_result':\n            case 'update_display_data':\n                output['data'] = this.data;\n                output['metadata'] = this.metadata;\n                break;\n            default:\n                break;\n        }\n        // Remove transient data.\n        delete output['transient'];\n        return output;\n    }\n    /**\n     * Update an observable JSON object using a readonly JSON object.\n     */\n    _updateObservable(observable, data) {\n        const oldKeys = observable.keys();\n        const newKeys = Object.keys(data);\n        // Handle removed keys.\n        for (const key of oldKeys) {\n            if (newKeys.indexOf(key) === -1) {\n                observable.delete(key);\n            }\n        }\n        // Handle changed data.\n        for (const key of newKeys) {\n            const oldValue = observable.get(key);\n            const newValue = data[key];\n            if (oldValue !== newValue) {\n                observable.set(key, newValue);\n            }\n        }\n    }\n}\n/**\n * The namespace for OutputModel statics.\n */\n(function (OutputModel) {\n    /**\n     * Get the data for an output.\n     *\n     * @param output - A kernel output message payload.\n     *\n     * @returns - The data for the payload.\n     */\n    function getData(output) {\n        return Private.getData(output);\n    }\n    OutputModel.getData = getData;\n    /**\n     * Get the metadata from an output message.\n     *\n     * @param output - A kernel output message payload.\n     *\n     * @returns - The metadata for the payload.\n     */\n    function getMetadata(output) {\n        return Private.getMetadata(output);\n    }\n    OutputModel.getMetadata = getMetadata;\n})(OutputModel || (OutputModel = {}));\n/**\n * The namespace for module private data.\n */\nvar Private;\n(function (Private) {\n    /**\n     * Get the data from a notebook output.\n     */\n    function getData(output) {\n        let bundle = {};\n        if (_jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isExecuteResult(output) ||\n            _jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isDisplayData(output) ||\n            _jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isDisplayUpdate(output)) {\n            bundle = output.data;\n        }\n        else if (_jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isStream(output)) {\n            if (output.name === 'stderr') {\n                bundle['application/vnd.jupyter.stderr'] = output.text;\n            }\n            else {\n                bundle['application/vnd.jupyter.stdout'] = output.text;\n            }\n        }\n        else if (_jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isError(output)) {\n            bundle['application/vnd.jupyter.error'] = output;\n            const traceback = output.traceback.join('\\n');\n            bundle['application/vnd.jupyter.stderr'] =\n                traceback || `${output.ename}: ${output.evalue}`;\n        }\n        return convertBundle(bundle);\n    }\n    Private.getData = getData;\n    /**\n     * Get the metadata from an output message.\n     */\n    function getMetadata(output) {\n        const value = Object.create(null);\n        if (_jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isExecuteResult(output) || _jupyterlab_nbformat__WEBPACK_IMPORTED_MODULE_0__.isDisplayData(output)) {\n            for (const key in output.metadata) {\n                value[key] = extract(output.metadata, key);\n            }\n        }\n        return value;\n    }\n    Private.getMetadata = getMetadata;\n    /**\n     * Get the bundle options given output model options.\n     */\n    function getBundleOptions(options) {\n        const data = getData(options.value);\n        const metadata = getMetadata(options.value);\n        const trusted = !!options.trusted;\n        return { data, metadata, trusted };\n    }\n    Private.getBundleOptions = getBundleOptions;\n    /**\n     * Extract a value from a JSONObject.\n     */\n    function extract(value, key) {\n        const item = value[key];\n        if (item === undefined || _lumino_coreutils__WEBPACK_IMPORTED_MODULE_2__.JSONExt.isPrimitive(item)) {\n            return item;\n        }\n        return JSON.parse(JSON.stringify(item));\n    }\n    Private.extract = extract;\n    /**\n     * Convert a mime bundle to mime data.\n     */\n    function convertBundle(bundle) {\n        const map = Object.create(null);\n        for (const mimeType in bundle) {\n            map[mimeType] = extract(bundle, mimeType);\n        }\n        return map;\n    }\n})(Private || (Private = {}));\n//# sourceMappingURL=outputmodel.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/outputmodel.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/registry.js":
/*!**************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/registry.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 */   RenderMimeRegistry: () => (/* binding */ RenderMimeRegistry)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/apputils */ \"webpack/sharing/consume/default/@jupyterlab/apputils/@jupyterlab/apputils\");\n/* harmony import */ var _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/coreutils */ \"webpack/sharing/consume/default/@jupyterlab/coreutils/@jupyterlab/coreutils\");\n/* harmony import */ var _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_coreutils__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 _mimemodel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./mimemodel */ \"../node_modules/@jupyterlab/rendermime/lib/mimemodel.js\");\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n/**\n * An object which manages mime renderer factories.\n *\n * This object is used to render mime models using registered mime\n * renderers, selecting the preferred mime renderer to render the\n * model into a widget.\n *\n * #### Notes\n * This class is not intended to be subclassed.\n */\nclass RenderMimeRegistry {\n    /**\n     * Construct a new rendermime.\n     *\n     * @param options - The options for initializing the instance.\n     */\n    constructor(options = {}) {\n        var _a, _b, _c, _d, _e, _f;\n        this._id = 0;\n        this._ranks = {};\n        this._types = null;\n        this._factories = {};\n        // Parse the options.\n        this.translator = (_a = options.translator) !== null && _a !== void 0 ? _a : _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_2__.nullTranslator;\n        this.resolver = (_b = options.resolver) !== null && _b !== void 0 ? _b : null;\n        this.linkHandler = (_c = options.linkHandler) !== null && _c !== void 0 ? _c : null;\n        this.latexTypesetter = (_d = options.latexTypesetter) !== null && _d !== void 0 ? _d : null;\n        this.markdownParser = (_e = options.markdownParser) !== null && _e !== void 0 ? _e : null;\n        this.sanitizer = (_f = options.sanitizer) !== null && _f !== void 0 ? _f : new _jupyterlab_apputils__WEBPACK_IMPORTED_MODULE_0__.Sanitizer();\n        // Add the initial factories.\n        if (options.initialFactories) {\n            for (const factory of options.initialFactories) {\n                this.addFactory(factory);\n            }\n        }\n    }\n    /**\n     * The ordered list of mimeTypes.\n     */\n    get mimeTypes() {\n        return this._types || (this._types = Private.sortedTypes(this._ranks));\n    }\n    /**\n     * Find the preferred mime type for a mime bundle.\n     *\n     * @param bundle - The bundle of mime data.\n     *\n     * @param safe - How to consider safe/unsafe factories. If 'ensure',\n     *   it will only consider safe factories. If 'any', any factory will be\n     *   considered. If 'prefer', unsafe factories will be considered, but\n     *   only after the safe options have been exhausted.\n     *\n     * @returns The preferred mime type from the available factories,\n     *   or `undefined` if the mime type cannot be rendered.\n     */\n    preferredMimeType(bundle, safe = 'ensure') {\n        // Try to find a safe factory first, if preferred.\n        if (safe === 'ensure' || safe === 'prefer') {\n            for (const mt of this.mimeTypes) {\n                if (mt in bundle && this._factories[mt].safe) {\n                    return mt;\n                }\n            }\n        }\n        if (safe !== 'ensure') {\n            // Otherwise, search for the best factory among all factories.\n            for (const mt of this.mimeTypes) {\n                if (mt in bundle) {\n                    return mt;\n                }\n            }\n        }\n        // Otherwise, no matching mime type exists.\n        return undefined;\n    }\n    /**\n     * Create a renderer for a mime type.\n     *\n     * @param mimeType - The mime type of interest.\n     *\n     * @returns A new renderer for the given mime type.\n     *\n     * @throws An error if no factory exists for the mime type.\n     */\n    createRenderer(mimeType) {\n        // Throw an error if no factory exists for the mime type.\n        if (!(mimeType in this._factories)) {\n            throw new Error(`No factory for mime type: '${mimeType}'`);\n        }\n        // Invoke the best factory for the given mime type.\n        return this._factories[mimeType].createRenderer({\n            mimeType,\n            resolver: this.resolver,\n            sanitizer: this.sanitizer,\n            linkHandler: this.linkHandler,\n            latexTypesetter: this.latexTypesetter,\n            markdownParser: this.markdownParser,\n            translator: this.translator\n        });\n    }\n    /**\n     * Create a new mime model.  This is a convenience method.\n     *\n     * @options - The options used to create the model.\n     *\n     * @returns A new mime model.\n     */\n    createModel(options = {}) {\n        return new _mimemodel__WEBPACK_IMPORTED_MODULE_3__.MimeModel(options);\n    }\n    /**\n     * Create a clone of this rendermime instance.\n     *\n     * @param options - The options for configuring the clone.\n     *\n     * @returns A new independent clone of the rendermime.\n     */\n    clone(options = {}) {\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n        // Create the clone.\n        const clone = new RenderMimeRegistry({\n            resolver: (_b = (_a = options.resolver) !== null && _a !== void 0 ? _a : this.resolver) !== null && _b !== void 0 ? _b : undefined,\n            sanitizer: (_d = (_c = options.sanitizer) !== null && _c !== void 0 ? _c : this.sanitizer) !== null && _d !== void 0 ? _d : undefined,\n            linkHandler: (_f = (_e = options.linkHandler) !== null && _e !== void 0 ? _e : this.linkHandler) !== null && _f !== void 0 ? _f : undefined,\n            latexTypesetter: (_h = (_g = options.latexTypesetter) !== null && _g !== void 0 ? _g : this.latexTypesetter) !== null && _h !== void 0 ? _h : undefined,\n            markdownParser: (_k = (_j = options.markdownParser) !== null && _j !== void 0 ? _j : this.markdownParser) !== null && _k !== void 0 ? _k : undefined,\n            translator: this.translator\n        });\n        // Clone the internal state.\n        clone._factories = { ...this._factories };\n        clone._ranks = { ...this._ranks };\n        clone._id = this._id;\n        // Return the cloned object.\n        return clone;\n    }\n    /**\n     * Get the renderer factory registered for a mime type.\n     *\n     * @param mimeType - The mime type of interest.\n     *\n     * @returns The factory for the mime type, or `undefined`.\n     */\n    getFactory(mimeType) {\n        return this._factories[mimeType];\n    }\n    /**\n     * Add a renderer factory to the rendermime.\n     *\n     * @param factory - The renderer factory of interest.\n     *\n     * @param rank - The rank of the renderer. A lower rank indicates\n     *   a higher priority for rendering. If not given, the rank will\n     *   defer to the `defaultRank` of the factory.  If no `defaultRank`\n     *   is given, it will default to 100.\n     *\n     * #### Notes\n     * The renderer will replace an existing renderer for the given\n     * mimeType.\n     */\n    addFactory(factory, rank) {\n        if (rank === undefined) {\n            rank = factory.defaultRank;\n            if (rank === undefined) {\n                rank = 100;\n            }\n        }\n        for (const mt of factory.mimeTypes) {\n            this._factories[mt] = factory;\n            this._ranks[mt] = { rank, id: this._id++ };\n        }\n        this._types = null;\n    }\n    /**\n     * Remove a mime type.\n     *\n     * @param mimeType - The mime type of interest.\n     */\n    removeMimeType(mimeType) {\n        delete this._factories[mimeType];\n        delete this._ranks[mimeType];\n        this._types = null;\n    }\n    /**\n     * Get the rank for a given mime type.\n     *\n     * @param mimeType - The mime type of interest.\n     *\n     * @returns The rank of the mime type or undefined.\n     */\n    getRank(mimeType) {\n        const rank = this._ranks[mimeType];\n        return rank && rank.rank;\n    }\n    /**\n     * Set the rank of a given mime type.\n     *\n     * @param mimeType - The mime type of interest.\n     *\n     * @param rank - The new rank to assign.\n     *\n     * #### Notes\n     * This is a no-op if the mime type is not registered.\n     */\n    setRank(mimeType, rank) {\n        if (!this._ranks[mimeType]) {\n            return;\n        }\n        const id = this._id++;\n        this._ranks[mimeType] = { rank, id };\n        this._types = null;\n    }\n}\n/**\n * The namespace for `RenderMimeRegistry` class statics.\n */\n(function (RenderMimeRegistry) {\n    /**\n     * A default resolver that uses a given reference path and a contents manager.\n     */\n    class UrlResolver {\n        /**\n         * Create a new url resolver.\n         */\n        constructor(options) {\n            this._path = options.path;\n            this._contents = options.contents;\n        }\n        /**\n         * The path of the object, from which local urls can be derived.\n         */\n        get path() {\n            return this._path;\n        }\n        set path(value) {\n            this._path = value;\n        }\n        /**\n         * Resolve a relative url to an absolute url path.\n         */\n        async resolveUrl(url) {\n            if (this.isLocal(url)) {\n                const cwd = encodeURI(_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.PathExt.dirname(this.path));\n                url = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.PathExt.resolve(cwd, url);\n            }\n            return url;\n        }\n        /**\n         * Get the download url of a given absolute url path.\n         *\n         * #### Notes\n         * The returned URL may include a query parameter.\n         */\n        async getDownloadUrl(urlPath) {\n            if (this.isLocal(urlPath)) {\n                // decode url->path before passing to contents api\n                return this._contents.getDownloadUrl(decodeURIComponent(urlPath));\n            }\n            return urlPath;\n        }\n        /**\n         * Whether the URL should be handled by the resolver\n         * or not.\n         *\n         * @param allowRoot - Whether the paths starting at Unix-style filesystem root (`/`) are permitted.\n         *\n         * #### Notes\n         * This is similar to the `isLocal` check in `URLExt`,\n         * but it also checks whether the path points to any\n         * of the `IDrive`s that may be registered with the contents\n         * manager.\n         */\n        isLocal(url, allowRoot = false) {\n            if (this.isMalformed(url)) {\n                return false;\n            }\n            return (_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.URLExt.isLocal(url, allowRoot) ||\n                !!this._contents.driveName(decodeURI(url)));\n        }\n        /**\n         * Resolve a path from Jupyter kernel to a path:\n         * - relative to `root_dir` (preferrably) this is in jupyter-server scope,\n         * - path understood and known by kernel (if such a path exists).\n         * Returns `null` if there is no file matching provided path in neither\n         * kernel nor jupyter-server contents manager.\n         */\n        async resolvePath(path) {\n            // TODO: a clean implementation would be server-side and depends on:\n            // https://github.com/jupyter-server/jupyter_server/issues/1280\n            const rootDir = _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_1__.PageConfig.getOption('rootUri').replace('file://', '');\n            // Workaround: expand `~` path using root dir (if it matches).\n            if (path.startsWith('~/') && rootDir.startsWith('/home/')) {\n                // For now we assume that kernel is in root dir.\n                path = rootDir.split('/').slice(0, 3).join('/') + path.substring(1);\n            }\n            if (path.startsWith(rootDir) || path.startsWith('./')) {\n                try {\n                    const relativePath = path.replace(rootDir, '');\n                    // If file exists on the server we have guessed right\n                    const response = await this._contents.get(relativePath, {\n                        content: false\n                    });\n                    return {\n                        path: response.path,\n                        scope: 'server'\n                    };\n                }\n                catch (error) {\n                    // The file seems like should be on the server but is not.\n                    console.warn(`Could not resolve location of ${path} on server`);\n                    return null;\n                }\n            }\n            // The file is not accessible from jupyter-server but maybe it is\n            // available from DAP `source`; we assume the path is available\n            // from kernel because currently we have no way of checking this\n            // without introducing a cycle (unless we were to set the debugger\n            // service instance on the resolver later).\n            return {\n                path: path,\n                scope: 'kernel'\n            };\n        }\n        /**\n         * Whether the URL can be decoded using `decodeURI`.\n         */\n        isMalformed(url) {\n            try {\n                decodeURI(url);\n                return false;\n            }\n            catch (error) {\n                if (error instanceof URIError) {\n                    return true;\n                }\n                throw error;\n            }\n        }\n    }\n    RenderMimeRegistry.UrlResolver = UrlResolver;\n})(RenderMimeRegistry || (RenderMimeRegistry = {}));\n/**\n * The namespace for the module implementation details.\n */\nvar Private;\n(function (Private) {\n    /**\n     * Get the mime types in the map, ordered by rank.\n     */\n    function sortedTypes(map) {\n        return Object.keys(map).sort((a, b) => {\n            const p1 = map[a];\n            const p2 = map[b];\n            if (p1.rank !== p2.rank) {\n                return p1.rank - p2.rank;\n            }\n            return p1.id - p2.id;\n        });\n    }\n    Private.sortedTypes = sortedTypes;\n})(Private || (Private = {}));\n//# sourceMappingURL=registry.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/registry.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/renderers.js":
/*!***************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/renderers.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 */   renderError: () => (/* binding */ renderError),\n/* harmony export */   renderHTML: () => (/* binding */ renderHTML),\n/* harmony export */   renderImage: () => (/* binding */ renderImage),\n/* harmony export */   renderLatex: () => (/* binding */ renderLatex),\n/* harmony export */   renderMarkdown: () => (/* binding */ renderMarkdown),\n/* harmony export */   renderSVG: () => (/* binding */ renderSVG),\n/* harmony export */   renderText: () => (/* binding */ renderText)\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_translation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_escape__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash.escape */ \"../node_modules/lodash.escape/index.js\");\n/* harmony import */ var lodash_escape__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_escape__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _latex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./latex */ \"../node_modules/@jupyterlab/rendermime/lib/latex.js\");\n/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n\n\n\n/**\n * Render HTML into a host node.\n *\n * @param options - The options for rendering.\n *\n * @returns A promise which resolves when rendering is complete.\n */\nfunction renderHTML(options) {\n    // Unpack the options.\n    let { host, source, trusted, sanitizer, resolver, linkHandler, shouldTypeset, latexTypesetter, translator } = options;\n    translator = translator || _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_1__.nullTranslator;\n    const trans = translator === null || translator === void 0 ? void 0 : translator.load('jupyterlab');\n    let originalSource = source;\n    // Bail early if the source is empty.\n    if (!source) {\n        host.textContent = '';\n        return Promise.resolve(undefined);\n    }\n    // Sanitize the source if it is not trusted. This removes all\n    // `<script>` tags as well as other potentially harmful HTML.\n    if (!trusted) {\n        originalSource = `${source}`;\n        source = sanitizer.sanitize(source);\n    }\n    // Set the inner HTML of the host.\n    host.innerHTML = source;\n    if (host.getElementsByTagName('script').length > 0) {\n        // If output it trusted, eval any script tags contained in the HTML.\n        // This is not done automatically by the browser when script tags are\n        // created by setting `innerHTML`.\n        if (trusted) {\n            Private.evalInnerHTMLScriptTags(host);\n        }\n        else {\n            const container = document.createElement('div');\n            const warning = document.createElement('pre');\n            warning.textContent = trans.__('This HTML output contains inline scripts. Are you sure that you want to run arbitrary Javascript within your JupyterLab session?');\n            const runButton = document.createElement('button');\n            runButton.textContent = trans.__('Run');\n            runButton.onclick = event => {\n                host.innerHTML = originalSource;\n                Private.evalInnerHTMLScriptTags(host);\n                if (host.firstChild) {\n                    host.removeChild(host.firstChild);\n                }\n            };\n            container.appendChild(warning);\n            container.appendChild(runButton);\n            host.insertBefore(container, host.firstChild);\n        }\n    }\n    // Handle default behavior of nodes.\n    Private.handleDefaults(host, resolver);\n    // Patch the urls if a resolver is available.\n    let promise;\n    if (resolver) {\n        promise = Private.handleUrls(host, resolver, linkHandler);\n    }\n    else {\n        promise = Promise.resolve(undefined);\n    }\n    // Return the final rendered promise.\n    return promise.then(() => {\n        if (shouldTypeset && latexTypesetter) {\n            latexTypesetter.typeset(host);\n        }\n    });\n}\n/**\n * Render an image into a host node.\n *\n * @param options - The options for rendering.\n *\n * @returns A promise which resolves when rendering is complete.\n */\nfunction renderImage(options) {\n    // Unpack the options.\n    const { host, mimeType, source, width, height, needsBackground, unconfined } = options;\n    // Clear the content in the host.\n    host.textContent = '';\n    // Create the image element.\n    const img = document.createElement('img');\n    // Set the source of the image.\n    img.src = `data:${mimeType};base64,${source}`;\n    // Set the size of the image if provided.\n    if (typeof height === 'number') {\n        img.height = height;\n    }\n    if (typeof width === 'number') {\n        img.width = width;\n    }\n    if (needsBackground === 'light') {\n        img.classList.add('jp-needs-light-background');\n    }\n    else if (needsBackground === 'dark') {\n        img.classList.add('jp-needs-dark-background');\n    }\n    if (unconfined === true) {\n        img.classList.add('jp-mod-unconfined');\n    }\n    // Add the image to the host.\n    host.appendChild(img);\n    // Return the rendered promise.\n    return Promise.resolve(undefined);\n}\n/**\n * Render LaTeX into a host node.\n *\n * @param options - The options for rendering.\n *\n * @returns A promise which resolves when rendering is complete.\n */\nfunction renderLatex(options) {\n    // Unpack the options.\n    const { host, source, shouldTypeset, latexTypesetter } = options;\n    // Set the source on the node.\n    host.textContent = source;\n    // Typeset the node if needed.\n    if (shouldTypeset && latexTypesetter) {\n        latexTypesetter.typeset(host);\n    }\n    // Return the rendered promise.\n    return Promise.resolve(undefined);\n}\n/**\n * Render Markdown into a host node.\n *\n * @param options - The options for rendering.\n *\n * @returns A promise which resolves when rendering is complete.\n */\nasync function renderMarkdown(options) {\n    // Unpack the options.\n    const { host, source, markdownParser, ...others } = options;\n    // Clear the content if there is no source.\n    if (!source) {\n        host.textContent = '';\n        return;\n    }\n    let html = '';\n    if (markdownParser) {\n        // Separate math from normal markdown text.\n        const parts = (0,_latex__WEBPACK_IMPORTED_MODULE_3__.removeMath)(source);\n        // Convert the markdown to HTML.\n        html = await markdownParser.render(parts['text']);\n        // Replace math.\n        html = (0,_latex__WEBPACK_IMPORTED_MODULE_3__.replaceMath)(html, parts['math']);\n    }\n    else {\n        // Fallback if the application does not have any markdown parser.\n        html = `<pre>${source}</pre>`;\n    }\n    // Render HTML.\n    await renderHTML({\n        host,\n        source: html,\n        ...others\n    });\n    // Apply ids to the header nodes.\n    Private.headerAnchors(host);\n}\n/**\n * The namespace for the `renderMarkdown` function statics.\n */\n(function (renderMarkdown) {\n    /**\n     * Create a normalized id for a header element.\n     *\n     * @param header Header element\n     * @returns Normalized id\n     */\n    function createHeaderId(header) {\n        var _a;\n        return ((_a = header.textContent) !== null && _a !== void 0 ? _a : '').replace(/ /g, '-');\n    }\n    renderMarkdown.createHeaderId = createHeaderId;\n})(renderMarkdown || (renderMarkdown = {}));\n/**\n * Render SVG into a host node.\n *\n * @param options - The options for rendering.\n *\n * @returns A promise which resolves when rendering is complete.\n */\nfunction renderSVG(options) {\n    // Unpack the options.\n    let { host, source, trusted, unconfined } = options;\n    // Clear the content if there is no source.\n    if (!source) {\n        host.textContent = '';\n        return Promise.resolve(undefined);\n    }\n    // Display a message if the source is not trusted.\n    if (!trusted) {\n        host.textContent =\n            'Cannot display an untrusted SVG. Maybe you need to run the cell?';\n        return Promise.resolve(undefined);\n    }\n    // Add missing SVG namespace (if actually missing)\n    const patt = '<svg[^>]+xmlns=[^>]+svg';\n    if (source.search(patt) < 0) {\n        source = source.replace('<svg', '<svg xmlns=\"http://www.w3.org/2000/svg\"');\n    }\n    // Render in img so that user can save it easily\n    const img = new Image();\n    img.src = `data:image/svg+xml,${encodeURIComponent(source)}`;\n    host.appendChild(img);\n    if (unconfined === true) {\n        host.classList.add('jp-mod-unconfined');\n    }\n    return Promise.resolve();\n}\nvar ILinker;\n(function (ILinker) {\n    // Taken from Visual Studio Code:\n    // https://github.com/microsoft/vscode/blob/9f709d170b06e991502153f281ec3c012add2e42/src/vs/workbench/contrib/debug/browser/linkDetector.ts#L17-L18\n    const controlCodes = '\\\\u0000-\\\\u0020\\\\u007f-\\\\u009f';\n    ILinker.webLinkRegex = new RegExp('(?<path>(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\\\\/\\\\/|data:|www\\\\.)[^\\\\s' +\n        controlCodes +\n        '\"]{2,}[^\\\\s' +\n        controlCodes +\n        '\"\\'(){}\\\\[\\\\],:;.!?])', 'ug');\n    // Taken from Visual Studio Code:\n    // https://github.com/microsoft/vscode/blob/3e407526a1e2ff22cacb69c7e353e81a12f41029/extensions/notebook-renderers/src/linkify.ts#L9\n    const winAbsPathRegex = /(?:[a-zA-Z]:(?:(?:\\\\|\\/)[\\w\\.-]*)+)/;\n    const winRelPathRegex = /(?:(?:\\~|\\.)(?:(?:\\\\|\\/)[\\w\\.-]*)+)/;\n    const winPathRegex = new RegExp(`(${winAbsPathRegex.source}|${winRelPathRegex.source})`);\n    const posixPathRegex = /((?:\\~|\\.)?(?:\\/[\\w\\.-]*)+)/;\n    const lineColumnRegex = /(?:(?:\\:|\", line )(?<line>[\\d]+))?(?:\\:(?<column>[\\d]+))?/;\n    // TODO: this ought to come from kernel (browser may be on a different OS).\n    const isWindows = navigator.userAgent.indexOf('Windows') >= 0;\n    ILinker.pathLinkRegex = new RegExp(`(?<path>${isWindows ? winPathRegex.source : posixPathRegex.source})${lineColumnRegex.source}`, 'g');\n})(ILinker || (ILinker = {}));\n/**\n * Linker for web URLs.\n */\nclass WebLinker {\n    constructor() {\n        this.regex = ILinker.webLinkRegex;\n    }\n    createAnchor(url, label) {\n        const anchor = document.createElement('a');\n        anchor.href = url.startsWith('www.') ? 'https://' + url : url;\n        anchor.rel = 'noopener';\n        anchor.target = '_blank';\n        anchor.appendChild(document.createTextNode(label));\n        return anchor;\n    }\n    processPath(url) {\n        // Special case when the URL ends with \">\" or \"<\"\n        const lastChars = url.slice(-1);\n        const endsWithGtLt = ['>', '<'].indexOf(lastChars) !== -1;\n        const len = endsWithGtLt ? url.length - 1 : url.length;\n        url = url.slice(0, len);\n        return url;\n    }\n    processLabel(url) {\n        return this.processPath(url);\n    }\n}\n/**\n * Linker for path URIs.\n */\nclass PathLinker {\n    constructor() {\n        this.regex = ILinker.pathLinkRegex;\n    }\n    createAnchor(path, label, locators) {\n        const anchor = document.createElement('a');\n        // Store the path in dataset.\n        // Do not set `href` - at this point we do not know if the path is valid and\n        // accessible for application (and we want rendering those as links).\n        anchor.dataset.path = path;\n        // Store line using RFC 5147 fragment locator for text/plain files.\n        // It could be expanded to other formats, e.g. based on file extension.\n        const line = parseInt(locators['line'], 10);\n        let locator = !isNaN(line) ? `line=${line - 1}` : '';\n        anchor.dataset.locator = locator;\n        anchor.appendChild(document.createTextNode(label));\n        return anchor;\n    }\n}\nfunction autolink(content, options) {\n    const linkers = [];\n    if (options.checkWeb) {\n        linkers.push(new WebLinker());\n    }\n    if (options.checkPaths) {\n        linkers.push(new PathLinker());\n    }\n    const nodes = [];\n    // There are two ways to implement competitive regexes:\n    // - two heads (which would need to resolve overlaps), or\n    // - (simpler) divide and recurse (implemented below)\n    const linkify = (content, regexIndex) => {\n        if (regexIndex >= linkers.length) {\n            nodes.push(document.createTextNode(content));\n            return;\n        }\n        const linker = linkers[regexIndex];\n        let match;\n        let currentIndex = 0;\n        const regex = linker.regex;\n        // Reset regex\n        regex.lastIndex = 0;\n        while (null != (match = regex.exec(content))) {\n            const stringBeforeMatch = content.substring(currentIndex, match.index);\n            if (stringBeforeMatch) {\n                linkify(stringBeforeMatch, regexIndex + 1);\n            }\n            const { path, ...locators } = match.groups;\n            const value = linker.processPath ? linker.processPath(path) : path;\n            const label = linker.processLabel\n                ? linker.processLabel(match[0])\n                : match[0];\n            nodes.push(linker.createAnchor(value, label, locators));\n            currentIndex = match.index + label.length;\n        }\n        const stringAfterMatches = content.substring(currentIndex);\n        if (stringAfterMatches) {\n            linkify(stringAfterMatches, regexIndex + 1);\n        }\n    };\n    linkify(content, 0);\n    return nodes;\n}\n/**\n * Split a shallow node (node without nested nodes inside) at a given text content position.\n *\n * @param node the shallow node to be split\n * @param at the position in textContent at which the split should occur\n */\nfunction splitShallowNode(node, at) {\n    var _a, _b;\n    const pre = node.cloneNode();\n    pre.textContent = (_a = node.textContent) === null || _a === void 0 ? void 0 : _a.slice(0, at);\n    const post = node.cloneNode();\n    post.textContent = (_b = node.textContent) === null || _b === void 0 ? void 0 : _b.slice(at);\n    return {\n        pre,\n        post\n    };\n}\n/**\n * Iterate over some nodes, while tracking cumulative start and end position.\n */\nfunction* nodeIter(nodes) {\n    var _a;\n    let start = 0;\n    let end;\n    for (let node of nodes) {\n        end = start + (((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.length) || 0);\n        yield {\n            node,\n            start,\n            end,\n            isText: node.nodeType === Node.TEXT_NODE\n        };\n        start = end;\n    }\n}\n/**\n * Align two collections of nodes.\n *\n * If a text node in one collections spans an element in the other, yield the spanned elements.\n * Otherwise, split the nodes such that yielded pair start and stop on the same position.\n */\nfunction* alignedNodes(a, b) {\n    var _a, _b;\n    let iterA = nodeIter(a);\n    let iterB = nodeIter(b);\n    let nA = iterA.next();\n    let nB = iterB.next();\n    while (!nA.done && !nB.done) {\n        let A = nA.value;\n        let B = nB.value;\n        if (A.isText && A.start <= B.start && A.end >= B.end) {\n            // A is a text element that spans all of B, simply yield B\n            yield [null, B.node];\n            nB = iterB.next();\n        }\n        else if (B.isText && B.start <= A.start && B.end >= A.end) {\n            // B is a text element that spans all of A, simply yield A\n            yield [A.node, null];\n            nA = iterA.next();\n        }\n        else {\n            // There is some intersection, split one, unless they match exactly\n            if (A.end === B.end && A.start === B.start) {\n                yield [A.node, B.node];\n                nA = iterA.next();\n                nB = iterB.next();\n            }\n            else if (A.end > B.end) {\n                /*\n                A |-----[======]---|\n                B |--[======]------|\n                            | <- Split A here\n                        | <- trim B to start from here if needed\n                */\n                let { pre, post } = splitShallowNode(A.node, B.end - A.start);\n                if (B.start < A.start) {\n                    // this node should not be yielded anywhere else, so ok to modify in-place\n                    B.node.textContent = (_a = B.node.textContent) === null || _a === void 0 ? void 0 : _a.slice(A.start - B.start);\n                }\n                yield [pre, B.node];\n                // Modify iteration result in-place:\n                A.node = post;\n                A.start = B.end;\n                nB = iterB.next();\n            }\n            else if (B.end > A.end) {\n                let { pre, post } = splitShallowNode(B.node, A.end - B.start);\n                if (A.start < B.start) {\n                    // this node should not be yielded anywhere else, so ok to modify in-place\n                    A.node.textContent = (_b = A.node.textContent) === null || _b === void 0 ? void 0 : _b.slice(B.start - A.start);\n                }\n                yield [A.node, pre];\n                // Modify iteration result in-place:\n                B.node = post;\n                B.start = A.end;\n                nA = iterA.next();\n            }\n            else {\n                throw new Error(`Unexpected intersection: ${JSON.stringify(A)} ${JSON.stringify(B)}`);\n            }\n        }\n    }\n}\n/**\n * Render text into a host node.\n *\n * @param options - The options for rendering.\n *\n * @returns A promise which resolves when rendering is complete.\n */\nfunction renderText(options) {\n    var _a, _b;\n    // Unpack the options.\n    const { host, sanitizer, source } = options;\n    // Create the HTML content.\n    const content = sanitizer.sanitize(Private.ansiSpan(source), {\n        allowedTags: ['span']\n    });\n    // Set the sanitized content for the host node.\n    const pre = document.createElement('pre');\n    pre.innerHTML = content;\n    const preTextContent = pre.textContent;\n    let ret;\n    if (preTextContent) {\n        // Note: only text nodes and span elements should be present after sanitization in the `<pre>` element.\n        const linkedNodes = ((_b = (_a = sanitizer.getAutolink) === null || _a === void 0 ? void 0 : _a.call(sanitizer)) !== null && _b !== void 0 ? _b : true)\n            ? autolink(preTextContent, {\n                checkWeb: true,\n                checkPaths: false\n            })\n            : [document.createTextNode(content)];\n        const preNodes = Array.from(pre.childNodes);\n        ret = mergeNodes(preNodes, linkedNodes);\n    }\n    else {\n        ret = document.createElement('pre');\n    }\n    host.appendChild(ret);\n    // Return the rendered promise.\n    return Promise.resolve(undefined);\n}\n/**\n * Render error into a host node.\n *\n * @param options - The options for rendering.\n *\n * @returns A promise which resolves when rendering is complete.\n */\nfunction renderError(options) {\n    var _a, _b;\n    // Unpack the options.\n    const { host, linkHandler, sanitizer, resolver, source } = options;\n    // Create the HTML content.\n    const content = sanitizer.sanitize(Private.ansiSpan(source), {\n        allowedTags: ['span']\n    });\n    // Set the sanitized content for the host node.\n    const pre = document.createElement('pre');\n    pre.innerHTML = content;\n    const preTextContent = pre.textContent;\n    let ret;\n    if (preTextContent) {\n        // Note: only text nodes and span elements should be present after sanitization in the `<pre>` element.\n        const linkedNodes = ((_b = (_a = sanitizer.getAutolink) === null || _a === void 0 ? void 0 : _a.call(sanitizer)) !== null && _b !== void 0 ? _b : true)\n            ? autolink(preTextContent, {\n                checkWeb: true,\n                checkPaths: true\n            })\n            : [document.createTextNode(content)];\n        const preNodes = Array.from(pre.childNodes);\n        ret = mergeNodes(preNodes, linkedNodes);\n    }\n    else {\n        ret = document.createElement('pre');\n    }\n    host.appendChild(ret);\n    // Patch the paths if a resolver is available.\n    let promise;\n    if (resolver) {\n        promise = Private.handlePaths(host, resolver, linkHandler);\n    }\n    else {\n        promise = Promise.resolve(undefined);\n    }\n    // Return the rendered promise.\n    return promise;\n}\n/**\n * Merge `<span>` nodes from a `<pre>` element with `<a>` nodes from linker.\n */\nfunction mergeNodes(preNodes, linkedNodes) {\n    const ret = document.createElement('pre');\n    let inAnchorElement = false;\n    const combinedNodes = [];\n    for (let nodes of alignedNodes(preNodes, linkedNodes)) {\n        if (!nodes[0]) {\n            combinedNodes.push(nodes[1]);\n            inAnchorElement = nodes[1].nodeType !== Node.TEXT_NODE;\n            continue;\n        }\n        else if (!nodes[1]) {\n            combinedNodes.push(nodes[0]);\n            inAnchorElement = false;\n            continue;\n        }\n        let [preNode, linkNode] = nodes;\n        const lastCombined = combinedNodes[combinedNodes.length - 1];\n        // If we are already in an anchor element and the anchor element did not change,\n        // we should insert the node from <pre> which is either Text node or coloured span Element\n        // into the anchor content as a child\n        if (inAnchorElement &&\n            linkNode.href ===\n                lastCombined.href) {\n            lastCombined.appendChild(preNode);\n        }\n        else {\n            // the `linkNode` is either Text or AnchorElement;\n            const isAnchor = linkNode.nodeType !== Node.TEXT_NODE;\n            // if we are NOT about to start an anchor element, just add the pre Node\n            if (!isAnchor) {\n                combinedNodes.push(preNode);\n                inAnchorElement = false;\n            }\n            else {\n                // otherwise start a new anchor; the contents of the `linkNode` and `preNode` should be the same,\n                // so we just put the neatly formatted `preNode` inside the anchor node (`linkNode`)\n                // and append that to combined nodes.\n                linkNode.textContent = '';\n                linkNode.appendChild(preNode);\n                combinedNodes.push(linkNode);\n                inAnchorElement = true;\n            }\n        }\n    }\n    // Do not reuse `pre` element. Clearing out previous children is too slow...\n    for (const child of combinedNodes) {\n        ret.appendChild(child);\n    }\n    return ret;\n}\n/**\n * The namespace for module implementation details.\n */\nvar Private;\n(function (Private) {\n    /**\n     * Eval the script tags contained in a host populated by `innerHTML`.\n     *\n     * When script tags are created via `innerHTML`, the browser does not\n     * evaluate them when they are added to the page. This function works\n     * around that by creating new equivalent script nodes manually, and\n     * replacing the originals.\n     */\n    function evalInnerHTMLScriptTags(host) {\n        // Create a snapshot of the current script nodes.\n        const scripts = Array.from(host.getElementsByTagName('script'));\n        // Loop over each script node.\n        for (const script of scripts) {\n            // Skip any scripts which no longer have a parent.\n            if (!script.parentNode) {\n                continue;\n            }\n            // Create a new script node which will be clone.\n            const clone = document.createElement('script');\n            // Copy the attributes into the clone.\n            const attrs = script.attributes;\n            for (let i = 0, n = attrs.length; i < n; ++i) {\n                const { name, value } = attrs[i];\n                clone.setAttribute(name, value);\n            }\n            // Copy the text content into the clone.\n            clone.textContent = script.textContent;\n            // Replace the old script in the parent.\n            script.parentNode.replaceChild(clone, script);\n        }\n    }\n    Private.evalInnerHTMLScriptTags = evalInnerHTMLScriptTags;\n    /**\n     * Handle the default behavior of nodes.\n     */\n    function handleDefaults(node, resolver) {\n        // Handle anchor elements.\n        const anchors = node.getElementsByTagName('a');\n        for (let i = 0; i < anchors.length; i++) {\n            const el = anchors[i];\n            // skip when processing a elements inside svg\n            // which are of type SVGAnimatedString\n            if (!(el instanceof HTMLAnchorElement)) {\n                continue;\n            }\n            const path = el.href;\n            const isLocal = resolver && resolver.isLocal\n                ? resolver.isLocal(path)\n                : _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.isLocal(path);\n            // set target attribute if not already present\n            if (!el.target) {\n                el.target = isLocal ? '_self' : '_blank';\n            }\n            // set rel as 'noopener' for non-local anchors\n            if (!isLocal) {\n                el.rel = 'noopener';\n            }\n        }\n        // Handle image elements.\n        const imgs = node.getElementsByTagName('img');\n        for (let i = 0; i < imgs.length; i++) {\n            if (!imgs[i].alt) {\n                imgs[i].alt = 'Image';\n            }\n        }\n    }\n    Private.handleDefaults = handleDefaults;\n    /**\n     * Resolve the relative urls in element `src` and `href` attributes.\n     *\n     * @param node - The head html element.\n     *\n     * @param resolver - A url resolver.\n     *\n     * @param linkHandler - An optional link handler for nodes.\n     *\n     * @returns a promise fulfilled when the relative urls have been resolved.\n     */\n    function handleUrls(node, resolver, linkHandler) {\n        // Set up an array to collect promises.\n        const promises = [];\n        // Handle HTML Elements with src attributes.\n        const nodes = node.querySelectorAll('*[src]');\n        for (let i = 0; i < nodes.length; i++) {\n            promises.push(handleAttr(nodes[i], 'src', resolver));\n        }\n        // Handle anchor elements.\n        const anchors = node.getElementsByTagName('a');\n        for (let i = 0; i < anchors.length; i++) {\n            promises.push(handleAnchor(anchors[i], resolver, linkHandler));\n        }\n        // Handle link elements.\n        const links = node.getElementsByTagName('link');\n        for (let i = 0; i < links.length; i++) {\n            promises.push(handleAttr(links[i], 'href', resolver));\n        }\n        // Wait on all promises.\n        return Promise.all(promises).then(() => undefined);\n    }\n    Private.handleUrls = handleUrls;\n    /**\n     * Resolve the paths in `<a>` elements `data` attributes.\n     *\n     * @param node - The head html element.\n     *\n     * @param resolver - A url resolver.\n     *\n     * @param linkHandler - An optional link handler for nodes.\n     *\n     * @returns a promise fulfilled when the relative urls have been resolved.\n     */\n    async function handlePaths(node, resolver, linkHandler) {\n        // Handle anchor elements.\n        const anchors = node.getElementsByTagName('a');\n        for (let i = 0; i < anchors.length; i++) {\n            await handlePathAnchor(anchors[i], resolver, linkHandler);\n        }\n    }\n    Private.handlePaths = handlePaths;\n    /**\n     * Apply ids to headers.\n     */\n    function headerAnchors(node) {\n        const headerNames = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n        for (const headerType of headerNames) {\n            const headers = node.getElementsByTagName(headerType);\n            for (let i = 0; i < headers.length; i++) {\n                const header = headers[i];\n                header.id = renderMarkdown.createHeaderId(header);\n                const anchor = document.createElement('a');\n                anchor.target = '_self';\n                anchor.textContent = '¶';\n                anchor.href = '#' + header.id;\n                anchor.classList.add('jp-InternalAnchorLink');\n                header.appendChild(anchor);\n            }\n        }\n    }\n    Private.headerAnchors = headerAnchors;\n    /**\n     * Handle a node with a `src` or `href` attribute.\n     */\n    async function handleAttr(node, name, resolver) {\n        const source = node.getAttribute(name) || '';\n        const isLocal = resolver.isLocal\n            ? resolver.isLocal(source)\n            : _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.isLocal(source);\n        if (!source || !isLocal) {\n            return;\n        }\n        try {\n            const urlPath = await resolver.resolveUrl(source);\n            let url = await resolver.getDownloadUrl(urlPath);\n            if (_jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.parse(url).protocol !== 'data:') {\n                // Bust caching for local src attrs.\n                // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n                url += (/\\?/.test(url) ? '&' : '?') + new Date().getTime();\n            }\n            node.setAttribute(name, url);\n        }\n        catch (err) {\n            // If there was an error getting the url,\n            // just make it an empty link and report the error.\n            node.setAttribute(name, '');\n            throw err;\n        }\n    }\n    /**\n     * Handle an anchor node.\n     */\n    function handleAnchor(anchor, resolver, linkHandler) {\n        // Get the link path without the location prepended.\n        // (e.g. \"./foo.md#Header 1\" vs \"http://localhost:8888/foo.md#Header 1\")\n        let href = anchor.getAttribute('href') || '';\n        const isLocal = resolver.isLocal\n            ? resolver.isLocal(href)\n            : _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.isLocal(href);\n        // Bail if it is not a file-like url.\n        if (!href || !isLocal) {\n            return Promise.resolve(undefined);\n        }\n        // Remove the hash until we can handle it.\n        const hash = anchor.hash;\n        if (hash) {\n            // Handle internal link in the file.\n            if (hash === href) {\n                anchor.target = '_self';\n                return Promise.resolve(undefined);\n            }\n            // For external links, remove the hash until we have hash handling.\n            href = href.replace(hash, '');\n        }\n        // Get the appropriate file path.\n        return resolver\n            .resolveUrl(href)\n            .then(urlPath => {\n            // decode encoded url from url to api path\n            const path = decodeURIComponent(urlPath);\n            // Handle the click override.\n            if (linkHandler) {\n                linkHandler.handleLink(anchor, path, hash);\n            }\n            // Get the appropriate file download path.\n            return resolver.getDownloadUrl(urlPath);\n        })\n            .then(url => {\n            // Set the visible anchor.\n            anchor.href = url + hash;\n        })\n            .catch(err => {\n            // If there was an error getting the url,\n            // just make it an empty link.\n            anchor.href = '';\n        });\n    }\n    /**\n     * Handle an anchor node.\n     */\n    async function handlePathAnchor(anchor, resolver, linkHandler) {\n        let path = anchor.dataset.path || '';\n        let locator = anchor.dataset.locator ? '#' + anchor.dataset.locator : '';\n        delete anchor.dataset.path;\n        delete anchor.dataset.locator;\n        const allowRoot = true;\n        const isLocal = resolver.isLocal\n            ? resolver.isLocal(path, allowRoot)\n            : _jupyterlab_coreutils__WEBPACK_IMPORTED_MODULE_0__.URLExt.isLocal(path, allowRoot);\n        // Bail if:\n        // - it is not a file-like url,\n        // - the resolver does not support paths\n        // - there is no link handler, or if it does not support paths\n        if (!path ||\n            !isLocal ||\n            !resolver.resolvePath ||\n            !linkHandler ||\n            !linkHandler.handlePath) {\n            anchor.replaceWith(...anchor.childNodes);\n            return Promise.resolve(undefined);\n        }\n        try {\n            // Find given path\n            const resolution = await resolver.resolvePath(path);\n            if (!resolution) {\n                // Bail if the file does not exist\n                console.log('Path resolution bailing: does not exist');\n                return Promise.resolve(undefined);\n            }\n            // Handle the click override.\n            linkHandler.handlePath(anchor, resolution.path, resolution.scope, locator);\n            // Set the visible anchor.\n            anchor.href = resolution.path + locator;\n        }\n        catch (err) {\n            // If there was an error getting the url,\n            // just make it an empty link.\n            console.warn('Path anchor error:', err);\n            anchor.href = '#linking-failed-see-console';\n        }\n    }\n    const ANSI_COLORS = [\n        'ansi-black',\n        'ansi-red',\n        'ansi-green',\n        'ansi-yellow',\n        'ansi-blue',\n        'ansi-magenta',\n        'ansi-cyan',\n        'ansi-white',\n        'ansi-black-intense',\n        'ansi-red-intense',\n        'ansi-green-intense',\n        'ansi-yellow-intense',\n        'ansi-blue-intense',\n        'ansi-magenta-intense',\n        'ansi-cyan-intense',\n        'ansi-white-intense'\n    ];\n    /**\n     * Create HTML tags for a string with given foreground, background etc. and\n     * add them to the `out` array.\n     */\n    function pushColoredChunk(chunk, fg, bg, bold, underline, inverse, out) {\n        if (chunk) {\n            const classes = [];\n            const styles = [];\n            if (bold && typeof fg === 'number' && 0 <= fg && fg < 8) {\n                fg += 8; // Bold text uses \"intense\" colors\n            }\n            if (inverse) {\n                [fg, bg] = [bg, fg];\n            }\n            if (typeof fg === 'number') {\n                classes.push(ANSI_COLORS[fg] + '-fg');\n            }\n            else if (fg.length) {\n                styles.push(`color: rgb(${fg})`);\n            }\n            else if (inverse) {\n                classes.push('ansi-default-inverse-fg');\n            }\n            if (typeof bg === 'number') {\n                classes.push(ANSI_COLORS[bg] + '-bg');\n            }\n            else if (bg.length) {\n                styles.push(`background-color: rgb(${bg})`);\n            }\n            else if (inverse) {\n                classes.push('ansi-default-inverse-bg');\n            }\n            if (bold) {\n                classes.push('ansi-bold');\n            }\n            if (underline) {\n                classes.push('ansi-underline');\n            }\n            if (classes.length || styles.length) {\n                out.push('<span');\n                if (classes.length) {\n                    out.push(` class=\"${classes.join(' ')}\"`);\n                }\n                if (styles.length) {\n                    out.push(` style=\"${styles.join('; ')}\"`);\n                }\n                out.push('>');\n                out.push(chunk);\n                out.push('</span>');\n            }\n            else {\n                out.push(chunk);\n            }\n        }\n    }\n    /**\n     * Convert ANSI extended colors to R/G/B triple.\n     */\n    function getExtendedColors(numbers) {\n        let r;\n        let g;\n        let b;\n        const n = numbers.shift();\n        if (n === 2 && numbers.length >= 3) {\n            // 24-bit RGB\n            r = numbers.shift();\n            g = numbers.shift();\n            b = numbers.shift();\n            if ([r, g, b].some(c => c < 0 || 255 < c)) {\n                throw new RangeError('Invalid range for RGB colors');\n            }\n        }\n        else if (n === 5 && numbers.length >= 1) {\n            // 256 colors\n            const idx = numbers.shift();\n            if (idx < 0) {\n                throw new RangeError('Color index must be >= 0');\n            }\n            else if (idx < 16) {\n                // 16 default terminal colors\n                return idx;\n            }\n            else if (idx < 232) {\n                // 6x6x6 color cube, see https://stackoverflow.com/a/27165165/500098\n                r = Math.floor((idx - 16) / 36);\n                r = r > 0 ? 55 + r * 40 : 0;\n                g = Math.floor(((idx - 16) % 36) / 6);\n                g = g > 0 ? 55 + g * 40 : 0;\n                b = (idx - 16) % 6;\n                b = b > 0 ? 55 + b * 40 : 0;\n            }\n            else if (idx < 256) {\n                // grayscale, see https://stackoverflow.com/a/27165165/500098\n                r = g = b = (idx - 232) * 10 + 8;\n            }\n            else {\n                throw new RangeError('Color index must be < 256');\n            }\n        }\n        else {\n            throw new RangeError('Invalid extended color specification');\n        }\n        return [r, g, b];\n    }\n    /**\n     * Transform ANSI color escape codes into HTML <span> tags with CSS\n     * classes such as \"ansi-green-intense-fg\".\n     * The actual colors used are set in the CSS file.\n     * This also removes non-color escape sequences.\n     * This is supposed to have the same behavior as nbconvert.filters.ansi2html()\n     */\n    function ansiSpan(str) {\n        const ansiRe = /\\x1b\\[(.*?)([@-~])/g; // eslint-disable-line no-control-regex\n        let fg = [];\n        let bg = [];\n        let bold = false;\n        let underline = false;\n        let inverse = false;\n        let match;\n        const out = [];\n        const numbers = [];\n        let start = 0;\n        str = lodash_escape__WEBPACK_IMPORTED_MODULE_2___default()(str);\n        str += '\\x1b[m'; // Ensure markup for trailing text\n        // tslint:disable-next-line\n        while ((match = ansiRe.exec(str))) {\n            if (match[2] === 'm') {\n                const items = match[1].split(';');\n                for (let i = 0; i < items.length; i++) {\n                    const item = items[i];\n                    if (item === '') {\n                        numbers.push(0);\n                    }\n                    else if (item.search(/^\\d+$/) !== -1) {\n                        numbers.push(parseInt(item, 10));\n                    }\n                    else {\n                        // Ignored: Invalid color specification\n                        numbers.length = 0;\n                        break;\n                    }\n                }\n            }\n            else {\n                // Ignored: Not a color code\n            }\n            const chunk = str.substring(start, match.index);\n            pushColoredChunk(chunk, fg, bg, bold, underline, inverse, out);\n            start = ansiRe.lastIndex;\n            while (numbers.length) {\n                const n = numbers.shift();\n                switch (n) {\n                    case 0:\n                        fg = bg = [];\n                        bold = false;\n                        underline = false;\n                        inverse = false;\n                        break;\n                    case 1:\n                    case 5:\n                        bold = true;\n                        break;\n                    case 4:\n                        underline = true;\n                        break;\n                    case 7:\n                        inverse = true;\n                        break;\n                    case 21:\n                    case 22:\n                        bold = false;\n                        break;\n                    case 24:\n                        underline = false;\n                        break;\n                    case 27:\n                        inverse = false;\n                        break;\n                    case 30:\n                    case 31:\n                    case 32:\n                    case 33:\n                    case 34:\n                    case 35:\n                    case 36:\n                    case 37:\n                        fg = n - 30;\n                        break;\n                    case 38:\n                        try {\n                            fg = getExtendedColors(numbers);\n                        }\n                        catch (e) {\n                            numbers.length = 0;\n                        }\n                        break;\n                    case 39:\n                        fg = [];\n                        break;\n                    case 40:\n                    case 41:\n                    case 42:\n                    case 43:\n                    case 44:\n                    case 45:\n                    case 46:\n                    case 47:\n                        bg = n - 40;\n                        break;\n                    case 48:\n                        try {\n                            bg = getExtendedColors(numbers);\n                        }\n                        catch (e) {\n                            numbers.length = 0;\n                        }\n                        break;\n                    case 49:\n                        bg = [];\n                        break;\n                    case 90:\n                    case 91:\n                    case 92:\n                    case 93:\n                    case 94:\n                    case 95:\n                    case 96:\n                    case 97:\n                        fg = n - 90 + 8;\n                        break;\n                    case 100:\n                    case 101:\n                    case 102:\n                    case 103:\n                    case 104:\n                    case 105:\n                    case 106:\n                    case 107:\n                        bg = n - 100 + 8;\n                        break;\n                    default:\n                    // Unknown codes are ignored\n                }\n            }\n        }\n        return out.join('');\n    }\n    Private.ansiSpan = ansiSpan;\n})(Private || (Private = {}));\n//# sourceMappingURL=renderers.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/renderers.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/tokens.js":
/*!************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/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 */   ILatexTypesetter: () => (/* binding */ ILatexTypesetter),\n/* harmony export */   IMarkdownParser: () => (/* binding */ IMarkdownParser),\n/* harmony export */   IRenderMimeRegistry: () => (/* binding */ IRenderMimeRegistry)\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/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team.\n| Distributed under the terms of the Modified BSD License.\n|----------------------------------------------------------------------------*/\n\n/**\n * The rendermime token.\n */\nconst IRenderMimeRegistry = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/rendermime:IRenderMimeRegistry', 'A service for the rendermime registry for the application. Use this to create renderers for various mime-types in your extension. Many times it will be easier to create a \"mime renderer extension\" rather than using this service directly.');\n/**\n * The latex typesetter token.\n */\nconst ILatexTypesetter = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/rendermime:ILatexTypesetter', 'A service for the LaTeX typesetter for the application. Use this if you want to typeset math in your extension.');\n/**\n * The markdown parser token.\n */\nconst IMarkdownParser = new _lumino_coreutils__WEBPACK_IMPORTED_MODULE_0__.Token('@jupyterlab/rendermime:IMarkdownParser', 'A service for rendering markdown syntax as HTML content.');\n//# sourceMappingURL=tokens.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/tokens.js?");

/***/ }),

/***/ "../node_modules/@jupyterlab/rendermime/lib/widgets.js":
/*!*************************************************************!*\
  !*** ../node_modules/@jupyterlab/rendermime/lib/widgets.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 */   RenderedCommon: () => (/* binding */ RenderedCommon),\n/* harmony export */   RenderedError: () => (/* binding */ RenderedError),\n/* harmony export */   RenderedHTML: () => (/* binding */ RenderedHTML),\n/* harmony export */   RenderedHTMLCommon: () => (/* binding */ RenderedHTMLCommon),\n/* harmony export */   RenderedImage: () => (/* binding */ RenderedImage),\n/* harmony export */   RenderedJavaScript: () => (/* binding */ RenderedJavaScript),\n/* harmony export */   RenderedLatex: () => (/* binding */ RenderedLatex),\n/* harmony export */   RenderedMarkdown: () => (/* binding */ RenderedMarkdown),\n/* harmony export */   RenderedSVG: () => (/* binding */ RenderedSVG),\n/* harmony export */   RenderedText: () => (/* binding */ RenderedText)\n/* harmony export */ });\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @jupyterlab/translation */ \"webpack/sharing/consume/default/@jupyterlab/translation/@jupyterlab/translation\");\n/* harmony import */ var _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @lumino/widgets */ \"webpack/sharing/consume/default/@lumino/widgets/@lumino/widgets\");\n/* harmony import */ var _lumino_widgets__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_lumino_widgets__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _renderers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./renderers */ \"../node_modules/@jupyterlab/rendermime/lib/renderers.js\");\n\n\n\n/**\n * A common base class for mime renderers.\n */\nclass RenderedCommon extends _lumino_widgets__WEBPACK_IMPORTED_MODULE_1__.Widget {\n    /**\n     * Construct a new rendered common widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        var _a, _b;\n        super();\n        this.mimeType = options.mimeType;\n        this.sanitizer = options.sanitizer;\n        this.resolver = options.resolver;\n        this.linkHandler = options.linkHandler;\n        this.translator = (_a = options.translator) !== null && _a !== void 0 ? _a : _jupyterlab_translation__WEBPACK_IMPORTED_MODULE_0__.nullTranslator;\n        this.latexTypesetter = options.latexTypesetter;\n        this.markdownParser = (_b = options.markdownParser) !== null && _b !== void 0 ? _b : null;\n        this.node.dataset['mimeType'] = this.mimeType;\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @param keepExisting - Whether to keep the existing rendering.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     *\n     * #### Notes\n     * By default, if the DOM node for this widget already has content, it\n     * is emptied before rendering. Subclasses that do not want this behavior\n     * (if, for instance, they are using DOM diffing), should override this\n     * method or call `super.renderModel(model, true)`.\n     */\n    async renderModel(model, keepExisting) {\n        // TODO compare model against old model for early bail?\n        // Empty any existing content in the node from previous renders\n        if (!keepExisting) {\n            while (this.node.firstChild) {\n                this.node.removeChild(this.node.firstChild);\n            }\n        }\n        // Toggle the trusted class on the widget.\n        this.toggleClass('jp-mod-trusted', model.trusted);\n        // Render the actual content.\n        await this.render(model);\n        // Handle the fragment identifier if given.\n        const { fragment } = model.metadata;\n        if (fragment) {\n            this.setFragment(fragment);\n        }\n    }\n    /**\n     * Set the URI fragment identifier.\n     *\n     * @param fragment - The URI fragment identifier.\n     */\n    setFragment(fragment) {\n        /* no-op */\n    }\n}\n/**\n * A common base class for HTML mime renderers.\n */\nclass RenderedHTMLCommon extends RenderedCommon {\n    /**\n     * Construct a new rendered HTML common widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        this.addClass('jp-RenderedHTMLCommon');\n    }\n    setFragment(fragment) {\n        let el;\n        try {\n            el = this.node.querySelector(fragment.startsWith('#')\n                ? `#${CSS.escape(fragment.slice(1))}`\n                : fragment);\n        }\n        catch (error) {\n            console.warn('Unable to set URI fragment identifier.', error);\n        }\n        if (el) {\n            el.scrollIntoView();\n        }\n    }\n}\n/**\n * A mime renderer for displaying HTML and math.\n */\nclass RenderedHTML extends RenderedHTMLCommon {\n    /**\n     * Construct a new rendered HTML widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        // A promise which resolves when most recent rendering is complete.\n        this._rendered = Promise.resolve();\n        this.addClass('jp-RenderedHTML');\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    render(model) {\n        return (this._rendered = _renderers__WEBPACK_IMPORTED_MODULE_2__.renderHTML({\n            host: this.node,\n            source: String(model.data[this.mimeType]),\n            trusted: model.trusted,\n            resolver: this.resolver,\n            sanitizer: this.sanitizer,\n            linkHandler: this.linkHandler,\n            shouldTypeset: this.isAttached,\n            latexTypesetter: this.latexTypesetter,\n            translator: this.translator\n        }));\n    }\n    /**\n     * A message handler invoked on an `'after-attach'` message.\n     */\n    onAfterAttach(msg) {\n        this._rendered\n            .then(() => {\n            if (this.latexTypesetter) {\n                this.latexTypesetter.typeset(this.node);\n            }\n        })\n            .catch(console.warn);\n    }\n}\n/**\n * A mime renderer for displaying LaTeX output.\n */\nclass RenderedLatex extends RenderedCommon {\n    /**\n     * Construct a new rendered LaTeX widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        // A promise which resolves when most recent rendering is complete.\n        this._rendered = Promise.resolve();\n        this.addClass('jp-RenderedLatex');\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    render(model) {\n        return (this._rendered = _renderers__WEBPACK_IMPORTED_MODULE_2__.renderLatex({\n            host: this.node,\n            source: String(model.data[this.mimeType]),\n            shouldTypeset: this.isAttached,\n            latexTypesetter: this.latexTypesetter\n        }));\n    }\n    /**\n     * A message handler invoked on an `'after-attach'` message.\n     */\n    onAfterAttach(msg) {\n        this._rendered\n            .then(() => {\n            if (this.latexTypesetter) {\n                this.latexTypesetter.typeset(this.node);\n            }\n        })\n            .catch(console.warn);\n    }\n}\n/**\n * A mime renderer for displaying images.\n */\nclass RenderedImage extends RenderedCommon {\n    /**\n     * Construct a new rendered image widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        this.addClass('jp-RenderedImage');\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    render(model) {\n        const metadata = model.metadata[this.mimeType];\n        return _renderers__WEBPACK_IMPORTED_MODULE_2__.renderImage({\n            host: this.node,\n            mimeType: this.mimeType,\n            source: String(model.data[this.mimeType]),\n            width: metadata && metadata.width,\n            height: metadata && metadata.height,\n            needsBackground: model.metadata['needs_background'],\n            unconfined: metadata && metadata.unconfined\n        });\n    }\n}\n/**\n * A mime renderer for displaying Markdown with embedded latex.\n */\nclass RenderedMarkdown extends RenderedHTMLCommon {\n    /**\n     * Construct a new rendered markdown widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        // A promise which resolves when most recent rendering is complete.\n        this._rendered = Promise.resolve();\n        this.addClass('jp-RenderedMarkdown');\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    render(model) {\n        return (this._rendered = _renderers__WEBPACK_IMPORTED_MODULE_2__.renderMarkdown({\n            host: this.node,\n            source: String(model.data[this.mimeType]),\n            trusted: model.trusted,\n            resolver: this.resolver,\n            sanitizer: this.sanitizer,\n            linkHandler: this.linkHandler,\n            shouldTypeset: this.isAttached,\n            latexTypesetter: this.latexTypesetter,\n            markdownParser: this.markdownParser,\n            translator: this.translator\n        }));\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    async renderModel(model) {\n        await super.renderModel(model, true);\n    }\n    /**\n     * A message handler invoked on an `'after-attach'` message.\n     */\n    onAfterAttach(msg) {\n        this._rendered\n            .then(() => {\n            if (this.latexTypesetter) {\n                this.latexTypesetter.typeset(this.node);\n            }\n        })\n            .catch(console.warn);\n    }\n}\n/**\n * A widget for displaying SVG content.\n */\nclass RenderedSVG extends RenderedCommon {\n    /**\n     * Construct a new rendered SVG widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        // A promise which resolves when most recent rendering is complete.\n        this._rendered = Promise.resolve();\n        this.addClass('jp-RenderedSVG');\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    render(model) {\n        const metadata = model.metadata[this.mimeType];\n        return (this._rendered = _renderers__WEBPACK_IMPORTED_MODULE_2__.renderSVG({\n            host: this.node,\n            source: String(model.data[this.mimeType]),\n            trusted: model.trusted,\n            unconfined: metadata && metadata.unconfined,\n            translator: this.translator\n        }));\n    }\n    /**\n     * A message handler invoked on an `'after-attach'` message.\n     */\n    onAfterAttach(msg) {\n        this._rendered\n            .then(() => {\n            if (this.latexTypesetter) {\n                this.latexTypesetter.typeset(this.node);\n            }\n        })\n            .catch(console.warn);\n    }\n}\n/**\n * A widget for displaying plain text and console text.\n */\nclass RenderedText extends RenderedCommon {\n    /**\n     * Construct a new rendered text widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        this.addClass('jp-RenderedText');\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    render(model) {\n        return _renderers__WEBPACK_IMPORTED_MODULE_2__.renderText({\n            host: this.node,\n            sanitizer: this.sanitizer,\n            source: String(model.data[this.mimeType]),\n            translator: this.translator\n        });\n    }\n}\nclass RenderedError extends RenderedCommon {\n    constructor(options) {\n        super(options);\n        this.addClass('jp-RenderedText');\n    }\n    render(model) {\n        return _renderers__WEBPACK_IMPORTED_MODULE_2__.renderError({\n            host: this.node,\n            sanitizer: this.sanitizer,\n            source: String(model.data[this.mimeType]),\n            linkHandler: this.linkHandler,\n            resolver: this.resolver,\n            translator: this.translator\n        });\n    }\n}\n/**\n * A widget for displaying JavaScript output.\n */\nclass RenderedJavaScript extends RenderedCommon {\n    /**\n     * Construct a new rendered text widget.\n     *\n     * @param options - The options for initializing the widget.\n     */\n    constructor(options) {\n        super(options);\n        this.addClass('jp-RenderedJavaScript');\n    }\n    /**\n     * Render a mime model.\n     *\n     * @param model - The mime model to render.\n     *\n     * @returns A promise which resolves when rendering is complete.\n     */\n    render(model) {\n        const trans = this.translator.load('jupyterlab');\n        return _renderers__WEBPACK_IMPORTED_MODULE_2__.renderText({\n            host: this.node,\n            sanitizer: this.sanitizer,\n            source: trans.__('JavaScript output is disabled in JupyterLab'),\n            translator: this.translator\n        });\n    }\n}\n//# sourceMappingURL=widgets.js.map\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/@jupyterlab/rendermime/lib/widgets.js?");

/***/ }),

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

eval("/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.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 references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"'`]/g,\n    reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '`': '&#96;'\n};\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/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\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 && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or 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 a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', \"'\", and \"\\`\" in `string` to\n * their corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * Backticks are escaped because in IE < 9, they can break out of\n * attribute values or HTML comments. See [#59](https://html5sec.org/#59),\n * [#102](https://html5sec.org/#102), [#108](https://html5sec.org/#108), and\n * [#133](https://html5sec.org/#133) of the\n * [HTML5 Security Cheatsheet](https://html5sec.org/) for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, &amp; pebbles'\n */\nfunction escape(string) {\n  string = toString(string);\n  return (string && reHasUnescapedHtml.test(string))\n    ? string.replace(reUnescapedHtml, escapeHtmlChar)\n    : string;\n}\n\nmodule.exports = escape;\n\n\n//# sourceURL=webpack://_JUPYTERLAB.CORE_OUTPUT/../node_modules/lodash.escape/index.js?");

/***/ })

}]);