mirror of
https://github.com/open-webui/open-webui
synced 2024-11-06 08:56:39 +00:00
8 lines
68 KiB
Plaintext
8 lines
68 KiB
Plaintext
{
|
|
"version": 3,
|
|
"sources": ["../src/js/node_modules/stackframe/stackframe.js", "../src/js/node_modules/error-stack-parser/error-stack-parser.js", "../src/js/pyodide.umd.ts", "../src/js/compat.ts", "../src/js/environments.ts", "../src/js/nativefs.ts", "../src/js/module.ts", "../src/js/version.ts", "../src/js/pyodide.ts"],
|
|
"sourcesContent": ["(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n", "(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n", "import { loadPyodide, version } from \"./pyodide\";\nimport { type PackageData } from \"./load-package\";\nexport { loadPyodide, version, type PackageData };\n(globalThis as any).loadPyodide = loadPyodide;\n", "import ErrorStackParser from \"error-stack-parser\";\nimport {\n IN_NODE,\n IN_NODE_ESM,\n IN_BROWSER_MAIN_THREAD,\n IN_BROWSER_WEB_WORKER,\n IN_NODE_COMMONJS,\n} from \"./environments\";\n\nlet nodeUrlMod: any;\nlet nodeFetch: any;\nlet nodePath: any;\nlet nodeVmMod: any;\n/** @private */\nexport let nodeFsPromisesMod: any;\n\ndeclare var globalThis: {\n importScripts: (url: string) => void;\n document?: any;\n fetch?: any;\n};\n\nconst FETCH_NOT_FOUND_MSG = `\\\n\"fetch\" is not defined, maybe you're using node < 18? \\\nFrom Pyodide >= 0.25.0, node >= 18 is required. \\\nOlder versions of Node.js may work, but it is not guaranteed or supported. \\\nFalling back to \"node-fetch\".\\\n`;\n\n/**\n * If we're in node, it's most convenient to import various node modules on\n * initialization. Otherwise, this does nothing.\n * @private\n */\nexport async function initNodeModules() {\n if (!IN_NODE) {\n return;\n }\n // @ts-ignore\n nodeUrlMod = (await import(\"url\")).default;\n nodeFsPromisesMod = await import(\"fs/promises\");\n if (globalThis.fetch) {\n nodeFetch = fetch;\n } else {\n // @ts-ignore\n console.warn(FETCH_NOT_FOUND_MSG);\n // @ts-ignore\n nodeFetch = (await import(\"node-fetch\")).default;\n }\n // @ts-ignore\n nodeVmMod = (await import(\"vm\")).default;\n nodePath = await import(\"path\");\n pathSep = nodePath.sep;\n\n // Emscripten uses `require`, so if it's missing (because we were imported as\n // an ES6 module) we need to polyfill `require` with `import`. `import` is\n // async and `require` is synchronous, so we import all packages that might be\n // required up front and define require to look them up in this table.\n\n if (typeof require !== \"undefined\") {\n return;\n }\n // These are all the packages required in pyodide.asm.js. You can get this\n // list with:\n // $ grep -o 'require(\"[a-z]*\")' pyodide.asm.js | sort -u\n const fs = await import(\"fs\");\n const crypto = await import(\"crypto\");\n const ws = await import(\"ws\");\n const child_process = await import(\"child_process\");\n const node_modules: { [mode: string]: any } = {\n fs,\n crypto,\n ws,\n child_process,\n };\n // Since we're in an ES6 module, this is only modifying the module namespace,\n // it's still private to Pyodide.\n (globalThis as any).require = function (mod: string): any {\n return node_modules[mod];\n };\n}\n\nfunction node_resolvePath(path: string, base?: string): string {\n return nodePath.resolve(base || \".\", path);\n}\n\nfunction browser_resolvePath(path: string, base?: string): string {\n if (base === undefined) {\n // @ts-ignore\n base = location;\n }\n return new URL(path, base).toString();\n}\n\nexport let resolvePath: (rest: string, base?: string) => string;\nif (IN_NODE) {\n resolvePath = node_resolvePath;\n} else {\n resolvePath = browser_resolvePath;\n}\n\n/**\n * Get the path separator. If we are on Linux or in the browser, it's /.\n * In Windows, it's \\.\n * @private\n */\nexport let pathSep: string;\n\nif (!IN_NODE) {\n pathSep = \"/\";\n}\n\n/**\n * Load a binary file, only for use in Node. If the path explicitly is a URL,\n * then fetch from a URL, else load from the file system.\n * @param indexURL base path to resolve relative paths\n * @param path the path to load\n * @param checksum sha-256 checksum of the package\n * @returns An ArrayBuffer containing the binary data\n * @private\n */\nfunction node_getBinaryResponse(\n path: string,\n _file_sub_resource_hash?: string | undefined, // Ignoring sub resource hash. See issue-2431.\n):\n | { response: Promise<Response>; binary?: undefined }\n | { binary: Promise<Uint8Array> } {\n if (path.startsWith(\"file://\")) {\n // handle file:// with filesystem operations rather than with fetch.\n path = path.slice(\"file://\".length);\n }\n if (path.includes(\"://\")) {\n // If it has a protocol, make a fetch request\n return { response: nodeFetch(path) };\n } else {\n // Otherwise get it from the file system\n return {\n binary: nodeFsPromisesMod\n .readFile(path)\n .then(\n (data: Buffer) =>\n new Uint8Array(data.buffer, data.byteOffset, data.byteLength),\n ),\n };\n }\n}\n\n/**\n * Load a binary file, only for use in browser. Resolves relative paths against\n * indexURL.\n *\n * @param path the path to load\n * @param subResourceHash the sub resource hash for fetch() integrity check\n * @returns A Uint8Array containing the binary data\n * @private\n */\nfunction browser_getBinaryResponse(\n path: string,\n subResourceHash: string | undefined,\n): { response: Promise<Response>; binary?: undefined } {\n const url = new URL(path, location as unknown as URL);\n let options = subResourceHash ? { integrity: subResourceHash } : {};\n return { response: fetch(url, options) };\n}\n\n/** @private */\nexport let getBinaryResponse: (\n path: string,\n file_sub_resource_hash?: string | undefined,\n) =>\n | { response: Promise<Response>; binary?: undefined }\n | { response?: undefined; binary: Promise<Uint8Array> };\nif (IN_NODE) {\n getBinaryResponse = node_getBinaryResponse;\n} else {\n getBinaryResponse = browser_getBinaryResponse;\n}\n\nexport async function loadBinaryFile(\n path: string,\n file_sub_resource_hash?: string | undefined,\n): Promise<Uint8Array> {\n const { response, binary } = getBinaryResponse(path, file_sub_resource_hash);\n if (binary) {\n return binary;\n }\n const r = await response;\n if (!r.ok) {\n throw new Error(`Failed to load '${path}': request failed.`);\n }\n return new Uint8Array(await r.arrayBuffer());\n}\n\n/**\n * Currently loadScript is only used once to load `pyodide.asm.js`.\n * @param url\n * @async\n * @private\n */\nexport let loadScript: (url: string) => Promise<void>;\n\nif (IN_BROWSER_MAIN_THREAD) {\n // browser\n loadScript = async (url) => await import(/* webpackIgnore: true */ url);\n} else if (IN_BROWSER_WEB_WORKER) {\n // webworker\n loadScript = async (url) => {\n try {\n // use importScripts in classic web worker\n globalThis.importScripts(url);\n } catch (e) {\n // importScripts throws TypeError in a module type web worker, use import instead\n if (e instanceof TypeError) {\n await import(/* webpackIgnore: true */ url);\n } else {\n throw e;\n }\n }\n };\n} else if (IN_NODE) {\n loadScript = nodeLoadScript;\n} else {\n throw new Error(\"Cannot determine runtime environment\");\n}\n\n/**\n * Load a text file and executes it as Javascript\n * @param url The path to load. May be a url or a relative file system path.\n * @private\n */\nasync function nodeLoadScript(url: string) {\n if (url.startsWith(\"file://\")) {\n // handle file:// with filesystem operations rather than with fetch.\n url = url.slice(\"file://\".length);\n }\n if (url.includes(\"://\")) {\n // If it's a url, load it with fetch then eval it.\n nodeVmMod.runInThisContext(await (await nodeFetch(url)).text());\n } else {\n // Otherwise, hopefully it is a relative path we can load from the file\n // system.\n await import(/* webpackIgnore: true */ nodeUrlMod.pathToFileURL(url).href);\n }\n}\n\n// consider dropping this this once we drop support for node 14?\nfunction nodeBase16ToBase64(b16: string): string {\n return Buffer.from(b16, \"hex\").toString(\"base64\");\n}\n\nfunction browserBase16ToBase64(b16: string): string {\n return btoa(\n b16\n .match(/\\w{2}/g)!\n .map(function (a) {\n return String.fromCharCode(parseInt(a, 16));\n })\n .join(\"\"),\n );\n}\n\nexport const base16ToBase64 = IN_NODE\n ? nodeBase16ToBase64\n : browserBase16ToBase64;\n\nexport async function loadLockFile(lockFileURL: string): Promise<any> {\n if (IN_NODE) {\n await initNodeModules();\n const package_string = await nodeFsPromisesMod.readFile(lockFileURL);\n return JSON.parse(package_string);\n } else {\n let response = await fetch(lockFileURL);\n return await response.json();\n }\n}\n\n/**\n * Calculate the directory name of the current module.\n * This is used to guess the indexURL when it is not provided.\n */\nexport async function calculateDirname(): Promise<string> {\n if (IN_NODE_COMMONJS) {\n return __dirname;\n }\n\n let err: Error;\n try {\n throw new Error();\n } catch (e) {\n err = e as Error;\n }\n let fileName = ErrorStackParser.parse(err)[0].fileName!;\n\n if (IN_NODE_ESM) {\n const nodePath = await import(\"path\");\n const nodeUrl = await import(\"url\");\n\n // FIXME: We would like to use import.meta.url here,\n // but mocha seems to mess with compiling typescript files to ES6.\n return nodeUrl.fileURLToPath(nodePath.dirname(fileName));\n }\n\n const indexOfLastSlash = fileName.lastIndexOf(pathSep);\n if (indexOfLastSlash === -1) {\n throw new Error(\n \"Could not extract indexURL path from pyodide module location\",\n );\n }\n return fileName.slice(0, indexOfLastSlash);\n}\n", "// @ts-nocheck\n\n/** @private */\nexport const IN_NODE =\n typeof process === \"object\" &&\n typeof process.versions === \"object\" &&\n typeof process.versions.node === \"string\" &&\n typeof process.browser ===\n \"undefined\"; /* This last condition checks if we run the browser shim of process */\n\n/** @private */\nexport const IN_NODE_COMMONJS =\n IN_NODE &&\n typeof module !== \"undefined\" &&\n typeof module.exports !== \"undefined\" &&\n typeof require !== \"undefined\" &&\n typeof __dirname !== \"undefined\";\n\n/** @private */\nexport const IN_NODE_ESM = IN_NODE && !IN_NODE_COMMONJS;\n\n/** @private */\nexport const IN_DENO = typeof Deno !== \"undefined\"; // just in case...\n\n/** @private */\nexport const IN_BROWSER = !IN_NODE && !IN_DENO;\n\n/** @private */\nexport const IN_BROWSER_MAIN_THREAD =\n IN_BROWSER &&\n typeof window !== \"undefined\" &&\n typeof document !== \"undefined\" &&\n typeof document.createElement !== \"undefined\" &&\n typeof sessionStorage !== \"undefined\";\n\n/** @private */\nexport const IN_BROWSER_WEB_WORKER =\n IN_BROWSER &&\n typeof importScripts !== \"undefined\" &&\n typeof self !== \"undefined\";\n", "import { Module } from \"./types\";\n\n/**\n * @private\n */\nexport function initializeNativeFS(module: Module) {\n const FS = module.FS;\n const MEMFS = module.FS.filesystems.MEMFS;\n const PATH = module.PATH;\n\n const nativeFSAsync = {\n // DIR_MODE: {{{ cDefine('S_IFDIR') }}} | 511 /* 0777 */,\n // FILE_MODE: {{{ cDefine('S_IFREG') }}} | 511 /* 0777 */,\n DIR_MODE: 16384 | 511,\n FILE_MODE: 32768 | 511,\n mount: function (mount: any) {\n if (!mount.opts.fileSystemHandle) {\n throw new Error(\"opts.fileSystemHandle is required\");\n }\n\n // reuse all of the core MEMFS functionality\n return MEMFS.mount.apply(null, arguments);\n },\n syncfs: async (mount: any, populate: Boolean, callback: Function) => {\n try {\n const local = nativeFSAsync.getLocalSet(mount);\n const remote = await nativeFSAsync.getRemoteSet(mount);\n const src = populate ? remote : local;\n const dst = populate ? local : remote;\n await nativeFSAsync.reconcile(mount, src, dst);\n callback(null);\n } catch (e) {\n callback(e);\n }\n },\n // Returns file set of emscripten's filesystem at the mountpoint.\n getLocalSet: (mount: any) => {\n let entries = Object.create(null);\n\n function isRealDir(p: string) {\n return p !== \".\" && p !== \"..\";\n }\n\n function toAbsolute(root: string) {\n return (p: string) => {\n return PATH.join2(root, p);\n };\n }\n\n let check = FS.readdir(mount.mountpoint)\n .filter(isRealDir)\n .map(toAbsolute(mount.mountpoint));\n\n while (check.length) {\n let path = check.pop();\n let stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n check.push.apply(\n check,\n FS.readdir(path).filter(isRealDir).map(toAbsolute(path)),\n );\n }\n\n entries[path] = { timestamp: stat.mtime, mode: stat.mode };\n }\n\n return { type: \"local\", entries: entries };\n },\n // Returns file set of the real, on-disk filesystem at the mountpoint.\n getRemoteSet: async (mount: any) => {\n // TODO: this should be a map.\n const entries = Object.create(null);\n\n const handles = await getFsHandles(mount.opts.fileSystemHandle);\n for (const [path, handle] of handles) {\n if (path === \".\") continue;\n\n entries[PATH.join2(mount.mountpoint, path)] = {\n timestamp:\n handle.kind === \"file\"\n ? (await handle.getFile()).lastModifiedDate\n : new Date(),\n mode:\n handle.kind === \"file\"\n ? nativeFSAsync.FILE_MODE\n : nativeFSAsync.DIR_MODE,\n };\n }\n\n return { type: \"remote\", entries, handles };\n },\n loadLocalEntry: (path: string) => {\n const lookup = FS.lookupPath(path);\n const node = lookup.node;\n const stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n return { timestamp: stat.mtime, mode: stat.mode };\n } else if (FS.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return {\n timestamp: stat.mtime,\n mode: stat.mode,\n contents: node.contents,\n };\n } else {\n throw new Error(\"node type not supported\");\n }\n },\n storeLocalEntry: (path: string, entry: any) => {\n if (FS.isDir(entry[\"mode\"])) {\n FS.mkdirTree(path, entry[\"mode\"]);\n } else if (FS.isFile(entry[\"mode\"])) {\n FS.writeFile(path, entry[\"contents\"], { canOwn: true });\n } else {\n throw new Error(\"node type not supported\");\n }\n\n FS.chmod(path, entry[\"mode\"]);\n FS.utime(path, entry[\"timestamp\"], entry[\"timestamp\"]);\n },\n removeLocalEntry: (path: string) => {\n var stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else if (FS.isFile(stat.mode)) {\n FS.unlink(path);\n }\n },\n loadRemoteEntry: async (handle: any) => {\n if (handle.kind === \"file\") {\n const file = await handle.getFile();\n return {\n contents: new Uint8Array(await file.arrayBuffer()),\n mode: nativeFSAsync.FILE_MODE,\n timestamp: file.lastModifiedDate,\n };\n } else if (handle.kind === \"directory\") {\n return {\n mode: nativeFSAsync.DIR_MODE,\n timestamp: new Date(),\n };\n } else {\n throw new Error(\"unknown kind: \" + handle.kind);\n }\n },\n storeRemoteEntry: async (handles: any, path: string, entry: any) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n const handle = FS.isFile(entry.mode)\n ? await parentDirHandle.getFileHandle(PATH.basename(path), {\n create: true,\n })\n : await parentDirHandle.getDirectoryHandle(PATH.basename(path), {\n create: true,\n });\n if (handle.kind === \"file\") {\n const writable = await handle.createWritable();\n await writable.write(entry.contents);\n await writable.close();\n }\n handles.set(path, handle);\n },\n removeRemoteEntry: async (handles: any, path: string) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n await parentDirHandle.removeEntry(PATH.basename(path));\n handles.delete(path);\n },\n reconcile: async (mount: any, src: any, dst: any) => {\n let total = 0;\n\n const create: Array<string> = [];\n Object.keys(src.entries).forEach(function (key) {\n const e = src.entries[key];\n const e2 = dst.entries[key];\n if (\n !e2 ||\n (FS.isFile(e.mode) &&\n e[\"timestamp\"].getTime() > e2[\"timestamp\"].getTime())\n ) {\n create.push(key);\n total++;\n }\n });\n // sort paths in ascending order so directory entries are created\n // before the files inside them\n create.sort();\n\n const remove: Array<string> = [];\n Object.keys(dst.entries).forEach(function (key) {\n if (!src.entries[key]) {\n remove.push(key);\n total++;\n }\n });\n // sort paths in descending order so files are deleted before their\n // parent directories\n remove.sort().reverse();\n\n if (!total) {\n return;\n }\n\n const handles = src.type === \"remote\" ? src.handles : dst.handles;\n\n for (const path of create) {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, \"/\"),\n ).substring(1);\n if (dst.type === \"local\") {\n const handle = handles.get(relPath);\n const entry = await nativeFSAsync.loadRemoteEntry(handle);\n nativeFSAsync.storeLocalEntry(path, entry);\n } else {\n const entry = nativeFSAsync.loadLocalEntry(path);\n await nativeFSAsync.storeRemoteEntry(handles, relPath, entry);\n }\n }\n\n for (const path of remove) {\n if (dst.type === \"local\") {\n nativeFSAsync.removeLocalEntry(path);\n } else {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, \"/\"),\n ).substring(1);\n await nativeFSAsync.removeRemoteEntry(handles, relPath);\n }\n }\n },\n };\n\n module.FS.filesystems.NATIVEFS_ASYNC = nativeFSAsync;\n}\n\nconst getFsHandles = async (dirHandle: any) => {\n const handles: any = [];\n\n async function collect(curDirHandle: any) {\n for await (const entry of curDirHandle.values()) {\n handles.push(entry);\n if (entry.kind === \"directory\") {\n await collect(entry);\n }\n }\n }\n\n await collect(dirHandle);\n\n const result = new Map();\n result.set(\".\", dirHandle);\n for (const handle of handles) {\n const relativePath = (await dirHandle.resolve(handle)).join(\"/\");\n result.set(relativePath, handle);\n }\n return result;\n};\n", "/** @private */\n\nimport { ConfigType } from \"./pyodide\";\nimport { initializeNativeFS } from \"./nativefs\";\nimport { loadBinaryFile, getBinaryResponse } from \"./compat\";\nimport { Module } from \"./types\";\n\n/**\n * The Emscripten Module.\n *\n * @private\n */\nexport function createModule(): Module {\n let Module: any = {};\n Module.noImageDecoding = true;\n Module.noAudioDecoding = true;\n Module.noWasmDecoding = false; // we preload wasm using the built in plugin now\n Module.preRun = [];\n Module.quit = (status: number, toThrow: Error) => {\n Module.exited = { status, toThrow };\n throw toThrow;\n };\n return Module as Module;\n}\n\n/**\n * Make the home directory inside the virtual file system,\n * then change the working directory to it.\n *\n * @param Module The Emscripten Module.\n * @param path The path to the home directory.\n * @private\n */\nfunction createHomeDirectory(Module: Module, path: string) {\n Module.preRun.push(function () {\n const fallbackPath = \"/\";\n try {\n Module.FS.mkdirTree(path);\n } catch (e) {\n console.error(`Error occurred while making a home directory '${path}':`);\n console.error(e);\n console.error(`Using '${fallbackPath}' for a home directory instead`);\n path = fallbackPath;\n }\n Module.FS.chdir(path);\n });\n}\n\nfunction setEnvironment(Module: Module, env: { [key: string]: string }) {\n Module.preRun.push(function () {\n Object.assign(Module.ENV, env);\n });\n}\n\n/**\n * Mount local directories to the virtual file system. Only for Node.js.\n * @param module The Emscripten Module.\n * @param mounts The list of paths to mount.\n */\nfunction mountLocalDirectories(Module: Module, mounts: string[]) {\n Module.preRun.push(() => {\n for (const mount of mounts) {\n Module.FS.mkdirTree(mount);\n Module.FS.mount(Module.FS.filesystems.NODEFS, { root: mount }, mount);\n }\n });\n}\n\n/**\n * Install the Python standard library to the virtual file system.\n *\n * Previously, this was handled by Emscripten's file packager (pyodide.asm.data).\n * However, using the file packager means that we have only one version\n * of the standard library available. We want to be able to use different\n * versions of the standard library, for example:\n *\n * - Use compiled(.pyc) or uncompiled(.py) standard library.\n * - Remove unused modules or add additional modules using bundlers like pyodide-pack.\n *\n * @param Module The Emscripten Module.\n * @param stdlibPromise A promise that resolves to the standard library.\n */\nfunction installStdlib(Module: Module, stdlibURL: string) {\n const stdlibPromise: Promise<Uint8Array> = loadBinaryFile(stdlibURL);\n\n Module.preRun.push(() => {\n /* @ts-ignore */\n const pymajor = Module._py_version_major();\n /* @ts-ignore */\n const pyminor = Module._py_version_minor();\n\n Module.FS.mkdirTree(\"/lib\");\n Module.FS.mkdirTree(`/lib/python${pymajor}.${pyminor}/site-packages`);\n\n Module.addRunDependency(\"install-stdlib\");\n\n stdlibPromise\n .then((stdlib: Uint8Array) => {\n Module.FS.writeFile(`/lib/python${pymajor}${pyminor}.zip`, stdlib);\n })\n .catch((e) => {\n console.error(\"Error occurred while installing the standard library:\");\n console.error(e);\n })\n .finally(() => {\n Module.removeRunDependency(\"install-stdlib\");\n });\n });\n}\n\n/**\n * Initialize the virtual file system, before loading Python interpreter.\n * @private\n */\nexport function initializeFileSystem(Module: Module, config: ConfigType) {\n let stdLibURL;\n if (config.stdLibURL != undefined) {\n stdLibURL = config.stdLibURL;\n } else {\n stdLibURL = config.indexURL + \"python_stdlib.zip\";\n }\n\n installStdlib(Module, stdLibURL);\n createHomeDirectory(Module, config.env.HOME);\n setEnvironment(Module, config.env);\n mountLocalDirectories(Module, config._node_mounts);\n Module.preRun.push(() => initializeNativeFS(Module));\n}\n\nexport function preloadWasm(Module: Module, indexURL: string) {\n if (SOURCEMAP) {\n // According to the docs:\n //\n // \"Sanitizers or source map is currently not supported if overriding\n // WebAssembly instantiation with Module.instantiateWasm.\"\n // https://emscripten.org/docs/api_reference/module.html?highlight=instantiatewasm#Module.instantiateWasm\n return;\n }\n const { binary, response } = getBinaryResponse(indexURL + \"pyodide.asm.wasm\");\n Module.instantiateWasm = function (\n imports: { [key: string]: any },\n successCallback: (\n instance: WebAssembly.Instance,\n module: WebAssembly.Module,\n ) => void,\n ) {\n (async function () {\n try {\n let res: WebAssembly.WebAssemblyInstantiatedSource;\n if (response) {\n res = await WebAssembly.instantiateStreaming(response, imports);\n } else {\n res = await WebAssembly.instantiate(await binary, imports);\n }\n const { instance, module } = res;\n // When overriding instantiateWasm, in asan builds, we also need\n // to take care of creating the WasmOffsetConverter\n // @ts-ignore\n if (typeof WasmOffsetConverter != \"undefined\") {\n // @ts-ignore\n wasmOffsetConverter = new WasmOffsetConverter(wasmBinary, module);\n }\n successCallback(instance, module);\n } catch (e) {\n console.warn(\"wasm instantiation failed!\");\n console.warn(e);\n }\n })();\n\n return {}; // Compiling asynchronously, no exports.\n };\n}\n", "/**\n *\n * The Pyodide version.\n *\n * The version here is a Python version, following :pep:`440`. This is different\n * from the version in ``package.json`` which follows the node package manager\n * version convention.\n */\nexport const version: string = \"0.25.1\";\n", "/**\n * The main bootstrap code for loading pyodide.\n */\nimport {\n calculateDirname,\n loadScript,\n initNodeModules,\n resolvePath,\n loadLockFile,\n} from \"./compat\";\n\nimport { createModule, initializeFileSystem, preloadWasm } from \"./module\";\nimport { version } from \"./version\";\n\nimport type { PyodideInterface } from \"./api.js\";\nimport type { TypedArray, API, Module } from \"./types\";\nimport type { PackageData } from \"./load-package\";\nexport type { PyodideInterface, TypedArray };\n\nexport { version, type PackageData };\n\ndeclare function _createPyodideModule(Module: any): Promise<void>;\n\n/**\n * See documentation for loadPyodide.\n * @private\n */\nexport type ConfigType = {\n indexURL: string;\n packageCacheDir: string;\n lockFileURL: string;\n fullStdLib?: boolean;\n stdLibURL?: string;\n stdin?: () => string;\n stdout?: (msg: string) => void;\n stderr?: (msg: string) => void;\n jsglobals?: object;\n args: string[];\n _node_mounts: string[];\n env: { [key: string]: string };\n packages: string[];\n};\n\n/**\n * Load the main Pyodide wasm module and initialize it.\n *\n * @returns The :ref:`js-api-pyodide` module.\n * @memberof globalThis\n * @async\n * @example\n * async function main() {\n * const pyodide = await loadPyodide({\n * fullStdLib: true,\n * stdout: (msg) => console.log(`Pyodide: ${msg}`),\n * });\n * console.log(\"Loaded Pyodide\");\n * }\n * main();\n */\nexport async function loadPyodide(\n options: {\n /**\n * The URL from which Pyodide will load the main Pyodide runtime and\n * packages. It is recommended that you leave this unchanged, providing an\n * incorrect value can cause broken behavior.\n *\n * Default: The url that Pyodide is loaded from with the file name\n * (``pyodide.js`` or ``pyodide.mjs``) removed.\n */\n indexURL?: string;\n\n /**\n * The file path where packages will be cached in node. If a package\n * exists in ``packageCacheDir`` it is loaded from there, otherwise it is\n * downloaded from the JsDelivr CDN and then cached into ``packageCacheDir``.\n * Only applies when running in node; ignored in browsers.\n *\n * Default: same as indexURL\n */\n packageCacheDir?: string;\n\n /**\n * The URL from which Pyodide will load the Pyodide ``pyodide-lock.json`` lock\n * file. You can produce custom lock files with :py:func:`micropip.freeze`.\n * Default: ```${indexURL}/pyodide-lock.json```\n */\n lockFileURL?: string;\n /**\n * Load the full Python standard library. Setting this to false excludes\n * unvendored modules from the standard library.\n * Default: ``false``\n */\n fullStdLib?: boolean;\n /**\n * The URL from which to load the standard library ``python_stdlib.zip``\n * file. This URL includes the most of the Python standard library. Some\n * stdlib modules were unvendored, and can be loaded separately\n * with ``fullStdLib: true`` option or by their package name.\n * Default: ```${indexURL}/python_stdlib.zip```\n */\n stdLibURL?: string;\n /**\n * Override the standard input callback. Should ask the user for one line of\n * input. The :js:func:`pyodide.setStdin` function is more flexible and\n * should be preferred.\n */\n stdin?: () => string;\n /**\n * Override the standard output callback. The :js:func:`pyodide.setStdout`\n * function is more flexible and should be preferred in most cases, but\n * depending on the ``args`` passed to ``loadPyodide``, Pyodide may write to\n * stdout on startup, which can only be controlled by passing a custom\n * ``stdout`` function.\n */\n stdout?: (msg: string) => void;\n /**\n * Override the standard error output callback. The\n * :js:func:`pyodide.setStderr` function is more flexible and should be\n * preferred in most cases, but depending on the ``args`` passed to\n * ``loadPyodide``, Pyodide may write to stdout on startup, which can only\n * be controlled by passing a custom ``stdout`` function.\n */\n stderr?: (msg: string) => void;\n /**\n * The object that Pyodide will use for the ``js`` module.\n * Default: ``globalThis``\n */\n jsglobals?: object;\n /**\n * Command line arguments to pass to Python on startup. See `Python command\n * line interface options\n * <https://docs.python.org/3.10/using/cmdline.html#interface-options>`_ for\n * more details. Default: ``[]``\n */\n args?: string[];\n /**\n * Environment variables to pass to Python. This can be accessed inside of\n * Python at runtime via :py:data:`os.environ`. Certain environment variables change\n * the way that Python loads:\n * https://docs.python.org/3.10/using/cmdline.html#environment-variables\n * Default: ``{}``.\n * If ``env.HOME`` is undefined, it will be set to a default value of\n * ``\"/home/pyodide\"``\n */\n env?: { [key: string]: string };\n /**\n * A list of packages to load as Pyodide is initializing.\n *\n * This is the same as loading the packages with\n * :js:func:`pyodide.loadPackage` after Pyodide is loaded except using the\n * ``packages`` option is more efficient because the packages are downloaded\n * while Pyodide bootstraps itself.\n */\n packages?: string[];\n /**\n * Opt into the old behavior where PyProxy.toString calls `repr` and not\n * `str`.\n * @deprecated\n */\n pyproxyToStringRepr?: boolean;\n /**\n * @ignore\n */\n _node_mounts?: string[];\n } = {},\n): Promise<PyodideInterface> {\n await initNodeModules();\n let indexURL = options.indexURL || (await calculateDirname());\n indexURL = resolvePath(indexURL); // A relative indexURL causes havoc.\n if (!indexURL.endsWith(\"/\")) {\n indexURL += \"/\";\n }\n options.indexURL = indexURL;\n\n const default_config = {\n fullStdLib: false,\n jsglobals: globalThis,\n stdin: globalThis.prompt ? globalThis.prompt : undefined,\n lockFileURL: indexURL + \"pyodide-lock.json\",\n args: [],\n _node_mounts: [],\n env: {},\n packageCacheDir: indexURL,\n packages: [],\n };\n const config = Object.assign(default_config, options) as ConfigType;\n if (!config.env.HOME) {\n config.env.HOME = \"/home/pyodide\";\n }\n\n const Module = createModule();\n Module.print = config.stdout;\n Module.printErr = config.stderr;\n Module.arguments = config.args;\n\n const API = { config } as API;\n Module.API = API;\n API.lockFilePromise = loadLockFile(config.lockFileURL);\n\n preloadWasm(Module, indexURL);\n initializeFileSystem(Module, config);\n\n const moduleLoaded = new Promise((r) => (Module.postRun = r));\n\n // locateFile tells Emscripten where to find the data files that initialize\n // the file system.\n Module.locateFile = (path: string) => config.indexURL + path;\n\n // If the pyodide.asm.js script has been imported, we can skip the dynamic import\n // Users can then do a static import of the script in environments where\n // dynamic importing is not allowed or not desirable, like module-type service workers\n if (typeof _createPyodideModule !== \"function\") {\n const scriptSrc = `${config.indexURL}pyodide.asm.js`;\n await loadScript(scriptSrc);\n }\n\n // _createPyodideModule is specified in the Makefile by the linker flag:\n // `-s EXPORT_NAME=\"'_createPyodideModule'\"`\n await _createPyodideModule(Module);\n\n // There is some work to be done between the module being \"ready\" and postRun\n // being called.\n await moduleLoaded;\n // Handle early exit\n if (Module.exited) {\n throw Module.exited.toThrow;\n }\n if (options.pyproxyToStringRepr) {\n API.setPyProxyToStringMethod(true);\n }\n\n if (API.version !== version) {\n throw new Error(\n `\\\nPyodide version does not match: '${version}' <==> '${API.version}'. \\\nIf you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.\\\n`,\n );\n }\n // Disable further loading of Emscripten file_packager stuff.\n Module.locateFile = (path: string) => {\n throw new Error(\"Didn't expect to load any more file_packager files!\");\n };\n\n const pyodide = API.finalizeBootstrap();\n\n // runPython works starting here.\n if (!pyodide.version.includes(\"dev\")) {\n // Currently only used in Node to download packages the first time they are\n // loaded. But in other cases it's harmless.\n API.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${pyodide.version}/full/`);\n }\n await API.packageIndexReady;\n\n let importhook = API._pyodide._importhook;\n importhook.register_module_not_found_hook(\n API._import_name_to_package_name,\n API.lockfile_unvendored_stdlibs_and_test,\n );\n\n if (API.lockfile_info.version !== version) {\n throw new Error(\"Lock file version doesn't match Pyodide version\");\n }\n API.package_loader.init_loaded_packages();\n if (config.fullStdLib) {\n await pyodide.loadPackage(API.lockfile_unvendored_stdlibs);\n }\n API.initializeStreams(config.stdin, config.stdout, config.stderr);\n return pyodide;\n}\n"],
|
|
"mappings": "k8BAAA,IAAAA,EAAAC,EAAA,CAAAC,EAAAC,IAAA,EAAC,SAASC,EAAMC,EAAS,CACrB,aAII,OAAO,QAAW,YAAc,OAAO,IACvC,OAAO,aAAc,CAAC,EAAGA,CAAO,EACzB,OAAOH,GAAY,SAC1BC,EAAO,QAAUE,EAAQ,EAEzBD,EAAK,WAAaC,EAAQ,CAElC,GAAEH,EAAM,UAAW,CACf,aACA,SAASI,EAAUC,EAAG,CAClB,MAAO,CAAC,MAAM,WAAWA,CAAC,CAAC,GAAK,SAASA,CAAC,CAC9C,CAFSC,EAAAF,EAAA,aAIT,SAASG,EAAYC,EAAK,CACtB,OAAOA,EAAI,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAI,UAAU,CAAC,CACxD,CAFSF,EAAAC,EAAA,eAIT,SAASE,EAAQC,EAAG,CAChB,OAAO,UAAW,CACd,OAAO,KAAKA,CAAC,CACjB,CACJ,CAJSJ,EAAAG,EAAA,WAMT,IAAIE,EAAe,CAAC,gBAAiB,SAAU,WAAY,YAAY,EACnEC,EAAe,CAAC,eAAgB,YAAY,EAC5CC,EAAc,CAAC,WAAY,eAAgB,QAAQ,EACnDC,EAAa,CAAC,MAAM,EACpBC,EAAc,CAAC,YAAY,EAE3BC,EAAQL,EAAa,OAAOC,EAAcC,EAAaC,EAAYC,CAAW,EAElF,SAASE,EAAWC,EAAK,CACrB,GAAKA,EACL,QAASC,EAAI,EAAGA,EAAIH,EAAM,OAAQG,IAC1BD,EAAIF,EAAMG,CAAC,CAAC,IAAM,QAClB,KAAK,MAAQZ,EAAYS,EAAMG,CAAC,CAAC,CAAC,EAAED,EAAIF,EAAMG,CAAC,CAAC,CAAC,CAG7D,CAPSb,EAAAW,EAAA,cASTA,EAAW,UAAY,CACnB,QAAS,UAAW,CAChB,OAAO,KAAK,IAChB,EACA,QAAS,SAASG,EAAG,CACjB,GAAI,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAM,iBACtC,MAAM,IAAI,UAAU,uBAAuB,EAE/C,KAAK,KAAOA,CAChB,EAEA,cAAe,UAAW,CACtB,OAAO,KAAK,UAChB,EACA,cAAe,SAASA,EAAG,CACvB,GAAIA,aAAaH,EACb,KAAK,WAAaG,UACXA,aAAa,OACpB,KAAK,WAAa,IAAIH,EAAWG,CAAC,MAElC,OAAM,IAAI,UAAU,6CAA6C,CAEzE,EAEA,SAAU,UAAW,CACjB,IAAIC,EAAW,KAAK,YAAY,GAAK,GACjCC,EAAa,KAAK,cAAc,GAAK,GACrCC,EAAe,KAAK,gBAAgB,GAAK,GACzCC,EAAe,KAAK,gBAAgB,GAAK,GAC7C,OAAI,KAAK,UAAU,EACXH,EACO,WAAaA,EAAW,IAAMC,EAAa,IAAMC,EAAe,IAEpE,UAAYD,EAAa,IAAMC,EAEtCC,EACOA,EAAe,KAAOH,EAAW,IAAMC,EAAa,IAAMC,EAAe,IAE7EF,EAAW,IAAMC,EAAa,IAAMC,CAC/C,CACJ,EAEAN,EAAW,WAAaX,EAAA,SAAgCE,EAAK,CACzD,IAAIiB,EAAiBjB,EAAI,QAAQ,GAAG,EAChCkB,EAAelB,EAAI,YAAY,GAAG,EAElCgB,GAAehB,EAAI,UAAU,EAAGiB,CAAc,EAC9CE,GAAOnB,EAAI,UAAUiB,EAAiB,EAAGC,CAAY,EAAE,MAAM,GAAG,EAChEE,EAAiBpB,EAAI,UAAUkB,EAAe,CAAC,EAEnD,GAAIE,EAAe,QAAQ,GAAG,IAAM,EAChC,IAAIC,EAAQ,gCAAgC,KAAKD,EAAgB,EAAE,EAC/DP,GAAWQ,EAAM,CAAC,EAClBP,GAAaO,EAAM,CAAC,EACpBN,GAAeM,EAAM,CAAC,EAG9B,OAAO,IAAIZ,EAAW,CAClB,aAAcO,GACd,KAAMG,IAAQ,OACd,SAAUN,GACV,WAAYC,IAAc,OAC1B,aAAcC,IAAgB,MAClC,CAAC,CACL,EAtBwB,0BAwBxB,QAASJ,EAAI,EAAGA,EAAIR,EAAa,OAAQQ,IACrCF,EAAW,UAAU,MAAQV,EAAYI,EAAaQ,CAAC,CAAC,CAAC,EAAIV,EAAQE,EAAaQ,CAAC,CAAC,EACpFF,EAAW,UAAU,MAAQV,EAAYI,EAAaQ,CAAC,CAAC,CAAC,EAAK,SAAST,EAAG,CACtE,OAAO,SAASU,EAAG,CACf,KAAKV,CAAC,EAAI,EAAQU,CACtB,CACJ,EAAGT,EAAaQ,CAAC,CAAC,EAGtB,QAASW,EAAI,EAAGA,EAAIlB,EAAa,OAAQkB,IACrCb,EAAW,UAAU,MAAQV,EAAYK,EAAakB,CAAC,CAAC,CAAC,EAAIrB,EAAQG,EAAakB,CAAC,CAAC,EACpFb,EAAW,UAAU,MAAQV,EAAYK,EAAakB,CAAC,CAAC,CAAC,EAAK,SAASpB,EAAG,CACtE,OAAO,SAASU,EAAG,CACf,GAAI,CAAChB,EAAUgB,CAAC,EACZ,MAAM,IAAI,UAAUV,EAAI,mBAAmB,EAE/C,KAAKA,CAAC,EAAI,OAAOU,CAAC,CACtB,CACJ,EAAGR,EAAakB,CAAC,CAAC,EAGtB,QAASC,EAAI,EAAGA,EAAIlB,EAAY,OAAQkB,IACpCd,EAAW,UAAU,MAAQV,EAAYM,EAAYkB,CAAC,CAAC,CAAC,EAAItB,EAAQI,EAAYkB,CAAC,CAAC,EAClFd,EAAW,UAAU,MAAQV,EAAYM,EAAYkB,CAAC,CAAC,CAAC,EAAK,SAASrB,EAAG,CACrE,OAAO,SAASU,EAAG,CACf,KAAKV,CAAC,EAAI,OAAOU,CAAC,CACtB,CACJ,EAAGP,EAAYkB,CAAC,CAAC,EAGrB,OAAOd,CACX,CAAC,IC9ID,IAAAe,EAAAC,EAAA,CAAAC,EAAAC,IAAA,EAAC,SAASC,EAAMC,EAAS,CACrB,aAII,OAAO,QAAW,YAAc,OAAO,IACvC,OAAO,qBAAsB,CAAC,YAAY,EAAGA,CAAO,EAC7C,OAAOH,GAAY,SAC1BC,EAAO,QAAUE,EAAQ,GAAqB,EAE9CD,EAAK,iBAAmBC,EAAQD,EAAK,UAAU,CAEvD,GAAEF,EAAMI,EAAA,SAA0BC,EAAY,CAC1C,aAEA,IAAIC,EAA8B,eAC9BC,EAAyB,iCACzBC,EAA4B,8BAEhC,MAAO,CAOH,MAAOJ,EAAA,SAAiCK,EAAO,CAC3C,GAAI,OAAOA,EAAM,WAAe,KAAe,OAAOA,EAAM,iBAAiB,EAAM,IAC/E,OAAO,KAAK,WAAWA,CAAK,EACzB,GAAIA,EAAM,OAASA,EAAM,MAAM,MAAMF,CAAsB,EAC9D,OAAO,KAAK,YAAYE,CAAK,EAC1B,GAAIA,EAAM,MACb,OAAO,KAAK,gBAAgBA,CAAK,EAEjC,MAAM,IAAI,MAAM,iCAAiC,CAEzD,EAVO,2BAaP,gBAAiBL,EAAA,SAA2CM,EAAS,CAEjE,GAAIA,EAAQ,QAAQ,GAAG,IAAM,GACzB,MAAO,CAACA,CAAO,EAGnB,IAAIC,EAAS,+BACTC,EAAQD,EAAO,KAAKD,EAAQ,QAAQ,QAAS,EAAE,CAAC,EACpD,MAAO,CAACE,EAAM,CAAC,EAAGA,EAAM,CAAC,GAAK,OAAWA,EAAM,CAAC,GAAK,MAAS,CAClE,EATiB,qCAWjB,YAAaR,EAAA,SAAuCK,EAAO,CACvD,IAAII,EAAWJ,EAAM,MAAM,MAAM;AAAA,CAAI,EAAE,OAAO,SAASK,EAAM,CACzD,MAAO,CAAC,CAACA,EAAK,MAAMP,CAAsB,CAC9C,EAAG,IAAI,EAEP,OAAOM,EAAS,IAAI,SAASC,EAAM,CAC3BA,EAAK,QAAQ,QAAQ,EAAI,KAEzBA,EAAOA,EAAK,QAAQ,aAAc,MAAM,EAAE,QAAQ,6BAA8B,EAAE,GAEtF,IAAIC,EAAgBD,EAAK,QAAQ,OAAQ,EAAE,EAAE,QAAQ,eAAgB,GAAG,EAAE,QAAQ,UAAW,EAAE,EAI3FE,EAAWD,EAAc,MAAM,YAAY,EAG/CA,EAAgBC,EAAWD,EAAc,QAAQC,EAAS,CAAC,EAAG,EAAE,EAAID,EAIpE,IAAIE,EAAgB,KAAK,gBAAgBD,EAAWA,EAAS,CAAC,EAAID,CAAa,EAC3EG,EAAeF,GAAYD,GAAiB,OAC5CI,EAAW,CAAC,OAAQ,aAAa,EAAE,QAAQF,EAAc,CAAC,CAAC,EAAI,GAAK,OAAYA,EAAc,CAAC,EAEnG,OAAO,IAAIZ,EAAW,CAClB,aAAca,EACd,SAAUC,EACV,WAAYF,EAAc,CAAC,EAC3B,aAAcA,EAAc,CAAC,EAC7B,OAAQH,CACZ,CAAC,CACL,EAAG,IAAI,CACX,EAjCa,iCAmCb,gBAAiBV,EAAA,SAA2CK,EAAO,CAC/D,IAAII,EAAWJ,EAAM,MAAM,MAAM;AAAA,CAAI,EAAE,OAAO,SAASK,EAAM,CACzD,MAAO,CAACA,EAAK,MAAMN,CAAyB,CAChD,EAAG,IAAI,EAEP,OAAOK,EAAS,IAAI,SAASC,EAAM,CAM/B,GAJIA,EAAK,QAAQ,SAAS,EAAI,KAC1BA,EAAOA,EAAK,QAAQ,mDAAoD,KAAK,GAG7EA,EAAK,QAAQ,GAAG,IAAM,IAAMA,EAAK,QAAQ,GAAG,IAAM,GAElD,OAAO,IAAIT,EAAW,CAClB,aAAcS,CAClB,CAAC,EAED,IAAIM,EAAoB,6BACpBC,EAAUP,EAAK,MAAMM,CAAiB,EACtCF,EAAeG,GAAWA,EAAQ,CAAC,EAAIA,EAAQ,CAAC,EAAI,OACpDJ,EAAgB,KAAK,gBAAgBH,EAAK,QAAQM,EAAmB,EAAE,CAAC,EAE5E,OAAO,IAAIf,EAAW,CAClB,aAAca,EACd,SAAUD,EAAc,CAAC,EACzB,WAAYA,EAAc,CAAC,EAC3B,aAAcA,EAAc,CAAC,EAC7B,OAAQH,CACZ,CAAC,CAET,EAAG,IAAI,CACX,EA/BiB,qCAiCjB,WAAYV,EAAA,SAAsCkB,EAAG,CACjD,MAAI,CAACA,EAAE,YAAeA,EAAE,QAAQ,QAAQ;AAAA,CAAI,EAAI,IAC5CA,EAAE,QAAQ,MAAM;AAAA,CAAI,EAAE,OAASA,EAAE,WAAW,MAAM;AAAA,CAAI,EAAE,OACjD,KAAK,YAAYA,CAAC,EACjBA,EAAE,MAGH,KAAK,aAAaA,CAAC,EAFnB,KAAK,aAAaA,CAAC,CAIlC,EATY,gCAWZ,YAAalB,EAAA,SAAuCkB,EAAG,CAKnD,QAJIC,EAAS,oCACTC,EAAQF,EAAE,QAAQ,MAAM;AAAA,CAAI,EAC5BG,EAAS,CAAC,EAELC,EAAI,EAAGC,EAAMH,EAAM,OAAQE,EAAIC,EAAKD,GAAK,EAAG,CACjD,IAAIE,EAAQL,EAAO,KAAKC,EAAME,CAAC,CAAC,EAC5BE,GACAH,EAAO,KAAK,IAAIpB,EAAW,CACvB,SAAUuB,EAAM,CAAC,EACjB,WAAYA,EAAM,CAAC,EACnB,OAAQJ,EAAME,CAAC,CACnB,CAAC,CAAC,EAIV,OAAOD,CACX,EAjBa,iCAmBb,aAAcrB,EAAA,SAAwCkB,EAAG,CAKrD,QAJIC,EAAS,6DACTC,EAAQF,EAAE,WAAW,MAAM;AAAA,CAAI,EAC/BG,EAAS,CAAC,EAELC,EAAI,EAAGC,EAAMH,EAAM,OAAQE,EAAIC,EAAKD,GAAK,EAAG,CACjD,IAAIE,EAAQL,EAAO,KAAKC,EAAME,CAAC,CAAC,EAC5BE,GACAH,EAAO,KACH,IAAIpB,EAAW,CACX,aAAcuB,EAAM,CAAC,GAAK,OAC1B,SAAUA,EAAM,CAAC,EACjB,WAAYA,EAAM,CAAC,EACnB,OAAQJ,EAAME,CAAC,CACnB,CAAC,CACL,EAIR,OAAOD,CACX,EApBc,kCAuBd,aAAcrB,EAAA,SAAwCK,EAAO,CACzD,IAAII,EAAWJ,EAAM,MAAM,MAAM;AAAA,CAAI,EAAE,OAAO,SAASK,EAAM,CACzD,MAAO,CAAC,CAACA,EAAK,MAAMR,CAA2B,GAAK,CAACQ,EAAK,MAAM,mBAAmB,CACvF,EAAG,IAAI,EAEP,OAAOD,EAAS,IAAI,SAASC,EAAM,CAC/B,IAAIe,EAASf,EAAK,MAAM,GAAG,EACvBG,EAAgB,KAAK,gBAAgBY,EAAO,IAAI,CAAC,EACjDC,EAAgBD,EAAO,MAAM,GAAK,GAClCX,EAAeY,EACd,QAAQ,iCAAkC,IAAI,EAC9C,QAAQ,aAAc,EAAE,GAAK,OAC9BC,EACAD,EAAa,MAAM,aAAa,IAChCC,EAAUD,EAAa,QAAQ,qBAAsB,IAAI,GAE7D,IAAIE,EAAQD,IAAY,QAAaA,IAAY,4BAC7C,OAAYA,EAAQ,MAAM,GAAG,EAEjC,OAAO,IAAI1B,EAAW,CAClB,aAAca,EACd,KAAMc,EACN,SAAUf,EAAc,CAAC,EACzB,WAAYA,EAAc,CAAC,EAC3B,aAAcA,EAAc,CAAC,EAC7B,OAAQH,CACZ,CAAC,CACL,EAAG,IAAI,CACX,EA5Bc,iCA6BlB,CACJ,EA7LQ,mBA6LP,ICzMD,IAAAmB,GAAA,GAAAC,GAAAD,GAAA,iBAAAE,EAAA,YAAAC,ICAA,IAAAC,EAA6B,OCGtB,IAAMC,EACX,OAAO,SAAY,UACnB,OAAO,QAAQ,UAAa,UAC5B,OAAO,QAAQ,SAAS,MAAS,UACjC,OAAO,QAAQ,QACb,IAGSC,EACXD,GACA,OAAO,OAAW,KAClB,OAAO,OAAO,QAAY,KAC1B,OAAOE,EAAY,KACnB,OAAO,UAAc,IAGVC,EAAcH,GAAW,CAACC,EAG1BG,GAAU,OAAO,KAAS,IAG1BC,EAAa,CAACL,GAAW,CAACI,GAG1BE,EACXD,GACA,OAAO,OAAW,KAClB,OAAO,SAAa,KACpB,OAAO,SAAS,cAAkB,KAClC,OAAO,eAAmB,IAGfE,EACXF,GACA,OAAO,cAAkB,KACzB,OAAO,KAAS,ID9BlB,IAAIG,EACAC,EACAC,EACAC,EAEOC,EAQLC,GAAsB,iNAY5B,eAAsBC,GAAkB,CAyBtC,GAxBI,CAACC,IAILP,GAAc,KAAM,QAAO,KAAK,GAAG,QACnCI,EAAoB,KAAM,QAAO,aAAa,EAC1C,WAAW,MACbH,EAAY,OAGZ,QAAQ,KAAKI,EAAmB,EAEhCJ,GAAa,KAAM,QAAO,YAAY,GAAG,SAG3CE,GAAa,KAAM,QAAO,IAAI,GAAG,QACjCD,EAAW,KAAM,QAAO,MAAM,EAC9BM,EAAUN,EAAS,IAOf,OAAOO,EAAY,KACrB,OAKF,IAAMC,EAAK,KAAM,QAAO,IAAI,EACtBC,EAAS,KAAM,QAAO,QAAQ,EAC9BC,EAAK,KAAM,QAAO,IAAI,EACtBC,EAAgB,KAAM,QAAO,eAAe,EAC5CC,EAAwC,CAC5C,GAAAJ,EACA,OAAAC,EACA,GAAAC,EACA,cAAAC,CACF,EAGC,WAAmB,QAAU,SAAUE,EAAkB,CACxD,OAAOD,EAAaC,CAAG,CACzB,CACF,CA9CsBC,EAAAV,EAAA,mBAgDtB,SAASW,GAAiBC,EAAcC,EAAuB,CAC7D,OAAOjB,EAAS,QAAQiB,GAAQ,IAAKD,CAAI,CAC3C,CAFSF,EAAAC,GAAA,oBAIT,SAASG,GAAoBF,EAAcC,EAAuB,CAChE,OAAIA,IAAS,SAEXA,EAAO,UAEF,IAAI,IAAID,EAAMC,CAAI,EAAE,SAAS,CACtC,CANSH,EAAAI,GAAA,uBAQF,IAAIC,EACPd,EACFc,EAAcJ,GAEdI,EAAcD,GAQT,IAAIZ,EAEND,IACHC,EAAU,KAYZ,SAASc,GACPJ,EACAK,EAGkC,CAKlC,OAJIL,EAAK,WAAW,SAAS,IAE3BA,EAAOA,EAAK,MAAM,CAAgB,GAEhCA,EAAK,SAAS,KAAK,EAEd,CAAE,SAAUjB,EAAUiB,CAAI,CAAE,EAG5B,CACL,OAAQd,EACL,SAASc,CAAI,EACb,KACEM,GACC,IAAI,WAAWA,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,CAChE,CACJ,CAEJ,CAxBSR,EAAAM,GAAA,0BAmCT,SAASG,GACPP,EACAQ,EACqD,CACrD,IAAMC,EAAM,IAAI,IAAIT,EAAM,QAA0B,EAEpD,MAAO,CAAE,SAAU,MAAMS,EADXD,EAAkB,CAAE,UAAWA,CAAgB,EAAI,CAAC,CAC7B,CAAE,CACzC,CAPSV,EAAAS,GAAA,6BAUF,IAAIG,EAMPrB,EACFqB,EAAoBN,GAEpBM,EAAoBH,GAGtB,eAAsBI,EACpBX,EACAY,EACqB,CACrB,GAAM,CAAE,SAAAC,EAAU,OAAAC,CAAO,EAAIJ,EAAkBV,EAAMY,CAAsB,EAC3E,GAAIE,EACF,OAAOA,EAET,IAAMC,EAAI,MAAMF,EAChB,GAAI,CAACE,EAAE,GACL,MAAM,IAAI,MAAM,mBAAmBf,qBAAwB,EAE7D,OAAO,IAAI,WAAW,MAAMe,EAAE,YAAY,CAAC,CAC7C,CAbsBjB,EAAAa,EAAA,kBAqBf,IAAIK,EAEX,GAAIC,EAEFD,EAAalB,EAAA,MAAOW,GAAQ,MAAM,OAAiCA,GAAtD,sBACJS,EAETF,EAAalB,EAAA,MAAOW,GAAQ,CAC1B,GAAI,CAEF,WAAW,cAAcA,CAAG,CAC9B,OAAS,EAAP,CAEA,GAAI,aAAa,UACf,MAAM,OAAiCA,OAEvC,OAAM,CAEV,CACF,EAZa,sBAaJpB,EACT2B,EAAaG,OAEb,OAAM,IAAI,MAAM,sCAAsC,EAQxD,eAAeA,GAAeV,EAAa,CACrCA,EAAI,WAAW,SAAS,IAE1BA,EAAMA,EAAI,MAAM,CAAgB,GAE9BA,EAAI,SAAS,KAAK,EAEpBxB,EAAU,iBAAiB,MAAO,MAAMF,EAAU0B,CAAG,GAAG,KAAK,CAAC,EAI9D,MAAM,OAAiC3B,EAAW,cAAc2B,CAAG,EAAE,KAEzE,CAbeX,EAAAqB,GAAA,kBAmCf,eAAsBC,EAAaC,EAAmC,CACpE,GAAIC,EAAS,CACX,MAAMC,EAAgB,EACtB,IAAMC,EAAiB,MAAMC,EAAkB,SAASJ,CAAW,EACnE,OAAO,KAAK,MAAMG,CAAc,MAGhC,QAAO,MADQ,MAAM,MAAMH,CAAW,GAChB,KAAK,CAE/B,CATsBK,EAAAN,EAAA,gBAetB,eAAsBO,GAAoC,CACxD,GAAIC,EACF,OAAO,UAGT,IAAIC,EACJ,GAAI,CACF,MAAM,IAAI,KACZ,OAASC,EAAP,CACAD,EAAMC,CACR,CACA,IAAIC,EAAW,EAAAC,QAAiB,MAAMH,CAAG,EAAE,CAAC,EAAE,SAE9C,GAAII,EAAa,CACf,IAAMC,EAAW,KAAM,QAAO,MAAM,EAKpC,OAJgB,KAAM,QAAO,KAAK,GAInB,cAAcA,EAAS,QAAQH,CAAQ,CAAC,EAGzD,IAAMI,EAAmBJ,EAAS,YAAYK,CAAO,EACrD,GAAID,IAAqB,GACvB,MAAM,IAAI,MACR,8DACF,EAEF,OAAOJ,EAAS,MAAM,EAAGI,CAAgB,CAC3C,CA7BsBT,EAAAC,EAAA,oBEnRf,SAASU,EAAmBC,EAAgB,CACjD,IAAMC,EAAKD,EAAO,GACZE,EAAQF,EAAO,GAAG,YAAY,MAC9BG,EAAOH,EAAO,KAEdI,EAAgB,CAGpB,SAAU,MACV,UAAW,MACX,MAAO,SAAUC,EAAY,CAC3B,GAAI,CAACA,EAAM,KAAK,iBACd,MAAM,IAAI,MAAM,mCAAmC,EAIrD,OAAOH,EAAM,MAAM,MAAM,KAAM,SAAS,CAC1C,EACA,OAAQ,MAAOG,EAAYC,EAAmBC,IAAuB,CACnE,GAAI,CACF,IAAMC,EAAQJ,EAAc,YAAYC,CAAK,EACvCI,EAAS,MAAML,EAAc,aAAaC,CAAK,EAC/CK,EAAMJ,EAAWG,EAASD,EAC1BG,EAAML,EAAWE,EAAQC,EAC/B,MAAML,EAAc,UAAUC,EAAOK,EAAKC,CAAG,EAC7CJ,EAAS,IAAI,CACf,OAASK,EAAP,CACAL,EAASK,CAAC,CACZ,CACF,EAEA,YAAcP,GAAe,CAC3B,IAAIQ,EAAU,OAAO,OAAO,IAAI,EAEhC,SAASC,EAAUC,EAAW,CAC5B,OAAOA,IAAM,KAAOA,IAAM,IAC5B,CAFSC,EAAAF,EAAA,aAIT,SAASG,EAAWC,EAAc,CAChC,OAAQH,GACCZ,EAAK,MAAMe,EAAMH,CAAC,CAE7B,CAJSC,EAAAC,EAAA,cAMT,IAAIE,EAAQlB,EAAG,QAAQI,EAAM,UAAU,EACpC,OAAOS,CAAS,EAChB,IAAIG,EAAWZ,EAAM,UAAU,CAAC,EAEnC,KAAOc,EAAM,QAAQ,CACnB,IAAIC,EAAOD,EAAM,IAAI,EACjBE,EAAOpB,EAAG,KAAKmB,CAAI,EAEnBnB,EAAG,MAAMoB,EAAK,IAAI,GACpBF,EAAM,KAAK,MACTA,EACAlB,EAAG,QAAQmB,CAAI,EAAE,OAAON,CAAS,EAAE,IAAIG,EAAWG,CAAI,CAAC,CACzD,EAGFP,EAAQO,CAAI,EAAI,CAAE,UAAWC,EAAK,MAAO,KAAMA,EAAK,IAAK,EAG3D,MAAO,CAAE,KAAM,QAAS,QAASR,CAAQ,CAC3C,EAEA,aAAc,MAAOR,GAAe,CAElC,IAAMQ,EAAU,OAAO,OAAO,IAAI,EAE5BS,EAAU,MAAMC,GAAalB,EAAM,KAAK,gBAAgB,EAC9D,OAAW,CAACe,EAAMI,CAAM,IAAKF,EACvBF,IAAS,MAEbP,EAAQV,EAAK,MAAME,EAAM,WAAYe,CAAI,CAAC,EAAI,CAC5C,UACEI,EAAO,OAAS,QACX,MAAMA,EAAO,QAAQ,GAAG,iBACzB,IAAI,KACV,KACEA,EAAO,OAAS,OACZpB,EAAc,UACdA,EAAc,QACtB,GAGF,MAAO,CAAE,KAAM,SAAU,QAAAS,EAAS,QAAAS,CAAQ,CAC5C,EACA,eAAiBF,GAAiB,CAEhC,IAAMK,EADSxB,EAAG,WAAWmB,CAAI,EACb,KACdC,EAAOpB,EAAG,KAAKmB,CAAI,EAEzB,GAAInB,EAAG,MAAMoB,EAAK,IAAI,EACpB,MAAO,CAAE,UAAWA,EAAK,MAAO,KAAMA,EAAK,IAAK,EAC3C,GAAIpB,EAAG,OAAOoB,EAAK,IAAI,EAC5B,OAAAI,EAAK,SAAWvB,EAAM,wBAAwBuB,CAAI,EAC3C,CACL,UAAWJ,EAAK,MAChB,KAAMA,EAAK,KACX,SAAUI,EAAK,QACjB,EAEA,MAAM,IAAI,MAAM,yBAAyB,CAE7C,EACA,gBAAiB,CAACL,EAAcM,IAAe,CAC7C,GAAIzB,EAAG,MAAMyB,EAAM,IAAO,EACxBzB,EAAG,UAAUmB,EAAMM,EAAM,IAAO,UACvBzB,EAAG,OAAOyB,EAAM,IAAO,EAChCzB,EAAG,UAAUmB,EAAMM,EAAM,SAAa,CAAE,OAAQ,EAAK,CAAC,MAEtD,OAAM,IAAI,MAAM,yBAAyB,EAG3CzB,EAAG,MAAMmB,EAAMM,EAAM,IAAO,EAC5BzB,EAAG,MAAMmB,EAAMM,EAAM,UAAcA,EAAM,SAAY,CACvD,EACA,iBAAmBN,GAAiB,CAClC,IAAIC,EAAOpB,EAAG,KAAKmB,CAAI,EAEnBnB,EAAG,MAAMoB,EAAK,IAAI,EACpBpB,EAAG,MAAMmB,CAAI,EACJnB,EAAG,OAAOoB,EAAK,IAAI,GAC5BpB,EAAG,OAAOmB,CAAI,CAElB,EACA,gBAAiB,MAAOI,GAAgB,CACtC,GAAIA,EAAO,OAAS,OAAQ,CAC1B,IAAMG,EAAO,MAAMH,EAAO,QAAQ,EAClC,MAAO,CACL,SAAU,IAAI,WAAW,MAAMG,EAAK,YAAY,CAAC,EACjD,KAAMvB,EAAc,UACpB,UAAWuB,EAAK,gBAClB,MACK,IAAIH,EAAO,OAAS,YACzB,MAAO,CACL,KAAMpB,EAAc,SACpB,UAAW,IAAI,IACjB,EAEA,MAAM,IAAI,MAAM,iBAAmBoB,EAAO,IAAI,EAElD,EACA,iBAAkB,MAAOF,EAAcF,EAAcM,IAAe,CAClE,IAAME,EAAkBN,EAAQ,IAAInB,EAAK,QAAQiB,CAAI,CAAC,EAChDI,EAASvB,EAAG,OAAOyB,EAAM,IAAI,EAC/B,MAAME,EAAgB,cAAczB,EAAK,SAASiB,CAAI,EAAG,CACvD,OAAQ,EACV,CAAC,EACD,MAAMQ,EAAgB,mBAAmBzB,EAAK,SAASiB,CAAI,EAAG,CAC5D,OAAQ,EACV,CAAC,EACL,GAAII,EAAO,OAAS,OAAQ,CAC1B,IAAMK,EAAW,MAAML,EAAO,eAAe,EAC7C,MAAMK,EAAS,MAAMH,EAAM,QAAQ,EACnC,MAAMG,EAAS,MAAM,EAEvBP,EAAQ,IAAIF,EAAMI,CAAM,CAC1B,EACA,kBAAmB,MAAOF,EAAcF,IAAiB,CAEvD,MADwBE,EAAQ,IAAInB,EAAK,QAAQiB,CAAI,CAAC,EAChC,YAAYjB,EAAK,SAASiB,CAAI,CAAC,EACrDE,EAAQ,OAAOF,CAAI,CACrB,EACA,UAAW,MAAOf,EAAYK,EAAUC,IAAa,CACnD,IAAImB,EAAQ,EAENC,EAAwB,CAAC,EAC/B,OAAO,KAAKrB,EAAI,OAAO,EAAE,QAAQ,SAAUsB,EAAK,CAC9C,IAAMpB,EAAIF,EAAI,QAAQsB,CAAG,EACnBC,EAAKtB,EAAI,QAAQqB,CAAG,GAExB,CAACC,GACAhC,EAAG,OAAOW,EAAE,IAAI,GACfA,EAAE,UAAa,QAAQ,EAAIqB,EAAG,UAAa,QAAQ,KAErDF,EAAO,KAAKC,CAAG,EACfF,IAEJ,CAAC,EAGDC,EAAO,KAAK,EAEZ,IAAMG,EAAwB,CAAC,EAW/B,GAVA,OAAO,KAAKvB,EAAI,OAAO,EAAE,QAAQ,SAAUqB,EAAK,CACzCtB,EAAI,QAAQsB,CAAG,IAClBE,EAAO,KAAKF,CAAG,EACfF,IAEJ,CAAC,EAGDI,EAAO,KAAK,EAAE,QAAQ,EAElB,CAACJ,EACH,OAGF,IAAMR,EAAUZ,EAAI,OAAS,SAAWA,EAAI,QAAUC,EAAI,QAE1D,QAAWS,KAAQW,EAAQ,CACzB,IAAMI,EAAUhC,EAAK,UACnBiB,EAAK,QAAQf,EAAM,WAAY,GAAG,CACpC,EAAE,UAAU,CAAC,EACb,GAAIM,EAAI,OAAS,QAAS,CACxB,IAAMa,EAASF,EAAQ,IAAIa,CAAO,EAC5BT,EAAQ,MAAMtB,EAAc,gBAAgBoB,CAAM,EACxDpB,EAAc,gBAAgBgB,EAAMM,CAAK,MACpC,CACL,IAAMA,EAAQtB,EAAc,eAAegB,CAAI,EAC/C,MAAMhB,EAAc,iBAAiBkB,EAASa,EAAST,CAAK,GAIhE,QAAWN,KAAQc,EACjB,GAAIvB,EAAI,OAAS,QACfP,EAAc,iBAAiBgB,CAAI,MAC9B,CACL,IAAMe,EAAUhC,EAAK,UACnBiB,EAAK,QAAQf,EAAM,WAAY,GAAG,CACpC,EAAE,UAAU,CAAC,EACb,MAAMD,EAAc,kBAAkBkB,EAASa,CAAO,EAG5D,CACF,EAEAnC,EAAO,GAAG,YAAY,eAAiBI,CACzC,CArOgBY,EAAAjB,EAAA,sBAuOhB,IAAMwB,GAAeP,EAAA,MAAOoB,GAAmB,CAC7C,IAAMd,EAAe,CAAC,EAEtB,eAAee,EAAQC,EAAmB,CACxC,cAAiBZ,KAASY,EAAa,OAAO,EAC5ChB,EAAQ,KAAKI,CAAK,EACdA,EAAM,OAAS,aACjB,MAAMW,EAAQX,CAAK,CAGzB,CAPeV,EAAAqB,EAAA,WASf,MAAMA,EAAQD,CAAS,EAEvB,IAAMG,EAAS,IAAI,IACnBA,EAAO,IAAI,IAAKH,CAAS,EACzB,QAAWZ,KAAUF,EAAS,CAC5B,IAAMkB,GAAgB,MAAMJ,EAAU,QAAQZ,CAAM,GAAG,KAAK,GAAG,EAC/De,EAAO,IAAIC,EAAchB,CAAM,EAEjC,OAAOe,CACT,EArBqB,gBChOd,SAASE,IAAuB,CACrC,IAAIC,EAAc,CAAC,EACnB,OAAAA,EAAO,gBAAkB,GACzBA,EAAO,gBAAkB,GACzBA,EAAO,eAAiB,GACxBA,EAAO,OAAS,CAAC,EACjBA,EAAO,KAAO,CAACC,EAAgBC,IAAmB,CAChD,MAAAF,EAAO,OAAS,CAAE,OAAAC,EAAQ,QAAAC,CAAQ,EAC5BA,CACR,EACOF,CACT,CAXgBG,EAAAJ,GAAA,gBAqBhB,SAASK,GAAoBJ,EAAgBK,EAAc,CACzDL,EAAO,OAAO,KAAK,UAAY,CAC7B,IAAMM,EAAe,IACrB,GAAI,CACFN,EAAO,GAAG,UAAUK,CAAI,CAC1B,OAASE,EAAP,CACA,QAAQ,MAAM,iDAAiDF,KAAQ,EACvE,QAAQ,MAAME,CAAC,EACf,QAAQ,MAAM,UAAUD,iCAA4C,EACpED,EAAOC,CACT,CACAN,EAAO,GAAG,MAAMK,CAAI,CACtB,CAAC,CACH,CAbSF,EAAAC,GAAA,uBAeT,SAASI,GAAeR,EAAgBS,EAAgC,CACtET,EAAO,OAAO,KAAK,UAAY,CAC7B,OAAO,OAAOA,EAAO,IAAKS,CAAG,CAC/B,CAAC,CACH,CAJSN,EAAAK,GAAA,kBAWT,SAASE,GAAsBV,EAAgBW,EAAkB,CAC/DX,EAAO,OAAO,KAAK,IAAM,CACvB,QAAWY,KAASD,EAClBX,EAAO,GAAG,UAAUY,CAAK,EACzBZ,EAAO,GAAG,MAAMA,EAAO,GAAG,YAAY,OAAQ,CAAE,KAAMY,CAAM,EAAGA,CAAK,CAExE,CAAC,CACH,CAPST,EAAAO,GAAA,yBAuBT,SAASG,GAAcb,EAAgBc,EAAmB,CACxD,IAAMC,EAAqCC,EAAeF,CAAS,EAEnEd,EAAO,OAAO,KAAK,IAAM,CAEvB,IAAMiB,EAAUjB,EAAO,kBAAkB,EAEnCkB,EAAUlB,EAAO,kBAAkB,EAEzCA,EAAO,GAAG,UAAU,MAAM,EAC1BA,EAAO,GAAG,UAAU,cAAciB,KAAWC,iBAAuB,EAEpElB,EAAO,iBAAiB,gBAAgB,EAExCe,EACG,KAAMI,GAAuB,CAC5BnB,EAAO,GAAG,UAAU,cAAciB,IAAUC,QAAeC,CAAM,CACnE,CAAC,EACA,MAAOZ,GAAM,CACZ,QAAQ,MAAM,uDAAuD,EACrE,QAAQ,MAAMA,CAAC,CACjB,CAAC,EACA,QAAQ,IAAM,CACbP,EAAO,oBAAoB,gBAAgB,CAC7C,CAAC,CACL,CAAC,CACH,CA1BSG,EAAAU,GAAA,iBAgCF,SAASO,GAAqBpB,EAAgBqB,EAAoB,CACvE,IAAIC,EACAD,EAAO,WAAa,KACtBC,EAAYD,EAAO,UAEnBC,EAAYD,EAAO,SAAW,oBAGhCR,GAAcb,EAAQsB,CAAS,EAC/BlB,GAAoBJ,EAAQqB,EAAO,IAAI,IAAI,EAC3Cb,GAAeR,EAAQqB,EAAO,GAAG,EACjCX,GAAsBV,EAAQqB,EAAO,YAAY,EACjDrB,EAAO,OAAO,KAAK,IAAMuB,EAAmBvB,CAAM,CAAC,CACrD,CAbgBG,EAAAiB,GAAA,wBAeT,SAASI,GAAYxB,EAAgByB,EAAkB,CAS5D,GAAM,CAAE,OAAAC,EAAQ,SAAAC,CAAS,EAAIC,EAAkBH,EAAW,kBAAkB,EAC5EzB,EAAO,gBAAkB,SACvB6B,EACAC,EAIA,CACA,OAAC,gBAAkB,CACjB,GAAI,CACF,IAAIC,EACAJ,EACFI,EAAM,MAAM,YAAY,qBAAqBJ,EAAUE,CAAO,EAE9DE,EAAM,MAAM,YAAY,YAAY,MAAML,EAAQG,CAAO,EAE3D,GAAM,CAAE,SAAAG,EAAU,OAAAC,CAAO,EAAIF,EAIzB,OAAO,oBAAuB,MAEhC,oBAAsB,IAAI,oBAAoB,WAAYE,CAAM,GAElEH,EAAgBE,EAAUC,CAAM,CAClC,OAAS1B,EAAP,CACA,QAAQ,KAAK,4BAA4B,EACzC,QAAQ,KAAKA,CAAC,CAChB,CACF,EAAG,EAEI,CAAC,CACV,CACF,CA1CgBJ,EAAAqB,GAAA,eCzHT,IAAMU,EAAkB,SCmD/B,eAAsBC,EACpBC,EAwGI,CAAC,EACsB,CAC3B,MAAMC,EAAgB,EACtB,IAAIC,EAAWF,EAAQ,UAAa,MAAMG,EAAiB,EAC3DD,EAAWE,EAAYF,CAAQ,EAC1BA,EAAS,SAAS,GAAG,IACxBA,GAAY,KAEdF,EAAQ,SAAWE,EAEnB,IAAMG,EAAiB,CACrB,WAAY,GACZ,UAAW,WACX,MAAO,WAAW,OAAS,WAAW,OAAS,OAC/C,YAAaH,EAAW,oBACxB,KAAM,CAAC,EACP,aAAc,CAAC,EACf,IAAK,CAAC,EACN,gBAAiBA,EACjB,SAAU,CAAC,CACb,EACMI,EAAS,OAAO,OAAOD,EAAgBL,CAAO,EAC/CM,EAAO,IAAI,OACdA,EAAO,IAAI,KAAO,iBAGpB,IAAMC,EAASC,GAAa,EAC5BD,EAAO,MAAQD,EAAO,OACtBC,EAAO,SAAWD,EAAO,OACzBC,EAAO,UAAYD,EAAO,KAE1B,IAAMG,EAAM,CAAE,OAAAH,CAAO,EACrBC,EAAO,IAAME,EACbA,EAAI,gBAAkBC,EAAaJ,EAAO,WAAW,EAErDK,GAAYJ,EAAQL,CAAQ,EAC5BU,GAAqBL,EAAQD,CAAM,EAEnC,IAAMO,EAAe,IAAI,QAASC,GAAOP,EAAO,QAAUO,CAAE,EAS5D,GALAP,EAAO,WAAcQ,GAAiBT,EAAO,SAAWS,EAKpD,OAAO,sBAAyB,WAAY,CAC9C,IAAMC,EAAY,GAAGV,EAAO,yBAC5B,MAAMW,EAAWD,CAAS,EAW5B,GANA,MAAM,qBAAqBT,CAAM,EAIjC,MAAMM,EAEFN,EAAO,OACT,MAAMA,EAAO,OAAO,QAMtB,GAJIP,EAAQ,qBACVS,EAAI,yBAAyB,EAAI,EAG/BA,EAAI,UAAYS,EAClB,MAAM,IAAI,MACR,oCAC6BA,YAAkBT,EAAI,0HAGrD,EAGFF,EAAO,WAAcQ,GAAiB,CACpC,MAAM,IAAI,MAAM,qDAAqD,CACvE,EAEA,IAAMI,EAAUV,EAAI,kBAAkB,EAgBtC,GAbKU,EAAQ,QAAQ,SAAS,KAAK,GAGjCV,EAAI,UAAU,qCAAqCU,EAAQ,eAAe,EAE5E,MAAMV,EAAI,kBAEOA,EAAI,SAAS,YACnB,+BACTA,EAAI,6BACJA,EAAI,oCACN,EAEIA,EAAI,cAAc,UAAYS,EAChC,MAAM,IAAI,MAAM,iDAAiD,EAEnE,OAAAT,EAAI,eAAe,qBAAqB,EACpCH,EAAO,YACT,MAAMa,EAAQ,YAAYV,EAAI,2BAA2B,EAE3DA,EAAI,kBAAkBH,EAAO,MAAOA,EAAO,OAAQA,EAAO,MAAM,EACzDa,CACT,CAlNsBC,EAAArB,EAAA,eNxDrB,WAAmB,YAAcsB",
|
|
"names": ["require_stackframe", "__commonJSMin", "exports", "module", "root", "factory", "_isNumber", "n", "__name", "_capitalize", "str", "_getter", "p", "booleanProps", "numericProps", "stringProps", "arrayProps", "objectProps", "props", "StackFrame", "obj", "i", "v", "fileName", "lineNumber", "columnNumber", "functionName", "argsStartIndex", "argsEndIndex", "args", "locationString", "parts", "j", "k", "require_error_stack_parser", "__commonJSMin", "exports", "module", "root", "factory", "__name", "StackFrame", "FIREFOX_SAFARI_STACK_REGEXP", "CHROME_IE_STACK_REGEXP", "SAFARI_NATIVE_CODE_REGEXP", "error", "urlLike", "regExp", "parts", "filtered", "line", "sanitizedLine", "location", "locationParts", "functionName", "fileName", "functionNameRegex", "matches", "e", "lineRE", "lines", "result", "i", "len", "match", "tokens", "functionCall", "argsRaw", "args", "pyodide_umd_exports", "__export", "loadPyodide", "version", "import_error_stack_parser", "IN_NODE", "IN_NODE_COMMONJS", "__require", "IN_NODE_ESM", "IN_DENO", "IN_BROWSER", "IN_BROWSER_MAIN_THREAD", "IN_BROWSER_WEB_WORKER", "nodeUrlMod", "nodeFetch", "nodePath", "nodeVmMod", "nodeFsPromisesMod", "FETCH_NOT_FOUND_MSG", "initNodeModules", "IN_NODE", "pathSep", "__require", "fs", "crypto", "ws", "child_process", "node_modules", "mod", "__name", "node_resolvePath", "path", "base", "browser_resolvePath", "resolvePath", "node_getBinaryResponse", "_file_sub_resource_hash", "data", "browser_getBinaryResponse", "subResourceHash", "url", "getBinaryResponse", "loadBinaryFile", "file_sub_resource_hash", "response", "binary", "r", "loadScript", "IN_BROWSER_MAIN_THREAD", "IN_BROWSER_WEB_WORKER", "nodeLoadScript", "loadLockFile", "lockFileURL", "IN_NODE", "initNodeModules", "package_string", "nodeFsPromisesMod", "__name", "calculateDirname", "IN_NODE_COMMONJS", "err", "e", "fileName", "ErrorStackParser", "IN_NODE_ESM", "nodePath", "indexOfLastSlash", "pathSep", "initializeNativeFS", "module", "FS", "MEMFS", "PATH", "nativeFSAsync", "mount", "populate", "callback", "local", "remote", "src", "dst", "e", "entries", "isRealDir", "p", "__name", "toAbsolute", "root", "check", "path", "stat", "handles", "getFsHandles", "handle", "node", "entry", "file", "parentDirHandle", "writable", "total", "create", "key", "e2", "remove", "relPath", "dirHandle", "collect", "curDirHandle", "result", "relativePath", "createModule", "Module", "status", "toThrow", "__name", "createHomeDirectory", "path", "fallbackPath", "e", "setEnvironment", "env", "mountLocalDirectories", "mounts", "mount", "installStdlib", "stdlibURL", "stdlibPromise", "loadBinaryFile", "pymajor", "pyminor", "stdlib", "initializeFileSystem", "config", "stdLibURL", "initializeNativeFS", "preloadWasm", "indexURL", "binary", "response", "getBinaryResponse", "imports", "successCallback", "res", "instance", "module", "version", "loadPyodide", "options", "initNodeModules", "indexURL", "calculateDirname", "resolvePath", "default_config", "config", "Module", "createModule", "API", "loadLockFile", "preloadWasm", "initializeFileSystem", "moduleLoaded", "r", "path", "scriptSrc", "loadScript", "version", "pyodide", "__name", "loadPyodide"]
|
|
}
|