var Iu=Object.defineProperty,mu=Object.defineProperties;var Cu=Object.getOwnPropertyDescriptors;var pc=Object.getOwnPropertySymbols;var yu=Object.prototype.hasOwnProperty,wu=Object.prototype.propertyIsEnumerable;var nc=(K,U,n)=>U in K?Iu(K,U,{enumerable:!0,configurable:!0,writable:!0,value:n}):K[U]=n,_c=(K,U)=>{for(var n in U||(U={}))yu.call(U,n)&&nc(K,n,U[n]);if(pc)for(var n of pc(U))wu.call(U,n)&&nc(K,n,U[n]);return K},hc=(K,U)=>mu(K,Cu(U));var Ic=(K=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(K,{get:(U,n)=>(typeof require!="undefined"?require:U)[n]}):K)(function(K){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+K+'" is not supported')});var Le=(K,U,n)=>(nc(K,typeof U!="symbol"?U+"":U,n),n);async function mc({sdkAppId:K,userId:U,userSig:n,core:Ee}){var ot;let k=Ee.utils.getAbilityConfigUrl(K),Ue=Math.round(new Date().getTime()/1e3),we=`${k}?sdkAppId=${K}&userId=${U}&userSig=${n}×tamp=${Ue}`;try{let $e=await(await fetch(we)).json();Ee.log.info(`virtual background send ${we}, response: ${JSON.stringify($e)}`);let{data:Ye}=$e;return(ot=Ye==null?void 0:Ye.trtcAutoConf)!=null&&ot.web_ar?{auth:!0,timestamp:Ue}:{auth:!1}}catch(ht){return Ee.log.error("virtual background fetch error",ht),{auth:!1}}}var Du={sdkAppId:{required:!0,type:"number"},userId:{required:!0,type:"string"},userSig:{required:!0,type:"string"}};function Cc(K){return{name:"VirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:hc(_c({},Du),{type:{required:!1,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10},onAbort:{required:!1}}),validate(U,n,Ee,k){var Ve;let{RtcError:Ue,ErrorCode:we,ErrorCodeDictionary:ot}=K.errorModule;if(!U)return;let{type:ht,src:$e,onAbort:Ye}=U;if(ht==="image"&&!$e)throw new Ue({code:we.INVALID_PARAMETER,extraCode:ot.INVALID_PARAMETER_REQUIRED,fnName:Ee,messageParams:{key:"src"}});if(Ye&&!K.utils.isFunction(Ye))throw new Ue({code:we.INVALID_PARAMETER,extraCode:ot.INVALID_PARAMETER_TYPE,fnName:Ee,messageParams:{key:"onAbort",value:typeof Ye,rule:{type:"Function"}}});if(!((Ve=K.room.videoManager.cameraTrack)!=null&&Ve.mediaTrack))throw new Ue({code:we.INVALID_OPERATION,extraCode:ot.INVALID_OPERATION_NEED_VIDEO,fnName:Ee})}}}function yc(K){return{name:"UpdateVirtualBackgroundOptions",type:"object",required:!0,allowEmpty:!1,properties:{type:{required:!0,type:"string",values:["image","blur"]},src:{required:!1,type:"string"},blurLevel:{required:!1,type:"number",min:1,max:10}},validate(U,n,Ee,k){if(!U)return;let{RtcError:Ue,ErrorCode:we,ErrorCodeDictionary:ot}=K.errorModule,{type:ht,src:$e}=U;if(ht==="image"&&!$e)throw new Ue({code:we.INVALID_PARAMETER,extraCode:ot.INVALID_PARAMETER_REQUIRED,fnName:Ee,messageParams:{key:"src"}})}}}function wc(K){return{name:"StopVirtualBackgroundOptions",required:!1}}var bu=function(){let K=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(K=K||__filename),function(U){U=U||{};let n=typeof U!="undefined"?U:{},Ee,k;n.ready=new Promise((e,t)=>{Ee=e,k=t}),Object.getOwnPropertyDescriptor(n.ready,"_main")||(Object.defineProperty(n.ready,"_main",{configurable:!0,get(){p("You are getting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_main",{configurable:!0,set(){p("You are setting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_get_end")||(Object.defineProperty(n.ready,"_emscripten_stack_get_end",{configurable:!0,get(){p("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_get_end",{configurable:!0,set(){p("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_get_free")||(Object.defineProperty(n.ready,"_emscripten_stack_get_free",{configurable:!0,get(){p("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_get_free",{configurable:!0,set(){p("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_init")||(Object.defineProperty(n.ready,"_emscripten_stack_init",{configurable:!0,get(){p("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_init",{configurable:!0,set(){p("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackSave")||(Object.defineProperty(n.ready,"_stackSave",{configurable:!0,get(){p("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackSave",{configurable:!0,set(){p("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackRestore")||(Object.defineProperty(n.ready,"_stackRestore",{configurable:!0,get(){p("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackRestore",{configurable:!0,set(){p("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackAlloc")||(Object.defineProperty(n.ready,"_stackAlloc",{configurable:!0,get(){p("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackAlloc",{configurable:!0,set(){p("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___wasm_call_ctors")||(Object.defineProperty(n.ready,"___wasm_call_ctors",{configurable:!0,get(){p("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___wasm_call_ctors",{configurable:!0,set(){p("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_fflush")||(Object.defineProperty(n.ready,"_fflush",{configurable:!0,get(){p("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_fflush",{configurable:!0,set(){p("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___errno_location")||(Object.defineProperty(n.ready,"___errno_location",{configurable:!0,get(){p("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___errno_location",{configurable:!0,set(){p("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_malloc")||(Object.defineProperty(n.ready,"_malloc",{configurable:!0,get(){p("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_malloc",{configurable:!0,set(){p("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_free")||(Object.defineProperty(n.ready,"_free",{configurable:!0,get(){p("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_free",{configurable:!0,set(){p("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_setThrew")||(Object.defineProperty(n.ready,"_setThrew",{configurable:!0,get(){p("You are getting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_setThrew",{configurable:!0,set(){p("You are setting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___cxa_is_pointer_type")||(Object.defineProperty(n.ready,"___cxa_is_pointer_type",{configurable:!0,get(){p("You are getting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___cxa_is_pointer_type",{configurable:!0,set(){p("You are setting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___cxa_can_catch")||(Object.defineProperty(n.ready,"___cxa_can_catch",{configurable:!0,get(){p("You are getting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___cxa_can_catch",{configurable:!0,set(){p("You are setting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_saveSetjmp")||(Object.defineProperty(n.ready,"_saveSetjmp",{configurable:!0,get(){p("You are getting _saveSetjmp on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_saveSetjmp",{configurable:!0,set(){p("You are setting _saveSetjmp on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_memalign")||(Object.defineProperty(n.ready,"_memalign",{configurable:!0,get(){p("You are getting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_memalign",{configurable:!0,set(){p("You are setting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_main_thread_process_queued_calls")||(Object.defineProperty(n.ready,"_emscripten_main_thread_process_queued_calls",{configurable:!0,get(){p("You are getting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_main_thread_process_queued_calls",{configurable:!0,set(){p("You are setting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_webgl_make_context_current")||(Object.defineProperty(n.ready,"_emscripten_webgl_make_context_current",{configurable:!0,get(){p("You are getting _emscripten_webgl_make_context_current on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_webgl_make_context_current",{configurable:!0,set(){p("You are setting _emscripten_webgl_make_context_current on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_webgl_get_current_context")||(Object.defineProperty(n.ready,"_emscripten_webgl_get_current_context",{configurable:!0,get(){p("You are getting _emscripten_webgl_get_current_context on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_webgl_get_current_context",{configurable:!0,set(){p("You are setting _emscripten_webgl_get_current_context on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_tzname")||(Object.defineProperty(n.ready,"__get_tzname",{configurable:!0,get(){p("You are getting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_tzname",{configurable:!0,set(){p("You are setting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_daylight")||(Object.defineProperty(n.ready,"__get_daylight",{configurable:!0,get(){p("You are getting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_daylight",{configurable:!0,set(){p("You are setting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_timezone")||(Object.defineProperty(n.ready,"__get_timezone",{configurable:!0,get(){p("You are getting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_timezone",{configurable:!0,set(){p("You are setting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_malloc")||(Object.defineProperty(n.ready,"_emscripten_builtin_malloc",{configurable:!0,get(){p("You are getting _emscripten_builtin_malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_malloc",{configurable:!0,set(){p("You are setting _emscripten_builtin_malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_free")||(Object.defineProperty(n.ready,"_emscripten_builtin_free",{configurable:!0,get(){p("You are getting _emscripten_builtin_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_free",{configurable:!0,set(){p("You are setting _emscripten_builtin_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_memalign")||(Object.defineProperty(n.ready,"_emscripten_builtin_memalign",{configurable:!0,get(){p("You are getting _emscripten_builtin_memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_memalign",{configurable:!0,set(){p("You are setting _emscripten_builtin_memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___getTypeName")||(Object.defineProperty(n.ready,"___getTypeName",{configurable:!0,get(){p("You are getting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___getTypeName",{configurable:!0,set(){p("You are setting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___embind_register_native_and_builtin_types")||(Object.defineProperty(n.ready,"___embind_register_native_and_builtin_types",{configurable:!0,get(){p("You are getting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___embind_register_native_and_builtin_types",{configurable:!0,set(){p("You are setting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"onRuntimeInitialized")||(Object.defineProperty(n.ready,"onRuntimeInitialized",{configurable:!0,get(){p("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"onRuntimeInitialized",{configurable:!0,set(){p("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));let Ue={},we;for(we in n)n.hasOwnProperty(we)&&(Ue[we]=n[we]);let ot=[],ht="./this.program",$e=function(e,t){throw t},Ye=typeof window=="object",Ve=typeof importScripts=="function",It=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",bi=!Ye&&!It&&!Ve;if(n.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");let Te="";function Oi(e){return n.locateFile?n.locateFile(e,Te):Te+e}let Rr,tr,nn,In,Ke,ge;if(Ye||Ve){if(Ve?Te=self.location.href:typeof document!="undefined"&&document.currentScript&&(Te=document.currentScript.src),K&&(Te=K),Te.indexOf("blob:")!==0?Te=Te.substr(0,Te.lastIndexOf("/")+1):Te="",!(typeof window=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");Rr=function(e){let t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},Ve&&(nn=function(e){let t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),tr=function(e,t,r){let o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=function(){if(o.status==200||o.status==0&&o.response){t(o.response);return}r()},o.onerror=r,o.send(null)},In=function(e){document.title=e}}else throw new Error("environment detection error");let Re=n.print||console.log.bind(console),pe=n.printErr||console.warn.bind(console);for(we in Ue)Ue.hasOwnProperty(we)&&(n[we]=Ue[we]);Ue=null,n.arguments&&(ot=n.arguments),Object.getOwnPropertyDescriptor(n,"arguments")||Object.defineProperty(n,"arguments",{configurable:!0,get(){p("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),n.thisProgram&&(ht=n.thisProgram),Object.getOwnPropertyDescriptor(n,"thisProgram")||Object.defineProperty(n,"thisProgram",{configurable:!0,get(){p("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),n.quit&&($e=n.quit),Object.getOwnPropertyDescriptor(n,"quit")||Object.defineProperty(n,"quit",{configurable:!0,get(){p("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),z(typeof n.memoryInitializerPrefixURL=="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),z(typeof n.pthreadMainPrefixURL=="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),z(typeof n.cdInitializerPrefixURL=="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),z(typeof n.filePackagePrefixURL=="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),z(typeof n.read=="undefined","Module.read option was removed (modify read_ in JS)"),z(typeof n.readAsync=="undefined","Module.readAsync option was removed (modify readAsync in JS)"),z(typeof n.readBinary=="undefined","Module.readBinary option was removed (modify readBinary in JS)"),z(typeof n.setWindowTitle=="undefined","Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),z(typeof n.TOTAL_MEMORY=="undefined","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(n,"read")||Object.defineProperty(n,"read",{configurable:!0,get(){p("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"readAsync")||Object.defineProperty(n,"readAsync",{configurable:!0,get(){p("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"readBinary")||Object.defineProperty(n,"readBinary",{configurable:!0,get(){p("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"setWindowTitle")||Object.defineProperty(n,"setWindowTitle",{configurable:!0,get(){p("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),z(!bi,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable.");function tt(e){tt.shown||(tt.shown={}),tt.shown[e]||(tt.shown[e]=1,pe(e))}function Ir(e,t){if(typeof WebAssembly.Function=="function"){let I={i:"i32",j:"i64",f:"f32",d:"f64"},m={parameters:[],results:t[0]=="v"?[]:[I[t[0]]]};for(var r=1;r=o);)++a;if(a-t>16&&e.subarray&&at)return at.decode(e.subarray(t,a));let s="";for(;t>10,56320|d&1023)}}return s}function Je(e,t){return e?Rt(ve,e,t):""}function Ze(e,t,r,o){if(!(o>0))return 0;let a=r,s=r+o-1;for(let A=0;A=55296&&c<=57343){let u=e.charCodeAt(++A);c=65536+((c&1023)<<10)|u&1023}if(c<=127){if(r>=s)break;t[r++]=c}else if(c<=2047){if(r+1>=s)break;t[r++]=192|c>>6,t[r++]=128|c&63}else if(c<=65535){if(r+2>=s)break;t[r++]=224|c>>12,t[r++]=128|c>>6&63,t[r++]=128|c&63}else{if(r+3>=s)break;c>=2097152&&tt(`Invalid Unicode code point 0x${c.toString(16)} encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x1FFFFF).`),t[r++]=240|c>>18,t[r++]=128|c>>12&63,t[r++]=128|c>>6&63,t[r++]=128|c&63}}return t[r]=0,r-a}function rr(e,t,r){return z(typeof r=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),Ze(e,ve,t,r)}function bt(e){let t=0;for(let r=0;r=55296&&o<=57343&&(o=65536+((o&1023)<<10)|e.charCodeAt(++r)&1023),o<=127?++t:o<=2047?t+=2:o<=65535?t+=3:t+=4}return t}let Gn=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function Ti(e,t){z(e%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");let r=e,o=r>>1,a=o+t/2;for(;!(o>=a)&&Oe[o];)++o;if(r=o<<1,r-e>32&&Gn)return Gn.decode(ve.subarray(e,r));let s="";for(let A=0;!(A>=t/2);++A){let c=T[e+A*2>>1];if(c==0)break;s+=String.fromCharCode(c)}return s}function mn(e,t,r){if(z(t%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),z(typeof r=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),r===void 0&&(r=2147483647),r<2)return 0;r-=2;let o=t,a=r>1]=A,t+=2}return T[t>>1]=0,t-o}function Yn(e){return e.length*2}function vi(e,t){z(e%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");let r=0,o="";for(;!(r>=t/4);){let a=b[e+r*4>>2];if(a==0)break;if(++r,a>=65536){let s=a-65536;o+=String.fromCharCode(55296|s>>10,56320|s&1023)}else o+=String.fromCharCode(a)}return o}function Cn(e,t,r){if(z(t%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),z(typeof r=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),r===void 0&&(r=2147483647),r<4)return 0;let o=t,a=o+r-4;for(let s=0;s=55296&&A<=57343){let c=e.charCodeAt(++s);A=65536+((A&1023)<<10)|c&1023}if(b[t>>2]=A,t+=4,t+4>a)break}return b[t>>2]=0,t-o}function Fr(e){let t=0;for(let r=0;r=55296&&o<=57343&&++r,t+=4}return t}function yn(e){let t=bt(e)+1,r=tn(t);return r&&Ze(e,be,r,t),r}function Xn(e,t){z(e.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),be.set(e,t)}function kr(e,t,r){for(let o=0;o>0]=e.charCodeAt(o);r||(be[t>>0]=0)}function xe(e,t){return e%t>0&&(e+=t-e%t),e}let Se,be,ve,T,Oe,b,Qe,ze,Nr;function on(e){Se=e,n.HEAP8=be=new Int8Array(e),n.HEAP16=T=new Int16Array(e),n.HEAP32=b=new Int32Array(e),n.HEAPU8=ve=new Uint8Array(e),n.HEAPU16=Oe=new Uint16Array(e),n.HEAPU32=Qe=new Uint32Array(e),n.HEAPF32=ze=new Float32Array(e),n.HEAPF64=Nr=new Float64Array(e)}let J=5242880;n.TOTAL_STACK&&z(J===n.TOTAL_STACK,"the stack size can no longer be determined at runtime");let Ur=n.INITIAL_MEMORY||16777216;Object.getOwnPropertyDescriptor(n,"INITIAL_MEMORY")||Object.defineProperty(n,"INITIAL_MEMORY",{configurable:!0,get(){p("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),z(Ur>=J,`INITIAL_MEMORY should be larger than TOTAL_STACK, was ${Ur}! (TOTAL_STACK=${J})`),z(typeof Int32Array!="undefined"&&typeof Float64Array!="undefined"&&Int32Array.prototype.subarray!==void 0&&Int32Array.prototype.set!==void 0,"JS engine does not provide full typed array support"),z(!n.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),z(Ur==16777216,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically");let V;function Ht(){let e=rn();z((e&3)==0),Qe[(e>>2)+1]=34821223,Qe[(e>>2)+2]=2310721022,b[0]=1668509029}function st(){if(W)return;let e=rn(),t=Qe[(e>>2)+1],r=Qe[(e>>2)+2];(t!=34821223||r!=2310721022)&&p(`Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x${r.toString(16)} ${t.toString(16)}`),b[0]!==1668509029&&p("Runtime error: The application has corrupted its heap memory area (address zero)!")}(function(){let e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,t[0]!==115||t[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"})();let xr=[],Gt=[],le=[],an=[],yr=!1,Ot=!1,Qi=0;function Ct(){return Lt||Qi>0}function Yt(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Dn(n.preRun.shift());Tn(xr)}function Pi(){st(),z(!yr),yr=!0,!n.noFSInit&&!l.init.initialized&&l.init(),l.ignorePermissions=!1,yt.init(),Tn(Gt)}function Ri(){st(),Ot=!0}function wn(){if(st(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)nr(n.postRun.shift());Tn(an)}function Dn(e){xr.unshift(e)}function Xt(e){Gt.unshift(e)}function nr(e){an.unshift(e)}z(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),z(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),z(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),z(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");let lt=0,At=null,ir=null,St={};function wr(e){let t=e;for(;;){if(!St[e])return e;e=t+Math.random()}}function E(e){lt++,n.monitorRunDependencies&&n.monitorRunDependencies(lt),e?(z(!St[e]),St[e]=1,At===null&&typeof setInterval!="undefined"&&(At=setInterval(()=>{if(W){clearInterval(At),At=null;return}let t=!1;for(let r in St)t||(t=!0,pe("still waiting on run dependencies:")),pe(`dependency: ${r}`);t&&pe("(end of list)")},1e4))):pe("warning: run dependency added without ID")}function or(e){if(lt--,n.monitorRunDependencies&&n.monitorRunDependencies(lt),e?(z(St[e]),delete St[e]):pe("warning: run dependency removed without ID"),lt==0&&(At!==null&&(clearInterval(At),At=null),ir)){let t=ir;ir=null,t()}}n.preloadedImages={},n.preloadedAudios={};function p(e){n.onAbort&&n.onAbort(e),e+="",pe(e),W=!0,Sr=1,e=`abort(${e}) at ${Fi()}`;let r=new WebAssembly.RuntimeError(e);throw k(r),r}let bn="data:application/octet-stream;base64,";function ue(e){return e.startsWith(bn)}function He(e){return e.startsWith("file://")}function ce(e,t){return function(){let r=e,o=t;return t||(o=n.asm),z(yr,`native function \`${r}\` called before runtime initialization`),z(!Ot,`native function \`${r}\` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)`),o[e]||z(o[e],`exported native function \`${r}\` not found`),o[e].apply(null,arguments)}}let Dr;Dr="selfie_segmentation_solution_simd_wasm_bin.wasm",ue(Dr)||(Dr=Oi(Dr));function On(e){try{if(e==Dr&&jt)return new Uint8Array(jt);if(nn)return nn(e);throw"both async and sync fetching of the wasm failed"}catch(t){p(t)}}function We(){let e={env:rA,wasi_snapshot_preview1:rA};function t(a,s){let{exports:A}=a;n.asm=A,Pt=n.asm.memory,z(Pt,"memory not found in wasm exports"),on(Pt.buffer),V=n.asm.__indirect_function_table,z(V,"table not found in wasm exports"),Xt(n.asm.__wasm_call_ctors),or("wasm-instantiate")}E("wasm-instantiate");let r=n;function o(a){z(n===r,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),r=null,t(a)}if(n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(a){return pe(`Module.instantiateWasm callback failed with error: ${a}`),!1}return n.loadWasm(Dr,e).then(o).catch(k),{}}let ye,Bt,jr={460656(){let e=!0;if(e){let t=to;if(typeof t!="function"){typeof console!="undefined"&&console.error('Expected Emscripten global function "findCanvasEventTarget" not found. WebGL context creation may fail.');return}to=function(r){if(r==0){if(n&&n.canvas)return n.canvas;if(n&&n.canvasCssSelector)return t(n.canvasCssSelector);typeof console!="undefined"&&console.warn("Module properties canvas and canvasCssSelector not found during WebGL context creation.")}return t(r)},e=!1}},461441(){return typeof wasmOffsetConverter!="undefined"}};function br(){return typeof wasmOffsetConverter!="undefined"}function Tt(e,t){if(P.mainLoop.timingMode=e,P.mainLoop.timingValue=t,!P.mainLoop.func)return pe("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up."),1;if(P.mainLoop.running||(P.mainLoop.running=!0),e==0)P.mainLoop.scheduler=function(){let o=Math.max(0,P.mainLoop.tickStartTime+t-Or())|0;setTimeout(P.mainLoop.runner,o)},P.mainLoop.method="timeout";else if(e==1)P.mainLoop.scheduler=function(){P.requestAnimationFrame(P.mainLoop.runner)},P.mainLoop.method="rAF";else if(e==2){if(typeof setImmediate=="undefined"){let r=[],o="setimmediate",a=function(s){(s.data===o||s.data.target===o)&&(s.stopPropagation(),r.shift()())};addEventListener("message",a,!0),setImmediate=function(A){r.push(A),Ve?(n.setImmediates===void 0&&(n.setImmediates=[]),n.setImmediates.push(A),postMessage({target:o})):postMessage(o,"*")}}P.mainLoop.scheduler=function(){setImmediate(P.mainLoop.runner)},P.mainLoop.method="immediate"}return 0}let Or;It?Or=function(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}:Or=function(){return performance.now()};function Si(){return!w.currentContext||!w.currentContext.GLctx?-3:w.currentContext.defaultFbo?(w.blitOffscreenFramebuffer(w.currentContext),0):w.currentContext.attributes.explicitSwapControl?0:-3}function Wn(e){No(e)}function Mi(){if(!Ct())try{Wn(Sr)}catch(e){if(e instanceof Ao)return;throw e}}function Bn(e,t,r,o,a){z(!P.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),P.mainLoop.func=e,P.mainLoop.arg=o;let s=P.mainLoop.currentlyRunningMainloop;function A(){return s0){let u=Date.now(),d=P.mainLoop.queue.shift();if(d.func(d.arg),P.mainLoop.remainingBlockers){let h=P.mainLoop.remainingBlockers,I=h%1==0?h-1:Math.floor(h);d.counted?P.mainLoop.remainingBlockers=I:(I=I+.5,P.mainLoop.remainingBlockers=(8*h+I)/9)}if(Re(`main loop blocker "${d.name}" took ${Date.now()-u} ms`),P.mainLoop.updateStatus(),!A())return;setTimeout(P.mainLoop.runner,0);return}if(A()){if(P.mainLoop.currentFrameNumber=P.mainLoop.currentFrameNumber+1|0,P.mainLoop.timingMode==1&&P.mainLoop.timingValue>1&&P.mainLoop.currentFrameNumber%P.mainLoop.timingValue!=0){P.mainLoop.scheduler();return}P.mainLoop.timingMode==0&&(P.mainLoop.tickStartTime=Or()),w.newRenderingFrameStarted(),typeof w!="undefined"&&w.currentContext&&!w.currentContextIsProxied&&!w.currentContext.attributes.explicitSwapControl&&w.currentContext.GLctx.commit&&w.currentContext.GLctx.commit(),P.mainLoop.method==="timeout"&&n.ctx&&(tt("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),P.mainLoop.method=""),P.mainLoop.runIter(e),st(),A()&&(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),P.mainLoop.scheduler())}}},a||(t&&t>0?Tt(0,1e3/t):Tt(1,1),P.mainLoop.scheduler()),r)throw"unwind"}function ar(e,t){if(W){pe("user callback triggered after application aborted. Ignoring.");return}if(t){e();return}try{e()}catch(r){if(r instanceof Ao)return;if(r!=="unwind")throw r&&typeof r=="object"&&r.stack&&pe(`exception thrown: ${[r,r.stack]}`),r}}function Q(e,t){return setTimeout(()=>{ar(e)},t)}var P={mainLoop:{running:!1,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){P.mainLoop.scheduler=null,P.mainLoop.currentlyRunningMainloop++},resume(){P.mainLoop.currentlyRunningMainloop++;let{timingMode:e}=P.mainLoop,{timingValue:t}=P.mainLoop,{func:r}=P.mainLoop;P.mainLoop.func=null,Bn(r,0,!1,P.mainLoop.arg,!0),Tt(e,t),P.mainLoop.scheduler()},updateStatus(){if(n.setStatus){let e=n.statusMessage||"Please wait...",t=P.mainLoop.remainingBlockers,r=P.mainLoop.expectedBlockers;t?t{h(v)},!1),v.onerror=function(G){if(d)return;Re(`warning: browser could not fully decode audio ${A}, trying slower base64 approach`);function R(D){let N="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",$="=",Y="",_e=0,Fe=0;for(let Ut=0;Ut=6;){let hu=_e>>Fe-6&63;Fe-=6,Y+=N[hu]}return Fe==2?(Y+=N[(_e&3)<<4],Y+=$+$):Fe==4&&(Y+=N[(_e&15)<<2],Y+=$),Y}v.src=`data:audio/x-${A.substr(-3)};base64,${R(s)}`,h(v)},v.src=y,Q(()=>{h(v)},1e4)}else return I()},n.preloadPlugins.push(t);function r(){P.pointerLock=document.pointerLockElement===n.canvas||document.mozPointerLockElement===n.canvas||document.webkitPointerLockElement===n.canvas||document.msPointerLockElement===n.canvas}let{canvas:o}=n},createContext(e,t,r,o){if(t&&n.ctx&&e==n.canvas)return n.ctx;let a,s;if(t){let A={antialias:!1,alpha:!1,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(o)for(let c in o)A[c]=o[c];typeof w!="undefined"&&(s=w.createContext(e,A),s&&(a=w.getContext(s).GLctx))}else a=e.getContext("2d");return a?(r&&(t||z(typeof S=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),n.ctx=a,t&&w.makeContextCurrent(s),n.useWebGL=t,P.moduleContextCreatedCallbacks.forEach(A=>{A()}),P.init()),a):null},destroyContext(e,t,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen(e,t){P.lockPointer=e,P.resizeCanvas=t,typeof P.lockPointer=="undefined"&&(P.lockPointer=!0),typeof P.resizeCanvas=="undefined"&&(P.resizeCanvas=!1);let{canvas:r}=n;function o(){P.isFullscreen=!1;let s=r.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===s?(r.exitFullscreen=P.exitFullscreen,P.lockPointer&&r.requestPointerLock(),P.isFullscreen=!0,P.resizeCanvas?P.setFullscreenCanvasSize():P.updateCanvasDimensions(r)):(s.parentNode.insertBefore(r,s),s.parentNode.removeChild(s),P.resizeCanvas?P.setWindowedCanvasSize():P.updateCanvasDimensions(r)),n.onFullScreen&&n.onFullScreen(P.isFullscreen),n.onFullscreen&&n.onFullscreen(P.isFullscreen)}P.fullscreenHandlersInstalled||(P.fullscreenHandlersInstalled=!0);let a=document.createElement("div");r.parentNode.insertBefore(a,r),a.appendChild(r),a.requestFullscreen=a.requestFullscreen||a.mozRequestFullScreen||a.msRequestFullscreen||(a.webkitRequestFullscreen?function(){a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(a.webkitRequestFullScreen?function(){a.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),a.requestFullscreen()},requestFullScreen(){p("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)")},exitFullscreen(){return P.isFullscreen?((document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){}).apply(document,[]),!0):!1},nextRAF:0,fakeRequestAnimationFrame(e){let t=Date.now();if(P.nextRAF===0)P.nextRAF=t+1e3/60;else for(;t+2>=P.nextRAF;)P.nextRAF+=1e3/60;let r=Math.max(P.nextRAF-t,0);setTimeout(e,r)},requestAnimationFrame(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(e);return}let t=P.fakeRequestAnimationFrame;t(e)},safeSetTimeout(e){return Q(e)},safeRequestAnimationFrame(e){return P.requestAnimationFrame(()=>{ar(e)})},getMimetype(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta(e){let t=0;switch(e.type){case"DOMMouseScroll":t=e.detail/3;break;case"mousewheel":t=e.wheelDelta/120;break;case"wheel":switch(t=e.deltaY,e.deltaMode){case 0:t/=100;break;case 1:t/=3;break;case 2:t*=80;break;default:throw`unrecognized mouse wheel delta mode: ${e.deltaMode}`}break;default:throw`unrecognized mouse wheel event: ${e.type}`}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent(e){if(P.pointerLock)e.type!="mousemove"&&"mozMovementX"in e?P.mouseMovementX=P.mouseMovementY=0:(P.mouseMovementX=P.getMovementX(e),P.mouseMovementY=P.getMovementY(e)),typeof SDL!="undefined"?(P.mouseX=SDL.mouseX+P.mouseMovementX,P.mouseY=SDL.mouseY+P.mouseMovementY):(P.mouseX+=P.mouseMovementX,P.mouseY+=P.mouseMovementY);else{let t=n.canvas.getBoundingClientRect(),r=n.canvas.width,o=n.canvas.height,a=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset,s=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(z(typeof a!="undefined"&&typeof s!="undefined","Unable to retrieve scroll position, mouse positions likely broken."),e.type==="touchstart"||e.type==="touchend"||e.type==="touchmove"){let{touch:u}=e;if(u===void 0)return;let d=u.pageX-(a+t.left),h=u.pageY-(s+t.top);d=d*(r/t.width),h=h*(o/t.height);let I={x:d,y:h};if(e.type==="touchstart")P.lastTouches[u.identifier]=I,P.touches[u.identifier]=I;else if(e.type==="touchend"||e.type==="touchmove"){let m=P.touches[u.identifier];m||(m=I),P.lastTouches[u.identifier]=m,P.touches[u.identifier]=I}return}let A=e.pageX-(a+t.left),c=e.pageY-(s+t.top);A=A*(r/t.width),c=c*(o/t.height),P.mouseMovementX=A-P.mouseX,P.mouseMovementY=c-P.mouseY,P.mouseX=A,P.mouseY=c}},resizeListeners:[],updateResizeListeners(){let{canvas:e}=n;P.resizeListeners.forEach(t=>{t(e.width,e.height)})},setCanvasSize(e,t,r){let{canvas:o}=n;P.updateCanvasDimensions(o,e,t),r||P.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){let e=Qe[SDL.screen>>2];e=e|8388608,b[SDL.screen>>2]=e}P.updateCanvasDimensions(n.canvas),P.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){let e=Qe[SDL.screen>>2];e=e&-8388609,b[SDL.screen>>2]=e}P.updateCanvasDimensions(n.canvas),P.updateResizeListeners()},updateCanvasDimensions(e,t,r){t&&r?(e.widthNative=t,e.heightNative=r):(t=e.widthNative,r=e.heightNative);let o=t,a=r;if(n.forcedAspectRatio&&n.forcedAspectRatio>0&&(o/a0;){let t=e.shift();if(typeof t=="function"){t(n);continue}let{func:r}=t;typeof r=="number"?t.arg===void 0?V.get(r)():V.get(r)(t.arg):r(t.arg===void 0?null:t.arg)}}function Lr(e){return tt("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function Vn(e){let t=/\b_Z[\w\d_]+/g;return e.replace(t,r=>{let o=Lr(r);return r===o?r:`${o} [${r}]`})}function sn(){let e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function Fi(){let e=sn();return n.extraStackTrace&&(e+=` ${n.extraStackTrace()}`),Vn(e)}function fo(e){return tn(e+16)+16}function vn(e,t){}function Br(e,t){return void 0}function Mt(e){this.excPtr=e,this.ptr=e-16,this.set_type=function(t){b[this.ptr+4>>2]=t},this.get_type=function(){return b[this.ptr+4>>2]},this.set_destructor=function(t){b[this.ptr+8>>2]=t},this.get_destructor=function(){return b[this.ptr+8>>2]},this.set_refcount=function(t){b[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,be[this.ptr+12>>0]=t},this.get_caught=function(){return be[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,be[this.ptr+13>>0]=t},this.get_rethrown=function(){return be[this.ptr+13>>0]!=0},this.init=function(t,r){this.set_type(t),this.set_destructor(r),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){let t=b[this.ptr>>2];b[this.ptr>>2]=t+1},this.release_ref=function(){let t=b[this.ptr>>2];return b[this.ptr>>2]=t-1,z(t>0),t===1}}function Wt(e){this.free=function(){it(this.ptr),this.ptr=0},this.set_base_ptr=function(t){b[this.ptr>>2]=t},this.get_base_ptr=function(){return b[this.ptr>>2]},this.set_adjusted_ptr=function(t){b[this.ptr+4>>2]=t},this.get_adjusted_ptr_addr=function(){return this.ptr+4},this.get_adjusted_ptr=function(){return b[this.ptr+4>>2]},this.get_exception_ptr=function(){if(iA(this.get_exception_info().get_type()))return b[this.get_base_ptr()>>2];let r=this.get_adjusted_ptr();return r!==0?r:this.get_base_ptr()},this.get_exception_info=function(){return new Mt(this.get_base_ptr())},e===void 0?(this.ptr=tn(8),this.set_adjusted_ptr(0)):this.ptr=e}let Hr=[];function vt(e){e.add_ref()}let Qn=0;function Vt(e){let t=new Wt(e),r=t.get_exception_info();return r.get_caught()||(r.set_caught(!0),Qn--),r.set_rethrown(!1),Hr.push(t),vt(r),t.get_exception_ptr()}let Ft=0;function Tr(e){try{return it(new Mt(e).ptr)}catch(t){pe(`exception during cxa_free_exception: ${t}`)}}function ki(e){if(e.release_ref()&&!e.get_rethrown()){let t=e.get_destructor();t&&V.get(t)(e.excPtr),Tr(e.excPtr)}}function zn(){re(0),z(Hr.length>0);let e=Hr.pop();ki(e.get_exception_info()),e.free(),Ft=0}function Pn(e){let t=new Wt(e),r=t.get_base_ptr();throw Ft||(Ft=r),t.free(),`${r} - Exception catching is disabled, this exception cannot be caught. Compile with -s NO_DISABLE_EXCEPTION_CATCHING or -s EXCEPTION_CATCHING_ALLOWED=[..] to catch.`}function Ni(){let e=Ft;if(!e)return Ie(0),0;let r=new Mt(e).get_type(),o=new Wt;if(o.set_base_ptr(e),o.set_adjusted_ptr(e),!r)return Ie(0),o.ptr|0;let a=Array.prototype.slice.call(arguments);for(let s=0;s>2]=e,e}var me={splitPath(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray(e,t){let r=0;for(let o=e.length-1;o>=0;o--){let a=e[o];a==="."?e.splice(o,1):a===".."?(e.splice(o,1),r++):r&&(e.splice(o,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize(e){let t=e.charAt(0)==="/",r=e.substr(-1)==="/";return e=me.normalizeArray(e.split("/").filter(o=>!!o),!t).join("/"),!e&&!t&&(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname(e){let t=me.splitPath(e),r=t[0],o=t[1];return!r&&!o?".":(o&&(o=o.substr(0,o.length-1)),r+o)},basename(e){if(e==="/")return"/";e=me.normalize(e),e=e.replace(/\/$/,"");let t=e.lastIndexOf("/");return t===-1?e:e.substr(t+1)},extname(e){return me.splitPath(e)[3]},join(){let e=Array.prototype.slice.call(arguments,0);return me.normalize(e.join("/"))},join2(e,t){return me.normalize(`${e}/${t}`)}};function dt(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){let e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(It)try{let e=Ic("crypto");return function(){return e.randomBytes(1)[0]}}catch(e){}return function(){p("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}var Pe={resolve(){let e="",t=!1;for(let r=arguments.length-1;r>=-1&&!t;r--){let o=r>=0?arguments[r]:l.cwd();if(typeof o!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!o)return"";e=`${o}/${e}`,t=o.charAt(0)==="/"}return e=me.normalizeArray(e.split("/").filter(r=>!!r),!t).join("/"),(t?"/":"")+e||"."},relative(e,t){e=Pe.resolve(e).substr(1),t=Pe.resolve(t).substr(1);function r(d){let h=0;for(;h=0&&d[I]==="";I--);return h>I?[]:d.slice(h,I-h+1)}let o=r(e.split("/")),a=r(t.split("/")),s=Math.min(o.length,a.length),A=s;for(var c=0;c0?t=o.slice(0,a).toString("utf-8"):t=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(t=window.prompt("Input: "),t!==null&&(t+=` `)):typeof readline=="function"&&(t=readline(),t!==null&&(t+=` `));if(!t)return null;e.input=yi(t,!0)}return e.input.shift()},put_char(e,t){t===null||t===10?(Re(Rt(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},flush(e){e.output&&e.output.length>0&&(Re(Rt(e.output,0)),e.output=[])}},default_tty1_ops:{put_char(e,t){t===null||t===10?(pe(Rt(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},flush(e){e.output&&e.output.length>0&&(pe(Rt(e.output,0)),e.output=[])}}};function ji(e,t){ve.fill(0,e,e+t)}function Jn(e,t){return z(t,"alignment argument is required"),Math.ceil(e/t)*t}function ie(e){e=Jn(e,65536);let t=gc(65536,e);return t?(ji(t,e),t):0}var se={ops_table:null,mount(e){return se.createNode(null,"/",16895,0)},createNode(e,t,r,o){if(l.isBlkdev(r)||l.isFIFO(r))throw new l.ErrnoError(63);se.ops_table||(se.ops_table={dir:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,lookup:se.node_ops.lookup,mknod:se.node_ops.mknod,rename:se.node_ops.rename,unlink:se.node_ops.unlink,rmdir:se.node_ops.rmdir,readdir:se.node_ops.readdir,symlink:se.node_ops.symlink},stream:{llseek:se.stream_ops.llseek}},file:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:{llseek:se.stream_ops.llseek,read:se.stream_ops.read,write:se.stream_ops.write,allocate:se.stream_ops.allocate,mmap:se.stream_ops.mmap,msync:se.stream_ops.msync}},link:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,readlink:se.node_ops.readlink},stream:{}},chrdev:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:l.chrdev_stream_ops}});let a=l.createNode(e,t,r,o);return l.isDir(a.mode)?(a.node_ops=se.ops_table.dir.node,a.stream_ops=se.ops_table.dir.stream,a.contents={}):l.isFile(a.mode)?(a.node_ops=se.ops_table.file.node,a.stream_ops=se.ops_table.file.stream,a.usedBytes=0,a.contents=null):l.isLink(a.mode)?(a.node_ops=se.ops_table.link.node,a.stream_ops=se.ops_table.link.stream):l.isChrdev(a.mode)&&(a.node_ops=se.ops_table.chrdev.node,a.stream_ops=se.ops_table.chrdev.stream),a.timestamp=Date.now(),e&&(e.contents[t]=a,e.timestamp=a.timestamp),a},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,t){let r=e.contents?e.contents.length:0;if(r>=t)return;let o=1024*1024;t=Math.max(t,r*(r>>0),r!=0&&(t=Math.max(t,256));let a=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(a.subarray(0,e.usedBytes),0)},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{let r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){let t={};return t.dev=l.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,l.isDir(e.mode)?t.size=4096:l.isFile(e.mode)?t.size=e.usedBytes:l.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){t.mode!==void 0&&(e.mode=t.mode),t.timestamp!==void 0&&(e.timestamp=t.timestamp),t.size!==void 0&&se.resizeFileStorage(e,t.size)},lookup(e,t){throw l.genericErrors[44]},mknod(e,t,r,o){return se.createNode(e,t,r,o)},rename(e,t,r){if(l.isDir(e.mode)){let o;try{o=l.lookupNode(t,r)}catch(a){}if(o)for(let a in o.contents)throw new l.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){let r=l.lookupNode(e,t);for(let o in r.contents)throw new l.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){let t=[".",".."];for(let r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink(e,t,r){let o=se.createNode(e,t,41471,0);return o.link=r,o},readlink(e){if(!l.isLink(e.mode))throw new l.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,o,a){let{contents:s}=e.node;if(a>=e.node.usedBytes)return 0;let A=Math.min(e.node.usedBytes-a,o);if(z(A>=0),A>8&&s.subarray)t.set(s.subarray(a,a+A),r);else for(let c=0;c0||o+r{z(s,`Loading data file "${e}" failed (no arrayBuffer).`),t(new Uint8Array(s)),a&&or(a)},s=>{if(r)r();else throw`Loading data file "${e}" failed.`}),a&&E(a)}let An={0:"Success",1:"Arg list too long",2:"Permission denied",3:"Address already in use",4:"Address not available",5:"Address family not supported by protocol family",6:"No more processes",7:"Socket already connected",8:"Bad file number",9:"Trying to read unreadable message",10:"Mount device busy",11:"Operation canceled",12:"No children",13:"Connection aborted",14:"Connection refused",15:"Connection reset by peer",16:"File locking deadlock error",17:"Destination address required",18:"Math arg out of domain of func",19:"Quota exceeded",20:"File exists",21:"Bad address",22:"File too large",23:"Host is unreachable",24:"Identifier removed",25:"Illegal byte sequence",26:"Connection already in progress",27:"Interrupted system call",28:"Invalid argument",29:"I/O error",30:"Socket is already connected",31:"Is a directory",32:"Too many symbolic links",33:"Too many open files",34:"Too many links",35:"Message too long",36:"Multihop attempted",37:"File or path name too long",38:"Network interface is not configured",39:"Connection reset by network",40:"Network is unreachable",41:"Too many open files in system",42:"No buffer space available",43:"No such device",44:"No such file or directory",45:"Exec format error",46:"No record locks available",47:"The link has been severed",48:"Not enough core",49:"No message of desired type",50:"Protocol not available",51:"No space left on device",52:"Function not implemented",53:"Socket is not connected",54:"Not a directory",55:"Directory not empty",56:"State not recoverable",57:"Socket operation on non-socket",59:"Not a typewriter",60:"No such device or address",61:"Value too large for defined data type",62:"Previous owner died",63:"Not super-user",64:"Broken pipe",65:"Protocol error",66:"Unknown protocol",67:"Protocol wrong type for socket",68:"Math result not representable",69:"Read only file system",70:"Illegal seek",71:"No such process",72:"Stale file handle",73:"Connection timed out",74:"Text file busy",75:"Cross-device link",100:"Device not a stream",101:"Bad font file fmt",102:"Invalid slot",103:"Invalid request code",104:"No anode",105:"Block device required",106:"Channel number out of range",107:"Level 3 halted",108:"Level 3 reset",109:"Link number out of range",110:"Protocol driver not attached",111:"No CSI structure available",112:"Level 2 halted",113:"Invalid exchange",114:"Invalid request descriptor",115:"Exchange full",116:"No data (for no delay io)",117:"Timer expired",118:"Out of streams resources",119:"Machine is not on the network",120:"Package not installed",121:"The object is remote",122:"Advertise error",123:"Srmount error",124:"Communication error on send",125:"Cross mount point (not really error)",126:"Given log. name not unique",127:"f.d. invalid for this operation",128:"Remote address changed",129:"Can access a needed shared lib",130:"Accessing a corrupted shared lib",131:".lib section in a.out corrupted",132:"Attempting to link in too many libs",133:"Attempting to exec a shared library",135:"Streams pipe error",136:"Too many users",137:"Socket type not supported",138:"Not supported",139:"Protocol family not supported",140:"Can't send after socket shutdown",141:"Too many references",142:"Host is down",148:"No medium (in tape drive)",156:"Level 2 not synchronized"},f={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var l={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath(e,t){if(e=Pe.resolve(l.cwd(),e),t=t||{},!e)return{path:"",node:null};let r={follow_mount:!0,recurse_count:0};for(let A in r)t[A]===void 0&&(t[A]=r[A]);if(t.recurse_count>8)throw new l.ErrnoError(32);let o=me.normalizeArray(e.split("/").filter(A=>!!A),!1),a=l.root,s="/";for(let A=0;A40)throw new l.ErrnoError(32)}}}return{path:s,node:a}},getPath(e){let t;for(;;){if(l.isRoot(e)){let r=e.mount.mountpoint;return t?r[r.length-1]!=="/"?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){let r=0;for(let o=0;o>>0)%l.nameTable.length},hashAddNode(e){let t=l.hashName(e.parent.id,e.name);e.name_next=l.nameTable[t],l.nameTable[t]=e},hashRemoveNode(e){let t=l.hashName(e.parent.id,e.name);if(l.nameTable[t]===e)l.nameTable[t]=e.name_next;else{let r=l.nameTable[t];for(;r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}}},lookupNode(e,t){let r=l.mayLookup(e);if(r)throw new l.ErrnoError(r,e);let o=l.hashName(e.id,t);for(let a=l.nameTable[o];a;a=a.name_next){let s=a.name;if(a.parent.id===e.id&&s===t)return a}return l.lookup(e,t)},createNode(e,t,r,o){z(typeof e=="object");let a=new l.FSNode(e,t,r,o);return l.hashAddNode(a),a},destroyNode(e){l.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags(e){let t=l.flagModes[e];if(typeof t=="undefined")throw new Error(`Unknown file open mode: ${e}`);return t},flagsToPermissionString(e){let t=["r","w","rw"][e&3];return e&512&&(t+="w"),t},nodePermissions(e,t){return l.ignorePermissions?0:t.includes("r")&&!(e.mode&292)||t.includes("w")&&!(e.mode&146)||t.includes("x")&&!(e.mode&73)?2:0},mayLookup(e){let t=l.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{let r=l.lookupNode(e,t);return 20}catch(r){}return l.nodePermissions(e,"wx")},mayDelete(e,t,r){let o;try{o=l.lookupNode(e,t)}catch(s){return s.errno}let a=l.nodePermissions(e,"wx");if(a)return a;if(r){if(!l.isDir(o.mode))return 54;if(l.isRoot(o)||l.getPath(o)===l.cwd())return 10}else if(l.isDir(o.mode))return 31;return 0},mayOpen(e,t){return e?l.isLink(e.mode)?32:l.isDir(e.mode)&&(l.flagsToPermissionString(t)!=="r"||t&512)?31:l.nodePermissions(e,l.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(e,t){e=e||0,t=t||l.MAX_OPEN_FDS;for(let r=e;r<=t;r++)if(!l.streams[r])return r;throw new l.ErrnoError(33)},getStream(e){return l.streams[e]},createStream(e,t,r){l.FSStream||(l.FSStream=function(){},l.FSStream.prototype={object:{get(){return this.node},set(s){this.node=s}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}}});let o=new l.FSStream;for(let s in e)o[s]=e[s];e=o;let a=l.nextfd(t,r);return e.fd=a,l.streams[a]=e,e},closeStream(e){l.streams[e]=null},chrdev_stream_ops:{open(e){let t=l.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek(){throw new l.ErrnoError(70)}},major(e){return e>>8},minor(e){return e&255},makedev(e,t){return e<<8|t},registerDevice(e,t){l.devices[e]={stream_ops:t}},getDevice(e){return l.devices[e]},getMounts(e){let t=[],r=[e];for(;r.length;){let o=r.pop();t.push(o),r.push.apply(r,o.mounts)}return t},syncfs(e,t){typeof e=="function"&&(t=e,e=!1),l.syncFSRequests++,l.syncFSRequests>1&&pe(`warning: ${l.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);let r=l.getMounts(l.root.mount),o=0;function a(A){return z(l.syncFSRequests>0),l.syncFSRequests--,t(A)}function s(A){if(A)return s.errored?void 0:(s.errored=!0,a(A));++o>=r.length&&a(null)}r.forEach(A=>{if(!A.type.syncfs)return s(null);A.type.syncfs(A,e,s)})},mount(e,t,r){if(typeof e=="string")throw e;let o=r==="/",a=!r,s;if(o&&l.root)throw new l.ErrnoError(10);if(!o&&!a){let u=l.lookupPath(r,{follow_mount:!1});if(r=u.path,s=u.node,l.isMountpoint(s))throw new l.ErrnoError(10);if(!l.isDir(s.mode))throw new l.ErrnoError(54)}let A={type:e,opts:t,mountpoint:r,mounts:[]},c=e.mount(A);return c.mount=A,A.root=c,o?l.root=c:s&&(s.mounted=A,s.mount&&s.mount.mounts.push(A)),c},unmount(e){let t=l.lookupPath(e,{follow_mount:!1});if(!l.isMountpoint(t.node))throw new l.ErrnoError(28);let{node:r}=t,o=r.mounted,a=l.getMounts(o);Object.keys(l.nameTable).forEach(A=>{let c=l.nameTable[A];for(;c;){let u=c.name_next;a.includes(c.mount)&&l.destroyNode(c),c=u}}),r.mounted=null;let s=r.mount.mounts.indexOf(o);z(s!==-1),r.mount.mounts.splice(s,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,r){let a=l.lookupPath(e,{parent:!0}).node,s=me.basename(e);if(!s||s==="."||s==="..")throw new l.ErrnoError(28);let A=l.mayCreate(a,s);if(A)throw new l.ErrnoError(A);if(!a.node_ops.mknod)throw new l.ErrnoError(63);return a.node_ops.mknod(a,s,t,r)},create(e,t){return t=t!==void 0?t:438,t&=4095,t|=32768,l.mknod(e,t,0)},mkdir(e,t){return t=t!==void 0?t:511,t&=1023,t|=16384,l.mknod(e,t,0)},mkdirTree(e,t){let r=e.split("/"),o="";for(let a=0;a{l.genericErrors[e]=new l.ErrnoError(e),l.genericErrors[e].stack=""}))},staticInit(){l.ensureErrnoError(),l.nameTable=new Array(4096),l.mount(se,{},"/"),l.createDefaultDirectories(),l.createDefaultDevices(),l.createSpecialDirectories(),l.filesystems={MEMFS:se}},init(e,t,r){z(!l.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),l.init.initialized=!0,l.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=r||n.stderr,l.createStandardStreams()},quit(){l.init.initialized=!1;let e=n._fflush;e&&e(0);for(let t=0;tthis.length-1||I<0)return;let m=I%this.chunkSize,y=I/this.chunkSize|0;return this.getter(y)[m]},s.prototype.setDataGetter=function(I){this.getter=I},s.prototype.cacheLength=function(){let I=new XMLHttpRequest;if(I.open("HEAD",r,!1),I.send(null),!(I.status>=200&&I.status<300||I.status===304))throw new Error(`Couldn't load ${r}. Status: ${I.status}`);let m=Number(I.getResponseHeader("Content-length")),y,v=(y=I.getResponseHeader("Accept-Ranges"))&&y==="bytes",x=(y=I.getResponseHeader("Content-Encoding"))&&y==="gzip",G=1024*1024;v||(G=m);let R=function(N,$){if(N>$)throw new Error(`invalid range (${N}, ${$}) or no bytes requested!`);if($>m-1)throw new Error(`only ${m} bytes available! programmer error!`);let Y=new XMLHttpRequest;if(Y.open("GET",r,!1),m!==G&&Y.setRequestHeader("Range",`bytes=${N}-${$}`),typeof Uint8Array!="undefined"&&(Y.responseType="arraybuffer"),Y.overrideMimeType&&Y.overrideMimeType("text/plain; charset=x-user-defined"),Y.send(null),!(Y.status>=200&&Y.status<300||Y.status===304))throw new Error(`Couldn't load ${r}. Status: ${Y.status}`);return Y.response!==void 0?new Uint8Array(Y.response||[]):yi(Y.responseText||"",!0)},D=this;D.setDataGetter(N=>{let $=N*G,Y=(N+1)*G-1;if(Y=Math.min(Y,m-1),typeof D.chunks[N]=="undefined"&&(D.chunks[N]=R($,Y)),typeof D.chunks[N]=="undefined")throw new Error("doXHR failed!");return D.chunks[N]}),(x||!m)&&(G=m=1,m=this.getter(0).length,G=m,Re("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=m,this._chunkSize=G,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!Ve)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";let h=new s;Object.defineProperties(h,{length:{get(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var A={isDevice:!1,contents:h}}else var A={isDevice:!1,url:r};let c=l.createFile(e,t,A,o,a);A.contents?c.contents=A.contents:A.url&&(c.contents=null,c.url=A.url),Object.defineProperties(c,{usedBytes:{get(){return this.contents.length}}});let u={};return Object.keys(c.stream_ops).forEach(h=>{let I=c.stream_ops[h];u[h]=function(){return l.forceLoadFile(c),I.apply(null,arguments)}}),u.read=function(I,m,y,v,x){l.forceLoadFile(c);let{contents:G}=I.node;if(x>=G.length)return 0;let R=Math.min(G.length-x,v);if(z(R>=0),G.slice)for(var D=0;D{x||G.canHandle(h)&&(G.handle(y,h,v,()=>{A&&A(),or(I)}),x=!0)}),x||v(y)}E(I),typeof r=="string"?Li(r,y=>{m(y)},A):m(r)},indexedDB(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME(){return`EM_FS_${window.location.pathname}`},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB(e,t,r){t=t||function(){},r=r||function(){};let o=l.indexedDB();try{var a=o.open(l.DB_NAME(),l.DB_VERSION)}catch(s){return r(s)}a.onupgradeneeded=function(){Re("creating db"),a.result.createObjectStore(l.DB_STORE_NAME)},a.onsuccess=function(){let c=a.result.transaction([l.DB_STORE_NAME],"readwrite"),u=c.objectStore(l.DB_STORE_NAME),d=0,h=0,I=e.length;function m(){h==0?t():r()}e.forEach(y=>{let v=u.put(l.analyzePath(y).object.contents,y);v.onsuccess=function(){d++,d+h==I&&m()},v.onerror=function(){h++,d+h==I&&m()}}),c.onerror=r},a.onerror=r},loadFilesFromDB(e,t,r){t=t||function(){},r=r||function(){};let o=l.indexedDB();try{var a=o.open(l.DB_NAME(),l.DB_VERSION)}catch(s){return r(s)}a.onupgradeneeded=r,a.onsuccess=function(){let A=a.result;try{var c=A.transaction([l.DB_STORE_NAME],"readonly")}catch(y){r(y);return}let u=c.objectStore(l.DB_STORE_NAME),d=0,h=0,I=e.length;function m(){h==0?t():r()}e.forEach(y=>{let v=u.get(y);v.onsuccess=function(){l.analyzePath(y).exists&&l.unlink(y),l.createDataFile(me.dirname(y),me.basename(y),v.result,!0,!0,!0),d++,d+h==I&&m()},v.onerror=function(){h++,d+h==I&&m()}}),c.onerror=r},a.onerror=r},absolutePath(){p("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder(){p("FS.createFolder has been removed; use FS.mkdir instead")},createLink(){p("FS.createLink has been removed; use FS.symlink instead")},joinPath(){p("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc(){p("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath(){p("FS.standardizePath has been removed; use PATH.normalize instead")}},Me={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt(e,t,r){if(t[0]==="/")return t;let o;if(e===-100)o=l.cwd();else{let a=l.getStream(e);if(!a)throw new l.ErrnoError(8);o=a.path}if(t.length==0){if(!r)throw new l.ErrnoError(44);return o}return me.join2(o,t)},doStat(e,t,r){try{var o=e(t)}catch(a){if(a&&a.node&&me.normalize(t)!==me.normalize(l.getPath(a.node)))return-54;throw a}return b[r>>2]=o.dev,b[r+4>>2]=0,b[r+8>>2]=o.ino,b[r+12>>2]=o.mode,b[r+16>>2]=o.nlink,b[r+20>>2]=o.uid,b[r+24>>2]=o.gid,b[r+28>>2]=o.rdev,b[r+32>>2]=0,Bt=[o.size>>>0,(ye=o.size,+Math.abs(ye)>=1?ye>0?(Math.min(+Math.floor(ye/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],b[r+40>>2]=Bt[0],b[r+44>>2]=Bt[1],b[r+48>>2]=4096,b[r+52>>2]=o.blocks,b[r+56>>2]=o.atime.getTime()/1e3|0,b[r+60>>2]=0,b[r+64>>2]=o.mtime.getTime()/1e3|0,b[r+68>>2]=0,b[r+72>>2]=o.ctime.getTime()/1e3|0,b[r+76>>2]=0,Bt=[o.ino>>>0,(ye=o.ino,+Math.abs(ye)>=1?ye>0?(Math.min(+Math.floor(ye/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],b[r+80>>2]=Bt[0],b[r+84>>2]=Bt[1],0},doMsync(e,t,r,o,a){let s=ve.slice(e,e+r);l.msync(t,s,a,r,o)},doMkdir(e,t){return e=me.normalize(e),e[e.length-1]==="/"&&(e=e.substr(0,e.length-1)),l.mkdir(e,t,0),0},doMknod(e,t,r){switch(t&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return l.mknod(e,t,r),0},doReadlink(e,t,r){if(r<=0)return-28;let o=l.readlink(e),a=Math.min(r,bt(o)),s=be[t+a];return rr(o,t,r+1),be[t+a]=s,a},doAccess(e,t){if(t&-8)return-28;let r;if(r=l.lookupPath(e,{follow:!0}).node,!r)return-44;let a="";return t&4&&(a+="r"),t&2&&(a+="w"),t&1&&(a+="x"),a&&l.nodePermissions(r,a)?-2:0},doDup(e,t,r){let o=l.getStream(r);return o&&l.close(o),l.open(e,t,0,r,r).fd},doReadv(e,t,r,o){let a=0;for(let s=0;s>2],c=b[t+(s*8+4)>>2],u=l.read(e,be,A,c,o);if(u<0)return-1;if(a+=u,u>2],c=b[t+(s*8+4)>>2],u=l.write(e,be,A,c,o);if(u<0)return-1;a+=u}return a},varargs:void 0,get(){return z(Me.varargs!=null),Me.varargs+=4,b[Me.varargs-4>>2]},getStr(e){return Je(e)},getStreamFromFD(e){let t=l.getStream(e);if(!t)throw new l.ErrnoError(8);return t},get64(e,t){return e>=0?z(t===0):z(t===-1),e}};function Hi(e,t,r){Me.varargs=r;try{let a=Me.getStreamFromFD(e);switch(t){case 0:{var o=Me.get();if(o<0)return-28;let s;return s=l.open(a.path,a.flags,0,o),s.fd}case 1:case 2:return 0;case 3:return a.flags;case 4:{var o=Me.get();return a.flags|=o,0}case 12:{var o=Me.get();let A=0;return T[o+A>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return he(28),-1;default:return-28}}catch(a){return(typeof l=="undefined"||!(a instanceof l.ErrnoError))&&p(a),-a.errno}}function Gi(e,t,r){Me.varargs=r;try{let a=Me.getStreamFromFD(e);switch(t){case 21509:case 21505:return a.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return a.tty?0:-59;case 21519:{if(!a.tty)return-59;var o=Me.get();return b[o>>2]=0,0}case 21520:return a.tty?-28:-59;case 21531:{var o=Me.get();return l.ioctl(a,t,o)}case 21523:return a.tty?0:-59;case 21524:return a.tty?0:-59;default:p(`bad ioctl syscall ${t}`)}}catch(a){return(typeof l=="undefined"||!(a instanceof l.ErrnoError))&&p(a),-a.errno}}function Yi(e,t,r,o,a,s){s<<=12;let A,c=!1;if(o&16&&e%65536!==0)return-28;if(o&32){if(A=ie(t),!A)return-48;c=!0}else{let u=l.getStream(a);if(!u)return-8;let d=l.mmap(u,e,t,s,r,o);A=d.ptr,c=d.allocated}return Me.mappings[A]={malloc:A,len:t,allocated:c,fd:a,prot:r,flags:o,offset:s},A}function Xi(e,t,r,o,a,s){try{return Yi(e,t,r,o,a,s)}catch(A){return(typeof l=="undefined"||!(A instanceof l.ErrnoError))&&p(A),-A.errno}}function Wi(e,t,r){Me.varargs=r;try{let o=Me.getStr(e),a=r?Me.get():0;return l.open(o,t,a).fd}catch(o){return(typeof l=="undefined"||!(o instanceof l.ErrnoError))&&p(o),-o.errno}}function Zn(e,t){try{return e=Me.getStr(e),Me.doStat(l.stat,e,t)}catch(r){return(typeof l=="undefined"||!(r instanceof l.ErrnoError))&&p(r),-r.errno}}let Vi=48,cn=57;function sr(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");let t=e.charCodeAt(0);return t>=Vi&&t<=cn?`_${e}`:e}function Ar(e,t){return e=sr(e),new Function("body",`return function ${e}() { "use strict"; return body.apply(this, arguments); }; `)(t)}let rt=[],ft=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function zi(){let e=0;for(let t=5;t{for(let r=t.next();!r.done;r=t.next()){let o=r.value;o.ptr?Jt(o):console.warn(`object already deleted: ${o.ptr}`)}}),Wr=function(t){return fn.register(t,t.$$,t.$$),t},Kt=function(t){fn.unregister(t.$$)},Wr(e))}function lr(e,t,r){e=je(e),t=gt(t,"wrapper"),r=zt(r);let o=[].slice,{registeredClass:a}=t,s=a.instancePrototype,{baseClass:A}=a,c=A.instancePrototype,u=a.baseClass.constructor,d=Ar(e,function(){a.baseClass.pureVirtualFunctions.forEach(h=>{if(this[h]===c[h])throw new qn(`Pure virtual function ${h} must be implemented in JavaScript`)}),Object.defineProperty(this,"__parent",{value:s}),this.__construct.apply(this,o.call(arguments))});s.__construct=function(){this===s&&Ae("Pass correct 'this' to __construct");let I=u.implement.apply(void 0,[this].concat(o.call(arguments)));Kt(I);let{$$:m}=I;I.notifyOnDestruction(),m.preservePointerOnDelete=!0,Object.defineProperties(this,{$$:{value:m}}),Wr(this),ti(a,m.ptr,this)},s.__destruct=function(){this===s&&Ae("Pass correct 'this' to __destruct"),Kt(this),dn(a,this.$$.ptr)},d.prototype=Object.create(s);for(let h in r)d.prototype[h]=r[h];return cr(d)}let dr={};function _(e){for(;e.length;){let t=e.pop();e.pop()(t)}}function g(e){return this.fromWireType(Qe[e>>2])}let C={},B={},F;function H(e){throw new F(e)}function X(e,t,r){e.forEach(c=>{B[c]=t});function o(c){let u=r(c);u.length!==e.length&&H("Mismatched type converter count");for(let d=0;d{$t.hasOwnProperty(c)?a[u]=$t[c]:(s.push(c),C.hasOwnProperty(c)||(C[c]=[]),C[c].push(()=>{a[u]=$t[c],++A,A===s.length&&o(a)}))}),s.length===0&&o(a)}function L(e){let t=dr[e];delete dr[e];let{rawConstructor:r}=t,{rawDestructor:o}=t,a=t.fields,s=a.map(A=>A.getterReturnType).concat(a.map(A=>A.setterArgumentType));X([e],s,A=>{let c={};return a.forEach((u,d)=>{let{fieldName:h}=u,I=A[d],{getter:m}=u,{getterContext:y}=u,v=A[d+a.length],{setter:x}=u,{setterContext:G}=u;c[h]={read(R){return I.fromWireType(m(y,R))},write(R,D){let N=[];x(G,R,v.toWireType(N,D)),_(N)}}}),[{name:t.name,fromWireType(u){let d={};for(let h in c)d[h]=c[h].read(u);return o(u),d},toWireType(u,d){for(var h in c)if(!(h in d))throw new TypeError(`Missing field: "${h}"`);let I=r();for(h in c)c[h].write(I,d[h]);return u!==null&&u.push(o,I),I},argPackAdvance:8,readValueFromPointer:g,destructorFunction:o}]})}function q(e,t,r,o,a){}function ee(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${e}`)}}function Z(e,t,r){if(r=r||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");let{name:o}=t;if(e||Ae(`type "${o}" must have a positive integer typeid pointer`),$t.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ae(`Cannot register type '${o}' twice`)}if($t[e]=t,delete B[e],C.hasOwnProperty(e)){let a=C[e];delete C[e],a.forEach(s=>{s()})}}function Ce(e,t,r,o,a){let s=ee(r);t=je(t),Z(e,{name:t,fromWireType(A){return!!A},toWireType(A,c){return c?o:a},argPackAdvance:8,readValueFromPointer(A){let c;if(r===1)c=be;else if(r===2)c=T;else if(r===4)c=b;else throw new TypeError(`Unknown boolean type size: ${t}`);return this.fromWireType(c[A>>s])},destructorFunction:null})}function Be(e){if(!(this instanceof wt)||!(e instanceof wt))return!1;let t=this.$$.ptrType.registeredClass,r=this.$$.ptr,o=e.$$.ptrType.registeredClass,a=e.$$.ptr;for(;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;o.baseClass;)a=o.upcast(a),o=o.baseClass;return t===o&&r===a}function De(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function Ge(e){function t(r){return r.$$.ptrType.registeredClass.name}Ae(`${t(e)} instance already deleted`)}function Et(){if(this.$$.ptr||Ge(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;let e=Wr(Object.create(Object.getPrototypeOf(this),{$$:{value:De(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function ct(){this.$$.ptr||Ge(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ae("Object already scheduled for deletion"),Kt(this),Jt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function qe(){return!this.$$.ptr}function fr(){return this.$$.ptr||Ge(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ae("Object already scheduled for deletion"),ur.push(this),ur.length===1&&Xr&&Xr(kt),this.$$.deleteScheduled=!0,this}function Ne(){wt.prototype.isAliasOf=Be,wt.prototype.clone=Et,wt.prototype.delete=ct,wt.prototype.isDeleted=qe,wt.prototype.deleteLater=fr}function wt(){}let pt={};function gr(e,t,r){if(e[t].overloadTable===void 0){let o=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ae(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[o.argCount]=o}}function Sn(e,t,r){n.hasOwnProperty(e)?((r===void 0||n[e].overloadTable!==void 0&&n[e].overloadTable[r]!==void 0)&&Ae(`Cannot register public name '${e}' twice`),gr(n,e,e),n.hasOwnProperty(r)&&Ae(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,r!==void 0&&(n[e].numArguments=r))}function Vr(e,t,r,o,a,s,A,c){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=o,this.baseClass=a,this.getActualType=s,this.upcast=A,this.downcast=c,this.pureVirtualFunctions=[]}function vr(e,t,r){for(;t!==r;)t.upcast||Ae(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e}function ri(e,t){if(t===null)return this.isReference&&Ae(`null is not a valid ${this.name}`),0;t.$$||Ae(`Cannot pass "${En(t)}" as a ${this.name}`),t.$$.ptr||Ae(`Cannot pass deleted object as a pointer of type ${this.name}`);let r=t.$$.ptrType.registeredClass;return vr(t.$$.ptr,r,this.registeredClass)}function Ho(e,t){let r;if(t===null)return this.isReference&&Ae(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,r),r):0;t.$$||Ae(`Cannot pass "${En(t)}" as a ${this.name}`),t.$$.ptr||Ae(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&Ae(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);let o=t.$$.ptrType.registeredClass;if(r=vr(t.$$.ptr,o,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&Ae("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ae(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{let a=t.clone();r=this.rawShare(r,cr(()=>{a.delete()})),e!==null&&e.push(this.rawDestructor,r)}break;default:Ae("Unsupporting sharing policy")}return r}function Go(e,t){if(t===null)return this.isReference&&Ae(`null is not a valid ${this.name}`),0;t.$$||Ae(`Cannot pass "${En(t)}" as a ${this.name}`),t.$$.ptr||Ae(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&Ae(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);let r=t.$$.ptrType.registeredClass;return vr(t.$$.ptr,r,this.registeredClass)}function Yo(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Xo(e){this.rawDestructor&&this.rawDestructor(e)}function go(e){e!==null&&e.delete()}function Eo(e,t,r){if(t===r)return e;if(r.baseClass===void 0)return null;let o=Eo(e,t,r.baseClass);return o===null?null:r.downcast(o)}function ni(e,t){return t=Rn(e,t),nt[t]}function ii(e,t){(!t.ptrType||!t.ptr)&&H("makeClassHandle requires ptr and ptrType");let r=!!t.smartPtrType,o=!!t.smartPtr;return r!==o&&H("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Wr(Object.create(e,{$$:{value:t}}))}function Wo(e){let t=this.getPointee(e);if(!t)return this.destructor(e),null;let r=ni(this.registeredClass,t);if(r!==void 0){if(r.$$.count.value===0)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();let u=r.clone();return this.destructor(e),u}function o(){return this.isSmartPointer?ii(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):ii(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}let a=this.registeredClass.getActualType(t),s=pt[a];if(!s)return o.call(this);let A;this.isConst?A=s.constPointerType:A=s.pointerType;let c=Eo(t,this.registeredClass,A.registeredClass);return c===null?o.call(this):this.isSmartPointer?ii(A.registeredClass.instancePrototype,{ptrType:A,ptr:c,smartPtrType:this,smartPtr:e}):ii(A.registeredClass.instancePrototype,{ptrType:A,ptr:c})}function Er(){Zt.prototype.getPointee=Yo,Zt.prototype.destructor=Xo,Zt.prototype.argPackAdvance=8,Zt.prototype.readValueFromPointer=g,Zt.prototype.deleteObject=go,Zt.prototype.fromWireType=Wo}function Zt(e,t,r,o,a,s,A,c,u,d,h){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=o,this.isSmartPointer=a,this.pointeeType=s,this.sharingPolicy=A,this.rawGetPointee=c,this.rawConstructor=u,this.rawShare=d,this.rawDestructor=h,!a&&t.baseClass===void 0?o?(this.toWireType=ri,this.destructorFunction=null):(this.toWireType=Go,this.destructorFunction=null):this.toWireType=Ho}function po(e,t,r){n.hasOwnProperty(e)||H("Replacing nonexistant public symbol"),n[e].overloadTable!==void 0&&r!==void 0?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)}function Vo(e,t,r){z(`dynCall_${e}`in n,`bad function pointer type - no table for sig '${e}'`),r&&r.length?z(r.length===e.substring(1).replace(/j/g,"--").length):z(e.length==1);let o=n[`dynCall_${e}`];return r&&r.length?o.apply(null,[t].concat(r)):o.call(null,t)}function zo(e,t,r){return e.includes("j")?Vo(e,t,r):(z(V.get(t),`missing table entry in dynCall: ${t}`),V.get(t).apply(null,r))}function _t(e,t){z(e.includes("j"),"getDynCaller should only be called with i64 sigs");let r=[];return function(){r.length=arguments.length;for(let o=0;o{zr(`Cannot construct ${h} due to unbound types`,[o])}),X([e,t,r],o?[o]:[],v=>{v=v[0];let x,G;o?(x=v.registeredClass,G=x.instancePrototype):G=wt.prototype;let R=Ar(y,function(){if(Object.getPrototypeOf(this)!==D)throw new ae(`Use 'new' to construct ${h}`);if(N.constructor_body===void 0)throw new ae(`${h} has no accessible constructor`);let Fe=N.constructor_body[arguments.length];if(Fe===void 0)throw new ae(`Tried to invoke ctor of ${h} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(N.constructor_body).toString()}) parameters instead!`);return Fe.apply(this,arguments)});var D=Object.create(G,{constructor:{value:R}});R.prototype=D;var N=new Vr(h,R,D,m,x,s,c,d);let $=new Zt(h,N,!0,!1,!1),Y=new Zt(`${h}*`,N,!1,!1,!1),_e=new Zt(`${h} const*`,N,!1,!0,!1);return pt[e]={pointerType:Y,constPointerType:_e},po(y,R),[$,Y,_e]})}function Mn(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);let r=Ar(e.name||"unknownFunctionName",()=>{});r.prototype=e.prototype;let o=new r,a=e.apply(o,t);return a instanceof Object?a:o}function $r(e,t,r,o,a){let s=t.length;s<2&&Ae("argTypes array size mismatch! Must at least get return value and 'this' types!");let A=t[1]!==null&&r!==null,c=!1;for(var u=1;u0?", ":""}${I}`),m+=`${d?"var rv = ":""}invoker(fn${I.length>0?", ":""}${I}); `,c)m+=`runDestructors(destructors); `;else for(var u=A?1:2;u>2)+o]);return r}function $o(e,t,r,o,a,s,A){let c=oi(r,o);t=je(t),s=ut(a,s),X([],[e],u=>{u=u[0];let d=`${u.name}.${t}`;function h(){zr(`Cannot call ${d} due to unbound types`,c)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]);let I=u.registeredClass.constructor;return I[t]===void 0?(h.argCount=r-1,I[t]=h):(gr(I,t,d),I[t].overloadTable[r-1]=h),X([],c,m=>{let y=[m[0],null].concat(m.slice(1)),v=$r(d,y,null,s,A);return I[t].overloadTable===void 0?(v.argCount=r-1,I[t]=v):I[t].overloadTable[r-1]=v,[]}),[]})}function Ko(e,t,r,o,a,s){z(t>0);let A=oi(t,r);a=ut(o,a),X([],[e],c=>{c=c[0];let u=`constructor ${c.name}`;if(c.registeredClass.constructor_body===void 0&&(c.registeredClass.constructor_body=[]),c.registeredClass.constructor_body[t-1]!==void 0)throw new ae(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${c.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return c.registeredClass.constructor_body[t-1]=function(){zr(`Cannot construct ${c.name} due to unbound types`,A)},X([],A,d=>(d.splice(1,0,null),c.registeredClass.constructor_body[t-1]=$r(u,d,null,a,s),[])),[]})}function ho(e,t,r,o,a,s,A,c){let u=oi(r,o);t=je(t),s=ut(a,s),X([],[e],d=>{d=d[0];let h=`${d.name}.${t}`;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),c&&d.registeredClass.pureVirtualFunctions.push(t);function I(){zr(`Cannot call ${h} due to unbound types`,u)}let m=d.registeredClass.instancePrototype,y=m[t];return y===void 0||y.overloadTable===void 0&&y.className!==d.name&&y.argCount===r-2?(I.argCount=r-2,I.className=d.name,m[t]=I):(gr(m,t,h),m[t].overloadTable[r-2]=I),X([],u,v=>{let x=$r(h,v,d,s,A);return m[t].overloadTable===void 0?(x.argCount=r-2,m[t]=x):m[t].overloadTable[r-2]=x,[]}),[]})}function Io(e,t,r){return e instanceof Object||Ae(`${r} with invalid "this": ${e}`),e instanceof t.registeredClass.constructor||Ae(`${r} incompatible with "this" of type ${e.constructor.name}`),e.$$.ptr||Ae(`cannot call emscripten binding method ${r} on deleted object`),vr(e.$$.ptr,e.$$.ptrType.registeredClass,t.registeredClass)}function mo(e,t,r,o,a,s,A,c,u,d){t=je(t),a=ut(o,a),X([],[e],h=>{h=h[0];let I=`${h.name}.${t}`,m={get(){zr(`Cannot access ${I} due to unbound types`,[r,A])},enumerable:!0,configurable:!0};return u?m.set=function(){zr(`Cannot access ${I} due to unbound types`,[r,A])}:m.set=function(y){Ae(`${I} is a read-only property`)},Object.defineProperty(h.registeredClass.instancePrototype,t,m),X([],u?[r,A]:[r],y=>{let v=y[0],x={get(){let G=Io(this,h,`${I} getter`);return v.fromWireType(a(s,G))},enumerable:!0};if(u){u=ut(c,u);let G=y[1];x.set=function(R){let D=Io(this,h,`${I} setter`),N=[];u(d,D,G.toWireType(N,R)),_(N)}}return Object.defineProperty(h.registeredClass.instancePrototype,t,x),[]}),[]})}function Co(e){e>4&&--ft[e].refcount===0&&(ft[e]=void 0,rt.push(e))}function gn(e,t){t=je(t),Z(e,{name:t,fromWireType(r){let o=ft[r].value;return Co(r),o},toWireType(r,o){return cr(o)},argPackAdvance:8,readValueFromPointer:g,destructorFunction:null})}function En(e){if(e===null)return"null";let t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():`${e}`}function Jo(e,t){switch(t){case 2:return function(r){return this.fromWireType(ze[r>>2])};case 3:return function(r){return this.fromWireType(Nr[r>>3])};default:throw new TypeError(`Unknown float type: ${e}`)}}function Zo(e,t,r){let o=ee(r);t=je(t),Z(e,{name:t,fromWireType(a){return a},toWireType(a,s){if(typeof s!="number"&&typeof s!="boolean")throw new TypeError(`Cannot convert "${En(s)}" to ${this.name}`);return s},argPackAdvance:8,readValueFromPointer:Jo(t,o),destructorFunction:null})}function qo(e,t,r,o,a,s){let A=oi(t,r);e=je(e),a=ut(o,a),Sn(e,()=>{zr(`Cannot call ${e} due to unbound types`,A)},t-1),X([],A,c=>{let u=[c[0],null].concat(c.slice(1));return po(e,$r(e,u,null,a,s),t-1),[]})}function ea(e,t,r){switch(t){case 0:return r?function(a){return be[a]}:function(a){return ve[a]};case 1:return r?function(a){return T[a>>1]}:function(a){return Oe[a>>1]};case 2:return r?function(a){return b[a>>2]}:function(a){return Qe[a>>2]};default:throw new TypeError(`Unknown integer type: ${e}`)}}function ta(e,t,r,o,a){t=je(t),a===-1&&(a=4294967295);let s=ee(r),A=function(u){return u};if(o===0){let u=32-8*r;A=function(d){return d<>>u}}let c=t.includes("unsigned");Z(e,{name:t,fromWireType:A,toWireType(u,d){if(typeof d!="number"&&typeof d!="boolean")throw new TypeError(`Cannot convert "${En(d)}" to ${this.name}`);if(da)throw new TypeError(`Passing a number "${En(d)}" from JS side to C/C++ side to an argument of type "${t}", which is outside the valid range [${o}, ${a}]!`);return c?d>>>0:d|0},argPackAdvance:8,readValueFromPointer:ea(t,s,o!==0),destructorFunction:null})}function ra(e,t,r){let a=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function s(A){A=A>>2;let c=Qe,u=c[A],d=c[A+1];return new a(Se,d,u)}r=je(r),Z(e,{name:r,fromWireType:s,argPackAdvance:8,readValueFromPointer:s},{ignoreDuplicateRegistrations:!0})}function na(e,t){t=je(t);let r=t==="std::string";Z(e,{name:t,fromWireType(o){let a=Qe[o>>2],s;if(r){let c=o+4;for(var A=0;A<=a;++A){let u=o+4+A;if(A==a||ve[u]==0){let d=u-c,h=Je(c,d);s===void 0?s=h:(s+=String.fromCharCode(0),s+=h),c=u+1}}}else{let c=new Array(a);for(var A=0;A>2]=c,r&&A)rr(a,u+4,c+1);else if(A)for(var d=0;d255&&(it(u),Ae("String has UTF-16 code units that do not fit in 8 bits")),ve[u+4+d]=h}else for(var d=0;d>2],h=s(),I,m=u+4;for(let y=0;y<=d;++y){let v=u+4+y*t;if(y==d||h[v>>c]==0){let x=v-m,G=o(m,x);I===void 0?I=G:(I+=String.fromCharCode(0),I+=G),m=v+t}}return it(u),I},toWireType(u,d){typeof d!="string"&&Ae(`Cannot pass non-string to C++ string type ${r}`);let h=A(d),I=tn(4+h+t);return Qe[I>>2]=h>>c,a(d,I+4,h+t),u!==null&&u.push(it,I),I},argPackAdvance:8,readValueFromPointer:g,destructorFunction(u){it(u)}})}function oa(e,t,r,o,a,s){dr[e]={name:je(t),rawConstructor:ut(r,o),rawDestructor:ut(a,s),fields:[]}}function aa(e,t,r,o,a,s,A,c,u,d){dr[e].fields.push({fieldName:je(t),getterReturnType:r,getter:ut(o,a),getterContext:s,setterArgumentType:A,setter:ut(c,u),setterContext:d})}function sa(e,t){t=je(t),Z(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType(){},toWireType(r,o){}})}let Aa={};function Zi(e){let t=Aa[e];return t===void 0?je(e):t}let qi=[];function ca(e,t,r,o){e=qi[e],t=zt(t),r=Zi(r),e(t,r,null,o)}function ua(e){let t=qi.length;return qi.push(e),t}function la(e,t){let r=new Array(e);for(let o=0;o>2)+o],`parameter ${o}`);return r}function da(e,t){let r=la(e,t),o=r[0],a=`${o.name}_$${r.slice(1).map(y=>y.name).join("_")}$`,s=["retType"],A=[o],c="";for(var u=0;u4&&(ft[e].refcount+=1)}function ga(e,t){e=gt(e,"_emval_take_value");let r=e.readValueFromPointer(t);return cr(r)}function Ea(){p()}let pa=!0;function _a(e,t){let r;if(e===0)r=Date.now();else if((e===1||e===4)&&pa)r=Or();else return he(28),-1;return b[t>>2]=r/1e3|0,b[t+4>>2]=r%1e3*1e3*1e3|0,0}function ha(e,t){p("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function ai(e,t){p("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}let si=[];function Ia(e,t){z(Array.isArray(si)),z(t%16==0),si.length=0;let r;for(t>>=2;r=ve[e++];){z(r===100||r===102||r===105);let o=r<105;o&&t&1&&t++,si.push(o?Nr[t++>>1]:b[t]),++t}return si}function ma(e,t,r){let o=Ia(t,r);return jr.hasOwnProperty(e)||p(`No EM_ASM constant found at address ${e}`),jr[e].apply(null,o)}function Ca(){return 2147483648}function ya(e,t,r){ve.copyWithin(e,t,t+r)}function wa(e){p("Cannot use emscripten_pc_get_function without -s USE_OFFSET_CONVERTER")}function Da(e){try{return Pt.grow(e-Se.byteLength+65535>>>16),on(Pt.buffer),1}catch(t){pe(`emscripten_realloc_buffer: Attempted to grow heap from ${Se.byteLength} bytes to ${e} bytes, but got error: ${t}`)}}function Ai(e){let t=ve.length;e=e>>>0,z(e>t);let r=2147483648;if(e>r)return pe(`Cannot enlarge memory, asked to go up to ${e} bytes, but the limit is ${r} bytes!`),!1;for(let a=1;a<=4;a*=2){let s=t*(1+.2/a);s=Math.min(s,e+100663296);var o=Math.min(r,xe(Math.max(e,s),65536));if(Da(o))return!0}return pe(`Failed to grow the heap from ${t} bytes to ${o} bytes, not enough memory!`),!1}function pr(e){p("Cannot use emscripten_generate_pc (needed by __builtin_return_address) without -s USE_OFFSET_CONVERTER")}let Kr={};function yo(e){e.forEach(t=>{let r=pr(t);r&&(Kr[r]=t)})}function ba(){let e=new Error().stack.split(` `);return e[0]=="Error"&&e.shift(),yo(e),Kr.last_addr=pr(e[2]),Kr.last_stack=e,Kr.last_addr}function Oa(e,t,r){let o;Kr.last_addr==e?o=Kr.last_stack:(o=new Error().stack.split(` `),o[0]=="Error"&&o.shift(),yo(o));let a=2;for(;o[a]&&pr(o[a])!=e;)++a;for(var s=0;s>2]=pr(o[s+a]);return s}function Ba(e){let t=Or();for(;Or()-t>1,s=new Uint16Array(a);var o=0;let c=0;for(;s[o++]=c,!(o>=a||(s[o++]=c+1,o>=a)||(s[o++]=c+2,o>=a)||(s[o++]=c,o>=a)||(s[o++]=c+2,o>=a)||(s[o++]=c+3,o>=a));)c+=4;t.GLctx.bufferData(34963,s,35044),t.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function(t){let r=w.log2ceilLookup(t),o=w.currentContext.tempVertexBuffers1[r],a=w.currentContext.tempVertexBufferCounters1[r];w.currentContext.tempVertexBufferCounters1[r]=w.currentContext.tempVertexBufferCounters1[r]+1&w.numTempVertexBuffersPerSize-1;let s=o[a];if(s)return s;let A=S.getParameter(34964);return o[a]=S.createBuffer(),S.bindBuffer(34962,o[a]),S.bufferData(34962,1<>2]:-1;a+=Je(b[r+s*4>>2],A<0?void 0:A)}return a},calcBufLength:function(t,r,o,a){if(o>0)return a*o;let s=w.byteSizeByType[r-w.byteSizeByTypeRoot];return t*s*a},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function(t){w.resetBufferBinding=!1;for(let r=0;r1?e.getContext("webgl2",t):e.getContext("webgl",t);return r?w.registerContext(r,t):0},enableOffscreenFramebufferAttributes(e){e.renderViaOffscreenBackBuffer=!0,e.preserveDrawingBuffer=!0},createOffscreenFramebuffer(e){let t=e.GLctx,r=t.createFramebuffer();if(t.bindFramebuffer(36160,r),e.defaultFbo=r,e.defaultFboForbidBlitFramebuffer=!1,t.getContextAttributes().antialias)e.defaultFboForbidBlitFramebuffer=!0;else{let I=navigator.userAgent.toLowerCase().match(/firefox\/(\d\d)/);if(I!=null){let m=I[1];e.defaultFboForbidBlitFramebuffer=m<67}}e.defaultColorTarget=t.createTexture(),e.defaultDepthTarget=t.createRenderbuffer(),w.resizeOffscreenFramebuffer(e),t.bindTexture(3553,e.defaultColorTarget),t.texParameteri(3553,10241,9728),t.texParameteri(3553,10240,9728),t.texParameteri(3553,10242,33071),t.texParameteri(3553,10243,33071),t.texImage2D(3553,0,6408,t.canvas.width,t.canvas.height,0,6408,5121,null),t.framebufferTexture2D(36160,36064,3553,e.defaultColorTarget,0),t.bindTexture(3553,null);let o=t.createRenderbuffer();t.bindRenderbuffer(36161,e.defaultDepthTarget),t.renderbufferStorage(36161,33189,t.canvas.width,t.canvas.height),t.framebufferRenderbuffer(36160,36096,36161,e.defaultDepthTarget),t.bindRenderbuffer(36161,null);let a=[-1,-1,-1,1,1,-1,1,1],s=t.createBuffer();t.bindBuffer(34962,s),t.bufferData(34962,new Float32Array(a),35044),t.bindBuffer(34962,null),e.blitVB=s;let A="attribute vec2 pos;varying lowp vec2 tex;void main() { tex = pos * 0.5 + vec2(0.5,0.5); gl_Position = vec4(pos, 0.0, 1.0); }",c=t.createShader(35633);t.shaderSource(c,A),t.compileShader(c);let u="varying lowp vec2 tex;uniform sampler2D sampler;void main() { gl_FragColor = texture2D(sampler, tex); }",d=t.createShader(35632);t.shaderSource(d,u),t.compileShader(d);let h=t.createProgram();t.attachShader(h,c),t.attachShader(h,d),t.linkProgram(h),e.blitProgram=h,e.blitPosLoc=t.getAttribLocation(h,"pos"),t.useProgram(h),t.uniform1i(t.getUniformLocation(h,"sampler"),0),t.useProgram(null),e.defaultVao=void 0,t.createVertexArray&&(e.defaultVao=t.createVertexArray(),t.bindVertexArray(e.defaultVao),t.enableVertexAttribArray(e.blitPosLoc),t.bindVertexArray(null))},resizeOffscreenFramebuffer(e){let t=e.GLctx;if(e.defaultColorTarget){let r=t.getParameter(32873);t.bindTexture(3553,e.defaultColorTarget),t.texImage2D(3553,0,6408,t.drawingBufferWidth,t.drawingBufferHeight,0,6408,5121,null),t.bindTexture(3553,r)}if(e.defaultDepthTarget){let r=t.getParameter(36007);t.bindRenderbuffer(36161,e.defaultDepthTarget),t.renderbufferStorage(36161,33189,t.drawingBufferWidth,t.drawingBufferHeight),t.bindRenderbuffer(36161,r)}},blitOffscreenFramebuffer(e){let t=e.GLctx,r=t.getParameter(3089);r&&t.disable(3089);let o=t.getParameter(36006);if(t.blitFramebuffer&&!e.defaultFboForbidBlitFramebuffer)t.bindFramebuffer(36008,e.defaultFbo),t.bindFramebuffer(36009,null),t.blitFramebuffer(0,0,t.canvas.width,t.canvas.height,0,0,t.canvas.width,t.canvas.height,16384,9728);else{let x=function(){t.vertexAttribPointer(e.blitPosLoc,2,5126,!1,0,0),t.drawArrays(5,0,4)};var A=x;t.bindFramebuffer(36160,null);let c=t.getParameter(35725);t.useProgram(e.blitProgram);let u=t.getParameter(34964);t.bindBuffer(34962,e.blitVB);let d=t.getParameter(34016);t.activeTexture(33984);let h=t.getParameter(32873);t.bindTexture(3553,e.defaultColorTarget);let I=t.getParameter(3042);I&&t.disable(3042);let m=t.getParameter(2884);m&&t.disable(2884);let y=t.getParameter(2929);y&&t.disable(2929);let v=t.getParameter(2960);if(v&&t.disable(2960),e.defaultVao){let G=t.getParameter(34229);t.bindVertexArray(e.defaultVao),x(),t.bindVertexArray(G)}else{let G={buffer:t.getVertexAttrib(e.blitPosLoc,34975),size:t.getVertexAttrib(e.blitPosLoc,34339),stride:t.getVertexAttrib(e.blitPosLoc,34340),type:t.getVertexAttrib(e.blitPosLoc,34341),normalized:t.getVertexAttrib(e.blitPosLoc,34922),pointer:t.getVertexAttribOffset(e.blitPosLoc,34373)},R=t.getParameter(34921),D=[];for(var a=0;a=2&&(t.disjointTimerQueryExt=t.getExtension("EXT_disjoint_timer_query_webgl2")),(e.version<2||!t.disjointTimerQueryExt)&&(t.disjointTimerQueryExt=t.getExtension("EXT_disjoint_timer_query")),O(t),(t.getSupportedExtensions()||[]).forEach(o=>{!o.includes("lose_context")&&!o.includes("debug")&&t.getExtension(o)})}},de={inEventHandler:0,removeAllEventListeners(){for(let e=de.eventHandlers.length-1;e>=0;--e)de._removeHandler(e);de.eventHandlers=[],de.deferredCalls=[]},registerRemoveEventListeners(){de.removeEventListenersRegistered||(le.push(de.removeAllEventListeners),de.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall(e,t,r){function o(a,s){if(a.length!=s.length)return!1;for(let A in a)if(a[A]!=s[A])return!1;return!0}for(let a in de.deferredCalls){let s=de.deferredCalls[a];if(s.targetFunction==e&&o(s.argsList,r))return}de.deferredCalls.push({targetFunction:e,precedence:t,argsList:r}),de.deferredCalls.sort((a,s)=>a.precedence>2,o=b[r+6],a={alpha:!!b[r+0],depth:!!b[r+1],stencil:!!b[r+2],antialias:!!b[r+3],premultipliedAlpha:!!b[r+4],preserveDrawingBuffer:!!b[r+5],powerPreference:wo[o],failIfMajorPerformanceCaveat:!!b[r+7],majorVersion:b[r+8],minorVersion:b[r+9],enableExtensionsByDefault:b[r+10],explicitSwapControl:b[r+11],proxyContextToMainThread:b[r+12],renderViaOffscreenBackBuffer:b[r+13]},s=to(e);if(!s)return 0;if(s.offscreenCanvas&&(s=s.offscreenCanvas),a.explicitSwapControl&&(s.transferControlToOffscreen||typeof OffscreenCanvas!="undefined"&&s instanceof OffscreenCanvas||a.renderViaOffscreenBackBuffer||(a.renderViaOffscreenBackBuffer=!0),s.transferControlToOffscreen)){if(!s.controlTransferredOffscreen)w.offscreenCanvases[s.id]={canvas:s.transferControlToOffscreen(),canvasSharedPtr:tn(12),id:s.id},s.controlTransferredOffscreen=!0;else if(!w.offscreenCanvases[s.id])return 0;s=w.offscreenCanvases[s.id]}return w.createContext(s,a)}function Fa(e,t){return Ma(e,t)}function Do(){return w.currentContext?w.currentContext.handle:0}function ro(){return Do()}n._emscripten_webgl_get_current_context=ro;function bo(e){return w.makeContextCurrent(e)?0:-5}n._emscripten_webgl_make_context_current=bo;function ka(e){w.currentContext==e&&(w.currentContext=0),w.deleteContext(e)}function Na(e,t){if(!t)return-5;if(e=w.contexts[e],!e)return-3;let r=e.GLctx;if(!r)return-3;r=r.getContextAttributes(),b[t>>2]=r.alpha,b[t+4>>2]=r.depth,b[t+8>>2]=r.stencil,b[t+12>>2]=r.antialias,b[t+16>>2]=r.premultipliedAlpha,b[t+20>>2]=r.preserveDrawingBuffer;let o=r.powerPreference&&wo.indexOf(r.powerPreference);return b[t+24>>2]=o,b[t+28>>2]=r.failIfMajorPerformanceCaveat,b[t+32>>2]=e.version,b[t+36>>2]=0,b[t+40>>2]=e.attributes.enableExtensionsByDefault,0}function no(e){z(e);let t=e>>2;for(let r=0;r<14;++r)b[t+r]=0;b[t+0]=b[t+1]=b[t+3]=b[t+4]=b[t+8]=b[t+10]=1}let io={};function Fn(){return ht||"./this.program"}function kn(){if(!kn.strings){let r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:`${(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")}.UTF-8`,_:Fn()};for(var e in io)io[e]===void 0?delete r[e]:r[e]=io[e];let o=[];for(var e in r)o.push(`${e}=${r[e]}`);kn.strings=o}return kn.strings}function Ua(e,t){let r=0;return kn().forEach((o,a)=>{let s=t+r;b[e+a*4>>2]=s,kr(o,s),r+=o.length+1}),0}function xa(e,t){let r=kn();b[e>>2]=r.length;let o=0;return r.forEach(a=>{o+=a.length+1}),b[t>>2]=o,0}function ja(e){try{let t=Me.getStreamFromFD(e);return l.close(t),0}catch(t){return(typeof l=="undefined"||!(t instanceof l.ErrnoError))&&p(t),t.errno}}function La(e,t,r,o){try{let a=Me.getStreamFromFD(e),s=Me.doReadv(a,t,r);return b[o>>2]=s,0}catch(a){return(typeof l=="undefined"||!(a instanceof l.ErrnoError))&&p(a),a.errno}}function Ha(e,t,r,o,a){try{let s=Me.getStreamFromFD(e),c=r*4294967296+(t>>>0),u=9007199254740992;return c<=-u||c>=u?-61:(l.llseek(s,c,o),Bt=[s.position>>>0,(ye=s.position,+Math.abs(ye)>=1?ye>0?(Math.min(+Math.floor(ye/4294967296),4294967295)|0)>>>0:~~+Math.ceil((ye-+(~~ye>>>0))/4294967296)>>>0:0)],b[a>>2]=Bt[0],b[a+4>>2]=Bt[1],s.getdents&&c===0&&o===0&&(s.getdents=null),0)}catch(s){return(typeof l=="undefined"||!(s instanceof l.ErrnoError))&&p(s),s.errno}}function Ga(e,t,r,o){try{let a=Me.getStreamFromFD(e),s=Me.doWritev(a,t,r);return b[o>>2]=s,0}catch(a){return(typeof l=="undefined"||!(a instanceof l.ErrnoError))&&p(a),a.errno}}function ci(){return Hn()}function ui(e,t){ui.randomDevice||(ui.randomDevice=dt());for(let r=0;r>0]=ui.randomDevice();return 0}function Ya(e){S.activeTexture(e)}function Xa(e,t){S.attachShader(w.programs[e],w.shaders[t])}function Wa(e,t,r){S.bindAttribLocation(w.programs[e],t,Je(r))}function Va(e,t){e==34962?S.currentArrayBufferBinding=t:e==34963&&(S.currentElementArrayBufferBinding=t),e==35051?S.currentPixelPackBufferBinding=t:e==35052&&(S.currentPixelUnpackBufferBinding=t),S.bindBuffer(e,w.buffers[t])}function za(e,t,r){S.bindBufferBase(e,t,w.buffers[r])}function $a(e,t){S.bindFramebuffer(e,t?w.framebuffers[t]:w.currentContext.defaultFbo)}function Ka(e,t){S.bindTexture(e,w.textures[t])}function Ja(e){S.bindVertexArray(w.vaos[e]);let t=S.getParameter(34965);S.currentElementArrayBufferBinding=t?t.name|0:0}function Za(e,t,r,o){w.currentContext.version>=2?r?S.bufferData(e,ve,o,r,t):S.bufferData(e,t,o):S.bufferData(e,r?ve.subarray(r,r+t):t,o)}function qa(e,t){return z(t===(t|0)),(e>>>0)+t*4294967296}function es(e,t,r,o){return S.clientWaitSync(w.syncs[e],t,qa(r,o))}function ts(e){S.compileShader(w.shaders[e])}function rs(){let e=w.getNewId(w.programs),t=S.createProgram();return t.name=e,t.maxUniformLength=t.maxAttributeLength=t.maxUniformBlockNameLength=0,t.uniformIdCounter=1,w.programs[e]=t,e}function ns(e){let t=w.getNewId(w.shaders);return w.shaders[t]=S.createShader(e),t}function is(e,t){for(let r=0;r>2],a=w.buffers[o];a&&(S.deleteBuffer(a),a.name=0,w.buffers[o]=null,o==S.currentArrayBufferBinding&&(S.currentArrayBufferBinding=0),o==S.currentElementArrayBufferBinding&&(S.currentElementArrayBufferBinding=0),o==S.currentPixelPackBufferBinding&&(S.currentPixelPackBufferBinding=0),o==S.currentPixelUnpackBufferBinding&&(S.currentPixelUnpackBufferBinding=0))}}function os(e,t){for(let r=0;r>2],a=w.framebuffers[o];a&&(S.deleteFramebuffer(a),a.name=0,w.framebuffers[o]=null)}}function as(e){if(!e)return;let t=w.programs[e];if(!t){w.recordError(1281);return}S.deleteProgram(t),t.name=0,w.programs[e]=null}function ss(e){if(!e)return;let t=w.shaders[e];if(!t){w.recordError(1281);return}S.deleteShader(t),w.shaders[e]=null}function As(e){if(!e)return;let t=w.syncs[e];if(!t){w.recordError(1281);return}S.deleteSync(t),t.name=0,w.syncs[e]=null}function cs(e,t){for(let r=0;r>2],a=w.textures[o];a&&(S.deleteTexture(a),a.name=0,w.textures[o]=null)}}function us(e,t){for(let r=0;r>2];S.deleteVertexArray(w.vaos[o]),w.vaos[o]=null}}function ls(e){S.disable(e)}function ds(e){let t=w.currentContext.clientBuffers[e];t.enabled=!1,S.disableVertexAttribArray(e)}function Oo(e,t,r){w.preDrawHandleClientVertexAttribBindings(t+r),S.drawArrays(e,t,r),w.postDrawHandleClientVertexAttribBindings()}let Bo=[];function fs(e,t){let r=Bo[e];for(let o=0;o>2];S.drawBuffers(r)}function gs(e){let t=w.currentContext.clientBuffers[e];t.enabled=!0,S.enableVertexAttribArray(e)}function Es(e,t){let r=S.fenceSync(e,t);if(r){let o=w.getNewId(w.syncs);return r.name=o,w.syncs[o]=r,o}return 0}function ps(){S.finish()}function _s(){S.flush()}function hs(e,t,r,o,a){S.framebufferTexture2D(e,t,r,w.textures[o],a)}function li(e,t,r,o,a){S.framebufferTextureLayer(e,t,w.textures[r],o,a)}function di(e,t,r,o){for(let a=0;a>2]=A}}function Is(e,t){di(e,t,"createBuffer",w.buffers)}function ms(e,t){di(e,t,"createFramebuffer",w.framebuffers)}function Cs(e,t){di(e,t,"createTexture",w.textures)}function ys(e,t){di(e,t,"createVertexArray",w.vaos)}function ws(e,t){return S.getAttribLocation(w.programs[e],Je(t))}function Ds(){let e=S.getError()||w.lastError;return w.lastError=0,e}function bs(e){return Qe[e>>2]+b[e+4>>2]*4294967296}function Os(e){return Qe[e>>2]+Qe[e+4>>2]*4294967296}function Bs(e,t){Qe[e>>2]=t,Qe[e+4>>2]=(t-Qe[e>>2])/4294967296;let r=t>=0?Os(e):bs(e);r!=t&&tt(`writeI53ToI64() out of range: serialized JS Number ${t} to Wasm heap as bytes lo=0x${Qe[e>>2].toString(16)}, hi=0x${Qe[e+4>>2].toString(16)}, which deserializes back to ${r} instead!`)}function Ts(e,t,r){if(!t){w.recordError(1281);return}let o;switch(e){case 36346:o=1;break;case 36344:r!=0&&r!=1&&w.recordError(1280);return;case 34814:case 36345:o=0;break;case 34466:var a=S.getParameter(34467);o=a?a.length:0;break;case 33309:if(w.currentContext.version<2){w.recordError(1282);return}var s=S.getSupportedExtensions()||[];o=2*s.length;break;case 33307:case 33308:if(w.currentContext.version<2){w.recordError(1280);return}o=e==33307?3:0;break}if(o===void 0){let A=S.getParameter(e);switch(typeof A){case"number":o=A;break;case"boolean":o=A?1:0;break;case"string":w.recordError(1280);return;case"object":if(A===null)switch(e){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{o=0;break}default:{w.recordError(1280);return}}else if(A instanceof Float32Array||A instanceof Uint32Array||A instanceof Int32Array||A instanceof Array){for(let c=0;c>2]=A[c];break;case 2:ze[t+c*4>>2]=A[c];break;case 4:be[t+c>>0]=A[c]?1:0;break}return}else try{o=A.name|0}catch(c){w.recordError(1280),pe(`GL_INVALID_ENUM in glGet${r}v: Unknown object returned from WebGL getParameter(${e})! (error: ${c})`);return}break;default:w.recordError(1280),pe(`GL_INVALID_ENUM in glGet${r}v: Native code calling glGet${r}v(${e}) and it returns ${A} of type ${typeof A}!`);return}}switch(r){case 1:Bs(t,o);break;case 0:b[t>>2]=o;break;case 2:ze[t>>2]=o;break;case 4:be[t>>0]=o?1:0;break}}function fi(e,t){Ts(e,t,0)}function gi(e){let t=bt(e)+1,r=tn(t);return rr(e,r,t),r}function vs(e){let t=w.stringCache[e];if(!t){switch(e){case 7939:var r=S.getSupportedExtensions()||[];r=r.concat(r.map(u=>`GL_${u}`)),t=gi(r.join(" "));break;case 7936:case 7937:case 37445:case 37446:var o=S.getParameter(e);o||w.recordError(1280),t=o&&gi(o);break;case 7938:var a=S.getParameter(7938);w.currentContext.version>=2?a=`OpenGL ES 3.0 (${a})`:a=`OpenGL ES 2.0 (${a})`,t=gi(a);break;case 35724:var s=S.getParameter(35724),A=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/,c=s.match(A);c!==null&&(c[1].length==3&&(c[1]=`${c[1]}0`),s=`OpenGL ES GLSL ES ${c[1]} (${s})`),t=gi(s);break;default:w.recordError(1280)}w.stringCache[e]=t}return t}function Qs(e,t){return S.getUniformBlockIndex(w.programs[e],Je(t))}function To(e){return parseInt(e)}function vo(e){return e.slice(-1)=="]"&&e.lastIndexOf("[")}function Ps(e){let{uniformLocsById:t}=e,{uniformSizeAndIdsByName:r}=e,o,a;if(!t)for(e.uniformLocsById=t={},e.uniformArrayNamesById={},o=0;o0?A.slice(0,u):A,h=e.uniformIdCounter;for(e.uniformIdCounter+=c,r[d]=[c,h],a=0;a0&&(o=To(t.slice(s+1))>>>0,a=t.slice(0,s));let A=e.uniformSizeAndIdsByName[a];if(A&&o>c,a+h>>c)}function ks(e,t,r,o,a,s,A){if(w.currentContext.version>=2){if(S.currentPixelPackBufferBinding)S.readPixels(e,t,r,o,a,s,A);else{let u=_r(s);S.readPixels(e,t,r,o,a,s,u,A>>Jr(u))}return}let c=oo(s,a,r,o,A,a);if(!c){w.recordError(1280);return}S.readPixels(e,t,r,o,a,s,c)}function Ns(e,t,r,o){let a=w.getSource(e,t,r,o);S.shaderSource(w.shaders[e],a)}function Us(e,t,r,o,a,s,A,c,u){if(w.currentContext.version>=2){if(S.currentPixelUnpackBufferBinding)S.texImage2D(e,t,r,o,a,s,A,c,u);else if(u){let d=_r(c);S.texImage2D(e,t,r,o,a,s,A,c,d,u>>Jr(d))}else S.texImage2D(e,t,r,o,a,s,A,c,null);return}S.texImage2D(e,t,r,o,a,s,A,c,u?oo(c,A,o,a,u,r):null)}function xs(e,t,r){let o=ze[r>>2];S.texParameterf(e,t,o)}function js(e,t,r){S.texParameteri(e,t,r)}function Ls(e,t,r,o,a){S.texStorage2D(e,t,r,o,a)}function Hs(e,t,r,o,a,s){S.texStorage3D(e,t,r,o,a,s)}function Gs(e,t,r,o,a,s,A,c,u){if(w.currentContext.version>=2){if(S.currentPixelUnpackBufferBinding)S.texSubImage2D(e,t,r,o,a,s,A,c,u);else if(u){let h=_r(c);S.texSubImage2D(e,t,r,o,a,s,A,c,h,u>>Jr(h))}else S.texSubImage2D(e,t,r,o,a,s,A,c,null);return}let d=null;u&&(d=oo(c,A,a,s,u,0)),S.texSubImage2D(e,t,r,o,a,s,A,c,d)}function qt(e,t,r,o,a,s,A,c,u,d,h){if(S.currentPixelUnpackBufferBinding)S.texSubImage3D(e,t,r,o,a,s,A,c,u,d,h);else if(h){let I=_r(d);S.texSubImage3D(e,t,r,o,a,s,A,c,u,d,I,h>>Jr(I))}else S.texSubImage3D(e,t,r,o,a,s,A,c,u,d,null)}function er(e){let t=S.currentProgram;if(t){let r=t.uniformLocsById[e];return typeof r=="number"&&(t.uniformLocsById[e]=r=S.getUniformLocation(t,t.uniformArrayNamesById[e]+(r>0?`[${r}]`:""))),r}w.recordError(1282)}function Ys(e,t){S.uniform1f(er(e),t)}function Ei(e,t){S.uniform1i(er(e),t)}let pi=[];function Xs(e,t,r){if(w.currentContext.version>=2){S.uniform2fv(er(e),ze,r>>2,t*2);return}if(t<=144){var o=pi[2*t-1];for(let a=0;a<2*t;a+=2)o[a]=ze[r+4*a>>2],o[a+1]=ze[r+(4*a+4)>>2]}else var o=ze.subarray(r>>2,r+t*8>>2);S.uniform2fv(er(e),o)}function Qo(e,t,r){if(w.currentContext.version>=2){S.uniform4fv(er(e),ze,r>>2,t*4);return}if(t<=72){var o=pi[4*t-1];let a=ze;r>>=2;for(let s=0;s<4*t;s+=4){let A=r+s;o[s]=a[A],o[s+1]=a[A+1],o[s+2]=a[A+2],o[s+3]=a[A+3]}}else var o=ze.subarray(r>>2,r+t*16>>2);S.uniform4fv(er(e),o)}let Po=[];function Ws(e,t,r){if(w.currentContext.version>=2){S.uniform4iv(er(e),b,r>>2,t*4);return}if(t<=72){var o=Po[4*t-1];for(let a=0;a<4*t;a+=4)o[a]=b[r+4*a>>2],o[a+1]=b[r+(4*a+4)>>2],o[a+2]=b[r+(4*a+8)>>2],o[a+3]=b[r+(4*a+12)>>2]}else var o=b.subarray(r>>2,r+t*16>>2);S.uniform4iv(er(e),o)}function Vs(e,t,r){e=w.programs[e],S.uniformBlockBinding(e,t,r)}function zs(e,t,r,o){if(w.currentContext.version>=2){S.uniformMatrix4fv(er(e),!!r,ze,o>>2,t*16);return}if(t<=18){var a=pi[16*t-1];let s=ze;o>>=2;for(let A=0;A<16*t;A+=16){let c=o+A;a[A]=s[c],a[A+1]=s[c+1],a[A+2]=s[c+2],a[A+3]=s[c+3],a[A+4]=s[c+4],a[A+5]=s[c+5],a[A+6]=s[c+6],a[A+7]=s[c+7],a[A+8]=s[c+8],a[A+9]=s[c+9],a[A+10]=s[c+10],a[A+11]=s[c+11],a[A+12]=s[c+12],a[A+13]=s[c+13],a[A+14]=s[c+14],a[A+15]=s[c+15]}}else var a=ze.subarray(o>>2,o+t*64>>2);S.uniformMatrix4fv(er(e),!!r,a)}function $s(e){e=w.programs[e],S.useProgram(e),S.currentProgram=e}function Ks(e,t,r,o,a,s){let A=w.currentContext.clientBuffers[e];if(!S.currentArrayBufferBinding){A.size=t,A.type=r,A.normalized=o,A.stride=a,A.ptr=s,A.clientside=!0,A.vertexAttribPointerAdaptor=function(c,u,d,h,I,m){this.vertexAttribPointer(c,u,d,h,I,m)};return}A.clientside=!1,S.vertexAttribPointer(e,t,r,!!o,a,s)}function _i(e,t,r,o){S.viewport(e,t,r,o)}function hi(e,t){let r=new Date(b[e>>2]*1e3);b[t>>2]=r.getUTCSeconds(),b[t+4>>2]=r.getUTCMinutes(),b[t+8>>2]=r.getUTCHours(),b[t+12>>2]=r.getUTCDate(),b[t+16>>2]=r.getUTCMonth(),b[t+20>>2]=r.getUTCFullYear()-1900,b[t+24>>2]=r.getUTCDay(),b[t+36>>2]=0,b[t+32>>2]=0;let o=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),a=(r.getTime()-o)/(1e3*60*60*24)|0;return b[t+28>>2]=a,hi.GMTString||(hi.GMTString=yn("GMT")),b[t+40>>2]=hi.GMTString,t}function Ii(e){return e}function mi(){if(mi.called)return;mi.called=!0;let e=new Date().getFullYear(),t=new Date(e,0,1),r=new Date(e,6,1),o=t.getTimezoneOffset(),a=r.getTimezoneOffset(),s=Math.max(o,a);b[ne()>>2]=s*60,b[nA()>>2]=+(o!=a);function A(I){let m=I.toTimeString().match(/\(([A-Za-z ]+)\)$/);return m?m[1]:"GMT"}let c=A(t),u=A(r),d=yn(c),h=yn(u);a>2]=d,b[jn()+4>>2]=h):(b[jn()>>2]=h,b[jn()+4>>2]=d)}function Js(e,t){mi();let r=new Date(b[e>>2]*1e3);b[t>>2]=r.getSeconds(),b[t+4>>2]=r.getMinutes(),b[t+8>>2]=r.getHours(),b[t+12>>2]=r.getDate(),b[t+16>>2]=r.getMonth(),b[t+20>>2]=r.getFullYear()-1900,b[t+24>>2]=r.getDay();let o=new Date(r.getFullYear(),0,1),a=(r.getTime()-o.getTime())/(1e3*60*60*24)|0;b[t+28>>2]=a,b[t+36>>2]=-(r.getTimezoneOffset()*60);let s=new Date(r.getFullYear(),6,1).getTimezoneOffset(),A=o.getTimezoneOffset(),c=(s!=A&&r.getTimezoneOffset()==Math.min(A,s))|0;b[t+32>>2]=c;let u=b[jn()+(c?4:0)>>2];return b[t+40>>2]=u,t}function Zs(e){mi();let t=new Date(b[e+20>>2]+1900,b[e+16>>2],b[e+12>>2],b[e+8>>2],b[e+4>>2],b[e>>2],0),r=b[e+32>>2],o=t.getTimezoneOffset(),a=new Date(t.getFullYear(),0,1),s=new Date(t.getFullYear(),6,1).getTimezoneOffset(),A=a.getTimezoneOffset(),c=Math.min(A,s);if(r<0)b[e+32>>2]=+(s!=A&&c==o);else if(r>0!=(c==o)){let d=Math.max(A,s),h=r>0?c:d;t.setTime(t.getTime()+(h-o)*6e4)}b[e+24>>2]=t.getDay();let u=(t.getTime()-a.getTime())/(1e3*60*60*24)|0;return b[e+28>>2]=u,b[e>>2]=t.getSeconds(),b[e+4>>2]=t.getMinutes(),b[e+8>>2]=t.getHours(),b[e+12>>2]=t.getDate(),b[e+16>>2]=t.getMonth(),t.getTime()/1e3|0}function qs(e){i(e)}function Ci(e){Ie(e)}function pn(e){return e%4===0&&(e%100!==0||e%400===0)}function _n(e,t){let r=0;for(let o=0;o<=t;r+=e[o++]);return r}let Zr=[31,29,31,30,31,30,31,31,30,31,30,31],qr=[31,28,31,30,31,30,31,31,30,31,30,31];function Un(e,t){let r=new Date(e.getTime());for(;t>0;){let o=pn(r.getFullYear()),a=r.getMonth(),s=(o?Zr:qr)[a];if(t>s-r.getDate())t-=s-r.getDate()+1,r.setDate(1),a<11?r.setMonth(a+1):(r.setMonth(0),r.setFullYear(r.getFullYear()+1));else return r.setDate(r.getDate()+t),r}return r}function Ro(e,t,r,o){let a=b[o+40>>2],s={tm_sec:b[o>>2],tm_min:b[o+4>>2],tm_hour:b[o+8>>2],tm_mday:b[o+12>>2],tm_mon:b[o+16>>2],tm_year:b[o+20>>2],tm_wday:b[o+24>>2],tm_yday:b[o+28>>2],tm_isdst:b[o+32>>2],tm_gmtoff:b[o+36>>2],tm_zone:a?Je(a):""},A=Je(r),c={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var u in c)A=A.replace(new RegExp(u,"g"),c[u]);let d=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],h=["January","February","March","April","May","June","July","August","September","October","November","December"];function I(D,N,$){let Y=typeof D=="number"?D.toString():D||"";for(;Y.length0?1:0}let Y;return(Y=$(D.getFullYear()-N.getFullYear()))===0&&(Y=$(D.getMonth()-N.getMonth()))===0&&(Y=$(D.getDate()-N.getDate())),Y}function v(D){switch(D.getDay()){case 0:return new Date(D.getFullYear()-1,11,29);case 1:return D;case 2:return new Date(D.getFullYear(),0,3);case 3:return new Date(D.getFullYear(),0,2);case 4:return new Date(D.getFullYear(),0,1);case 5:return new Date(D.getFullYear()-1,11,31);case 6:return new Date(D.getFullYear()-1,11,30)}}function x(D){let N=Un(new Date(D.tm_year+1900,0,1),D.tm_yday),$=new Date(N.getFullYear(),0,4),Y=new Date(N.getFullYear()+1,0,4),_e=v($),Fe=v(Y);return y(_e,N)<=0?y(Fe,N)<=0?N.getFullYear()+1:N.getFullYear():N.getFullYear()-1}let G={"%a"(D){return d[D.tm_wday].substring(0,3)},"%A"(D){return d[D.tm_wday]},"%b"(D){return h[D.tm_mon].substring(0,3)},"%B"(D){return h[D.tm_mon]},"%C"(D){let N=D.tm_year+1900;return m(N/100|0,2)},"%d"(D){return m(D.tm_mday,2)},"%e"(D){return I(D.tm_mday,2," ")},"%g"(D){return x(D).toString().substring(2)},"%G"(D){return x(D)},"%H"(D){return m(D.tm_hour,2)},"%I"(D){let N=D.tm_hour;return N==0?N=12:N>12&&(N-=12),m(N,2)},"%j"(D){return m(D.tm_mday+_n(pn(D.tm_year+1900)?Zr:qr,D.tm_mon-1),3)},"%m"(D){return m(D.tm_mon+1,2)},"%M"(D){return m(D.tm_min,2)},"%n"(){return` `},"%p"(D){return D.tm_hour>=0&&D.tm_hour<12?"AM":"PM"},"%S"(D){return m(D.tm_sec,2)},"%t"(){return" "},"%u"(D){return D.tm_wday||7},"%U"(D){let N=new Date(D.tm_year+1900,0,1),$=N.getDay()===0?N:Un(N,7-N.getDay()),Y=new Date(D.tm_year+1900,D.tm_mon,D.tm_mday);if(y($,Y)<0){let _e=_n(pn(Y.getFullYear())?Zr:qr,Y.getMonth()-1)-31,Ut=31-$.getDate()+_e+Y.getDate();return m(Math.ceil(Ut/7),2)}return y($,N)===0?"01":"00"},"%V"(D){let N=new Date(D.tm_year+1900,0,4),$=new Date(D.tm_year+1901,0,4),Y=v(N),_e=v($),Fe=Un(new Date(D.tm_year+1900,0,1),D.tm_yday);if(y(Fe,Y)<0)return"53";if(y(_e,Fe)<=0)return"01";let Ut;return Y.getFullYear()=0;return N=Math.abs(N)/60,N=N/60*100+N%60,($?"+":"-")+`0000${N}`.slice(-4)},"%Z"(D){return D.tm_zone},"%%"(){return"%"}};for(var u in G)A.includes(u)&&(A=A.replace(new RegExp(u,"g"),G[u](s)));let R=yi(A,!1);return R.length>t?0:(Xn(R,e),R.length-1)}function So(e,t,r,o){return Ro(e,t,r,o)}n.requestFullscreen=function(t,r){P.requestFullscreen(t,r)},n.requestFullScreen=function(){P.requestFullScreen()},n.requestAnimationFrame=function(t){P.requestAnimationFrame(t)},n.setCanvasSize=function(t,r,o){P.setCanvasSize(t,r,o)},n.pauseMainLoop=function(){P.mainLoop.pause()},n.resumeMainLoop=function(){P.mainLoop.resume()},n.getUserMedia=function(){P.getUserMedia()},n.createContext=function(t,r,o,a){return P.createContext(t,r,o,a)};let xn=function(e,t,r,o){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=l.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=o},en=365,M=146;Object.defineProperties(xn.prototype,{read:{get(){return(this.mode&en)===en},set(e){e?this.mode|=en:this.mode&=~en}},write:{get(){return(this.mode&M)===M},set(e){e?this.mode|=M:this.mode&=~M}},isFolder:{get(){return l.isDir(this.mode)}},isDevice:{get(){return l.isChrdev(this.mode)}}}),l.FSNode=xn,l.staticInit(),n.FS_createPath=l.createPath,n.FS_createDataFile=l.createDataFile,n.FS_createPreloadedFile=l.createPreloadedFile,n.FS_createLazyFile=l.createLazyFile,n.FS_createDevice=l.createDevice,n.FS_unlink=l.unlink,un(),qn=n.PureVirtualError=Gr(Error,"PureVirtualError"),ei(),Nt(),ae=n.BindingError=Gr(Error,"BindingError"),F=n.InternalError=Gr(Error,"InternalError"),Ne(),Er(),Qr=n.UnboundTypeError=Gr(Error,"UnboundTypeError");let S;for(var Dt=0;Dt<32;++Dt)Bo.push(new Array(Dt));let eA=new Float32Array(288);for(var Dt=0;Dt<288;++Dt)pi[Dt]=eA.subarray(0,Dt+1);let Ac=new Int32Array(288);for(var Dt=0;Dt<288;++Dt)Po[Dt]=Ac.subarray(0,Dt+1);let ao=!0;function yi(e,t,r){let o=r>0?r:bt(e)+1,a=new Array(o),s=Ze(e,a,0,a.length);return t&&(a.length=s),a}let cc=typeof atob=="function"?atob:function(e){let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r="",o,a,s,A,c,u,d,h=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do A=t.indexOf(e.charAt(h++)),c=t.indexOf(e.charAt(h++)),u=t.indexOf(e.charAt(h++)),d=t.indexOf(e.charAt(h++)),o=A<<2|c>>4,a=(c&15)<<4|u>>2,s=(u&3)<<6|d,r=r+String.fromCharCode(o),u!==64&&(r=r+String.fromCharCode(a)),d!==64&&(r=r+String.fromCharCode(s));while(h0||(co(),Yt(),lt>0))return;function t(){hn||(hn=!0,n.calledRun=!0,!W&&(Pi(),Ee(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),z(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),wn()))}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>{n.setStatus("")},1),t()},1)):t(),st()}n.run=uo;function rc(){let e=Re,t=pe,r=!1;Re=pe=function(o){r=!0};try{let o=n._fflush;o&&o(0),["stdout","stderr"].forEach(a=>{let s=l.analyzePath(`/dev/${a}`);if(!s)return;let A=s.object,{rdev:c}=A,u=yt.ttys[c];u&&u.output&&u.output.length&&(r=!0)})}catch(o){}Re=e,pe=t,r&&tt("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")}function No(e,t){if(Sr=e,rc(),Ct()){if(!t){let r=`program exited (with status: ${e}), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)`;k(r),pe(r)}}else Ri();i(e)}function i(e){Sr=e,Ct()||(n.onExit&&n.onExit(e),W=!0),$e(e,new Ao(e))}if(n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return uo(),U.ready}}(),Dc=bu;var Ou=function(){var K=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(K=K||__filename),function(U){U=U||{};var n=typeof U!="undefined"?U:{},Ee,k;n.ready=new Promise(function(i,e){Ee=i,k=e}),Object.getOwnPropertyDescriptor(n.ready,"_main")||(Object.defineProperty(n.ready,"_main",{configurable:!0,get:function(){E("You are getting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_main",{configurable:!0,set:function(){E("You are setting _main on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_get_end")||(Object.defineProperty(n.ready,"_emscripten_stack_get_end",{configurable:!0,get:function(){E("You are getting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_get_end",{configurable:!0,set:function(){E("You are setting _emscripten_stack_get_end on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_get_free")||(Object.defineProperty(n.ready,"_emscripten_stack_get_free",{configurable:!0,get:function(){E("You are getting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_get_free",{configurable:!0,set:function(){E("You are setting _emscripten_stack_get_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_stack_init")||(Object.defineProperty(n.ready,"_emscripten_stack_init",{configurable:!0,get:function(){E("You are getting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_stack_init",{configurable:!0,set:function(){E("You are setting _emscripten_stack_init on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackSave")||(Object.defineProperty(n.ready,"_stackSave",{configurable:!0,get:function(){E("You are getting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackSave",{configurable:!0,set:function(){E("You are setting _stackSave on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackRestore")||(Object.defineProperty(n.ready,"_stackRestore",{configurable:!0,get:function(){E("You are getting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackRestore",{configurable:!0,set:function(){E("You are setting _stackRestore on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_stackAlloc")||(Object.defineProperty(n.ready,"_stackAlloc",{configurable:!0,get:function(){E("You are getting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_stackAlloc",{configurable:!0,set:function(){E("You are setting _stackAlloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___wasm_call_ctors")||(Object.defineProperty(n.ready,"___wasm_call_ctors",{configurable:!0,get:function(){E("You are getting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___wasm_call_ctors",{configurable:!0,set:function(){E("You are setting ___wasm_call_ctors on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_fflush")||(Object.defineProperty(n.ready,"_fflush",{configurable:!0,get:function(){E("You are getting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_fflush",{configurable:!0,set:function(){E("You are setting _fflush on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___errno_location")||(Object.defineProperty(n.ready,"___errno_location",{configurable:!0,get:function(){E("You are getting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___errno_location",{configurable:!0,set:function(){E("You are setting ___errno_location on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_malloc")||(Object.defineProperty(n.ready,"_malloc",{configurable:!0,get:function(){E("You are getting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_malloc",{configurable:!0,set:function(){E("You are setting _malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_free")||(Object.defineProperty(n.ready,"_free",{configurable:!0,get:function(){E("You are getting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_free",{configurable:!0,set:function(){E("You are setting _free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_setThrew")||(Object.defineProperty(n.ready,"_setThrew",{configurable:!0,get:function(){E("You are getting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_setThrew",{configurable:!0,set:function(){E("You are setting _setThrew on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___cxa_is_pointer_type")||(Object.defineProperty(n.ready,"___cxa_is_pointer_type",{configurable:!0,get:function(){E("You are getting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___cxa_is_pointer_type",{configurable:!0,set:function(){E("You are setting ___cxa_is_pointer_type on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___cxa_can_catch")||(Object.defineProperty(n.ready,"___cxa_can_catch",{configurable:!0,get:function(){E("You are getting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___cxa_can_catch",{configurable:!0,set:function(){E("You are setting ___cxa_can_catch on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_saveSetjmp")||(Object.defineProperty(n.ready,"_saveSetjmp",{configurable:!0,get:function(){E("You are getting _saveSetjmp on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_saveSetjmp",{configurable:!0,set:function(){E("You are setting _saveSetjmp on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_memalign")||(Object.defineProperty(n.ready,"_memalign",{configurable:!0,get:function(){E("You are getting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_memalign",{configurable:!0,set:function(){E("You are setting _memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_main_thread_process_queued_calls")||(Object.defineProperty(n.ready,"_emscripten_main_thread_process_queued_calls",{configurable:!0,get:function(){E("You are getting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_main_thread_process_queued_calls",{configurable:!0,set:function(){E("You are setting _emscripten_main_thread_process_queued_calls on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_webgl_make_context_current")||(Object.defineProperty(n.ready,"_emscripten_webgl_make_context_current",{configurable:!0,get:function(){E("You are getting _emscripten_webgl_make_context_current on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_webgl_make_context_current",{configurable:!0,set:function(){E("You are setting _emscripten_webgl_make_context_current on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_webgl_get_current_context")||(Object.defineProperty(n.ready,"_emscripten_webgl_get_current_context",{configurable:!0,get:function(){E("You are getting _emscripten_webgl_get_current_context on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_webgl_get_current_context",{configurable:!0,set:function(){E("You are setting _emscripten_webgl_get_current_context on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_tzname")||(Object.defineProperty(n.ready,"__get_tzname",{configurable:!0,get:function(){E("You are getting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_tzname",{configurable:!0,set:function(){E("You are setting __get_tzname on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_daylight")||(Object.defineProperty(n.ready,"__get_daylight",{configurable:!0,get:function(){E("You are getting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_daylight",{configurable:!0,set:function(){E("You are setting __get_daylight on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"__get_timezone")||(Object.defineProperty(n.ready,"__get_timezone",{configurable:!0,get:function(){E("You are getting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"__get_timezone",{configurable:!0,set:function(){E("You are setting __get_timezone on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_malloc")||(Object.defineProperty(n.ready,"_emscripten_builtin_malloc",{configurable:!0,get:function(){E("You are getting _emscripten_builtin_malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_malloc",{configurable:!0,set:function(){E("You are setting _emscripten_builtin_malloc on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_free")||(Object.defineProperty(n.ready,"_emscripten_builtin_free",{configurable:!0,get:function(){E("You are getting _emscripten_builtin_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_free",{configurable:!0,set:function(){E("You are setting _emscripten_builtin_free on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"_emscripten_builtin_memalign")||(Object.defineProperty(n.ready,"_emscripten_builtin_memalign",{configurable:!0,get:function(){E("You are getting _emscripten_builtin_memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"_emscripten_builtin_memalign",{configurable:!0,set:function(){E("You are setting _emscripten_builtin_memalign on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___getTypeName")||(Object.defineProperty(n.ready,"___getTypeName",{configurable:!0,get:function(){E("You are getting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___getTypeName",{configurable:!0,set:function(){E("You are setting ___getTypeName on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"___embind_register_native_and_builtin_types")||(Object.defineProperty(n.ready,"___embind_register_native_and_builtin_types",{configurable:!0,get:function(){E("You are getting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"___embind_register_native_and_builtin_types",{configurable:!0,set:function(){E("You are setting ___embind_register_native_and_builtin_types on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}})),Object.getOwnPropertyDescriptor(n.ready,"onRuntimeInitialized")||(Object.defineProperty(n.ready,"onRuntimeInitialized",{configurable:!0,get:function(){E("You are getting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}),Object.defineProperty(n.ready,"onRuntimeInitialized",{configurable:!0,set:function(){E("You are setting onRuntimeInitialized on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")}}));var Ue={},we;for(we in n)n.hasOwnProperty(we)&&(Ue[we]=n[we]);var ot=[],ht="./this.program",$e=function(i,e){throw e},Ye=typeof window=="object",Ve=typeof importScripts=="function",It=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",bi=!Ye&&!It&&!Ve;if(n.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var Te="";function Oi(i){return n.locateFile?n.locateFile(i,Te):Te+i}var Rr,tr,nn,In;if(Ye||Ve){if(Ve?Te=self.location.href:typeof document!="undefined"&&document.currentScript&&(Te=document.currentScript.src),K&&(Te=K),Te.indexOf("blob:")!==0?Te=Te.substr(0,Te.lastIndexOf("/")+1):Te="",!(typeof window=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");Rr=function(i){var e=new XMLHttpRequest;return e.open("GET",i,!1),e.send(null),e.responseText},Ve&&(nn=function(i){var e=new XMLHttpRequest;return e.open("GET",i,!1),e.responseType="arraybuffer",e.send(null),new Uint8Array(e.response)}),tr=function(i,e,t){var r=new XMLHttpRequest;r.open("GET",i,!0),r.responseType="arraybuffer",r.onload=function(){if(r.status==200||r.status==0&&r.response){e(r.response);return}t()},r.onerror=t,r.send(null)},In=function(i){document.title=i}}else throw new Error("environment detection error");var Ke=n.print||console.log.bind(console),ge=n.printErr||console.warn.bind(console);for(we in Ue)Ue.hasOwnProperty(we)&&(n[we]=Ue[we]);Ue=null,n.arguments&&(ot=n.arguments),Object.getOwnPropertyDescriptor(n,"arguments")||Object.defineProperty(n,"arguments",{configurable:!0,get:function(){E("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),n.thisProgram&&(ht=n.thisProgram),Object.getOwnPropertyDescriptor(n,"thisProgram")||Object.defineProperty(n,"thisProgram",{configurable:!0,get:function(){E("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),n.quit&&($e=n.quit),Object.getOwnPropertyDescriptor(n,"quit")||Object.defineProperty(n,"quit",{configurable:!0,get:function(){E("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),W(typeof n.memoryInitializerPrefixURL=="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),W(typeof n.pthreadMainPrefixURL=="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),W(typeof n.cdInitializerPrefixURL=="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),W(typeof n.filePackagePrefixURL=="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),W(typeof n.read=="undefined","Module.read option was removed (modify read_ in JS)"),W(typeof n.readAsync=="undefined","Module.readAsync option was removed (modify readAsync in JS)"),W(typeof n.readBinary=="undefined","Module.readBinary option was removed (modify readBinary in JS)"),W(typeof n.setWindowTitle=="undefined","Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),W(typeof n.TOTAL_MEMORY=="undefined","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(n,"read")||Object.defineProperty(n,"read",{configurable:!0,get:function(){E("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"readAsync")||Object.defineProperty(n,"readAsync",{configurable:!0,get:function(){E("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"readBinary")||Object.defineProperty(n,"readBinary",{configurable:!0,get:function(){E("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),Object.getOwnPropertyDescriptor(n,"setWindowTitle")||Object.defineProperty(n,"setWindowTitle",{configurable:!0,get:function(){E("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),W(!bi,"shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable.");function Re(i){Re.shown||(Re.shown={}),Re.shown[i]||(Re.shown[i]=1,ge(i))}function pe(i,e){if(typeof WebAssembly.Function=="function"){for(var t={i:"i32",j:"i64",f:"f32",d:"f64"},r={parameters:[],results:e[0]=="v"?[]:[t[e[0]]]},o=1;o=r);)++o;if(o-e>16&&i.subarray&&Bi)return Bi.decode(i.subarray(e,o));for(var a="";e>10,56320|u&1023)}}return a}function at(i,e){return i?Mr(Se,i,e):""}function Rt(i,e,t,r){if(!(r>0))return 0;for(var o=t,a=t+r-1,s=0;s=55296&&A<=57343){var c=i.charCodeAt(++s);A=65536+((A&1023)<<10)|c&1023}if(A<=127){if(t>=a)break;e[t++]=A}else if(A<=2047){if(t+1>=a)break;e[t++]=192|A>>6,e[t++]=128|A&63}else if(A<=65535){if(t+2>=a)break;e[t++]=224|A>>12,e[t++]=128|A>>6&63,e[t++]=128|A&63}else{if(t+3>=a)break;A>=2097152&&Re("Invalid Unicode code point 0x"+A.toString(16)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x1FFFFF)."),e[t++]=240|A>>18,e[t++]=128|A>>12&63,e[t++]=128|A>>6&63,e[t++]=128|A&63}}return e[t]=0,t-o}function Je(i,e,t){return W(typeof t=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),Rt(i,Se,e,t)}function Ze(i){for(var e=0,t=0;t=55296&&r<=57343&&(r=65536+((r&1023)<<10)|i.charCodeAt(++t)&1023),r<=127?++e:r<=2047?e+=2:r<=65535?e+=3:e+=4}return e}var rr=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function bt(i,e){W(i%2==0,"Pointer passed to UTF16ToString must be aligned to two bytes!");for(var t=i,r=t>>1,o=r+e/2;!(r>=o)&&ve[r];)++r;if(t=r<<1,t-i>32&&rr)return rr.decode(Se.subarray(i,t));for(var a="",s=0;!(s>=e/2);++s){var A=be[i+s*2>>1];if(A==0)break;a+=String.fromCharCode(A)}return a}function Gn(i,e,t){if(W(e%2==0,"Pointer passed to stringToUTF16 must be aligned to two bytes!"),W(typeof t=="number","stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),t===void 0&&(t=2147483647),t<2)return 0;t-=2;for(var r=e,o=t>1]=s,e+=2}return be[e>>1]=0,e-r}function Ti(i){return i.length*2}function mn(i,e){W(i%4==0,"Pointer passed to UTF32ToString must be aligned to four bytes!");for(var t=0,r="";!(t>=e/4);){var o=T[i+t*4>>2];if(o==0)break;if(++t,o>=65536){var a=o-65536;r+=String.fromCharCode(55296|a>>10,56320|a&1023)}else r+=String.fromCharCode(o)}return r}function Yn(i,e,t){if(W(e%4==0,"Pointer passed to stringToUTF32 must be aligned to four bytes!"),W(typeof t=="number","stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),t===void 0&&(t=2147483647),t<4)return 0;for(var r=e,o=r+t-4,a=0;a=55296&&s<=57343){var A=i.charCodeAt(++a);s=65536+((s&1023)<<10)|A&1023}if(T[e>>2]=s,e+=4,e+4>o)break}return T[e>>2]=0,e-r}function vi(i){for(var e=0,t=0;t=55296&&r<=57343&&++t,e+=4}return e}function Cn(i){var e=Ze(i)+1,t=it(e);return t&&Rt(i,xe,t,e),t}function Fr(i,e){W(i.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),xe.set(i,e)}function yn(i,e,t){for(var r=0;r>0]=i.charCodeAt(r);t||(xe[e>>0]=0)}function Xn(i,e){return i%e>0&&(i+=e-i%e),i}var kr,xe,Se,be,ve,T,Oe,b,Qe;function ze(i){kr=i,n.HEAP8=xe=new Int8Array(i),n.HEAP16=be=new Int16Array(i),n.HEAP32=T=new Int32Array(i),n.HEAPU8=Se=new Uint8Array(i),n.HEAPU16=ve=new Uint16Array(i),n.HEAPU32=Oe=new Uint32Array(i),n.HEAPF32=b=new Float32Array(i),n.HEAPF64=Qe=new Float64Array(i)}var Nr=5242880;n.TOTAL_STACK&&W(Nr===n.TOTAL_STACK,"the stack size can no longer be determined at runtime");var on=n.INITIAL_MEMORY||16777216;Object.getOwnPropertyDescriptor(n,"INITIAL_MEMORY")||Object.defineProperty(n,"INITIAL_MEMORY",{configurable:!0,get:function(){E("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}}),W(on>=Nr,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+on+"! (TOTAL_STACK="+Nr+")"),W(typeof Int32Array!="undefined"&&typeof Float64Array!="undefined"&&Int32Array.prototype.subarray!==void 0&&Int32Array.prototype.set!==void 0,"JS engine does not provide full typed array support"),W(!n.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),W(on==16777216,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically");var J;function Ur(){var i=Mo();W((i&3)==0),Oe[(i>>2)+1]=34821223,Oe[(i>>2)+2]=2310721022,T[0]=1668509029}function V(){if(!Lt){var i=Mo(),e=Oe[(i>>2)+1],t=Oe[(i>>2)+2];(e!=34821223||t!=2310721022)&&E("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+t.toString(16)+" "+e.toString(16)),T[0]!==1668509029&&E("Runtime error: The application has corrupted its heap memory area (address zero)!")}}(function(){var i=new Int16Array(1),e=new Int8Array(i.buffer);if(i[0]=25459,e[0]!==115||e[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"})();var Ht=[],st=[],xr=[],Gt=[],le=!1,an=!1,yr=0;function Ot(){return Hn||yr>0}function Qi(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Ri(n.preRun.shift());P(Ht)}function Ct(){V(),W(!le),le=!0,!n.noFSInit&&!f.init.initialized&&f.init(),f.ignorePermissions=!1,Pe.init(),P(st)}function Yt(){V(),an=!0}function Pi(){if(V(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)Dn(n.postRun.shift());P(Gt)}function Ri(i){Ht.unshift(i)}function wn(i){st.unshift(i)}function Dn(i){Gt.unshift(i)}W(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),W(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),W(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),W(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var Xt=0,nr=null,lt=null,At={};function ir(i){for(var e=i;;){if(!At[i])return i;i=e+Math.random()}}function St(i){Xt++,n.monitorRunDependencies&&n.monitorRunDependencies(Xt),i?(W(!At[i]),At[i]=1,nr===null&&typeof setInterval!="undefined"&&(nr=setInterval(function(){if(Lt){clearInterval(nr),nr=null;return}var e=!1;for(var t in At)e||(e=!0,ge("still waiting on run dependencies:")),ge("dependency: "+t);e&&ge("(end of list)")},1e4))):ge("warning: run dependency added without ID")}function wr(i){if(Xt--,n.monitorRunDependencies&&n.monitorRunDependencies(Xt),i?(W(At[i]),delete At[i]):ge("warning: run dependency removed without ID"),Xt==0&&(nr!==null&&(clearInterval(nr),nr=null),lt)){var e=lt;lt=null,e()}}n.preloadedImages={},n.preloadedAudios={};function E(i){n.onAbort&&n.onAbort(i),i+="",ge(i),Lt=!0,Pt=1;var e="abort("+i+") at "+sn();i=e;var t=new WebAssembly.RuntimeError(i);throw k(t),t}var or="data:application/octet-stream;base64,";function p(i){return i.startsWith(or)}function bn(i){return i.startsWith("file://")}function ue(i,e){return function(){var t=i,r=e;return e||(r=n.asm),W(le,"native function `"+t+"` called before runtime initialization"),W(!an,"native function `"+t+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),r[i]||W(r[i],"exported native function `"+t+"` not found"),r[i].apply(null,arguments)}}var He;He="selfie_segmentation_solution_wasm_bin.wasm",p(He)||(He=Oi(He));function ce(i){try{if(i==He&&Ie)return new Uint8Array(Ie);if(nn)return nn(i);throw"both async and sync fetching of the wasm failed"}catch(e){E(e)}}function Dr(){if(!Ie&&(Ye||Ve)){if(typeof fetch=="function"&&!bn(He))return fetch(He,{credentials:"same-origin"}).then(function(i){if(!i.ok)throw"failed to load wasm binary file at '"+He+"'";return i.arrayBuffer()}).catch(function(){return ce(He)});if(tr)return new Promise(function(i,e){tr(He,function(t){i(new Uint8Array(t))},e)})}return Promise.resolve().then(function(){return ce(He)})}function On(){var i={env:tA,wasi_snapshot_preview1:tA};function e(A,c){var u=A.exports;n.asm=u,jt=n.asm.memory,W(jt,"memory not found in wasm exports"),ze(jt.buffer),J=n.asm.__indirect_function_table,W(J,"table not found in wasm exports"),wn(n.asm.__wasm_call_ctors),wr("wasm-instantiate")}St("wasm-instantiate");var t=n;function r(A){W(n===t,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),t=null,e(A.instance)}function o(A){return Dr().then(function(c){var u=WebAssembly.instantiate(c,i);return u}).then(A,function(c){ge("failed to asynchronously prepare wasm: "+c),bn(He)&&ge("warning: Loading from a file URI ("+He+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),E(c)})}function a(){return!Ie&&typeof WebAssembly.instantiateStreaming=="function"&&!p(He)&&!bn(He)&&typeof fetch=="function"?fetch(He,{credentials:"same-origin"}).then(function(A){var c=WebAssembly.instantiateStreaming(A,i);return c.then(r,function(u){return ge("wasm streaming compile failed: "+u),ge("falling back to ArrayBuffer instantiation"),o(r)})}):o(r)}if(n.instantiateWasm)try{var s=n.instantiateWasm(i,e);return s}catch(A){return ge("Module.instantiateWasm callback failed with error: "+A),!1}return a().catch(k),{}}var We,ye,Bt={460976:function(){let i=!0;if(i){let e=eo;if(typeof e!="function"){typeof console!="undefined"&&console.error('Expected Emscripten global function "findCanvasEventTarget" not found. WebGL context creation may fail.');return}eo=function(t){if(t==0){if(n&&n.canvas)return n.canvas;if(n&&n.canvasCssSelector)return e(n.canvasCssSelector);typeof console!="undefined"&&console.warn("Module properties canvas and canvasCssSelector not found during WebGL context creation.")}return e(t)},i=!1}},461761:function(){return typeof wasmOffsetConverter!="undefined"}};function jr(){return typeof wasmOffsetConverter!="undefined"}function br(i,e){if(Q.mainLoop.timingMode=i,Q.mainLoop.timingValue=e,!Q.mainLoop.func)return ge("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up."),1;if(Q.mainLoop.running||(Q.mainLoop.running=!0),i==0)Q.mainLoop.scheduler=function(){var s=Math.max(0,Q.mainLoop.tickStartTime+e-Tt())|0;setTimeout(Q.mainLoop.runner,s)},Q.mainLoop.method="timeout";else if(i==1)Q.mainLoop.scheduler=function(){Q.requestAnimationFrame(Q.mainLoop.runner)},Q.mainLoop.method="rAF";else if(i==2){if(typeof setImmediate=="undefined"){var t=[],r="setimmediate",o=function(a){(a.data===r||a.data.target===r)&&(a.stopPropagation(),t.shift()())};addEventListener("message",o,!0),setImmediate=function(s){t.push(s),Ve?(n.setImmediates===void 0&&(n.setImmediates=[]),n.setImmediates.push(s),postMessage({target:r})):postMessage(r,"*")}}Q.mainLoop.scheduler=function(){setImmediate(Q.mainLoop.runner)},Q.mainLoop.method="immediate"}return 0}var Tt;It?Tt=function(){var i=process.hrtime();return i[0]*1e3+i[1]/1e6}:Tt=function(){return performance.now()};function Or(){return!O.currentContext||!O.currentContext.GLctx?-3:O.currentContext.defaultFbo?(O.blitOffscreenFramebuffer(O.currentContext),0):O.currentContext.attributes.explicitSwapControl?0:-3}function Si(i){rc(i)}function Wn(){if(!Ot())try{Si(Pt)}catch(i){if(i instanceof hn)return;throw i}}function Mi(i,e,t,r,o){W(!Q.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Q.mainLoop.func=i,Q.mainLoop.arg=r;var a=Q.mainLoop.currentlyRunningMainloop;function s(){return a0){var c=Date.now(),u=Q.mainLoop.queue.shift();if(u.func(u.arg),Q.mainLoop.remainingBlockers){var d=Q.mainLoop.remainingBlockers,h=d%1==0?d-1:Math.floor(d);u.counted?Q.mainLoop.remainingBlockers=h:(h=h+.5,Q.mainLoop.remainingBlockers=(8*d+h)/9)}if(Ke('main loop blocker "'+u.name+'" took '+(Date.now()-c)+" ms"),Q.mainLoop.updateStatus(),!s())return;setTimeout(Q.mainLoop.runner,0);return}if(s()){if(Q.mainLoop.currentFrameNumber=Q.mainLoop.currentFrameNumber+1|0,Q.mainLoop.timingMode==1&&Q.mainLoop.timingValue>1&&Q.mainLoop.currentFrameNumber%Q.mainLoop.timingValue!=0){Q.mainLoop.scheduler();return}else Q.mainLoop.timingMode==0&&(Q.mainLoop.tickStartTime=Tt());O.newRenderingFrameStarted(),typeof O!="undefined"&&O.currentContext&&!O.currentContextIsProxied&&!O.currentContext.attributes.explicitSwapControl&&O.currentContext.GLctx.commit&&O.currentContext.GLctx.commit(),Q.mainLoop.method==="timeout"&&n.ctx&&(Re("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Q.mainLoop.method=""),Q.mainLoop.runIter(i),V(),s()&&(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Q.mainLoop.scheduler())}}},o||(e&&e>0?br(0,1e3/e):br(1,1),Q.mainLoop.scheduler()),t)throw"unwind"}function Bn(i,e){if(Lt){ge("user callback triggered after application aborted. Ignoring.");return}if(e){i();return}try{i()}catch(t){if(t instanceof hn)return;if(t!=="unwind")throw t&&typeof t=="object"&&t.stack&&ge("exception thrown: "+[t,t.stack]),t}}function ar(i,e){return setTimeout(function(){Bn(i)},e)}var Q={mainLoop:{running:!1,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Q.mainLoop.scheduler=null,Q.mainLoop.currentlyRunningMainloop++},resume:function(){Q.mainLoop.currentlyRunningMainloop++;var i=Q.mainLoop.timingMode,e=Q.mainLoop.timingValue,t=Q.mainLoop.func;Q.mainLoop.func=null,Mi(t,0,!1,Q.mainLoop.arg,!0),br(i,e),Q.mainLoop.scheduler()},updateStatus:function(){if(n.setStatus){var i=n.statusMessage||"Please wait...",e=Q.mainLoop.remainingBlockers,t=Q.mainLoop.expectedBlockers;e?e=6;){var Ut=Y>>_e-6&63;_e-=6,$+=D[Ut]}return _e==2?($+=D[(Y&3)<<4],$+=N+N):_e==4&&($+=D[(Y&15)<<2],$+=N),$}y.src="data:audio/x-"+s.substr(-3)+";base64,"+G(a),d(y)},y.src=m,ar(function(){d(y)},1e4)}else return h()},n.preloadPlugins.push(e);function t(){Q.pointerLock=document.pointerLockElement===n.canvas||document.mozPointerLockElement===n.canvas||document.webkitPointerLockElement===n.canvas||document.msPointerLockElement===n.canvas}var r=n.canvas;r&&(r.requestPointerLock=r.requestPointerLock||r.mozRequestPointerLock||r.webkitRequestPointerLock||r.msRequestPointerLock||function(){},r.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},r.exitPointerLock=r.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",t,!1),document.addEventListener("mozpointerlockchange",t,!1),document.addEventListener("webkitpointerlockchange",t,!1),document.addEventListener("mspointerlockchange",t,!1),n.elementPointerLock&&r.addEventListener("click",function(o){!Q.pointerLock&&n.canvas.requestPointerLock&&(n.canvas.requestPointerLock(),o.preventDefault())},!1))},createContext:function(i,e,t,r){if(e&&n.ctx&&i==n.canvas)return n.ctx;var o,a;if(e){var s={antialias:!1,alpha:!1,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};if(r)for(var A in r)s[A]=r[A];typeof O!="undefined"&&(a=O.createContext(i,s),a&&(o=O.getContext(a).GLctx))}else o=i.getContext("2d");return o?(t&&(e||W(typeof M=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),n.ctx=o,e&&O.makeContextCurrent(a),n.useWebGL=e,Q.moduleContextCreatedCallbacks.forEach(function(c){c()}),Q.init()),o):null},destroyContext:function(i,e,t){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(i,e){Q.lockPointer=i,Q.resizeCanvas=e,typeof Q.lockPointer=="undefined"&&(Q.lockPointer=!0),typeof Q.resizeCanvas=="undefined"&&(Q.resizeCanvas=!1);var t=n.canvas;function r(){Q.isFullscreen=!1;var a=t.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===a?(t.exitFullscreen=Q.exitFullscreen,Q.lockPointer&&t.requestPointerLock(),Q.isFullscreen=!0,Q.resizeCanvas?Q.setFullscreenCanvasSize():Q.updateCanvasDimensions(t)):(a.parentNode.insertBefore(t,a),a.parentNode.removeChild(a),Q.resizeCanvas?Q.setWindowedCanvasSize():Q.updateCanvasDimensions(t)),n.onFullScreen&&n.onFullScreen(Q.isFullscreen),n.onFullscreen&&n.onFullscreen(Q.isFullscreen)}Q.fullscreenHandlersInstalled||(Q.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",r,!1),document.addEventListener("mozfullscreenchange",r,!1),document.addEventListener("webkitfullscreenchange",r,!1),document.addEventListener("MSFullscreenChange",r,!1));var o=document.createElement("div");t.parentNode.insertBefore(o,t),o.appendChild(t),o.requestFullscreen=o.requestFullscreen||o.mozRequestFullScreen||o.msRequestFullscreen||(o.webkitRequestFullscreen?function(){o.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(o.webkitRequestFullScreen?function(){o.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),o.requestFullscreen()},requestFullScreen:function(){E("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)")},exitFullscreen:function(){if(!Q.isFullscreen)return!1;var i=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){};return i.apply(document,[]),!0},nextRAF:0,fakeRequestAnimationFrame:function(i){var e=Date.now();if(Q.nextRAF===0)Q.nextRAF=e+1e3/60;else for(;e+2>=Q.nextRAF;)Q.nextRAF+=1e3/60;var t=Math.max(Q.nextRAF-e,0);setTimeout(i,t)},requestAnimationFrame:function(i){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(i);return}var e=Q.fakeRequestAnimationFrame;e(i)},safeSetTimeout:function(i){return ar(i)},safeRequestAnimationFrame:function(i){return Q.requestAnimationFrame(function(){Bn(i)})},getMimetype:function(i){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[i.substr(i.lastIndexOf(".")+1)]},getUserMedia:function(i){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(i)},getMovementX:function(i){return i.movementX||i.mozMovementX||i.webkitMovementX||0},getMovementY:function(i){return i.movementY||i.mozMovementY||i.webkitMovementY||0},getMouseWheelDelta:function(i){var e=0;switch(i.type){case"DOMMouseScroll":e=i.detail/3;break;case"mousewheel":e=i.wheelDelta/120;break;case"wheel":switch(e=i.deltaY,i.deltaMode){case 0:e/=100;break;case 1:e/=3;break;case 2:e*=80;break;default:throw"unrecognized mouse wheel delta mode: "+i.deltaMode}break;default:throw"unrecognized mouse wheel event: "+i.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(i){if(Q.pointerLock)i.type!="mousemove"&&"mozMovementX"in i?Q.mouseMovementX=Q.mouseMovementY=0:(Q.mouseMovementX=Q.getMovementX(i),Q.mouseMovementY=Q.getMovementY(i)),typeof SDL!="undefined"?(Q.mouseX=SDL.mouseX+Q.mouseMovementX,Q.mouseY=SDL.mouseY+Q.mouseMovementY):(Q.mouseX+=Q.mouseMovementX,Q.mouseY+=Q.mouseMovementY);else{var e=n.canvas.getBoundingClientRect(),t=n.canvas.width,r=n.canvas.height,o=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset,a=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(W(typeof o!="undefined"&&typeof a!="undefined","Unable to retrieve scroll position, mouse positions likely broken."),i.type==="touchstart"||i.type==="touchend"||i.type==="touchmove"){var s=i.touch;if(s===void 0)return;var A=s.pageX-(o+e.left),c=s.pageY-(a+e.top);A=A*(t/e.width),c=c*(r/e.height);var u={x:A,y:c};if(i.type==="touchstart")Q.lastTouches[s.identifier]=u,Q.touches[s.identifier]=u;else if(i.type==="touchend"||i.type==="touchmove"){var d=Q.touches[s.identifier];d||(d=u),Q.lastTouches[s.identifier]=d,Q.touches[s.identifier]=u}return}var h=i.pageX-(o+e.left),I=i.pageY-(a+e.top);h=h*(t/e.width),I=I*(r/e.height),Q.mouseMovementX=h-Q.mouseX,Q.mouseMovementY=I-Q.mouseY,Q.mouseX=h,Q.mouseY=I}},resizeListeners:[],updateResizeListeners:function(){var i=n.canvas;Q.resizeListeners.forEach(function(e){e(i.width,i.height)})},setCanvasSize:function(i,e,t){var r=n.canvas;Q.updateCanvasDimensions(r,i,e),t||Q.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var i=Oe[SDL.screen>>2];i=i|8388608,T[SDL.screen>>2]=i}Q.updateCanvasDimensions(n.canvas),Q.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var i=Oe[SDL.screen>>2];i=i&-8388609,T[SDL.screen>>2]=i}Q.updateCanvasDimensions(n.canvas),Q.updateResizeListeners()},updateCanvasDimensions:function(i,e,t){e&&t?(i.widthNative=e,i.heightNative=t):(e=i.widthNative,t=i.heightNative);var r=e,o=t;if(n.forcedAspectRatio&&n.forcedAspectRatio>0&&(r/o0;){var e=i.shift();if(typeof e=="function"){e(n);continue}var t=e.func;typeof t=="number"?e.arg===void 0?J.get(t)():J.get(t)(e.arg):t(e.arg===void 0?null:e.arg)}}function Tn(i){return Re("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),i}function Lr(i){var e=/\b_Z[\w\d_]+/g;return i.replace(e,function(t){var r=Tn(t);return t===r?t:r+" ["+t+"]"})}function Vn(){var i=new Error;if(!i.stack){try{throw new Error}catch(e){i=e}if(!i.stack)return"(no stack trace available)"}return i.stack.toString()}function sn(){var i=Vn();return n.extraStackTrace&&(i+=` `+n.extraStackTrace()),Lr(i)}function Fi(i){return it(i+16)+16}function fo(i,e){}function vn(i,e){return void 0}function Br(i){this.excPtr=i,this.ptr=i-16,this.set_type=function(e){T[this.ptr+4>>2]=e},this.get_type=function(){return T[this.ptr+4>>2]},this.set_destructor=function(e){T[this.ptr+8>>2]=e},this.get_destructor=function(){return T[this.ptr+8>>2]},this.set_refcount=function(e){T[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,xe[this.ptr+12>>0]=e},this.get_caught=function(){return xe[this.ptr+12>>0]!=0},this.set_rethrown=function(e){e=e?1:0,xe[this.ptr+13>>0]=e},this.get_rethrown=function(){return xe[this.ptr+13>>0]!=0},this.init=function(e,t){this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=T[this.ptr>>2];T[this.ptr>>2]=e+1},this.release_ref=function(){var e=T[this.ptr>>2];return T[this.ptr>>2]=e-1,W(e>0),e===1}}function Mt(i){this.free=function(){hr(this.ptr),this.ptr=0},this.set_base_ptr=function(e){T[this.ptr>>2]=e},this.get_base_ptr=function(){return T[this.ptr>>2]},this.set_adjusted_ptr=function(e){T[this.ptr+4>>2]=e},this.get_adjusted_ptr_addr=function(){return this.ptr+4},this.get_adjusted_ptr=function(){return T[this.ptr+4>>2]},this.get_exception_ptr=function(){var e=ko(this.get_exception_info().get_type());if(e)return T[this.get_base_ptr()>>2];var t=this.get_adjusted_ptr();return t!==0?t:this.get_base_ptr()},this.get_exception_info=function(){return new Br(this.get_base_ptr())},i===void 0?(this.ptr=it(8),this.set_adjusted_ptr(0)):this.ptr=i}var Wt=[];function Hr(i){i.add_ref()}var vt=0;function Qn(i){var e=new Mt(i),t=e.get_exception_info();return t.get_caught()||(t.set_caught(!0),vt--),t.set_rethrown(!1),Wt.push(e),Hr(t),e.get_exception_ptr()}var Vt=0;function Ft(i){try{return hr(new Br(i).ptr)}catch(e){ge("exception during cxa_free_exception: "+e)}}function Tr(i){if(i.release_ref()&&!i.get_rethrown()){var e=i.get_destructor();e&&J.get(e)(i.excPtr),Ft(i.excPtr)}}function ki(){oe(0),W(Wt.length>0);var i=Wt.pop();Tr(i.get_exception_info()),i.free(),Vt=0}function zn(i){var e=new Mt(i),t=e.get_base_ptr();throw Vt||(Vt=t),e.free(),t+" - Exception catching is disabled, this exception cannot be caught. Compile with -s NO_DISABLE_EXCEPTION_CATCHING or -s EXCEPTION_CATCHING_ALLOWED=[..] to catch."}function Pn(){var i=Vt;if(!i)return mt(0),0;var e=new Br(i),t=e.get_type(),r=new Mt;if(r.set_base_ptr(i),r.set_adjusted_ptr(i),!t)return mt(0),r.ptr|0;for(var o=Array.prototype.slice.call(arguments),a=0;a>2]=i,i}var he={splitPath:function(i){var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return e.exec(i).slice(1)},normalizeArray:function(i,e){for(var t=0,r=i.length-1;r>=0;r--){var o=i[r];o==="."?i.splice(r,1):o===".."?(i.splice(r,1),t++):t&&(i.splice(r,1),t--)}if(e)for(;t;t--)i.unshift("..");return i},normalize:function(i){var e=i.charAt(0)==="/",t=i.substr(-1)==="/";return i=he.normalizeArray(i.split("/").filter(function(r){return!!r}),!e).join("/"),!i&&!e&&(i="."),i&&t&&(i+="/"),(e?"/":"")+i},dirname:function(i){var e=he.splitPath(i),t=e[0],r=e[1];return!t&&!r?".":(r&&(r=r.substr(0,r.length-1)),t+r)},basename:function(i){if(i==="/")return"/";i=he.normalize(i),i=i.replace(/\/$/,"");var e=i.lastIndexOf("/");return e===-1?i:i.substr(e+1)},extname:function(i){return he.splitPath(i)[3]},join:function(){var i=Array.prototype.slice.call(arguments,0);return he.normalize(i.join("/"))},join2:function(i,e){return he.normalize(i+"/"+e)}};function me(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var i=new Uint8Array(1);return function(){return crypto.getRandomValues(i),i[0]}}else if(It)try{var e=Ic("crypto");return function(){return e.randomBytes(1)[0]}}catch(t){}return function(){E("no cryptographic support found for randomDevice. consider polyfilling it if you want to use something insecure like Math.random(), e.g. put this in a --pre-js: var crypto = { getRandomValues: function(array) { for (var i = 0; i < array.length; i++) array[i] = (Math.random()*256)|0 } };")}}var dt={resolve:function(){for(var i="",e=!1,t=arguments.length-1;t>=-1&&!e;t--){var r=t>=0?arguments[t]:f.cwd();if(typeof r!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!r)return"";i=r+"/"+i,e=r.charAt(0)==="/"}return i=he.normalizeArray(i.split("/").filter(function(o){return!!o}),!e).join("/"),(e?"/":"")+i||"."},relative:function(i,e){i=dt.resolve(i).substr(1),e=dt.resolve(e).substr(1);function t(u){for(var d=0;d=0&&u[h]==="";h--);return d>h?[]:u.slice(d,h-d+1)}for(var r=t(i.split("/")),o=t(e.split("/")),a=Math.min(r.length,o.length),s=a,A=0;A0?e=r.slice(0,o).toString("utf-8"):e=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(e=window.prompt("Input: "),e!==null&&(e+=` `)):typeof readline=="function"&&(e=readline(),e!==null&&(e+=` `));if(!e)return null;i.input=ao(e,!0)}return i.input.shift()},put_char:function(i,e){e===null||e===10?(Ke(Mr(i.output,0)),i.output=[]):e!=0&&i.output.push(e)},flush:function(i){i.output&&i.output.length>0&&(Ke(Mr(i.output,0)),i.output=[])}},default_tty1_ops:{put_char:function(i,e){e===null||e===10?(ge(Mr(i.output,0)),i.output=[]):e!=0&&i.output.push(e)},flush:function(i){i.output&&i.output.length>0&&(ge(Mr(i.output,0)),i.output=[])}}};function yt(i,e){Se.fill(0,i,i+e)}function ji(i,e){return W(e,"alignment argument is required"),Math.ceil(i/e)*e}function Jn(i){i=ji(i,65536);var e=iA(65536,i);return e?(yt(e,i),e):0}var ie={ops_table:null,mount:function(i){return ie.createNode(null,"/",16895,0)},createNode:function(i,e,t,r){if(f.isBlkdev(t)||f.isFIFO(t))throw new f.ErrnoError(63);ie.ops_table||(ie.ops_table={dir:{node:{getattr:ie.node_ops.getattr,setattr:ie.node_ops.setattr,lookup:ie.node_ops.lookup,mknod:ie.node_ops.mknod,rename:ie.node_ops.rename,unlink:ie.node_ops.unlink,rmdir:ie.node_ops.rmdir,readdir:ie.node_ops.readdir,symlink:ie.node_ops.symlink},stream:{llseek:ie.stream_ops.llseek}},file:{node:{getattr:ie.node_ops.getattr,setattr:ie.node_ops.setattr},stream:{llseek:ie.stream_ops.llseek,read:ie.stream_ops.read,write:ie.stream_ops.write,allocate:ie.stream_ops.allocate,mmap:ie.stream_ops.mmap,msync:ie.stream_ops.msync}},link:{node:{getattr:ie.node_ops.getattr,setattr:ie.node_ops.setattr,readlink:ie.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ie.node_ops.getattr,setattr:ie.node_ops.setattr},stream:f.chrdev_stream_ops}});var o=f.createNode(i,e,t,r);return f.isDir(o.mode)?(o.node_ops=ie.ops_table.dir.node,o.stream_ops=ie.ops_table.dir.stream,o.contents={}):f.isFile(o.mode)?(o.node_ops=ie.ops_table.file.node,o.stream_ops=ie.ops_table.file.stream,o.usedBytes=0,o.contents=null):f.isLink(o.mode)?(o.node_ops=ie.ops_table.link.node,o.stream_ops=ie.ops_table.link.stream):f.isChrdev(o.mode)&&(o.node_ops=ie.ops_table.chrdev.node,o.stream_ops=ie.ops_table.chrdev.stream),o.timestamp=Date.now(),i&&(i.contents[e]=o,i.timestamp=o.timestamp),o},getFileDataAsTypedArray:function(i){return i.contents?i.contents.subarray?i.contents.subarray(0,i.usedBytes):new Uint8Array(i.contents):new Uint8Array(0)},expandFileStorage:function(i,e){var t=i.contents?i.contents.length:0;if(!(t>=e)){var r=1024*1024;e=Math.max(e,t*(t>>0),t!=0&&(e=Math.max(e,256));var o=i.contents;i.contents=new Uint8Array(e),i.usedBytes>0&&i.contents.set(o.subarray(0,i.usedBytes),0)}},resizeFileStorage:function(i,e){if(i.usedBytes!=e)if(e==0)i.contents=null,i.usedBytes=0;else{var t=i.contents;i.contents=new Uint8Array(e),t&&i.contents.set(t.subarray(0,Math.min(e,i.usedBytes))),i.usedBytes=e}},node_ops:{getattr:function(i){var e={};return e.dev=f.isChrdev(i.mode)?i.id:1,e.ino=i.id,e.mode=i.mode,e.nlink=1,e.uid=0,e.gid=0,e.rdev=i.rdev,f.isDir(i.mode)?e.size=4096:f.isFile(i.mode)?e.size=i.usedBytes:f.isLink(i.mode)?e.size=i.link.length:e.size=0,e.atime=new Date(i.timestamp),e.mtime=new Date(i.timestamp),e.ctime=new Date(i.timestamp),e.blksize=4096,e.blocks=Math.ceil(e.size/e.blksize),e},setattr:function(i,e){e.mode!==void 0&&(i.mode=e.mode),e.timestamp!==void 0&&(i.timestamp=e.timestamp),e.size!==void 0&&ie.resizeFileStorage(i,e.size)},lookup:function(i,e){throw f.genericErrors[44]},mknod:function(i,e,t,r){return ie.createNode(i,e,t,r)},rename:function(i,e,t){if(f.isDir(i.mode)){var r;try{r=f.lookupNode(e,t)}catch(a){}if(r)for(var o in r.contents)throw new f.ErrnoError(55)}delete i.parent.contents[i.name],i.parent.timestamp=Date.now(),i.name=t,e.contents[t]=i,e.timestamp=i.parent.timestamp,i.parent=e},unlink:function(i,e){delete i.contents[e],i.timestamp=Date.now()},rmdir:function(i,e){var t=f.lookupNode(i,e);for(var r in t.contents)throw new f.ErrnoError(55);delete i.contents[e],i.timestamp=Date.now()},readdir:function(i){var e=[".",".."];for(var t in i.contents)i.contents.hasOwnProperty(t)&&e.push(t);return e},symlink:function(i,e,t){var r=ie.createNode(i,e,41471,0);return r.link=t,r},readlink:function(i){if(!f.isLink(i.mode))throw new f.ErrnoError(28);return i.link}},stream_ops:{read:function(i,e,t,r,o){var a=i.node.contents;if(o>=i.node.usedBytes)return 0;var s=Math.min(i.node.usedBytes-o,r);if(W(s>=0),s>8&&a.subarray)e.set(a.subarray(o,o+s),t);else for(var A=0;A0||r+t8)throw new f.ErrnoError(32);for(var o=he.normalizeArray(i.split("/").filter(function(I){return!!I}),!1),a=f.root,s="/",A=0;A40)throw new f.ErrnoError(32)}}return{path:s,node:a}},getPath:function(i){for(var e;;){if(f.isRoot(i)){var t=i.mount.mountpoint;return e?t[t.length-1]!=="/"?t+"/"+e:t+e:t}e=e?i.name+"/"+e:i.name,i=i.parent}},hashName:function(i,e){for(var t=0,r=0;r>>0)%f.nameTable.length},hashAddNode:function(i){var e=f.hashName(i.parent.id,i.name);i.name_next=f.nameTable[e],f.nameTable[e]=i},hashRemoveNode:function(i){var e=f.hashName(i.parent.id,i.name);if(f.nameTable[e]===i)f.nameTable[e]=i.name_next;else for(var t=f.nameTable[e];t;){if(t.name_next===i){t.name_next=i.name_next;break}t=t.name_next}},lookupNode:function(i,e){var t=f.mayLookup(i);if(t)throw new f.ErrnoError(t,i);for(var r=f.hashName(i.id,e),o=f.nameTable[r];o;o=o.name_next){var a=o.name;if(o.parent.id===i.id&&a===e)return o}return f.lookup(i,e)},createNode:function(i,e,t,r){W(typeof i=="object");var o=new f.FSNode(i,e,t,r);return f.hashAddNode(o),o},destroyNode:function(i){f.hashRemoveNode(i)},isRoot:function(i){return i===i.parent},isMountpoint:function(i){return!!i.mounted},isFile:function(i){return(i&61440)===32768},isDir:function(i){return(i&61440)===16384},isLink:function(i){return(i&61440)===40960},isChrdev:function(i){return(i&61440)===8192},isBlkdev:function(i){return(i&61440)===24576},isFIFO:function(i){return(i&61440)===4096},isSocket:function(i){return(i&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(i){var e=f.flagModes[i];if(typeof e=="undefined")throw new Error("Unknown file open mode: "+i);return e},flagsToPermissionString:function(i){var e=["r","w","rw"][i&3];return i&512&&(e+="w"),e},nodePermissions:function(i,e){return f.ignorePermissions?0:e.includes("r")&&!(i.mode&292)||e.includes("w")&&!(i.mode&146)||e.includes("x")&&!(i.mode&73)?2:0},mayLookup:function(i){var e=f.nodePermissions(i,"x");return e||(i.node_ops.lookup?0:2)},mayCreate:function(i,e){try{var t=f.lookupNode(i,e);return 20}catch(r){}return f.nodePermissions(i,"wx")},mayDelete:function(i,e,t){var r;try{r=f.lookupNode(i,e)}catch(a){return a.errno}var o=f.nodePermissions(i,"wx");if(o)return o;if(t){if(!f.isDir(r.mode))return 54;if(f.isRoot(r)||f.getPath(r)===f.cwd())return 10}else if(f.isDir(r.mode))return 31;return 0},mayOpen:function(i,e){return i?f.isLink(i.mode)?32:f.isDir(i.mode)&&(f.flagsToPermissionString(e)!=="r"||e&512)?31:f.nodePermissions(i,f.flagsToPermissionString(e)):44},MAX_OPEN_FDS:4096,nextfd:function(i,e){i=i||0,e=e||f.MAX_OPEN_FDS;for(var t=i;t<=e;t++)if(!f.streams[t])return t;throw new f.ErrnoError(33)},getStream:function(i){return f.streams[i]},createStream:function(i,e,t){f.FSStream||(f.FSStream=function(){},f.FSStream.prototype={object:{get:function(){return this.node},set:function(s){this.node=s}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}});var r=new f.FSStream;for(var o in i)r[o]=i[o];i=r;var a=f.nextfd(e,t);return i.fd=a,f.streams[a]=i,i},closeStream:function(i){f.streams[i]=null},chrdev_stream_ops:{open:function(i){var e=f.getDevice(i.node.rdev);i.stream_ops=e.stream_ops,i.stream_ops.open&&i.stream_ops.open(i)},llseek:function(){throw new f.ErrnoError(70)}},major:function(i){return i>>8},minor:function(i){return i&255},makedev:function(i,e){return i<<8|e},registerDevice:function(i,e){f.devices[i]={stream_ops:e}},getDevice:function(i){return f.devices[i]},getMounts:function(i){for(var e=[],t=[i];t.length;){var r=t.pop();e.push(r),t.push.apply(t,r.mounts)}return e},syncfs:function(i,e){typeof i=="function"&&(e=i,i=!1),f.syncFSRequests++,f.syncFSRequests>1&&ge("warning: "+f.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=f.getMounts(f.root.mount),r=0;function o(s){return W(f.syncFSRequests>0),f.syncFSRequests--,e(s)}function a(s){if(s)return a.errored?void 0:(a.errored=!0,o(s));++r>=t.length&&o(null)}t.forEach(function(s){if(!s.type.syncfs)return a(null);s.type.syncfs(s,i,a)})},mount:function(i,e,t){if(typeof i=="string")throw i;var r=t==="/",o=!t,a;if(r&&f.root)throw new f.ErrnoError(10);if(!r&&!o){var s=f.lookupPath(t,{follow_mount:!1});if(t=s.path,a=s.node,f.isMountpoint(a))throw new f.ErrnoError(10);if(!f.isDir(a.mode))throw new f.ErrnoError(54)}var A={type:i,opts:e,mountpoint:t,mounts:[]},c=i.mount(A);return c.mount=A,A.root=c,r?f.root=c:a&&(a.mounted=A,a.mount&&a.mount.mounts.push(A)),c},unmount:function(i){var e=f.lookupPath(i,{follow_mount:!1});if(!f.isMountpoint(e.node))throw new f.ErrnoError(28);var t=e.node,r=t.mounted,o=f.getMounts(r);Object.keys(f.nameTable).forEach(function(s){for(var A=f.nameTable[s];A;){var c=A.name_next;o.includes(A.mount)&&f.destroyNode(A),A=c}}),t.mounted=null;var a=t.mount.mounts.indexOf(r);W(a!==-1),t.mount.mounts.splice(a,1)},lookup:function(i,e){return i.node_ops.lookup(i,e)},mknod:function(i,e,t){var r=f.lookupPath(i,{parent:!0}),o=r.node,a=he.basename(i);if(!a||a==="."||a==="..")throw new f.ErrnoError(28);var s=f.mayCreate(o,a);if(s)throw new f.ErrnoError(s);if(!o.node_ops.mknod)throw new f.ErrnoError(63);return o.node_ops.mknod(o,a,e,t)},create:function(i,e){return e=e!==void 0?e:438,e&=4095,e|=32768,f.mknod(i,e,0)},mkdir:function(i,e){return e=e!==void 0?e:511,e&=1023,e|=16384,f.mknod(i,e,0)},mkdirTree:function(i,e){for(var t=i.split("/"),r="",o=0;othis.length-1||I<0)){var m=I%this.chunkSize,y=I/this.chunkSize|0;return this.getter(y)[m]}},a.prototype.setDataGetter=function(I){this.getter=I},a.prototype.cacheLength=function(){var I=new XMLHttpRequest;if(I.open("HEAD",t,!1),I.send(null),!(I.status>=200&&I.status<300||I.status===304))throw new Error("Couldn't load "+t+". Status: "+I.status);var m=Number(I.getResponseHeader("Content-length")),y,v=(y=I.getResponseHeader("Accept-Ranges"))&&y==="bytes",x=(y=I.getResponseHeader("Content-Encoding"))&&y==="gzip",G=1024*1024;v||(G=m);var R=function(N,$){if(N>$)throw new Error("invalid range ("+N+", "+$+") or no bytes requested!");if($>m-1)throw new Error("only "+m+" bytes available! programmer error!");var Y=new XMLHttpRequest;if(Y.open("GET",t,!1),m!==G&&Y.setRequestHeader("Range","bytes="+N+"-"+$),typeof Uint8Array!="undefined"&&(Y.responseType="arraybuffer"),Y.overrideMimeType&&Y.overrideMimeType("text/plain; charset=x-user-defined"),Y.send(null),!(Y.status>=200&&Y.status<300||Y.status===304))throw new Error("Couldn't load "+t+". Status: "+Y.status);return Y.response!==void 0?new Uint8Array(Y.response||[]):ao(Y.responseText||"",!0)},D=this;D.setDataGetter(function(N){var $=N*G,Y=(N+1)*G-1;if(Y=Math.min(Y,m-1),typeof D.chunks[N]=="undefined"&&(D.chunks[N]=R($,Y)),typeof D.chunks[N]=="undefined")throw new Error("doXHR failed!");return D.chunks[N]}),(x||!m)&&(G=m=1,m=this.getter(0).length,G=m,Ke("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=m,this._chunkSize=G,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!Ve)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new a;Object.defineProperties(s,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var A={isDevice:!1,contents:s}}else var A={isDevice:!1,url:t};var c=f.createFile(i,e,A,r,o);A.contents?c.contents=A.contents:A.url&&(c.contents=null,c.url=A.url),Object.defineProperties(c,{usedBytes:{get:function(){return this.contents.length}}});var u={},d=Object.keys(c.stream_ops);return d.forEach(function(h){var I=c.stream_ops[h];u[h]=function(){return f.forceLoadFile(c),I.apply(null,arguments)}}),u.read=function(I,m,y,v,x){f.forceLoadFile(c);var G=I.node.contents;if(x>=G.length)return 0;var R=Math.min(G.length-x,v);if(W(R>=0),G.slice)for(var D=0;D>2]=r.dev,T[t+4>>2]=0,T[t+8>>2]=r.ino,T[t+12>>2]=r.mode,T[t+16>>2]=r.nlink,T[t+20>>2]=r.uid,T[t+24>>2]=r.gid,T[t+28>>2]=r.rdev,T[t+32>>2]=0,ye=[r.size>>>0,(We=r.size,+Math.abs(We)>=1?We>0?(Math.min(+Math.floor(We/4294967296),4294967295)|0)>>>0:~~+Math.ceil((We-+(~~We>>>0))/4294967296)>>>0:0)],T[t+40>>2]=ye[0],T[t+44>>2]=ye[1],T[t+48>>2]=4096,T[t+52>>2]=r.blocks,T[t+56>>2]=r.atime.getTime()/1e3|0,T[t+60>>2]=0,T[t+64>>2]=r.mtime.getTime()/1e3|0,T[t+68>>2]=0,T[t+72>>2]=r.ctime.getTime()/1e3|0,T[t+76>>2]=0,ye=[r.ino>>>0,(We=r.ino,+Math.abs(We)>=1?We>0?(Math.min(+Math.floor(We/4294967296),4294967295)|0)>>>0:~~+Math.ceil((We-+(~~We>>>0))/4294967296)>>>0:0)],T[t+80>>2]=ye[0],T[t+84>>2]=ye[1],0},doMsync:function(i,e,t,r,o){var a=Se.slice(i,i+t);f.msync(e,a,o,t,r)},doMkdir:function(i,e){return i=he.normalize(i),i[i.length-1]==="/"&&(i=i.substr(0,i.length-1)),f.mkdir(i,e,0),0},doMknod:function(i,e,t){switch(e&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return f.mknod(i,e,t),0},doReadlink:function(i,e,t){if(t<=0)return-28;var r=f.readlink(i),o=Math.min(t,Ze(r)),a=xe[e+o];return Je(r,e,t+1),xe[e+o]=a,o},doAccess:function(i,e){if(e&-8)return-28;var t,r=f.lookupPath(i,{follow:!0});if(t=r.node,!t)return-44;var o="";return e&4&&(o+="r"),e&2&&(o+="w"),e&1&&(o+="x"),o&&f.nodePermissions(t,o)?-2:0},doDup:function(i,e,t){var r=f.getStream(t);return r&&f.close(r),f.open(i,e,0,t,t).fd},doReadv:function(i,e,t,r){for(var o=0,a=0;a>2],A=T[e+(a*8+4)>>2],c=f.read(i,xe,s,A,r);if(c<0)return-1;if(o+=c,c>2],A=T[e+(a*8+4)>>2],c=f.write(i,xe,s,A,r);if(c<0)return-1;o+=c}return o},varargs:void 0,get:function(){W(l.varargs!=null),l.varargs+=4;var i=T[l.varargs-4>>2];return i},getStr:function(i){var e=at(i);return e},getStreamFromFD:function(i){var e=f.getStream(i);if(!e)throw new f.ErrnoError(8);return e},get64:function(i,e){return i>=0?W(e===0):W(e===-1),i}};function Me(i,e,t){l.varargs=t;try{var r=l.getStreamFromFD(i);switch(e){case 0:{var o=l.get();if(o<0)return-28;var a;return a=f.open(r.path,r.flags,0,o),a.fd}case 1:case 2:return 0;case 3:return r.flags;case 4:{var o=l.get();return r.flags|=o,0}case 12:{var o=l.get(),s=0;return be[o+s>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Kn(28),-1;default:return-28}}catch(A){return(typeof f=="undefined"||!(A instanceof f.ErrnoError))&&E(A),-A.errno}}function Hi(i,e,t){l.varargs=t;try{var r=l.getStreamFromFD(i);switch(e){case 21509:case 21505:return r.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return r.tty?0:-59;case 21519:{if(!r.tty)return-59;var o=l.get();return T[o>>2]=0,0}case 21520:return r.tty?-28:-59;case 21531:{var o=l.get();return f.ioctl(r,e,o)}case 21523:return r.tty?0:-59;case 21524:return r.tty?0:-59;default:E("bad ioctl syscall "+e)}}catch(a){return(typeof f=="undefined"||!(a instanceof f.ErrnoError))&&E(a),-a.errno}}function Gi(i,e,t,r,o,a){a<<=12;var s,A=!1;if(r&16&&i%65536!==0)return-28;if(r&32){if(s=Jn(e),!s)return-48;A=!0}else{var c=f.getStream(o);if(!c)return-8;var u=f.mmap(c,i,e,a,t,r);s=u.ptr,A=u.allocated}return l.mappings[s]={malloc:s,len:e,allocated:A,fd:o,prot:t,flags:r,offset:a},s}function Yi(i,e,t,r,o,a){try{return Gi(i,e,t,r,o,a)}catch(s){return(typeof f=="undefined"||!(s instanceof f.ErrnoError))&&E(s),-s.errno}}function Xi(i,e,t){l.varargs=t;try{var r=l.getStr(i),o=t?l.get():0,a=f.open(r,e,o);return a.fd}catch(s){return(typeof f=="undefined"||!(s instanceof f.ErrnoError))&&E(s),-s.errno}}function Wi(i,e){try{return i=l.getStr(i),l.doStat(f.stat,i,e)}catch(t){return(typeof f=="undefined"||!(t instanceof f.ErrnoError))&&E(t),-t.errno}}var Zn=48,Vi=57;function cn(i){if(i===void 0)return"_unknown";i=i.replace(/[^a-zA-Z0-9_]/g,"$");var e=i.charCodeAt(0);return e>=Zn&&e<=Vi?"_"+i:i}function sr(i,e){return i=cn(i),new Function("body","return function "+i+`() { "use strict"; return body.apply(this, arguments); }; `)(e)}var Ar=[],rt=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function ft(){for(var i=0,e=5;e>2])}var g={},C={},B=void 0;function F(i){throw new B(i)}function H(i,e,t){i.forEach(function(A){C[A]=e});function r(A){var c=t(A);c.length!==i.length&&F("Mismatched type converter count");for(var u=0;u>a])},destructorFunction:null})}function Ce(i){if(!(this instanceof Ne)||!(i instanceof Ne))return!1;for(var e=this.$$.ptrType.registeredClass,t=this.$$.ptr,r=i.$$.ptrType.registeredClass,o=i.$$.ptr;e.baseClass;)t=e.upcast(t),e=e.baseClass;for(;r.baseClass;)o=r.upcast(o),r=r.baseClass;return e===r&&t===o}function Be(i){return{count:i.count,deleteScheduled:i.deleteScheduled,preservePointerOnDelete:i.preservePointerOnDelete,ptr:i.ptr,ptrType:i.ptrType,smartPtr:i.smartPtr,smartPtrType:i.smartPtrType}}function De(i){function e(t){return t.$$.ptrType.registeredClass.name}ae(e(i)+" instance already deleted")}function Ge(){if(this.$$.ptr||De(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var i=Jt(Object.create(Object.getPrototypeOf(this),{$$:{value:Be(this.$$)}}));return i.$$.count.value+=1,i.$$.deleteScheduled=!1,i}function Et(){this.$$.ptr||De(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ae("Object already scheduled for deletion"),dn(this),Qt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ct(){return!this.$$.ptr}function qe(){return this.$$.ptr||De(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ae("Object already scheduled for deletion"),Yr.push(this),Yr.length===1&&kt&&kt(ur),this.$$.deleteScheduled=!0,this}function fr(){Ne.prototype.isAliasOf=Ce,Ne.prototype.clone=Ge,Ne.prototype.delete=Et,Ne.prototype.isDeleted=ct,Ne.prototype.deleteLater=qe}function Ne(){}var wt={};function pt(i,e,t){if(i[e].overloadTable===void 0){var r=i[e];i[e]=function(){return i[e].overloadTable.hasOwnProperty(arguments.length)||ae("Function '"+t+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+i[e].overloadTable+")!"),i[e].overloadTable[arguments.length].apply(this,arguments)},i[e].overloadTable=[],i[e].overloadTable[r.argCount]=r}}function gr(i,e,t){n.hasOwnProperty(i)?((t===void 0||n[i].overloadTable!==void 0&&n[i].overloadTable[t]!==void 0)&&ae("Cannot register public name '"+i+"' twice"),pt(n,i,i),n.hasOwnProperty(t)&&ae("Cannot register multiple overloads of a function with the same number of arguments ("+t+")!"),n[i].overloadTable[t]=e):(n[i]=e,t!==void 0&&(n[i].numArguments=t))}function Sn(i,e,t,r,o,a,s,A){this.name=i,this.constructor=e,this.instancePrototype=t,this.rawDestructor=r,this.baseClass=o,this.getActualType=a,this.upcast=s,this.downcast=A,this.pureVirtualFunctions=[]}function Vr(i,e,t){for(;e!==t;)e.upcast||ae("Expected null or instance of "+t.name+", got an instance of "+e.name),i=e.upcast(i),e=e.baseClass;return i}function vr(i,e){if(e===null)return this.isReference&&ae("null is not a valid "+this.name),0;e.$$||ae('Cannot pass "'+gn(e)+'" as a '+this.name),e.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name);var t=e.$$.ptrType.registeredClass,r=Vr(e.$$.ptr,t,this.registeredClass);return r}function ri(i,e){var t;if(e===null)return this.isReference&&ae("null is not a valid "+this.name),this.isSmartPointer?(t=this.rawConstructor(),i!==null&&i.push(this.rawDestructor,t),t):0;e.$$||ae('Cannot pass "'+gn(e)+'" as a '+this.name),e.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&e.$$.ptrType.isConst&&ae("Cannot convert argument of type "+(e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name)+" to parameter type "+this.name);var r=e.$$.ptrType.registeredClass;if(t=Vr(e.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(e.$$.smartPtr===void 0&&ae("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:e.$$.smartPtrType===this?t=e.$$.smartPtr:ae("Cannot convert argument of type "+(e.$$.smartPtrType?e.$$.smartPtrType.name:e.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:t=e.$$.smartPtr;break;case 2:if(e.$$.smartPtrType===this)t=e.$$.smartPtr;else{var o=e.clone();t=this.rawShare(t,un(function(){o.delete()})),i!==null&&i.push(this.rawDestructor,t)}break;default:ae("Unsupporting sharing policy")}return t}function Ho(i,e){if(e===null)return this.isReference&&ae("null is not a valid "+this.name),0;e.$$||ae('Cannot pass "'+gn(e)+'" as a '+this.name),e.$$.ptr||ae("Cannot pass deleted object as a pointer of type "+this.name),e.$$.ptrType.isConst&&ae("Cannot convert argument of type "+e.$$.ptrType.name+" to parameter type "+this.name);var t=e.$$.ptrType.registeredClass,r=Vr(e.$$.ptr,t,this.registeredClass);return r}function Go(i){return this.rawGetPointee&&(i=this.rawGetPointee(i)),i}function Yo(i){this.rawDestructor&&this.rawDestructor(i)}function Xo(i){i!==null&&i.delete()}function go(i,e,t){if(e===t)return i;if(t.baseClass===void 0)return null;var r=go(i,e,t.baseClass);return r===null?null:t.downcast(r)}function Eo(i,e){return e=Ae(i,e),Nt[e]}function ni(i,e){(!e.ptrType||!e.ptr)&&F("makeClassHandle requires ptr and ptrType");var t=!!e.smartPtrType,r=!!e.smartPtr;return t!==r&&F("Both smartPtrType and smartPtr must be specified"),e.count={value:1},Jt(Object.create(i,{$$:{value:e}}))}function ii(i){var e=this.getPointee(i);if(!e)return this.destructor(i),null;var t=Eo(this.registeredClass,e);if(t!==void 0){if(t.$$.count.value===0)return t.$$.ptr=e,t.$$.smartPtr=i,t.clone();var r=t.clone();return this.destructor(i),r}function o(){return this.isSmartPointer?ni(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:e,smartPtrType:this,smartPtr:i}):ni(this.registeredClass.instancePrototype,{ptrType:this,ptr:i})}var a=this.registeredClass.getActualType(e),s=wt[a];if(!s)return o.call(this);var A;this.isConst?A=s.constPointerType:A=s.pointerType;var c=go(e,this.registeredClass,A.registeredClass);return c===null?o.call(this):this.isSmartPointer?ni(A.registeredClass.instancePrototype,{ptrType:A,ptr:c,smartPtrType:this,smartPtr:i}):ni(A.registeredClass.instancePrototype,{ptrType:A,ptr:c})}function Wo(){Er.prototype.getPointee=Go,Er.prototype.destructor=Yo,Er.prototype.argPackAdvance=8,Er.prototype.readValueFromPointer=_,Er.prototype.deleteObject=Xo,Er.prototype.fromWireType=ii}function Er(i,e,t,r,o,a,s,A,c,u,d){this.name=i,this.registeredClass=e,this.isReference=t,this.isConst=r,this.isSmartPointer=o,this.pointeeType=a,this.sharingPolicy=s,this.rawGetPointee=A,this.rawConstructor=c,this.rawShare=u,this.rawDestructor=d,!o&&e.baseClass===void 0?r?(this.toWireType=vr,this.destructorFunction=null):(this.toWireType=Ho,this.destructorFunction=null):this.toWireType=ri}function Zt(i,e,t){n.hasOwnProperty(i)||F("Replacing nonexistant public symbol"),n[i].overloadTable!==void 0&&t!==void 0?n[i].overloadTable[t]=e:(n[i]=e,n[i].argCount=t)}function po(i,e,t){W("dynCall_"+i in n,"bad function pointer type - no table for sig '"+i+"'"),t&&t.length?W(t.length===i.substring(1).replace(/j/g,"--").length):W(i.length==1);var r=n["dynCall_"+i];return t&&t.length?r.apply(null,[e].concat(t)):r.call(null,e)}function Vo(i,e,t){return i.includes("j")?po(i,e,t):(W(J.get(e),"missing table entry in dynCall: "+e),J.get(e).apply(null,t))}function zo(i,e){W(i.includes("j"),"getDynCaller should only be called with i64 sigs");var t=[];return function(){t.length=arguments.length;for(var r=0;r0?", ":"")+h),I+=(u?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+`); `,A)I+=`runDestructors(destructors); `;else for(var c=s?1:2;c>2)+r]);return t}function oi(i,e,t,r,o,a,s){var A=$r(t,r);e=ke(e),a=_t(o,a),H([],[i],function(c){c=c[0];var u=c.name+"."+e;function d(){Qr("Cannot call "+u+" due to unbound types",A)}e.startsWith("@@")&&(e=Symbol[e.substring(2)]);var h=c.registeredClass.constructor;return h[e]===void 0?(d.argCount=t-1,h[e]=d):(pt(h,e,u),h[e].overloadTable[t-1]=d),H([],A,function(I){var m=[I[0],null].concat(I.slice(1)),y=Mn(u,m,null,a,s);return h[e].overloadTable===void 0?(y.argCount=t-1,h[e]=y):h[e].overloadTable[t-1]=y,[]}),[]})}function $o(i,e,t,r,o,a){W(e>0);var s=$r(e,t);o=_t(r,o),H([],[i],function(A){A=A[0];var c="constructor "+A.name;if(A.registeredClass.constructor_body===void 0&&(A.registeredClass.constructor_body=[]),A.registeredClass.constructor_body[e-1]!==void 0)throw new nt("Cannot register multiple constructors with identical number of parameters ("+(e-1)+") for class '"+A.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return A.registeredClass.constructor_body[e-1]=function(){Qr("Cannot construct "+A.name+" due to unbound types",s)},H([],s,function(u){return u.splice(1,0,null),A.registeredClass.constructor_body[e-1]=Mn(c,u,null,o,a),[]}),[]})}function Ko(i,e,t,r,o,a,s,A){var c=$r(t,r);e=ke(e),a=_t(o,a),H([],[i],function(u){u=u[0];var d=u.name+"."+e;e.startsWith("@@")&&(e=Symbol[e.substring(2)]),A&&u.registeredClass.pureVirtualFunctions.push(e);function h(){Qr("Cannot call "+d+" due to unbound types",c)}var I=u.registeredClass.instancePrototype,m=I[e];return m===void 0||m.overloadTable===void 0&&m.className!==u.name&&m.argCount===t-2?(h.argCount=t-2,h.className=u.name,I[e]=h):(pt(I,e,d),I[e].overloadTable[t-2]=h),H([],c,function(y){var v=Mn(d,y,u,a,s);return I[e].overloadTable===void 0?(v.argCount=t-2,I[e]=v):I[e].overloadTable[t-2]=v,[]}),[]})}function ho(i,e,t){return i instanceof Object||ae(t+' with invalid "this": '+i),i instanceof e.registeredClass.constructor||ae(t+' incompatible with "this" of type '+i.constructor.name),i.$$.ptr||ae("cannot call emscripten binding method "+t+" on deleted object"),Vr(i.$$.ptr,i.$$.ptrType.registeredClass,e.registeredClass)}function Io(i,e,t,r,o,a,s,A,c,u){e=ke(e),o=_t(r,o),H([],[i],function(d){d=d[0];var h=d.name+"."+e,I={get:function(){Qr("Cannot access "+h+" due to unbound types",[t,s])},enumerable:!0,configurable:!0};return c?I.set=function(){Qr("Cannot access "+h+" due to unbound types",[t,s])}:I.set=function(m){ae(h+" is a read-only property")},Object.defineProperty(d.registeredClass.instancePrototype,e,I),H([],c?[t,s]:[t],function(m){var y=m[0],v={get:function(){var G=ho(this,d,h+" getter");return y.fromWireType(o(a,G))},enumerable:!0};if(c){c=_t(A,c);var x=m[1];v.set=function(G){var R=ho(this,d,h+" setter"),D=[];c(u,R,x.toWireType(D,G)),dr(D)}}return Object.defineProperty(d.registeredClass.instancePrototype,e,v),[]}),[]})}function mo(i){i>4&&--rt[i].refcount===0&&(rt[i]=void 0,Ar.push(i))}function Co(i,e){e=ke(e),ee(i,{name:e,fromWireType:function(t){var r=rt[t].value;return mo(t),r},toWireType:function(t,r){return un(r)},argPackAdvance:8,readValueFromPointer:_,destructorFunction:null})}function gn(i){if(i===null)return"null";var e=typeof i;return e==="object"||e==="array"||e==="function"?i.toString():""+i}function En(i,e){switch(e){case 2:return function(t){return this.fromWireType(b[t>>2])};case 3:return function(t){return this.fromWireType(Qe[t>>3])};default:throw new TypeError("Unknown float type: "+i)}}function Jo(i,e,t){var r=q(t);e=ke(e),ee(i,{name:e,fromWireType:function(o){return o},toWireType:function(o,a){if(typeof a!="number"&&typeof a!="boolean")throw new TypeError('Cannot convert "'+gn(a)+'" to '+this.name);return a},argPackAdvance:8,readValueFromPointer:En(e,r),destructorFunction:null})}function Zo(i,e,t,r,o,a){var s=$r(e,t);i=ke(i),o=_t(r,o),gr(i,function(){Qr("Cannot call "+i+" due to unbound types",s)},e-1),H([],s,function(A){var c=[A[0],null].concat(A.slice(1));return Zt(i,Mn(i,c,null,o,a),e-1),[]})}function qo(i,e,t){switch(e){case 0:return t?function(o){return xe[o]}:function(o){return Se[o]};case 1:return t?function(o){return be[o>>1]}:function(o){return ve[o>>1]};case 2:return t?function(o){return T[o>>2]}:function(o){return Oe[o>>2]};default:throw new TypeError("Unknown integer type: "+i)}}function ea(i,e,t,r,o){e=ke(e),o===-1&&(o=4294967295);var a=q(t),s=function(u){return u};if(r===0){var A=32-8*t;s=function(u){return u<>>A}}var c=e.includes("unsigned");ee(i,{name:e,fromWireType:s,toWireType:function(u,d){if(typeof d!="number"&&typeof d!="boolean")throw new TypeError('Cannot convert "'+gn(d)+'" to '+this.name);if(do)throw new TypeError('Passing a number "'+gn(d)+'" from JS side to C/C++ side to an argument of type "'+e+'", which is outside the valid range ['+r+", "+o+"]!");return c?d>>>0:d|0},argPackAdvance:8,readValueFromPointer:qo(e,a,r!==0),destructorFunction:null})}function ta(i,e,t){var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],o=r[e];function a(s){s=s>>2;var A=Oe,c=A[s],u=A[s+1];return new o(kr,u,c)}t=ke(t),ee(i,{name:t,fromWireType:a,argPackAdvance:8,readValueFromPointer:a},{ignoreDuplicateRegistrations:!0})}function ra(i,e){e=ke(e);var t=e==="std::string";ee(i,{name:e,fromWireType:function(r){var o=Oe[r>>2],a;if(t)for(var s=r+4,A=0;A<=o;++A){var c=r+4+A;if(A==o||Se[c]==0){var u=c-s,d=at(s,u);a===void 0?a=d:(a+=String.fromCharCode(0),a+=d),s=c+1}}else{for(var h=new Array(o),A=0;A>2]=A,t&&s)Je(o,c+4,A+1);else if(s)for(var u=0;u255&&(hr(c),ae("String has UTF-16 code units that do not fit in 8 bits")),Se[c+4+u]=d}else for(var u=0;u>2],d=a(),h,I=c+4,m=0;m<=u;++m){var y=c+4+m*e;if(m==u||d[y>>A]==0){var v=y-I,x=r(I,v);h===void 0?h=x:(h+=String.fromCharCode(0),h+=x),I=y+e}}return hr(c),h},toWireType:function(c,u){typeof u!="string"&&ae("Cannot pass non-string to C++ string type "+t);var d=s(u),h=it(4+d+e);return Oe[h>>2]=d>>A,o(u,h+4,d+e),c!==null&&c.push(hr,h),h},argPackAdvance:8,readValueFromPointer:_,destructorFunction:function(c){hr(c)}})}function ia(i,e,t,r,o,a){lr[i]={name:ke(e),rawConstructor:_t(t,r),rawDestructor:_t(o,a),fields:[]}}function oa(i,e,t,r,o,a,s,A,c,u){lr[i].fields.push({fieldName:ke(e),getterReturnType:t,getter:_t(r,o),getterContext:a,setterArgumentType:s,setter:_t(A,c),setterContext:u})}function aa(i,e){e=ke(e),ee(i,{isVoid:!0,name:e,argPackAdvance:0,fromWireType:function(){},toWireType:function(t,r){}})}var sa={};function Aa(i){var e=sa[i];return e===void 0?ke(i):e}var Zi=[];function qi(i,e,t,r){i=Zi[i],e=ti(e),t=Aa(t),i(e,t,null,r)}function ca(i){var e=Zi.length;return Zi.push(i),e}function ua(i,e){for(var t=new Array(i),r=0;r>2)+r],"parameter "+r);return t}function la(i,e){for(var t=ua(i,e),r=t[0],o=r.name+"_$"+t.slice(1).map(function(m){return m.name}).join("_")+"$",a=["retType"],s=[r],A="",c=0;c4&&(rt[i].refcount+=1)}function fa(i,e){i=ln(i,"_emval_take_value");var t=i.readValueFromPointer(e);return un(t)}function ga(){E()}var Ea=!0;function pa(i,e){var t;if(i===0)t=Date.now();else if((i===1||i===4)&&Ea)t=Tt();else return Kn(28),-1;return T[e>>2]=t/1e3|0,T[e+4>>2]=t%1e3*1e3*1e3|0,0}function _a(i,e){E("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}function ha(i,e){E("To use dlopen, you need to use Emscripten's linking support, see https://github.com/emscripten-core/emscripten/wiki/Linking")}var ai=[];function si(i,e){W(Array.isArray(ai)),W(e%16==0),ai.length=0;var t;for(e>>=2;t=Se[i++];){W(t===100||t===102||t===105);var r=t<105;r&&e&1&&e++,ai.push(r?Qe[e++>>1]:T[e]),++e}return ai}function Ia(i,e,t){var r=si(e,t);return Bt.hasOwnProperty(i)||E("No EM_ASM constant found at address "+i),Bt[i].apply(null,r)}function ma(){return 2147483648}function Ca(i,e,t){Se.copyWithin(i,e,e+t)}function ya(i){E("Cannot use emscripten_pc_get_function without -s USE_OFFSET_CONVERTER")}function wa(i){try{return jt.grow(i-kr.byteLength+65535>>>16),ze(jt.buffer),1}catch(e){ge("emscripten_realloc_buffer: Attempted to grow heap from "+kr.byteLength+" bytes to "+i+" bytes, but got error: "+e)}}function Da(i){var e=Se.length;i=i>>>0,W(i>e);var t=2147483648;if(i>t)return ge("Cannot enlarge memory, asked to go up to "+i+" bytes, but the limit is "+t+" bytes!"),!1;for(var r=1;r<=4;r*=2){var o=e*(1+.2/r);o=Math.min(o,i+100663296);var a=Math.min(t,Xn(Math.max(i,o),65536)),s=wa(a);if(s)return!0}return ge("Failed to grow the heap from "+e+" bytes to "+a+" bytes, not enough memory!"),!1}function Ai(i){E("Cannot use emscripten_generate_pc (needed by __builtin_return_address) without -s USE_OFFSET_CONVERTER")}var pr={};function Kr(i){i.forEach(function(e){var t=Ai(e);t&&(pr[t]=e)})}function yo(){var i=new Error().stack.split(` `);return i[0]=="Error"&&i.shift(),Kr(i),pr.last_addr=Ai(i[2]),pr.last_stack=i,pr.last_addr}function ba(i,e,t){var r;pr.last_addr==i?r=pr.last_stack:(r=new Error().stack.split(` `),r[0]=="Error"&&r.shift(),Kr(r));for(var o=2;r[o]&&Ai(r[o])!=i;)++o;for(var a=0;a>2]=Ai(r[a+o]);return a}function Oa(i){for(var e=Tt();Tt()-e>1,u=new Uint16Array(c),r=0,d=0;u[r++]=d,!(r>=c||(u[r++]=d+1,r>=c)||(u[r++]=d+2,r>=c)||(u[r++]=d,r>=c)||(u[r++]=d+2,r>=c)||(u[r++]=d+3,r>=c));)d+=4;e.GLctx.bufferData(34963,u,35044),e.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:function(e){var t=O.log2ceilLookup(e),r=O.currentContext.tempVertexBuffers1[t],o=O.currentContext.tempVertexBufferCounters1[t];O.currentContext.tempVertexBufferCounters1[t]=O.currentContext.tempVertexBufferCounters1[t]+1&O.numTempVertexBuffersPerSize-1;var a=r[o];if(a)return a;var s=M.getParameter(34964);return r[o]=M.createBuffer(),M.bindBuffer(34962,r[o]),M.bufferData(34962,1<>2]:-1;o+=at(T[t+a*4>>2],s<0?void 0:s)}return o},calcBufLength:function(e,t,r,o){if(r>0)return o*r;var a=O.byteSizeByType[t-O.byteSizeByTypeRoot];return e*a*o},usedTempBuffers:[],preDrawHandleClientVertexAttribBindings:function(e){O.resetBufferBinding=!1;for(var t=0;t1?i.getContext("webgl2",e):i.getContext("webgl",e);if(!t)return 0;var r=O.registerContext(t,e);return r},enableOffscreenFramebufferAttributes:function(i){i.renderViaOffscreenBackBuffer=!0,i.preserveDrawingBuffer=!0},createOffscreenFramebuffer:function(i){var e=i.GLctx,t=e.createFramebuffer();if(e.bindFramebuffer(36160,t),i.defaultFbo=t,i.defaultFboForbidBlitFramebuffer=!1,e.getContextAttributes().antialias)i.defaultFboForbidBlitFramebuffer=!0;else{var r=navigator.userAgent.toLowerCase().match(/firefox\/(\d\d)/);if(r!=null){var o=r[1];i.defaultFboForbidBlitFramebuffer=o<67}}i.defaultColorTarget=e.createTexture(),i.defaultDepthTarget=e.createRenderbuffer(),O.resizeOffscreenFramebuffer(i),e.bindTexture(3553,i.defaultColorTarget),e.texParameteri(3553,10241,9728),e.texParameteri(3553,10240,9728),e.texParameteri(3553,10242,33071),e.texParameteri(3553,10243,33071),e.texImage2D(3553,0,6408,e.canvas.width,e.canvas.height,0,6408,5121,null),e.framebufferTexture2D(36160,36064,3553,i.defaultColorTarget,0),e.bindTexture(3553,null);var a=e.createRenderbuffer();e.bindRenderbuffer(36161,i.defaultDepthTarget),e.renderbufferStorage(36161,33189,e.canvas.width,e.canvas.height),e.framebufferRenderbuffer(36160,36096,36161,i.defaultDepthTarget),e.bindRenderbuffer(36161,null);var s=[-1,-1,-1,1,1,-1,1,1],A=e.createBuffer();e.bindBuffer(34962,A),e.bufferData(34962,new Float32Array(s),35044),e.bindBuffer(34962,null),i.blitVB=A;var c="attribute vec2 pos;varying lowp vec2 tex;void main() { tex = pos * 0.5 + vec2(0.5,0.5); gl_Position = vec4(pos, 0.0, 1.0); }",u=e.createShader(35633);e.shaderSource(u,c),e.compileShader(u);var d="varying lowp vec2 tex;uniform sampler2D sampler;void main() { gl_FragColor = texture2D(sampler, tex); }",h=e.createShader(35632);e.shaderSource(h,d),e.compileShader(h);var I=e.createProgram();e.attachShader(I,u),e.attachShader(I,h),e.linkProgram(I),i.blitProgram=I,i.blitPosLoc=e.getAttribLocation(I,"pos"),e.useProgram(I),e.uniform1i(e.getUniformLocation(I,"sampler"),0),e.useProgram(null),i.defaultVao=void 0,e.createVertexArray&&(i.defaultVao=e.createVertexArray(),e.bindVertexArray(i.defaultVao),e.enableVertexAttribArray(i.blitPosLoc),e.bindVertexArray(null))},resizeOffscreenFramebuffer:function(i){var e=i.GLctx;if(i.defaultColorTarget){var t=e.getParameter(32873);e.bindTexture(3553,i.defaultColorTarget),e.texImage2D(3553,0,6408,e.drawingBufferWidth,e.drawingBufferHeight,0,6408,5121,null),e.bindTexture(3553,t)}if(i.defaultDepthTarget){var r=e.getParameter(36007);e.bindRenderbuffer(36161,i.defaultDepthTarget),e.renderbufferStorage(36161,33189,e.drawingBufferWidth,e.drawingBufferHeight),e.bindRenderbuffer(36161,r)}},blitOffscreenFramebuffer:function(i){var e=i.GLctx,t=e.getParameter(3089);t&&e.disable(3089);var r=e.getParameter(36006);if(e.blitFramebuffer&&!i.defaultFboForbidBlitFramebuffer)e.bindFramebuffer(36008,i.defaultFbo),e.bindFramebuffer(36009,null),e.blitFramebuffer(0,0,e.canvas.width,e.canvas.height,0,0,e.canvas.width,e.canvas.height,16384,9728);else{let $=function(){e.vertexAttribPointer(i.blitPosLoc,2,5126,!1,0,0),e.drawArrays(5,0,4)};var N=$;e.bindFramebuffer(36160,null);var o=e.getParameter(35725);e.useProgram(i.blitProgram);var a=e.getParameter(34964);e.bindBuffer(34962,i.blitVB);var s=e.getParameter(34016);e.activeTexture(33984);var A=e.getParameter(32873);e.bindTexture(3553,i.defaultColorTarget);var c=e.getParameter(3042);c&&e.disable(3042);var u=e.getParameter(2884);u&&e.disable(2884);var d=e.getParameter(2929);d&&e.disable(2929);var h=e.getParameter(2960);if(h&&e.disable(2960),i.defaultVao){var I=e.getParameter(34229);e.bindVertexArray(i.defaultVao),$(),e.bindVertexArray(I)}else{for(var m={buffer:e.getVertexAttrib(i.blitPosLoc,34975),size:e.getVertexAttrib(i.blitPosLoc,34339),stride:e.getVertexAttrib(i.blitPosLoc,34340),type:e.getVertexAttrib(i.blitPosLoc,34341),normalized:e.getVertexAttrib(i.blitPosLoc,34922),pointer:e.getVertexAttribOffset(i.blitPosLoc,34373)},y=e.getParameter(34921),v=[],x=0;x=2&&(e.disjointTimerQueryExt=e.getExtension("EXT_disjoint_timer_query_webgl2")),(i.version<2||!e.disjointTimerQueryExt)&&(e.disjointTimerQueryExt=e.getExtension("EXT_disjoint_timer_query")),Ra(e);var t=e.getSupportedExtensions()||[];t.forEach(function(r){!r.includes("lose_context")&&!r.includes("debug")&&e.getExtension(r)})}}},w={inEventHandler:0,removeAllEventListeners:function(){for(var i=w.eventHandlers.length-1;i>=0;--i)w._removeHandler(i);w.eventHandlers=[],w.deferredCalls=[]},registerRemoveEventListeners:function(){w.removeEventListenersRegistered||(xr.push(w.removeAllEventListeners),w.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(i,e,t){function r(s,A){if(s.length!=A.length)return!1;for(var c in s)if(s[c]!=A[c])return!1;return!0}for(var o in w.deferredCalls){var a=w.deferredCalls[o];if(a.targetFunction==i&&r(a.argsList,t))return}w.deferredCalls.push({targetFunction:i,precedence:e,argsList:t}),w.deferredCalls.sort(function(s,A){return s.precedence>2,r=T[t+6],o={alpha:!!T[t+0],depth:!!T[t+1],stencil:!!T[t+2],antialias:!!T[t+3],premultipliedAlpha:!!T[t+4],preserveDrawingBuffer:!!T[t+5],powerPreference:de[r],failIfMajorPerformanceCaveat:!!T[t+7],majorVersion:T[t+8],minorVersion:T[t+9],enableExtensionsByDefault:T[t+10],explicitSwapControl:T[t+11],proxyContextToMainThread:T[t+12],renderViaOffscreenBackBuffer:T[t+13]},a=eo(i);if(!a)return 0;if(a.offscreenCanvas&&(a=a.offscreenCanvas),o.explicitSwapControl){var s=a.transferControlToOffscreen||typeof OffscreenCanvas!="undefined"&&a instanceof OffscreenCanvas;if(s||o.renderViaOffscreenBackBuffer||(o.renderViaOffscreenBackBuffer=!0),a.transferControlToOffscreen){if(!a.controlTransferredOffscreen)O.offscreenCanvases[a.id]={canvas:a.transferControlToOffscreen(),canvasSharedPtr:it(12),id:a.id},a.controlTransferredOffscreen=!0;else if(!O.offscreenCanvases[a.id])return 0;a=O.offscreenCanvases[a.id]}}var A=O.createContext(a,o);return A}function Ma(i,e){return to(i,e)}function Fa(){return O.currentContext?O.currentContext.handle:0}function Do(){return Fa()}n._emscripten_webgl_get_current_context=Do;function ro(i){var e=O.makeContextCurrent(i);return e?0:-5}n._emscripten_webgl_make_context_current=ro;function bo(i){O.currentContext==i&&(O.currentContext=0),O.deleteContext(i)}function ka(i,e){if(!e)return-5;if(i=O.contexts[i],!i)return-3;var t=i.GLctx;if(!t)return-3;t=t.getContextAttributes(),T[e>>2]=t.alpha,T[e+4>>2]=t.depth,T[e+8>>2]=t.stencil,T[e+12>>2]=t.antialias,T[e+16>>2]=t.premultipliedAlpha,T[e+20>>2]=t.preserveDrawingBuffer;var r=t.powerPreference&&de.indexOf(t.powerPreference);return T[e+24>>2]=r,T[e+28>>2]=t.failIfMajorPerformanceCaveat,T[e+32>>2]=i.version,T[e+36>>2]=0,T[e+40>>2]=i.attributes.enableExtensionsByDefault,0}function Na(i){W(i);for(var e=i>>2,t=0;t<14;++t)T[e+t]=0;T[e+0]=T[e+1]=T[e+3]=T[e+4]=T[e+8]=T[e+10]=1}var no={};function io(){return ht||"./this.program"}function Fn(){if(!Fn.strings){var i=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:i,_:io()};for(var t in no)no[t]===void 0?delete e[t]:e[t]=no[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Fn.strings=r}return Fn.strings}function kn(i,e){var t=0;return Fn().forEach(function(r,o){var a=e+t;T[i+o*4>>2]=a,yn(r,a),t+=r.length+1}),0}function Ua(i,e){var t=Fn();T[i>>2]=t.length;var r=0;return t.forEach(function(o){r+=o.length+1}),T[e>>2]=r,0}function xa(i){try{var e=l.getStreamFromFD(i);return f.close(e),0}catch(t){return(typeof f=="undefined"||!(t instanceof f.ErrnoError))&&E(t),t.errno}}function ja(i,e,t,r){try{var o=l.getStreamFromFD(i),a=l.doReadv(o,e,t);return T[r>>2]=a,0}catch(s){return(typeof f=="undefined"||!(s instanceof f.ErrnoError))&&E(s),s.errno}}function La(i,e,t,r,o){try{var a=l.getStreamFromFD(i),s=4294967296,A=t*s+(e>>>0),c=9007199254740992;return A<=-c||A>=c?-61:(f.llseek(a,A,r),ye=[a.position>>>0,(We=a.position,+Math.abs(We)>=1?We>0?(Math.min(+Math.floor(We/4294967296),4294967295)|0)>>>0:~~+Math.ceil((We-+(~~We>>>0))/4294967296)>>>0:0)],T[o>>2]=ye[0],T[o+4>>2]=ye[1],a.getdents&&A===0&&r===0&&(a.getdents=null),0)}catch(u){return(typeof f=="undefined"||!(u instanceof f.ErrnoError))&&E(u),u.errno}}function Ha(i,e,t,r){try{var o=l.getStreamFromFD(i),a=l.doWritev(o,e,t);return T[r>>2]=a,0}catch(s){return(typeof f=="undefined"||!(s instanceof f.ErrnoError))&&E(s),s.errno}}function Ga(){return Cr()}function ci(i,e){ci.randomDevice||(ci.randomDevice=me());for(var t=0;t>0]=ci.randomDevice();return 0}function ui(i){M.activeTexture(i)}function Ya(i,e){M.attachShader(O.programs[i],O.shaders[e])}function Xa(i,e,t){M.bindAttribLocation(O.programs[i],e,at(t))}function Wa(i,e){i==34962?M.currentArrayBufferBinding=e:i==34963&&(M.currentElementArrayBufferBinding=e),i==35051?M.currentPixelPackBufferBinding=e:i==35052&&(M.currentPixelUnpackBufferBinding=e),M.bindBuffer(i,O.buffers[e])}function Va(i,e,t){M.bindBufferBase(i,e,O.buffers[t])}function za(i,e){M.bindFramebuffer(i,e?O.framebuffers[e]:O.currentContext.defaultFbo)}function $a(i,e){M.bindTexture(i,O.textures[e])}function Ka(i){M.bindVertexArray(O.vaos[i]);var e=M.getParameter(34965);M.currentElementArrayBufferBinding=e?e.name|0:0}function Ja(i,e,t,r){O.currentContext.version>=2?t?M.bufferData(i,Se,r,t,e):M.bufferData(i,e,r):M.bufferData(i,t?Se.subarray(t,t+e):e,r)}function Za(i,e){return W(e===(e|0)),(i>>>0)+e*4294967296}function qa(i,e,t,r){return M.clientWaitSync(O.syncs[i],e,Za(t,r))}function es(i){M.compileShader(O.shaders[i])}function ts(){var i=O.getNewId(O.programs),e=M.createProgram();return e.name=i,e.maxUniformLength=e.maxAttributeLength=e.maxUniformBlockNameLength=0,e.uniformIdCounter=1,O.programs[i]=e,i}function rs(i){var e=O.getNewId(O.shaders);return O.shaders[e]=M.createShader(i),e}function ns(i,e){for(var t=0;t>2],o=O.buffers[r];o&&(M.deleteBuffer(o),o.name=0,O.buffers[r]=null,r==M.currentArrayBufferBinding&&(M.currentArrayBufferBinding=0),r==M.currentElementArrayBufferBinding&&(M.currentElementArrayBufferBinding=0),r==M.currentPixelPackBufferBinding&&(M.currentPixelPackBufferBinding=0),r==M.currentPixelUnpackBufferBinding&&(M.currentPixelUnpackBufferBinding=0))}}function is(i,e){for(var t=0;t>2],o=O.framebuffers[r];o&&(M.deleteFramebuffer(o),o.name=0,O.framebuffers[r]=null)}}function os(i){if(i){var e=O.programs[i];if(!e){O.recordError(1281);return}M.deleteProgram(e),e.name=0,O.programs[i]=null}}function as(i){if(i){var e=O.shaders[i];if(!e){O.recordError(1281);return}M.deleteShader(e),O.shaders[i]=null}}function ss(i){if(i){var e=O.syncs[i];if(!e){O.recordError(1281);return}M.deleteSync(e),e.name=0,O.syncs[i]=null}}function As(i,e){for(var t=0;t>2],o=O.textures[r];o&&(M.deleteTexture(o),o.name=0,O.textures[r]=null)}}function cs(i,e){for(var t=0;t>2];M.deleteVertexArray(O.vaos[r]),O.vaos[r]=null}}function us(i){M.disable(i)}function ls(i){var e=O.currentContext.clientBuffers[i];e.enabled=!1,M.disableVertexAttribArray(i)}function ds(i,e,t){O.preDrawHandleClientVertexAttribBindings(e+t),M.drawArrays(i,e,t),O.postDrawHandleClientVertexAttribBindings()}var Oo=[];function Bo(i,e){for(var t=Oo[i],r=0;r>2];M.drawBuffers(t)}function fs(i){var e=O.currentContext.clientBuffers[i];e.enabled=!0,M.enableVertexAttribArray(i)}function gs(i,e){var t=M.fenceSync(i,e);if(t){var r=O.getNewId(O.syncs);return t.name=r,O.syncs[r]=t,r}else return 0}function Es(){M.finish()}function ps(){M.flush()}function _s(i,e,t,r,o){M.framebufferTexture2D(i,e,t,O.textures[r],o)}function hs(i,e,t,r,o){M.framebufferTextureLayer(i,e,O.textures[t],r,o)}function li(i,e,t,r){for(var o=0;o>2]=s}}function di(i,e){li(i,e,"createBuffer",O.buffers)}function Is(i,e){li(i,e,"createFramebuffer",O.framebuffers)}function ms(i,e){li(i,e,"createTexture",O.textures)}function Cs(i,e){li(i,e,"createVertexArray",O.vaos)}function ys(i,e){return M.getAttribLocation(O.programs[i],at(e))}function ws(){var i=M.getError()||O.lastError;return O.lastError=0,i}function Ds(i){return Oe[i>>2]+T[i+4>>2]*4294967296}function bs(i){return Oe[i>>2]+Oe[i+4>>2]*4294967296}function Os(i,e){Oe[i>>2]=e,Oe[i+4>>2]=(e-Oe[i>>2])/4294967296;var t=e>=0?bs(i):Ds(i);t!=e&&Re("writeI53ToI64() out of range: serialized JS Number "+e+" to Wasm heap as bytes lo=0x"+Oe[i>>2].toString(16)+", hi=0x"+Oe[i+4>>2].toString(16)+", which deserializes back to "+t+" instead!")}function Bs(i,e,t){if(!e){O.recordError(1281);return}var r=void 0;switch(i){case 36346:r=1;break;case 36344:t!=0&&t!=1&&O.recordError(1280);return;case 34814:case 36345:r=0;break;case 34466:var o=M.getParameter(34467);r=o?o.length:0;break;case 33309:if(O.currentContext.version<2){O.recordError(1282);return}var a=M.getSupportedExtensions()||[];r=2*a.length;break;case 33307:case 33308:if(O.currentContext.version<2){O.recordError(1280);return}r=i==33307?3:0;break}if(r===void 0){var s=M.getParameter(i);switch(typeof s){case"number":r=s;break;case"boolean":r=s?1:0;break;case"string":O.recordError(1280);return;case"object":if(s===null)switch(i){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{r=0;break}default:{O.recordError(1280);return}}else if(s instanceof Float32Array||s instanceof Uint32Array||s instanceof Int32Array||s instanceof Array){for(var A=0;A>2]=s[A];break;case 2:b[e+A*4>>2]=s[A];break;case 4:xe[e+A>>0]=s[A]?1:0;break}return}else try{r=s.name|0}catch(c){O.recordError(1280),ge("GL_INVALID_ENUM in glGet"+t+"v: Unknown object returned from WebGL getParameter("+i+")! (error: "+c+")");return}break;default:O.recordError(1280),ge("GL_INVALID_ENUM in glGet"+t+"v: Native code calling glGet"+t+"v("+i+") and it returns "+s+" of type "+typeof s+"!");return}}switch(t){case 1:Os(e,r);break;case 0:T[e>>2]=r;break;case 2:b[e>>2]=r;break;case 4:xe[e>>0]=r?1:0;break}}function Ts(i,e){Bs(i,e,0)}function fi(i){var e=Ze(i)+1,t=it(e);return Je(i,t,e),t}function gi(i){var e=O.stringCache[i];if(!e){switch(i){case 7939:var t=M.getSupportedExtensions()||[];t=t.concat(t.map(function(c){return"GL_"+c})),e=fi(t.join(" "));break;case 7936:case 7937:case 37445:case 37446:var r=M.getParameter(i);r||O.recordError(1280),e=r&&fi(r);break;case 7938:var o=M.getParameter(7938);O.currentContext.version>=2?o="OpenGL ES 3.0 ("+o+")":o="OpenGL ES 2.0 ("+o+")",e=fi(o);break;case 35724:var a=M.getParameter(35724),s=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/,A=a.match(s);A!==null&&(A[1].length==3&&(A[1]=A[1]+"0"),a="OpenGL ES GLSL ES "+A[1]+" ("+a+")"),e=fi(a);break;default:O.recordError(1280)}O.stringCache[i]=e}return e}function vs(i,e){return M.getUniformBlockIndex(O.programs[i],at(e))}function Qs(i){return parseInt(i)}function To(i){return i.slice(-1)=="]"&&i.lastIndexOf("[")}function vo(i){var e=i.uniformLocsById,t=i.uniformSizeAndIdsByName,r,o;if(!e)for(i.uniformLocsById=e={},i.uniformArrayNamesById={},r=0;r0?s.slice(0,c):s,d=i.uniformIdCounter;for(i.uniformIdCounter+=A,t[u]=[A,d],o=0;o0&&(r=Qs(e.slice(a+1))>>>0,o=e.slice(0,a));var s=i.uniformSizeAndIdsByName[o];if(s&&r>A,o+d>>A)}function oo(i,e,t,r,o,a,s){if(O.currentContext.version>=2){if(M.currentPixelPackBufferBinding)M.readPixels(i,e,t,r,o,a,s);else{var A=Nn(a);M.readPixels(i,e,t,r,o,a,A,s>>_r(A))}return}var c=Jr(a,o,t,r,s,o);if(!c){O.recordError(1280);return}M.readPixels(i,e,t,r,o,a,c)}function ks(i,e,t,r){var o=O.getSource(i,e,t,r);M.shaderSource(O.shaders[i],o)}function Ns(i,e,t,r,o,a,s,A,c){if(O.currentContext.version>=2){if(M.currentPixelUnpackBufferBinding)M.texImage2D(i,e,t,r,o,a,s,A,c);else if(c){var u=Nn(A);M.texImage2D(i,e,t,r,o,a,s,A,u,c>>_r(u))}else M.texImage2D(i,e,t,r,o,a,s,A,null);return}M.texImage2D(i,e,t,r,o,a,s,A,c?Jr(A,s,r,o,c,t):null)}function Us(i,e,t){var r=b[t>>2];M.texParameterf(i,e,r)}function xs(i,e,t){M.texParameteri(i,e,t)}function js(i,e,t,r,o){M.texStorage2D(i,e,t,r,o)}function Ls(i,e,t,r,o,a){M.texStorage3D(i,e,t,r,o,a)}function Hs(i,e,t,r,o,a,s,A,c){if(O.currentContext.version>=2){if(M.currentPixelUnpackBufferBinding)M.texSubImage2D(i,e,t,r,o,a,s,A,c);else if(c){var u=Nn(A);M.texSubImage2D(i,e,t,r,o,a,s,A,u,c>>_r(u))}else M.texSubImage2D(i,e,t,r,o,a,s,A,null);return}var d=null;c&&(d=Jr(A,s,o,a,c,0)),M.texSubImage2D(i,e,t,r,o,a,s,A,d)}function Gs(i,e,t,r,o,a,s,A,c,u,d){if(M.currentPixelUnpackBufferBinding)M.texSubImage3D(i,e,t,r,o,a,s,A,c,u,d);else if(d){var h=Nn(u);M.texSubImage3D(i,e,t,r,o,a,s,A,c,u,h,d>>_r(h))}else M.texSubImage3D(i,e,t,r,o,a,s,A,c,u,null)}function qt(i){var e=M.currentProgram;if(e){var t=e.uniformLocsById[i];return typeof t=="number"&&(e.uniformLocsById[i]=t=M.getUniformLocation(e,e.uniformArrayNamesById[i]+(t>0?"["+t+"]":""))),t}else O.recordError(1282)}function er(i,e){M.uniform1f(qt(i),e)}function Ys(i,e){M.uniform1i(qt(i),e)}var Ei=[];function pi(i,e,t){if(O.currentContext.version>=2){M.uniform2fv(qt(i),b,t>>2,e*2);return}if(e<=144)for(var r=Ei[2*e-1],o=0;o<2*e;o+=2)r[o]=b[t+4*o>>2],r[o+1]=b[t+(4*o+4)>>2];else var r=b.subarray(t>>2,t+e*8>>2);M.uniform2fv(qt(i),r)}function Xs(i,e,t){if(O.currentContext.version>=2){M.uniform4fv(qt(i),b,t>>2,e*4);return}if(e<=72){var r=Ei[4*e-1],o=b;t>>=2;for(var a=0;a<4*e;a+=4){var s=t+a;r[a]=o[s],r[a+1]=o[s+1],r[a+2]=o[s+2],r[a+3]=o[s+3]}}else var r=b.subarray(t>>2,t+e*16>>2);M.uniform4fv(qt(i),r)}var Qo=[];function Po(i,e,t){if(O.currentContext.version>=2){M.uniform4iv(qt(i),T,t>>2,e*4);return}if(e<=72)for(var r=Qo[4*e-1],o=0;o<4*e;o+=4)r[o]=T[t+4*o>>2],r[o+1]=T[t+(4*o+4)>>2],r[o+2]=T[t+(4*o+8)>>2],r[o+3]=T[t+(4*o+12)>>2];else var r=T.subarray(t>>2,t+e*16>>2);M.uniform4iv(qt(i),r)}function Ws(i,e,t){i=O.programs[i],M.uniformBlockBinding(i,e,t)}function Vs(i,e,t,r){if(O.currentContext.version>=2){M.uniformMatrix4fv(qt(i),!!t,b,r>>2,e*16);return}if(e<=18){var o=Ei[16*e-1],a=b;r>>=2;for(var s=0;s<16*e;s+=16){var A=r+s;o[s]=a[A],o[s+1]=a[A+1],o[s+2]=a[A+2],o[s+3]=a[A+3],o[s+4]=a[A+4],o[s+5]=a[A+5],o[s+6]=a[A+6],o[s+7]=a[A+7],o[s+8]=a[A+8],o[s+9]=a[A+9],o[s+10]=a[A+10],o[s+11]=a[A+11],o[s+12]=a[A+12],o[s+13]=a[A+13],o[s+14]=a[A+14],o[s+15]=a[A+15]}}else var o=b.subarray(r>>2,r+e*64>>2);M.uniformMatrix4fv(qt(i),!!t,o)}function zs(i){i=O.programs[i],M.useProgram(i),M.currentProgram=i}function $s(i,e,t,r,o,a){var s=O.currentContext.clientBuffers[i];if(!M.currentArrayBufferBinding){s.size=e,s.type=t,s.normalized=r,s.stride=o,s.ptr=a,s.clientside=!0,s.vertexAttribPointerAdaptor=function(A,c,u,d,h,I){this.vertexAttribPointer(A,c,u,d,h,I)};return}s.clientside=!1,M.vertexAttribPointer(i,e,t,!!r,o,a)}function Ks(i,e,t,r){M.viewport(i,e,t,r)}function _i(i,e){var t=new Date(T[i>>2]*1e3);T[e>>2]=t.getUTCSeconds(),T[e+4>>2]=t.getUTCMinutes(),T[e+8>>2]=t.getUTCHours(),T[e+12>>2]=t.getUTCDate(),T[e+16>>2]=t.getUTCMonth(),T[e+20>>2]=t.getUTCFullYear()-1900,T[e+24>>2]=t.getUTCDay(),T[e+36>>2]=0,T[e+32>>2]=0;var r=Date.UTC(t.getUTCFullYear(),0,1,0,0,0,0),o=(t.getTime()-r)/(1e3*60*60*24)|0;return T[e+28>>2]=o,_i.GMTString||(_i.GMTString=Cn("GMT")),T[e+40>>2]=_i.GMTString,e}function hi(i){return i}function Ii(){if(Ii.called)return;Ii.called=!0;var i=new Date().getFullYear(),e=new Date(i,0,1),t=new Date(i,6,1),r=e.getTimezoneOffset(),o=t.getTimezoneOffset(),a=Math.max(r,o);T[nA()>>2]=a*60,T[jn()>>2]=+(r!=o);function s(h){var I=h.toTimeString().match(/\(([A-Za-z ]+)\)$/);return I?I[1]:"GMT"}var A=s(e),c=s(t),u=Cn(A),d=Cn(c);o>2]=u,T[rn()+4>>2]=d):(T[rn()>>2]=d,T[rn()+4>>2]=u)}function mi(i,e){Ii();var t=new Date(T[i>>2]*1e3);T[e>>2]=t.getSeconds(),T[e+4>>2]=t.getMinutes(),T[e+8>>2]=t.getHours(),T[e+12>>2]=t.getDate(),T[e+16>>2]=t.getMonth(),T[e+20>>2]=t.getFullYear()-1900,T[e+24>>2]=t.getDay();var r=new Date(t.getFullYear(),0,1),o=(t.getTime()-r.getTime())/(1e3*60*60*24)|0;T[e+28>>2]=o,T[e+36>>2]=-(t.getTimezoneOffset()*60);var a=new Date(t.getFullYear(),6,1).getTimezoneOffset(),s=r.getTimezoneOffset(),A=(a!=s&&t.getTimezoneOffset()==Math.min(s,a))|0;T[e+32>>2]=A;var c=T[rn()+(A?4:0)>>2];return T[e+40>>2]=c,e}function Js(i){Ii();var e=new Date(T[i+20>>2]+1900,T[i+16>>2],T[i+12>>2],T[i+8>>2],T[i+4>>2],T[i>>2],0),t=T[i+32>>2],r=e.getTimezoneOffset(),o=new Date(e.getFullYear(),0,1),a=new Date(e.getFullYear(),6,1).getTimezoneOffset(),s=o.getTimezoneOffset(),A=Math.min(s,a);if(t<0)T[i+32>>2]=+(a!=s&&A==r);else if(t>0!=(A==r)){var c=Math.max(s,a),u=t>0?A:c;e.setTime(e.getTime()+(u-r)*6e4)}T[i+24>>2]=e.getDay();var d=(e.getTime()-o.getTime())/(1e3*60*60*24)|0;return T[i+28>>2]=d,T[i>>2]=e.getSeconds(),T[i+4>>2]=e.getMinutes(),T[i+8>>2]=e.getHours(),T[i+12>>2]=e.getDate(),T[i+16>>2]=e.getMonth(),e.getTime()/1e3|0}function Zs(i){No(i)}function qs(i){mt(i)}function Ci(i){return i%4===0&&(i%100!==0||i%400===0)}function pn(i,e){for(var t=0,r=0;r<=e;t+=i[r++]);return t}var _n=[31,29,31,30,31,30,31,31,30,31,30,31],Zr=[31,28,31,30,31,30,31,31,30,31,30,31];function qr(i,e){for(var t=new Date(i.getTime());e>0;){var r=Ci(t.getFullYear()),o=t.getMonth(),a=(r?_n:Zr)[o];if(e>a-t.getDate())e-=a-t.getDate()+1,t.setDate(1),o<11?t.setMonth(o+1):(t.setMonth(0),t.setFullYear(t.getFullYear()+1));else return t.setDate(t.getDate()+e),t}return t}function Un(i,e,t,r){var o=T[r+40>>2],a={tm_sec:T[r>>2],tm_min:T[r+4>>2],tm_hour:T[r+8>>2],tm_mday:T[r+12>>2],tm_mon:T[r+16>>2],tm_year:T[r+20>>2],tm_wday:T[r+24>>2],tm_yday:T[r+28>>2],tm_isdst:T[r+32>>2],tm_gmtoff:T[r+36>>2],tm_zone:o?at(o):""},s=at(t),A={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var c in A)s=s.replace(new RegExp(c,"g"),A[c]);var u=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],d=["January","February","March","April","May","June","July","August","September","October","November","December"];function h(R,D,N){for(var $=typeof R=="number"?R.toString():R||"";$.length0?1:0}var $;return($=N(R.getFullYear()-D.getFullYear()))===0&&($=N(R.getMonth()-D.getMonth()))===0&&($=N(R.getDate()-D.getDate())),$}function y(R){switch(R.getDay()){case 0:return new Date(R.getFullYear()-1,11,29);case 1:return R;case 2:return new Date(R.getFullYear(),0,3);case 3:return new Date(R.getFullYear(),0,2);case 4:return new Date(R.getFullYear(),0,1);case 5:return new Date(R.getFullYear()-1,11,31);case 6:return new Date(R.getFullYear()-1,11,30)}}function v(R){var D=qr(new Date(R.tm_year+1900,0,1),R.tm_yday),N=new Date(D.getFullYear(),0,4),$=new Date(D.getFullYear()+1,0,4),Y=y(N),_e=y($);return m(Y,D)<=0?m(_e,D)<=0?D.getFullYear()+1:D.getFullYear():D.getFullYear()-1}var x={"%a":function(R){return u[R.tm_wday].substring(0,3)},"%A":function(R){return u[R.tm_wday]},"%b":function(R){return d[R.tm_mon].substring(0,3)},"%B":function(R){return d[R.tm_mon]},"%C":function(R){var D=R.tm_year+1900;return I(D/100|0,2)},"%d":function(R){return I(R.tm_mday,2)},"%e":function(R){return h(R.tm_mday,2," ")},"%g":function(R){return v(R).toString().substring(2)},"%G":function(R){return v(R)},"%H":function(R){return I(R.tm_hour,2)},"%I":function(R){var D=R.tm_hour;return D==0?D=12:D>12&&(D-=12),I(D,2)},"%j":function(R){return I(R.tm_mday+pn(Ci(R.tm_year+1900)?_n:Zr,R.tm_mon-1),3)},"%m":function(R){return I(R.tm_mon+1,2)},"%M":function(R){return I(R.tm_min,2)},"%n":function(){return` `},"%p":function(R){return R.tm_hour>=0&&R.tm_hour<12?"AM":"PM"},"%S":function(R){return I(R.tm_sec,2)},"%t":function(){return" "},"%u":function(R){return R.tm_wday||7},"%U":function(R){var D=new Date(R.tm_year+1900,0,1),N=D.getDay()===0?D:qr(D,7-D.getDay()),$=new Date(R.tm_year+1900,R.tm_mon,R.tm_mday);if(m(N,$)<0){var Y=pn(Ci($.getFullYear())?_n:Zr,$.getMonth()-1)-31,_e=31-N.getDate(),Fe=_e+Y+$.getDate();return I(Math.ceil(Fe/7),2)}return m(N,D)===0?"01":"00"},"%V":function(R){var D=new Date(R.tm_year+1900,0,4),N=new Date(R.tm_year+1901,0,4),$=y(D),Y=y(N),_e=qr(new Date(R.tm_year+1900,0,1),R.tm_yday);if(m(_e,$)<0)return"53";if(m(Y,_e)<=0)return"01";var Fe;return $.getFullYear()=0;return D=Math.abs(D)/60,D=D/60*100+D%60,(N?"+":"-")+("0000"+D).slice(-4)},"%Z":function(R){return R.tm_zone},"%%":function(){return"%"}};for(var c in x)s.includes(c)&&(s=s.replace(new RegExp(c,"g"),x[c](a)));var G=ao(s,!1);return G.length>e?0:(Fr(G,i),G.length-1)}function Ro(i,e,t,r){return Un(i,e,t,r)}n.requestFullscreen=function(e,t){Q.requestFullscreen(e,t)},n.requestFullScreen=function(){Q.requestFullScreen()},n.requestAnimationFrame=function(e){Q.requestAnimationFrame(e)},n.setCanvasSize=function(e,t,r){Q.setCanvasSize(e,t,r)},n.pauseMainLoop=function(){Q.mainLoop.pause()},n.resumeMainLoop=function(){Q.mainLoop.resume()},n.getUserMedia=function(){Q.getUserMedia()},n.createContext=function(e,t,r,o){return Q.createContext(e,t,r,o)};var So=function(i,e,t,r){i||(i=this),this.parent=i,this.mount=i.mount,this.mounted=null,this.id=f.nextInode++,this.name=e,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=r},xn=365,en=146;Object.defineProperties(So.prototype,{read:{get:function(){return(this.mode&xn)===xn},set:function(i){i?this.mode|=xn:this.mode&=~xn}},write:{get:function(){return(this.mode&en)===en},set:function(i){i?this.mode|=en:this.mode&=~en}},isFolder:{get:function(){return f.isDir(this.mode)}},isDevice:{get:function(){return f.isChrdev(this.mode)}}}),f.FSNode=So,f.staticInit(),n.FS_createPath=f.createPath,n.FS_createDataFile=f.createDataFile,n.FS_createPreloadedFile=f.createPreloadedFile,n.FS_createLazyFile=f.createLazyFile,n.FS_createDevice=f.createDevice,n.FS_unlink=f.unlink,$i(),Gr=n.PureVirtualError=cr(Error,"PureVirtualError"),qn(),Ji(),nt=n.BindingError=cr(Error,"BindingError"),B=n.InternalError=cr(Error,"InternalError"),fr(),Wo(),ut=n.UnboundTypeError=cr(Error,"UnboundTypeError");for(var M,S=0;S<32;++S)Oo.push(new Array(S));for(var Dt=new Float32Array(288),S=0;S<288;++S)Ei[S]=Dt.subarray(0,S+1);for(var eA=new Int32Array(288),S=0;S<288;++S)Qo[S]=eA.subarray(0,S+1);var Ac=!0;function ao(i,e,t){var r=t>0?t:Ze(i)+1,o=new Array(r),a=Rt(i,o,0,o.length);return e&&(o.length=a),o}var yi=typeof atob=="function"?atob:function(i){var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="",r,o,a,s,A,c,u,d=0;i=i.replace(/[^A-Za-z0-9\+\/\=]/g,"");do s=e.indexOf(i.charAt(d++)),A=e.indexOf(i.charAt(d++)),c=e.indexOf(i.charAt(d++)),u=e.indexOf(i.charAt(d++)),r=s<<2|A>>4,o=(A&15)<<4|c>>2,a=(c&3)<<6|u,t=t+String.fromCharCode(r),c!==64&&(t=t+String.fromCharCode(o)),u!==64&&(t=t+String.fromCharCode(a));while(d0||(Ao(),Qi(),Xt>0))return;function e(){wi||(wi=!0,n.calledRun=!0,!Lt&&(Ct(),Ee(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),W(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),Pi()))}n.setStatus?(n.setStatus("Running..."),setTimeout(function(){setTimeout(function(){n.setStatus("")},1),e()},1)):e(),V()}n.run=co;function uo(){var i=Ke,e=ge,t=!1;Ke=ge=function(o){t=!0};try{var r=n._fflush;r&&r(0),["stdout","stderr"].forEach(function(o){var a=f.analyzePath("/dev/"+o);if(a){var s=a.object,A=s.rdev,c=Pe.ttys[A];c&&c.output&&c.output.length&&(t=!0)}})}catch(o){}Ke=i,ge=e,t&&Re("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")}function rc(i,e){if(Pt=i,uo(),Ot()){if(!e){var t="program exited (with status: "+i+"), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)";k(t),ge(t)}}else Yt();No(i)}function No(i){Pt=i,Ot()||(n.onExit&&n.onExit(i),Lt=!0),$e(i,new hn(i))}if(n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return co(),U.ready}}(),bc=Ou;var Bu=(()=>{var U;var K=typeof document!="undefined"?(U=document.currentScript)==null?void 0:U.src:void 0;return function(n={}){var Ee,k=Object.assign({},n),Ue,we,ot=new Promise((_,g)=>{Ue=_,we=g}),ht=!0,$e=!1,Ye=Object.assign({},k),Ve=[],It="./this.program",bi=(_,g)=>{throw g},Te="",Oi,Rr,tr;(ht||$e)&&($e?Te=self.location.href:typeof document!="undefined"&&document.currentScript&&(Te=document.currentScript.src),K&&(Te=K),Te.startsWith("blob:")?Te="":Te=Te.substr(0,Te.replace(/[?#].*/,"").lastIndexOf("/")+1),Oi=_=>{var g=new XMLHttpRequest;return g.open("GET",_,!1),g.send(null),g.responseText},$e&&(tr=_=>{var g=new XMLHttpRequest;return g.open("GET",_,!1),g.responseType="arraybuffer",g.send(null),new Uint8Array(g.response)}),Rr=(_,g,C)=>{var B=new XMLHttpRequest;B.open("GET",_,!0),B.responseType="arraybuffer",B.onload=()=>{if(B.status==200||B.status==0&&B.response){g(B.response);return}C()},B.onerror=C,B.send(null)});var nn=k.print||console.log.bind(console),In=k.printErr||console.error.bind(console);Object.assign(k,Ye),Ye=null,k.arguments&&(Ve=k.arguments),k.thisProgram&&(It=k.thisProgram),k.quit&&(bi=k.quit);var Ke;k.wasmBinary&&(Ke=k.wasmBinary);function ge(_){for(var g=atob(_),C=new Uint8Array(g.length),B=0;B_.startsWith(Yn);function Cn(){var _="data:application/octet-stream;base64,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BSQAAkAgAiADTA0AIARBgMAEcQ0AIAUgASACIANrIgNBgAIgA0GAAkkiARsQIxogAUUEQANAIAAgBUGAAhAcIANBgAJrIgNB/wFLDQALCyAAIAUgAxAcCyAFQYACaiQAC+UDAQV/IwBBEGsiAyQAIAMgACgCACIEQQhrKAIAIgI2AgwgAyAAIAJqNgIEIAMgBEEEaygCADYCCCADKAIIIgQgAUEAEB0hAiADKAIEIQUCQCACBEAgAygCDCEAIwBBQGoiASQAIAFBQGskAEEAIAUgABshAgwBCyMAQUBqIgIkACAAIAVOBEAgAkIANwIcIAJCADcCJCACQgA3AiwgAkIANwIUIAJBADYCECACIAE2AgwgAiAENgIEIAJBADYCPCACQoGAgICAgICAATcCNCACIAA2AgggBCACQQRqIAUgBUEBQQAgBCgCACgCFBEJACAAQQAgAigCHBshBgsgAkFAayQAIAYiAg0AIwBBQGoiAiQAIAJBADYCECACQezIADYCDCACIAA2AgggAiABNgIEQQAhACACQRRqQQBBJxAjGiACQQA2AjwgAkEBOgA7IAQgAkEEaiAFQQFBACAEKAIAKAIYEQgAAkACQAJAIAIoAigOAgABAgsgAigCGEEAIAIoAiRBAUYbQQAgAigCIEEBRhtBACACKAIsQQFGGyEADAELIAIoAhxBAUcEQCACKAIsDQEgAigCIEEBRw0BIAIoAiRBAUcNAQsgAigCFCEACyACQUBrJAAgACECCyADQRBqJAAgAgu0AQEFfyMAQRBrIgYkACAGQQRqIgIQQSMAQRBrIgUkAAJ/IAItAAtBB3YEQCACKAIEDAELIAItAAtB/wBxCyEEA0ACQAJ/IAItAAtBB3YEQCACKAIADAELIAILIQMgBSABOQMAIAICfyADIARBAWogBRBHIgNBAE4EQCADIARNDQIgAwwBCyAEQQF0QQFyCyIEECwMAQsLIAIgAxAsIAAgAhBAIAVBEGokACACEEQgBkEQaiQAC4AEAQN/IAJBgARPBEAgACABIAIQESAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsLACABIAIgABBFGgvyAgICfwF+AkAgAkUNACAAIAE6AAAgACACaiIDQQFrIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0EDayABOgAAIANBAmsgAToAACACQQdJDQAgACABOgADIANBBGsgAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAsSACABQQF0QYDHAGpBAiAAEEULBQAQaQALiAECAX4FfwJAIABCgICAgBBUBEAgACECDAELA0AgAUEBayIBIAAgAEIKgCICQgp+fadBMHI6AAAgAEL/////nwFWIQYgAiEAIAYNAAsLIAJCAFIEQCACpyEDA0AgAUEBayIBIAMgA0EKbiIEQQps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IAAoAghBgICAgHhyNgIIIARBEGokAAwBCxAlAAsgACABNgIECyABAn8gAC0AC0EHdgRAIAAoAgAMAQsgAAsiAmogBRBDIAAgASAFaiIAEDAgBkEAOgAPIAAgAmogBi0ADzoAAAsgBkEQaiQADwsCfyAALQALQQd2BEAgACgCAAwBCyAACyEEIwBBEGsiAiQAAn8gAC0AC0EHdgRAIAAoAgQMAQsgAC0ACwsaIAAgARAwIAJBADoADyABIARqIAItAA86AAAgAkEQaiQACz0BAX8jAEEQayICJAAgAkEAOgAPA0AgAQRAIAAgAi0ADzoAACABQQFrIQEgAEEBaiEADAELCyACQRBqJAALGgAgAC0AC0EHdgRAIAAoAggaIAAoAgAQGAsL5gEBBX8jAEEQayIFJAAjAEEgayIDJAAjAEEQayIEJAAgBCAANgIMIAQgACABajYCCCADIAQoAgw2AhggAyAEKAIINgIcIARBEGokACADKAIYIQQgAygCHCEGIwBBEGsiASQAIAEgBjYCDCACIAQgBiAEayIEEDUgASACIARqNgIIIAMgASgCDDYCECADIAEoAgg2AhQgAUEQaiQAIAMgACADKAIQIABrajYCDCADIAIgAygCFCACa2o2AgggBSADKAIMNgIIIAUgAygCCDYCDCADQSBqJAAgBSgCDCEHIAVBEGokACAHC/MCAQV/IwBBEGsiByQAIAIgAUF/c0H3////B2pNBEACfyAALQALQQd2BEAgACgCAAwBCyAACyEIIAdBBGoiCSABQfP///8DSQR/IAcgAUEBdDYCDCAHIAEgAmo2AgQjAEEQayICJAAgCSgCACAHQQxqIgooAgBJIQsgAkEQaiQAIAogCSALGygCACICQQtPBH8gAkEIakF4cSICIAJBAWsiAiACQQtGGwVBCgtBAWoFQff///8HCxAvIAcoAgQhAiAHKAIIGiAEBEAgAiAIIAQQIgsgBQRAIAIgBGogBiAFECILIAMgBGshBiADIARHBEAgAiAEaiAFaiAEIAhqIAYQIgsgAUEKRwRAIAgQGAsgACACNgIAIAAgACgCCEGAgICAeHEgBygCCEH/////B3FyNgIIIAAgACgCCEGAgICAeHI2AgggACAEIAVqIAZqIgA2AgQgB0EAOgAMIAAgAmogBy0ADDoAACAHQRBqJAAPCxAlAAvHAwEFfyMAQRBrIgUkACAFIAI2AgwjAEGgAWsiAyQAIAMgACADQZ4BaiABGyIENgKUASADIAFBAWsiAEEAIAAgAU0bNgKYASADQQBBkAEQIyIAQX82AkwgAEEbNgIkIABBfzYCUCAAIABBnwFqNgIsIAAgAEGUAWo2AlQgBEEAOgAAQQAhAyMAQdABayIBJAAgASACNgLMASABQaABaiICQQBBKBAjGiABIAEoAswBNgLIAQJAQQAgAUHIAWogAUHQAGogAhBMQQBIBEBBfyECDAELIAAoAkxBAEghByAAIAAoAgAiBkFfcTYCAAJ/AkACQCAAKAIwRQRAIABB0AA2AjAgAEEANgIcIABCADcDECAAKAIsIQMgACABNgIsDAELIAAoAhANAQtBfyAAEE8NARoLIAAgAUHIAWogAUHQAGogAUGgAWoQTAshAiADBEAgAEEAQQAgACgCJBEDABogAEEANgIwIAAgAzYCLCAAQQA2AhwgACgCFCEDIABCADcDECACQX8gAxshAgsgACAAKAIAIgMgBkEgcXI2AgBBfyACIANBIHEbIQIgBw0ACyABQdABaiQAIABBoAFqJAAgBUEQaiQAIAILngUCBn4EfyABIAEoAgBBB2pBeHEiAUEQajYCACAAIQsgASkDACEDIAEpAwghByMAQSBrIggkACAHQv///////z+DIQQCfiAHQjCIQv//AYMiBaciCkGB+ABrQf0PTQRAIARCBIYgA0I8iIQhAiAKQYD4AGutIQUCQCADQv//////////D4MiA0KBgICAgICAgAhaBEAgAkIBfCECDAELIANCgICAgICAgIAIUg0AIAJCAYMgAnwhAgtCACACIAJC/////////wdWIgAbIQIgAK0gBXwMAQsCQCADIASEUA0AIAVC//8BUg0AIARCBIYgA0I8iIRCgICAgICAgASEIQJC/w8MAQtC/w8gCkH+hwFLDQAaQgBBgPgAQYH4ACAFUCIBGyIAIAprIglB8ABKDQAaIAMhAiAEIARCgICAgICAwACEIAEbIgYhBAJAQYABIAlrIgFBwABxBEAgAyABQUBqrYYhBEIAIQIMAQsgAUUNACAEIAGtIgWGIAJBwAAgAWutiIQhBCACIAWGIQILIAggAjcDECAIIAQ3AxgCQCAJQcAAcQRAIAYgCUFAaq2IIQNCACEGDAELIAlF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AgQgAEHM0AA2AgAgAkEQaiQAC2ACAX8BfCMAQRBrIgIkACACQQA2AgwgASgCBEGszAAgAkEMahAJIQMgAigCDCIBBEAgARABCyAAAn8gA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLNgI8IAJBEGokAAs3AQF/IwBBEGsiAiQAIAIgASgCPDYCCCAAQazMACACQQhqEAg2AgQgAEHM0AA2AgAgAkEQaiQACwvGRhAAQYAIC5Qic2V0QmVhdXR5AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAdW5zaWduZWQgc2hvcnQAdW5zaWduZWQgaW50AGluaXQAZmxvYXQAdWludDY0X3QAYmx1clJhZGl1cwB2ZWN0b3IAbWlycm9yAGF0dGFjaFNoYWRlcgBkZWxldGVTaGFkZXIAY3JlYXRlU2hhZGVyAGNvbXBpbGVTaGFkZXIAdW5zaWduZWQgY2hhcgBzdGQ6OmV4Y2VwdGlvbgBuYW4AbGlua1Byb2dyYW0AZGVsZXRlUHJvZ3JhbQBjcmVhdGVQcm9ncmFtAGJvb2wAc2V0V2F0ZXJNYXJrAHN0b3BXYXRlck1hcmsAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlZgBjbG9zZQBkb3VibGUAdmJNb2RlAHNoYWRlclNvdXJjZQB2b2lkAHNhbXBsZUNvbG9yICs9IHRleHR1cmUoZnJhbWUsIGJsdXJDb29yZGluYXRlc1sATkFOAElORgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgc2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgaW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxmbG9hdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MTZfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDY0X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgB2ZWMyIGMgPSB2X3RleENvb3JkOwB2ZWMyIGMgPSB2ZWMyKDEuMCAtIHZfdGV4Q29vcmQueCwgdl90ZXhDb29yZC55KTsAQWxsSW4xAC4ALjAsAC4wKSpvKSoAKG51bGwpACkqby55KTsgICAgdmVjMiBjb29yZDIgPSB2ZWMyKGZsb2F0KAAgICAgYyA9IHZlYzIodl90ZXhDb29yZC54LCAxLjAgLSB2X3RleENvb3JkLnkpOyAgICB2ZWMyIGNvb3JkMSA9IHZlYzIoZmxvYXQoACksIChjLnkgLWNvb3JkMS55KSAvIG8ueSAvIGZsb2F0KAApKm8ueSk7ICAgIGlmIChjLnggPiBjb29yZDEueCAmJiBjLnggPCBjb29yZDIueCAmJiBjLnkgPiBjb29yZDEueSAmJiBjLnkgPCBjb29yZDIueSkgeyAgICAgIHZlYzQgd2F0ZXJDb2xvciA9IHRleHR1cmUod2F0ZXJNYXJrLCB2ZWMyKChjLnggLSBjb29yZDEueCkgIC8gby54IC8gZmxvYXQoACkgKiBvLngsIGZsb2F0KAApOyAgICAgdmVjMyBzbW9vdGhDb2xvciA9IG91dENvbG9yLnJnYiArIChvdXRDb2xvci5yZ2ItdmVjMyhoaWdoUGFzcykpKmFscGhhKjAuMTsgICAgIHNtb290aENvbG9yID0gY2xhbXAocG93KHNtb290aENvbG9yLCB2ZWMzKAApOyAgICBuZXdDb2xvci5yZ2IgPSB2ZWMzKG5ld0NvbG9yLnJnYiArIHZlYzMoAGcrPUcoYyx2ZWMyKAAgICAgdmVjMiBvZmZzZXQgPSB2ZWMyKABdID0gdl90ZXhDb29yZC54eSArIG9mZnNldCAqIHZlYzIoADsgACkpLCB2ZWMzKDAuMCksIHZlYzMoMS4wKSk7ICAgIHZlYzMgc2NyZWVuID0gdmVjMygxLjApIC0gKHZlYzMoMS4wKS1zbW9vdGhDb2xvcikgKiAodmVjMygxLjApLW91dENvbG9yLnJnYik7ICAgICB2ZWMzIGxpZ2h0ZW4gPSBtYXgoc21vb3RoQ29sb3IsIG91dENvbG9yLnJnYik7ICAgICB2ZWMzIHNvZnRMaWdodCA9IDIuMCAqIG91dENvbG9yLnJnYipzbW9vdGhDb2xvciArIG91dENvbG9yLnJnYipvdXRDb2xvci5yZ2IgLSAyLjAgKiBvdXRDb2xvci5yZ2Iqb3V0Q29sb3IucmdiICogc21vb3RoQ29sb3I7ICAgICB2ZWM0IG5ld0NvbG9yID0gb3V0Q29sb3I7ICAgICBuZXdDb2xvci5yZ2IgPSBtaXgobWl4KG1peChuZXdDb2xvci5yZ2IsIHNjcmVlbiwgYWxwaGEpLCBsaWdodGVuLCBhbHBoYSksIHNvZnRMaWdodCwgACk7ICAgIGNvbnN0IG1hdDMgc2F0dXJhdGVNYXRyaXggPSBtYXQzKDEuMTEwMiwtMC4wNTk4LC0wLjA2MSwtMC4wNzc0LDEuMDgyNiwtMC4xMTg2LC0wLjAyMjgsLTAuMDIyOCwxLjE3NzIpOyAgICB2ZWMzIHNhdENvbG9yID0gbmV3Q29sb3IucmdiICogc2F0dXJhdGVNYXRyaXg7ICAgIG5ld0NvbG9yLnJnYiA9IG1peChuZXdDb2xvci5yZ2IsIHNhdENvbG9yLCAAICAgIHNhbXBsZUNvbG9yID0gc2FtcGxlQ29sb3IgLyA2Mi4wOyAgICAgZmxvYXQgaGlnaFBhc3MgPSBvdXRDb2xvci5nIC0gc2FtcGxlQ29sb3IgKyAwLjU7ICAgICBmb3IoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7ICAgICAgIGlmIChoaWdoUGFzcyA8PSAwLjUpIHsgICAgICAgICBoaWdoUGFzcyA9IGhpZ2hQYXNzICogaGlnaFBhc3MgKiAyLjA7ICAgICAgIH0gZWxzZSB7ICAgICAgICAgaGlnaFBhc3MgPSAxLjAgLSAoKDEuMCAtIGhpZ2hQYXNzKSooMS4wIC0gaGlnaFBhc3MpICogMi4wKTsgICAgICAgfSAgICAgfSAgICAgY29uc3QgaGlnaHAgdmVjMyBXID0gdmVjMygwLjI5OSwwLjU4NywwLjExNCk7ICAgIGZsb2F0IGx1bWluYW5jZSA9IGRvdChvdXRDb2xvci5yZ2IsIFcpOyAgICAgZmxvYXQgYWxwaGEgPSBwb3cobHVtaW5hbmNlLCAAXSkuZyAqIAApKTsgICAgb3V0Q29sb3IgPSBtaXgob3V0Q29sb3IsIG5ld0NvbG9yLCAxLjApOyAgIAApKSk7ICAgICAgb3V0Q29sb3IgPSBtaXgob3V0Q29sb3Isd2F0ZXJDb2xvciwgIHdhdGVyQ29sb3IuYSk7ICAgIH0gICAgACk7ICAgIHZlYzIgYmx1ckNvb3JkaW5hdGVzWzI0XTsgICAgACAgICBmbG9hdCBzYW1wbGVDb2xvciA9IG91dENvbG9yLmcgKiAyMi4wOyAgICAgACN2ZXJzaW9uIDMwMCBlcwogICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwogICAgdW5pZm9ybSBzYW1wbGVyMkQgZnJhbWU7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBtYXNrOwogICAgdW5pZm9ybSBzYW1wbGVyMkQgYmc7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCB3YXRlck1hcms7CiAgICB1bmlmb3JtIHNhbXBsZXIyRCBsYXN0TWFzazsKICAgIGluIHZlYzIgdl90ZXhDb29yZDsKICAgIG91dCB2ZWM0IG91dENvbG9yOwogICAgdmVjNCBHKHZlYzIgYyx2ZWMyIHMpewogICAgICByZXR1cm4gdGV4dHVyZShmcmFtZSx0ZXh0dXJlKG1hc2ssYytzKS5hPjAuMz9jOmMrcyk7CiAgICB9CiAgICB2b2lkIG1haW4oKSB7CiAgICAgIAAKICAgIHZlYzQgZyA9IHZlYzQoMC4wKTsKICAgIAAKICAgICAgYy55ID0gMS4wIC0gYy55OwogICAgICB2ZWM0IHNyY19jb2xvciA9IHRleHR1cmUoZnJhbWUsIGMpOwogICAgICBmbG9hdCBhID0gdGV4dHVyZShtYXNrLCBjKS5hOwogICAgICBhID0gYTwwLjU/Mi4wKmEqYToxLjAtMi4wKigxLjAtYSkqKDEuMC1hKTsKICAgICAgLy8gZmxvYXQgYTIgPSB0ZXh0dXJlKGxhc3RNYXNrLCBjKS5hOwogICAgICAvLyBhMiA9IGEyPDAuNT8yLjAqYTIqYTI6MS4wLTIuMCooMS4wLWEyKSooMS4wLWEyKTsKICAgICAgLy8gZmxvYXQgZGVsdGEgPSBhIC0gYTI7CiAgICAgIC8vIGlmIChkZWx0YSA8IDAuMjUgJiYgZGVsdGEgPiAtMC4yNSkKICAgICAgLy8gewogICAgICAvLyAgICAgYSA9IGEgKyAwLjUqZGVsdGE7CiAgICAgIC8vIH0KICAgICAgCiAgICAgIHZlYzIgbyA9IDEuMCAvIHZlYzIodGV4dHVyZVNpemUoZnJhbWUsIDApKTsKICAgIAAKICAgICAgb3V0Q29sb3IgPSBnOwogIAAjdmVyc2lvbiAzMDAgZXMKaW4gdmVjMiBhX3Bvc2l0aW9uOwppbiB2ZWMyIGFfdGV4Q29vcmQ7Cm91dCB2ZWMyIHZfdGV4Q29vcmQ7CnZvaWQgbWFpbigpIHsKICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54LCBhX3Bvc2l0aW9uLnksIDAsIDEpOwogIHZfdGV4Q29vcmQgPSBhX3RleENvb3JkOwp9CgBvdXRDb2xvciA9IHNyY19jb2xvcjsKAG91dENvbG9yID0gbWl4KHRleHR1cmUoYmcsIGMpLHNyY19jb2xvcixhKTsKAG91dENvbG9yID0gbWl4KHZlYzQoMC4wLDEuMCwwLjAsMS4wKSxzcmNfY29sb3IsYSk7CgA2QWxsSW4xAJAmAABwFAAAUDZBbGxJbjEAAAAAFCcAAIAUAAAAAAAAeBQAAFBLNkFsbEluMQAAABQnAACcFAAAAQAAAHgUAABwcAB2AHZwAIwUAADcFAAATjEwZW1zY3JpcHRlbjN2YWxFAACQJgAAyBQAAHBwcAB2cHBwAAAAAMwlAACMFAAAgCYAAIAmAACAJgAAgCYAAIAmAAB2cHBkZGRkZABBoCoLyAjMJQAAjBQAAIAmAACAJgAAgCYAAIAmAAB2cHBkZGRkAMwlAACMFAAAdnBwAMwlAADcFAAA3BQAAIwUAADcFAAALCYAAMwlAADcFAAAsBUAAE5TdDNfXzIxMmJhc2ljX3N0cmluZ0ljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFAACQJgAAcBUAANwUAADMJQAA3BQAANwUAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAkCYAAMgVAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAkCYAABAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAJAmAABYFgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACQJgAApBYAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAkCYAAPAWAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAJAmAAAYFwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACQJgAAQBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAkCYAAGgXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAJAmAACQFwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACQJgAAuBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAkCYAAOAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAJAmAAAIGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACQJgAAMBgAAE4xMGVtc2NyaXB0ZW4x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";return _}var Fr;function yn(_){if(_==Fr&&Ke)return new Uint8Array(Ke);var g=Re(_);if(g)return g;if(tr)return tr(_);throw"both async and sync fetching of the wasm failed"}function Xn(_){return Promise.resolve().then(()=>yn(_))}function kr(_,g,C){return Xn(_).then(B=>WebAssembly.instantiate(B,g)).then(C,B=>{In(`failed to asynchronously prepare wasm: ${B}`),mn(B)})}function xe(_,g,C,B){return kr(g,C,B)}function Se(){return{a:ln}}function be(){var _=Se();function g(B,F){return gt=B.exports,pe=gt.y,Lt(),Br=gt.B,Rt(gt.z),Ti("wasm-instantiate"),gt}Gn("wasm-instantiate");function C(B){g(B.instance)}if(k.instantiateWasm)try{return k.instantiateWasm(_,g)}catch(B){In(`Module.instantiateWasm callback failed with error: ${B}`),we(B)}return Fr||(Fr=Cn()),xe(Ke,Fr,_,C).catch(we),{}}var ve=_=>{for(;_.length>0;)_.shift()(k)},T=k.noExitRuntime||!0;class Oe{constructor(g){this.excPtr=g,this.ptr=g-24}set_type(g){Ie[this.ptr+4>>2]=g}get_type(){return Ie[this.ptr+4>>2]}set_destructor(g){Ie[this.ptr+8>>2]=g}get_destructor(){return Ie[this.ptr+8>>2]}set_caught(g){g=g?1:0,xt[this.ptr+12]=g}get_caught(){return xt[this.ptr+12]!=0}set_rethrown(g){g=g?1:0,xt[this.ptr+13]=g}get_rethrown(){return xt[this.ptr+13]!=0}init(g,C){this.set_adjusted_ptr(0),this.set_type(g),this.set_destructor(C)}set_adjusted_ptr(g){Ie[this.ptr+16>>2]=g}get_adjusted_ptr(){return Ie[this.ptr+16>>2]}get_exception_ptr(){var g=Jt(this.get_type());if(g)return Ie[this.excPtr>>2];var C=this.get_adjusted_ptr();return C!==0?C:this.excPtr}}var b=0,Qe=0,ze=(_,g,C)=>{var B=new Oe(_);throw B.init(g,C),b=_,Qe++,b},Nr=()=>{mn("")},on=(_,g,C,B,F)=>{},J=()=>{for(var _=new Array(256),g=0;g<256;++g)_[g]=String.fromCharCode(g);Ur=_},Ur,V=_=>{for(var g="",C=_;Xe[C];)g+=Ur[Xe[C++]];return g},Ht={},st={},xr={},Gt,le=_=>{throw new Gt(_)},an,yr=_=>{throw new an(_)},Ot=(_,g,C)=>{_.forEach(function(L){xr[L]=g});function B(L){var q=C(L);q.length!==_.length&&yr("Mismatched type converter count");for(var ee=0;ee<_.length;++ee)Ct(_[ee],q[ee])}var F=new Array(g.length),H=[],X=0;g.forEach((L,q)=>{st.hasOwnProperty(L)?F[q]=st[L]:(H.push(L),Ht.hasOwnProperty(L)||(Ht[L]=[]),Ht[L].push(()=>{F[q]=st[L],++X,X===H.length&&B(F)}))}),H.length===0&&B(F)};function Qi(_,g,C={}){var B=g.name;if(_||le(`type "${B}" must have a positive integer typeid pointer`),st.hasOwnProperty(_)){if(C.ignoreDuplicateRegistrations)return;le(`Cannot register type '${B}' twice`)}if(st[_]=g,delete xr[_],Ht.hasOwnProperty(_)){var F=Ht[_];delete Ht[_],F.forEach(H=>H())}}function Ct(_,g,C={}){if(!("argPackAdvance"in g))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Qi(_,g,C)}var Yt=8,Pi=(_,g,C,B)=>{g=V(g),Ct(_,{name:g,fromWireType:function(F){return!!F},toWireType:function(F,H){return H?C:B},argPackAdvance:Yt,readValueFromPointer:function(F){return this.fromWireType(Xe[F])},destructorFunction:null})},Ri=_=>({count:_.count,deleteScheduled:_.deleteScheduled,preservePointerOnDelete:_.preservePointerOnDelete,ptr:_.ptr,ptrType:_.ptrType,smartPtr:_.smartPtr,smartPtrType:_.smartPtrType}),wn=_=>{function g(C){return C.$$.ptrType.registeredClass.name}le(g(_)+" instance already deleted")},Dn=!1,Xt=_=>{},nr=_=>{_.smartPtr?_.smartPtrType.rawDestructor(_.smartPtr):_.ptrType.registeredClass.rawDestructor(_.ptr)},lt=_=>{_.count.value-=1;var g=_.count.value===0;g&&nr(_)},At=(_,g,C)=>{if(g===C)return _;if(C.baseClass===void 0)return null;var B=At(_,g,C.baseClass);return B===null?null:C.downcast(B)},ir={},St=()=>Object.keys(He).length,wr=()=>{var _=[];for(var g in He)He.hasOwnProperty(g)&&_.push(He[g]);return _},E=[],or=()=>{for(;E.length;){var _=E.pop();_.$$.deleteScheduled=!1,_.delete()}},p,bn=_=>{p=_,E.length&&p&&p(or)},ue=()=>{k.getInheritedInstanceCount=St,k.getLiveInheritedInstances=wr,k.flushPendingDeletes=or,k.setDelayFunction=bn},He={},ce=(_,g)=>{for(g===void 0&&le("ptr should not be undefined");_.baseClass;)g=_.upcast(g),_=_.baseClass;return g},Dr=(_,g)=>(g=ce(_,g),He[g]),On=(_,g)=>{(!g.ptrType||!g.ptr)&&yr("makeClassHandle requires ptr and ptrType");var C=!!g.smartPtrType,B=!!g.smartPtr;return C!==B&&yr("Both smartPtrType and smartPtr must be specified"),g.count={value:1},ye(Object.create(_,{$$:{value:g,writable:!0}}))};function We(_){var g=this.getPointee(_);if(!g)return this.destructor(_),null;var C=Dr(this.registeredClass,g);if(C!==void 0){if(C.$$.count.value===0)return C.$$.ptr=g,C.$$.smartPtr=_,C.clone();var B=C.clone();return this.destructor(_),B}function F(){return this.isSmartPointer?On(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:g,smartPtrType:this,smartPtr:_}):On(this.registeredClass.instancePrototype,{ptrType:this,ptr:_})}var H=this.registeredClass.getActualType(g),X=ir[H];if(!X)return F.call(this);var L;this.isConst?L=X.constPointerType:L=X.pointerType;var q=At(g,this.registeredClass,L.registeredClass);return q===null?F.call(this):this.isSmartPointer?On(L.registeredClass.instancePrototype,{ptrType:L,ptr:q,smartPtrType:this,smartPtr:_}):On(L.registeredClass.instancePrototype,{ptrType:L,ptr:q})}var ye=_=>typeof FinalizationRegistry=="undefined"?(ye=g=>g,_):(Dn=new FinalizationRegistry(g=>{lt(g.$$)}),ye=g=>{var C=g.$$,B=!!C.smartPtr;if(B){var F={$$:C};Dn.register(g,F,g)}return g},Xt=g=>Dn.unregister(g),ye(_)),Bt=()=>{Object.assign(jr.prototype,{isAliasOf(_){if(!(this instanceof jr)||!(_ instanceof jr))return!1;var g=this.$$.ptrType.registeredClass,C=this.$$.ptr;_.$$=_.$$;for(var B=_.$$.ptrType.registeredClass,F=_.$$.ptr;g.baseClass;)C=g.upcast(C),g=g.baseClass;for(;B.baseClass;)F=B.upcast(F),B=B.baseClass;return g===B&&C===F},clone(){if(this.$$.ptr||wn(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var _=ye(Object.create(Object.getPrototypeOf(this),{$$:{value:Ri(this.$$)}}));return _.$$.count.value+=1,_.$$.deleteScheduled=!1,_},delete(){this.$$.ptr||wn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&le("Object already scheduled for deletion"),Xt(this),lt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||wn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&le("Object already scheduled for deletion"),E.push(this),E.length===1&&p&&p(or),this.$$.deleteScheduled=!0,this}})};function jr(){}var br=(_,g)=>Object.defineProperty(g,"name",{value:_}),Tt=(_,g,C)=>{if(_[g].overloadTable===void 0){var B=_[g];_[g]=function(...F){return _[g].overloadTable.hasOwnProperty(F.length)||le(`Function '${C}' called with an invalid number of arguments (${F.length}) - expects one of (${_[g].overloadTable})!`),_[g].overloadTable[F.length].apply(this,F)},_[g].overloadTable=[],_[g].overloadTable[B.argCount]=B}},Or=(_,g,C)=>{k.hasOwnProperty(_)?((C===void 0||k[_].overloadTable!==void 0&&k[_].overloadTable[C]!==void 0)&&le(`Cannot register public name '${_}' twice`),Tt(k,_,_),k.hasOwnProperty(C)&&le(`Cannot register multiple overloads of a function with the same number of arguments (${C})!`),k[_].overloadTable[C]=g):(k[_]=g,C!==void 0&&(k[_].numArguments=C))},Si=48,Wn=57,Mi=_=>{if(_===void 0)return"_unknown";_=_.replace(/[^a-zA-Z0-9_]/g,"$");var g=_.charCodeAt(0);return g>=Si&&g<=Wn?`_${_}`:_};function Bn(_,g,C,B,F,H,X,L){this.name=_,this.constructor=g,this.instancePrototype=C,this.rawDestructor=B,this.baseClass=F,this.getActualType=H,this.upcast=X,this.downcast=L,this.pureVirtualFunctions=[]}var ar=(_,g,C)=>{for(;g!==C;)g.upcast||le(`Expected null or instance of ${C.name}, got an instance of ${g.name}`),_=g.upcast(_),g=g.baseClass;return _};function Q(_,g){if(g===null)return this.isReference&&le(`null is not a valid ${this.name}`),0;g.$$||le(`Cannot pass "${An(g)}" as a ${this.name}`),g.$$.ptr||le(`Cannot pass deleted object as a pointer of type ${this.name}`);var C=g.$$.ptrType.registeredClass,B=ar(g.$$.ptr,C,this.registeredClass);return B}function P(_,g){var C;if(g===null)return this.isReference&&le(`null is not a valid ${this.name}`),this.isSmartPointer?(C=this.rawConstructor(),_!==null&&_.push(this.rawDestructor,C),C):0;(!g||!g.$$)&&le(`Cannot pass "${An(g)}" as a ${this.name}`),g.$$.ptr||le(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&g.$$.ptrType.isConst&&le(`Cannot convert argument of type ${g.$$.smartPtrType?g.$$.smartPtrType.name:g.$$.ptrType.name} to parameter type ${this.name}`);var B=g.$$.ptrType.registeredClass;if(C=ar(g.$$.ptr,B,this.registeredClass),this.isSmartPointer)switch(g.$$.smartPtr===void 0&&le("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:g.$$.smartPtrType===this?C=g.$$.smartPtr:le(`Cannot convert argument of type ${g.$$.smartPtrType?g.$$.smartPtrType.name:g.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:C=g.$$.smartPtr;break;case 2:if(g.$$.smartPtrType===this)C=g.$$.smartPtr;else{var F=g.clone();C=this.rawShare(C,ie.toHandle(()=>F.delete())),_!==null&&_.push(this.rawDestructor,C)}break;default:le("Unsupporting sharing policy")}return C}function Tn(_,g){if(g===null)return this.isReference&&le(`null is not a valid ${this.name}`),0;g.$$||le(`Cannot pass "${An(g)}" as a ${this.name}`),g.$$.ptr||le(`Cannot pass deleted object as a pointer of type ${this.name}`),g.$$.ptrType.isConst&&le(`Cannot convert argument of type ${g.$$.ptrType.name} to parameter type ${this.name}`);var C=g.$$.ptrType.registeredClass,B=ar(g.$$.ptr,C,this.registeredClass);return B}function Lr(_){return this.fromWireType(Ie[_>>2])}var Vn=()=>{Object.assign(sn.prototype,{getPointee(_){return this.rawGetPointee&&(_=this.rawGetPointee(_)),_},destructor(_){var g;(g=this.rawDestructor)==null||g.call(this,_)},argPackAdvance:Yt,readValueFromPointer:Lr,fromWireType:We})};function sn(_,g,C,B,F,H,X,L,q,ee,Z){this.name=_,this.registeredClass=g,this.isReference=C,this.isConst=B,this.isSmartPointer=F,this.pointeeType=H,this.sharingPolicy=X,this.rawGetPointee=L,this.rawConstructor=q,this.rawShare=ee,this.rawDestructor=Z,!F&&g.baseClass===void 0?B?(this.toWireType=Q,this.destructorFunction=null):(this.toWireType=Tn,this.destructorFunction=null):this.toWireType=P}var Fi=(_,g,C)=>{k.hasOwnProperty(_)||yr("Replacing nonexistent public symbol"),k[_].overloadTable!==void 0&&C!==void 0?k[_].overloadTable[C]=g:(k[_]=g,k[_].argCount=C)},fo=(_,g,C)=>{_=_.replace(/p/g,"i");var B=k["dynCall_"+_];return B(g,...C)},vn=[],Br,Mt=_=>{var g=vn[_];return g||(_>=vn.length&&(vn.length=_+1),vn[_]=g=Br.get(_)),g},Wt=(_,g,C=[])=>{if(_.includes("j"))return fo(_,g,C);var B=Mt(g)(...C);return B},Hr=(_,g)=>(...C)=>Wt(_,g,C),vt=(_,g)=>{_=V(_);function C(){return _.includes("j")?Hr(_,g):Mt(g)}var B=C();return typeof B!="function"&&le(`unknown function pointer with signature ${_}: ${g}`),B},Qn=(_,g)=>{var C=br(g,function(B){this.name=g,this.message=B;var F=new Error(B).stack;F!==void 0&&(this.stack=this.toString()+` `+F.replace(/^Error(:[^\n]*)?\n/,""))});return C.prototype=Object.create(_.prototype),C.prototype.constructor=C,C.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},C},Vt,Ft=_=>{var g=fn(_),C=V(g);return Qt(g),C},Tr=(_,g)=>{var C=[],B={};function F(H){if(!B[H]&&!st[H]){if(xr[H]){xr[H].forEach(F);return}C.push(H),B[H]=!0}}throw g.forEach(F),new Vt(`${_}: `+C.map(Ft).join([", "]))},ki=(_,g,C,B,F,H,X,L,q,ee,Z,Ce,Be)=>{Z=V(Z),H=vt(F,H),L&&(L=vt(X,L)),ee&&(ee=vt(q,ee)),Be=vt(Ce,Be);var De=Mi(Z);Or(De,function(){Tr(`Cannot construct ${Z} due to unbound types`,[B])}),Ot([_,g,C],B?[B]:[],Ge=>{var Sn,Vr;Ge=Ge[0];var Et,ct;B?(Et=Ge.registeredClass,ct=Et.instancePrototype):ct=jr.prototype;var qe=br(Z,function(...vr){if(Object.getPrototypeOf(this)!==fr)throw new Gt("Use 'new' to construct "+Z);if(Ne.constructor_body===void 0)throw new Gt(Z+" has no accessible constructor");var ri=Ne.constructor_body[vr.length];if(ri===void 0)throw new Gt(`Tried to invoke ctor of ${Z} with invalid number of parameters (${vr.length}) - expected (${Object.keys(Ne.constructor_body).toString()}) parameters instead!`);return ri.apply(this,vr)}),fr=Object.create(ct,{constructor:{value:qe}});qe.prototype=fr;var Ne=new Bn(Z,qe,fr,Be,Et,H,L,ee);Ne.baseClass&&((Vr=(Sn=Ne.baseClass).__derivedClasses)!=null||(Sn.__derivedClasses=[]),Ne.baseClass.__derivedClasses.push(Ne));var wt=new sn(Z,Ne,!0,!1,!1),pt=new sn(Z+"*",Ne,!1,!1,!1),gr=new sn(Z+" const*",Ne,!1,!0,!1);return ir[_]={pointerType:pt,constPointerType:gr},Fi(De,qe),[wt,pt,gr]})},zn=(_,g)=>{for(var C=[],B=0;B<_;B++)C.push(Ie[g+B*4>>2]);return C},Pn=_=>{for(;_.length;){var g=_.pop(),C=_.pop();C(g)}};function Ni(_){for(var g=1;g<_.length;++g)if(_[g]!==null&&_[g].destructorFunction===void 0)return!0;return!1}function $n(_,g,C,B,F,H){var X=g.length;X<2&&le("argTypes array size mismatch! Must at least get return value and 'this' types!");var L=g[1]!==null&&C!==null,q=Ni(g),ee=g[0].name!=="void",Z=X-2,Ce=new Array(Z),Be=[],De=[],Ge=function(...Et){Et.length!==Z&&le(`function ${_} called with ${Et.length} arguments, expected ${Z}`),De.length=0;var ct;Be.length=L?2:1,Be[0]=F,L&&(ct=g[1].toWireType(De,this),Be[1]=ct);for(var qe=0;qe{var X=zn(g,C);F=vt(B,F),Ot([],[_],L=>{L=L[0];var q=`constructor ${L.name}`;if(L.registeredClass.constructor_body===void 0&&(L.registeredClass.constructor_body=[]),L.registeredClass.constructor_body[g-1]!==void 0)throw new Gt(`Cannot register multiple constructors with identical number of parameters (${g-1}) for class '${L.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return L.registeredClass.constructor_body[g-1]=()=>{Tr(`Cannot construct ${L.name} due to unbound types`,X)},Ot([],X,ee=>(ee.splice(1,0,null),L.registeredClass.constructor_body[g-1]=$n(q,ee,null,F,H),[])),[]})},xi=_=>{_=_.trim();let g=_.indexOf("(");return g!==-1?_.substr(0,g):_},Kn=(_,g,C,B,F,H,X,L,q)=>{var ee=zn(C,B);g=V(g),g=xi(g),H=vt(F,H),Ot([],[_],Z=>{Z=Z[0];var Ce=`${Z.name}.${g}`;g.startsWith("@@")&&(g=Symbol[g.substring(2)]),L&&Z.registeredClass.pureVirtualFunctions.push(g);function Be(){Tr(`Cannot call ${Ce} due to unbound types`,ee)}var De=Z.registeredClass.instancePrototype,Ge=De[g];return Ge===void 0||Ge.overloadTable===void 0&&Ge.className!==Z.name&&Ge.argCount===C-2?(Be.argCount=C-2,Be.className=Z.name,De[g]=Be):(Tt(De,g,Ce),De[g].overloadTable[C-2]=Be),Ot([],ee,Et=>{var ct=$n(Ce,Et,Z,H,X,q);return De[g].overloadTable===void 0?(ct.argCount=C-2,De[g]=ct):De[g].overloadTable[C-2]=ct,[]}),[]})},he=(_,g,C)=>(_ instanceof Object||le(`${C} with invalid "this": ${_}`),_ instanceof g.registeredClass.constructor||le(`${C} incompatible with "this" of type ${_.constructor.name}`),_.$$.ptr||le(`cannot call emscripten binding method ${C} on deleted object`),ar(_.$$.ptr,_.$$.ptrType.registeredClass,g.registeredClass)),me=(_,g,C,B,F,H,X,L,q,ee)=>{g=V(g),F=vt(B,F),Ot([],[_],Z=>{Z=Z[0];var Ce=`${Z.name}.${g}`,Be={get(){Tr(`Cannot access ${Ce} due to unbound types`,[C,X])},enumerable:!0,configurable:!0};return q?Be.set=()=>Tr(`Cannot access ${Ce} due to unbound types`,[C,X]):Be.set=De=>le(Ce+" is a read-only property"),Object.defineProperty(Z.registeredClass.instancePrototype,g,Be),Ot([],q?[C,X]:[C],De=>{var Ge=De[0],Et={get(){var qe=he(this,Z,Ce+" getter");return Ge.fromWireType(F(H,qe))},enumerable:!0};if(q){q=vt(L,q);var ct=De[1];Et.set=function(qe){var fr=he(this,Z,Ce+" setter"),Ne=[];q(ee,fr,ct.toWireType(Ne,qe)),Pn(Ne)}}return Object.defineProperty(Z.registeredClass.instancePrototype,g,Et),[]}),[]})},dt=[],Pe=[],yt=_=>{_>9&&--Pe[_+1]===0&&(Pe[_]=void 0,dt.push(_))},ji=()=>Pe.length/2-5-dt.length,Jn=()=>{Pe.push(0,1,void 0,1,null,1,!0,1,!1,1),k.count_emval_handles=ji},ie={toValue:_=>(_||le("Cannot use deleted val. handle = "+_),Pe[_]),toHandle:_=>{switch(_){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let g=dt.pop()||Pe.length;return Pe[g]=_,Pe[g+1]=1,g}}}},se={name:"emscripten::val",fromWireType:_=>{var g=ie.toValue(_);return yt(_),g},toWireType:(_,g)=>ie.toHandle(g),argPackAdvance:Yt,readValueFromPointer:Lr,destructorFunction:null},Li=_=>Ct(_,se),An=_=>{if(_===null)return"null";var g=typeof _;return g==="object"||g==="array"||g==="function"?_.toString():""+_},f=(_,g)=>{switch(g){case 4:return function(C){return this.fromWireType(Hn[C>>2])};case 8:return function(C){return this.fromWireType(jt[C>>3])};default:throw new TypeError(`invalid float width (${g}): ${_}`)}},l=(_,g,C)=>{g=V(g),Ct(_,{name:g,fromWireType:B=>B,toWireType:(B,F)=>F,argPackAdvance:Yt,readValueFromPointer:f(g,C),destructorFunction:null})},Me=(_,g,C)=>{switch(g){case 1:return C?B=>xt[B]:B=>Xe[B];case 2:return C?B=>mr[B>>1]:B=>mt[B>>1];case 4:return C?B=>Cr[B>>2]:B=>Ie[B>>2];default:throw new TypeError(`invalid integer width (${g}): ${_}`)}},Hi=(_,g,C,B,F)=>{g=V(g),F===-1&&(F=4294967295);var H=Z=>Z;if(B===0){var X=32-8*C;H=Z=>Z<>>X}var L=g.includes("unsigned"),q=(Z,Ce)=>{},ee;L?ee=function(Z,Ce){return q(Ce,this.name),Ce>>>0}:ee=function(Z,Ce){return q(Ce,this.name),Ce},Ct(_,{name:g,fromWireType:H,toWireType:ee,argPackAdvance:Yt,readValueFromPointer:Me(g,C,B!==0),destructorFunction:null})},Gi=(_,g,C)=>{var B=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],F=B[g];function H(X){var L=Ie[X>>2],q=Ie[X+4>>2];return new F(xt.buffer,q,L)}C=V(C),Ct(_,{name:C,fromWireType:H,argPackAdvance:Yt,readValueFromPointer:H},{ignoreDuplicateRegistrations:!0})},Yi=(_,g,C,B)=>{if(!(B>0))return 0;for(var F=C,H=C+B-1,X=0;X<_.length;++X){var L=_.charCodeAt(X);if(L>=55296&&L<=57343){var q=_.charCodeAt(++X);L=65536+((L&1023)<<10)|q&1023}if(L<=127){if(C>=H)break;g[C++]=L}else if(L<=2047){if(C+1>=H)break;g[C++]=192|L>>6,g[C++]=128|L&63}else if(L<=65535){if(C+2>=H)break;g[C++]=224|L>>12,g[C++]=128|L>>6&63,g[C++]=128|L&63}else{if(C+3>=H)break;g[C++]=240|L>>18,g[C++]=128|L>>12&63,g[C++]=128|L>>6&63,g[C++]=128|L&63}}return g[C]=0,C-F},Xi=(_,g,C)=>Yi(_,Xe,g,C),Wi=_=>{for(var g=0,C=0;C<_.length;++C){var B=_.charCodeAt(C);B<=127?g++:B<=2047?g+=2:B>=55296&&B<=57343?(g+=4,++C):g+=3}return g},Zn=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Vi=(_,g,C)=>{for(var B=g+C,F=g;_[F]&&!(F>=B);)++F;if(F-g>16&&_.buffer&&Zn)return Zn.decode(_.subarray(g,F));for(var H="";g>10,56320|ee&1023)}}return H},cn=(_,g)=>_?Vi(Xe,_,g):"",sr=(_,g)=>{g=V(g);var C=g==="std::string";Ct(_,{name:g,fromWireType(B){var F=Ie[B>>2],H=B+4,X;if(C)for(var L=H,q=0;q<=F;++q){var ee=H+q;if(q==F||Xe[ee]==0){var Z=ee-L,Ce=cn(L,Z);X===void 0?X=Ce:(X+=String.fromCharCode(0),X+=Ce),L=ee+1}}else{for(var Be=new Array(F),q=0;q>2]=H,C&&X)Xi(F,q,H+1);else if(X)for(var ee=0;ee255&&(Qt(q),le("String has UTF-16 code units that do not fit in 8 bits")),Xe[q+ee]=Z}else for(var ee=0;ee{for(var C=_,B=C>>1,F=B+g/2;!(B>=F)&&mt[B];)++B;if(C=B<<1,C-_>32&&Ar)return Ar.decode(Xe.subarray(_,C));for(var H="",X=0;!(X>=g/2);++X){var L=mr[_+X*2>>1];if(L==0)break;H+=String.fromCharCode(L)}return H},ft=(_,g,C)=>{if(C!=null||(C=2147483647),C<2)return 0;C-=2;for(var B=g,F=C<_.length*2?C/2:_.length,H=0;H>1]=X,g+=2}return mr[g>>1]=0,g-B},zi=_=>_.length*2,$i=(_,g)=>{for(var C=0,B="";!(C>=g/4);){var F=Cr[_+C*4>>2];if(F==0)break;if(++C,F>=65536){var H=F-65536;B+=String.fromCharCode(55296|H>>10,56320|H&1023)}else B+=String.fromCharCode(F)}return B},un=(_,g,C)=>{if(C!=null||(C=2147483647),C<4)return 0;for(var B=g,F=B+C-4,H=0;H<_.length;++H){var X=_.charCodeAt(H);if(X>=55296&&X<=57343){var L=_.charCodeAt(++H);X=65536+((X&1023)<<10)|L&1023}if(Cr[g>>2]=X,g+=4,g+4>F)break}return Cr[g>>2]=0,g-B},cr=_=>{for(var g=0,C=0;C<_.length;++C){var B=_.charCodeAt(C);B>=55296&&B<=57343&&++C,g+=4}return g},Gr=(_,g,C)=>{C=V(C);var B,F,H,X;g===2?(B=rt,F=ft,X=zi,H=L=>mt[L>>1]):g===4&&(B=$i,F=un,X=cr,H=L=>Ie[L>>2]),Ct(_,{name:C,fromWireType:L=>{for(var q=Ie[L>>2],ee,Z=L+4,Ce=0;Ce<=q;++Ce){var Be=L+4+Ce*g;if(Ce==q||H(Be)==0){var De=Be-Z,Ge=B(Z,De);ee===void 0?ee=Ge:(ee+=String.fromCharCode(0),ee+=Ge),Z=Be+g}}return Qt(L),ee},toWireType:(L,q)=>{typeof q!="string"&&le(`Cannot pass non-string to C++ string type ${C}`);var ee=X(q),Z=Kt(4+ee+g);return Ie[Z>>2]=ee/g,F(q,Z+4,ee+g),L!==null&&L.push(Qt,Z),Z},argPackAdvance:Yt,readValueFromPointer:Lr,destructorFunction(L){Qt(L)}})},qn=(_,g)=>{g=V(g),Ct(_,{isVoid:!0,name:g,argPackAdvance:0,fromWireType:()=>{},toWireType:(C,B)=>{}})},ei=(_,g,C)=>Xe.copyWithin(_,g,g+C),ke=(_,g)=>{var C=st[_];return C===void 0&&le(`${g} has unknown type ${Ft(_)}`),C},je=(_,g,C)=>{var B=[],F=_.toWireType(B,C);return B.length&&(Ie[g>>2]=ie.toHandle(B)),F},Ki=(_,g,C)=>(_=ie.toValue(_),g=ke(g,"emval::as"),je(g,C,_)),Yr={},ur=_=>{var g=Yr[_];return g===void 0?V(_):g},kt=[],Xr=(_,g,C,B,F)=>(_=kt[_],g=ie.toValue(g),C=ur(C),_(g,g[C],B,F)),Ji=_=>{var g=kt.length;return kt.push(_),g},Nt=(_,g)=>{for(var C=new Array(_),B=0;B<_;++B)C[B]=ke(Ie[g+B*4>>2],"parameter "+B);return C},nt=Reflect.construct,ae=(_,g,C)=>{var B=Nt(_,g),F=B.shift();_--;var H=new Array(_),X=(q,ee,Z,Ce)=>{for(var Be=0,De=0;De<_;++De)H[De]=B[De].readValueFromPointer(Ce+Be),Be+=B[De].argPackAdvance;var Ge=C===1?nt(ee,H):ee.apply(q,H);return je(F,Z,Ge)},L=`methodCaller<(${B.map(q=>q.name).join(", ")}) => ${F.name}>`;return Ji(br(L,X))},Ae=_=>{_>9&&(Pe[_+1]+=1)},Rn=_=>{var g=ie.toValue(_);Pn(g),yt(_)},ti=(_,g)=>{_=ke(_,"_emval_take_value");var C=_.readValueFromPointer(g);return ie.toHandle(C)},zt=_=>{mn("OOM")},$t=_=>{var g=Xe.length;_>>>=0,zt(_)};J(),Gt=k.BindingError=class extends Error{constructor(g){super(g),this.name="BindingError"}},an=k.InternalError=class extends Error{constructor(g){super(g),this.name="InternalError"}},Bt(),ue(),Vn(),Vt=k.UnboundTypeError=Qn(Error,"UnboundTypeError"),Jn();var ln={v:ze,p:Nr,o:on,t:Pi,x:ki,w:Ui,h:Kn,k:me,s:Li,n:l,g:Hi,a:Gi,m:sr,l:Gr,u:qn,r:ei,j:Ki,e:Xr,c:yt,f:ae,d:Ae,b:Rn,i:ti,q:$t},gt=be(),dn=()=>(dn=gt.z)(),Kt=_=>(Kt=gt.A)(_),fn=_=>(fn=gt.C)(_),Qt=_=>(Qt=gt.D)(_),Jt=_=>(Jt=gt.E)(_),Wr=k._vertexShaderSource=10192,lr;bt=function _(){lr||dr(),lr||(bt=_)};function dr(){if(Ze>0||(lo(),Ze>0))return;function _(){lr||(lr=!0,k.calledRun=!0,!tt&&(Bi(),Ue(k),k.onRuntimeInitialized&&k.onRuntimeInitialized(),Mr()))}k.setStatus?(k.setStatus("Running..."),setTimeout(function(){setTimeout(function(){k.setStatus("")},1),_()},1)):_()}if(k.preInit)for(typeof k.preInit=="function"&&(k.preInit=[k.preInit]);k.preInit.length>0;)k.preInit.pop()();return dr(),Ee=ot,Ee}})(),Oc=Bu;var Uo=class{constructor(U,n){Le(this,"canvas");Le(this,"locateFile");Le(this,"_glName");Le(this,"_solutionWasm");Le(this,"ctx");Le(this,"fileDownloader");Le(this,"startTime");Le(this,"lastTimestamp");Le(this,"pl",{onResults:U=>this.onResults(U.get(0).glName)});this.locateFile=Ee=>`${U}/${Ee}`.replace(/([^:]\/)\/+/g,"$1"),this.fileDownloader=n}bindTexture(){var U;(U=this.ctx)==null||U.activeTexture(this.ctx.TEXTURE0),this.bindTexture2d(this._glName)}async initialize(){this._solutionWasm=new this.SolutionWasm;let U=new this.StringList;U.push_back("segmentation_mask");let n=this.PacketListener.implement(this.pl);return this._solutionWasm.attachMultiListener(U,n),U.delete(),this._solutionWasm.loadGraph(await this.fileDownloader.download(this.locateFile("selfie_segmentation.binarypb"),{type:"arraybuffer"})),this}setCanvas(U){this.canvas=U,this.createContext(U,!0,!0,{}),this._glName=this.createTexture()}fetchResponse(U){return this.fileDownloader.downloadWithFetch(U,"fetch-response")}loadWasm(U,n){return this.fileDownloader.loadWasm(U,n)}async changeModel(U="selfie_segmentation_landscape.tflite"){U=typeof U=="string"?await this.fileDownloader.download(this.locateFile(U),{type:"arraybuffer"}):U,this._solutionWasm.overrideFile("third_party/mediapipe/modules/selfie_segmentation/selfie_segmentation_landscape.tflite",U);let n=new this.GraphOptionChangeRequestList;n.push_back({calculatorIndex:1,calculatorName:"",calculatorType:"GlScalerCalculator",fieldName:"flip_horizontal",valueBoolean:!1,valueNumber:0,valueString:""}),n.push_back({calculatorIndex:0,calculatorType:"ConstantSidePacketCalculator",calculatorName:"ConstantSidePacketCalculatorModelSelection",fieldName:"int_value",valueBoolean:!1,valueNumber:1,valueString:""}),n.push_back({calculatorIndex:0,calculatorType:"InferenceCalculator",calculatorName:"",fieldName:"use_cpu_inference",valueBoolean:!1,valueNumber:0,valueString:""}),this._solutionWasm.changeOptions(n),this.startTime=Date.now()}send(U,n){let Ee=new this.PacketDataList,k=Date.now()-this.startTime;this.lastTimestamp&&this.lastTimestamp>=k?this.lastTimestamp++:this.lastTimestamp=k,Ee.pushTexture2d({stream:"input_frames_gpu",timestamp:this.lastTimestamp,glName:this._glName,width:U,height:n}),this._solutionWasm.send(Ee),Ee.delete()}close(){var U,n,Ee;(U=this.canvas)==null||delete U.getContext,delete this.readyPromiseResolve,delete this.readyPromiseReject,this.pl.onResults=null,delete this.onResults,(n=this.deleteTexture)==null||n.call(this,this._glName),(Ee=this._solutionWasm)==null||Ee.delete();for(let k of Object.keys(this))delete this[k]}};var Pr=typeof navigator=="undefined"?"":navigator.userAgent,fe=K=>new RegExp(K,"i").test(Pr),et=K=>{if(fe(K)){let U=new RegExp(`${K}\\/([\\d.]+)`),n=Pr.match(U);if(n&&n[1])return n[1]}return""},ic=K=>{if(fe(K)){let U=new RegExp(`${K}\\/(\\d+)`),n=Pr.match(U);if(n&&n[1])return parseFloat(n[1])}return NaN},Bc=/AppleWebKit\/([\d.]+)/i.exec(Pr),Tu=Bc?parseFloat(Bc[1]):NaN,vc=fe("iPad"),Qc=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&fe("Macintosh"),Pc=fe("iPhone")&&!vc,vu=fe("iPod"),Rc=Pc||vc||vu||Qc,xo=fe("Android"),Sc=function(){if(xo){let K=Pr.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(K){let U=K[1]&&parseFloat(K[1]),n=K[2]&&parseFloat(K[2]);if(U&&n)return parseFloat(`${K[1]}.${K[2]}`);if(U)return U}}return NaN}(),El=xo&&fe("webkit")&&Sc<2.3,pl=xo&&Sc<5&&Tu<537,Qu=fe("Firefox"),Pu=et("Firefox"),_l=ic("Firefox"),Mc=fe("Edge"),Ru=et("Edge"),Fc=fe("Edg"),Su=et("Edg"),hl=ic("Edg"),kc=fe("SogouMobileBrowser"),Mu=et("SogouMobileBrowser"),Nc=fe("MetaSr\\s"),Fu=et("MetaSr\\s"),Ln=fe("TBS"),ku=et("TBS"),Uc=fe("XWEB"),Nu=et("XWEB"),Il=fe("MSIE\\s8\\.0"),Uu=fe("MSIE\\/\\d+"),ml=function(){if(Uu){let K=/MSIE\s(\d+)\.\d/.exec(Pr),U=K&&parseFloat(K[1]);return!U&&/Trident\/7.0/i.test(Pr)&&/rv:11.0/.test(Pr)&&(U=11),U}return NaN}(),xu=fe("(micromessenger|webbrowser)"),ju=et("MicroMessenger"),oc=!Ln&&fe("MQQBrowser")&&fe("COVC"),ac=!Ln&&fe("MQQBrowser")&&!fe("COVC"),Tc=ac||oc?et("MQQBrowser"):"",xc=!Ln&&fe(" QQBrowser"),Lu=et(" QQBrowser"),jc=!Ln&&fe("QQBrowserLite"),Hu=et("QQBrowserLite"),Lc=!Ln&&fe("MQBHD"),Gu=et("MQBHD"),Cl=fe("Windows"),yl=!Rc&&fe("MAC OS X"),wl=!xo&&fe("Linux"),Dl=fe("CrOS"),bl=fe("MicroMessenger"),Ol=fe("UCBrowser"),Bl=fe("Electron"),Hc=fe("MiuiBrowser"),Yu=et("MiuiBrowser"),Gc=fe("HuaweiBrowser"),Tl=fe("Huawei"),Xu=et("HuaweiBrowser"),Yc=fe("SamsungBrowser"),Wu=et("SamsungBrowser"),Xc=fe("HeyTapBrowser"),Vu=et("HeyTapBrowser"),Wc=fe("VivoBrowser"),zu=et("VivoBrowser"),$u=()=>ic("Chrome"),Vc=fe("Chrome"),Ku=!Mc&&!Nc&&!kc&&!Ln&&!Uc&&!Fc&&!xc&&!Hc&&!Gc&&!Yc&&!Xc&&!Wc&&Vc,vl=fe("HeadlessChrome"),zc=$u(),Ju=et("Chrome"),Zu=!Vc&&!ac&&!oc&&!jc&&!Lc&&fe("Safari");var $c=et("Version"),Ql=/Android.*(wv|.0.0.0)/.test(Pr),Kc=(()=>{if(Qc)return $c;if(Rc){let K=Pr.match(/OS (\d+)_(\d+)/i);if(K&&K[1]){let U=K[1];return K[2]&&(U+=`.${K[2]}`),U}}return""})(),Pl=Number(Kc.split(".")[0]);var Rl=(()=>{let K=Number(Kc.split(".")[0]);return K===14||K===13})(),Sl=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Ml=(()=>{let K;return()=>{if(typeof K=="undefined")try{K=!!window.localStorage}catch(U){K=!1}return K}})(),Fl=qu();function qu(){let K=new Map([[Qu,["Firefox",Pu]],[Fc,["Edg",Su]],[Ku,["Chrome",Ju]],[Zu,["Safari",$c]],[Ln,["TBS",ku]],[Uc,["XWEB",Nu]],[xu&&Pc,["WeChat",ju]],[xc,["QQ(Win)",Lu]],[ac,["QQ(Mobile)",Tc]],[oc,["QQ(Mobile X5)",Tc]],[jc,["QQ(Mac)",Hu]],[Lc,["QQ(iPad)",Gu]],[Hc,["MI",Yu]],[Gc,["HW",Xu]],[Yc,["Samsung",Wu]],[Xc,["OPPO",Vu]],[Wc,["VIVO",zu]],[Mc,["EDGE",Ru]],[kc,["SogouMobile",Mu]],[Nc,["Sogou",Fu]]]),U="unknown",n="unknown";return K.has(!0)&&([U,n]=K.get(!0)),{name:U,version:n}}var Di=570703;var jo=0,Lo=class Lo{constructor(U){this.core=U;Le(this,"seq");Le(this,"_core");Le(this,"log");Le(this,"preLoadPromise");Le(this,"startResolve");Le(this,"startReject");Le(this,"mediaPipeSolutions");Le(this,"assetsPath");Le(this,"currentType");Le(this,"onAbort");Le(this,"isAborted",!1);jo=jo+1,this.seq=jo,this._core=U,this.log=U.log.createChild({id:`${this.getAlias()}${jo}`}),this.log.info("created"),U.assetsPath&&(this.preLoadPromise=this.preload(U.assetsPath))}static isSupported(){if(zc<90)return!1;let n=document.createElement("canvas").getContext("webgl2");return!!(n&&n instanceof WebGL2RenderingContext)}async preload(U="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/"){try{this._core.room.videoManager.Wasm||(this._core.room.videoManager.Wasm=await Oc()),this.assetsPath=`${U}/selfie_segmentation/`;let n=new Uo(this.assetsPath,this._core.fileDownloader);n.onAbort=Ee=>{var k;this.core.kvStatManager.addEnum({key:Di,value:this.getKVTypeValue(!1,this.isAborted,"ABORT_IN_INFERENCE")}),this.isAborted=!0,this.log.error("mediaPipeSolutions abort",Ee),this.core.clearStarted(this,this.getGroup()),this.stop(),(k=this.onAbort)==null||k.call(this,Ee)},n.print=this.log.info.bind(this.log),n.printErr=this.log.warn.bind(this.log),this.mediaPipeSolutions=await(this.core.rtcDectection.isSIMDSupported()?Dc:bc)(n),await this.mediaPipeSolutions.initialize(),await this._core.room.videoManager.initVirtualBackground(this.mediaPipeSolutions)}catch(n){let{RtcError:Ee,ErrorCode:k}=this._core.errorModule;throw new Ee({code:k.INVALID_OPERATION,message:`VirtualBackground preload error, please check your assetsPath. detail: ${n}`})}}getName(){return Lo.Name}getAlias(){return"vb"}getValidateRule(U){switch(U){case"start":return Cc(this._core);case"update":return yc(this._core);case"stop":return wc(this._core)}}getGroup(){return"vb"}getKVTypeValue(U=!1,n=!1,Ee="NONE"){let k=0;switch(this.currentType){case"blur":k|=0;break;case"image":k|=1;break;case"green":k|=2;break}switch(U&&(k|=256),n&&(k|=512),Ee){case"ABORT_IN_INFERENCE":k|=4096;break;case"ABORT_IN_VIDEO_MANAGER":k|=8192;break;case"OTHER":k|=61440}return k}async start(U){let{type:n="blur",src:Ee,blurLevel:k=3,onAbort:Ue}=U;this.currentType=n,this.onAbort=Ue;let{auth:we,sign:ot,timestamp:ht}=await mc({sdkAppId:U.sdkAppId,userId:U.userId,userSig:U.userSig,core:this._core});if(!we){let{RtcError:$e,ErrorCode:Ye,ErrorCodeDictionary:Ve}=this._core.errorModule;throw new $e({code:Ye.SERVER_ERROR,extraCode:Ve.NEED_TO_BUY,messageParams:{value:"Virtual Background",url:"https://cloud.tencent.com/document/product/647/85386"}})}return this.preLoadPromise||(this.preLoadPromise=this.preload(this._core.assetsPath)),await this.preLoadPromise,this.core.room.videoManager.setVirtualBackground({type:n,imageUrl:Ee,blurLevel:k,onAbort:$e=>{var Ye;this.core.kvStatManager.addEnum({key:Di,value:this.getKVTypeValue(!0,this.isAborted,"ABORT_IN_VIDEO_MANAGER")}),this.isAborted=!0,this.core.clearStarted(this,this.getGroup()),this.stop(),delete this.preLoadPromise,(Ye=this.onAbort)==null||Ye.call(this,$e)}}).then(()=>{this.core.kvStatManager.addEnum({key:Di,value:this.getKVTypeValue(!1,this.isAborted,"NONE")})}).catch(()=>{this.core.kvStatManager.addEnum({key:Di,value:this.getKVTypeValue(!0,this.isAborted,"OTHER")})})}async update(U){let{type:n,src:Ee}=U;return n!==this.currentType&&(this.currentType=n),this.core.room.videoManager.setVirtualBackground({type:n,imageUrl:Ee,blurLevel:U.blurLevel}).then(()=>{this.core.kvStatManager.addEnum({key:Di,value:this.getKVTypeValue(!1,!1,"NONE")})}).catch(()=>{this.core.kvStatManager.addEnum({key:Di,value:this.getKVTypeValue(!0,!1,"OTHER")})})}async stop(){return this.core.room.videoManager.setVirtualBackground()}};Le(Lo,"Name","VirtualBackground");var sc=Lo;var Yl=sc;export{sc as VirtualBackground,Yl as default};