UNPKG

@jupyterlite/xeus-python-kernel

Version:

A Python kernel for JupyterLite, powered by Xeus

8 lines (5 loc) 4.11 MB
var createXeusModule = (() => { var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; return ( function(moduleArg = {}) { var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});const _NULL="0";const _UNDEFINED="1";const _OBJECT="2";const _STR="3";const _INT="4";const _FLOAT="5";const _BOOL="6";const _FUNCTION="7";function _get_type_string(instance){if(instance===null){return _NULL}else if(instance===undefined){return _UNDEFINED}else{const type=typeof instance;if(type==="object"){const constructor=instance.constructor;if(constructor!==undefined){return constructor.name}return _OBJECT}else if(type==="string"){return _STR}else if(type==="number"){if(Number.isInteger(instance)){return _INT}else{return _FLOAT}}else if(type==="boolean"){return _BOOL}else if(type==="function"){return _FUNCTION}else{console.log(instance,"is unhandled type");throw Error("internal error -- this should be unreachable")}}}Module["_get_type_string"]=_get_type_string;function _wrap_void_result(){return{has_err:false,has_ret:false}}function _wrap_return_value(raw_ret){const is_none=raw_ret===undefined||raw_ret===null;let wret={ret:raw_ret,has_err:false,has_ret:!is_none,type_string:_get_type_string(raw_ret)};return wret}function _wrap_jreturn_value(raw_ret){if(raw_ret===undefined){return{ret:"",has_err:false}}else{return{ret:JSON.stringify(raw_ret),has_err:false}}}function _wrap_catched_error(err){return{err:err,has_err:true,has_ret:false}}function isPromise(p){if(p!==null&&typeof p==="object"&&typeof p.then==="function"&&typeof p.catch==="function"){return true}return false}Module["_apply_try_catch"]=function(obj,args,is_generated_proxy){try{let res=obj(...args);if(isPromise(res)){res.then(value=>{for(let i=0;i<is_generated_proxy.length;++i){if(is_generated_proxy[i]){args[i].delete()}}})}else{for(let i=0;i<is_generated_proxy.length;++i){if(is_generated_proxy[i]){args[i].delete()}}}return _wrap_return_value(res)}catch(e){return _wrap_catched_error(e)}};Module["_gapply_try_catch"]=function(obj,args,is_generated_proxy,jin,jout){try{if(jin){args=JSON.parse(args)}if(jout){return _wrap_jreturn_value(obj(...args))}else{return _wrap_return_value(obj(...args))}}catch(e){return _wrap_catched_error(e)}};Module["_japply_try_catch"]=function(obj,jargs){try{args=JSON.parse(jargs);return _wrap_return_value(obj(...args))}catch(e){return _wrap_catched_error(e)}};Module["_getattr_try_catch"]=function(obj,property_name){try{let ret=obj[property_name];if(typeof ret==="function"){return _wrap_return_value(ret.bind(obj))}else{return _wrap_return_value(ret)}}catch(e){return _wrap_catched_error(e)}};Module["_setattr_try_catch"]=function(obj,property_name,value){try{obj[property_name]=value;return _wrap_void_result()}catch(e){return _wrap_catched_error(e)}};Module["_set_promise_then_catch"]=function(promise,py_object_then,py_object_catch){let already_called=false;var callable_then=function(v){py_object_then.__usafe_void_val__(v);py_object_then.delete();py_object_catch.delete()};var callable_catch=function(err){str_err=JSON.stringify(err,Object.getOwnPropertyNames(err));py_object_catch.__usafe_void_val__(str_err);py_object_then.delete();py_object_catch.delete()};promise.then(callable_then).catch(callable_catch)};Module["_future_to_promise"]=function(py_future){let p=new Promise(function(resolve,reject){Module._add_resolve_done_callback.py_call(py_future,resolve,reject)});p.then(function(value){py_future.delete()},function(reason){py_future.delete()});return p};Module["_create_once_callable"]=function(py_object){let already_called=false;var once_callable=function(...args){if(already_called){throw new Error("once_callable can only be called once")}already_called=true;ret=py_object.py_call(...args);py_object.delete();return ret};return once_callable};Module["_create_once_callable_unsave_void_void"]=function(py_object){let already_called=false;var once_callable=function(){if(already_called){throw new Error("once_callable can only be called once")}already_called=true;py_object.__usafe_void_void__();py_object.delete()};return once_callable};Module["_is_null"]=function(value){return value===null};Module["_is_undefined"]=function(value){return value===undefined};Module["_is_undefined_or_null"]=function(value){return value===undefined||value===null};Module["__len__"]=function(instance){return instance.length||instance.size};Module["__contains__"]=function(instance,query){let _has=false;let _includes=false;try{_has=instance.has(query)}catch(e){}try{_has=instance.includes(query)}catch(e){}return _has||_includes};Module["_dir"]=function dir(x){let result=[];do{result.push(...Object.getOwnPropertyNames(x))}while(x=Object.getPrototypeOf(x));return result};Module["_iter"]=function dir(x){return x[Symbol.iterator]()};Module["_async_import_javascript"]=async function(import_str){return import(import_str)};Module["__eq__"]=function(a,b){return a===b};Module["_new"]=function(cls,...args){return new cls(...args)};Module["_instanceof"]=function(instance,cls){return instance instanceof cls};Module["_typeof"]=function(x){return typeof x};Module["_delete"]=function(x,key){delete x[key]};Module["_IS_NODE"]=typeof process==="object"&&typeof require==="function";Module["_IS_BROWSER_WORKER_THREAD"]=typeof importScripts==="function";Module["_IS_BROWSER_MAIN_THREAD"]=typeof window==="object";Module["_wait_run_dependencies"]=function(){const promise=new Promise(r=>{Module.monitorRunDependencies=n=>{if(n===0){r()}}});Module.addRunDependency("dummy");Module.removeRunDependency("dummy");return promise};Module._is_initialized=false;Module["init"]=async function(prefix,python_version){let version_str=`${python_version[0]}.${python_version[1]}`;let py_objects=[];Module._py_objects=py_objects;if(Module["_is_initialized"]){return Promise.resolve()}var p=await Module["_wait_run_dependencies"]();if(prefix=="/"){Module.setenv("PYTHONHOME",`/`);Module.setenv("PYTHONPATH",`/lib/python${version_str}/site-packages:/usr/lib/python${version_str}`);var side_path=`/lib/python${version_str}/site-packages`}else{Module.setenv("PYTHONHOME",prefix);Module.setenv("PYTHONPATH",`${prefix}/lib/python${version_str}/site-packages:/usr/lib/python${version_str}`);var side_path=`${prefix}/lib/python${version_str}/site-packages`}console.log("Module is",Module);console.log("Module FS is",Module.FS);if(!Module.FS.isDir(side_path)){Module.FS.mkdir(side_path)}Module["_interpreter"]=new Module["_Interpreter"];var default_scope=Module["main_scope"]();Module["default_scope"]=default_scope;Module["_py_objects"].push(Module["default_scope"]);Module["_py_objects"].push(Module["_interpreter"]);Module["exec"]=function(code,globals=default_scope,locals=default_scope){let ret=Module._exec(code,globals,locals);if(ret.has_err){throw ret}};Module["eval"]=function(code,globals=default_scope,locals=default_scope){let ret=Module._eval(code,globals,locals);if(ret.has_err){throw ret}else{return ret["ret"]}};Module["eval_file"]=function(file,globals=default_scope,locals=default_scope){let ret=Module._eval_file(file,globals,locals);if(ret.has_err){throw ret}};Module["pyobject"].prototype._getattr=function(attr_name){let ret=this._raw_getattr(attr_name);if(ret.has_err){throw ret}else{return ret["ret"]}};Module["pyobject"].prototype.py_call=function(...args){return this.py_apply(args)};Module["pyobject"].prototype.py_apply=function(args,kwargs){if(args===undefined){var args=[];var args_types=[]}else{var args_types=args.map(Module["_get_type_string"])}if(kwargs===undefined){var kwargs={};var kwargs_keys=[];var kwargs_values=[];var kwarg_values_types=[]}else{var kwargs_keys=Object.keys(kwargs);var kwargs_values=Object.values(kwargs);var kwarg_values_types=kwargs_values.map(Module["_get_type_string"])}let ret=this._raw_apply(args,args_types,args.length,kwargs_keys,kwargs_values,kwarg_values_types,kwargs_keys.length);if(ret.has_err){throw ret}else{return ret["ret"]}};Module["pyobject"].prototype.get=function(...keys){let types=keys.map(Module["_get_type_string"]);let ret=this._raw_getitem(keys,types,keys.length);if(ret.has_err){throw ret}else{return ret["ret"]}};Module.exec("import pyjs");Module.py_pyjs=Module.eval("pyjs");py_objects.push(Module.py_pyjs);Module._py_exec_eval=Module.eval("pyjs.exec_eval");py_objects.push(Module._py_exec_eval);Module.exec_eval=function(script,globals=default_scope,locals=default_scope){return Module._py_exec_eval.py_call(script,globals,locals)};Module._py_async_exec_eval=Module.eval("pyjs.async_exec_eval");py_objects.push(Module._py_async_exec_eval);Module.async_exec_eval=async function(script,globals=default_scope,locals=default_scope){return await Module._py_async_exec_eval.py_call(script,globals,locals)};Module._add_resolve_done_callback=Module.exec_eval(`\nimport asyncio\ndef _add_resolve_done_callback(future, resolve, reject):\n ensured_future = asyncio.ensure_future(future)\n def done(f):\n try:\n resolve(f.result())\n except Exception as err:\n reject(repr(err))\n\n ensured_future.add_done_callback(done)\n_add_resolve_done_callback\n `);py_objects.push(Module._add_resolve_done_callback);Module._py_to_js=Module.eval("pyjs.to_js");py_objects.push(Module._py_to_js);Module["to_js"]=function(obj){return Module._py_to_js.py_call(obj)};Module._is_initialized=true;Module.exec(`\nimport sys\nimport types\nimport time\n\nsys.modules["fcntl"] = types.ModuleType("fcntl")\nsys.modules["pexpect"] = types.ModuleType("pexpect")\nsys.modules["resource"] = types.ModuleType("resource")\n\ndef _mock_time_sleep():\n def sleep(seconds):\n """Delay execution for a given number of seconds. The argument may be\n a floating point number for subsecond precision.\n """\n start = now = time.time()\n while now - start < seconds:\n now = time.time()\n\n time.sleep = sleep\n_mock_time_sleep()\ndel _mock_time_sleep\n\ndef _mock_termios():\n termios_mock = types.ModuleType("termios")\n termios_mock.TCSAFLUSH = 2\n sys.modules["termios"] = termios_mock\n_mock_termios()\ndel _mock_termios\n\ndef _mock_webbrowser():\n def open(url, new=0, autoraise=True):\n pass\n def open_new(url):\n return open(url, 1)\n def open_new_tab(url):\n return open(url, 2)\n\n webbrowser_mock = types.ModuleType("webbrowser")\n webbrowser_mock.open = open\n webbrowser_mock.open_new = open_new\n webbrowser_mock.open_new_tab = open_new_tab\n\n sys.modules["webbrowser"] = webbrowser_mock\n_mock_webbrowser()\ndel _mock_webbrowser\n`);return p};Module["cleanup"]=function(){if(Module["_is_initialized"]){Module["_py_objects"].forEach(pyobject=>pyobject.delete());Module["_is_initialized"]=false}};Module["make_proxy"]=function(py_object){const handler={get(target,property,receiver){var ret=target[property];if(ret!==undefined){return ret}return target._getattr(property)}};return new Proxy(py_object,handler)};const memoize=fn=>{let cache={};return(...args)=>{let n=args[0];if(n in cache){return cache[n]}else{let result=fn(n);cache[n]=result;return result}}};function createLock(){let _lock=Promise.resolve();async function acquireLock(){const old_lock=_lock;let releaseLock=()=>{};_lock=new Promise(resolve=>releaseLock=resolve);await old_lock;return releaseLock}return acquireLock}function isInSharedLibraryPath(prefix,libPath){if(libPath.startsWith("/")){const dirname=libPath.substring(0,libPath.lastIndexOf("/"));if(prefix=="/"){return dirname==`/lib`}else{return dirname==`${prefix}/lib`}}else{return false}}async function loadDynlibsFromPackage(prefix,python_version,pkg_file_name,pkg_is_shared_library,dynlibPaths){if(prefix=="/"){var sitepackages=`/lib/python${python_version[0]}.${python_version[1]}/site-packages`}else{var sitepackages=`${prefix}/lib/python${python_version[0]}.${python_version[1]}/site-packages`}const auditWheelLibDir=`${sitepackages}/${pkg_file_name.split("-")[0]}.libs`;const readFileMemoized=memoize(Module.FS.readFile);const forceGlobal=!!pkg_is_shared_library;let dynlibs=[];if(forceGlobal){dynlibs=dynlibPaths.map(path=>({path:path,global:true}))}else{const globalLibs=calculateGlobalLibs(dynlibPaths,readFileMemoized);dynlibs=dynlibPaths.map(path=>{const global=globalLibs.has(Module.PATH.basename(path));return{path:path,global:global||!!pkg_is_shared_library||isInSharedLibraryPath(prefix,path)||path.startsWith(auditWheelLibDir)}})}dynlibs.sort((lib1,lib2)=>Number(lib2.global)-Number(lib1.global));for(const{path:path,global:global}of dynlibs){await loadDynlib(prefix,path,global,[auditWheelLibDir],readFileMemoized)}}function createDynlibFS(prefix,lib,searchDirs,readFileFunc){const dirname=lib.substring(0,lib.lastIndexOf("/"));let _searchDirs=searchDirs||[];if(prefix=="/"){_searchDirs=_searchDirs.concat([dirname],[`/lib`])}else{_searchDirs=_searchDirs.concat([dirname],[`${prefix}/lib`])}const resolvePath=path=>{if(Module.PATH.basename(path)!==Module.PATH.basename(lib)){}for(const dir of _searchDirs){const fullPath=Module.PATH.join2(dir,path);if(Module.FS.findObject(fullPath)!==null){return fullPath}}return path};let readFile=path=>Module.FS.readFile(resolvePath(path));if(readFileFunc!==undefined){readFile=path=>readFileFunc(resolvePath(path))}const fs={findObject:(path,dontResolveLastLink)=>{let obj=Module.FS.findObject(resolvePath(path),dontResolveLastLink);if(obj===null){console.debug(`Failed to find a library: ${resolvePath(path)}`)}return obj},readFile:readFile};return fs}function calculateGlobalLibs(libs,readFileFunc){let readFile=Module.FS.readFile;if(readFileFunc!==undefined){readFile=readFileFunc}const globalLibs=new Set;libs.forEach(lib=>{const binary=readFile(lib);const needed=Module.getDylinkMetadata(binary).neededDynlibs;needed.forEach(lib=>{globalLibs.add(lib)})});return globalLibs}const acquireDynlibLock=createLock();async function loadDynlib(prefix,lib,global,searchDirs,readFileFunc){if(searchDirs===undefined){searchDirs=[]}const releaseDynlibLock=await acquireDynlibLock();try{const fs=createDynlibFS(prefix,lib,searchDirs,readFileFunc);const libName=Module.PATH.basename(lib);await Module.loadDynamicLibrary(libName,{loadAsync:true,nodelete:true,allowUndefined:true,global:global,fs:fs});const dsoOnlyLibName=Module.LDSO.loadedLibsByName[libName];const dsoFullLib=Module.LDSO.loadedLibsByName[lib];if(!dsoOnlyLibName&&!dsoFullLib){console.execption(`Failed to load ${libName} from ${lib} LDSO not found`)}if(!dsoOnlyLibName){Module.LDSO.loadedLibsByName[libName]=dsoFullLib}if(!dsoFullLib){Module.LDSO.loadedLibsByName[lib]=dsoOnlyLibName}}finally{releaseDynlibLock()}}Module["_loadDynlibsFromPackage"]=loadDynlibsFromPackage;async function fetchByteArray(url){let response=await fetch(url);if(!response.ok){throw new Error(`HTTP error! status: ${response.status}`)}let arrayBuffer=await response.arrayBuffer();let byte_array=new Uint8Array(arrayBuffer);return byte_array}Module["_fetch_byte_array"]=fetchByteArray;async function fetchJson(url){let response=await fetch(url);if(!response.ok){throw new Error(`HTTP error! status: ${response.status}`)}let json=await response.json();return json}Module["_parallel_fetch_array_buffer"]=async function(urls){let promises=urls.map(url=>fetch(url).then(response=>response.arrayBuffer()));return await Promise.all(promises)};Module["_parallel_fetch_arraybuffers_with_progress_bar"]=async function(urls,done_callback,progress_callback){if(done_callback===undefined||done_callback===null){done_callback=async function(index,byte_array){}}if(progress_callback===undefined||progress_callback===null){let f=async function(index){let res=await fetch(urls[index]);if(!res.ok){throw new Error(`HTTP error! when fetching ${urls[index]} status: ${res.status}`)}const arrayBuffer=await res.arrayBuffer();const byteArray=new Uint8Array(arrayBuffer);await done_callback(index,byteArray);return byteArray};let futures=[];for(let i=0;i<urls.length;i++){futures.push(f(i))}return await Promise.all(futures)}async function fetch_arraybuffer_with_progress_bar(url,index,report_total_length,report_progress,report_finished){let response=await fetch(url);if(!response.ok){throw new Error(`HTTP error! status: ${response.status}`)}const reader=response.body.getReader();const contentLength=+response.headers.get("Content-Length");report_total_length(index,contentLength);let receivedLength=0;let chunks=[];while(true){const{done:done,value:value}=await reader.read();if(done){report_finished(index);break}chunks.push(value);receivedLength+=value.length;report_progress(index,receivedLength)}let chunksAll=new Uint8Array(receivedLength);let position=0;for(let chunk of chunks){chunksAll.set(chunk,position);position+=chunk.length}await done_callback(index,chunksAll);return chunksAll}let n_urls=urls.length;let receivedArr=Array(n_urls).fill(0);let totalArr=Array(n_urls).fill(0);let finishedArr=Array(n_urls).fill(0);function on_progress(){let total=totalArr.reduce((partialSum,a)=>partialSum+a,0);let recived=receivedArr.reduce((partialSum,a)=>partialSum+a,0);let n_finished=finishedArr.reduce((partialSum,a)=>partialSum+a,0);if(progress_callback!==undefined){progress_callback(recived,total,n_finished,n_urls)}}function report_finished(index){finishedArr[index]=1;on_progress()}function report_total_length(index,total){totalArr[index]=total;on_progress()}function report_progress(index,p){receivedArr[index]=p;on_progress()}let futures=urls.map((url,index)=>fetch_arraybuffer_with_progress_bar(url,index,report_total_length,report_progress,report_finished));return await Promise.all(futures)};Module["mkdirs"]=function(dirname){let parent_dirs=[];let parent_dir=dirname;while(parent_dir!=""){parent_dirs.push(parent_dir);parent_dir=parent_dir.split("/").slice(0,-1).join("/")}console.log(parent_dirs);parent_dirs=parent_dirs.reverse();for(let parent_dir of parent_dirs){if(!Module.FS.isDir(parent_dir)){Module.FS.mkdir(parent_dir)}}};function untar_from_python(tarball_path,target_dir=""){let shared_libs=Module.exec_eval(`\nimport tarfile\nimport json\nimport pyjs\nfrom pathlib import Path\nimport tempfile\nimport shutil\nimport os\nimport sys\n\n\ndef check_wasm_magic_number(file_path: Path) -> bool:\n WASM_BINARY_MAGIC = b"\\0asm"\n with file_path.open(mode="rb") as file:\n return file.read(4) == WASM_BINARY_MAGIC\n\n \ntarget_dir = "${target_dir}"\nif target_dir == "":\n target_dir = sys.prefix\ntry:\n with tarfile.open("${tarball_path}") as tar:\n files = tar.getmembers()\n shared_libs = []\n for file in files:\n if file.name.endswith(".so"):\n \n if target_dir == "/":\n shared_libs.append(f"/{file.name}")\n else:\n shared_libs.append(f"{target_dir}/{file.name}")\n\n tar.extractall(target_dir)\n for file in shared_libs:\n if not check_wasm_magic_number(Path(file)):\n print(f" {file} is not a wasm file")\n s = json.dumps(shared_libs)\nexcept Exception as e:\n print("ERROR",e)\n raise e\ns\n`);return JSON.parse(shared_libs)}Module["_untar_from_python"]=untar_from_python;async function bootstrap_python(prefix,package_tarballs_root_url,python_package){let python_package_url=`${package_tarballs_root_url}/${python_package.filename}`;console.log(`fetching python package from ${python_package_url}`);let byte_array=await fetchByteArray(python_package_url);const python_tarball_path=`/package_tarballs/${python_package.filename}`;console.log(`extract ${python_tarball_path} (${byte_array.length} bytes)`);Module.FS.writeFile(python_tarball_path,byte_array);Module._untar(python_tarball_path,prefix);let version=python_package.version.split(".").map(x=>parseInt(x));await Module.init(prefix,version)}Module["bootstrap_from_empack_packed_environment"]=async function(packages_json_url,package_tarballs_root_url,verbose=false,skip_loading_shared_libs=false){function splitPackages(packages){let python_package=undefined;for(let i=0;i<packages.length;i++){if(packages[i].name=="python"){python_package=packages[i];packages.splice(i,1);break}}if(python_package==undefined){throw new Error("no python package found in package.json")}return{python_package:python_package,packages:packages}}function makeDirs(){if(!Module.FS.isDir(`/package_tarballs`)){Module.FS.mkdir(`/package_tarballs`)}}async function fetchAndUntar(package_tarballs_root_url,python_is_ready_promise,package){let package_url=`${package_tarballs_root_url}/${package.filename}`;console.log(`fetching pkg ${package.name} from ${package_url}`);let byte_array=await fetchByteArray(package_url);const tarball_path=`/package_tarballs/${package.filename}`;Module.FS.writeFile(tarball_path,byte_array);console.log(`extract ${tarball_path} (${byte_array.length} bytes)`);await python_is_ready_promise;return untar_from_python(tarball_path)}let empack_env_meta=await fetchJson(packages_json_url);let all_packages=empack_env_meta.packages;let prefix=empack_env_meta.prefix;makeDirs();let splitted=splitPackages(all_packages);let packages=splitted.packages;let python_package=splitted.python_package;let python_version=python_package.version.split(".").map(x=>parseInt(x));let python_is_ready_promise=bootstrap_python(prefix,package_tarballs_root_url,python_package);let shared_libs=await Promise.all(packages.map(package=>fetchAndUntar(package_tarballs_root_url,python_is_ready_promise,package)));if(!skip_loading_shared_libs){for(let i=0;i<packages.length;i++){if(shared_libs[i].length>0){for(let j=0;j<shared_libs[i].length;j++){let sl=shared_libs[i][j]}await Module._loadDynlibsFromPackage(prefix,python_version,packages[i].name,false,shared_libs[i])}}}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var dynamicLibraries=Module["dynamicLibraries"]||[];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||false;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||134217728;assert(INITIAL_MEMORY>=33554432,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+33554432+")");if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536})}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable=new WebAssembly.Table({"initial":8879,"element":"anyfunc"});var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var __RELOC_FUNCS__=[];var runtimeInitialized=false;var runtimeExited=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__RELOC_FUNCS__);if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);PIPEFS.root=FS.mount(PIPEFS,{},null);callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){___funcs_on_exit();callRuntimeCallbacks(__ATEXIT__);FS.quit();TTY.shutdown();runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnExit(cb){__ATEXIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="xpython_wasm.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)};function receiveInstance(instance,module){var exports=instance.exports;exports=relocateExports(exports,1024);var metadata=getDylinkMetadata(module);if(metadata.neededDynlibs){dynamicLibraries=metadata.neededDynlibs.concat(dynamicLibraries)}mergeLibSymbols(exports,"main");LDSO.init();loadDylibs();wasmExports=exports;addOnInit(wasmExports["__wasm_call_ctors"]);__RELOC_FUNCS__.push(wasmExports["__wasm_apply_data_relocs"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var ASM_CONSTS={3936690:$0=>{if(!$0){AL.alcErr=40964;return 1}},3936738:$0=>{if(!AL.currentCtx){err("alGetProcAddress() called without a valid context");return 1}if(!$0){AL.currentCtx.err=40963;return 1}}};function unbox_small_structs(type_ptr){var type_id=HEAPU16[(type_ptr+6>>1)+0];while(type_id===13){var elements=HEAPU32[(type_ptr+8>>2)+0];var first_element=HEAPU32[(elements>>2)+0];if(first_element===0){type_id=0;break}else if(HEAPU32[(elements>>2)+1]===0){type_ptr=first_element;type_id=HEAPU16[(first_element+6>>1)+0]}else{break}}return[type_ptr,type_id]}function ffi_call_js(cif,fn,rvalue,avalue){var abi=HEAPU32[(cif>>2)+0];var nargs=HEAPU32[(cif>>2)+1];var nfixedargs=HEAPU32[(cif>>2)+6];var arg_types_ptr=HEAPU32[(cif>>2)+2];var rtype_unboxed=unbox_small_structs(HEAPU32[(cif>>2)+3]);var rtype_ptr=rtype_unboxed[0];var rtype_id=rtype_unboxed[1];var orig_stack_ptr=stackSave();var cur_stack_ptr=orig_stack_ptr;var args=[];var ret_by_arg=false;if(rtype_id===15){throw new Error("complex ret marshalling nyi")}if(rtype_id<0||rtype_id>15){throw new Error("Unexpected rtype "+rtype_id)}if(rtype_id===4||rtype_id===13){args.push(rvalue);ret_by_arg=true}for(var i=0;i<nfixedargs;i++){var arg_ptr=HEAPU32[(avalue>>2)+i];var arg_unboxed=unbox_small_structs(HEAPU32[(arg_types_ptr>>2)+i]);var arg_type_ptr=arg_unboxed[0];var arg_type_id=arg_unboxed[1];switch(arg_type_id){case 1:case 10:case 9:case 14:args.push(HEAPU32[(arg_ptr>>2)+0]);break;case 2:args.push(HEAPF32[(arg_ptr>>2)+0]);break;case 3:args.push(HEAPF64[(arg_ptr>>3)+0]);break;case 5:args.push(HEAPU8[arg_ptr+0]);break;case 6:args.push(HEAP8[arg_ptr+0]);break;case 7:args.push(HEAPU16[(arg_ptr>>1)+0]);break;case 8:args.push(HEAP16[(arg_ptr>>1)+0]);break;case 11:case 12:args.push(HEAPU64[(arg_ptr>>3)+0]);break;case 4:args.push(HEAPU64[(arg_ptr>>3)+0]);args.push(HEAPU64[(arg_ptr>>3)+1]);break;case 13:var size=HEAPU32[(arg_type_ptr>>2)+0];var align=HEAPU16[(arg_type_ptr+4>>1)+0];cur_stack_ptr-=size,cur_stack_ptr&=~(align-1);HEAP8.subarray(cur_stack_ptr,cur_stack_ptr+size).set(HEAP8.subarray(arg_ptr,arg_ptr+size));args.push(cur_stack_ptr);break;case 15:throw new Error("complex marshalling nyi");default:throw new Error("Unexpected type "+arg_type_id)}}if(nfixedargs!=nargs){var struct_arg_info=[];for(var i=nargs-1;i>=nfixedargs;i--){var arg_ptr=HEAPU32[(avalue>>2)+i];var arg_unboxed=unbox_small_structs(HEAPU32[(arg_types_ptr>>2)+i]);var arg_type_ptr=arg_unboxed[0];var arg_type_id=arg_unboxed[1];switch(arg_type_id){case 5:case 6:cur_stack_ptr-=1,cur_stack_ptr&=~(1-1);HEAPU8[cur_stack_ptr+0]=HEAPU8[arg_ptr+0];break;case 7:case 8:cur_stack_ptr-=2,cur_stack_ptr&=~(2-1);HEAPU16[(cur_stack_ptr>>1)+0]=HEAPU16[(arg_ptr>>1)+0];break;case 1:case 9:case 10:case 14:case 2:cur_stack_ptr-=4,cur_stack_ptr&=~(4-1);HEAPU32[(cur_stack_ptr>>2)+0]=HEAPU32[(arg_ptr>>2)+0];break;case 3:case 11:case 12:cur_stack_ptr-=8,cur_stack_ptr&=~(8-1);HEAPU32[(cur_stack_ptr>>2)+0]=HEAPU32[(arg_ptr>>2)+0];HEAPU32[(cur_stack_ptr>>2)+1]=HEAPU32[(arg_ptr>>2)+1];break;case 4:cur_stack_ptr-=16,cur_stack_ptr&=~(8-1);HEAPU32[(cur_stack_ptr>>2)+0]=HEAPU32[(arg_ptr>>2)+0];HEAPU32[(cur_stack_ptr>>2)+1]=HEAPU32[(arg_ptr>>2)+1];HEAPU32[(cur_stack_ptr>>2)+2]=HEAPU32[(arg_ptr>>2)+2];HEAPU32[(cur_stack_ptr>>2)+3]=HEAPU32[(arg_ptr>>2)+3];break;case 13:cur_stack_ptr-=4,cur_stack_ptr&=~(4-1);struct_arg_info.push([cur_stack_ptr,arg_ptr,HEAPU32[(arg_type_ptr>>2)+0],HEAPU16[(arg_type_ptr+4>>1)+0]]);break;case 15:throw new Error("complex arg marshalling nyi");default:throw new Error("Unexpected argtype "+arg_type_id)}}args.push(cur_stack_ptr);for(var i=0;i<struct_arg_info.length;i++){var struct_info=struct_arg_info[i];var arg_target=struct_info[0];var arg_ptr=struct_info[1];var size=struct_info[2];var align=struct_info[3];cur_stack_ptr-=size,cur_stack_ptr&=~(align-1);HEAP8.subarray(cur_stack_ptr,cur_stack_ptr+size).set(HEAP8.subarray(arg_ptr,arg_ptr+size));HEAPU32[(arg_target>>2)+0]=cur_stack_ptr}}stackRestore(cur_stack_ptr);stackAlloc(0);var result=(0,getWasmTableEntry(fn).apply(null,args));stackRestore(orig_stack_ptr);if(ret_by_arg){return}switch(rtype_id){case 0:break;case 1:case 9:case 10:case 14:HEAPU32[(rvalue>>2)+0]=result;break;case 2:HEAPF32[(rvalue>>2)+0]=result;break;case 3:HEAPF64[(rvalue>>3)+0]=result;break;case 5:case 6:HEAPU8[rvalue+0]=result;break;case 7:case 8:HEAPU16[(rvalue>>1)+0]=result;break;case 11:case 12:HEAPU64[(rvalue>>3)+0]=result;break;case 15:throw new Error("complex ret marshalling nyi");default:throw new Error("Unexpected rtype "+rtype_id)}}ffi_call_js.sig="viiii";function ffi_closure_alloc_js(size,code){var closure=_malloc(size);var index=getEmptyTableSlot();HEAPU32[(code>>2)+0]=index;HEAPU32[(closure>>2)+0]=index;return closure}ffi_closure_alloc_js.sig="iii";function ffi_closure_free_js(closure){var index=HEAPU32[(closure>>2)+0];freeTableIndexes.push(index);_free(closure)}ffi_closure_free_js.sig="vi";function ffi_prep_closure_loc_js(closure,cif,fun,user_data,codeloc){var abi=HEAPU32[(cif>>2)+0];var nargs=HEAPU32[(cif>>2)+1];var nfixedargs=HEAPU32[(cif>>2)+6];var arg_types_ptr=HEAPU32[(cif>>2)+2];var rtype_unboxed=unbox_small_structs(HEAPU32[(cif>>2)+3]);var rtype_ptr=rtype_unboxed[0];var rtype_id=rtype_unboxed[1];var sig;var ret_by_arg=false;switch(rtype_id){case 0:sig="v";break;case 13:case 4:sig="vi";ret_by_arg=true;break;case 1:case 5:case 6:case 7:case 8:case 9:case 10:case 14:sig="i";break;case 2:sig="f";break;case 3:sig="d";break;case 11:case 12:sig="j";break;case 15:throw new Error("complex ret marshalling nyi");default:throw new Error("Unexpected rtype "+rtype_id)}var unboxed_arg_type_id_list=[];var unboxed_arg_type_info_list=[];for(var i=0;i<nargs;i++){var arg_unboxed=unbox_small_structs(HEAPU32[(arg_types_ptr>>2)+i]);var arg_type_ptr=arg_unboxed[0];var arg_type_id=arg_unboxed[1];unboxed_arg_type_id_list.push(arg_type_id);unboxed_arg_type_info_list.push([HEAPU32[(arg_type_ptr>>2)+0],HEAPU16[(arg_type_ptr+4>>1)+0]])}for(var i=0;i<nfixedargs;i++){switch(unboxed_arg_type_id_list[i]){case 1:case 5:case 6:case 7:case 8:case 9:case 10:case 14:case 13:sig+="i";break;case 2:sig+="f";break;case 3:sig+="d";break;case 4:sig+="jj";break;case 11:case 12:sig+="j";break;case 15:throw new Error("complex marshalling nyi");default:throw new Error("Unexpected argtype "+arg_type_id)}}if(nfixedargs<nargs){sig+="i"}0;function trampoline(){var args=Array.prototype.slice.call(arguments);var size=0;var orig_stack_ptr=stackSave();var cur_ptr=orig_stack_ptr;var ret_ptr;var jsarg_idx=0;if(ret_by_arg){ret_ptr=args[jsarg_idx++]}else{cur_ptr-=8,cur_ptr&=~(8-1);ret_ptr=cur_ptr}cur_ptr-=4*nargs;var args_ptr=cur_ptr;var carg_idx=0;for(;carg_idx<nfixedargs;carg_idx++){var cur_arg=args[jsarg_idx++];var arg_type_info=unboxed_arg_type_info_list[carg_idx];var arg_size=arg_type_info[0];var arg_align=arg_type_info[1];var arg_type_id=unboxed_arg_type_id_list[carg_idx];switch(arg_type_id){case 5:case 6:cur_ptr-=1,cur_ptr&=~(4-1);HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;HEAPU8[cur_ptr+0]=cur_arg;break;case 7:case 8:cur_ptr-=2,cur_ptr&=~(4-1);HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;HEAPU16[(cur_ptr>>1)+0]=cur_arg;break;case 1:case 9:case 10:case 14:cur_ptr-=4,cur_ptr&=~(4-1);HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;HEAPU32[(cur_ptr>>2)+0]=cur_arg;break;case 13:cur_ptr-=arg_size,cur_ptr&=~(arg_align-1);HEAP8.subarray(cur_ptr,cur_ptr+arg_size).set(HEAP8.subarray(cur_arg,cur_arg+arg_size));HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;break;case 2:cur_ptr-=4,cur_ptr&=~(4-1);HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;HEAPF32[(cur_ptr>>2)+0]=cur_arg;break;case 3:cur_ptr-=8,cur_ptr&=~(8-1);HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;HEAPF64[(cur_ptr>>3)+0]=cur_arg;break;case 11:case 12:cur_ptr-=8,cur_ptr&=~(8-1);HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;HEAPU64[(cur_ptr>>3)+0]=cur_arg;break;case 4:cur_ptr-=16,cur_ptr&=~(8-1);HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr;HEAPU64[(cur_ptr>>3)+0]=cur_arg;cur_arg=args[jsarg_idx++];HEAPU64[(cur_ptr>>3)+1]=cur_arg;break}}var varargs=args[args.length-1];for(;carg_idx<nargs;carg_idx++){var arg_type_id=unboxed_arg_type_id_list[carg_idx];var arg_type_info=unboxed_arg_type_info_list[carg_idx];var arg_size=arg_type_info[0];var arg_align=arg_type_info[1];if(arg_type_id===13){var struct_ptr=HEAPU32[(varargs>>2)+0];cur_ptr-=arg_size,cur_ptr&=~(arg_align-1);HEAP8.subarray(cur_ptr,cur_ptr+arg_size).set(HEAP8.subarray(struct_ptr,struct_ptr+arg_size));HEAPU32[(args_ptr>>2)+carg_idx]=cur_ptr}else{HEAPU32[(args_ptr>>2)+carg_idx]=varargs}varargs+=4}stackRestore(cur_ptr);stackAlloc(0);0;getWasmTableEntry(HEAPU32[(closure>>2)+2])(HEAPU32[(closure>>2)+1],ret_ptr,args_ptr,HEAPU32[(closure>>2)+3]);stackRestore(orig_stack_ptr);if(!ret_by_arg){switch(sig[0]){case"i":return HEAPU32[(ret_ptr>>2)+0];case"j":return HEAPU64[(ret_ptr>>3)+0];case"d":return HEAPF64[(ret_ptr>>3)+0];case"f":return HEAPF32[(ret_ptr>>2)+0]}}}try{var wasm_trampoline=convertJsFunctionToWasm(trampoline,sig)}catch(e){return 1}setWasmTableEntry(codeloc,wasm_trampoline);HEAPU32[(closure>>2)+1]=cif;HEAPU32[(closure>>2)+2]=fun;HEAPU32[(closure>>2)+3]=user_data;return 0}ffi_prep_closure_loc_js.sig="iiiiii";function get_stdin(){return Asyncify.handleAsync(()=>globalThis.get_stdin().then(msg=>Emval.toHandle(msg)))}get_stdin.sig="i";function descr_set_trampoline_call(set,obj,value,closure){return wasmTable.get(set)(obj,value,closure)}descr_set_trampoline_call.sig="iiiii";function descr_get_trampoline_call(get,obj,closure){return wasmTable.get(get)(obj,closure)}descr_get_trampoline_call.sig="iiii";function _PyCFunctionWithKeywords_TrampolineCall(func,self,args,kw){return wasmTable.get(func)(self,args,kw)}_PyCFunctionWithKeywords_TrampolineCall.sig="iiiii";function _PyImport_InitFunc_TrampolineCall(func){return wasmTable.get(func)()}_PyImport_InitFunc_TrampolineCall.sig="ii";function _Py_emscripten_runtime(){var info;if(typeof navigator=="object"){info=navigator.userAgent}else if(typeof process=="object"){info="Node.js ".concat(process.version)}else{info="UNKNOWN"}var len=lengthBytesUTF8(info)+1;var res=_malloc(len);if(res)stringToUTF8(info,res,len);return res}_Py_emscripten_runtime.sig="i";function _Py_CheckEmscriptenSignals_Helper(){if(!Module.Py_EmscriptenSignalBuffer){return 0}try{let result=Module.Py_EmscriptenSignalBuffer[0];Module.Py_EmscriptenSignalBuffer[0]=0;return result}catch(e){return 0}}_Py_CheckEmscriptenSignals_Helper.sig="i";function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var GOT={};var currentModuleWeakSymbols=new Set([]);var GOTHandler={get(obj,symName){var rtn=GOT[symName];if(!rtn){rtn=GOT[symName]=new WebAssembly.Global({"value":"i32","mutable":true})}if(!currentModuleWeakSymbols.has(symName)){rtn.required=true}return rtn}};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var getDylinkMetadata=binary=>{var offset=0;var end=0;function getU8(){return binary[offset++]}function getLEB(){var ret=0;var mul=1;while(1){var byte=binary[offset++];ret+=(byte&127)*mul;mul*=128;if(!(byte&128))break}return ret}function getString(){var len=getLEB();offset+=len;return UTF8ArrayToString(binary,offset-len,len)}function failIf(condition,message){if(condition)throw new Error(message)}var name="dylink.0";if(binary instanceof WebAssembly.Module){var dylinkSection=WebAssembly.Module.customSections(binary,name);if(dylinkSection.length===0){name="dylink";dylinkSection=WebAssembly.Module.customSections(binary,name)}failIf(dylinkSection.length===0,"need dylink section");binary=new Uint8Array(dylinkSection[0]);end=binary.length}else{var int32View=new Uint32Array(new Uint8Array(binary.subarray(0,24)).buffer);var magicNumberFound=int32View[0]==1836278016;failIf(!magicNumberFound,"need to see wasm magic number");failIf(binary[8]!==0,"need the dylink section to be first");offset=9;var section_size=getLEB();end=offset+section_size;name=getString()}var customSection={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if(name=="dylink"){customSection.memorySize=getLEB();customSection.memoryAlign=getLEB();customSection.tableSize=getLEB();customSection.tableAlign=getLEB();var neededDynlibsCount=getLEB();for(var i=0;i<neededDynlibsCount;++i){var libname=getString();customSection.neededDynlibs.push(libname)}}else{failIf(name!=="dylink.0");var WASM_DYLINK_MEM_INFO=1;var WASM_DYLINK_NEEDED=2;var WASM_DYLINK_EXPORT_INFO=3;var WASM_DYLINK_IMPORT_INFO=4;var WASM_SYMBOL_TLS=256;var WASM_SYMBOL_BINDING_MASK=3;var WASM_SYMBOL_BINDING_WEAK=1;while(offset<end){var subsectionType=getU8();var subsectionSize=getLEB();if(subsectionType===WASM_DYLINK_MEM_INFO){customSection.memorySize=getLEB();customSection.memoryAlign=getLEB();customSection.tableSize=getLEB();customSection.tableAlign=getLEB()}else if(subsectionType===WASM_DYLINK_NEEDED){var neededDynlibsCount=getLEB();for(var i=0;i<neededDynlibsCount;++i){libname=getString();customSection.neededDynlibs.push(libname)}}else if(subsectionType===WASM_DYLINK_EXPORT_INFO){var count=getLEB();while(count--){var symname=getString();var flags=getLEB();if(flags&WASM_SYMBOL_TLS){customSection.tlsExports.add(symname)}}}else if(subsectionType===WASM_DYLINK_IMPORT_INFO){var count=getLEB();while(count--){var modname=getString();var symname=getString();var flags=getLEB();if((flags&WASM_SYMBOL_BINDING_MASK)==WASM_SYMBOL_BINDING_WEAK){customSection.weakImports.add(symname)}}}else{offset+=subsectionSize}}}return customSection};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP64[ptr>>3];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var newDSO=(name,handle,syms)=>{var dso={refcount:Infinity,name:name,exports:syms,global:true};LDSO.loadedLibsByName[name]=dso;if(handle!=undefined){LDSO.loadedLibsByHandle[handle]=dso}return dso};var LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}};var ___heap_base=37555808;var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var getMemory=size=>{if(runtimeInitialized){return zeroMemory(_malloc(size),size)}var ret=___heap_base;var end=ret+alignMemory(size,16);___heap_base=end;GOT["__heap_base"].value=end;return ret};var isInternalSym=symName=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(symName)||symName.startsWith("__em_js__");var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var sigToWasmTypes=sig=>{var typeNames={"i":"i32","j":"i64","f":"f32","d":"f64","p":"i32"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i<sig.length;++i){type.parameters.push(typeNames[sig[i]])}return type};var generateFuncType=(sig,target)=>{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={"i":127,"p":127,"j":126,"f":125,"d":124};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i<sigParam.length;++i){target.push(typeCodes[sigParam[i]])}if(sigRet=="v"){target.push(0)}else{target.push(1,typeCodes[sigRet])}};var convertJsFunctionToWasm=(func,sig)=>{if(typeof WebAssembly.Function=="function"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push.apply(bytes,typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{"e":{"f":func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i<offset+count;i++){var item=getWasmTableEntry(i);if(item){functionsInTableMap.set(item,i)}}}};var functionsInTableMap=undefined;var getFunctionAddress=func=>{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>{wasmTable.set(idx,func);wasmTableMirror[idx]=wasmTable.get(idx)};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var updateGOT=(exports,replace)=>{for(var symName in exports){if(isInternalSym(symName)){continue}var value=exports[symName];if(!GOT[symName]){GOT[symName]=new WebAssembly.Global({"value":"i32","mutable":true})}if(replace||GOT[symName].value==0){if(typeof value=="function"){GOT[symName].value=addFunction(value)}else if(typeof value=="number"){GOT[symName].value=value}else{err(`unhandled export type for '${symName}': ${typeof value}`)}}}};var relocateExports=(exports,memoryBase,replace)=>{var relocated={};for(var e in exports){var value=exports[e];if(typeof value=="object"){value=value.value}if(typeof value=="number"){value+=memoryBase}relocated[e]=value}updateGOT(relocated,replace);return relocated};var isSymbolDefined=symName=>{var existing=wasmImports[symName];if(!existing||existing.stub){return false}return true};var dynCall=(sig,ptr,args)=>{var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var createInvokeFunction=sig=>function(){var sp=stackSave();try{return dynCall(sig,arguments[0],Array.prototype.slice.call(arguments,1))}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}};var resolveGlobalSymbol=(symName,direct=false)=>{var sym;if(isSymbolDefined(symName)){sym=wasmImports[symName]}else if(symName.startsWith("invoke_")){sym=wasmImports[symName]=createInvokeFunction(symName.split("_")[1])}else if(symName.startsWith("__cxa_find_matching_catch_")){sym=wasmImports[symName]=function(){var args=Array.from(arguments);var rtn=findMatchingCatch(args);return rtn}}return{sym:sym,name:symName}};var UTF8To