var Q=Object.defineProperty;var o=(e,t)=>Q(e,"name",{value:t,configurable:!0}),R=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var W=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return n=>{for(var i=n.length,s=new Uint8Array((i-(n[i-1]=="=")-(n[i-2]=="="))*3/4|0),r=0,a=0;r>4,s[a++]=l<<4|d>>2,s[a++]=d<<6|u}return s}})();function Z(e){return!isNaN(parseFloat(e))&&isFinite(e)}o(Z,"_isNumber");function P(e){return e.charAt(0).toUpperCase()+e.substring(1)}o(P,"_capitalize");function D(e){return function(){return this[e]}}o(D,"_getter");var N=["isConstructor","isEval","isNative","isToplevel"],I=["columnNumber","lineNumber"],S=["fileName","functionName","source"],ee=["args"],te=["evalOrigin"],F=N.concat(I,S,ee,te);function p(e){if(e)for(var t=0;t-1&&(r=r.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var a=r.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),c=a.match(/ (\(.+\)$)/);a=c?a.replace(c[0],""):a;var l=this.extractLocation(c?c[1]:a),d=c&&a||void 0,u=["eval",""].indexOf(l[0])>-1?void 0:l[0];return new A({functionName:d,fileName:u,lineNumber:l[1],columnNumber:l[2],source:r})},this)},"ErrorStackParser$$parseV8OrIE"),parseFFOrSafari:o(function(i){var s=i.stack.split(` `).filter(function(r){return!r.match(t)},this);return s.map(function(r){if(r.indexOf(" > eval")>-1&&(r=r.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),r.indexOf("@")===-1&&r.indexOf(":")===-1)return new A({functionName:r});var a=/((.*".+"[^@]*)?[^@]*)(?:@)/,c=r.match(a),l=c&&c[1]?c[1]:void 0,d=this.extractLocation(r.replace(a,""));return new A({functionName:l,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:r})},this)},"ErrorStackParser$$parseFFOrSafari")}}o(ne,"ErrorStackParser");var re=new ne;var M=re;function ie(){if(typeof API<"u"&&API!==globalThis.API)return API.runtimeEnv;let e=typeof Bun<"u",t=typeof Deno<"u",n=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,i=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")===-1&&navigator.userAgent.indexOf("Safari")>-1,s=typeof read=="function"&&typeof load=="function",r=typeof navigator=="object"&&navigator.userAgent?.includes("Cloudflare-Workers");return oe({IN_BUN:e,IN_DENO:t,IN_NODE:n,IN_SAFARI:i,IN_SHELL:s,IN_WORKERD:r})}o(ie,"getGlobalRuntimeEnv");var f=ie();function oe(e){let t=e.IN_NODE&&typeof module<"u"&&module.exports&&typeof R=="function"&&typeof __dirname=="string",n=e.IN_NODE&&!t,i=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,s=i&&typeof window<"u"&&typeof window.document<"u"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof globalThis.importScripts!="function",r=i&&typeof globalThis.WorkerGlobalScope<"u"&&typeof globalThis.self<"u"&&globalThis.self instanceof globalThis.WorkerGlobalScope;if(r&&ae())throw new Error("Classic web workers are not supported");let a={...e,IN_BROWSER:i,IN_BROWSER_MAIN_THREAD:s,IN_BROWSER_WEB_WORKER:r,IN_NODE_COMMONJS:t,IN_NODE_ESM:n};if(!(a.IN_BROWSER_MAIN_THREAD||a.IN_BROWSER_WEB_WORKER||a.IN_NODE||a.IN_SHELL||a.IN_WORKERD))throw new Error(`Cannot determine runtime environment: ${JSON.stringify(a)}`);return a}o(oe,"calculateDerivedFlags");function ae(){try{return globalThis.importScripts("data:text/javascript,"),!0}catch{return!1}}o(ae,"isClassicWorker");var $,x,se,B,L;async function C(){if(!f.IN_NODE||($=(await import("node:url")).default,B=await import("node:fs"),L=await import("node:fs/promises"),se=(await import("node:vm")).default,x=await import("node:path"),T=x.sep,typeof R<"u"))return;let e=B,t=await import("node:crypto"),n=await import("ws"),i=await import("node:child_process"),s={fs:e,crypto:t,ws:n,child_process:i};globalThis.require=function(r){return s[r]}}o(C,"initNodeModules");function le(e,t){return x.resolve(t||".",e)}o(le,"node_resolvePath");function ce(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}o(ce,"browser_resolvePath");var w;f.IN_NODE?w=le:f.IN_SHELL?w=o(e=>e,"resolvePath"):w=ce;var T;f.IN_NODE||(T="/");function de(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:L.readFile(e).then(n=>new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}}o(de,"node_getBinaryResponse");function ue(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("://"))throw new Error("Shell cannot fetch urls");return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}o(ue,"shell_getBinaryResponse");function fe(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}o(fe,"browser_getBinaryResponse");var _;f.IN_NODE?_=de:f.IN_SHELL?_=ue:_=fe;async function j(e,t){let{response:n,binary:i}=_(e,t);if(i)return i;let s=await n;if(!s.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await s.arrayBuffer())}o(j,"loadBinaryFile");var O;f.IN_NODE?O=me:O=o(async e=>await import(e),"loadScript");async function me(e){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?await import(e):await import($.pathToFileURL(e).href)}o(me,"nodeLoadScript");async function H(e){if(f.IN_NODE){await C();let t=await L.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else if(f.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}o(H,"loadLockFile");async function J(){if(f.IN_NODE_COMMONJS)return __dirname;let e;try{throw new Error}catch(i){e=i}let t=M.parse(e)[0].fileName;if(f.IN_NODE&&!t.startsWith("file://")&&(t=`file://${t}`),f.IN_NODE_ESM){let i=await import("node:path");return(await import("node:url")).fileURLToPath(i.dirname(t))}let n=t.lastIndexOf(T);if(n===-1)throw new Error("Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.");return t.slice(0,n)}o(J,"calculateDirname");function V(e){return e.substring(0,e.lastIndexOf("/")+1)||globalThis.location?.toString()||"."}o(V,"calculateInstallBaseUrl");function z(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:o(function(r){if(!r.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return n.mount.apply(null,arguments)},"mount"),syncfs:o(async(r,a,c)=>{try{let l=s.getLocalSet(r),d=await s.getRemoteSet(r),u=a?d:l,y=a?l:d;await s.reconcile(r,u,y),c(null)}catch(l){c(l)}},"syncfs"),getLocalSet:o(r=>{let a=Object.create(null);function c(u){return u!=="."&&u!==".."}o(c,"isRealDir");function l(u){return y=>i.join2(u,y)}o(l,"toAbsolute");let d=t.readdir(r.mountpoint).filter(c).map(l(r.mountpoint));for(;d.length;){let u=d.pop(),y=t.stat(u);t.isDir(y.mode)&&d.push.apply(d,t.readdir(u).filter(c).map(l(u))),a[u]={timestamp:y.mtime,mode:y.mode}}return{type:"local",entries:a}},"getLocalSet"),getRemoteSet:o(async r=>{let a=Object.create(null),c=await pe(r.opts.fileSystemHandle);for(let[l,d]of c)l!=="."&&(a[i.join2(r.mountpoint,l)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?s.FILE_MODE:s.DIR_MODE});return{type:"remote",entries:a,handles:c}},"getRemoteSet"),loadLocalEntry:o(r=>{let c=t.lookupPath(r,{}).node,l=t.stat(r);if(t.isDir(l.mode))return{timestamp:l.mtime,mode:l.mode};if(t.isFile(l.mode))return c.contents=n.getFileDataAsTypedArray(c),{timestamp:l.mtime,mode:l.mode,contents:c.contents};throw new Error("node type not supported")},"loadLocalEntry"),storeLocalEntry:o((r,a)=>{if(t.isDir(a.mode))t.mkdirTree(r,a.mode);else if(t.isFile(a.mode))t.writeFile(r,a.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(r,a.mode),t.utime(r,a.timestamp,a.timestamp)},"storeLocalEntry"),removeLocalEntry:o(r=>{var a=t.stat(r);t.isDir(a.mode)?t.rmdir(r):t.isFile(a.mode)&&t.unlink(r)},"removeLocalEntry"),loadRemoteEntry:o(async r=>{if(r.kind==="file"){let a=await r.getFile();return{contents:new Uint8Array(await a.arrayBuffer()),mode:s.FILE_MODE,timestamp:new Date(a.lastModified)}}else{if(r.kind==="directory")return{mode:s.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+r.kind)}},"loadRemoteEntry"),storeRemoteEntry:o(async(r,a,c)=>{let l=r.get(i.dirname(a)),d=t.isFile(c.mode)?await l.getFileHandle(i.basename(a),{create:!0}):await l.getDirectoryHandle(i.basename(a),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(c.contents),await u.close()}r.set(a,d)},"storeRemoteEntry"),removeRemoteEntry:o(async(r,a)=>{await r.get(i.dirname(a)).removeEntry(i.basename(a)),r.delete(a)},"removeRemoteEntry"),reconcile:o(async(r,a,c)=>{let l=0,d=[];Object.keys(a.entries).forEach(function(m){let g=a.entries[m],h=c.entries[m];(!h||t.isFile(g.mode)&&g.timestamp.getTime()>h.timestamp.getTime())&&(d.push(m),l++)}),d.sort();let u=[];if(Object.keys(c.entries).forEach(function(m){a.entries[m]||(u.push(m),l++)}),u.sort().reverse(),!l)return;let y=a.type==="remote"?a.handles:c.handles;for(let m of d){let g=i.normalize(m.replace(r.mountpoint,"/")).substring(1);if(c.type==="local"){let h=y.get(g),X=await s.loadRemoteEntry(h);s.storeLocalEntry(m,X)}else{let h=s.loadLocalEntry(m);await s.storeRemoteEntry(y,g,h)}}for(let m of u)if(c.type==="local")s.removeLocalEntry(m);else{let g=i.normalize(m.replace(r.mountpoint,"/")).substring(1);await s.removeRemoteEntry(y,g)}},"reconcile")};e.FS.filesystems.NATIVEFS_ASYNC=s}o(z,"initializeNativeFS");var pe=o(async e=>{let t=[];async function n(s){for await(let r of s.values())t.push(r),r.kind==="directory"&&await n(r)}o(n,"collect"),await n(e);let i=new Map;i.set(".",e);for(let s of t){let r=(await e.resolve(s)).join("/");i.set(r,s)}return i},"getFsHandles");var G=W("AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECBygCE0pzdl9HZXRFcnJvcl9pbXBvcnQAAA5Kc3ZFcnJvcl9DaGVjawABChMCBwD7AQD7GwsJACAA+xr7FAAL");var ge=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&typeof navigator.maxTouchPoints<"u"&&navigator.maxTouchPoints>1)))try{let t=await WebAssembly.compile(G);return await WebAssembly.instantiate(t)}catch(t){if(t instanceof WebAssembly.CompileError)return;throw t}}();async function K(){let e=await ge;if(e)return e.exports;let t=Symbol("error marker");return{Jsv_GetError_import:o(()=>t,"Jsv_GetError_import"),JsvError_Check:o(n=>n===t,"JsvError_Check")}}o(K,"getJsvErrorImport");function q(e){let t={config:e,runtimeEnv:f},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:Ne(e),print:e.stdout,printErr:e.stderr,onExit(i){n.exitCode=i},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:o(i=>e.indexURL+i,"locateFile"),instantiateWasm:Ie(e.indexURL)};return n}o(q,"createSettings");function ve(e){return function(t){let n="/";try{t.FS.mkdirTree(e)}catch(i){console.error(`Error occurred while making a home directory '${e}':`),console.error(i),console.error(`Using '${n}' for a home directory instead`),e=n}t.FS.chdir(e)}}o(ve,"createHomeDirectory");function be(e){return function(t){Object.assign(t.ENV,e)}}o(be,"setEnvironment");function Ee(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}o(Ee,"callFsInitHook");function Pe(e){let t=e.HEAPU32[e._Py_Version>>>2],n=t>>>24&255,i=t>>>16&255,s=t>>>8&255;return[n,i,s]}o(Pe,"computeVersionTuple");function he(e){let t=j(e);return async n=>{n.API.pyVersionTuple=Pe(n);let[i,s]=n.API.pyVersionTuple;n.FS.mkdirTree("/lib"),n.API.sitePackages=`/lib/python${i}.${s}/site-packages`,n.FS.mkdirTree(n.API.sitePackages),n.addRunDependency("install-stdlib");try{let r=await t;n.FS.writeFile(`/lib/python${i}${s}.zip`,r)}catch(r){console.error("Error occurred while installing the standard library:"),console.error(r)}finally{n.removeRunDependency("install-stdlib")}}}o(he,"installStdlib");function Ne(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[he(t),ve(e.env.HOME),be(e.env),z,...Ee(e.fsInit)]}o(Ne,"getFileSystemInitializationFuncs");function Ie(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:n}=_(e+"pyodide.asm.wasm"),i=K();return function(s,r){return async function(){let{Jsv_GetError_import:a,JsvError_Check:c}=await i;s.env.Jsv_GetError_import=a,s.env.JsvError_Check=c;try{let l;n?l=await WebAssembly.instantiateStreaming(n,s):l=await WebAssembly.instantiate(await t,s);let{instance:d,module:u}=l;r(d,u)}catch(l){console.warn("wasm instantiation failed!"),console.warn(l)}}(),{}}}o(Ie,"getInstantiateWasmFunc");var Y="314.0.3";function k(e){return e===void 0||e.endsWith("/")?e:e+"/"}o(k,"withTrailingSlash");var U=Y;async function Se(e={}){if(await C(),e.lockFileContents&&e.lockFileURL)throw new Error("Can't pass both lockFileContents and lockFileURL");let t=e.indexURL||await J();if(t=k(w(t)),e.packageBaseUrl=k(e.packageBaseUrl),e.cdnUrl=k(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v${U}/full/`),!e.lockFileContents){let s=e.lockFileURL??t+"pyodide-lock.json";e.lockFileContents=H(s),e.packageBaseUrl??=V(s)}e.indexURL=t,e.packageCacheDir&&(e.packageCacheDir=k(w(e.packageCacheDir)));let n={jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:"2cf7085e96ffaa58f5400af724c388859f9e21586cf6f254da008c60685a5d05"},i=Object.assign(n,e);return i.env.HOME??="/home/pyodide",i.env.PYTHONINSPECT??="1",i}o(Se,"initializeConfiguration");function we(e){let t=q(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}o(we,"createEmscriptenSettings");async function _e(e){if(e.createPyodideModule)return e.createPyodideModule;let t=`${e.indexURL}pyodide.asm.mjs`;return(await O(t)).default}o(_e,"loadWasmScript");async function ke(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,i=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=i.length,i}o(ke,"prepareSnapshot");async function Re(e,t){let n=await e(t);if(t.exitCode!==void 0)throw new n.ExitStatus(t.exitCode);return n}o(Re,"instantiatePyodideModule");function Fe(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==U&&t.checkAPIVersion)throw new Error(`Pyodide version does not match: '${U}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=i=>{throw i.endsWith(".so")?new Error(`Failed to find dynamic library "${i}"`):new Error(`Unexpected call to locateFile("${i}")`)}}o(Fe,"configureAPI");function Ae(e,t,n){let i=e.API,s;return t&&(s=i.restoreSnapshot(t)),i.finalizeBootstrap(s,n._snapshotDeserializer)}o(Ae,"bootstrapPyodide");async function Oe(e,t){let n=e._api;return n.sys.path.insert(0,""),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}o(Oe,"finalizeSetup");async function dt(e={}){let t=await Se(e),n=we(t),i=await _e(t),s=await ke(t,n),r=await Re(i,n);Fe(r,t);let a=Ae(r,s,t);return await Oe(a,t)}o(dt,"loadPyodide");export{dt as loadPyodide,U as version};