From 377a4cf2cd0854f7c2aefc7f277c6cabf4c9ad26 Mon Sep 17 00:00:00 2001 From: MeGaL0DoN <62940883+MeGaL0DoN@users.noreply.github.com> Date: Sun, 11 Aug 2024 12:53:04 -0700 Subject: [PATCH] Add files via upload --- MegaBoy.js | 2 +- MegaBoy.wasm | Bin 703932 -> 704017 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/MegaBoy.js b/MegaBoy.js index 9036013..3ef6e26 100644 --- a/MegaBoy.js +++ b/MegaBoy.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="MegaBoy.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Gb"];updateMemoryViews();wasmTable=Module["asm"]["Kb"];addOnInit(Module["asm"]["Hb"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={168424:()=>{return window.innerWidth},168454:()=>{return window.innerHeight},168485:()=>{return window.screen.width*(window.devicePixelRatio>1.25?1.25:window.devicePixelRatio)},168585:($0,$1,$2,$3,$4)=>{if(typeof window==="undefined"||(window.AudioContext||window.webkitAudioContext)===undefined){return 0}if(typeof window.miniaudio==="undefined"){window.miniaudio={referenceCount:0};window.miniaudio.device_type={};window.miniaudio.device_type.playback=$0;window.miniaudio.device_type.capture=$1;window.miniaudio.device_type.duplex=$2;window.miniaudio.device_state={};window.miniaudio.device_state.stopped=$3;window.miniaudio.device_state.started=$4;miniaudio.devices=[];miniaudio.track_device=function(device){for(var iDevice=0;iDevice0){if(miniaudio.devices[miniaudio.devices.length-1]==null){miniaudio.devices.pop()}else{break}}};miniaudio.untrack_device=function(device){for(var iDevice=0;iDevice{Module._ma_device__on_notification_unlocked(device.pDevice)},error=>{console.error("Failed to resume audiocontext",error)})}}miniaudio.unlock_event_types.map(function(event_type){document.removeEventListener(event_type,miniaudio.unlock,true)})};miniaudio.unlock_event_types.map(function(event_type){document.addEventListener(event_type,miniaudio.unlock,true)})}window.miniaudio.referenceCount+=1;return 1},170743:()=>{if(typeof window.miniaudio!=="undefined"){window.miniaudio.referenceCount-=1;if(window.miniaudio.referenceCount===0){delete window.miniaudio}}},170907:()=>{return navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined},171011:()=>{try{var temp=new(window.AudioContext||window.webkitAudioContext);var sampleRate=temp.sampleRate;temp.close();return sampleRate}catch(e){return 0}},171182:($0,$1,$2,$3,$4,$5)=>{var deviceType=$0;var channels=$1;var sampleRate=$2;var bufferSize=$3;var pIntermediaryBuffer=$4;var pDevice=$5;if(typeof window.miniaudio==="undefined"){return-1}var device={};var audioContextOptions={};if(deviceType==window.miniaudio.device_type.playback&&sampleRate!=0){audioContextOptions.sampleRate=sampleRate}device.webaudio=new(window.AudioContext||window.webkitAudioContext)(audioContextOptions);device.webaudio.suspend();device.state=window.miniaudio.device_state.stopped;var channelCountIn=0;var channelCountOut=channels;if(deviceType!=window.miniaudio.device_type.playback){channelCountIn=channels}device.scriptNode=device.webaudio.createScriptProcessor(bufferSize,channelCountIn,channelCountOut);device.scriptNode.onaudioprocess=function(e){if(device.intermediaryBufferView==null||device.intermediaryBufferView.length==0){device.intermediaryBufferView=new Float32Array(Module.HEAPF32.buffer,pIntermediaryBuffer,bufferSize*channels)}if(deviceType==miniaudio.device_type.capture||deviceType==miniaudio.device_type.duplex){for(var iChannel=0;iChannel{return miniaudio.get_device_by_index($0).webaudio.sampleRate},174076:$0=>{var device=miniaudio.get_device_by_index($0);if(device.scriptNode!==undefined){device.scriptNode.onaudioprocess=function(e){};device.scriptNode.disconnect();device.scriptNode=undefined}if(device.streamNode!==undefined){device.streamNode.disconnect();device.streamNode=undefined}device.webaudio.close();device.webaudio=undefined;device.pDevice=undefined},174469:$0=>{miniaudio.untrack_device_by_index($0)},174512:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.resume();device.state=miniaudio.device_state.started},174637:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.suspend();device.state=miniaudio.device_state.stopped}};function upload(accept_types,callback,callback_data){globalThis["open_file"]=function(e){const file_reader=new FileReader;file_reader.onload=event=>{const uint8Arr=new Uint8Array(event.target.result);const data_ptr=Module["_malloc"](uint8Arr.length);const data_on_heap=new Uint8Array(Module["HEAPU8"].buffer,data_ptr,uint8Arr.length);data_on_heap.set(uint8Arr);Module["ccall"]("upload_file_return","number",["string","string","number","number","number","number"],[event.target.filename,event.target.mime_type,data_on_heap.byteOffset,uint8Arr.length,callback,callback_data]);Module["_free"](data_ptr)};file_reader.filename=e.target.files[0].name;file_reader.mime_type=e.target.files[0].type;file_reader.readAsArrayBuffer(e.target.files[0])};var file_selector=document.createElement("input");file_selector.setAttribute("type","file");file_selector.setAttribute("onchange",'globalThis["open_file"](event)');file_selector.setAttribute("accept",UTF8ToString(accept_types));file_selector.click()}function download(filename,mime_type,buffer,buffer_size){var a=document.createElement("a");a.download=UTF8ToString(filename);a.href=URL.createObjectURL(new Blob([new Uint8Array(Module["HEAPU8"].buffer,buffer,buffer_size)],{type:UTF8ToString(mime_type)}));a.click()}function ImGui_ImplGlfw_EmscriptenOpenURL(url){url=url?UTF8ToString(url):null;if(url)window.open(url,"_blank")}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function ___syscall_ftruncate64(fd,length_low,length_high){try{var length=convertI32PairToI53Checked(length_low,length_high);if(isNaN(length))return-61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=stringToNewUTF8(winterName);var summerNamePtr=stringToNewUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_date_now(){return Date.now()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.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.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(e=event){if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf>>0]=type;HEAP16[pbuf+2>>1]=flags;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _glActiveTexture(x0){GLctx.activeTexture(x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendEquation(x0){GLctx.blendEquation(x0)}function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glBufferSubData(target,offset,size,data){if(true){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}}var _glDeleteVertexArraysOES=_glDeleteVertexArrays;function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx.disable(x0)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){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:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift,pixels+bytes>>shift)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function webglGetUniformLocation(location){var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}function _glUniformMatrix4fv(location,count,transpose,value){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.windowMaximizeFunc=null;this.framebufferSizeFunc=null;this.windowContentScaleFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,scale:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,131082:0,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0,139276:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 96;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;getWasmTableEntry(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(GLFW.active.keyFunc){if(repeat)status=2;getWasmTableEntry(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))}},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"])return;if(GLFW.active.cursorEnterFunc){getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)}},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"])return;if(GLFW.active.cursorEnterFunc){getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)}},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=delta;if(event.type=="mousewheel"){sx=event.wheelDeltaX}else{sx=event.deltaX}getWasmTableEntry(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(GLFW.active.windowSizeFunc){getWasmTableEntry(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)}},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(GLFW.active.framebufferSizeFunc){getWasmTableEntry(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)}},onWindowContentScaleChanged:function(scale){GLFW.scale=scale;if(!GLFW.active)return;if(GLFW.active.windowContentScaleFunc){getWasmTableEntry(GLFW.active.windowContentScaleFunc)(GLFW.active.id,GLFW.scale,GLFW.scale)}},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:[],lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:[];GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy>0]=gamepad.buttons[i].pressed}for(var i=0;i>2]=gamepad.axes[i]}}else{if(GLFW.joys[joy]){out("glfw joystick disconnected",joy);if(GLFW.joystickFunc){getWasmTableEntry(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=_malloc(event.dataTransfer.files.length*4);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=e=>{if(reader.readyState!=2){++written;out("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){getWasmTableEntry(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i>2]=filename}for(var i=0;i0},getCursorPos:function(winid,x,y){HEAPF64[x>>3]=Browser.mouseX;HEAPF64[y>>3]=Browser.mouseY},getMousePos:function(winid,x,y){HEAP32[x>>2]=Browser.mouseX;HEAP32[y>>2]=Browser.mouseY},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){HEAP32[x>>2]=wx}if(y){HEAP32[y>>2]=wy}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){HEAP32[width>>2]=ww}if(height){HEAP32[height>>2]=wh}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(win.windowSizeFunc){getWasmTableEntry(win.windowSizeFunc)(win.id,width,height)}},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc){getWasmTableEntry(win.windowCloseFunc)(win.id)}GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i>2]=ww}if(height){HEAP32[height>>2]=wh}}function _glfwGetInputMode(winid,mode){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{if(Browser.pointerLock){win.inputModes[mode]=212995}else{win.inputModes[mode]=212993}}}return win.inputModes[mode]}function _glfwGetJoystickAxes(joy,count){GLFW.refreshJoysticks();var state=GLFW.joys[joy];if(!state||!state.axes){HEAP32[count>>2]=0;return}HEAP32[count>>2]=state.axesCount;return state.axes}function _glfwGetJoystickButtons(joy,count){GLFW.refreshJoysticks();var state=GLFW.joys[joy];if(!state||!state.buttons){HEAP32[count>>2]=0;return}HEAP32[count>>2]=state.buttonsCount;return state.buttons}function _glfwGetKey(winid,key){return GLFW.getKey(winid,key)}function _glfwGetMonitorContentScale(monitor,x,y){HEAPF32[x>>2]=GLFW.scale;HEAPF32[y>>2]=GLFW.scale}function _glfwGetMonitorPos(monitor,x,y){HEAP32[x>>2]=0;HEAP32[y>>2]=0}function _glfwGetMonitorWorkarea(monitor,x,y,w,h){HEAP32[x>>2]=0;HEAP32[y>>2]=0;HEAP32[w>>2]=screen.availWidth;HEAP32[h>>2]=screen.availHeight}function _glfwGetMonitors(count){HEAP32[count>>2]=1;if(!GLFW.monitors){GLFW.monitors=_malloc(4);HEAP32[GLFW.monitors>>2]=1}return GLFW.monitors}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoMode(monitor){return 0}function _glfwGetWindowAttrib(winid,attrib){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.attributes[attrib]}function _glfwGetWindowPos(winid,x,y){GLFW.getWindowPos(winid,x,y)}function _glfwGetWindowSize(winid,width,height){GLFW.getWindowSize(winid,width,height)}function _emscripten_get_device_pixel_ratio(){return typeof devicePixelRatio=="number"&&devicePixelRatio||1}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;GLFW.scale=_emscripten_get_device_pixel_ratio();window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);(function updatePixelRatio(){window.matchMedia("(resolution: "+window.devicePixelRatio+"dppx)").addEventListener("change",updatePixelRatio,{once:true});GLFW.onWindowContentScaleChanged(_emscripten_get_device_pixel_ratio())})();Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push((width,height)=>{GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwPollEvents(){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetClipboardString(win,string){}function _glfwSetCursor(winid,cursor){}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPos(winid,x,y){GLFW.setCursorPos(winid,x,y)}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetInputMode(winid,mode,value){GLFW.setInputMode(winid,mode,value)}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMonitorCallback(cbfun){var prevcbfun=GLFW.monitorFunc;GLFW.monitorFunc=cbfun;return prevcbfun}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowCloseCallback(winid,cbfun){return GLFW.setWindowCloseCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowOpacity(winid,opacity){}function _glfwSetWindowPos(winid,x,y){GLFW.setWindowPos(winid,x,y)}function _glfwSetWindowPosCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowPosFunc;win.windowPosFunc=cbfun;return prevcbfun}function _glfwSetWindowRefreshCallback(winid,cbfun){return GLFW.setWindowRefreshCallback(winid,cbfun)}function _glfwSetWindowSize(winid,width,height){GLFW.setWindowSize(winid,width,height)}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSetWindowTitle(winid,title){GLFW.setWindowTitle(winid,title)}function _glfwShowWindow(winid){}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWaitEvents(){}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%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 rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}function getCFunc(ident){var func=Module["_"+ident];return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2;args.forEach(arg=>{HEAP32[argv_ptr++]=stringToUTF8OnStack(arg)});HEAP32[argv_ptr]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",reason=>{throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="MegaBoy.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["Hb"];updateMemoryViews();wasmTable=Module["asm"]["Lb"];addOnInit(Module["asm"]["Ib"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={168424:()=>{return window.innerWidth},168454:()=>{return window.innerHeight},168485:()=>{return window.screen.width*(window.devicePixelRatio>1.25?1.25:window.devicePixelRatio)},168585:($0,$1,$2,$3,$4)=>{if(typeof window==="undefined"||(window.AudioContext||window.webkitAudioContext)===undefined){return 0}if(typeof window.miniaudio==="undefined"){window.miniaudio={referenceCount:0};window.miniaudio.device_type={};window.miniaudio.device_type.playback=$0;window.miniaudio.device_type.capture=$1;window.miniaudio.device_type.duplex=$2;window.miniaudio.device_state={};window.miniaudio.device_state.stopped=$3;window.miniaudio.device_state.started=$4;miniaudio.devices=[];miniaudio.track_device=function(device){for(var iDevice=0;iDevice0){if(miniaudio.devices[miniaudio.devices.length-1]==null){miniaudio.devices.pop()}else{break}}};miniaudio.untrack_device=function(device){for(var iDevice=0;iDevice{Module._ma_device__on_notification_unlocked(device.pDevice)},error=>{console.error("Failed to resume audiocontext",error)})}}miniaudio.unlock_event_types.map(function(event_type){document.removeEventListener(event_type,miniaudio.unlock,true)})};miniaudio.unlock_event_types.map(function(event_type){document.addEventListener(event_type,miniaudio.unlock,true)})}window.miniaudio.referenceCount+=1;return 1},170743:()=>{if(typeof window.miniaudio!=="undefined"){window.miniaudio.referenceCount-=1;if(window.miniaudio.referenceCount===0){delete window.miniaudio}}},170907:()=>{return navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined},171011:()=>{try{var temp=new(window.AudioContext||window.webkitAudioContext);var sampleRate=temp.sampleRate;temp.close();return sampleRate}catch(e){return 0}},171182:($0,$1,$2,$3,$4,$5)=>{var deviceType=$0;var channels=$1;var sampleRate=$2;var bufferSize=$3;var pIntermediaryBuffer=$4;var pDevice=$5;if(typeof window.miniaudio==="undefined"){return-1}var device={};var audioContextOptions={};if(deviceType==window.miniaudio.device_type.playback&&sampleRate!=0){audioContextOptions.sampleRate=sampleRate}device.webaudio=new(window.AudioContext||window.webkitAudioContext)(audioContextOptions);device.webaudio.suspend();device.state=window.miniaudio.device_state.stopped;var channelCountIn=0;var channelCountOut=channels;if(deviceType!=window.miniaudio.device_type.playback){channelCountIn=channels}device.scriptNode=device.webaudio.createScriptProcessor(bufferSize,channelCountIn,channelCountOut);device.scriptNode.onaudioprocess=function(e){if(device.intermediaryBufferView==null||device.intermediaryBufferView.length==0){device.intermediaryBufferView=new Float32Array(Module.HEAPF32.buffer,pIntermediaryBuffer,bufferSize*channels)}if(deviceType==miniaudio.device_type.capture||deviceType==miniaudio.device_type.duplex){for(var iChannel=0;iChannel{return miniaudio.get_device_by_index($0).webaudio.sampleRate},174076:$0=>{var device=miniaudio.get_device_by_index($0);if(device.scriptNode!==undefined){device.scriptNode.onaudioprocess=function(e){};device.scriptNode.disconnect();device.scriptNode=undefined}if(device.streamNode!==undefined){device.streamNode.disconnect();device.streamNode=undefined}device.webaudio.close();device.webaudio=undefined;device.pDevice=undefined},174469:$0=>{miniaudio.untrack_device_by_index($0)},174512:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.resume();device.state=miniaudio.device_state.started},174637:$0=>{var device=miniaudio.get_device_by_index($0);device.webaudio.suspend();device.state=miniaudio.device_state.stopped}};function upload(accept_types,callback,callback_data){globalThis["open_file"]=function(e){const file_reader=new FileReader;file_reader.onload=event=>{const uint8Arr=new Uint8Array(event.target.result);const data_ptr=Module["_malloc"](uint8Arr.length);const data_on_heap=new Uint8Array(Module["HEAPU8"].buffer,data_ptr,uint8Arr.length);data_on_heap.set(uint8Arr);Module["ccall"]("upload_file_return","number",["string","string","number","number","number","number"],[event.target.filename,event.target.mime_type,data_on_heap.byteOffset,uint8Arr.length,callback,callback_data]);Module["_free"](data_ptr)};file_reader.filename=e.target.files[0].name;file_reader.mime_type=e.target.files[0].type;file_reader.readAsArrayBuffer(e.target.files[0])};var file_selector=document.createElement("input");file_selector.setAttribute("type","file");file_selector.setAttribute("onchange",'globalThis["open_file"](event)');file_selector.setAttribute("accept",UTF8ToString(accept_types));file_selector.click()}function download(filename,mime_type,buffer,buffer_size){var a=document.createElement("a");a.download=UTF8ToString(filename);a.href=URL.createObjectURL(new Blob([new Uint8Array(Module["HEAPU8"].buffer,buffer,buffer_size)],{type:UTF8ToString(mime_type)}));a.click()}function ImGui_ImplGlfw_EmscriptenOpenURL(url){url=url?UTF8ToString(url):null;if(url)window.open(url,"_blank")}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){abort()}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAPU32[buf+96>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function ___syscall_ftruncate64(fd,length_low,length_high){try{var length=convertI32PairToI53Checked(length_low,length_high);if(isNaN(length))return-61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=stringToNewUTF8(winterName);var summerNamePtr=stringToNewUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:HEAPF64[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_date_now(){return Date.now()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement}function getWasmTableEntry(funcPtr){return wasmTable.get(funcPtr)}function registerBeforeUnloadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString){var beforeUnloadEventHandlerFunc=function(e=event){var confirmationMessage=getWasmTableEntry(callbackfunc)(eventTypeId,0,userData);if(confirmationMessage){confirmationMessage=UTF8ToString(confirmationMessage)}if(confirmationMessage){e.preventDefault();e.returnValue=confirmationMessage;return confirmationMessage}};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_beforeunload_callback_on_thread(userData,callbackfunc,targetThread){if(typeof onbeforeunload=="undefined")return-1;if(targetThread!==1)return-5;return registerBeforeUnloadEventCallback(2,userData,true,callbackfunc,28,"beforeunload")}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}var _exit=exitJS;function maybeExit(){if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function safeSetTimeout(func,timeout){return setTimeout(()=>{callUserCallback(func)},timeout)}var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=event=>{out("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;if(onload)onload(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout:function(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){assert(!Browser.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.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}out('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerUiEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.uiEvent)JSEvents.uiEvent=_malloc(36);target=findEventTarget(target);var uiEventHandlerFunc=function(e=event){if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=e.detail;HEAP32[uiEvent+4>>2]=b.clientWidth;HEAP32[uiEvent+8>>2]=b.clientHeight;HEAP32[uiEvent+12>>2]=innerWidth;HEAP32[uiEvent+16>>2]=innerHeight;HEAP32[uiEvent+20>>2]=outerWidth;HEAP32[uiEvent+24>>2]=outerHeight;HEAP32[uiEvent+28>>2]=pageXOffset;HEAP32[uiEvent+32>>2]=pageYOffset;if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_resize_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){return registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf>>0]=type;HEAP16[pbuf+2>>1]=flags;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(ctx){return!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"))}function webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents=="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _glActiveTexture(x0){GLctx.activeTexture(x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindBuffer(target,buffer){if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBindVertexArray(vao){GLctx.bindVertexArray(GL.vaos[vao])}var _glBindVertexArrayOES=_glBindVertexArray;function _glBlendEquation(x0){GLctx.blendEquation(x0)}function _glBlendEquationSeparate(x0,x1){GLctx.blendEquationSeparate(x0,x1)}function _glBlendFunc(x0,x1){GLctx.blendFunc(x0,x1)}function _glBlendFuncSeparate(x0,x1,x2,x3){GLctx.blendFuncSeparate(x0,x1,x2,x3)}function _glBufferData(target,size,data,usage){if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}}else{GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}}function _glBufferSubData(target,offset,size,data){if(true){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx.clear(x0)}function _glClearColor(x0,x1,x2,x3){GLctx.clearColor(x0,x1,x2,x3)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteVertexArrays(n,vaos){for(var i=0;i>2];GLctx.deleteVertexArray(GL.vaos[id]);GL.vaos[id]=null}}var _glDeleteVertexArraysOES=_glDeleteVertexArrays;function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx.disable(x0)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx.enable(x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i>2]=id}}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGenerateMipmap(x0){GLctx.generateMipmap(x0)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 34814:case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break;case 33309:if(GL.currentContext.version<2){GL.recordError(1282);return}var exts=GLctx.getSupportedExtensions()||[];ret=2*exts.length;break;case 33307:case 33308:if(GL.currentContext.version<2){GL.recordError(1280);return}ret=name_==33307?3:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){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:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}program=GL.programs[program];if(pname==35716){var log=GLctx.getProgramInfoLog(program);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){if(!program.maxUniformLength){for(var i=0;i>2]=program.maxUniformLength}else if(pname==35722){if(!program.maxAttributeLength){for(var i=0;i>2]=program.maxAttributeLength}else if(pname==35381){if(!program.maxUniformBlockNameLength){for(var i=0;i>2]=program.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function jstoi_q(str){return parseInt(str)}function webglGetLeftBracePos(name){return name.slice(-1)=="]"&&name.lastIndexOf("[")}function webglPrepareUniformLocationsBeforeFirstUse(program){var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex>shift,pixels+bytes>>shift)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx.texParameteri(x0,x1,x2)}function _glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,pixels>>heapAccessShiftForWebGLHeap(heap))}else{GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,null)}return}var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function webglGetUniformLocation(location){var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?"["+webglLoc+"]":""))}return webglLoc}else{GL.recordError(1282)}}function _glUniform1f(location,v0){GLctx.uniform1f(webglGetUniformLocation(location),v0)}function _glUniform1i(location,v0){GLctx.uniform1i(webglGetUniformLocation(location),v0)}function _glUniform2f(location,v0,v1){GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)}function _glUniformMatrix4fv(location,count,transpose,value){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16)}function _glUseProgram(program){program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx.viewport(x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.windowMaximizeFunc=null;this.framebufferSizeFunc=null;this.windowContentScaleFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,scale:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,131082:0,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0,139276:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 96;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;getWasmTableEntry(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(GLFW.active.keyFunc){if(repeat)status=2;getWasmTableEntry(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))}},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"])return;if(GLFW.active.cursorEnterFunc){getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)}},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"])return;if(GLFW.active.cursorEnterFunc){getWasmTableEntry(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)}},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=delta;if(event.type=="mousewheel"){sx=event.wheelDeltaX}else{sx=event.deltaX}getWasmTableEntry(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(GLFW.active.windowSizeFunc){getWasmTableEntry(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)}},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(GLFW.active.framebufferSizeFunc){getWasmTableEntry(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)}},onWindowContentScaleChanged:function(scale){GLFW.scale=scale;if(!GLFW.active)return;if(GLFW.active.windowContentScaleFunc){getWasmTableEntry(GLFW.active.windowContentScaleFunc)(GLFW.active.id,GLFW.scale,GLFW.scale)}},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:[],lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:[];GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy>0]=gamepad.buttons[i].pressed}for(var i=0;i>2]=gamepad.axes[i]}}else{if(GLFW.joys[joy]){out("glfw joystick disconnected",joy);if(GLFW.joystickFunc){getWasmTableEntry(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=_malloc(event.dataTransfer.files.length*4);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=e=>{if(reader.readyState!=2){++written;out("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){getWasmTableEntry(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i>2]=filename}for(var i=0;i0},getCursorPos:function(winid,x,y){HEAPF64[x>>3]=Browser.mouseX;HEAPF64[y>>3]=Browser.mouseY},getMousePos:function(winid,x,y){HEAP32[x>>2]=Browser.mouseX;HEAP32[y>>2]=Browser.mouseY},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){HEAP32[x>>2]=wx}if(y){HEAP32[y>>2]=wy}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){HEAP32[width>>2]=ww}if(height){HEAP32[height>>2]=wh}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(win.windowSizeFunc){getWasmTableEntry(win.windowSizeFunc)(win.id,width,height)}},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc){getWasmTableEntry(win.windowCloseFunc)(win.id)}GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i>2]=ww}if(height){HEAP32[height>>2]=wh}}function _glfwGetInputMode(winid,mode){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{if(Browser.pointerLock){win.inputModes[mode]=212995}else{win.inputModes[mode]=212993}}}return win.inputModes[mode]}function _glfwGetJoystickAxes(joy,count){GLFW.refreshJoysticks();var state=GLFW.joys[joy];if(!state||!state.axes){HEAP32[count>>2]=0;return}HEAP32[count>>2]=state.axesCount;return state.axes}function _glfwGetJoystickButtons(joy,count){GLFW.refreshJoysticks();var state=GLFW.joys[joy];if(!state||!state.buttons){HEAP32[count>>2]=0;return}HEAP32[count>>2]=state.buttonsCount;return state.buttons}function _glfwGetKey(winid,key){return GLFW.getKey(winid,key)}function _glfwGetMonitorContentScale(monitor,x,y){HEAPF32[x>>2]=GLFW.scale;HEAPF32[y>>2]=GLFW.scale}function _glfwGetMonitorPos(monitor,x,y){HEAP32[x>>2]=0;HEAP32[y>>2]=0}function _glfwGetMonitorWorkarea(monitor,x,y,w,h){HEAP32[x>>2]=0;HEAP32[y>>2]=0;HEAP32[w>>2]=screen.availWidth;HEAP32[h>>2]=screen.availHeight}function _glfwGetMonitors(count){HEAP32[count>>2]=1;if(!GLFW.monitors){GLFW.monitors=_malloc(4);HEAP32[GLFW.monitors>>2]=1}return GLFW.monitors}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoMode(monitor){return 0}function _glfwGetWindowAttrib(winid,attrib){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.attributes[attrib]}function _glfwGetWindowPos(winid,x,y){GLFW.getWindowPos(winid,x,y)}function _glfwGetWindowSize(winid,width,height){GLFW.getWindowSize(winid,width,height)}function _emscripten_get_device_pixel_ratio(){return typeof devicePixelRatio=="number"&&devicePixelRatio||1}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;GLFW.scale=_emscripten_get_device_pixel_ratio();window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);(function updatePixelRatio(){window.matchMedia("(resolution: "+window.devicePixelRatio+"dppx)").addEventListener("change",updatePixelRatio,{once:true});GLFW.onWindowContentScaleChanged(_emscripten_get_device_pixel_ratio())})();Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push((width,height)=>{GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwPollEvents(){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetClipboardString(win,string){}function _glfwSetCursor(winid,cursor){}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPos(winid,x,y){GLFW.setCursorPos(winid,x,y)}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetInputMode(winid,mode,value){GLFW.setInputMode(winid,mode,value)}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMonitorCallback(cbfun){var prevcbfun=GLFW.monitorFunc;GLFW.monitorFunc=cbfun;return prevcbfun}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowCloseCallback(winid,cbfun){return GLFW.setWindowCloseCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowOpacity(winid,opacity){}function _glfwSetWindowPos(winid,x,y){GLFW.setWindowPos(winid,x,y)}function _glfwSetWindowPosCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowPosFunc;win.windowPosFunc=cbfun;return prevcbfun}function _glfwSetWindowRefreshCallback(winid,cbfun){return GLFW.setWindowRefreshCallback(winid,cbfun)}function _glfwSetWindowSize(winid,width,height){GLFW.setWindowSize(winid,width,height)}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSetWindowTitle(winid,title){GLFW.setWindowTitle(winid,title)}function _glfwShowWindow(winid){}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWaitEvents(){}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%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 rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}function stringToUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret}function getCFunc(ident){var func=Module["_"+ident];return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},"array":arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string"){return UTF8ToString(ret)}if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>2;args.forEach(arg=>{HEAP32[argv_ptr++]=stringToUTF8OnStack(arg)});HEAP32[argv_ptr]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/MegaBoy.wasm b/MegaBoy.wasm index cfc2a1cc752ccde58c8831a9ad92b47a057349b6..b084a4c01a74780cf8bfeb2bbbb5dbdd1d332a8c 100644 GIT binary patch delta 84321 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 Ow;{=|LO=1Eo%`RrhOyWH delta 84352 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