From d3e2f9dc4e71383211481d43549e21b782d9af56 Mon Sep 17 00:00:00 2001 From: san <44402346+SanGraphic@users.noreply.github.com> Date: Mon, 2 Mar 2026 22:13:40 +0300 Subject: [PATCH] fixed options not saving with some toggles. --- index.js | 2 +- index.wasm | Bin 7895590 -> 7895603 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index e8f65c2..dcb6fca 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -(function(){function humanReadableVersionToPacked(str){str=str.split("-")[0];var vers=str.split(".").slice(0,3);while(vers.length<3)vers.push("00");vers=vers.map((n,i,arr)=>n.padStart(2,"0"));return vers.join("")}var packedVersionToHumanReadable=n=>[n/1e4|0,(n/100|0)%100,n%100].join(".");var TARGET_NOT_SUPPORTED=2147483647;var currentNodeVersion=typeof process!=="undefined"&&process.versions?.node?humanReadableVersionToPacked(process.versions.node):TARGET_NOT_SUPPORTED;if(currentNodeVersion<16e4){throw new Error(`This emscripten-generated code requires node v${packedVersionToHumanReadable(16e4)} (detected v${packedVersionToHumanReadable(currentNodeVersion)})`)}var userAgent=typeof navigator!=="undefined"&&navigator.userAgent;if(!userAgent){return}var currentSafariVersion=userAgent.includes("Safari/")&&!userAgent.includes("Chrome/")&&userAgent.match(/Version\/(\d+\.?\d*\.?\d*)/)?humanReadableVersionToPacked(userAgent.match(/Version\/(\d+\.?\d*\.?\d*)/)[1]):TARGET_NOT_SUPPORTED;if(currentSafariVersion<15e4){throw new Error(`This emscripten-generated code requires Safari v${packedVersionToHumanReadable(15e4)} (detected v${currentSafariVersion})`)}var currentFirefoxVersion=userAgent.match(/Firefox\/(\d+(?:\.\d+)?)/)?parseFloat(userAgent.match(/Firefox\/(\d+(?:\.\d+)?)/)[1]):TARGET_NOT_SUPPORTED;if(currentFirefoxVersion<79){throw new Error(`This emscripten-generated code requires Firefox v79 (detected v${currentFirefoxVersion})`)}var currentChromeVersion=userAgent.match(/Chrome\/(\d+(?:\.\d+)?)/)?parseFloat(userAgent.match(/Chrome\/(\d+(?:\.\d+)?)/)[1]):TARGET_NOT_SUPPORTED;if(currentChromeVersion<85){throw new Error(`This emscripten-generated code requires Chrome v85 (detected v${currentChromeVersion})`)}})();var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(!Module["expectedDataFileDownloads"])Module["expectedDataFileDownloads"]=0;Module["expectedDataFileDownloads"]++;(()=>{var isPthread=typeof ENVIRONMENT_IS_PTHREAD!="undefined"&&ENVIRONMENT_IS_PTHREAD;var isWasmWorker=typeof ENVIRONMENT_IS_WASM_WORKER!="undefined"&&ENVIRONMENT_IS_WASM_WORKER;if(isPthread||isWasmWorker)return;var isNode=globalThis.process&&globalThis.process.versions&&globalThis.process.versions.node&&globalThis.process.type!="renderer";async function loadPackage(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/")}var PACKAGE_NAME="index.data";var REMOTE_PACKAGE_BASE="index.data";var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];async function fetchRemotePackage(packageName,packageSize){if(isNode){var contents=require("fs").readFileSync(packageName);return new Uint8Array(contents).buffer}if(!Module["dataFileDownloads"])Module["dataFileDownloads"]={};try{var response=await fetch(packageName)}catch(e){throw new Error(`Network Error: ${packageName}`,{e})}if(!response.ok){throw new Error(`${response.status}: ${response.url}`)}const chunks=[];const headers=response.headers;const total=Number(headers.get("Content-Length")||packageSize);let loaded=0;Module["setStatus"]&&Module["setStatus"]("Downloading data...");const reader=response.body.getReader();while(1){var{done,value}=await reader.read();if(done)break;chunks.push(value);loaded+=value.length;Module["dataFileDownloads"][packageName]={loaded,total};let totalLoaded=0;let totalSize=0;for(const download of Object.values(Module["dataFileDownloads"])){totalLoaded+=download.loaded;totalSize+=download.total}Module["setStatus"]&&Module["setStatus"](`Downloading data... (${totalLoaded}/${totalSize})`)}const packageData=new Uint8Array(chunks.map(c=>c.length).reduce((a,b)=>a+b,0));let offset=0;for(const chunk of chunks){packageData.set(chunk,offset);offset+=chunk.length}return packageData.buffer}var fetchPromise;var fetched=Module["getPreloadedPackage"]&&Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE);if(!fetched){fetchPromise=fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE)}async function runWithFS(Module){function assert(check,msg){if(!check)throw new Error(msg)}Module["FS_createPath"]("/","data",true,true);Module["FS_createPath"]("/data","app",true,true);Module["FS_createPath"]("/data/app","ios",true,true);Module["FS_createPath"]("/data/app/ios","dialog",true,true);Module["FS_createPath"]("/data/app/ios/dialog","ipad",true,true);Module["FS_createPath"]("/data/app/ios","dialog2",true,true);Module["FS_createPath"]("/data/app/ios","icons",true,true);Module["FS_createPath"]("/data/app","launch",true,true);Module["FS_createPath"]("/data","fonts",true,true);Module["FS_createPath"]("/data","images",true,true);Module["FS_createPath"]("/data/images","armor",true,true);Module["FS_createPath"]("/data/images","art",true,true);Module["FS_createPath"]("/data/images","environment",true,true);Module["FS_createPath"]("/data/images","font",true,true);Module["FS_createPath"]("/data/images","gui",true,true);Module["FS_createPath"]("/data/images/gui","badge",true,true);Module["FS_createPath"]("/data/images/gui","logo",true,true);Module["FS_createPath"]("/data/images","item",true,true);Module["FS_createPath"]("/data/images","mob",true,true);Module["FS_createPath"]("/data","lang",true,true);Module["FS_createPath"]("/data","sound",true,true);Module["FS_createPath"]("/data/sound","aac",true,true);Module["FS_createPath"]("/data/sound/aac","damage",true,true);Module["FS_createPath"]("/data/sound/aac","mob",true,true);Module["FS_createPath"]("/data/sound/aac","random",true,true);Module["FS_createPath"]("/data/sound/aac","step",true,true);for(var file of metadata["files"]){var name=file["filename"];Module["addRunDependency"](`fp ${name}`)}async function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer.constructor.name===ArrayBuffer.name,"bad input to processPackageData "+arrayBuffer.constructor.name);var byteArray=new Uint8Array(arrayBuffer);for(var file of metadata["files"]){var name=file["filename"];var data=byteArray.subarray(file["start"],file["end"]);Module["FS_createDataFile"](name,null,data,true,true,true);Module["removeRunDependency"](`fp ${name}`)}Module["removeRunDependency"]("datafile_index.data")}Module["addRunDependency"]("datafile_index.data");if(!Module["preloadResults"])Module["preloadResults"]={};Module["preloadResults"][PACKAGE_NAME]={fromCache:false};if(!fetched){fetched=await fetchPromise}processPackageData(fetched)}if(Module["calledRun"]){runWithFS(Module)}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}}loadPackage({files:[{filename:"/data/.DS_Store",start:0,end:14340},{filename:"/data/app/.DS_Store",start:14340,end:24584},{filename:"/data/app/ios/bg128.png",start:24584,end:26300},{filename:"/data/app/ios/bg64.png",start:26300,end:27045},{filename:"/data/app/ios/dialog/cancel_0.png",start:27045,end:28929},{filename:"/data/app/ios/dialog/cancel_0_1.png",start:28929,end:29566},{filename:"/data/app/ios/dialog/cancel_0_3.png",start:29566,end:30490},{filename:"/data/app/ios/dialog/cancel_1.png",start:30490,end:32433},{filename:"/data/app/ios/dialog/cancel_1_1.png",start:32433,end:33106},{filename:"/data/app/ios/dialog/cancel_1_3.png",start:33106,end:34078},{filename:"/data/app/ios/dialog/create_0.png",start:34078,end:36012},{filename:"/data/app/ios/dialog/create_0_1.png",start:36012,end:36664},{filename:"/data/app/ios/dialog/create_0_3.png",start:36664,end:37604},{filename:"/data/app/ios/dialog/create_1.png",start:37604,end:39600},{filename:"/data/app/ios/dialog/create_1_1.png",start:39600,end:40301},{filename:"/data/app/ios/dialog/create_1_3.png",start:40301,end:41313},{filename:"/data/app/ios/dialog/ipad/cancel_0_4.png",start:41313,end:42336},{filename:"/data/app/ios/dialog/ipad/cancel_1_4.png",start:42336,end:43391},{filename:"/data/app/ios/dialog/ipad/create_0_4.png",start:43391,end:44476},{filename:"/data/app/ios/dialog/ipad/create_1_4.png",start:44476,end:45606},{filename:"/data/app/ios/dialog/ipad/creative_0_4.png",start:45606,end:46776},{filename:"/data/app/ios/dialog/ipad/creative_1_4.png",start:46776,end:49453},{filename:"/data/app/ios/dialog/ipad/creative_3_4.png",start:49453,end:52042},{filename:"/data/app/ios/dialog/ipad/survival_0_4.png",start:52042,end:53174},{filename:"/data/app/ios/dialog/ipad/survival_1_4.png",start:53174,end:55763},{filename:"/data/app/ios/dialog/ipad/survival_3_4.png",start:55763,end:58264},{filename:"/data/app/ios/dialog/ipad/worldname_ipad_4.png",start:58264,end:59195},{filename:"/data/app/ios/dialog/save_0.png",start:59195,end:61016},{filename:"/data/app/ios/dialog/save_0_3.png",start:61016,end:62351},{filename:"/data/app/ios/dialog/save_1.png",start:62351,end:64232},{filename:"/data/app/ios/dialog/save_1_3.png",start:64232,end:65621},{filename:"/data/app/ios/dialog/worldname_ipad.png",start:65621,end:66160},{filename:"/data/app/ios/dialog/worldname_ipad_3.png",start:66160,end:67806},{filename:"/data/app/ios/dialog/worldname_iphone.png",start:67806,end:68327},{filename:"/data/app/ios/dialog/worldname_iphone_3.png",start:68327,end:69863},{filename:"/data/app/ios/dialog2/cancel_0_1.png",start:69863,end:70475},{filename:"/data/app/ios/dialog2/cancel_0_3.png",start:70475,end:73754},{filename:"/data/app/ios/dialog2/cancel_1_1.png",start:73754,end:74386},{filename:"/data/app/ios/dialog2/cancel_1_3.png",start:74386,end:77722},{filename:"/data/app/ios/dialog2/create_0_1.png",start:77722,end:78352},{filename:"/data/app/ios/dialog2/create_0_3.png",start:78352,end:81657},{filename:"/data/app/ios/dialog2/create_1_1.png",start:81657,end:82306},{filename:"/data/app/ios/dialog2/create_1_3.png",start:82306,end:85662},{filename:"/data/app/ios/dialog2/creative_0_3.png",start:85662,end:89044},{filename:"/data/app/ios/dialog2/creative_1_3.png",start:89044,end:92470},{filename:"/data/app/ios/dialog2/survival_0_3.png",start:92470,end:95828},{filename:"/data/app/ios/dialog2/survival_1_3.png",start:95828,end:99237},{filename:"/data/app/ios/dialog2/worldname.png",start:99237,end:99826},{filename:"/data/app/ios/dialog2/worldname_3.png",start:99826,end:101669},{filename:"/data/app/ios/dialog2/worldname_ipad.png",start:101669,end:102208},{filename:"/data/app/ios/dialog2/worldname_ipad_3.png",start:102208,end:103854},{filename:"/data/app/ios/dialog2/worldname_iphone.png",start:103854,end:106920},{filename:"/data/app/ios/dialog2/worldname_iphone5_3.png",start:106920,end:110143},{filename:"/data/app/ios/dialog2/worldname_iphone_3.png",start:110143,end:113331},{filename:"/data/app/ios/icons/Icon-72.png",start:113331,end:125786},{filename:"/data/app/ios/icons/Icon-72_lite.png",start:125786,end:139006},{filename:"/data/app/ios/icons/Icon-Small-50.png",start:139006,end:147395},{filename:"/data/app/ios/icons/Icon-Small-50_lite.png",start:147395,end:156101},{filename:"/data/app/ios/icons/Icon-Small.png",start:156101,end:161103},{filename:"/data/app/ios/icons/Icon-Small@2x.png",start:161103,end:170855},{filename:"/data/app/ios/icons/Icon-Small@2x_lite.png",start:170855,end:181085},{filename:"/data/app/ios/icons/Icon-Small_lite.png",start:181085,end:186162},{filename:"/data/app/ios/icons/Icon.png",start:186162,end:195743},{filename:"/data/app/ios/icons/Icon@2x.png",start:195743,end:216449},{filename:"/data/app/ios/icons/Icon@2x_lite.png",start:216449,end:239100},{filename:"/data/app/ios/icons/Icon_lite.png",start:239100,end:249138},{filename:"/data/app/ios/icons/mcpe_ios_icon.png",start:249138,end:326889},{filename:"/data/app/ios/icons/mcpe_lite_ios_icon.png",start:326889,end:419849},{filename:"/data/app/launch/Default-Landscape~ipad.png",start:419849,end:487606},{filename:"/data/app/launch/Default.png",start:487606,end:507878},{filename:"/data/app/launch/Default@2x.png",start:507878,end:576450},{filename:"/data/fonts/minecraft.ttf",start:576450,end:594126},{filename:"/data/images/armor/chain_1.png",start:594126,end:595090},{filename:"/data/images/armor/chain_2.png",start:595090,end:595613},{filename:"/data/images/armor/cloth_1.png",start:595613,end:596752},{filename:"/data/images/armor/cloth_2.png",start:596752,end:597462},{filename:"/data/images/armor/diamond_1.png",start:597462,end:598680},{filename:"/data/images/armor/diamond_2.png",start:598680,end:599404},{filename:"/data/images/armor/gold_1.png",start:599404,end:600602},{filename:"/data/images/armor/gold_2.png",start:600602,end:601310},{filename:"/data/images/armor/iron_1.png",start:601310,end:602443},{filename:"/data/images/armor/iron_2.png",start:602443,end:603129},{filename:"/data/images/art/kz.png",start:603129,end:688716},{filename:"/data/images/environment/clouds.png",start:688716,end:702428},{filename:"/data/images/font/default8.png",start:702428,end:704579},{filename:"/data/images/gui/background.png",start:704579,end:704947},{filename:"/data/images/gui/badge/minecon140.png",start:704947,end:708051},{filename:"/data/images/gui/bg32.png",start:708051,end:708559},{filename:"/data/images/gui/cursor.png",start:708559,end:708840},{filename:"/data/images/gui/default_world.png",start:708840,end:734078},{filename:"/data/images/gui/gui.png",start:734078,end:757630},{filename:"/data/images/gui/gui2.png",start:757630,end:771514},{filename:"/data/images/gui/gui_blocks.png",start:771514,end:949518},{filename:"/data/images/gui/icons.png",start:949518,end:951958},{filename:"/data/images/gui/itemframe.png",start:951958,end:957198},{filename:"/data/images/gui/items.png",start:957198,end:986953},{filename:"/data/images/gui/logo/raknet_high_72.png",start:986953,end:1008342},{filename:"/data/images/gui/logo/raknet_low_18.png",start:1008342,end:1010185},{filename:"/data/images/gui/pi_title.png",start:1010185,end:1016956},{filename:"/data/images/gui/spritesheet.png",start:1016956,end:1028558},{filename:"/data/images/gui/title.png",start:1028558,end:1044308},{filename:"/data/images/gui/touchgui.png",start:1044308,end:1064017},{filename:"/data/images/item/arrows.png",start:1064017,end:1064339},{filename:"/data/images/item/camera.png",start:1064339,end:1065021},{filename:"/data/images/item/sign.png",start:1065021,end:1066281},{filename:"/data/images/mob/char.png",start:1066281,end:1067641},{filename:"/data/images/mob/chicken.png",start:1067641,end:1068133},{filename:"/data/images/mob/cow.png",start:1068133,end:1069511},{filename:"/data/images/mob/creeper.png",start:1069511,end:1072511},{filename:"/data/images/mob/pig.png",start:1072511,end:1075816},{filename:"/data/images/mob/pigzombie.png",start:1075816,end:1078849},{filename:"/data/images/mob/sheep.png",start:1078849,end:1081291},{filename:"/data/images/mob/sheep_fur.png",start:1081291,end:1082942},{filename:"/data/images/mob/skeleton.png",start:1082942,end:1083836},{filename:"/data/images/mob/spider.png",start:1083836,end:1086390},{filename:"/data/images/mob/zombie.png",start:1086390,end:1087705},{filename:"/data/images/particles.png",start:1087705,end:1089618},{filename:"/data/images/terrain.png",start:1089618,end:1181216},{filename:"/data/images/terrain.pvr",start:1181216,end:1214036},{filename:"/data/images/terrain.pvr4",start:1214036,end:1246856},{filename:"/data/images/terrain.pvrtc",start:1246856,end:1279676},{filename:"/data/images/terrain_4444.h",start:1279676,end:1641848},{filename:"/data/images/terrain_5551.h",start:1641848,end:2004020},{filename:"/data/images/terrain_565.h",start:2004020,end:2366191},{filename:"/data/images/terrain_565_2.h",start:2366191,end:2728364},{filename:"/data/lang/en_US.lang",start:2728364,end:2766161},{filename:"/data/sound/.DS_Store",start:2766161,end:2774357},{filename:"/data/sound/aac/damage/fallbig1.m4a",start:2774357,end:2781274},{filename:"/data/sound/aac/damage/fallbig2.m4a",start:2781274,end:2787090},{filename:"/data/sound/aac/damage/fallsmall.m4a",start:2787090,end:2791909},{filename:"/data/sound/aac/mob/chicken1.m4a",start:2791909,end:2797924},{filename:"/data/sound/aac/mob/chicken2.m4a",start:2797924,end:2805318},{filename:"/data/sound/aac/mob/chicken3.m4a",start:2805318,end:2810491},{filename:"/data/sound/aac/mob/chickenhurt1.m4a",start:2810491,end:2816310},{filename:"/data/sound/aac/mob/chickenhurt2.m4a",start:2816310,end:2820761},{filename:"/data/sound/aac/mob/chickenplop.m4a",start:2820761,end:2823516},{filename:"/data/sound/aac/mob/cow1.m4a",start:2823516,end:2835790},{filename:"/data/sound/aac/mob/cow2.m4a",start:2835790,end:2848001},{filename:"/data/sound/aac/mob/cow3.m4a",start:2848001,end:2865045},{filename:"/data/sound/aac/mob/cow4.m4a",start:2865045,end:2878329},{filename:"/data/sound/aac/mob/cowhurt1.m4a",start:2878329,end:2883517},{filename:"/data/sound/aac/mob/cowhurt2.m4a",start:2883517,end:2888496},{filename:"/data/sound/aac/mob/cowhurt3.m4a",start:2888496,end:2894114},{filename:"/data/sound/aac/mob/creeper1.m4a",start:2894114,end:2897964},{filename:"/data/sound/aac/mob/creeper2.m4a",start:2897964,end:2901853},{filename:"/data/sound/aac/mob/creeper3.m4a",start:2901853,end:2905744},{filename:"/data/sound/aac/mob/creeper4.m4a",start:2905744,end:2909711},{filename:"/data/sound/aac/mob/creeperdeath.m4a",start:2909711,end:2916822},{filename:"/data/sound/aac/mob/pig1.m4a",start:2916822,end:2921093},{filename:"/data/sound/aac/mob/pig2.m4a",start:2921093,end:2926049},{filename:"/data/sound/aac/mob/pig3.m4a",start:2926049,end:2930020},{filename:"/data/sound/aac/mob/pigdeath.m4a",start:2930020,end:2936139},{filename:"/data/sound/aac/mob/sheep1.m4a",start:2936139,end:2945414},{filename:"/data/sound/aac/mob/sheep2.m4a",start:2945414,end:2953859},{filename:"/data/sound/aac/mob/sheep3.m4a",start:2953859,end:2962039},{filename:"/data/sound/aac/mob/skeleton1.m4a",start:2962039,end:2967667},{filename:"/data/sound/aac/mob/skeleton2.m4a",start:2967667,end:2972359},{filename:"/data/sound/aac/mob/skeleton3.m4a",start:2972359,end:2977496},{filename:"/data/sound/aac/mob/skeletonhurt1.m4a",start:2977496,end:2981841},{filename:"/data/sound/aac/mob/skeletonhurt2.m4a",start:2981841,end:2986480},{filename:"/data/sound/aac/mob/skeletonhurt3.m4a",start:2986480,end:2991056},{filename:"/data/sound/aac/mob/skeletonhurt4.m4a",start:2991056,end:2995741},{filename:"/data/sound/aac/mob/spider1.m4a",start:2995741,end:3001850},{filename:"/data/sound/aac/mob/spider2.m4a",start:3001850,end:3006408},{filename:"/data/sound/aac/mob/spider3.m4a",start:3006408,end:3011410},{filename:"/data/sound/aac/mob/spider4.m4a",start:3011410,end:3015562},{filename:"/data/sound/aac/mob/spiderdeath.m4a",start:3015562,end:3023200},{filename:"/data/sound/aac/mob/zombie1.m4a",start:3023200,end:3036684},{filename:"/data/sound/aac/mob/zombie2.m4a",start:3036684,end:3049150},{filename:"/data/sound/aac/mob/zombie3.m4a",start:3049150,end:3066765},{filename:"/data/sound/aac/mob/zombiedeath.m4a",start:3066765,end:3074044},{filename:"/data/sound/aac/mob/zombiehurt1.m4a",start:3074044,end:3082423},{filename:"/data/sound/aac/mob/zombiehurt2.m4a",start:3082423,end:3090738},{filename:"/data/sound/aac/mob/zpig1.m4a",start:3090738,end:3098324},{filename:"/data/sound/aac/mob/zpig2.m4a",start:3098324,end:3107275},{filename:"/data/sound/aac/mob/zpig3.m4a",start:3107275,end:3111248},{filename:"/data/sound/aac/mob/zpig4.m4a",start:3111248,end:3116456},{filename:"/data/sound/aac/mob/zpigangry1.m4a",start:3116456,end:3123764},{filename:"/data/sound/aac/mob/zpigangry2.m4a",start:3123764,end:3127682},{filename:"/data/sound/aac/mob/zpigangry3.m4a",start:3127682,end:3135659},{filename:"/data/sound/aac/mob/zpigangry4.m4a",start:3135659,end:3144699},{filename:"/data/sound/aac/mob/zpigdeath.m4a",start:3144699,end:3154253},{filename:"/data/sound/aac/mob/zpighurt1.m4a",start:3154253,end:3158886},{filename:"/data/sound/aac/mob/zpighurt2.m4a",start:3158886,end:3163176},{filename:"/data/sound/aac/random/bow.m4a",start:3163176,end:3167178},{filename:"/data/sound/aac/random/bowhit1.m4a",start:3167178,end:3174531},{filename:"/data/sound/aac/random/bowhit2.m4a",start:3174531,end:3181262},{filename:"/data/sound/aac/random/bowhit3.m4a",start:3181262,end:3189552},{filename:"/data/sound/aac/random/bowhit4.m4a",start:3189552,end:3199619},{filename:"/data/sound/aac/random/click.m4a",start:3199619,end:3203821},{filename:"/data/sound/aac/random/door_close.m4a",start:3203821,end:3208057},{filename:"/data/sound/aac/random/door_open.m4a",start:3208057,end:3212999},{filename:"/data/sound/aac/random/eat1.m4a",start:3212999,end:3215891},{filename:"/data/sound/aac/random/eat2.m4a",start:3215891,end:3218914},{filename:"/data/sound/aac/random/eat3.m4a",start:3218914,end:3221861},{filename:"/data/sound/aac/random/explode.m4a",start:3221861,end:3227416},{filename:"/data/sound/aac/random/fuse.m4a",start:3227416,end:3241568},{filename:"/data/sound/aac/random/glass1.m4a",start:3241568,end:3248302},{filename:"/data/sound/aac/random/glass2.m4a",start:3248302,end:3254909},{filename:"/data/sound/aac/random/glass3.m4a",start:3254909,end:3261123},{filename:"/data/sound/aac/random/hurt.m4a",start:3261123,end:3269559},{filename:"/data/sound/aac/random/pop.m4a",start:3269559,end:3271654},{filename:"/data/sound/aac/random/splash.m4a",start:3271654,end:3277170},{filename:"/data/sound/aac/random/water.m4a",start:3277170,end:3299333},{filename:"/data/sound/aac/step/cloth1.m4a",start:3299333,end:3302368},{filename:"/data/sound/aac/step/cloth2.m4a",start:3302368,end:3305419},{filename:"/data/sound/aac/step/cloth3.m4a",start:3305419,end:3308530},{filename:"/data/sound/aac/step/cloth4.m4a",start:3308530,end:3311574},{filename:"/data/sound/aac/step/grass1.m4a",start:3311574,end:3316247},{filename:"/data/sound/aac/step/grass2.m4a",start:3316247,end:3321556},{filename:"/data/sound/aac/step/grass3.m4a",start:3321556,end:3326373},{filename:"/data/sound/aac/step/grass4.m4a",start:3326373,end:3331231},{filename:"/data/sound/aac/step/gravel2.m4a",start:3331231,end:3336798},{filename:"/data/sound/aac/step/gravel3.m4a",start:3336798,end:3342137},{filename:"/data/sound/aac/step/gravel4.m4a",start:3342137,end:3347661},{filename:"/data/sound/aac/step/ladder1.m4a",start:3347661,end:3351686},{filename:"/data/sound/aac/step/ladder2.m4a",start:3351686,end:3355716},{filename:"/data/sound/aac/step/ladder3.m4a",start:3355716,end:3359967},{filename:"/data/sound/aac/step/ladder4.m4a",start:3359967,end:3363978},{filename:"/data/sound/aac/step/sand1.m4a",start:3363978,end:3367317},{filename:"/data/sound/aac/step/sand2.m4a",start:3367317,end:3370205},{filename:"/data/sound/aac/step/sand3.m4a",start:3370205,end:3373377},{filename:"/data/sound/aac/step/sand4.m4a",start:3373377,end:3376697},{filename:"/data/sound/aac/step/snow1.m4a",start:3376697,end:3381082},{filename:"/data/sound/aac/step/snow2.m4a",start:3381082,end:3385692},{filename:"/data/sound/aac/step/snow3.m4a",start:3385692,end:3390378},{filename:"/data/sound/aac/step/snow4.m4a",start:3390378,end:3394809},{filename:"/data/sound/aac/step/stone1.m4a",start:3394809,end:3400880},{filename:"/data/sound/aac/step/stone2.m4a",start:3400880,end:3406019},{filename:"/data/sound/aac/step/stone3.m4a",start:3406019,end:3410593},{filename:"/data/sound/aac/step/stone4.m4a",start:3410593,end:3416100},{filename:"/data/sound/aac/step/wood1.m4a",start:3416100,end:3422602},{filename:"/data/sound/aac/step/wood2.m4a",start:3422602,end:3430062},{filename:"/data/sound/aac/step/wood3.m4a",start:3430062,end:3437220},{filename:"/data/sound/aac/step/wood4.m4a",start:3437220,end:3444853}],remote_package_size:3444853})})();if(typeof ENVIRONMENT_IS_WASM_WORKER!="undefined"&&ENVIRONMENT_IS_WASM_WORKER||typeof ENVIRONMENT_IS_PTHREAD!="undefined"&&ENVIRONMENT_IS_PTHREAD||typeof ENVIRONMENT_IS_AUDIO_WORKLET!="undefined"&&ENVIRONMENT_IS_AUDIO_WORKLET)Module["preRun"]=[];var necessaryPreJSTasks=Module["preRun"].slice();if(!Module["preRun"])throw"Module.preRun should exist because file support used it; did a pre-js delete it?";necessaryPreJSTasks.forEach(task=>{if(Module["preRun"].indexOf(task)<0)throw"All preRun tasks that exist before user pre-js code should remain after; did you replace Module or modify Module.preRun?"});var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=globalThis.document?.currentScript?.src;if(typeof __filename!="undefined"){_scriptName=__filename}else if(ENVIRONMENT_IS_WORKER){_scriptName=self.location.href}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){const isNode=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(!isNode)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var fs=require("node:fs");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);assert(Buffer.isBuffer(ret));return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");assert(binary?Buffer.isBuffer(ret):typeof ret=="string");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_SHELL){}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}if(!(globalThis.window||globalThis.WorkerGlobalScope))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");{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=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{throw new Error("environment detection error")}var out=console.log.bind(console);var err=console.error.bind(console);assert(!ENVIRONMENT_IS_SHELL,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.");var wasmBinary;if(!globalThis.WebAssembly){err("no native wasm support detected")}var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed"+(text?": "+text:""))}}var isFileURI=filename=>filename.startsWith("file://");function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);if(max==0){max+=4}HEAPU32[max>>2]=34821223;checkInt32(34821223);HEAPU32[max+4>>2]=2310721022;checkInt32(2310721022);HEAPU32[0>>2]=1668509029;checkInt32(1668509029)}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();if(max==0){max+=4}var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`)}if(HEAPU32[0>>2]!=1668509029){abort("Runtime error: The application has corrupted its heap memory area (address zero)!")}}var runtimeDebug=true;function dbg(...args){if(!runtimeDebug&&typeof runtimeDebug!="undefined")return;console.warn(...args)}(()=>{var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)abort("Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)")})();function consumedModuleProp(prop){if(!Object.getOwnPropertyDescriptor(Module,prop)){Object.defineProperty(Module,prop,{configurable:true,set(){abort(`Attempt to set \`Module.${prop}\` after it has already been processed. This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}}function makeInvalidEarlyAccess(name){return()=>assert(false,`call to '${name}' via reference taken before Wasm module initialization`)}function ignoredModuleProp(prop){if(Object.getOwnPropertyDescriptor(Module,prop)){abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`)}}function isExportedByForceFilesystem(name){return name==="FS_createPath"||name==="FS_createDataFile"||name==="FS_createPreloadedFile"||name==="FS_preloadFile"||name==="FS_unlink"||name==="addRunDependency"||name==="FS_createLazyFile"||name==="FS_createDevice"||name==="removeRunDependency"}function hookGlobalSymbolAccess(sym,func){if(!Object.getOwnPropertyDescriptor(globalThis,sym)){Object.defineProperty(globalThis,sym,{configurable:true,get(){func();return undefined}})}}function missingGlobal(sym,msg){hookGlobalSymbolAccess(sym,()=>{warnOnce(`\`${sym}\` is no longer defined by emscripten. ${msg}`)})}missingGlobal("buffer","Please use HEAP8.buffer or wasmMemory.buffer");missingGlobal("asm","Please use wasmExports instead");function missingLibrarySymbol(sym){hookGlobalSymbolAccess(sym,()=>{var msg=`\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`;var librarySymbol=sym;if(!librarySymbol.startsWith("_")){librarySymbol="$"+sym}msg+=` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`;if(isExportedByForceFilesystem(sym)){msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"}warnOnce(msg)});unexportedRuntimeSymbol(sym)}function unexportedRuntimeSymbol(sym){if(!Object.getOwnPropertyDescriptor(Module,sym)){Object.defineProperty(Module,sym,{configurable:true,get(){var msg=`'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;if(isExportedByForceFilesystem(sym)){msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"}abort(msg)}})}}var MAX_UINT8=2**8-1;var MAX_UINT16=2**16-1;var MAX_UINT32=2**32-1;var MAX_UINT53=2**53-1;var MAX_UINT64=2**64-1;var MIN_INT8=-(2**(8-1));var MIN_INT16=-(2**(16-1));var MIN_INT32=-(2**(32-1));var MIN_INT53=-(2**(53-1));var MIN_INT64=-(2**(64-1));function checkInt(value,bits,min,max){assert(Number.isInteger(Number(value)),`attempt to write non-integer (${value}) into integer heap`);assert(value<=max,`value (${value}) too large to write as ${bits}-bit value`);assert(value>=min,`value (${value}) too small to write as ${bits}-bit value`)}var checkInt8=value=>checkInt(value,8,MIN_INT8,MAX_UINT8);var checkInt16=value=>checkInt(value,16,MIN_INT16,MAX_UINT16);var checkInt32=value=>checkInt(value,32,MIN_INT32,MAX_UINT32);var checkInt64=value=>checkInt(value,64,MIN_INT64,MAX_UINT64);var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}assert(globalThis.Int32Array&&globalThis.Float64Array&&Int32Array.prototype.subarray&&Int32Array.prototype.set,"JS engine does not provide full typed array support");function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}consumedModuleProp("preRun");callRuntimeCallbacks(onPreRuns)}function initRuntime(){assert(!runtimeInitialized);runtimeInitialized=true;setStackLimits();checkStackCookie();SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function preMain(){checkStackCookie()}function postRun(){checkStackCookie();if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}consumedModuleProp("postRun");callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;var e=new WebAssembly.RuntimeError(what);throw e}function createExportWrapper(name,nargs){return(...args)=>{assert(runtimeInitialized,`native function \`${name}\` called before runtime initialization`);var f=wasmExports[name];assert(f,`exported native function \`${name}\` not found`);assert(args.length<=nargs,`native function \`${name}\` called with ${args.length} args but expects ${nargs}`);return f(...args)}}var wasmBinaryFile;function findWasmBinary(){return locateFile("index.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);if(isFileURI(binaryFile)){err(`warning: Loading from a file URI (${binaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`)}abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");trueModule=null;return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{try{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);reject(e)}})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var runDependencies=0;var dependenciesFulfilled=null;var runDependencyTracking={};var runDependencyWatcher=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);assert(id,"removeRunDependency requires an ID");assert(runDependencyTracking[id]);delete runDependencyTracking[id];if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies);assert(id,"addRunDependency requires an ID");assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&globalThis.setInterval){runDependencyWatcher=setInterval(()=>{if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err("still waiting on run dependencies:")}err(`dependency: ${dep}`)}if(shown){err("(end of list)")}},1e4);runDependencyWatcher.unref?.()}};var noExitRuntime=true;var ptrToString=ptr=>{assert(typeof ptr==="number",`ptrToString expects a number, got ${typeof ptr}`);ptr>>>=0;return"0x"+ptr.toString(16).padStart(8,"0")};var setStackLimits=()=>{var stackLow=_emscripten_stack_get_base();var stackHigh=_emscripten_stack_get_end();___set_stack_limits(stackLow,stackHigh)};function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;checkInt8(value);break;case"i8":HEAP8[ptr]=value;checkInt8(value);break;case"i16":HEAP16[ptr>>1]=value;checkInt16(value);break;case"i32":HEAP32[ptr>>2]=value;checkInt32(value);break;case"i64":HEAP64[ptr>>3]=BigInt(value);checkInt64(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);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 UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{assert(typeof ptr=="number",`UTF8ToString expects a number (got ${typeof ptr})`);return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):""};var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught;checkInt8(caught)}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown;checkInt8(rethrown)}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;assert(false,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")};var ___handle_stack_overflow=requested=>{var base=_emscripten_stack_get_base();var end=_emscripten_stack_get_end();abort(`stack overflow (Attempt to set SP to ${ptrToString(requested)}`+`, with stack limits [${ptrToString(end)} - ${ptrToString(base)}`+"]). If you require more stack space build with -sSTACK_SIZE=")};var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>crypto.getRandomValues(view)};var randomFill=view=>{(randomFill=initRandomFill())(view)};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.slice(-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.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[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).slice(1);to=PATH_FS.resolve(to).slice(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{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{assert(typeof str==="string",`stringToUTF8Array expects a string (got ${typeof str})`);if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=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;if(u>1114111)warnOnce("Invalid Unicode code point "+ptrToString(u)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var 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 FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(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){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(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(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(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(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.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw new FS.ErrnoError(44)},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(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);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{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};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var IDBFS={dbs:{},indexedDB:()=>{assert(typeof indexedDB!="undefined","IDBFS used, but indexedDB not supported");return indexedDB},DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",queuePersist:mount=>{function onPersistComplete(){if(mount.idbPersistState==="again")startPersist();else mount.idbPersistState=0}function startPersist(){mount.idbPersistState="idb";IDBFS.syncfs(mount,false,onPersistComplete)}if(!mount.idbPersistState){mount.idbPersistState=setTimeout(startPersist,0)}else if(mount.idbPersistState==="idb"){mount.idbPersistState="again"}},mount:mount=>{var mnt=MEMFS.mount(mount);if(mount?.opts?.autoPersist){mount.idbPersistState=0;var memfs_node_ops=mnt.node_ops;mnt.node_ops={...mnt.node_ops};mnt.node_ops.mknod=(parent,name,mode,dev)=>{var node=memfs_node_ops.mknod(parent,name,mode,dev);node.node_ops=mnt.node_ops;node.idbfs_mount=mnt.mount;node.memfs_stream_ops=node.stream_ops;node.stream_ops={...node.stream_ops};node.stream_ops.write=(stream,buffer,offset,length,position,canOwn)=>{stream.node.isModified=true;return node.memfs_stream_ops.write(stream,buffer,offset,length,position,canOwn)};node.stream_ops.close=stream=>{var n=stream.node;if(n.isModified){IDBFS.queuePersist(n.idbfs_mount);n.isModified=false}if(n.memfs_stream_ops.close)return n.memfs_stream_ops.close(stream)};IDBFS.queuePersist(mnt.mount);return node};mnt.node_ops.rmdir=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rmdir(...args));mnt.node_ops.symlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.symlink(...args));mnt.node_ops.unlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.unlink(...args));mnt.node_ops.rename=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rename(...args))}return mnt},syncfs:(mount,populate,callback)=>{IDBFS.getLocalSet(mount,(err,local)=>{if(err)return callback(err);IDBFS.getRemoteSet(mount,(err,remote)=>{if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)})})},quit:()=>{for(var value of Object.values(IDBFS.dbs)){value.close()}IDBFS.dbs={}},getDB:(name,callback)=>{var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback("Unable to connect to IndexedDB")}req.onupgradeneeded=e=>{var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false})}};req.onsuccess=()=>{db=req.result;IDBFS.dbs[name]=db;callback(null,db)};req.onerror=e=>{callback(e.target.error);e.preventDefault()}},getLocalSet:(mount,callback)=>{var entries={};function isRealDir(p){return p!=="."&&p!==".."}function toAbsolute(root){return p=>PATH.join2(root,p)}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push(...FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:"local",entries})},getRemoteSet:(mount,callback)=>{var entries={};IDBFS.getDB(mount.mountpoint,(err,db)=>{if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=e=>{callback(e.target.error);e.preventDefault()};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=event=>{var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db,entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()}}catch(e){return callback(e)}})},loadLocalEntry:(path,callback)=>{var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error("node type not supported"))}},storeLocalEntry:(path,entry,callback)=>{try{if(FS.isDir(entry["mode"])){FS.mkdirTree(path,entry["mode"])}else if(FS.isFile(entry["mode"])){FS.writeFile(path,entry["contents"],{canOwn:true})}else{return callback(new Error("node type not supported"))}FS.chmod(path,entry["mode"]);FS.utime(path,entry["timestamp"],entry["timestamp"])}catch(e){return callback(e)}callback(null)},removeLocalEntry:(path,callback)=>{try{var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)},loadRemoteEntry:(store,path,callback)=>{var req=store.get(path);req.onsuccess=event=>callback(null,event.target.result);req.onerror=e=>{callback(e.target.error);e.preventDefault()}},storeRemoteEntry:(store,path,entry,callback)=>{try{var req=store.put(entry,path)}catch(e){callback(e);return}req.onsuccess=event=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},removeRemoteEntry:(store,path,callback)=>{var req=store.delete(path);req.onsuccess=event=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},reconcile:(src,dst,callback)=>{var total=0;var create=[];for(var[key,e]of Object.entries(src.entries)){var e2=dst.entries[key];if(!e2||e["timestamp"].getTime()!=e2["timestamp"].getTime()){create.push(key);total++}}var remove=[];for(var key of Object.keys(dst.entries)){if(!src.entries[key]){remove.push(key);total++}}if(!total){return callback(null)}var errored=false;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err&&!errored){errored=true;return callback(err)}}transaction.onerror=transaction.onabort=e=>{done(e.target.error);e.preventDefault()};transaction.oncomplete=e=>{if(!errored){callback(null)}};for(const path of create.sort()){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(err,entry)=>{if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)})}else{IDBFS.loadLocalEntry(path,(err,entry)=>{if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)})}}for(var path of remove.sort().reverse()){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}}};var strError=errno=>UTF8ToString(_strerror(errno));var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>{var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){assert(plugin["handle"].constructor.name==="AsyncFunction","Filesystem plugin handlers must be async functions (See #24914)");return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class extends Error{name="ErrnoError";constructor(errno){super(runtimeInitialized?strError(errno):"");this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";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)}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){assert(typeof parent=="object");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}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}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}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},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)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){assert(fd>=-1);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},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;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(...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){assert(FS.syncFSRequests>0);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)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){if(typeof type=="string"){throw type}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,opts,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);for(var[hash,current]of Object.entries(FS.nameTable)){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);assert(idx!==-1);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){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}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)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){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);old_node.parent=new_dir}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;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return 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 link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){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)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},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}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,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,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}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){assert(offset>=0);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){assert(offset>=0);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},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)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){assert(offset>=0);if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},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"){abort(`Invalid encoding type "${opts.encoding}"`)}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"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{abort("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,llseek:()=>0});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){randomFill(randomBuffer);randomLeft=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",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}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);assert(stdin.fd===0,`invalid handle for stdin (${stdin.fd})`);assert(stdout.fd===1,`invalid handle for stdout (${stdout.fd})`);assert(stderr.fd===2,`invalid handle for stderr (${stderr.fd})`)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS,IDBFS}},init(input,output,error){assert(!FS.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;_fflush(0);for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){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){if(e.errno!=20)throw 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;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("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)abort("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)abort("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))abort("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")abort("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}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}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);assert(size>=0);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,allocated:true}};node.stream_ops=stream_ops;return node},absolutePath(){abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder(){abort("FS.createFolder has been removed; use FS.mkdir instead")},createLink(){abort("FS.createLink has been removed; use FS.symlink instead")},joinPath(){abort("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc(){abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath(){abort("FS.standardizePath has been removed; use PATH.normalize instead")}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;var handleOpen=function(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){SOCKFS.emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){SOCKFS.emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;checkInt32(bytes);return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",function(ws){if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",function(){SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",function(error){sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16;checkInt32(16)}HEAP16[sa>>1]=family;checkInt16(family);HEAP32[sa+4>>2]=addr;checkInt32(addr);HEAP16[sa+2>>1]=_htons(port);checkInt16(_htons(port));break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28;checkInt32(28)}HEAP32[sa>>2]=family;checkInt32(family);HEAP32[sa+8>>2]=addr[0];checkInt32(addr[0]);HEAP32[sa+12>>2]=addr[1];checkInt32(addr[1]);HEAP32[sa+16>>2]=addr[2];checkInt32(addr[2]);HEAP32[sa+20>>2]=addr[3];checkInt32(addr[3]);HEAP16[sa+2>>1]=_htons(port);checkInt16(_htons(port));break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen);assert(!errno)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SYSCALLS={calculateAt(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 dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;checkInt32(stat.dev);HEAPU32[buf+4>>2]=stat.mode;checkInt32(stat.mode);HEAPU32[buf+8>>2]=stat.nlink;checkInt32(stat.nlink);HEAPU32[buf+12>>2]=stat.uid;checkInt32(stat.uid);HEAPU32[buf+16>>2]=stat.gid;checkInt32(stat.gid);HEAPU32[buf+20>>2]=stat.rdev;checkInt32(stat.rdev);HEAP64[buf+24>>3]=BigInt(stat.size);checkInt64(stat.size);HEAP32[buf+32>>2]=4096;checkInt32(4096);HEAP32[buf+36>>2]=stat.blocks;checkInt32(stat.blocks);var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));checkInt64(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;checkInt32(atime%1e3*1e3*1e3);HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));checkInt64(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;checkInt32(mtime%1e3*1e3*1e3);HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));checkInt64(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;checkInt32(ctime%1e3*1e3*1e3);HEAP64[buf+88>>3]=BigInt(stat.ino);checkInt64(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;checkInt32(stats.bsize);HEAPU32[buf+60>>2]=stats.bsize;checkInt32(stats.bsize);HEAP64[buf+8>>3]=BigInt(stats.blocks);checkInt64(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);checkInt64(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);checkInt64(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);checkInt64(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);checkInt64(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;checkInt32(stats.fsid);HEAPU32[buf+64>>2]=stats.flags;checkInt32(stats.flags);HEAPU32[buf+56>>2]=stats.namelen;checkInt32(stats.namelen)},doMsync(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)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);assert(!flags||flags==512);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{assert(SYSCALLS.varargs!=undefined);var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;checkInt16(2);return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>{assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)};function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);stream.getdents||=FS.readdir(stream.path);var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var startIdx=Math.floor(off/struct_size);var endIdx=Math.min(stream.getdents.length,startIdx+Math.floor(count/struct_size));for(var idx=startIdx;idx>3]=BigInt(id);checkInt64(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);checkInt64((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;checkInt16(280);HEAP8[dirp+pos+18]=type;checkInt8(type);stringToUTF8(name,dirp+pos+19,256);pos+=struct_size}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);assert(!errno);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;checkInt32(sock.error);HEAP32[optlen>>2]=4;checkInt32(4);sock.error=null;return 0}}return-50}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:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;checkInt32(termios.c_iflag||0);HEAP32[argp+4>>2]=termios.c_oflag||0;checkInt32(termios.c_oflag||0);HEAP32[argp+8>>2]=termios.c_cflag||0;checkInt32(termios.c_cflag||0);HEAP32[argp+12>>2]=termios.c_lflag||0;checkInt32(termios.c_lflag||0);for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0;checkInt8(termios.c_cc[i]||0)}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;checkInt32(0);return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];checkInt16(winsize[0]);HEAP16[argp+2>>1]=winsize[1];checkInt16(winsize[1])}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{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.writeStat(buf,FS.lstat(path))}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);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;assert(!flags,`unknown flags in __syscall_newfstatat: ${flags}`);path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}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?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen);assert(!errno)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}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_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);if(!addr){return FS.write(sock.stream,HEAP8,message,length)}var dest=getSocketAddress(addr,addr_len);return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);assert(sock.stream.fd<64);return sock.stream.fd}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.writeStat(buf,FS.stat(path))}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){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("native code called abort()");var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw Infinity};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{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);checkInt32(Number(winterOffset!=summerOffset));var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);assert(winterName);assert(summerName);assert(lengthBytesUTF8(winterName)<=16,`timezone name truncated to fit in TZNAME_MAX (${winterName})`);assert(lengthBytesUTF8(summerName)<=16,`timezone name truncated to fit in TZNAME_MAX (${summerName})`);if(summerOffset{MainLoop.timingMode=mode;MainLoop.timingValue=value;if(!MainLoop.func){err("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.");return 1}if(!MainLoop.running){MainLoop.running=true}if(mode==0){MainLoop.scheduler=function MainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,MainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(MainLoop.runner,timeUntilNextTick)}}else if(mode==1){MainLoop.scheduler=function MainLoop_scheduler_rAF(){MainLoop.requestAnimationFrame(MainLoop.runner)}}else{assert(mode==2);if(!MainLoop.setImmediate){if(globalThis.setImmediate){MainLoop.setImmediate=setImmediate}else{var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var MainLoop_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",MainLoop_setImmediate_messageHandler,true);MainLoop.setImmediate=func=>{setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){Module["setImmediates"]??=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}}MainLoop.scheduler=function MainLoop_scheduler_setImmediate(){MainLoop.setImmediate(MainLoop.runner)}}return 0};var _emscripten_get_now=()=>performance.now();var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;checkUnflushedContent();if(keepRuntimeAlive()&&!implicit){var msg=`program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`;err(msg)}_proc_exit(status)};var _exit=exitJS;var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}checkStackCookie();if(e instanceof WebAssembly.RuntimeError){if(_emscripten_stack_get_current()<=0){err("Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to 65536)")}}quit_(1,e)};var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var setMainLoop=(iterFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{assert(!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.");MainLoop.func=iterFunc;MainLoop.arg=arg;var thisMainLoopId=MainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=MainLoop.queue.shift();blocker.func(blocker.arg);if(MainLoop.remainingBlockers){var remaining=MainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){MainLoop.remainingBlockers=next}else{next=next+.5;MainLoop.remainingBlockers=(8*remaining+next)/9}}MainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(MainLoop.runner,0);return}if(!checkIsRunning())return;MainLoop.currentFrameNumber=MainLoop.currentFrameNumber+1|0;if(MainLoop.timingMode==1&&MainLoop.timingValue>1&&MainLoop.currentFrameNumber%MainLoop.timingValue!=0){MainLoop.scheduler();return}else if(MainLoop.timingMode==0){MainLoop.tickStartTime=_emscripten_get_now();if(Module["ctx"]){warnOnce("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!")}}MainLoop.runIter(iterFunc);if(!checkIsRunning())return;MainLoop.scheduler()};if(!noSetTiming){if(fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}MainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var callUserCallback=func=>{if(ABORT){err("user callback triggered after runtime exited or application aborted. Ignoring.");return}try{return func()}catch(e){handleException(e)}finally{maybeExit()}};var MainLoop={running:false,scheduler:null,currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],preMainLoop:[],postMainLoop:[],pause(){MainLoop.scheduler=null;MainLoop.currentlyRunningMainloop++},resume(){MainLoop.currentlyRunningMainloop++;var timingMode=MainLoop.timingMode;var timingValue=MainLoop.timingValue;var func=MainLoop.func;MainLoop.func=null;setMainLoop(func,0,false,MainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);MainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=MainLoop.remainingBlockers??0;var expected=MainLoop.expectedBlockers??0;if(remaining){if(remaining=MainLoop.nextRAF){MainLoop.nextRAF+=1e3/60}}var delay=Math.max(MainLoop.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(globalThis.requestAnimationFrame){requestAnimationFrame(func)}else{MainLoop.fakeRequestAnimationFrame(func)}}};var AL={QUEUE_INTERVAL:25,QUEUE_LOOKAHEAD:.1,DEVICE_NAME:"Emscripten OpenAL",CAPTURE_DEVICE_NAME:"Emscripten OpenAL capture",ALC_EXTENSIONS:{ALC_EXT_capture:true,ALC_SOFT_pause_device:true,ALC_SOFT_HRTF:true},AL_EXTENSIONS:{AL_EXT_float32:true,AL_SOFT_loop_points:true,AL_SOFT_source_length:true,AL_EXT_source_distance_model:true,AL_SOFT_source_spatialize:true},_alcErr:0,alcErr:0,deviceRefCounts:{},alcStringCache:{},paused:false,stringCache:{},contexts:{},currentCtx:null,buffers:{0:{id:0,refCount:0,audioBuf:null,frequency:0,bytesPerSample:2,channels:1,length:0}},paramArray:[],_nextId:1,newId:()=>AL.freeIds.length>0?AL.freeIds.pop():AL._nextId++,freeIds:[],scheduleContextAudio:ctx=>{if(MainLoop.timingMode===1&&document["visibilityState"]!="visible"){return}for(var i in ctx.sources){AL.scheduleSourceAudio(ctx.sources[i])}},scheduleSourceAudio:(src,lookahead)=>{if(MainLoop.timingMode===1&&document["visibilityState"]!="visible"){return}if(src.state!==4114){return}var currentTime=AL.updateSourceTime(src);var startTime=src.bufStartTime;var startOffset=src.bufOffset;var bufCursor=src.bufsProcessed;for(var i=0;i=src.bufQueue.length){if(src.looping){bufCursor%=src.bufQueue.length}else{break}}var buf=src.bufQueue[bufCursor%src.bufQueue.length];if(buf.length===0){skipCount++;if(skipCount===src.bufQueue.length){break}}else{var audioSrc=src.context.audioCtx.createBufferSource();audioSrc.buffer=buf.audioBuf;audioSrc.playbackRate.value=src.playbackRate;if(buf.audioBuf._loopStart||buf.audioBuf._loopEnd){audioSrc.loopStart=buf.audioBuf._loopStart;audioSrc.loopEnd=buf.audioBuf._loopEnd}var duration=0;if(src.type===4136&&src.looping){duration=Number.POSITIVE_INFINITY;audioSrc.loop=true;if(buf.audioBuf._loopStart){audioSrc.loopStart=buf.audioBuf._loopStart}if(buf.audioBuf._loopEnd){audioSrc.loopEnd=buf.audioBuf._loopEnd}}else{duration=(buf.audioBuf.duration-startOffset)/src.playbackRate}audioSrc._startOffset=startOffset;audioSrc._duration=duration;audioSrc._skipCount=skipCount;skipCount=0;audioSrc.connect(src.gain);if(typeof audioSrc.start!="undefined"){startTime=Math.max(startTime,src.context.audioCtx.currentTime);audioSrc.start(startTime,startOffset)}else if(typeof audioSrc.noteOn!="undefined"){startTime=Math.max(startTime,src.context.audioCtx.currentTime);audioSrc.noteOn(startTime)}audioSrc._startTime=startTime;src.audioQueue.push(audioSrc);startTime+=duration}startOffset=0;bufCursor++}},updateSourceTime:src=>{var currentTime=src.context.audioCtx.currentTime;if(src.state!==4114){return currentTime}if(!isFinite(src.bufStartTime)){src.bufStartTime=currentTime-src.bufOffset/src.playbackRate;src.bufOffset=0}var nextStartTime=0;while(src.audioQueue.length){var audioSrc=src.audioQueue[0];src.bufsProcessed+=audioSrc._skipCount;nextStartTime=audioSrc._startTime+audioSrc._duration;if(currentTime=src.bufQueue.length&&!src.looping){AL.setSourceState(src,4116)}else if(src.type===4136&&src.looping){var buf=src.bufQueue[0];if(buf.length===0){src.bufOffset=0}else{var delta=(currentTime-src.bufStartTime)*src.playbackRate;var loopStart=buf.audioBuf._loopStart||0;var loopEnd=buf.audioBuf._loopEnd||buf.audioBuf.duration;if(loopEnd<=loopStart){loopEnd=buf.audioBuf.duration}if(delta0){src.bufStartTime+=Math.floor((currentTime-src.bufStartTime)/srcDuration)*srcDuration}}for(var i=0;i=src.bufQueue.length){if(src.looping){src.bufsProcessed%=src.bufQueue.length}else{AL.setSourceState(src,4116);break}}var buf=src.bufQueue[src.bufsProcessed];if(buf.length>0){nextStartTime=src.bufStartTime+buf.audioBuf.duration/src.playbackRate;if(currentTime{AL.updateSourceTime(src);for(var i=1;i1){src.audioQueue.length=1}},stopSourceAudio:src=>{for(var i=0;i{if(state===4114){if(src.state===4114||src.state==4116){src.bufsProcessed=0;src.bufOffset=0}else{}AL.stopSourceAudio(src);src.state=4114;src.bufStartTime=Number.NEGATIVE_INFINITY;AL.scheduleSourceAudio(src)}else if(state===4115){if(src.state===4114){AL.updateSourceTime(src);AL.stopSourceAudio(src);src.state=4115}}else if(state===4116){if(src.state!==4113){src.state=4116;src.bufsProcessed=src.bufQueue.length;src.bufStartTime=Number.NEGATIVE_INFINITY;src.bufOffset=0;AL.stopSourceAudio(src)}}else if(state===4113){if(src.state!==4113){src.state=4113;src.bufsProcessed=0;src.bufStartTime=Number.NEGATIVE_INFINITY;src.bufOffset=0;AL.stopSourceAudio(src)}}},initSourcePanner:src=>{if(src.type===4144){return}var templateBuf=AL.buffers[0];for(var i=0;i{for(var i in ctx.sources){AL.updateSourceGlobal(ctx.sources[i])}},updateSourceGlobal:src=>{var panner=src.panner;if(!panner){return}panner.refDistance=src.refDistance;panner.maxDistance=src.maxDistance;panner.rolloffFactor=src.rolloffFactor;panner.panningModel=src.context.hrtf?"HRTF":"equalpower";var distanceModel=src.context.sourceDistanceModel?src.distanceModel:src.context.distanceModel;switch(distanceModel){case 0:panner.distanceModel="inverse";panner.refDistance=340282e33;break;case 53249:case 53250:panner.distanceModel="inverse";break;case 53251:case 53252:panner.distanceModel="linear";break;case 53253:case 53254:panner.distanceModel="exponential";break}},updateListenerSpace:ctx=>{var listener=ctx.audioCtx.listener;if(listener.positionX){listener.positionX.value=ctx.listener.position[0];listener.positionY.value=ctx.listener.position[1];listener.positionZ.value=ctx.listener.position[2]}else{listener.setPosition(ctx.listener.position[0],ctx.listener.position[1],ctx.listener.position[2])}if(listener.forwardX){listener.forwardX.value=ctx.listener.direction[0];listener.forwardY.value=ctx.listener.direction[1];listener.forwardZ.value=ctx.listener.direction[2];listener.upX.value=ctx.listener.up[0];listener.upY.value=ctx.listener.up[1];listener.upZ.value=ctx.listener.up[2]}else{listener.setOrientation(ctx.listener.direction[0],ctx.listener.direction[1],ctx.listener.direction[2],ctx.listener.up[0],ctx.listener.up[1],ctx.listener.up[2])}for(var i in ctx.sources){AL.updateSourceSpace(ctx.sources[i])}},updateSourceSpace:src=>{if(!src.panner){return}var panner=src.panner;var posX=src.position[0];var posY=src.position[1];var posZ=src.position[2];var dirX=src.direction[0];var dirY=src.direction[1];var dirZ=src.direction[2];var listener=src.context.listener;var lPosX=listener.position[0];var lPosY=listener.position[1];var lPosZ=listener.position[2];if(src.relative){var lBackX=-listener.direction[0];var lBackY=-listener.direction[1];var lBackZ=-listener.direction[2];var lUpX=listener.up[0];var lUpY=listener.up[1];var lUpZ=listener.up[2];var inverseMagnitude=(x,y,z)=>{var length=Math.sqrt(x*x+y*y+z*z);if(length{if(src.state===4114){AL.cancelPendingSourceAudio(src);var audioSrc=src.audioQueue[0];if(!audioSrc){return}var duration;if(src.type===4136&&src.looping){duration=Number.POSITIVE_INFINITY}else{duration=(audioSrc.buffer.duration-audioSrc._startOffset)/src.playbackRate}audioSrc._duration=duration;audioSrc.playbackRate.value=src.playbackRate;AL.scheduleSourceAudio(src)}},sourceDuration:src=>{var length=0;for(var i=0;i{AL.updateSourceTime(src);var offset=0;for(var i=0;i{var playing=src.state==4114;if(playing){AL.setSourceState(src,4113)}if(src.bufQueue[src.bufsProcessed].audioBuf!==null){src.bufsProcessed=0;while(offset>src.bufQueue[src.bufsProcessed].audioBuf.duration){offset-=src.bufQueue[src.bufsProcessed].audioBuf.duration;src.bufsProcessed++}src.bufOffset=offset}if(playing){AL.setSourceState(src,4114)}},getGlobalParam:(funcname,param)=>{if(!AL.currentCtx){return null}switch(param){case 49152:return AL.currentCtx.dopplerFactor;case 49155:return AL.currentCtx.speedOfSound;case 53248:return AL.currentCtx.distanceModel;default:AL.currentCtx.err=40962;return null}},setGlobalParam:(funcname,param,value)=>{if(!AL.currentCtx){return}switch(param){case 49152:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}AL.currentCtx.dopplerFactor=value;AL.updateListenerSpace(AL.currentCtx);break;case 49155:if(!Number.isFinite(value)||value<=0){AL.currentCtx.err=40963;return}AL.currentCtx.speedOfSound=value;AL.updateListenerSpace(AL.currentCtx);break;case 53248:switch(value){case 0:case 53249:case 53250:case 53251:case 53252:case 53253:case 53254:AL.currentCtx.distanceModel=value;AL.updateContextGlobal(AL.currentCtx);break;default:AL.currentCtx.err=40963;return}break;default:AL.currentCtx.err=40962;return}},getListenerParam:(funcname,param)=>{if(!AL.currentCtx){return null}switch(param){case 4100:return AL.currentCtx.listener.position;case 4102:return AL.currentCtx.listener.velocity;case 4111:return AL.currentCtx.listener.direction.concat(AL.currentCtx.listener.up);case 4106:return AL.currentCtx.gain.gain.value;default:AL.currentCtx.err=40962;return null}},setListenerParam:(funcname,param,value)=>{if(!AL.currentCtx){return}if(value===null){AL.currentCtx.err=40962;return}var listener=AL.currentCtx.listener;switch(param){case 4100:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}listener.position[0]=value[0];listener.position[1]=value[1];listener.position[2]=value[2];AL.updateListenerSpace(AL.currentCtx);break;case 4102:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}listener.velocity[0]=value[0];listener.velocity[1]=value[1];listener.velocity[2]=value[2];AL.updateListenerSpace(AL.currentCtx);break;case 4106:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}AL.currentCtx.gain.gain.value=value;break;case 4111:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])||!Number.isFinite(value[3])||!Number.isFinite(value[4])||!Number.isFinite(value[5])){AL.currentCtx.err=40963;return}listener.direction[0]=value[0];listener.direction[1]=value[1];listener.direction[2]=value[2];listener.up[0]=value[3];listener.up[1]=value[4];listener.up[2]=value[5];AL.updateListenerSpace(AL.currentCtx);break;default:AL.currentCtx.err=40962;return}},getBufferParam:(funcname,bufferId,param)=>{if(!AL.currentCtx){return}var buf=AL.buffers[bufferId];if(!buf||bufferId===0){AL.currentCtx.err=40961;return}switch(param){case 8193:return buf.frequency;case 8194:return buf.bytesPerSample*8;case 8195:return buf.channels;case 8196:return buf.length*buf.bytesPerSample*buf.channels;case 8213:if(buf.length===0){return[0,0]}return[(buf.audioBuf._loopStart||0)*buf.frequency,(buf.audioBuf._loopEnd||buf.length)*buf.frequency];default:AL.currentCtx.err=40962;return null}},setBufferParam:(funcname,bufferId,param,value)=>{if(!AL.currentCtx){return}var buf=AL.buffers[bufferId];if(!buf||bufferId===0){AL.currentCtx.err=40961;return}if(value===null){AL.currentCtx.err=40962;return}switch(param){case 8196:if(value!==0){AL.currentCtx.err=40963;return}break;case 8213:if(value[0]<0||value[0]>buf.length||value[1]<0||value[1]>buf.Length||value[0]>=value[1]){AL.currentCtx.err=40963;return}if(buf.refCount>0){AL.currentCtx.err=40964;return}if(buf.audioBuf){buf.audioBuf._loopStart=value[0]/buf.frequency;buf.audioBuf._loopEnd=value[1]/buf.frequency}break;default:AL.currentCtx.err=40962;return}},getSourceParam:(funcname,sourceId,param)=>{if(!AL.currentCtx){return null}var src=AL.currentCtx.sources[sourceId];if(!src){AL.currentCtx.err=40961;return null}switch(param){case 514:return src.relative;case 4097:return src.coneInnerAngle;case 4098:return src.coneOuterAngle;case 4099:return src.pitch;case 4100:return src.position;case 4101:return src.direction;case 4102:return src.velocity;case 4103:return src.looping;case 4105:if(src.type===4136){return src.bufQueue[0].id}return 0;case 4106:return src.gain.gain.value;case 4109:return src.minGain;case 4110:return src.maxGain;case 4112:return src.state;case 4117:if(src.bufQueue.length===1&&src.bufQueue[0].id===0){return 0}return src.bufQueue.length;case 4118:if(src.bufQueue.length===1&&src.bufQueue[0].id===0||src.looping){return 0}return src.bufsProcessed;case 4128:return src.refDistance;case 4129:return src.rolloffFactor;case 4130:return src.coneOuterGain;case 4131:return src.maxDistance;case 4132:return AL.sourceTell(src);case 4133:var offset=AL.sourceTell(src);if(offset>0){offset*=src.bufQueue[0].frequency}return offset;case 4134:var offset=AL.sourceTell(src);if(offset>0){offset*=src.bufQueue[0].frequency*src.bufQueue[0].bytesPerSample}return offset;case 4135:return src.type;case 4628:return src.spatialize;case 8201:var length=0;var bytesPerFrame=0;for(var i=0;i{if(!AL.currentCtx){return}var src=AL.currentCtx.sources[sourceId];if(!src){AL.currentCtx.err=40961;return}if(value===null){AL.currentCtx.err=40962;return}switch(param){case 514:if(value===1){src.relative=true;AL.updateSourceSpace(src)}else if(value===0){src.relative=false;AL.updateSourceSpace(src)}else{AL.currentCtx.err=40963;return}break;case 4097:if(!Number.isFinite(value)){AL.currentCtx.err=40963;return}src.coneInnerAngle=value;if(src.panner){src.panner.coneInnerAngle=value%360}break;case 4098:if(!Number.isFinite(value)){AL.currentCtx.err=40963;return}src.coneOuterAngle=value;if(src.panner){src.panner.coneOuterAngle=value%360}break;case 4099:if(!Number.isFinite(value)||value<=0){AL.currentCtx.err=40963;return}if(src.pitch===value){break}src.pitch=value;AL.updateSourceRate(src);break;case 4100:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}src.position[0]=value[0];src.position[1]=value[1];src.position[2]=value[2];AL.updateSourceSpace(src);break;case 4101:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}src.direction[0]=value[0];src.direction[1]=value[1];src.direction[2]=value[2];AL.updateSourceSpace(src);break;case 4102:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}src.velocity[0]=value[0];src.velocity[1]=value[1];src.velocity[2]=value[2];AL.updateSourceSpace(src);break;case 4103:if(value===1){src.looping=true;AL.updateSourceTime(src);if(src.type===4136&&src.audioQueue.length>0){var audioSrc=src.audioQueue[0];audioSrc.loop=true;audioSrc._duration=Number.POSITIVE_INFINITY}}else if(value===0){src.looping=false;var currentTime=AL.updateSourceTime(src);if(src.type===4136&&src.audioQueue.length>0){var audioSrc=src.audioQueue[0];audioSrc.loop=false;audioSrc._duration=src.bufQueue[0].audioBuf.duration/src.playbackRate;audioSrc._startTime=currentTime-src.bufOffset/src.playbackRate}}else{AL.currentCtx.err=40963;return}break;case 4105:if(src.state===4114||src.state===4115){AL.currentCtx.err=40964;return}if(value===0){for(var i in src.bufQueue){src.bufQueue[i].refCount--}src.bufQueue.length=1;src.bufQueue[0]=AL.buffers[0];src.bufsProcessed=0;src.type=4144}else{var buf=AL.buffers[value];if(!buf){AL.currentCtx.err=40963;return}for(var i in src.bufQueue){src.bufQueue[i].refCount--}src.bufQueue.length=0;buf.refCount++;src.bufQueue=[buf];src.bufsProcessed=0;src.type=4136}AL.initSourcePanner(src);AL.scheduleSourceAudio(src);break;case 4106:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.gain.gain.value=value;break;case 4109:if(!Number.isFinite(value)||value<0||value>Math.min(src.maxGain,1)){AL.currentCtx.err=40963;return}src.minGain=value;break;case 4110:if(!Number.isFinite(value)||value1){AL.currentCtx.err=40963;return}src.maxGain=value;break;case 4128:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.refDistance=value;if(src.panner){src.panner.refDistance=value}break;case 4129:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.rolloffFactor=value;if(src.panner){src.panner.rolloffFactor=value}break;case 4130:if(!Number.isFinite(value)||value<0||value>1){AL.currentCtx.err=40963;return}src.coneOuterGain=value;if(src.panner){src.panner.coneOuterGain=value}break;case 4131:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.maxDistance=value;if(src.panner){src.panner.maxDistance=value}break;case 4132:if(value<0||value>AL.sourceDuration(src)){AL.currentCtx.err=40963;return}AL.sourceSeek(src,value);break;case 4133:var srcLen=AL.sourceDuration(src);if(srcLen>0){var frequency;for(var bufId in src.bufQueue){if(bufId){frequency=src.bufQueue[bufId].frequency;break}}value/=frequency}if(value<0||value>srcLen){AL.currentCtx.err=40963;return}AL.sourceSeek(src,value);break;case 4134:var srcLen=AL.sourceDuration(src);if(srcLen>0){var bytesPerSec;for(var bufId in src.bufQueue){if(bufId){var buf=src.bufQueue[bufId];bytesPerSec=buf.frequency*buf.bytesPerSample*buf.channels;break}}value/=bytesPerSec}if(value<0||value>srcLen){AL.currentCtx.err=40963;return}AL.sourceSeek(src,value);break;case 4628:if(value!==0&&value!==1&&value!==2){AL.currentCtx.err=40963;return}src.spatialize=value;AL.initSourcePanner(src);break;case 8201:case 8202:case 8203:AL.currentCtx.err=40964;break;case 53248:switch(value){case 0:case 53249:case 53250:case 53251:case 53252:case 53253:case 53254:src.distanceModel=value;if(AL.currentCtx.sourceDistanceModel){AL.updateContextGlobal(AL.currentCtx)}break;default:AL.currentCtx.err=40963;return}break;default:AL.currentCtx.err=40962;return}},captures:{},sharedCaptureAudioCtx:null,requireValidCaptureDevice:(deviceId,funcname)=>{if(deviceId===0){AL.alcErr=40961;return null}var c=AL.captures[deviceId];if(!c){AL.alcErr=40961;return null}var err=c.mediaStreamError;if(err){AL.alcErr=40961;return null}return c}};var _alBufferData=(bufferId,format,pData,size,freq)=>{if(!AL.currentCtx){return}var buf=AL.buffers[bufferId];if(!buf){AL.currentCtx.err=40963;return}if(freq<=0){AL.currentCtx.err=40963;return}var audioBuf=null;try{switch(format){case 4352:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(1,size,freq);var channel0=audioBuf.getChannelData(0);for(var i=0;i0){audioBuf=AL.currentCtx.audioCtx.createBuffer(1,size>>1,freq);var channel0=audioBuf.getChannelData(0);pData>>=1;for(var i=0;i>1;++i){channel0[i]=HEAP16[pData++]*30517578125e-15}}buf.bytesPerSample=2;buf.channels=1;buf.length=size>>1;break;case 4354:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(2,size>>1,freq);var channel0=audioBuf.getChannelData(0);var channel1=audioBuf.getChannelData(1);for(var i=0;i>1;++i){channel0[i]=HEAPU8[pData++]*.0078125-1;channel1[i]=HEAPU8[pData++]*.0078125-1}}buf.bytesPerSample=1;buf.channels=2;buf.length=size>>1;break;case 4355:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(2,size>>2,freq);var channel0=audioBuf.getChannelData(0);var channel1=audioBuf.getChannelData(1);pData>>=1;for(var i=0;i>2;++i){channel0[i]=HEAP16[pData++]*30517578125e-15;channel1[i]=HEAP16[pData++]*30517578125e-15}}buf.bytesPerSample=2;buf.channels=2;buf.length=size>>2;break;case 65552:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(1,size>>2,freq);var channel0=audioBuf.getChannelData(0);pData>>=2;for(var i=0;i>2;++i){channel0[i]=HEAPF32[pData++]}}buf.bytesPerSample=4;buf.channels=1;buf.length=size>>2;break;case 65553:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(2,size>>3,freq);var channel0=audioBuf.getChannelData(0);var channel1=audioBuf.getChannelData(1);pData>>=2;for(var i=0;i>3;++i){channel0[i]=HEAPF32[pData++];channel1[i]=HEAPF32[pData++]}}buf.bytesPerSample=4;buf.channels=2;buf.length=size>>3;break;default:AL.currentCtx.err=40963;return}buf.frequency=freq;buf.audioBuf=audioBuf}catch(e){AL.currentCtx.err=40963;return}};var _alDeleteBuffers=(count,pBufferIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2];if(bufId===0){continue}if(!AL.buffers[bufId]){AL.currentCtx.err=40961;return}if(AL.buffers[bufId].refCount){AL.currentCtx.err=40964;return}}for(var i=0;i>2];if(bufId===0){continue}AL.deviceRefCounts[AL.buffers[bufId].deviceId]--;delete AL.buffers[bufId];AL.freeIds.push(bufId)}};var _alSourcei=(sourceId,param,value)=>{switch(param){case 514:case 4097:case 4098:case 4103:case 4105:case 4128:case 4129:case 4131:case 4132:case 4133:case 4134:case 4628:case 8201:case 8202:case 53248:AL.setSourceParam("alSourcei",sourceId,param,value);break;default:AL.setSourceParam("alSourcei",sourceId,param,null);break}};var _alDeleteSources=(count,pSourceIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2];if(!AL.currentCtx.sources[srcId]){AL.currentCtx.err=40961;return}}for(var i=0;i>2];AL.setSourceState(AL.currentCtx.sources[srcId],4116);_alSourcei(srcId,4105,0);delete AL.currentCtx.sources[srcId];AL.freeIds.push(srcId)}};var _alDistanceModel=model=>{AL.setGlobalParam("alDistanceModel",53248,model)};var _alGenBuffers=(count,pBufferIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2]=buf.id;checkInt32(buf.id)}};var _alGenSources=(count,pSourceIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2]=src.id;checkInt32(src.id)}};var _alGetError=()=>{if(!AL.currentCtx){return 40964}var err=AL.currentCtx.err;AL.currentCtx.err=0;return err};var _alGetSourcei=(sourceId,param,pValue)=>{var val=AL.getSourceParam("alGetSourcei",sourceId,param);if(val===null){return}if(!pValue){AL.currentCtx.err=40963;return}switch(param){case 514:case 4097:case 4098:case 4103:case 4105:case 4112:case 4117:case 4118:case 4128:case 4129:case 4131:case 4132:case 4133:case 4134:case 4135:case 4628:case 8201:case 8202:case 53248:HEAP32[pValue>>2]=val;checkInt32(val);break;default:AL.currentCtx.err=40962;return}};var _alListenerfv=(param,pValues)=>{if(!AL.currentCtx){return}if(!pValues){AL.currentCtx.err=40963;return}switch(param){case 4100:case 4102:AL.paramArray[0]=HEAPF32[pValues>>2];AL.paramArray[1]=HEAPF32[pValues+4>>2];AL.paramArray[2]=HEAPF32[pValues+8>>2];AL.setListenerParam("alListenerfv",param,AL.paramArray);break;case 4111:AL.paramArray[0]=HEAPF32[pValues>>2];AL.paramArray[1]=HEAPF32[pValues+4>>2];AL.paramArray[2]=HEAPF32[pValues+8>>2];AL.paramArray[3]=HEAPF32[pValues+12>>2];AL.paramArray[4]=HEAPF32[pValues+16>>2];AL.paramArray[5]=HEAPF32[pValues+20>>2];AL.setListenerParam("alListenerfv",param,AL.paramArray);break;default:AL.setListenerParam("alListenerfv",param,null);break}};var _alSource3f=(sourceId,param,value0,value1,value2)=>{switch(param){case 4100:case 4101:case 4102:AL.paramArray[0]=value0;AL.paramArray[1]=value1;AL.paramArray[2]=value2;AL.setSourceParam("alSource3f",sourceId,param,AL.paramArray);break;default:AL.setSourceParam("alSource3f",sourceId,param,null);break}};var _alSourcePlay=sourceId=>{if(!AL.currentCtx){return}var src=AL.currentCtx.sources[sourceId];if(!src){AL.currentCtx.err=40961;return}AL.setSourceState(src,4114)};var _alSourcef=(sourceId,param,value)=>{switch(param){case 4097:case 4098:case 4099:case 4106:case 4109:case 4110:case 4128:case 4129:case 4130:case 4131:case 4132:case 4133:case 4134:case 8203:AL.setSourceParam("alSourcef",sourceId,param,value);break;default:AL.setSourceParam("alSourcef",sourceId,param,null);break}};var _alcCloseDevice=deviceId=>{if(!(deviceId in AL.deviceRefCounts)||AL.deviceRefCounts[deviceId]>0){return 0}delete AL.deviceRefCounts[deviceId];AL.freeIds.push(deviceId);return 1};var autoResumeAudioContext=ctx=>{for(var event of["keydown","mousedown","touchstart"]){for(var element of[document,document.getElementById("canvas")]){element?.addEventListener(event,()=>{if(ctx.state==="suspended")ctx.resume()},{once:true})}}};var _alcCreateContext=(deviceId,pAttrList)=>{if(!(deviceId in AL.deviceRefCounts)){AL.alcErr=40961;return 0}var options=null;var attrs=[];var hrtf=null;pAttrList>>=2;if(pAttrList){var attr=0;var val=0;while(true){attr=HEAP32[pAttrList++];attrs.push(attr);if(attr===0){break}val=HEAP32[pAttrList++];attrs.push(val);switch(attr){case 4103:if(!options){options={}}options.sampleRate=val;break;case 4112:case 4113:break;case 6546:switch(val){case 0:hrtf=false;break;case 1:hrtf=true;break;case 2:break;default:AL.alcErr=40964;return 0}break;case 6550:if(val!==0){AL.alcErr=40964;return 0}break;default:AL.alcErr=40964;return 0}}}var AudioContext=window.AudioContext||window.webkitAudioContext;var ac=null;try{if(options){ac=new AudioContext(options)}else{ac=new AudioContext}}catch(e){if(e.name==="NotSupportedError"){AL.alcErr=40964}else{AL.alcErr=40961}return 0}autoResumeAudioContext(ac);if(typeof ac.createGain=="undefined"){ac.createGain=ac.createGainNode}var gain=ac.createGain();gain.connect(ac.destination);var ctx={deviceId,id:AL.newId(),attrs,audioCtx:ac,listener:{position:[0,0,0],velocity:[0,0,0],direction:[0,0,0],up:[0,0,0]},sources:[],interval:setInterval(()=>AL.scheduleContextAudio(ctx),AL.QUEUE_INTERVAL),gain,distanceModel:53250,speedOfSound:343.3,dopplerFactor:1,sourceDistanceModel:false,hrtf:hrtf||false,_err:0,get err(){return this._err},set err(val){if(this._err===0||val===0){this._err=val}}};AL.deviceRefCounts[deviceId]++;AL.contexts[ctx.id]=ctx;if(hrtf!==null){for(var ctxId in AL.contexts){var c=AL.contexts[ctxId];if(c.deviceId===deviceId){c.hrtf=hrtf;AL.updateContextGlobal(c)}}}return ctx.id};var _alcDestroyContext=contextId=>{var ctx=AL.contexts[contextId];if(AL.currentCtx===ctx){AL.alcErr=40962;return}if(AL.contexts[contextId].interval){clearInterval(AL.contexts[contextId].interval)}AL.deviceRefCounts[ctx.deviceId]--;delete AL.contexts[contextId];AL.freeIds.push(contextId)};var _alcMakeContextCurrent=contextId=>{if(contextId===0){AL.currentCtx=null}else{AL.currentCtx=AL.contexts[contextId]}return 1};var _alcOpenDevice=pDeviceName=>{if(pDeviceName){var name=UTF8ToString(pDeviceName);if(name!==AL.DEVICE_NAME){return 0}}if(globalThis.AudioContext||globalThis.webkitAudioContext){var deviceId=AL.newId();AL.deviceRefCounts[deviceId]=0;return deviceId}return 0};var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);checkInt64(nsec);return 0}function getFullscreenElement(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement||document.msFullscreenElement}var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var Browser={useWebGL:false,isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],preloadedImages:{},preloadedAudios:{},getCanvas:()=>Module["canvas"],init(){if(Browser.initted)return;Browser.initted=true;var imagePlugin={};imagePlugin["canHandle"]=name=>!Module["noImageDecoding"]&&/\.(jpg|jpeg|png|bmp|webp)$/i.test(name);imagePlugin["handle"]=async(byteArray,name)=>{var b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}var url=URL.createObjectURL(b);return new Promise((resolve,reject)=>{var img=new Image;img.onload=()=>{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);Browser.preloadedImages[name]=canvas;URL.revokeObjectURL(url);resolve(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);reject()};img.src=url})};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=name=>!Module["noAudioDecoding"]&&name.slice(-4)in{".ogg":1,".wav":1,".mp3":1};audioPlugin["handle"]=async(byteArray,name)=>new Promise((resolve,reject)=>{var done=false;function finish(audio){if(done)return;done=true;Browser.preloadedAudios[name]=audio;resolve(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=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.slice(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)});preloadPlugins.push(audioPlugin);function pointerLockChange(){var canvas=Browser.getCanvas();Browser.pointerLock=document.pointerLockElement===canvas}var canvas=Browser.getCanvas();if(canvas){document.addEventListener("pointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Browser.getCanvas().requestPointerLock){Browser.getCanvas().requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module["ctx"]&&canvas==Browser.getCanvas())return Module["ctx"];var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};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);Browser.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(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=Browser.getCanvas();function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if(getFullscreenElement()===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)}}Module["onFullScreen"]?.(Browser.isFullscreen);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()},requestFullScreen(){abort("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)")},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},getMimetype(name){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[name.slice(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(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:abort("unrecognized mouse wheel delta mode: "+event.deltaMode)}break;default:abort("unrecognized mouse wheel event: "+event.type)}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var canvas=Browser.getCanvas();var rect=canvas.getBoundingClientRect();var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;assert(typeof scrollX!="undefined"&&typeof scrollY!="undefined","Unable to retrieve scroll position, mouse positions likely broken.");var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(canvas.width/rect.width);adjustedY=adjustedY*(canvas.height/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x,y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(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)}Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);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];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Browser.getCanvas();Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Browser.getCanvas();Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags;checkInt32(flags)}Browser.updateCanvasDimensions(Browser.getCanvas());Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags;checkInt32(flags)}Browser.updateCanvasDimensions(Browser.getCanvas());Browser.updateResizeListeners()},updateCanvasDimensions(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"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1;checkInt32(1)}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var GLctx;var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_EXT_polygon_offset_clamp=ctx=>!!(ctx.extPolygonOffsetClamp=ctx.getExtension("EXT_polygon_offset_clamp"));var webgl_enable_EXT_clip_control=ctx=>!!(ctx.extClipControl=ctx.getExtension("EXT_clip_control"));var webgl_enable_WEBGL_polygon_mode=ctx=>!!(ctx.webglPolygonMode=ctx.getExtension("WEBGL_polygon_mode"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_clip_control","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_polygon_offset_clamp","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw","WEBGL_polygon_mode"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var registerPreMainLoop=f=>{typeof MainLoop!="undefined"&&MainLoop.preMainLoop.push(f)};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,unpackRowLength:0,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id;checkInt32(id)}},MAX_TEMP_BUFFER_SIZE:2097152,numTempVertexBuffersPerSize:64,log2ceilLookup:i=>32-Math.clz32(i===0?0:i-1),generateTempBuffers:(quads,context)=>{var largestIndex=GL.log2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE);context.tempVertexBufferCounters1=[];context.tempVertexBufferCounters2=[];context.tempVertexBufferCounters1.length=context.tempVertexBufferCounters2.length=largestIndex+1;context.tempVertexBuffers1=[];context.tempVertexBuffers2=[];context.tempVertexBuffers1.length=context.tempVertexBuffers2.length=largestIndex+1;context.tempIndexBuffers=[];context.tempIndexBuffers.length=largestIndex+1;for(var i=0;i<=largestIndex;++i){context.tempIndexBuffers[i]=null;context.tempVertexBufferCounters1[i]=context.tempVertexBufferCounters2[i]=0;var ringbufferLength=GL.numTempVertexBuffersPerSize;context.tempVertexBuffers1[i]=[];context.tempVertexBuffers2[i]=[];var ringbuffer1=context.tempVertexBuffers1[i];var ringbuffer2=context.tempVertexBuffers2[i];ringbuffer1.length=ringbuffer2.length=ringbufferLength;for(var j=0;j>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:sizeBytes=>{var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<{var idx=GL.log2ceilLookup(sizeBytes);var ibo=GL.currentContext.tempIndexBuffers[idx];if(ibo){return ibo}var prevIBO=GLctx.getParameter(34965);GL.currentContext.tempIndexBuffers[idx]=GLctx.createBuffer();GLctx.bindBuffer(34963,GL.currentContext.tempIndexBuffers[idx]);GLctx.bufferData(34963,1<{if(!GL.currentContext){return}var vb=GL.currentContext.tempVertexBuffers1;GL.currentContext.tempVertexBuffers1=GL.currentContext.tempVertexBuffers2;GL.currentContext.tempVertexBuffers2=vb;vb=GL.currentContext.tempVertexBufferCounters1;GL.currentContext.tempVertexBufferCounters1=GL.currentContext.tempVertexBufferCounters2;GL.currentContext.tempVertexBufferCounters2=vb;var largestIndex=GL.log2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE);for(var i=0;i<=largestIndex;++i){GL.currentContext.tempVertexBufferCounters1[i]=0}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}var type=GLctx.getShaderParameter(GL.shaders[shader],35663);if(type==35632){if(GLEmulation.findToken(source,"dFdx")||GLEmulation.findToken(source,"dFdy")||GLEmulation.findToken(source,"fwidth")){source="#extension GL_OES_standard_derivatives : enable\n"+source;var extension=GLctx.getExtension("OES_standard_derivatives")}}return source},createContext:(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=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={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:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module["ctx"]=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext: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]?.GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;context.compressionExt=GLctx.getExtension("WEBGL_compressed_texture_s3tc");context.anisotropicExt=GLctx.getExtension("EXT_texture_filter_anisotropic");webgl_enable_WEBGL_multi_draw(GLctx);webgl_enable_EXT_polygon_offset_clamp(GLctx);webgl_enable_EXT_clip_control(GLctx);webgl_enable_WEBGL_polygon_mode(GLctx);webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(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")}for(var ext of getEmscriptenSupportedExtensions(GLctx)){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}}}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Browser.getCanvas(),EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Browser.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;checkInt32(EGL.contextAttributes.alpha?32:24);return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;checkInt32(EGL.contextAttributes.alpha?8:0);return 1;case 12322:HEAP32[value>>2]=8;checkInt32(8);return 1;case 12323:HEAP32[value>>2]=8;checkInt32(8);return 1;case 12324:HEAP32[value>>2]=8;checkInt32(8);return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;checkInt32(EGL.contextAttributes.depth?24:0);return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;checkInt32(EGL.contextAttributes.stencil?8:0);return 1;case 12327:HEAP32[value>>2]=12344;checkInt32(12344);return 1;case 12328:HEAP32[value>>2]=62002;checkInt32(62002);return 1;case 12329:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12330:HEAP32[value>>2]=4096;checkInt32(4096);return 1;case 12331:HEAP32[value>>2]=16777216;checkInt32(16777216);return 1;case 12332:HEAP32[value>>2]=4096;checkInt32(4096);return 1;case 12333:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12334:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12335:HEAP32[value>>2]=12344;checkInt32(12344);return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;checkInt32(EGL.contextAttributes.antialias?4:0);return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;checkInt32(EGL.contextAttributes.antialias?1:0);return 1;case 12339:HEAP32[value>>2]=4;checkInt32(4);return 1;case 12340:HEAP32[value>>2]=12344;checkInt32(12344);return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;checkInt32(-1);return 1;case 12345:case 12346:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12347:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12348:HEAP32[value>>2]=1;checkInt32(1);return 1;case 12349:case 12350:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12351:HEAP32[value>>2]=12430;checkInt32(12430);return 1;case 12352:HEAP32[value>>2]=4;checkInt32(4);return 1;case 12354:HEAP32[value>>2]=0;checkInt32(0);return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1;checkInt32(1)}if(minorVersion){HEAP32[minorVersion>>2]=4;checkInt32(4)}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!GLctx){EGL.setErrorCode(12290)}else if(GLctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{assert(Array.isArray(readEmAsmArgsArray));assert(buf%16==0);readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var chr=String.fromCharCode(ch);var validChars=["d","f","i","p"];validChars.push("j");assert(validChars.includes(chr),`Invalid character ${ch}("${chr}") in readEmAsmArgs! Use only [${validChars}], and do not specify "v" for void return argument.`);var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==106?HEAP64[buf>>3]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);assert(ASM_CONSTS.hasOwnProperty(code),`No EM_ASM constant found at address ${code}. The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_double=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);assert(ASM_CONSTS.hasOwnProperty(emAsmAddr),`No EM_ASM constant found at address ${emAsmAddr}. The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{MainLoop.pause();MainLoop.func=null};var _emscripten_err=str=>err(UTF8ToString(str));var onExits=[];var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(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 call of JSEvents.deferredCalls){if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction,precedence,argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedencecall.targetFunction!=targetFunction)},canPerformEventHandlerRequests(){if(navigator.userActivation){return navigator.userActivation.isActive}return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls(){if(!JSEvents.canPerformEventHandlerRequests()){return}var deferredCalls=JSEvents.deferredCalls;JSEvents.deferredCalls=[];for(var call of deferredCalls){call.targetFunction(...call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:(target,eventTypeString)=>{for(var i=0;icString>2?UTF8ToString(cString):cString;var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||globalThis.document?.querySelector(target);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;checkInt32(canvas.width);HEAP32[height>>2]=canvas.height;checkInt32(canvas.height)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>{var sp=stackSave();var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];stackRestore(sp);return size};var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{var sp=stackSave();var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(sp)}};var currentFullscreenStrategy={};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}assert(wasmTable.get(funcPtr)==func,"JavaScript-side Wasm function table mirror is out of date!");return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){if(!getFullscreenElement()){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{left:0,top:0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(!document.exitPointerLock)return-1;document.exitPointerLock();return 0};var _emscripten_get_device_pixel_ratio=()=>globalThis.devicePixelRatio??1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.index;checkInt32(e.index);HEAP32[eventStruct+8>>2]=e.axes.length;checkInt32(e.axes.length);HEAP32[eventStruct+12>>2]=e.buttons.length;checkInt32(e.buttons.length);stringToUTF8(e.id,eventStruct+1112,64);stringToUTF8(e.mapping,eventStruct+1176,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{assert(JSEvents.lastGamepadState,"emscripten_get_gamepad_status() can only be called after having first called emscripten_sample_gamepad_data() and that function has returned EMSCRIPTEN_RESULT_SUCCESS!");if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>{assert(JSEvents.lastGamepadState,"emscripten_get_num_gamepads() can only be called after having first called emscripten_sample_gamepad_data() and that function has returned EMSCRIPTEN_RESULT_SUCCESS!");return JSEvents.lastGamepadState.length};var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;checkInt32(screen.width);HEAP32[height>>2]=screen.height;checkInt32(screen.height)};var _emscripten_glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glAlphaFunc=(func,ref)=>{switch(func){case 512:case 513:case 514:case 515:case 516:case 517:case 518:case 519:GLEmulation.alphaTestRef=ref;if(GLEmulation.alphaTestFunc!=func){GLEmulation.alphaTestFunc=func;GLImmediate.currentRenderer=null}break;default:break}};var _emscripten_glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glEnable=x0=>GLctx.enable(x0);var _glEnable=_emscripten_glEnable;var _emscripten_glDisable=x0=>GLctx.disable(x0);var _glDisable=_emscripten_glDisable;var _emscripten_glIsEnabled=x0=>GLctx.isEnabled(x0);var _glIsEnabled=_emscripten_glIsEnabled;var readI53FromI64=ptr=>HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;var readI53FromU64=ptr=>HEAPU32[ptr>>2]+HEAPU32[ptr+4>>2]*4294967296;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;checkInt32(num);var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296;checkInt32((num-lower)/4294967296);var deserialized=num>=0?readI53FromU64(ptr):readI53FromI64(ptr);var offset=ptr>>2;if(deserialized!=num)warnOnce(`writeI53ToI64() out of range: serialized JS Number ${num} to Wasm heap as bytes lo=${ptrToString(HEAPU32[offset])}, hi=${ptrToString(HEAPU32[offset+1])}, which deserializes back to ${deserialized} instead!`)};var webglGetExtensions=()=>{var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var 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}ret=webglGetExtensions().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];checkInt32(result[i]);break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;checkInt8(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;checkInt32(ret);break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;checkInt8(ret?1:0);break}};var _emscripten_glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _glGetBooleanv=_emscripten_glGetBooleanv;var _emscripten_glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _glGetIntegerv=_emscripten_glGetIntegerv;var _emscripten_glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var webGLVersion=GLctx.getParameter(7938);var glVersion=`OpenGL ES 2.0 (${webGLVersion})`;if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${webGLVersion})`;ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _glGetString=_emscripten_glGetString;var _emscripten_glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _glCreateShader=_emscripten_glCreateShader;var _emscripten_glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _glShaderSource=_emscripten_glShaderSource;var _emscripten_glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _glCompileShader=_emscripten_glCompileShader;var _glAttachShader=_emscripten_glAttachShader;var _emscripten_glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _glDetachShader=_emscripten_glDetachShader;var _emscripten_glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _glUseProgram=_emscripten_glUseProgram;var _emscripten_glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _glDeleteProgram=_emscripten_glDeleteProgram;var _emscripten_glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _glBindAttribLocation=_emscripten_glBindAttribLocation;var _emscripten_glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _glLinkProgram=_emscripten_glLinkProgram;var _emscripten_glBindBuffer=(target,buffer)=>{if(target==34962){GLctx.currentArrayBufferBinding=buffer;GLImmediate.lastArrayBuffer=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindBuffer=_emscripten_glBindBuffer;var _emscripten_glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _glGetFloatv=_emscripten_glGetFloatv;var _emscripten_glHint=(x0,x1)=>GLctx.hint(x0,x1);var _glHint=_emscripten_glHint;var _emscripten_glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _glEnableVertexAttribArray=_emscripten_glEnableVertexAttribArray;var _emscripten_glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _glDisableVertexAttribArray=_emscripten_glDisableVertexAttribArray;var _emscripten_glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _glVertexAttribPointer=_emscripten_glVertexAttribPointer;var _glActiveTexture=_emscripten_glActiveTexture;var GLEmulation={fogStart:0,fogEnd:1,fogDensity:1,fogColor:null,fogMode:2048,fogEnabled:false,MAX_CLIP_PLANES:6,clipPlaneEnabled:[false,false,false,false,false,false],clipPlaneEquation:[],lightingEnabled:false,lightModelAmbient:null,lightModelLocalViewer:false,lightModelTwoSide:false,materialAmbient:null,materialDiffuse:null,materialSpecular:null,materialShininess:null,materialEmission:null,MAX_LIGHTS:8,lightEnabled:[false,false,false,false,false,false,false,false],lightAmbient:[],lightDiffuse:[],lightSpecular:[],lightPosition:[],alphaTestEnabled:false,alphaTestFunc:519,alphaTestRef:0,pointSize:1,vaos:[],currentVao:null,enabledVertexAttribArrays:{},hasRunInit:false,findToken(source,token){function isIdentChar(ch){if(ch>=48&&ch<=57)return true;if(ch>=65&&ch<=90)return true;if(ch>=97&&ch<=122)return true;return false}var i=-1;do{i=source.indexOf(token,i+1);if(i<0){break}if(i>0&&isIdentChar(source[i-1])){continue}i+=token.length;if(i{GLImmediate.lastRenderer?.cleanup();if(cap==2912){if(GLEmulation.fogEnabled!=true){GLImmediate.currentRenderer=null;GLEmulation.fogEnabled=true}return}else if(cap>=12288&&cap<12294){var clipPlaneId=cap-12288;if(GLEmulation.clipPlaneEnabled[clipPlaneId]!=true){GLImmediate.currentRenderer=null;GLEmulation.clipPlaneEnabled[clipPlaneId]=true}return}else if(cap>=16384&&cap<16392){var lightId=cap-16384;if(GLEmulation.lightEnabled[lightId]!=true){GLImmediate.currentRenderer=null;GLEmulation.lightEnabled[lightId]=true}return}else if(cap==2896){if(GLEmulation.lightingEnabled!=true){GLImmediate.currentRenderer=null;GLEmulation.lightingEnabled=true}return}else if(cap==3008){if(GLEmulation.alphaTestEnabled!=true){GLImmediate.currentRenderer=null;GLEmulation.alphaTestEnabled=true}return}else if(cap==3553){return}else if(!(cap in validCapabilities)){return}orig_glEnable(cap)};var orig_glDisable=_glDisable;_glDisable=_emscripten_glDisable=cap=>{GLImmediate.lastRenderer?.cleanup();if(cap==2912){if(GLEmulation.fogEnabled!=false){GLImmediate.currentRenderer=null;GLEmulation.fogEnabled=false}return}else if(cap>=12288&&cap<12294){var clipPlaneId=cap-12288;if(GLEmulation.clipPlaneEnabled[clipPlaneId]!=false){GLImmediate.currentRenderer=null;GLEmulation.clipPlaneEnabled[clipPlaneId]=false}return}else if(cap>=16384&&cap<16392){var lightId=cap-16384;if(GLEmulation.lightEnabled[lightId]!=false){GLImmediate.currentRenderer=null;GLEmulation.lightEnabled[lightId]=false}return}else if(cap==2896){if(GLEmulation.lightingEnabled!=false){GLImmediate.currentRenderer=null;GLEmulation.lightingEnabled=false}return}else if(cap==3008){if(GLEmulation.alphaTestEnabled!=false){GLImmediate.currentRenderer=null;GLEmulation.alphaTestEnabled=false}return}else if(cap==3553){return}else if(!(cap in validCapabilities)){return}orig_glDisable(cap)};_glIsEnabled=_emscripten_glIsEnabled=cap=>{if(cap==2912){return GLEmulation.fogEnabled?1:0}else if(cap>=12288&&cap<12294){var clipPlaneId=cap-12288;return GLEmulation.clipPlaneEnabled[clipPlaneId]?1:0}else if(cap>=16384&&cap<16392){var lightId=cap-16384;return GLEmulation.lightEnabled[lightId]?1:0}else if(cap==2896){return GLEmulation.lightingEnabled?1:0}else if(cap==3008){return GLEmulation.alphaTestEnabled?1:0}else if(!(cap in validCapabilities)){return 0}return GLctx.isEnabled(cap)};var orig_glGetBooleanv=_glGetBooleanv;_glGetBooleanv=_emscripten_glGetBooleanv=(pname,p)=>{var attrib=GLEmulation.getAttributeFromCapability(pname);if(attrib!==null){var result=GLImmediate.enabledClientAttributes[attrib];HEAP8[p]=result===true?1:0;checkInt8(result===true?1:0);return}orig_glGetBooleanv(pname,p)};var orig_glGetIntegerv=_glGetIntegerv;_glGetIntegerv=_emscripten_glGetIntegerv=(pname,params)=>{switch(pname){case 34018:pname=GLctx.MAX_TEXTURE_IMAGE_UNITS;break;case 35658:{var result=GLctx.getParameter(GLctx.MAX_VERTEX_UNIFORM_VECTORS);HEAP32[params>>2]=result*4;checkInt32(result*4);return}case 35657:{var result=GLctx.getParameter(GLctx.MAX_FRAGMENT_UNIFORM_VECTORS);HEAP32[params>>2]=result*4;checkInt32(result*4);return}case 35659:{var result=GLctx.getParameter(GLctx.MAX_VARYING_VECTORS);HEAP32[params>>2]=result*4;checkInt32(result*4);return}case 34929:pname=GLctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS;break;case 32890:{var attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];HEAP32[params>>2]=attribute?attribute.size:0;checkInt32(attribute?attribute.size:0);return}case 32891:{var attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];HEAP32[params>>2]=attribute?attribute.type:0;checkInt32(attribute?attribute.type:0);return}case 32892:{var attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];HEAP32[params>>2]=attribute?attribute.stride:0;checkInt32(attribute?attribute.stride:0);return}case 32897:{var attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];HEAP32[params>>2]=attribute?attribute.size:0;checkInt32(attribute?attribute.size:0);return}case 32898:{var attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];HEAP32[params>>2]=attribute?attribute.type:0;checkInt32(attribute?attribute.type:0);return}case 32899:{var attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];HEAP32[params>>2]=attribute?attribute.stride:0;checkInt32(attribute?attribute.stride:0);return}case 32904:{var attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];HEAP32[params>>2]=attribute?attribute.size:0;checkInt32(attribute?attribute.size:0);return}case 32905:{var attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];HEAP32[params>>2]=attribute?attribute.type:0;checkInt32(attribute?attribute.type:0);return}case 32906:{var attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];HEAP32[params>>2]=attribute?attribute.stride:0;checkInt32(attribute?attribute.stride:0);return}case 3378:{HEAP32[params>>2]=GLEmulation.MAX_CLIP_PLANES;checkInt32(GLEmulation.MAX_CLIP_PLANES);return}case 2976:{HEAP32[params>>2]=GLImmediate.currentMatrix+5888;checkInt32(GLImmediate.currentMatrix+5888);return}case 3009:{HEAP32[params>>2]=GLEmulation.alphaTestFunc;checkInt32(GLEmulation.alphaTestFunc);return}}orig_glGetIntegerv(pname,params)};var orig_glGetString=_glGetString;_glGetString=_emscripten_glGetString=name_=>{if(GL.stringCache[name_])return GL.stringCache[name_];switch(name_){case 7939:var ret=stringToNewUTF8(getEmscriptenSupportedExtensions(GLctx).join(" ")+" GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements"+(GL.currentContext.compressionExt?" GL_ARB_texture_compression GL_EXT_texture_compression_s3tc":"")+(GL.currentContext.anisotropicExt?" GL_EXT_texture_filter_anisotropic":""));return GL.stringCache[name_]=ret}return orig_glGetString(name_)};GL.shaderInfos={};var orig_glCreateShader=_glCreateShader;_glCreateShader=_emscripten_glCreateShader=shaderType=>{var id=orig_glCreateShader(shaderType);GL.shaderInfos[id]={type:shaderType,ftransform:false};return id};function ensurePrecision(source){if(!/precision +(low|medium|high)p +float *;/.test(source)){source="#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n"+source}return source}_glShaderSource=_emscripten_glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);if(GL.shaderInfos[shader].type==GLctx.VERTEX_SHADER){var has_pm=source.search(/u_projection/)>=0;var has_mm=source.search(/u_modelView/)>=0;var has_pv=source.search(/a_position/)>=0;var need_pm=0,need_mm=0,need_pv=0;var old=source;source=source.replace(/ftransform\(\)/g,"(u_projection * u_modelView * a_position)");if(old!=source)need_pm=need_mm=need_pv=1;old=source;source=source.replace(/gl_ProjectionMatrix/g,"u_projection");if(old!=source)need_pm=1;old=source;source=source.replace(/gl_ModelViewMatrixTranspose\[2\]/g,"vec4(u_modelView[0][2], u_modelView[1][2], u_modelView[2][2], u_modelView[3][2])");if(old!=source)need_mm=1;old=source;source=source.replace(/gl_ModelViewMatrix/g,"u_modelView");if(old!=source)need_mm=1;old=source;source=source.replace(/gl_Vertex/g,"a_position");if(old!=source)need_pv=1;old=source;source=source.replace(/gl_ModelViewProjectionMatrix/g,"(u_projection * u_modelView)");if(old!=source)need_pm=need_mm=1;if(need_pv&&!has_pv)source="attribute vec4 a_position; \n"+source;if(need_mm&&!has_mm)source="uniform mat4 u_modelView; \n"+source;if(need_pm&&!has_pm)source="uniform mat4 u_projection; \n"+source;GL.shaderInfos[shader].ftransform=need_pm||need_mm||need_pv;for(var i=0;i{GLctx.compileShader(GL.shaders[shader])};GL.programShaders={};var orig_glAttachShader=_glAttachShader;_glAttachShader=_emscripten_glAttachShader=(program,shader)=>{GL.programShaders[program]||=[];GL.programShaders[program].push(shader);orig_glAttachShader(program,shader)};var orig_glDetachShader=_glDetachShader;_glDetachShader=_emscripten_glDetachShader=(program,shader)=>{var programShader=GL.programShaders[program];if(!programShader){err(`WARNING: _glDetachShader received invalid program: ${program}`);return}var index=programShader.indexOf(shader);programShader.splice(index,1);orig_glDetachShader(program,shader)};var orig_glUseProgram=_glUseProgram;_glUseProgram=_emscripten_glUseProgram=program=>{if(GL.currProgram!=program){GLImmediate.currentRenderer=null;GL.currProgram=program;GLImmediate.fixedFunctionProgram=0;orig_glUseProgram(program)}};var orig_glDeleteProgram=_glDeleteProgram;_glDeleteProgram=_emscripten_glDeleteProgram=program=>{orig_glDeleteProgram(program);if(program==GL.currProgram){GLImmediate.currentRenderer=null;GL.currProgram=0}};var zeroUsedPrograms={};var orig_glBindAttribLocation=_glBindAttribLocation;_glBindAttribLocation=_emscripten_glBindAttribLocation=(program,index,name)=>{if(index==0)zeroUsedPrograms[program]=true;orig_glBindAttribLocation(program,index,name)};var orig_glLinkProgram=_glLinkProgram;_glLinkProgram=_emscripten_glLinkProgram=program=>{if(!(program in zeroUsedPrograms)){GLctx.bindAttribLocation(GL.programs[program],0,"a_position")}orig_glLinkProgram(program)};var orig_glBindBuffer=_glBindBuffer;_glBindBuffer=_emscripten_glBindBuffer=(target,buffer)=>{orig_glBindBuffer(target,buffer);if(target==GLctx.ARRAY_BUFFER){if(GLEmulation.currentVao){assert(GLEmulation.currentVao.arrayBuffer==buffer||GLEmulation.currentVao.arrayBuffer==0||buffer==0,"TODO: support for multiple array buffers in vao");GLEmulation.currentVao.arrayBuffer=buffer}}else if(target==GLctx.ELEMENT_ARRAY_BUFFER){if(GLEmulation.currentVao)GLEmulation.currentVao.elementArrayBuffer=buffer}};var orig_glGetFloatv=_glGetFloatv;_glGetFloatv=_emscripten_glGetFloatv=(pname,params)=>{if(pname==2982){HEAPF32.set(GLImmediate.matrix[0],params>>2)}else if(pname==2983){HEAPF32.set(GLImmediate.matrix[1],params>>2)}else if(pname==2984){HEAPF32.set(GLImmediate.matrix[2+GLImmediate.clientActiveTexture],params>>2)}else if(pname==2918){HEAPF32.set(GLEmulation.fogColor,params>>2)}else if(pname==2915){HEAPF32[params>>2]=GLEmulation.fogStart}else if(pname==2916){HEAPF32[params>>2]=GLEmulation.fogEnd}else if(pname==2914){HEAPF32[params>>2]=GLEmulation.fogDensity}else if(pname==2917){HEAPF32[params>>2]=GLEmulation.fogMode}else if(pname==2899){HEAPF32[params>>2]=GLEmulation.lightModelAmbient[0];HEAPF32[params+4>>2]=GLEmulation.lightModelAmbient[1];HEAPF32[params+8>>2]=GLEmulation.lightModelAmbient[2];HEAPF32[params+12>>2]=GLEmulation.lightModelAmbient[3]}else if(pname==3010){HEAPF32[params>>2]=GLEmulation.alphaTestRef}else{orig_glGetFloatv(pname,params)}};var orig_glHint=_glHint;_glHint=_emscripten_glHint=(target,mode)=>{if(target==34031){return}orig_glHint(target,mode)};var orig_glEnableVertexAttribArray=_glEnableVertexAttribArray;_glEnableVertexAttribArray=_emscripten_glEnableVertexAttribArray=index=>{orig_glEnableVertexAttribArray(index);GLEmulation.enabledVertexAttribArrays[index]=1;if(GLEmulation.currentVao)GLEmulation.currentVao.enabledVertexAttribArrays[index]=1};var orig_glDisableVertexAttribArray=_glDisableVertexAttribArray;_glDisableVertexAttribArray=_emscripten_glDisableVertexAttribArray=index=>{orig_glDisableVertexAttribArray(index);delete GLEmulation.enabledVertexAttribArrays[index];if(GLEmulation.currentVao)delete GLEmulation.currentVao.enabledVertexAttribArrays[index]};var orig_glVertexAttribPointer=_glVertexAttribPointer;_glVertexAttribPointer=_emscripten_glVertexAttribPointer=(index,size,type,normalized,stride,pointer)=>{orig_glVertexAttribPointer(index,size,type,normalized,stride,pointer);if(GLEmulation.currentVao){GLEmulation.currentVao.vertexAttribPointers[index]=[index,size,type,normalized,stride,pointer]}}},getAttributeFromCapability(cap){var attrib=null;switch(cap){case 3553:abort("GL_TEXTURE_2D is not a spec-defined capability for gl{Enable,Disable}ClientState.");case 32888:attrib=GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture;break;case 32884:attrib=GLImmediate.VERTEX;break;case 32885:attrib=GLImmediate.NORMAL;break;case 32886:attrib=GLImmediate.COLOR;break}return attrib}};var GLImmediate={MapTreeLib:null,spawnMapTreeLib:()=>{function CNaiveListMap(){var list=[];this.insert=function CNaiveListMap_insert(key,val){if(this.contains(key|0))return false;list.push([key,val]);return true};var __contains_i;this.contains=function CNaiveListMap_contains(key){for(__contains_i=0;__contains_inew CMapTree}},TexEnvJIT:null,spawnTexEnvJIT:()=>{var GL_TEXTURE0=33984;var GL_TEXTURE_1D=3552;var GL_TEXTURE_2D=3553;var GL_TEXTURE_3D=32879;var GL_TEXTURE_CUBE_MAP=34067;var GL_TEXTURE_ENV=8960;var GL_TEXTURE_ENV_MODE=8704;var GL_TEXTURE_ENV_COLOR=8705;var GL_SRC0_RGB=34176;var GL_SRC1_RGB=34177;var GL_SRC2_RGB=34178;var GL_SRC0_ALPHA=34184;var GL_SRC1_ALPHA=34185;var GL_SRC2_ALPHA=34186;var GL_OPERAND0_RGB=34192;var GL_OPERAND1_RGB=34193;var GL_OPERAND2_RGB=34194;var GL_OPERAND0_ALPHA=34200;var GL_OPERAND1_ALPHA=34201;var GL_OPERAND2_ALPHA=34202;var GL_COMBINE_RGB=34161;var GL_COMBINE_ALPHA=34162;var GL_RGB_SCALE=34163;var GL_ALPHA_SCALE=3356;var GL_ADD=260;var GL_BLEND=3042;var GL_REPLACE=7681;var GL_MODULATE=8448;var GL_DECAL=8449;var GL_COMBINE=34160;var GL_SUBTRACT=34023;var GL_INTERPOLATE=34165;var GL_TEXTURE=5890;var GL_CONSTANT=34166;var GL_PRIMARY_COLOR=34167;var GL_PREVIOUS=34168;var GL_SRC_COLOR=768;var GL_ONE_MINUS_SRC_COLOR=769;var GL_SRC_ALPHA=770;var GL_ONE_MINUS_SRC_ALPHA=771;var TEXENVJIT_NAMESPACE_PREFIX="tej_";var TEX_UNIT_UNIFORM_PREFIX="uTexUnit";var TEX_COORD_VARYING_PREFIX="vTexCoord";var PRIM_COLOR_VARYING="vPrimColor";var TEX_MATRIX_UNIFORM_PREFIX="uTexMatrix";var s_texUnits=null;var s_activeTexture=0;var s_requiredTexUnitsForPass=[];function abort_noSupport(info){abort("[TexEnvJIT] ABORT: No support: "+info)}function abort_sanity(info){abort("[TexEnvJIT] ABORT: Sanity failure: "+info)}function genTexUnitSampleExpr(texUnitID){var texUnit=s_texUnits[texUnitID];var texType=texUnit.getTexType();var func=null;switch(texType){case GL_TEXTURE_1D:func="texture2D";break;case GL_TEXTURE_2D:func="texture2D";break;case GL_TEXTURE_3D:return abort_noSupport("No support for 3D textures.");case GL_TEXTURE_CUBE_MAP:func="textureCube";break;default:return abort_sanity(`Unknown texType: ${ptrToString(texType)}`)}var texCoordExpr=TEX_COORD_VARYING_PREFIX+texUnitID;if(TEX_MATRIX_UNIFORM_PREFIX!=null){texCoordExpr=`(${TEX_MATRIX_UNIFORM_PREFIX}${texUnitID} * ${texCoordExpr})`}return`${func}(${TEX_UNIT_UNIFORM_PREFIX}${texUnitID}, ${texCoordExpr}.xy)`}function getTypeFromCombineOp(op){switch(op){case GL_SRC_COLOR:case GL_ONE_MINUS_SRC_COLOR:return"vec3";case GL_SRC_ALPHA:case GL_ONE_MINUS_SRC_ALPHA:return"float"}return abort_noSupport("Unsupported combiner op: "+ptrToString(op))}function getCurTexUnit(){return s_texUnits[s_activeTexture]}function genCombinerSourceExpr(texUnitID,constantExpr,previousVar,src,op){var srcExpr=null;switch(src){case GL_TEXTURE:srcExpr=genTexUnitSampleExpr(texUnitID);break;case GL_CONSTANT:srcExpr=constantExpr;break;case GL_PRIMARY_COLOR:srcExpr=PRIM_COLOR_VARYING;break;case GL_PREVIOUS:srcExpr=previousVar;break;default:return abort_noSupport("Unsupported combiner src: "+ptrToString(src))}var expr=null;switch(op){case GL_SRC_COLOR:expr=srcExpr+".rgb";break;case GL_ONE_MINUS_SRC_COLOR:expr="(vec3(1.0) - "+srcExpr+".rgb)";break;case GL_SRC_ALPHA:expr=srcExpr+".a";break;case GL_ONE_MINUS_SRC_ALPHA:expr="(1.0 - "+srcExpr+".a)";break;default:return abort_noSupport("Unsupported combiner op: "+ptrToString(op))}return expr}function valToFloatLiteral(val){if(val==Math.round(val))return val+".0";return val}function CTexEnv(){this.mode=GL_MODULATE;this.colorCombiner=GL_MODULATE;this.alphaCombiner=GL_MODULATE;this.colorScale=1;this.alphaScale=1;this.envColor=[0,0,0,0];this.colorSrc=[GL_TEXTURE,GL_PREVIOUS,GL_CONSTANT];this.alphaSrc=[GL_TEXTURE,GL_PREVIOUS,GL_CONSTANT];this.colorOp=[GL_SRC_COLOR,GL_SRC_COLOR,GL_SRC_ALPHA];this.alphaOp=[GL_SRC_ALPHA,GL_SRC_ALPHA,GL_SRC_ALPHA];this.traverseKey={7681:0,8448:1,260:2,3042:3,8449:4,34160:5,34023:3,34165:4,5890:0,34166:1,34167:2,34168:3,768:0,769:1,770:2,771:3};this.key0=-1;this.key1=0;this.key2=0;this.computeKey0=function(){var k=this.traverseKey;var key=k[this.mode]*1638400;key+=k[this.colorCombiner]*327680;key+=k[this.alphaCombiner]*65536;key+=(this.colorScale-1)*16384;key+=(this.alphaScale-1)*4096;key+=k[this.colorSrc[0]]*1024;key+=k[this.colorSrc[1]]*256;key+=k[this.colorSrc[2]]*64;key+=k[this.alphaSrc[0]]*16;key+=k[this.alphaSrc[1]]*4;key+=k[this.alphaSrc[2]];return key};this.computeKey1=function(){var k=this.traverseKey;var key=k[this.colorOp[0]]*4096;key+=k[this.colorOp[1]]*1024;key+=k[this.colorOp[2]]*256;key+=k[this.alphaOp[0]]*16;key+=k[this.alphaOp[1]]*4;key+=k[this.alphaOp[2]];return key};this.computeKey2=function(){return this.envColor[0]*16777216+this.envColor[1]*65536+this.envColor[2]*256+1+this.envColor[3]};this.recomputeKey=function(){this.key0=this.computeKey0();this.key1=this.computeKey1();this.key2=this.computeKey2()};this.invalidateKey=function(){this.key0=-1;GLImmediate.currentRenderer=null}}function CTexUnit(){this.env=new CTexEnv;this.enabled_tex1D=false;this.enabled_tex2D=false;this.enabled_tex3D=false;this.enabled_texCube=false;this.texTypesEnabled=0;this.traverseState=function CTexUnit_traverseState(keyView){if(this.texTypesEnabled){if(this.env.key0==-1){this.env.recomputeKey()}keyView.next(this.texTypesEnabled|this.env.key0<<4);keyView.next(this.env.key1);keyView.next(this.env.key2)}else{keyView.next(0)}}}CTexUnit.prototype.enabled=function CTexUnit_enabled(){return this.texTypesEnabled};CTexUnit.prototype.genPassLines=function CTexUnit_genPassLines(passOutputVar,passInputVar,texUnitID){if(!this.enabled()){return["vec4 "+passOutputVar+" = "+passInputVar+";"]}var lines=this.env.genPassLines(passOutputVar,passInputVar,texUnitID).join("\n");var texLoadLines="";var texLoadRegex=/(texture.*?\(.*?\))/g;var loadCounter=0;var load;while(load=texLoadRegex.exec(lines)){var texLoadExpr=load[1];var secondOccurrence=lines.slice(load.index+1).indexOf(texLoadExpr);if(secondOccurrence!=-1){var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texLoadVar=prefix+"texload"+loadCounter++;var texLoadLine="vec4 "+texLoadVar+" = "+texLoadExpr+";\n";texLoadLines+=texLoadLine+"\n";lines=lines.split(texLoadExpr).join(texLoadVar);texLoadRegex=/(texture.*\(.*\))/g}}return[texLoadLines+lines]};CTexUnit.prototype.getTexType=function CTexUnit_getTexType(){if(this.enabled_texCube){return GL_TEXTURE_CUBE_MAP}else if(this.enabled_tex3D){return GL_TEXTURE_3D}else if(this.enabled_tex2D){return GL_TEXTURE_2D}else if(this.enabled_tex1D){return GL_TEXTURE_1D}return 0};CTexEnv.prototype.genPassLines=function CTexEnv_genPassLines(passOutputVar,passInputVar,texUnitID){switch(this.mode){case GL_REPLACE:{return["vec4 "+passOutputVar+" = "+genTexUnitSampleExpr(texUnitID)+";"]}case GL_ADD:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texVar=prefix+"tex";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";return["vec4 "+texVar+" = "+genTexUnitSampleExpr(texUnitID)+";","vec3 "+colorVar+" = "+passInputVar+".rgb + "+texVar+".rgb;","float "+alphaVar+" = "+passInputVar+".a * "+texVar+".a;","vec4 "+passOutputVar+" = vec4("+colorVar+", "+alphaVar+");"]}case GL_MODULATE:{var line=["vec4 "+passOutputVar," = ",passInputVar," * ",genTexUnitSampleExpr(texUnitID),";"];return[line.join("")]}case GL_DECAL:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texVar=prefix+"tex";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";return["vec4 "+texVar+" = "+genTexUnitSampleExpr(texUnitID)+";",["vec3 "+colorVar+" = ",passInputVar+".rgb * (1.0 - "+texVar+".a)"," + ",texVar+".rgb * "+texVar+".a",";"].join(""),"float "+alphaVar+" = "+passInputVar+".a;","vec4 "+passOutputVar+" = vec4("+colorVar+", "+alphaVar+");"]}case GL_BLEND:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texVar=prefix+"tex";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";return["vec4 "+texVar+" = "+genTexUnitSampleExpr(texUnitID)+";",["vec3 "+colorVar+" = ",passInputVar+".rgb * (1.0 - "+texVar+".rgb)"," + ",PRIM_COLOR_VARYING+".rgb * "+texVar+".rgb",";"].join(""),"float "+alphaVar+" = "+texVar+".a;","vec4 "+passOutputVar+" = vec4("+colorVar+", "+alphaVar+");"]}case GL_COMBINE:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";var colorLines=this.genCombinerLines(true,colorVar,passInputVar,texUnitID,this.colorCombiner,this.colorSrc,this.colorOp);var alphaLines=this.genCombinerLines(false,alphaVar,passInputVar,texUnitID,this.alphaCombiner,this.alphaSrc,this.alphaOp);var scaledColor=this.colorScale==1?colorVar:colorVar+" * "+valToFloatLiteral(this.colorScale);var scaledAlpha=this.alphaScale==1?alphaVar:alphaVar+" * "+valToFloatLiteral(this.alphaScale);var line=["vec4 "+passOutputVar," = ","vec4(",scaledColor,", ",scaledAlpha,")",";"].join("");return[].concat(colorLines,alphaLines,[line])}}return abort_noSupport("Unsupported TexEnv mode: "+ptrToString(this.mode))};CTexEnv.prototype.genCombinerLines=function CTexEnv_getCombinerLines(isColor,outputVar,passInputVar,texUnitID,combiner,srcArr,opArr){var argsNeeded=null;switch(combiner){case GL_REPLACE:argsNeeded=1;break;case GL_MODULATE:case GL_ADD:case GL_SUBTRACT:argsNeeded=2;break;case GL_INTERPOLATE:argsNeeded=3;break;default:return abort_noSupport("Unsupported combiner: "+ptrToString(combiner))}var constantExpr=["vec4(",valToFloatLiteral(this.envColor[0]),", ",valToFloatLiteral(this.envColor[1]),", ",valToFloatLiteral(this.envColor[2]),", ",valToFloatLiteral(this.envColor[3]),")"].join("");var src0Expr=argsNeeded>=1?genCombinerSourceExpr(texUnitID,constantExpr,passInputVar,srcArr[0],opArr[0]):null;var src1Expr=argsNeeded>=2?genCombinerSourceExpr(texUnitID,constantExpr,passInputVar,srcArr[1],opArr[1]):null;var src2Expr=argsNeeded>=3?genCombinerSourceExpr(texUnitID,constantExpr,passInputVar,srcArr[2],opArr[2]):null;var outputType=isColor?"vec3":"float";var lines=null;switch(combiner){case GL_REPLACE:{lines=[`${outputType} ${outputVar} = ${src0Expr};`];break}case GL_MODULATE:{lines=[`${outputType} ${outputVar} = ${src0Expr} * ${src1Expr};`];break}case GL_ADD:{lines=[`${outputType} ${outputVar} = ${src0Expr} + ${src1Expr};`];break}case GL_SUBTRACT:{lines=[`${outputType} ${outputVar} = ${src0Expr} - ${src1Expr};`];break}case GL_INTERPOLATE:{var prefix=`${TEXENVJIT_NAMESPACE_PREFIX}env${texUnitID}_`;var arg2Var=`${prefix}colorSrc2`;var arg2Type=getTypeFromCombineOp(this.colorOp[2]);lines=[`${arg2Type} ${arg2Var} = ${src2Expr};`,`${outputType} ${outputVar} = ${src0Expr} * ${arg2Var} + ${src1Expr} * (1.0 - ${arg2Var});`];break}default:return abort_sanity("Unmatched TexEnv.colorCombiner?")}return lines};return{init:(gl,specifiedMaxTextureImageUnits)=>{var maxTexUnits=0;if(specifiedMaxTextureImageUnits){maxTexUnits=specifiedMaxTextureImageUnits}else if(gl){maxTexUnits=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}assert(maxTexUnits>0);s_texUnits=[];for(var i=0;i{TEX_UNIT_UNIFORM_PREFIX=uTexUnitPrefix;TEX_COORD_VARYING_PREFIX=vTexCoordPrefix;PRIM_COLOR_VARYING=vPrimColor;TEX_MATRIX_UNIFORM_PREFIX=uTexMatrixPrefix},genAllPassLines:(resultDest,indentSize=0)=>{s_requiredTexUnitsForPass.length=0;var lines=[];var lastPassVar=PRIM_COLOR_VARYING;for(var i=0;is_requiredTexUnitsForPass,getActiveTexture:()=>s_activeTexture,traverseState:keyView=>{for(var texUnit of s_texUnits){texUnit.traverseState(keyView)}},getTexUnitType:texUnitID=>{assert(texUnitID>=0&&texUnitID{s_activeTexture=texture-GL_TEXTURE0;if(GLImmediate.currentMatrix>=2){GLImmediate.currentMatrix=2+s_activeTexture}},hook_enable:cap=>{var cur=getCurTexUnit();switch(cap){case GL_TEXTURE_1D:if(!cur.enabled_tex1D){GLImmediate.currentRenderer=null;cur.enabled_tex1D=true;cur.texTypesEnabled|=1}break;case GL_TEXTURE_2D:if(!cur.enabled_tex2D){GLImmediate.currentRenderer=null;cur.enabled_tex2D=true;cur.texTypesEnabled|=2}break;case GL_TEXTURE_3D:if(!cur.enabled_tex3D){GLImmediate.currentRenderer=null;cur.enabled_tex3D=true;cur.texTypesEnabled|=4}break;case GL_TEXTURE_CUBE_MAP:if(!cur.enabled_texCube){GLImmediate.currentRenderer=null;cur.enabled_texCube=true;cur.texTypesEnabled|=8}break}},hook_disable:cap=>{var cur=getCurTexUnit();switch(cap){case GL_TEXTURE_1D:if(cur.enabled_tex1D){GLImmediate.currentRenderer=null;cur.enabled_tex1D=false;cur.texTypesEnabled&=~1}break;case GL_TEXTURE_2D:if(cur.enabled_tex2D){GLImmediate.currentRenderer=null;cur.enabled_tex2D=false;cur.texTypesEnabled&=~2}break;case GL_TEXTURE_3D:if(cur.enabled_tex3D){GLImmediate.currentRenderer=null;cur.enabled_tex3D=false;cur.texTypesEnabled&=~4}break;case GL_TEXTURE_CUBE_MAP:if(cur.enabled_texCube){GLImmediate.currentRenderer=null;cur.enabled_texCube=false;cur.texTypesEnabled&=~8}break}},hook_texEnvf(target,pname,param){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_RGB_SCALE:if(env.colorScale!=param){env.invalidateKey();env.colorScale=param}break;case GL_ALPHA_SCALE:if(env.alphaScale!=param){env.invalidateKey();env.alphaScale=param}break;default:err("WARNING: Unhandled `pname` in call to `glTexEnvf`.")}},hook_texEnvi(target,pname,param){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_MODE:if(env.mode!=param){env.invalidateKey();env.mode=param}break;case GL_COMBINE_RGB:if(env.colorCombiner!=param){env.invalidateKey();env.colorCombiner=param}break;case GL_COMBINE_ALPHA:if(env.alphaCombiner!=param){env.invalidateKey();env.alphaCombiner=param}break;case GL_SRC0_RGB:if(env.colorSrc[0]!=param){env.invalidateKey();env.colorSrc[0]=param}break;case GL_SRC1_RGB:if(env.colorSrc[1]!=param){env.invalidateKey();env.colorSrc[1]=param}break;case GL_SRC2_RGB:if(env.colorSrc[2]!=param){env.invalidateKey();env.colorSrc[2]=param}break;case GL_SRC0_ALPHA:if(env.alphaSrc[0]!=param){env.invalidateKey();env.alphaSrc[0]=param}break;case GL_SRC1_ALPHA:if(env.alphaSrc[1]!=param){env.invalidateKey();env.alphaSrc[1]=param}break;case GL_SRC2_ALPHA:if(env.alphaSrc[2]!=param){env.invalidateKey();env.alphaSrc[2]=param}break;case GL_OPERAND0_RGB:if(env.colorOp[0]!=param){env.invalidateKey();env.colorOp[0]=param}break;case GL_OPERAND1_RGB:if(env.colorOp[1]!=param){env.invalidateKey();env.colorOp[1]=param}break;case GL_OPERAND2_RGB:if(env.colorOp[2]!=param){env.invalidateKey();env.colorOp[2]=param}break;case GL_OPERAND0_ALPHA:if(env.alphaOp[0]!=param){env.invalidateKey();env.alphaOp[0]=param}break;case GL_OPERAND1_ALPHA:if(env.alphaOp[1]!=param){env.invalidateKey();env.alphaOp[1]=param}break;case GL_OPERAND2_ALPHA:if(env.alphaOp[2]!=param){env.invalidateKey();env.alphaOp[2]=param}break;case GL_RGB_SCALE:if(env.colorScale!=param){env.invalidateKey();env.colorScale=param}break;case GL_ALPHA_SCALE:if(env.alphaScale!=param){env.invalidateKey();env.alphaScale=param}break;default:err("WARNING: Unhandled `pname` in call to `glTexEnvi`.")}},hook_texEnvfv(target,pname,params){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_COLOR:{for(var i=0;i<4;i++){var param=HEAPF32[params+i*4>>2];if(env.envColor[i]!=param){env.invalidateKey();env.envColor[i]=param}}break}default:err("WARNING: Unhandled `pname` in call to `glTexEnvfv`.")}},hook_getTexEnviv(target,pname,param){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_MODE:HEAP32[param>>2]=env.mode;checkInt32(env.mode);return;case GL_TEXTURE_ENV_COLOR:HEAP32[param>>2]=Math.max(Math.min(env.envColor[0]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[0]*255,255,-255)));HEAP32[param+1>>2]=Math.max(Math.min(env.envColor[1]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[1]*255,255,-255)));HEAP32[param+2>>2]=Math.max(Math.min(env.envColor[2]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[2]*255,255,-255)));HEAP32[param+3>>2]=Math.max(Math.min(env.envColor[3]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[3]*255,255,-255)));return;case GL_COMBINE_RGB:HEAP32[param>>2]=env.colorCombiner;checkInt32(env.colorCombiner);return;case GL_COMBINE_ALPHA:HEAP32[param>>2]=env.alphaCombiner;checkInt32(env.alphaCombiner);return;case GL_SRC0_RGB:HEAP32[param>>2]=env.colorSrc[0];checkInt32(env.colorSrc[0]);return;case GL_SRC1_RGB:HEAP32[param>>2]=env.colorSrc[1];checkInt32(env.colorSrc[1]);return;case GL_SRC2_RGB:HEAP32[param>>2]=env.colorSrc[2];checkInt32(env.colorSrc[2]);return;case GL_SRC0_ALPHA:HEAP32[param>>2]=env.alphaSrc[0];checkInt32(env.alphaSrc[0]);return;case GL_SRC1_ALPHA:HEAP32[param>>2]=env.alphaSrc[1];checkInt32(env.alphaSrc[1]);return;case GL_SRC2_ALPHA:HEAP32[param>>2]=env.alphaSrc[2];checkInt32(env.alphaSrc[2]);return;case GL_OPERAND0_RGB:HEAP32[param>>2]=env.colorOp[0];checkInt32(env.colorOp[0]);return;case GL_OPERAND1_RGB:HEAP32[param>>2]=env.colorOp[1];checkInt32(env.colorOp[1]);return;case GL_OPERAND2_RGB:HEAP32[param>>2]=env.colorOp[2];checkInt32(env.colorOp[2]);return;case GL_OPERAND0_ALPHA:HEAP32[param>>2]=env.alphaOp[0];checkInt32(env.alphaOp[0]);return;case GL_OPERAND1_ALPHA:HEAP32[param>>2]=env.alphaOp[1];checkInt32(env.alphaOp[1]);return;case GL_OPERAND2_ALPHA:HEAP32[param>>2]=env.alphaOp[2];checkInt32(env.alphaOp[2]);return;case GL_RGB_SCALE:HEAP32[param>>2]=env.colorScale;checkInt32(env.colorScale);return;case GL_ALPHA_SCALE:HEAP32[param>>2]=env.alphaScale;checkInt32(env.alphaScale);return;default:err("WARNING: Unhandled `pname` in call to `glGetTexEnvi`.")}},hook_getTexEnvfv:(target,pname,param)=>{if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_COLOR:HEAPF32[param>>2]=env.envColor[0];HEAPF32[param+4>>2]=env.envColor[1];HEAPF32[param+8>>2]=env.envColor[2];HEAPF32[param+12>>2]=env.envColor[3];return}}}},vertexData:null,vertexDataU8:null,tempData:null,indexData:null,vertexCounter:0,mode:-1,rendererCache:null,rendererComponents:[],rendererComponentPointer:0,lastRenderer:null,lastArrayBuffer:null,lastProgram:null,lastStride:-1,matrix:[],matrixStack:[],currentMatrix:0,tempMatrix:null,matricesModified:false,useTextureMatrix:false,VERTEX:0,NORMAL:1,COLOR:2,TEXTURE0:3,NUM_ATTRIBUTES:-1,MAX_TEXTURES:-1,totalEnabledClientAttributes:0,enabledClientAttributes:[0,0],clientAttributes:[],liveClientAttributes:[],currentRenderer:null,modifiedClientAttributes:false,clientActiveTexture:0,clientColor:null,usedTexUnitList:[],fixedFunctionProgram:null,setClientAttribute(name,size,type,stride,pointer){var attrib=GLImmediate.clientAttributes[name];if(!attrib){for(var i=0;i<=name;i++){GLImmediate.clientAttributes[i]||={name,size,type,stride,pointer,offset:0}}}else{attrib.name=name;attrib.size=size;attrib.type=type;attrib.stride=stride;attrib.pointer=pointer;attrib.offset=0}GLImmediate.modifiedClientAttributes=true},addRendererComponent(name,size,type){if(!GLImmediate.rendererComponents[name]){GLImmediate.rendererComponents[name]=1;if(GLImmediate.enabledClientAttributes[name]){warnOnce("Warning: glTexCoord used after EnableClientState for TEXTURE_COORD_ARRAY for TEXTURE0. Disabling TEXTURE_COORD_ARRAY...")}GLImmediate.enabledClientAttributes[name]=true;GLImmediate.setClientAttribute(name,size,type,0,GLImmediate.rendererComponentPointer);GLImmediate.rendererComponentPointer+=size*GL.byteSizeByType[type-GL.byteSizeByTypeRoot]}else{GLImmediate.rendererComponents[name]++}},disableBeginEndClientAttributes(){for(var i=0;i0&&this.normalLocation>=0;this.hasColor=this.colorLocation===0||this.colorLocation>0;this.floatType=GLctx.FLOAT;this.fogColorLocation=GLctx.getUniformLocation(this.program,"u_fogColor");this.fogEndLocation=GLctx.getUniformLocation(this.program,"u_fogEnd");this.fogScaleLocation=GLctx.getUniformLocation(this.program,"u_fogScale");this.fogDensityLocation=GLctx.getUniformLocation(this.program,"u_fogDensity");this.hasFog=!!(this.fogColorLocation||this.fogEndLocation||this.fogScaleLocation||this.fogDensityLocation);this.pointSizeLocation=GLctx.getUniformLocation(this.program,"u_pointSize");this.hasClipPlane=false;this.clipPlaneEquationLocation=[];for(var clipPlaneId=0;clipPlaneId>2,end>>2))}if(!GL.currProgram){if(GLImmediate.fixedFunctionProgram!=this.program){GLctx.useProgram(this.program);GLImmediate.fixedFunctionProgram=this.program}}if(this.modelViewLocation&&this.modelViewMatrixVersion!=GLImmediate.matrixVersion[0]){this.modelViewMatrixVersion=GLImmediate.matrixVersion[0];GLctx.uniformMatrix4fv(this.modelViewLocation,false,GLImmediate.matrix[0]);if(GLEmulation.lightEnabled){var tmpMVinv=GLImmediate.matrixLib.mat4.create(GLImmediate.matrix[0]);GLImmediate.matrixLib.mat4.inverse(tmpMVinv);GLImmediate.matrixLib.mat4.transpose(tmpMVinv);GLctx.uniformMatrix3fv(this.normalMatrixLocation,false,GLImmediate.matrixLib.mat4.toMat3(tmpMVinv))}}if(this.projectionLocation&&this.projectionMatrixVersion!=GLImmediate.matrixVersion[1]){this.projectionMatrixVersion=GLImmediate.matrixVersion[1];GLctx.uniformMatrix4fv(this.projectionLocation,false,GLImmediate.matrix[1])}var clientAttributes=GLImmediate.clientAttributes;var posAttr=clientAttributes[GLImmediate.VERTEX];GLctx.vertexAttribPointer(this.positionLocation,posAttr.size,posAttr.type,false,GLImmediate.stride,posAttr.offset);GLctx.enableVertexAttribArray(this.positionLocation);if(this.hasNormal){var normalAttr=clientAttributes[GLImmediate.NORMAL];GLctx.vertexAttribPointer(this.normalLocation,normalAttr.size,normalAttr.type,true,GLImmediate.stride,normalAttr.offset);GLctx.enableVertexAttribArray(this.normalLocation)}if(this.hasTextures){for(var i=0;i=0){GLctx.disableVertexAttribArray(this.texCoordLocations[i])}}}if(this.hasColor){GLctx.disableVertexAttribArray(this.colorLocation)}if(this.hasNormal){GLctx.disableVertexAttribArray(this.normalLocation)}if(!GL.currProgram){GLctx.useProgram(null);GLImmediate.fixedFunctionProgram=0}if(!GLctx.currentArrayBufferBinding){GLctx.bindBuffer(GLctx.ARRAY_BUFFER,null);GLImmediate.lastArrayBuffer=null}GLImmediate.matricesModified=true};this.init()}return new Renderer},setupFuncs(){GLImmediate.MapTreeLib=GLImmediate.spawnMapTreeLib();GLImmediate.spawnMapTreeLib=null;GLImmediate.TexEnvJIT=GLImmediate.spawnTexEnvJIT();GLImmediate.spawnTexEnvJIT=null;GLImmediate.setupHooks()},setupHooks(){if(!GLEmulation.hasRunInit){GLEmulation.init()}var glActiveTexture=_glActiveTexture;_glActiveTexture=_emscripten_glActiveTexture=texture=>{GLImmediate.TexEnvJIT.hook_activeTexture(texture);glActiveTexture(texture)};var glEnable=_glEnable;_glEnable=_emscripten_glEnable=cap=>{GLImmediate.TexEnvJIT.hook_enable(cap);glEnable(cap)};var glDisable=_glDisable;_glDisable=_emscripten_glDisable=cap=>{GLImmediate.TexEnvJIT.hook_disable(cap);glDisable(cap)};_glTexEnvf=_emscripten_glTexEnvf=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_texEnvf(target,pname,param)};_glTexEnvi=_emscripten_glTexEnvi=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_texEnvi(target,pname,param)};_glTexEnvfv=_emscripten_glTexEnvfv=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_texEnvfv(target,pname,param)};_glGetTexEnviv=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_getTexEnviv(target,pname,param)};_glGetTexEnvfv=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_getTexEnvfv(target,pname,param)};var glGetIntegerv=_glGetIntegerv;_glGetIntegerv=_emscripten_glGetIntegerv=(pname,params)=>{switch(pname){case 35725:{var cur=GLctx.getParameter(GLctx.CURRENT_PROGRAM);if(cur==GLImmediate.fixedFunctionProgram){HEAP32[params>>2]=0;checkInt32(0);return}break}}glGetIntegerv(pname,params)}},initted:false,init(){err("WARNING: using emscripten GL immediate mode emulation. This is very limited in what it supports");GLImmediate.initted=true;if(!Browser.useWebGL)return;GLImmediate.MAX_TEXTURES=Math.min(Module["GL_MAX_TEXTURE_IMAGE_UNITS"]||GLctx.getParameter(GLctx.MAX_TEXTURE_IMAGE_UNITS),28);GLImmediate.TexEnvJIT.init(GLctx,GLImmediate.MAX_TEXTURES);GLImmediate.NUM_ATTRIBUTES=3+GLImmediate.MAX_TEXTURES;GLImmediate.clientAttributes=[];GLEmulation.enabledClientAttribIndices=[];for(var i=0;i>2);GLImmediate.indexData=new Uint16Array(GL.MAX_TEMP_BUFFER_SIZE>>1);GLImmediate.vertexDataU8=new Uint8Array(GLImmediate.tempData.buffer);GL.generateTempBuffers(true,GL.currentContext);GLImmediate.clientColor=new Float32Array([1,1,1,1])},prepareClientAttributes(count,beginEnd){if(!GLImmediate.modifiedClientAttributes){GLImmediate.vertexCounter=GLImmediate.stride*count/4;return}GLImmediate.modifiedClientAttributes=false;var clientStartPointer=4294967295;var bytes=0;var minStride=4294967295;var maxStride=0;var attributes=GLImmediate.liveClientAttributes;attributes.length=0;for(var i=0;i<3+GLImmediate.MAX_TEXTURES;i++){if(GLImmediate.enabledClientAttributes[i]){var attr=GLImmediate.clientAttributes[i];attributes.push(attr);clientStartPointer=Math.min(clientStartPointer,attr.pointer);attr.sizeBytes=attr.size*GL.byteSizeByType[attr.type-GL.byteSizeByTypeRoot];bytes+=attr.sizeBytes;minStride=Math.min(minStride,attr.stride);maxStride=Math.max(maxStride,attr.stride)}}if((minStride!=maxStride||maxStride>2];HEAP32[start+attr.offset+(bytes*j+k)>>2]=val;checkInt32(val)}}}else{for(var j=0;j=0||!numProvidedIndexes);var renderer=GLImmediate.getRenderer();var numVertices=4*GLImmediate.vertexCounter/GLImmediate.stride;if(!numVertices)return;assert(numVertices%1==0,"`numVertices` must be an integer.");var emulatedElementArrayBuffer=false;var numIndexes=0;if(numProvidedIndexes){numIndexes=numProvidedIndexes;if(!GLctx.currentArrayBufferBinding&&GLImmediate.firstVertex>GLImmediate.lastVertex){assert(!GLctx.currentElementArrayBufferBinding);for(var i=0;i>1];GLImmediate.firstVertex=Math.min(GLImmediate.firstVertex,currIndex);GLImmediate.lastVertex=Math.max(GLImmediate.lastVertex,currIndex+1)}}if(!GLctx.currentElementArrayBufferBinding){assert(numProvidedIndexes<<1<=GL.MAX_TEMP_BUFFER_SIZE,"too many immediate mode indexes (a)");var indexBuffer=GL.getTempIndexBuffer(numProvidedIndexes<<1);GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,indexBuffer);GLctx.bufferSubData(GLctx.ELEMENT_ARRAY_BUFFER,0,HEAPU16.subarray(ptr>>1,ptr+(numProvidedIndexes<<1)>>1));ptr=0;emulatedElementArrayBuffer=true}}else if(GLImmediate.mode>6){if(GLImmediate.mode!=7)abort("unsupported immediate mode "+GLImmediate.mode);assert(GLImmediate.firstVertex%4==0);ptr=GLImmediate.firstVertex*3;var numQuads=numVertices/4;numIndexes=numQuads*6;assert(ptr+(numIndexes<<1)<=GL.MAX_TEMP_BUFFER_SIZE,"too many immediate mode indexes (b)");GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,GL.currentContext.tempQuadIndexBuffer);emulatedElementArrayBuffer=true;GLImmediate.mode=GLctx.TRIANGLES}renderer.prepare();if(numIndexes){GLctx.drawElements(GLImmediate.mode,numIndexes,GLctx.UNSIGNED_SHORT,ptr)}else{GLctx.drawArrays(GLImmediate.mode,startIndex,numVertices)}if(emulatedElementArrayBuffer){GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,GL.buffers[GLctx.currentElementArrayBufferBinding]||null)}renderer.cleanup()}};GLImmediate.matrixLib=(()=>{var vec3={};var mat3={};var mat4={};var quat4={};var MatrixArray=Float32Array;vec3.create=function(vec){var dest=new MatrixArray(3);if(vec){dest[0]=vec[0];dest[1]=vec[1];dest[2]=vec[2]}else{dest[0]=dest[1]=dest[2]=0}return dest};vec3.set=function(vec,dest){dest[0]=vec[0];dest[1]=vec[1];dest[2]=vec[2];return dest};vec3.add=function(vec,vec2,dest){if(!dest||vec===dest){vec[0]+=vec2[0];vec[1]+=vec2[1];vec[2]+=vec2[2];return vec}dest[0]=vec[0]+vec2[0];dest[1]=vec[1]+vec2[1];dest[2]=vec[2]+vec2[2];return dest};vec3.subtract=function(vec,vec2,dest){if(!dest||vec===dest){vec[0]-=vec2[0];vec[1]-=vec2[1];vec[2]-=vec2[2];return vec}dest[0]=vec[0]-vec2[0];dest[1]=vec[1]-vec2[1];dest[2]=vec[2]-vec2[2];return dest};vec3.multiply=function(vec,vec2,dest){if(!dest||vec===dest){vec[0]*=vec2[0];vec[1]*=vec2[1];vec[2]*=vec2[2];return vec}dest[0]=vec[0]*vec2[0];dest[1]=vec[1]*vec2[1];dest[2]=vec[2]*vec2[2];return dest};vec3.negate=function(vec,dest){if(!dest){dest=vec}dest[0]=-vec[0];dest[1]=-vec[1];dest[2]=-vec[2];return dest};vec3.scale=function(vec,val,dest){if(!dest||vec===dest){vec[0]*=val;vec[1]*=val;vec[2]*=val;return vec}dest[0]=vec[0]*val;dest[1]=vec[1]*val;dest[2]=vec[2]*val;return dest};vec3.normalize=function(vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],len=Math.sqrt(x*x+y*y+z*z);if(!len){dest[0]=0;dest[1]=0;dest[2]=0;return dest}else if(len===1){dest[0]=x;dest[1]=y;dest[2]=z;return dest}len=1/len;dest[0]=x*len;dest[1]=y*len;dest[2]=z*len;return dest};vec3.cross=function(vec,vec2,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],x2=vec2[0],y2=vec2[1],z2=vec2[2];dest[0]=y*z2-z*y2;dest[1]=z*x2-x*z2;dest[2]=x*y2-y*x2;return dest};vec3.length=function(vec){var x=vec[0],y=vec[1],z=vec[2];return Math.sqrt(x*x+y*y+z*z)};vec3.dot=function(vec,vec2){return vec[0]*vec2[0]+vec[1]*vec2[1]+vec[2]*vec2[2]};vec3.direction=function(vec,vec2,dest){if(!dest){dest=vec}var x=vec[0]-vec2[0],y=vec[1]-vec2[1],z=vec[2]-vec2[2],len=Math.sqrt(x*x+y*y+z*z);if(!len){dest[0]=0;dest[1]=0;dest[2]=0;return dest}len=1/len;dest[0]=x*len;dest[1]=y*len;dest[2]=z*len;return dest};vec3.lerp=function(vec,vec2,lerp,dest){if(!dest){dest=vec}dest[0]=vec[0]+lerp*(vec2[0]-vec[0]);dest[1]=vec[1]+lerp*(vec2[1]-vec[1]);dest[2]=vec[2]+lerp*(vec2[2]-vec[2]);return dest};vec3.dist=function(vec,vec2){var x=vec2[0]-vec[0],y=vec2[1]-vec[1],z=vec2[2]-vec[2];return Math.sqrt(x*x+y*y+z*z)};vec3.unproject=function(vec,view,proj,viewport,dest){if(!dest){dest=vec}var m=mat4.create();var v=new MatrixArray(4);v[0]=(vec[0]-viewport[0])*2/viewport[2]-1;v[1]=(vec[1]-viewport[1])*2/viewport[3]-1;v[2]=2*vec[2]-1;v[3]=1;mat4.multiply(proj,view,m);if(!mat4.inverse(m)){return null}mat4.multiplyVec4(m,v);if(v[3]===0){return null}dest[0]=v[0]/v[3];dest[1]=v[1]/v[3];dest[2]=v[2]/v[3];return dest};vec3.str=function(vec){return"["+vec[0]+", "+vec[1]+", "+vec[2]+"]"};mat3.create=function(mat){var dest=new MatrixArray(9);if(mat){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8]}return dest};mat3.set=function(mat,dest){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];return dest};mat3.identity=function(dest){if(!dest){dest=mat3.create()}dest[0]=1;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=1;dest[5]=0;dest[6]=0;dest[7]=0;dest[8]=1;return dest};mat3.transpose=function(mat,dest){if(!dest||mat===dest){var a01=mat[1],a02=mat[2],a12=mat[5];mat[1]=mat[3];mat[2]=mat[6];mat[3]=a01;mat[5]=mat[7];mat[6]=a02;mat[7]=a12;return mat}dest[0]=mat[0];dest[1]=mat[3];dest[2]=mat[6];dest[3]=mat[1];dest[4]=mat[4];dest[5]=mat[7];dest[6]=mat[2];dest[7]=mat[5];dest[8]=mat[8];return dest};mat3.toMat4=function(mat,dest){if(!dest){dest=mat4.create()}dest[15]=1;dest[14]=0;dest[13]=0;dest[12]=0;dest[11]=0;dest[10]=mat[8];dest[9]=mat[7];dest[8]=mat[6];dest[7]=0;dest[6]=mat[5];dest[5]=mat[4];dest[4]=mat[3];dest[3]=0;dest[2]=mat[2];dest[1]=mat[1];dest[0]=mat[0];return dest};mat3.str=function(mat){return"["+mat[0]+", "+mat[1]+", "+mat[2]+", "+mat[3]+", "+mat[4]+", "+mat[5]+", "+mat[6]+", "+mat[7]+", "+mat[8]+"]"};mat4.create=function(mat){var dest=new MatrixArray(16);if(mat){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}return dest};mat4.set=function(mat,dest){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15];return dest};mat4.identity=function(dest){if(!dest){dest=mat4.create()}dest[0]=1;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=0;dest[5]=1;dest[6]=0;dest[7]=0;dest[8]=0;dest[9]=0;dest[10]=1;dest[11]=0;dest[12]=0;dest[13]=0;dest[14]=0;dest[15]=1;return dest};mat4.transpose=function(mat,dest){if(!dest||mat===dest){var a01=mat[1],a02=mat[2],a03=mat[3],a12=mat[6],a13=mat[7],a23=mat[11];mat[1]=mat[4];mat[2]=mat[8];mat[3]=mat[12];mat[4]=a01;mat[6]=mat[9];mat[7]=mat[13];mat[8]=a02;mat[9]=a12;mat[11]=mat[14];mat[12]=a03;mat[13]=a13;mat[14]=a23;return mat}dest[0]=mat[0];dest[1]=mat[4];dest[2]=mat[8];dest[3]=mat[12];dest[4]=mat[1];dest[5]=mat[5];dest[6]=mat[9];dest[7]=mat[13];dest[8]=mat[2];dest[9]=mat[6];dest[10]=mat[10];dest[11]=mat[14];dest[12]=mat[3];dest[13]=mat[7];dest[14]=mat[11];dest[15]=mat[15];return dest};mat4.determinant=function(mat){var a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11],a30=mat[12],a31=mat[13],a32=mat[14],a33=mat[15];return a30*a21*a12*a03-a20*a31*a12*a03-a30*a11*a22*a03+a10*a31*a22*a03+a20*a11*a32*a03-a10*a21*a32*a03-a30*a21*a02*a13+a20*a31*a02*a13+a30*a01*a22*a13-a00*a31*a22*a13-a20*a01*a32*a13+a00*a21*a32*a13+a30*a11*a02*a23-a10*a31*a02*a23-a30*a01*a12*a23+a00*a31*a12*a23+a10*a01*a32*a23-a00*a11*a32*a23-a20*a11*a02*a33+a10*a21*a02*a33+a20*a01*a12*a33-a00*a21*a12*a33-a10*a01*a22*a33+a00*a11*a22*a33};mat4.inverse=function(mat,dest){if(!dest){dest=mat}var a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11],a30=mat[12],a31=mat[13],a32=mat[14],a33=mat[15],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32,d=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06,invDet;if(!d){return null}invDet=1/d;dest[0]=(a11*b11-a12*b10+a13*b09)*invDet;dest[1]=(-a01*b11+a02*b10-a03*b09)*invDet;dest[2]=(a31*b05-a32*b04+a33*b03)*invDet;dest[3]=(-a21*b05+a22*b04-a23*b03)*invDet;dest[4]=(-a10*b11+a12*b08-a13*b07)*invDet;dest[5]=(a00*b11-a02*b08+a03*b07)*invDet;dest[6]=(-a30*b05+a32*b02-a33*b01)*invDet;dest[7]=(a20*b05-a22*b02+a23*b01)*invDet;dest[8]=(a10*b10-a11*b08+a13*b06)*invDet;dest[9]=(-a00*b10+a01*b08-a03*b06)*invDet;dest[10]=(a30*b04-a31*b02+a33*b00)*invDet;dest[11]=(-a20*b04+a21*b02-a23*b00)*invDet;dest[12]=(-a10*b09+a11*b07-a12*b06)*invDet;dest[13]=(a00*b09-a01*b07+a02*b06)*invDet;dest[14]=(-a30*b03+a31*b01-a32*b00)*invDet;dest[15]=(a20*b03-a21*b01+a22*b00)*invDet;return dest};mat4.toRotationMat=function(mat,dest){if(!dest){dest=mat4.create()}dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=0;dest[13]=0;dest[14]=0;dest[15]=1;return dest};mat4.toMat3=function(mat,dest){if(!dest){dest=mat3.create()}dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[4];dest[4]=mat[5];dest[5]=mat[6];dest[6]=mat[8];dest[7]=mat[9];dest[8]=mat[10];return dest};mat4.toInverseMat3=function(mat,dest){var a00=mat[0],a01=mat[1],a02=mat[2],a10=mat[4],a11=mat[5],a12=mat[6],a20=mat[8],a21=mat[9],a22=mat[10],b01=a22*a11-a12*a21,b11=-a22*a10+a12*a20,b21=a21*a10-a11*a20,d=a00*b01+a01*b11+a02*b21,id;if(!d){return null}id=1/d;if(!dest){dest=mat3.create()}dest[0]=b01*id;dest[1]=(-a22*a01+a02*a21)*id;dest[2]=(a12*a01-a02*a11)*id;dest[3]=b11*id;dest[4]=(a22*a00-a02*a20)*id;dest[5]=(-a12*a00+a02*a10)*id;dest[6]=b21*id;dest[7]=(-a21*a00+a01*a20)*id;dest[8]=(a11*a00-a01*a10)*id;return dest};mat4.multiply=function(mat,mat2,dest){if(!dest){dest=mat}var a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11],a30=mat[12],a31=mat[13],a32=mat[14],a33=mat[15],b00=mat2[0],b01=mat2[1],b02=mat2[2],b03=mat2[3],b10=mat2[4],b11=mat2[5],b12=mat2[6],b13=mat2[7],b20=mat2[8],b21=mat2[9],b22=mat2[10],b23=mat2[11],b30=mat2[12],b31=mat2[13],b32=mat2[14],b33=mat2[15];dest[0]=b00*a00+b01*a10+b02*a20+b03*a30;dest[1]=b00*a01+b01*a11+b02*a21+b03*a31;dest[2]=b00*a02+b01*a12+b02*a22+b03*a32;dest[3]=b00*a03+b01*a13+b02*a23+b03*a33;dest[4]=b10*a00+b11*a10+b12*a20+b13*a30;dest[5]=b10*a01+b11*a11+b12*a21+b13*a31;dest[6]=b10*a02+b11*a12+b12*a22+b13*a32;dest[7]=b10*a03+b11*a13+b12*a23+b13*a33;dest[8]=b20*a00+b21*a10+b22*a20+b23*a30;dest[9]=b20*a01+b21*a11+b22*a21+b23*a31;dest[10]=b20*a02+b21*a12+b22*a22+b23*a32;dest[11]=b20*a03+b21*a13+b22*a23+b23*a33;dest[12]=b30*a00+b31*a10+b32*a20+b33*a30;dest[13]=b30*a01+b31*a11+b32*a21+b33*a31;dest[14]=b30*a02+b31*a12+b32*a22+b33*a32;dest[15]=b30*a03+b31*a13+b32*a23+b33*a33;return dest};mat4.multiplyVec3=function(mat,vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2];dest[0]=mat[0]*x+mat[4]*y+mat[8]*z+mat[12];dest[1]=mat[1]*x+mat[5]*y+mat[9]*z+mat[13];dest[2]=mat[2]*x+mat[6]*y+mat[10]*z+mat[14];return dest};mat4.multiplyVec4=function(mat,vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],w=vec[3];dest[0]=mat[0]*x+mat[4]*y+mat[8]*z+mat[12]*w;dest[1]=mat[1]*x+mat[5]*y+mat[9]*z+mat[13]*w;dest[2]=mat[2]*x+mat[6]*y+mat[10]*z+mat[14]*w;dest[3]=mat[3]*x+mat[7]*y+mat[11]*z+mat[15]*w;return dest};mat4.translate=function(mat,vec,dest){var x=vec[0],y=vec[1],z=vec[2],a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23;if(!dest||mat===dest){mat[12]=mat[0]*x+mat[4]*y+mat[8]*z+mat[12];mat[13]=mat[1]*x+mat[5]*y+mat[9]*z+mat[13];mat[14]=mat[2]*x+mat[6]*y+mat[10]*z+mat[14];mat[15]=mat[3]*x+mat[7]*y+mat[11]*z+mat[15];return mat}a00=mat[0];a01=mat[1];a02=mat[2];a03=mat[3];a10=mat[4];a11=mat[5];a12=mat[6];a13=mat[7];a20=mat[8];a21=mat[9];a22=mat[10];a23=mat[11];dest[0]=a00;dest[1]=a01;dest[2]=a02;dest[3]=a03;dest[4]=a10;dest[5]=a11;dest[6]=a12;dest[7]=a13;dest[8]=a20;dest[9]=a21;dest[10]=a22;dest[11]=a23;dest[12]=a00*x+a10*y+a20*z+mat[12];dest[13]=a01*x+a11*y+a21*z+mat[13];dest[14]=a02*x+a12*y+a22*z+mat[14];dest[15]=a03*x+a13*y+a23*z+mat[15];return dest};mat4.scale=function(mat,vec,dest){var x=vec[0],y=vec[1],z=vec[2];if(!dest||mat===dest){mat[0]*=x;mat[1]*=x;mat[2]*=x;mat[3]*=x;mat[4]*=y;mat[5]*=y;mat[6]*=y;mat[7]*=y;mat[8]*=z;mat[9]*=z;mat[10]*=z;mat[11]*=z;return mat}dest[0]=mat[0]*x;dest[1]=mat[1]*x;dest[2]=mat[2]*x;dest[3]=mat[3]*x;dest[4]=mat[4]*y;dest[5]=mat[5]*y;dest[6]=mat[6]*y;dest[7]=mat[7]*y;dest[8]=mat[8]*z;dest[9]=mat[9]*z;dest[10]=mat[10]*z;dest[11]=mat[11]*z;dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15];return dest};mat4.rotate=function(mat,angle,axis,dest){var x=axis[0],y=axis[1],z=axis[2],len=Math.sqrt(x*x+y*y+z*z),s,c,t,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,b00,b01,b02,b10,b11,b12,b20,b21,b22;if(!len){return null}if(len!==1){len=1/len;x*=len;y*=len;z*=len}s=Math.sin(angle);c=Math.cos(angle);t=1-c;a00=mat[0];a01=mat[1];a02=mat[2];a03=mat[3];a10=mat[4];a11=mat[5];a12=mat[6];a13=mat[7];a20=mat[8];a21=mat[9];a22=mat[10];a23=mat[11];b00=x*x*t+c;b01=y*x*t+z*s;b02=z*x*t-y*s;b10=x*y*t-z*s;b11=y*y*t+c;b12=z*y*t+x*s;b20=x*z*t+y*s;b21=y*z*t-x*s;b22=z*z*t+c;if(!dest){dest=mat}else if(mat!==dest){dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[0]=a00*b00+a10*b01+a20*b02;dest[1]=a01*b00+a11*b01+a21*b02;dest[2]=a02*b00+a12*b01+a22*b02;dest[3]=a03*b00+a13*b01+a23*b02;dest[4]=a00*b10+a10*b11+a20*b12;dest[5]=a01*b10+a11*b11+a21*b12;dest[6]=a02*b10+a12*b11+a22*b12;dest[7]=a03*b10+a13*b11+a23*b12;dest[8]=a00*b20+a10*b21+a20*b22;dest[9]=a01*b20+a11*b21+a21*b22;dest[10]=a02*b20+a12*b21+a22*b22;dest[11]=a03*b20+a13*b21+a23*b22;return dest};mat4.rotateX=function(mat,angle,dest){var s=Math.sin(angle),c=Math.cos(angle),a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11];if(!dest){dest=mat}else if(mat!==dest){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[4]=a10*c+a20*s;dest[5]=a11*c+a21*s;dest[6]=a12*c+a22*s;dest[7]=a13*c+a23*s;dest[8]=a10*-s+a20*c;dest[9]=a11*-s+a21*c;dest[10]=a12*-s+a22*c;dest[11]=a13*-s+a23*c;return dest};mat4.rotateY=function(mat,angle,dest){var s=Math.sin(angle),c=Math.cos(angle),a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11];if(!dest){dest=mat}else if(mat!==dest){dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[0]=a00*c+a20*-s;dest[1]=a01*c+a21*-s;dest[2]=a02*c+a22*-s;dest[3]=a03*c+a23*-s;dest[8]=a00*s+a20*c;dest[9]=a01*s+a21*c;dest[10]=a02*s+a22*c;dest[11]=a03*s+a23*c;return dest};mat4.rotateZ=function(mat,angle,dest){var s=Math.sin(angle),c=Math.cos(angle),a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7];if(!dest){dest=mat}else if(mat!==dest){dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[0]=a00*c+a10*s;dest[1]=a01*c+a11*s;dest[2]=a02*c+a12*s;dest[3]=a03*c+a13*s;dest[4]=a00*-s+a10*c;dest[5]=a01*-s+a11*c;dest[6]=a02*-s+a12*c;dest[7]=a03*-s+a13*c;return dest};mat4.frustum=function(left,right,bottom,top,near,far,dest){if(!dest){dest=mat4.create()}var rl=right-left,tb=top-bottom,fn=far-near;dest[0]=near*2/rl;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=0;dest[5]=near*2/tb;dest[6]=0;dest[7]=0;dest[8]=(right+left)/rl;dest[9]=(top+bottom)/tb;dest[10]=-(far+near)/fn;dest[11]=-1;dest[12]=0;dest[13]=0;dest[14]=-(far*near*2)/fn;dest[15]=0;return dest};mat4.perspective=function(fovy,aspect,near,far,dest){var top=near*Math.tan(fovy*Math.PI/360),right=top*aspect;return mat4.frustum(-right,right,-top,top,near,far,dest)};mat4.ortho=function(left,right,bottom,top,near,far,dest){if(!dest){dest=mat4.create()}var rl=right-left,tb=top-bottom,fn=far-near;dest[0]=2/rl;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=0;dest[5]=2/tb;dest[6]=0;dest[7]=0;dest[8]=0;dest[9]=0;dest[10]=-2/fn;dest[11]=0;dest[12]=-(left+right)/rl;dest[13]=-(top+bottom)/tb;dest[14]=-(far+near)/fn;dest[15]=1;return dest};mat4.lookAt=function(eye,center,up,dest){if(!dest){dest=mat4.create()}var x0,x1,x2,y0,y1,y2,z0,z1,z2,len,eyex=eye[0],eyey=eye[1],eyez=eye[2],upx=up[0],upy=up[1],upz=up[2],centerx=center[0],centery=center[1],centerz=center[2];if(eyex===centerx&&eyey===centery&&eyez===centerz){return mat4.identity(dest)}z0=eyex-centerx;z1=eyey-centery;z2=eyez-centerz;len=1/Math.sqrt(z0*z0+z1*z1+z2*z2);z0*=len;z1*=len;z2*=len;x0=upy*z2-upz*z1;x1=upz*z0-upx*z2;x2=upx*z1-upy*z0;len=Math.sqrt(x0*x0+x1*x1+x2*x2);if(!len){x0=0;x1=0;x2=0}else{len=1/len;x0*=len;x1*=len;x2*=len}y0=z1*x2-z2*x1;y1=z2*x0-z0*x2;y2=z0*x1-z1*x0;len=Math.sqrt(y0*y0+y1*y1+y2*y2);if(!len){y0=0;y1=0;y2=0}else{len=1/len;y0*=len;y1*=len;y2*=len}dest[0]=x0;dest[1]=y0;dest[2]=z0;dest[3]=0;dest[4]=x1;dest[5]=y1;dest[6]=z1;dest[7]=0;dest[8]=x2;dest[9]=y2;dest[10]=z2;dest[11]=0;dest[12]=-(x0*eyex+x1*eyey+x2*eyez);dest[13]=-(y0*eyex+y1*eyey+y2*eyez);dest[14]=-(z0*eyex+z1*eyey+z2*eyez);dest[15]=1;return dest};mat4.fromRotationTranslation=function(quat,vec,dest){if(!dest){dest=mat4.create()}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;dest[0]=1-(yy+zz);dest[1]=xy+wz;dest[2]=xz-wy;dest[3]=0;dest[4]=xy-wz;dest[5]=1-(xx+zz);dest[6]=yz+wx;dest[7]=0;dest[8]=xz+wy;dest[9]=yz-wx;dest[10]=1-(xx+yy);dest[11]=0;dest[12]=vec[0];dest[13]=vec[1];dest[14]=vec[2];dest[15]=1;return dest};mat4.str=function(mat){return"["+mat[0]+", "+mat[1]+", "+mat[2]+", "+mat[3]+", "+mat[4]+", "+mat[5]+", "+mat[6]+", "+mat[7]+", "+mat[8]+", "+mat[9]+", "+mat[10]+", "+mat[11]+", "+mat[12]+", "+mat[13]+", "+mat[14]+", "+mat[15]+"]"};quat4.create=function(quat){var dest=new MatrixArray(4);if(quat){dest[0]=quat[0];dest[1]=quat[1];dest[2]=quat[2];dest[3]=quat[3]}return dest};quat4.set=function(quat,dest){dest[0]=quat[0];dest[1]=quat[1];dest[2]=quat[2];dest[3]=quat[3];return dest};quat4.calculateW=function(quat,dest){var x=quat[0],y=quat[1],z=quat[2];if(!dest||quat===dest){quat[3]=-Math.sqrt(Math.abs(1-x*x-y*y-z*z));return quat}dest[0]=x;dest[1]=y;dest[2]=z;dest[3]=-Math.sqrt(Math.abs(1-x*x-y*y-z*z));return dest};quat4.dot=function(quat,quat2){return quat[0]*quat2[0]+quat[1]*quat2[1]+quat[2]*quat2[2]+quat[3]*quat2[3]};quat4.inverse=function(quat,dest){var q0=quat[0],q1=quat[1],q2=quat[2],q3=quat[3],dot=q0*q0+q1*q1+q2*q2+q3*q3,invDot=dot?1/dot:0;if(!dest||quat===dest){quat[0]*=-invDot;quat[1]*=-invDot;quat[2]*=-invDot;quat[3]*=invDot;return quat}dest[0]=-quat[0]*invDot;dest[1]=-quat[1]*invDot;dest[2]=-quat[2]*invDot;dest[3]=quat[3]*invDot;return dest};quat4.conjugate=function(quat,dest){if(!dest||quat===dest){quat[0]*=-1;quat[1]*=-1;quat[2]*=-1;return quat}dest[0]=-quat[0];dest[1]=-quat[1];dest[2]=-quat[2];dest[3]=quat[3];return dest};quat4.length=function(quat){var x=quat[0],y=quat[1],z=quat[2],w=quat[3];return Math.sqrt(x*x+y*y+z*z+w*w)};quat4.normalize=function(quat,dest){if(!dest){dest=quat}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],len=Math.sqrt(x*x+y*y+z*z+w*w);if(len===0){dest[0]=0;dest[1]=0;dest[2]=0;dest[3]=0;return dest}len=1/len;dest[0]=x*len;dest[1]=y*len;dest[2]=z*len;dest[3]=w*len;return dest};quat4.add=function(quat,quat2,dest){if(!dest||quat===dest){quat[0]+=quat2[0];quat[1]+=quat2[1];quat[2]+=quat2[2];quat[3]+=quat2[3];return quat}dest[0]=quat[0]+quat2[0];dest[1]=quat[1]+quat2[1];dest[2]=quat[2]+quat2[2];dest[3]=quat[3]+quat2[3];return dest};quat4.multiply=function(quat,quat2,dest){if(!dest){dest=quat}var qax=quat[0],qay=quat[1],qaz=quat[2],qaw=quat[3],qbx=quat2[0],qby=quat2[1],qbz=quat2[2],qbw=quat2[3];dest[0]=qax*qbw+qaw*qbx+qay*qbz-qaz*qby;dest[1]=qay*qbw+qaw*qby+qaz*qbx-qax*qbz;dest[2]=qaz*qbw+qaw*qbz+qax*qby-qay*qbx;dest[3]=qaw*qbw-qax*qbx-qay*qby-qaz*qbz;return dest};quat4.multiplyVec3=function(quat,vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],qx=quat[0],qy=quat[1],qz=quat[2],qw=quat[3],ix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;dest[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;dest[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;dest[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;return dest};quat4.scale=function(quat,val,dest){if(!dest||quat===dest){quat[0]*=val;quat[1]*=val;quat[2]*=val;quat[3]*=val;return quat}dest[0]=quat[0]*val;dest[1]=quat[1]*val;dest[2]=quat[2]*val;dest[3]=quat[3]*val;return dest};quat4.toMat3=function(quat,dest){if(!dest){dest=mat3.create()}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;dest[0]=1-(yy+zz);dest[1]=xy+wz;dest[2]=xz-wy;dest[3]=xy-wz;dest[4]=1-(xx+zz);dest[5]=yz+wx;dest[6]=xz+wy;dest[7]=yz-wx;dest[8]=1-(xx+yy);return dest};quat4.toMat4=function(quat,dest){if(!dest){dest=mat4.create()}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;dest[0]=1-(yy+zz);dest[1]=xy+wz;dest[2]=xz-wy;dest[3]=0;dest[4]=xy-wz;dest[5]=1-(xx+zz);dest[6]=yz+wx;dest[7]=0;dest[8]=xz+wy;dest[9]=yz-wx;dest[10]=1-(xx+yy);dest[11]=0;dest[12]=0;dest[13]=0;dest[14]=0;dest[15]=1;return dest};quat4.slerp=function(quat,quat2,slerp,dest){if(!dest){dest=quat}var cosHalfTheta=quat[0]*quat2[0]+quat[1]*quat2[1]+quat[2]*quat2[2]+quat[3]*quat2[3],halfTheta,sinHalfTheta,ratioA,ratioB;if(Math.abs(cosHalfTheta)>=1){if(dest!==quat){dest[0]=quat[0];dest[1]=quat[1];dest[2]=quat[2];dest[3]=quat[3]}return dest}halfTheta=Math.acos(cosHalfTheta);sinHalfTheta=Math.sqrt(1-cosHalfTheta*cosHalfTheta);if(Math.abs(sinHalfTheta)<.001){dest[0]=quat[0]*.5+quat2[0]*.5;dest[1]=quat[1]*.5+quat2[1]*.5;dest[2]=quat[2]*.5+quat2[2]*.5;dest[3]=quat[3]*.5+quat2[3]*.5;return dest}ratioA=Math.sin((1-slerp)*halfTheta)/sinHalfTheta;ratioB=Math.sin(slerp*halfTheta)/sinHalfTheta;dest[0]=quat[0]*ratioA+quat2[0]*ratioB;dest[1]=quat[1]*ratioA+quat2[1]*ratioB;dest[2]=quat[2]*ratioA+quat2[2]*ratioB;dest[3]=quat[3]*ratioA+quat2[3]*ratioB;return dest};quat4.str=function(quat){return"["+quat[0]+", "+quat[1]+", "+quat[2]+", "+quat[3]+"]"};return{vec3,mat3,mat4,quat4}})();var _emscripten_glBegin=mode=>{GLImmediate.enabledClientAttributes_preBegin=GLImmediate.enabledClientAttributes;GLImmediate.enabledClientAttributes=[];GLImmediate.clientAttributes_preBegin=GLImmediate.clientAttributes;GLImmediate.clientAttributes=[];for(var i=0;i{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindProgram=(type,id)=>{assert(id==0)};var _emscripten_glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glEnableClientState=cap=>{var attrib=GLEmulation.getAttributeFromCapability(cap);if(attrib===null){err(`WARNING: unhandled clientstate: ${cap}`);return}if(!GLImmediate.enabledClientAttributes[attrib]){GLImmediate.enabledClientAttributes[attrib]=true;GLImmediate.totalEnabledClientAttributes++;GLImmediate.currentRenderer=null;if(GLEmulation.currentVao)GLEmulation.currentVao.enabledClientStates[cap]=1;GLImmediate.modifiedClientAttributes=true}};var _glEnableClientState=_emscripten_glEnableClientState;var emulGlBindVertexArray=vao=>{GLEmulation.currentVao=null;GLImmediate.lastRenderer?.cleanup();_glBindBuffer(GLctx.ARRAY_BUFFER,0);_glBindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,0);for(var vaa in GLEmulation.enabledVertexAttribArrays){GLctx.disableVertexAttribArray(vaa)}GLEmulation.enabledVertexAttribArrays={};GLImmediate.enabledClientAttributes=[0,0];GLImmediate.totalEnabledClientAttributes=0;GLImmediate.modifiedClientAttributes=true;if(vao){var info=GLEmulation.vaos[vao];_glBindBuffer(GLctx.ARRAY_BUFFER,info.arrayBuffer);_glBindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,info.elementArrayBuffer);for(var vaa in info.enabledVertexAttribArrays){_glEnableVertexAttribArray(vaa)}for(var vaa in info.vertexAttribPointers){_glVertexAttribPointer(...info.vertexAttribPointers[vaa])}for(var attrib in info.enabledClientStates){_glEnableClientState(attrib|0)}GLEmulation.currentVao=info}};var _emscripten_glBindVertexArray=vao=>{emulGlBindVertexArray(vao);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0};var _glBindVertexArray=_emscripten_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBufferData=(target,size,data,usage)=>{switch(usage){case 35041:case 35042:usage=35040;break;case 35045:case 35046:usage=35044;break;case 35049:case 35050:usage=35048;break}if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glClear=x0=>GLctx.clear(x0);var _emscripten_glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClientActiveTexture=texture=>{GLImmediate.clientActiveTexture=texture-33984};var _emscripten_glClientWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClipControlEXT=(origin,depth)=>{GLctx.extClipControl["clipControlEXT"](origin,depth)};var _emscripten_glClipPlane=(pname,param)=>{if(pname>=12288&&pname<12294){var clipPlaneId=pname-12288;GLEmulation.clipPlaneEquation[clipPlaneId][0]=HEAPF64[param>>3];GLEmulation.clipPlaneEquation[clipPlaneId][1]=HEAPF64[param+8>>3];GLEmulation.clipPlaneEquation[clipPlaneId][2]=HEAPF64[param+16>>3];GLEmulation.clipPlaneEquation[clipPlaneId][3]=HEAPF64[param+24>>3];var tmpMV=GLImmediate.matrixLib.mat4.create(GLImmediate.matrix[0]);GLImmediate.matrixLib.mat4.inverse(tmpMV);GLImmediate.matrixLib.mat4.transpose(tmpMV);GLImmediate.matrixLib.mat4.multiplyVec4(tmpMV,GLEmulation.clipPlaneEquation[clipPlaneId])}};var _emscripten_glColor4f=(r,g,b,a)=>{r=Math.max(Math.min(r,1),0);g=Math.max(Math.min(g,1),0);b=Math.max(Math.min(b,1),0);a=Math.max(Math.min(a,1),0);if(GLImmediate.mode>=0){var start=GLImmediate.vertexCounter<<2;GLImmediate.vertexDataU8[start+0]=r*255;GLImmediate.vertexDataU8[start+1]=g*255;GLImmediate.vertexDataU8[start+2]=b*255;GLImmediate.vertexDataU8[start+3]=a*255;GLImmediate.vertexCounter++;GLImmediate.addRendererComponent(GLImmediate.COLOR,4,GLctx.UNSIGNED_BYTE)}else{GLImmediate.clientColor[0]=r;GLImmediate.clientColor[1]=g;GLImmediate.clientColor[2]=b;GLImmediate.clientColor[3]=a}};var _glColor4f=_emscripten_glColor4f;var _emscripten_glColor3f=(r,g,b)=>_glColor4f(r,g,b,1);var _glColor3f=_emscripten_glColor3f;var _emscripten_glColor3d=_glColor3f;var _emscripten_glColor3fv=p=>_glColor3f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2]);var _emscripten_glColor4ub=(r,g,b,a)=>_glColor4f((r&255)/255,(g&255)/255,(b&255)/255,(a&255)/255);var _glColor4ub=_emscripten_glColor4ub;var _emscripten_glColor3ub=(r,g,b)=>_glColor4ub(r,g,b,255);var _glColor3ub=_emscripten_glColor3ub;var _emscripten_glColor3ubv=p=>_glColor3ub(HEAP8[p],HEAP8[p+1],HEAP8[p+2]);var _emscripten_glColor4ui=(r,g,b,a)=>_glColor4f((r>>>0)/4294967295,(g>>>0)/4294967295,(b>>>0)/4294967295,(a>>>0)/4294967295);var _glColor4ui=_emscripten_glColor4ui;var _emscripten_glColor3ui=(r,g,b)=>_glColor4ui(r,g,b,4294967295);var _glColor3ui=_emscripten_glColor3ui;var _emscripten_glColor3uiv=p=>_glColor3ui(HEAP32[p>>2],HEAP32[p+4>>2],HEAP32[p+8>>2]);var _emscripten_glColor4us=(r,g,b,a)=>_glColor4f((r&65535)/65535,(g&65535)/65535,(b&65535)/65535,(a&65535)/65535);var _glColor4us=_emscripten_glColor4us;var _emscripten_glColor3us=(r,g,b)=>_glColor4us(r,g,b,65535);var _glColor3us=_emscripten_glColor3us;var _emscripten_glColor3usv=p=>_glColor3us(HEAP16[p>>1],HEAP16[p+2>>1],HEAP16[p+4>>1]);var _emscripten_glColor4d=_glColor4f;var _emscripten_glColor4fv=p=>_glColor4f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2],HEAPF32[p+12>>2]);var _emscripten_glColor4ubv=p=>_glColor4ub(HEAP8[p],HEAP8[p+1],HEAP8[p+2],HEAP8[p+3]);var _emscripten_glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorPointer=(size,type,stride,pointer)=>{GLImmediate.setClientAttribute(GLImmediate.COLOR,size,type,stride,pointer)};var _emscripten_glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_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};var _emscripten_glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _glDeleteShader=_emscripten_glDeleteShader;var _emscripten_glDeleteObject=id=>{if(GL.programs[id]){_glDeleteProgram(id)}else if(GL.shaders[id]){_glDeleteShader(id)}else{err(`WARNING: deleteObject received invalid id: ${id}`)}};var _emscripten_glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var emulGlDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLEmulation.vaos[id]=null;if(GLEmulation.currentVao?.id==id)GLEmulation.currentVao=null}};var _emscripten_glDeleteVertexArrays=(n,vaos)=>{emulGlDeleteVertexArrays(n,vaos)};var _glDeleteVertexArrays=_emscripten_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDisableClientState=cap=>{var attrib=GLEmulation.getAttributeFromCapability(cap);if(attrib===null){err(`WARNING: unhandled clientstate: ${cap}`);return}if(GLImmediate.enabledClientAttributes[attrib]){GLImmediate.enabledClientAttributes[attrib]=false;GLImmediate.totalEnabledClientAttributes--;GLImmediate.currentRenderer=null;if(GLEmulation.currentVao)delete GLEmulation.currentVao.enabledClientStates[cap];GLImmediate.modifiedClientAttributes=true}};var _emscripten_glDrawArrays=(mode,first,count)=>{if(GLImmediate.totalEnabledClientAttributes==0&&mode<=6){GLctx.drawArrays(mode,first,count);return}GLImmediate.prepareClientAttributes(count,false);GLImmediate.mode=mode;if(!GLctx.currentArrayBufferBinding){GLImmediate.vertexData=HEAPF32.subarray(GLImmediate.vertexPointer>>2,GLImmediate.vertexPointer+(first+count)*GLImmediate.stride>>2);GLImmediate.firstVertex=first;GLImmediate.lastVertex=first+count}GLImmediate.flush(null,first);GLImmediate.mode=-1};var _emscripten_glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _glDrawArraysInstanced=_emscripten_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawBuffer=()=>{abort("glDrawBuffer: TODO")};var tempFixedLengthArray=[];var _emscripten_glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _glDrawBuffers=_emscripten_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawElements=(mode,count,type,indices,start,end)=>{if(GLImmediate.totalEnabledClientAttributes==0&&mode<=6&&GLctx.currentElementArrayBufferBinding){GLctx.drawElements(mode,count,type,indices);return}if(!GLctx.currentElementArrayBufferBinding){assert(type==GLctx.UNSIGNED_SHORT)}warnOnce("DrawElements doesn't actually prepareClientAttributes properly.");GLImmediate.prepareClientAttributes(count,false);GLImmediate.mode=mode;if(!GLctx.currentArrayBufferBinding){GLImmediate.firstVertex=end?start:HEAP8.length;GLImmediate.lastVertex=end?end+1:0;start=GLImmediate.vertexPointer;if(end){end=GLImmediate.vertexPointer+(end+1)*GLImmediate.stride;GLImmediate.vertexData=HEAPF32.subarray(start>>2,end>>2)}else{GLImmediate.vertexData=HEAPF32.subarray(start>>2)}}GLImmediate.flush(count,0,indices);GLImmediate.mode=-1};var _emscripten_glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _glDrawElementsInstanced=_emscripten_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstanced;var _glDrawElements=_emscripten_glDrawElements;var _emscripten_glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices,start,end)};var _emscripten_glEnd=()=>{GLImmediate.prepareClientAttributes(GLImmediate.rendererComponents[GLImmediate.VERTEX],true);GLImmediate.firstVertex=0;GLImmediate.lastVertex=GLImmediate.vertexCounter/(GLImmediate.stride>>2);GLImmediate.flush();GLImmediate.disableBeginEndClientAttributes();GLImmediate.mode=-1;GLImmediate.enabledClientAttributes=GLImmediate.enabledClientAttributes_preBegin;GLImmediate.clientAttributes=GLImmediate.clientAttributes_preBegin;GLImmediate.currentRenderer=null;GLImmediate.modifiedClientAttributes=true};var _emscripten_glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFinish=()=>GLctx.finish();var _emscripten_glFlush=()=>GLctx.flush();var _emscripten_glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrustum=(left,right,bottom,top_,nearVal,farVal)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],GLImmediate.matrixLib.mat4.frustum(left,right,bottom,top_,nearVal,farVal))};var _emscripten_glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;checkInt32(0);return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id;checkInt32(id)}};var _emscripten_glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var emulGlGenVertexArrays=(n,vaos)=>{for(var i=0;i>2]=id;checkInt32(id)}};var _emscripten_glGenVertexArrays=(n,arrays)=>{emulGlGenVertexArrays(n,arrays)};var _glGenVertexArrays=_emscripten_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull);if(size)HEAP32[size>>2]=info.size;checkInt32(info.size);if(type)HEAP32[type>>2]=info.type;checkInt32(info.type)}};var _emscripten_glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull)}else{if(length)HEAP32[length>>2]=0;checkInt32(0)}};var _emscripten_glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;checkInt32(name.length+1);return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i];checkInt32(result[i])}}else{HEAP32[params>>2]=result;checkInt32(result)}};var _emscripten_glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i];checkInt32(result[i])}};var _emscripten_glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;checkInt32(len);for(var i=0;i>2]=id;checkInt32(id)}};var _emscripten_glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value);checkInt32(GLctx.getBufferParameter(target,value))};var _emscripten_glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result;checkInt32(result)};var _emscripten_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;checkInt32(numBytesWrittenExclNull)};var _glGetProgramInfoLog=_emscripten_glGetProgramInfoLog;var _emscripten_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;checkInt32(numBytesWrittenExclNull)};var _glGetShaderInfoLog=_emscripten_glGetShaderInfoLog;var _emscripten_glGetInfoLog=(id,maxLength,length,infoLog)=>{if(GL.programs[id]){_glGetProgramInfoLog(id,maxLength,length,infoLog)}else if(GL.shaders[id]){_glGetShaderInfoLog(id,maxLength,length,infoLog)}else{err(`WARNING: glGetInfoLog received invalid id: ${id}`)}};var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;checkInt32(ret);break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;checkInt8(ret?1:0);break;default:abort("internal emscriptenWebGLGetIndexed() error, bad type: "+type)}};var _emscripten_glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i];checkInt32(ret[i])}};var _emscripten_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;checkInt32(log.length+1)}else if(pname==35719){if(!program.maxUniformLength){var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(var i=0;i>2]=program.maxUniformLength;checkInt32(program.maxUniformLength)}else if(pname==35722){if(!program.maxAttributeLength){var numActiveAttributes=GLctx.getProgramParameter(program,35721);for(var i=0;i>2]=program.maxAttributeLength;checkInt32(program.maxAttributeLength)}else if(pname==35381){if(!program.maxUniformBlockNameLength){var numActiveUniformBlocks=GLctx.getProgramParameter(program,35382);for(var i=0;i>2]=program.maxUniformBlockNameLength;checkInt32(program.maxUniformBlockNameLength)}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname);checkInt32(GLctx.getProgramParameter(program,pname))}};var _glGetProgramiv=_emscripten_glGetProgramiv;var _emscripten_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;checkInt32(logLength)}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength;checkInt32(sourceLength)}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname);checkInt32(GLctx.getShaderParameter(GL.shaders[shader],pname))}};var _glGetShaderiv=_emscripten_glGetShaderiv;var _emscripten_glGetObjectParameteriv=(id,type,result)=>{if(GL.programs[id]){if(type==35716){var log=GLctx.getProgramInfoLog(GL.programs[id]);if(log===null)log="(unknown error)";HEAP32[result>>2]=log.length;checkInt32(log.length);return}_glGetProgramiv(id,type,result)}else if(GL.shaders[id]){if(type==35716){var log=GLctx.getShaderInfoLog(GL.shaders[id]);if(log===null)log="(unknown error)";HEAP32[result>>2]=log.length;checkInt32(log.length);return}else if(type==35720){var source=GLctx.getShaderSource(GL.shaders[id]);if(source===null)return;HEAP32[result>>2]=source.length;checkInt32(source.length);return}_glGetShaderiv(id,type,result)}else{err(`WARNING: getObjectParameteriv received invalid id: ${id}`)}};var _emscripten_glGetPointerv=(name,p)=>{var attribute;switch(name){case 32910:attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];break;case 32912:attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];break;case 32914:attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];break;default:GL.recordError(1280);return}HEAP32[p>>2]=attribute?attribute.pointer:0;checkInt32(attribute?attribute.pointer:0)};var _emscripten_glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret;checkInt32(ret)};var _glGetQueryObjecti64vEXT=_emscripten_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret;checkInt32(ret)};var _glGetQueryObjectivEXT=_emscripten_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname);checkInt32(GLctx.getQuery(target,pname))};var _emscripten_glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname);checkInt32(GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname))};var _emscripten_glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname);checkInt32(GLctx.getRenderbufferParameter(target,pname))};var _emscripten_glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname);checkInt32(GLctx.getSamplerParameter(GL.samplers[sampler],pname))};var _emscripten_glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;checkInt32(result.rangeMin);HEAP32[range+4>>2]=result.rangeMax;checkInt32(result.rangeMax);HEAP32[precision>>2]=result.precision;checkInt32(result.precision)};var _emscripten_glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull)};var _emscripten_glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;checkInt32(ret);if(length)HEAP32[length>>2]=1;checkInt32(1)}};var _emscripten_glGetTexEnvfv=(target,pname,param)=>abort("GL emulation not initialized!");var _emscripten_glGetTexEnviv=(target,pname,param)=>abort("GL emulation not initialized!");var _emscripten_glGetTexLevelParameteriv=(target,level,pname,params)=>abort("glGetTexLevelParameteriv: TODO");var _emscripten_glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname);checkInt32(GLctx.getTexParameter(target,pname))};var _emscripten_glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull)}else{if(length)HEAP32[length>>2]=0;checkInt32(0)}if(size)HEAP32[size>>2]=info.size;checkInt32(info.size);if(type)HEAP32[type>>2]=info.type;checkInt32(info.type)};var _emscripten_glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i];checkInt32(result[i])}};var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{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)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;checkInt32(data);break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];checkInt32(data[i]);break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _emscripten_glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"];checkInt32(data&&data["name"])}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;checkInt32(data);break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);checkInt32(Math.fround(data));break}}else{for(var i=0;i>2]=data[i];checkInt32(data[i]);break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);checkInt32(Math.fround(data[i]));break}}}};var _emscripten_glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _glGetVertexAttribIiv=_emscripten_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname);checkInt32(GLctx.getVertexAttribOffset(index,pname))};var _emscripten_glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var emulGlIsVertexArray=array=>{var vao=GLEmulation.vaos[array];if(!vao)return 0;return 1};var _emscripten_glIsVertexArray=array=>emulGlIsVertexArray(array);var _glIsVertexArray=_emscripten_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glLightModelf=(pname,param)=>{if(pname==2898){GLEmulation.lightModelTwoSide=param!=0?true:false}else{abort("glLightModelf: TODO: "+pname)}};var _emscripten_glLightModelfv=(pname,param)=>{if(pname==2899){GLEmulation.lightModelAmbient[0]=HEAPF32[param>>2];GLEmulation.lightModelAmbient[1]=HEAPF32[param+4>>2];GLEmulation.lightModelAmbient[2]=HEAPF32[param+8>>2];GLEmulation.lightModelAmbient[3]=HEAPF32[param+12>>2]}else{abort("glLightModelfv: TODO: "+pname)}};var _emscripten_glLightfv=(light,pname,param)=>{if(light>=16384&&light<16392){var lightId=light-16384;if(pname==4608){GLEmulation.lightAmbient[lightId][0]=HEAPF32[param>>2];GLEmulation.lightAmbient[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightAmbient[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightAmbient[lightId][3]=HEAPF32[param+12>>2]}else if(pname==4609){GLEmulation.lightDiffuse[lightId][0]=HEAPF32[param>>2];GLEmulation.lightDiffuse[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightDiffuse[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightDiffuse[lightId][3]=HEAPF32[param+12>>2]}else if(pname==4610){GLEmulation.lightSpecular[lightId][0]=HEAPF32[param>>2];GLEmulation.lightSpecular[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightSpecular[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightSpecular[lightId][3]=HEAPF32[param+12>>2]}else if(pname==4611){GLEmulation.lightPosition[lightId][0]=HEAPF32[param>>2];GLEmulation.lightPosition[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightPosition[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightPosition[lightId][3]=HEAPF32[param+12>>2];GLImmediate.matrixLib.mat4.multiplyVec4(GLImmediate.matrix[0],GLEmulation.lightPosition[lightId])}else{abort("glLightfv: TODO: "+pname)}}};var _emscripten_glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLoadIdentity=()=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.identity(GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF64.subarray(matrix>>3,matrix+128>>3),GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF32.subarray(matrix>>2,matrix+64>>2),GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadTransposeMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF64.subarray(matrix>>3,matrix+128>>3),GLImmediate.matrix[GLImmediate.currentMatrix]);GLImmediate.matrixLib.mat4.transpose(GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadTransposeMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF32.subarray(matrix>>2,matrix+64>>2),GLImmediate.matrix[GLImmediate.currentMatrix]);GLImmediate.matrixLib.mat4.transpose(GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glMaterialfv=(face,pname,param)=>{if(face!=1028&&face!=1032){abort("glMaterialfv: TODO"+face)}if(pname==4608){GLEmulation.materialAmbient[0]=HEAPF32[param>>2];GLEmulation.materialAmbient[1]=HEAPF32[param+4>>2];GLEmulation.materialAmbient[2]=HEAPF32[param+8>>2];GLEmulation.materialAmbient[3]=HEAPF32[param+12>>2]}else if(pname==4609){GLEmulation.materialDiffuse[0]=HEAPF32[param>>2];GLEmulation.materialDiffuse[1]=HEAPF32[param+4>>2];GLEmulation.materialDiffuse[2]=HEAPF32[param+8>>2];GLEmulation.materialDiffuse[3]=HEAPF32[param+12>>2]}else if(pname==4610){GLEmulation.materialSpecular[0]=HEAPF32[param>>2];GLEmulation.materialSpecular[1]=HEAPF32[param+4>>2];GLEmulation.materialSpecular[2]=HEAPF32[param+8>>2];GLEmulation.materialSpecular[3]=HEAPF32[param+12>>2]}else if(pname==5633){GLEmulation.materialShininess[0]=HEAPF32[param>>2]}else{abort("glMaterialfv: TODO: "+pname)}};var _emscripten_glMatrixMode=mode=>{if(mode==5888){GLImmediate.currentMatrix=0}else if(mode==5889){GLImmediate.currentMatrix=1}else if(mode==5890){GLImmediate.useTextureMatrix=true;GLImmediate.currentMatrix=2+GLImmediate.TexEnvJIT.getActiveTexture()}else{throw`Wrong mode ${mode} passed to glMatrixMode`}};var _emscripten_glMultMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],HEAPF64.subarray(matrix>>3,matrix+128>>3))};var _emscripten_glMultMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],HEAPF32.subarray(matrix>>2,matrix+64>>2))};var _emscripten_glMultTransposeMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;var colMajor=GLImmediate.matrixLib.mat4.create();GLImmediate.matrixLib.mat4.set(HEAPF64.subarray(matrix>>3,matrix+128>>3),colMajor);GLImmediate.matrixLib.mat4.transpose(colMajor);GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],colMajor)};var _emscripten_glMultTransposeMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;var colMajor=GLImmediate.matrixLib.mat4.create();GLImmediate.matrixLib.mat4.set(HEAPF32.subarray(matrix>>2,matrix+64>>2),colMajor);GLImmediate.matrixLib.mat4.transpose(colMajor);GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],colMajor)};var _emscripten_glNormal3f=(x,y,z)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=z;assert(GLImmediate.vertexCounter<<2{GLImmediate.setClientAttribute(GLImmediate.NORMAL,3,type,stride,pointer)};var _emscripten_glOrtho=(left,right,bottom,top_,nearVal,farVal)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],GLImmediate.matrixLib.mat4.ortho(left,right,bottom,top_,nearVal,farVal))};var _emscripten_glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPolygonMode=()=>{};var _emscripten_glPolygonModeWEBGL=(face,mode)=>{GLctx.webglPolygonMode["polygonModeWEBGL"](face,mode)};var _emscripten_glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffsetClampEXT=(factor,units,clamp)=>{GLctx.extPolygonOffsetClamp["polygonOffsetClampEXT"](factor,units,clamp)};var _emscripten_glPopMatrix=()=>{if(GLImmediate.matrixStack[GLImmediate.currentMatrix].length==0){GL.recordError(1284);return}GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrix[GLImmediate.currentMatrix]=GLImmediate.matrixStack[GLImmediate.currentMatrix].pop()};var _emscripten_glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glPushMatrix=()=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixStack[GLImmediate.currentMatrix].push(Array.prototype.slice.call(GLImmediate.matrix[GLImmediate.currentMatrix]))};var _emscripten_glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glReadBuffer=x0=>GLctx.readBuffer(x0);var computeUnpackAlignedImageSize=(width,height,sizePerPixel)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _emscripten_glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReleaseShaderCompiler=()=>{};var _emscripten_glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glRotated=(angle,x,y,z)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.rotate(GLImmediate.matrix[GLImmediate.currentMatrix],angle*Math.PI/180,[x,y,z])};var _glRotated=_emscripten_glRotated;var _emscripten_glRotatef=_glRotated;var _emscripten_glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glScaled=(x,y,z)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.scale(GLImmediate.matrix[GLImmediate.currentMatrix],[x,y,z])};var _glScaled=_emscripten_glScaled;var _emscripten_glScalef=_glScaled;var _emscripten_glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glShadeModel=()=>warnOnce("TODO: glShadeModel");var _emscripten_glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glTexCoord2i=(u,v)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=u;GLImmediate.vertexData[GLImmediate.vertexCounter++]=v;GLImmediate.addRendererComponent(GLImmediate.TEXTURE0,2,GLctx.FLOAT)};var _glTexCoord2i=_emscripten_glTexCoord2i;var _emscripten_glTexCoord2f=_glTexCoord2i;var _emscripten_glTexCoord2fv=v=>_glTexCoord2i(HEAPF32[v>>2],HEAPF32[v+4>>2]);var _emscripten_glTexCoord3f=(target,level,internalformat,width,border,format,type,data)=>abort("glTexCoord3f: TODO");var _emscripten_glTexCoord4f=()=>{abort("glTexCoord4f: TODO")};var _emscripten_glTexCoordPointer=(size,type,stride,pointer)=>{GLImmediate.setClientAttribute(GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture,size,type,stride,pointer)};var _emscripten_glTexGenfv=(coord,pname,param)=>abort("glTexGenfv: TODO");var _emscripten_glTexGeni=(coord,pname,param)=>abort("glTexGeni: TODO");var _emscripten_glTexImage1D=(target,level,internalformat,width,border,format,type,data)=>abort("glTexImage1D: TODO");var _emscripten_glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _emscripten_glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTranslated=(x,y,z)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.translate(GLImmediate.matrix[GLImmediate.currentMatrix],[x,y,z])};var _glTranslated=_emscripten_glTranslated;var _emscripten_glTranslatef=_glTranslated;var _emscripten_glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var miniTempWebGLFloatBuffers=[];var _emscripten_glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var miniTempWebGLIntBuffers=[];var _emscripten_glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;count*=4;for(var i=0;i>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){count*=9;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;count*=16;for(var i=0;i>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glVertex2f=(x,y)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=0;GLImmediate.vertexData[GLImmediate.vertexCounter++]=1;assert(GLImmediate.vertexCounter<<2_glVertex2f(HEAPF32[p>>2],HEAPF32[p+4>>2]);var _emscripten_glVertex2i=_glVertex2f;var _emscripten_glVertex3f=(x,y,z)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=z;GLImmediate.vertexData[GLImmediate.vertexCounter++]=1;assert(GLImmediate.vertexCounter<<2_glVertex3f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2]);var _emscripten_glVertex3i=_glVertex3f;var _emscripten_glVertex4f=(x,y,z,w)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=z;GLImmediate.vertexData[GLImmediate.vertexCounter++]=w;assert(GLImmediate.vertexCounter<<2_glVertex4f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2],HEAPF32[p+12>>2]);var _emscripten_glVertex4i=_glVertex4f;var _emscripten_glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _glVertexAttribDivisor=_emscripten_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexPointer=(size,type,stride,pointer)=>{GLImmediate.setClientAttribute(GLImmediate.VERTEX,size,type,stride,pointer)};var _emscripten_glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_has_asyncify=()=>0;var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}if(!JSEvents.canPerformEventHandlerRequests()){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}if(!JSEvents.canPerformEventHandlerRequests()){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>{assert(alignment,"alignment argument is required");return Math.ceil(size/alignment)*alignment};var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){err(`growMemory: Attempted to grow heap from ${oldHeapSize} bytes to ${size} bytes, but got error: ${e}`)}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;assert(requestedSize>oldSize);var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){err(`Cannot enlarge memory, requested ${requestedSize} bytes, but the limit is ${maxHeapSize} bytes!`);return false}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,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var t0=_emscripten_get_now();var replacement=growMemory(newSize);var t1=_emscripten_get_now();dbg(`Heap resize call from ${oldSize} to ${newSize} took ${t1-t0} msecs. Success: ${!!replacement}`);if(replacement){return true}}err(`Failed to grow the heap from ${oldSize} bytes to ${newSize} bytes, not enough memory!`);return false};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){err(`navigator.getGamepads() exists, but failed to execute with exception ${e}. Disabling Gamepad access.`);navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=e=>{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,eventTypeId,userData,callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _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")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=256;JSEvents.focusEvent||=_malloc(eventSize);var focusEventHandlerFunc=e=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=getFullscreenElement();var isFullscreen=!!fullscreenElement;HEAP8[eventStruct]=isFullscreen;checkInt8(isFullscreen);HEAP8[eventStruct+1]=JSEvents.fullscreenEnabled();checkInt8(JSEvents.fullscreenEnabled());var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+2,128);stringToUTF8(id,eventStruct+130,128);HEAP32[eventStruct+260>>2]=reportedElement?reportedElement.clientWidth:0;checkInt32(reportedElement?reportedElement.clientWidth:0);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientHeight:0;checkInt32(reportedElement?reportedElement.clientHeight:0);HEAP32[eventStruct+268>>2]=screen.width;checkInt32(screen.width);HEAP32[eventStruct+272>>2]=screen.height;checkInt32(screen.height);if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=276;JSEvents.fullscreenChangeEvent||=_malloc(eventSize);var fullscreenChangeEventHandlerFunc=e=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:fullscreenChangeEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=1240;JSEvents.gamepadEvent||=_malloc(eventSize);var gamepadEventHandlerFunc=e=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=160;JSEvents.keyEvent||=_malloc(eventSize);var keyEventHandlerFunc=e=>{assert(e);var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP8[keyEventData+12]=e.ctrlKey;HEAP8[keyEventData+13]=e.shiftKey;HEAP8[keyEventData+14]=e.altKey;HEAP8[keyEventData+15]=e.metaKey;HEAP8[keyEventData+16]=e.repeat;HEAP32[idx+5]=e.charCode;HEAP32[idx+6]=e.keyCode;HEAP32[idx+7]=e.which;stringToUTF8(e.key||"",keyEventData+32,32);stringToUTF8(e.code||"",keyEventData+64,32);stringToUTF8(e.char||"",keyEventData+96,32);stringToUTF8(e.locale||"",keyEventData+128,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var iterFunc=getWasmTableEntry(func);setMainLoop(iterFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{assert(eventStruct%4==0);HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP8[eventStruct+24]=e.ctrlKey;HEAP8[eventStruct+25]=e.shiftKey;HEAP8[eventStruct+26]=e.altKey;HEAP8[eventStruct+27]=e.metaKey;HEAP16[idx*2+14]=e.button;HEAP16[idx*2+15]=e.buttons;HEAP32[idx+8]=e["movementX"];HEAP32[idx+9]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+10]=e.clientX-(rect.left|0);HEAP32[idx+11]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=64;JSEvents.mouseEvent||=_malloc(eventSize);target=findEventTarget(target);var mouseEventHandlerFunc=e=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP8[eventStruct]=isPointerlocked;checkInt8(isPointerlocked);var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+1,128);stringToUTF8(id,eventStruct+129,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=257;JSEvents.pointerlockChangeEvent||=_malloc(eventSize);var pointerlockChangeEventHandlerFunc=e=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document.body?.requestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=36;JSEvents.uiEvent||=_malloc(eventSize);target=findEventTarget(target);var uiEventHandlerFunc=e=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;checkInt32(0);HEAP32[uiEvent+4>>2]=b.clientWidth;checkInt32(b.clientWidth);HEAP32[uiEvent+8>>2]=b.clientHeight;checkInt32(b.clientHeight);HEAP32[uiEvent+12>>2]=innerWidth;checkInt32(innerWidth);HEAP32[uiEvent+16>>2]=innerHeight;checkInt32(innerHeight);HEAP32[uiEvent+20>>2]=outerWidth;checkInt32(outerWidth);HEAP32[uiEvent+24>>2]=outerHeight;checkInt32(outerHeight);HEAP32[uiEvent+28>>2]=pageXOffset|0;checkInt32(pageXOffset|0);HEAP32[uiEvent+32>>2]=pageYOffset|0;checkInt32(pageYOffset|0);if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=1552;JSEvents.touchEvent||=_malloc(eventSize);target=findEventTarget(target);var touchEventHandlerFunc=e=>{assert(e);var t,touches={},et=e.touches;for(let t of et){t.isChanged=t.onTarget=0;touches[t.identifier]=t}for(let t of e.changedTouches){t.isChanged=1;touches[t.identifier]=t}for(let t of e.targetTouches){touches[t.identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;HEAPF64[touchEvent>>3]=e.timeStamp;HEAP8[touchEvent+12]=e.ctrlKey;HEAP8[touchEvent+13]=e.shiftKey;HEAP8[touchEvent+14]=e.altKey;HEAP8[touchEvent+15]=e.metaKey;var idx=touchEvent+16;var targetRect=getBoundingClientRect(target);var numTouches=0;for(let t of Object.values(touches)){var idx32=idx>>2;HEAP32[idx32+0]=t.identifier;HEAP32[idx32+1]=t.screenX;HEAP32[idx32+2]=t.screenY;HEAP32[idx32+3]=t.clientX;HEAP32[idx32+4]=t.clientY;HEAP32[idx32+5]=t.pageX;HEAP32[idx32+6]=t.pageY;HEAP8[idx+28]=t.isChanged;HEAP8[idx+29]=t.onTarget;HEAP32[idx32+8]=t.clientX-(targetRect.left|0);HEAP32[idx32+9]=t.clientY-(targetRect.top|0);idx+=48;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;checkInt32(numTouches);if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP8[eventStruct]=document.hidden;checkInt8(document.hidden);HEAP32[eventStruct+4>>2]=visibilityState;checkInt32(visibilityState)};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=8;JSEvents.visibilityChangeEvent||=_malloc(eventSize);var visibilityChangeEventHandlerFunc=e=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=96;JSEvents.wheelEvent||=_malloc(eventSize);var wheelHandlerFunc=e=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+64>>3]=e["deltaX"];HEAPF64[wheelEvent+72>>3]=e["deltaY"];HEAPF64[wheelEvent+80>>3]=e["deltaZ"];HEAP32[wheelEvent+88>>2]=e["deltaMode"];checkInt32(e["deltaMode"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target,allowsDeferredCalls:true,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:wheelHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{abort("Please compile your program with async support in order to use asynchronous operations like emscripten_sleep")};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"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};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;checkInt32(strings.length);var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;checkInt32(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}}var 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;checkInt32(num);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);checkInt64(stream.position);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}}var 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(curr>2]=num;checkInt32(num);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _glAlphaFunc=_emscripten_glAlphaFunc;var _glBindTexture=_emscripten_glBindTexture;var _glBlendFunc=_emscripten_glBlendFunc;var _glBufferData=_emscripten_glBufferData;var _glClear=_emscripten_glClear;var _glClearColor=_emscripten_glClearColor;var _glColorMask=_emscripten_glColorMask;var _glColorPointer=_emscripten_glColorPointer;var _glCullFace=_emscripten_glCullFace;var _glDeleteBuffers=_emscripten_glDeleteBuffers;var _glDeleteTextures=_emscripten_glDeleteTextures;var _glDepthFunc=_emscripten_glDepthFunc;var _glDepthMask=_emscripten_glDepthMask;var _glDepthRangef=_emscripten_glDepthRangef;var _glDisableClientState=_emscripten_glDisableClientState;var _glDrawArrays=_emscripten_glDrawArrays;var _emscripten_glFogf=(pname,param)=>{switch(pname){case 2915:GLEmulation.fogStart=param;break;case 2916:GLEmulation.fogEnd=param;break;case 2914:GLEmulation.fogDensity=param;break;case 2917:switch(param){case 2049:case 9729:if(GLEmulation.fogMode!=param){GLImmediate.currentRenderer=null;GLEmulation.fogMode=param}break;default:if(GLEmulation.fogMode!=2048){GLImmediate.currentRenderer=null;GLEmulation.fogMode=2048}break}break}};var _glFogf=_emscripten_glFogf;var _emscripten_glFogfv=(pname,param)=>{switch(pname){case 2918:GLEmulation.fogColor[0]=HEAPF32[param>>2];GLEmulation.fogColor[1]=HEAPF32[param+4>>2];GLEmulation.fogColor[2]=HEAPF32[param+8>>2];GLEmulation.fogColor[3]=HEAPF32[param+12>>2];break;case 2915:case 2916:_glFogf(pname,HEAPF32[param>>2]);break}};var _glFogfv=_emscripten_glFogfv;var _emscripten_glFogi=(pname,param)=>_glFogf(pname,param);var _glFogi=_emscripten_glFogi;var _emscripten_glFogx=_glFogi;var _glFogx=_emscripten_glFogx;var _glGenBuffers=_emscripten_glGenBuffers;var _glGenTextures=_emscripten_glGenTextures;var _glLineWidth=_emscripten_glLineWidth;var _glLoadIdentity=_emscripten_glLoadIdentity;var _glMatrixMode=_emscripten_glMatrixMode;var _glMultMatrixf=_emscripten_glMultMatrixf;var _glNormal3f=_emscripten_glNormal3f;var _glOrtho=_emscripten_glOrtho;var _emscripten_glOrthof=_glOrtho;var _glOrthof=_emscripten_glOrthof;var _glPolygonOffset=_emscripten_glPolygonOffset;var _glPopMatrix=_emscripten_glPopMatrix;var _glPushMatrix=_emscripten_glPushMatrix;var _glRotatef=_emscripten_glRotatef;var _glScalef=_emscripten_glScalef;var _glScissor=_emscripten_glScissor;var _glShadeModel=_emscripten_glShadeModel;var _glTexCoordPointer=_emscripten_glTexCoordPointer;var _glTexImage2D=_emscripten_glTexImage2D;var _glTexParameteri=_emscripten_glTexParameteri;var _glTexSubImage2D=_emscripten_glTexSubImage2D;var _glTranslatef=_emscripten_glTranslatef;var _glVertexPointer=_emscripten_glVertexPointer;var _glViewport=_emscripten_glViewport;function _mcGetWorldResult(){var r=window._mcWorldResult;if(!r)return 0;window._mcWorldResult=null;window._mcWorldStatus=-1;var len=lengthBytesUTF8(r)+1;var buf=_malloc(len);stringToUTF8(r,buf,len);return buf}function _mcGetWorldStatus(){if(window._mcWorldStatus===undefined)return-1;return window._mcWorldStatus}function _mcShowCreateWorldDialog(){var overlay=document.createElement("div");overlay.id="mc-create-world";overlay.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;"+"background:rgba(0,0,0,0.8);display:flex;align-items:center;"+"justify-content:center;z-index:9999;font-family:monospace";var box=document.createElement("div");box.style.cssText="background:#3c3c3c;border:2px solid #888;padding:28px;"+"min-width:320px;color:#eee;text-align:center";box.innerHTML='

Create New World

'+'
'+'
'+''+"
"+'
'+'
'+'"+"
"+'
'+''+''+"
";overlay.appendChild(box);document.body.appendChild(overlay);setTimeout(function(){var input=document.getElementById("mc-worldname");if(input){input.focus();input.select()}},50);window._mcWorldStatus=-1;window._mcWorldResult=null;document.getElementById("mc-create-btn").onclick=function(){var nm=(document.getElementById("mc-worldname").value||"My World").trim();var mode=document.getElementById("mc-gamemode").value;window._mcWorldStatus=1;window._mcWorldResult=nm+"|"+mode;document.body.removeChild(overlay)};document.getElementById("mc-cancel-btn").onclick=function(){window._mcWorldStatus=0;window._mcWorldResult=null;document.body.removeChild(overlay)};document.getElementById("mc-worldname").onkeydown=function(e){if(e.key==="Enter")document.getElementById("mc-create-btn").click();if(e.key==="Escape")document.getElementById("mc-cancel-btn").click()}}function _mcSyncSaves(){if(typeof FS!=="undefined"){FS.syncfs(false,function(err){if(err)console.error("FS sync error:",err)})}}var dynCall=(sig,ptr,args=[],promising=false)=>{assert(ptr,`null function pointer in dynCall`);assert(!promising,"async dynCall is not supported in this mode");assert(getWasmTableEntry(ptr),`missing table entry in dynCall: ${ptr}`);var func=getWasmTableEntry(ptr);var rtn=func(...args);function convert(rtn){return rtn}return convert(rtn)};var getCFunc=ident=>{var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func};var writeArrayToMemory=(array,buffer)=>{assert(array.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)");HEAP8.set(array,buffer)};var 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;assert(returnType!=="array",'Return type should not be "array".');if(args){for(var i=0;i(...args)=>ccall(ident,returnType,argTypes,args,opts);var FS_createPath=(...args)=>FS.createPath(...args);var FS_unlink=(...args)=>FS.unlink(...args);var FS_createLazyFile=(...args)=>FS.createLazyFile(...args);var FS_createDevice=(...args)=>FS.createDevice(...args);var createContext=Browser.createContext;FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();Module["requestAnimationFrame"]=MainLoop.requestAnimationFrame;Module["pauseMainLoop"]=MainLoop.pause;Module["resumeMainLoop"]=MainLoop.resume;MainLoop.init();registerPreMainLoop(()=>GL.newRenderingFrameStarted());GLImmediate.setupFuncs();Browser.moduleContextCreatedCallbacks.push(()=>GLImmediate.init());GLEmulation.init();for(let i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<=288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<=288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i)}{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];checkIncomingModuleAPI();if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];assert(typeof Module["memoryInitializerPrefixURL"]=="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["pthreadMainPrefixURL"]=="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["cdInitializerPrefixURL"]=="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["filePackagePrefixURL"]=="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["read"]=="undefined","Module.read option was removed");assert(typeof Module["readAsync"]=="undefined","Module.readAsync option was removed (modify readAsync in JS)");assert(typeof Module["readBinary"]=="undefined","Module.readBinary option was removed (modify readBinary in JS)");assert(typeof Module["setWindowTitle"]=="undefined","Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)");assert(typeof Module["TOTAL_MEMORY"]=="undefined","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY");assert(typeof Module["ENVIRONMENT"]=="undefined","Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");assert(typeof Module["STACK_SIZE"]=="undefined","STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time");assert(typeof Module["wasmMemory"]=="undefined","Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally");assert(typeof Module["INITIAL_MEMORY"]=="undefined","Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically");if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}consumedModuleProp("preInit")}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["createContext"]=createContext;Module["FS_preloadFile"]=FS_preloadFile;Module["FS_unlink"]=FS_unlink;Module["FS_createPath"]=FS_createPath;Module["FS_createDevice"]=FS_createDevice;Module["FS"]=FS;Module["FS_createDataFile"]=FS_createDataFile;Module["FS_createLazyFile"]=FS_createLazyFile;var missingLibrarySymbols=["writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","convertI32PairToI53","convertI32PairToI53Checked","convertU32PairToI53","getTempRet0","setTempRet0","createNamedFunction","withStackSave","getDynCaller","runtimeKeepalivePush","runtimeKeepalivePop","asmjsMangle","HandleAllocator","addOnInit","addOnPostCtor","addOnPreMain","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","convertJsFunctionToWasm","getEmptyTableSlot","updateTableMap","getFunctionAddress","addFunction","removeFunction","intArrayToString","AsciiToString","stringToAscii","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","hideEverythingExceptGivenElement","restoreHiddenElements","softFullscreenResizeWebGLRenderTarget","registerPointerlockErrorEventCallback","fillBatteryEventData","registerBatteryEventCallback","jsStackTrace","getCallstack","convertPCtoSourceLocation","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","setImmediateWrapped","safeRequestAnimationFrame","clearImmediateWrapped","registerPostMainLoop","getPromise","makePromise","idsToPromises","makePromiseCallback","findMatchingCatch","Browser_asyncPrepareDataCounter","isLeapYear","ydayFromDate","arraySum","addDays","FS_mkdirTree","_setNetworkCallback","writeGLArray","registerWebGlEventCallback","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","allocateUTF8","allocateUTF8OnStack","demangle","stackTrace","getNativeTypeSize"];missingLibrarySymbols.forEach(missingLibrarySymbol);var unexportedSymbols=["run","out","err","callMain","abort","wasmExports","HEAPF32","HEAPF64","HEAP8","HEAPU8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAP64","HEAPU64","writeStackCookie","checkStackCookie","writeI53ToI64","readI53FromI64","readI53FromU64","INT53_MAX","INT53_MIN","bigintToI53Checked","stackSave","stackRestore","stackAlloc","ptrToString","zeroMemory","exitJS","getHeapMax","growMemory","ENV","setStackLimits","ERRNO_CODES","strError","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","DNS","Protocols","Sockets","timers","warnOnce","readEmAsmArgsArray","readEmAsmArgs","runEmAsmFunction","runMainThreadEmAsm","jstoi_q","getExecutableName","autoResumeAudioContext","dynCall","handleException","keepRuntimeAlive","callUserCallback","maybeExit","asyncLoad","alignMemory","mmapAlloc","wasmTable","wasmMemory","getUniqueRunDependency","noExitRuntime","addOnPreRun","addOnExit","addOnPostRun","freeTableIndexes","functionsInTableMap","setValue","getValue","PATH","PATH_FS","UTF8Decoder","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","intArrayFromString","UTF16Decoder","stringToNewUTF8","stringToUTF8OnStack","writeArrayToMemory","JSEvents","registerKeyEventCallback","specialHTMLTargets","maybeCStringToJsString","findEventTarget","findCanvasEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","setLetterbox","currentFullscreenStrategy","restoreOldWindowedStyle","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","setCanvasElementSize","getCanvasElementSize","UNWIND_CACHE","ExitStatus","getEnvStrings","checkWasiClock","doReadv","doWritev","initRandomFill","randomFill","safeSetTimeout","emSetImmediate","emClearImmediate_deps","emClearImmediate","registerPreMainLoop","promiseMap","uncaughtExceptionCount","exceptionLast","exceptionCaught","ExceptionInfo","Browser","requestFullscreen","requestFullScreen","setCanvasSize","getUserMedia","getPreloadedImageData__data","wget","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","SYSCALLS","getSocketFromFD","getSocketAddress","preloadPlugins","FS_createPreloadedFile","FS_modeStringToFlags","FS_getMode","FS_stdin_getChar_buffer","FS_stdin_getChar","FS_readFile","FS_root","FS_mounts","FS_devices","FS_streams","FS_nextInode","FS_nameTable","FS_currentPath","FS_initialized","FS_ignorePermissions","FS_filesystems","FS_syncFSRequests","FS_lookupPath","FS_getPath","FS_hashName","FS_hashAddNode","FS_hashRemoveNode","FS_lookupNode","FS_createNode","FS_destroyNode","FS_isRoot","FS_isMountpoint","FS_isFile","FS_isDir","FS_isLink","FS_isChrdev","FS_isBlkdev","FS_isFIFO","FS_isSocket","FS_flagsToPermissionString","FS_nodePermissions","FS_mayLookup","FS_mayCreate","FS_mayDelete","FS_mayOpen","FS_checkOpExists","FS_nextfd","FS_getStreamChecked","FS_getStream","FS_createStream","FS_closeStream","FS_dupStream","FS_doSetAttr","FS_chrdev_stream_ops","FS_major","FS_minor","FS_makedev","FS_registerDevice","FS_getDevice","FS_getMounts","FS_syncfs","FS_mount","FS_unmount","FS_lookup","FS_mknod","FS_statfs","FS_statfsStream","FS_statfsNode","FS_create","FS_mkdir","FS_mkdev","FS_symlink","FS_rename","FS_rmdir","FS_readdir","FS_readlink","FS_stat","FS_fstat","FS_lstat","FS_doChmod","FS_chmod","FS_lchmod","FS_fchmod","FS_doChown","FS_chown","FS_lchown","FS_fchown","FS_doTruncate","FS_truncate","FS_ftruncate","FS_utime","FS_open","FS_close","FS_isClosed","FS_llseek","FS_read","FS_write","FS_mmap","FS_msync","FS_ioctl","FS_writeFile","FS_cwd","FS_chdir","FS_createDefaultDirectories","FS_createDefaultDevices","FS_createSpecialDirectories","FS_createStandardStreams","FS_staticInit","FS_init","FS_quit","FS_findObject","FS_analyzePath","FS_createFile","FS_forceLoadFile","FS_absolutePath","FS_createFolder","FS_createLink","FS_joinPath","FS_mmapAlloc","FS_standardizePath","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","webgl_enable_EXT_polygon_offset_clamp","webgl_enable_EXT_clip_control","webgl_enable_WEBGL_polygon_mode","GL","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","AL","GLUT","EGL","GLEW","IDBStore","emscriptenWebGLGetIndexed","webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance","webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance","GLEmulation","GLImmediate","GLImmediateSetup","emulGlGenVertexArrays","emulGlDeleteVertexArrays","emulGlIsVertexArray","emulGlBindVertexArray","print","printErr","jstoi_s","IDBFS"];unexportedSymbols.forEach(unexportedRuntimeSymbol);function checkIncomingModuleAPI(){ignoredModuleProp("fetchSettings");ignoredModuleProp("logReadFiles");ignoredModuleProp("loadSplitModule")}var ASM_CONSTS={6463960:()=>window.innerWidth,6463990:()=>window.innerHeight,6464021:()=>window.devicePixelRatio||1,6464064:()=>{if(typeof FS!=="undefined"){FS.syncfs(false,function(err){if(err)console.error("FS.syncfs save error:",err)})}},6464194:()=>document.pointerLockElement!=null?1:0,6464252:()=>Math.round(window.innerWidth*(window.devicePixelRatio||1)),6464327:()=>Math.round(window.innerHeight*(window.devicePixelRatio||1)),6464403:()=>{FS.mkdir("/games",511);FS.mount(IDBFS,{},"/games");FS.syncfs(true,function(err){if(err)console.warn("FS.syncfs load error:",err);Module._idbfsReady()})},6464575:()=>{document.addEventListener("pointerlockchange",function(){})},6464643:()=>Math.round(window.innerWidth*(window.devicePixelRatio||1)),6464718:()=>Math.round(window.innerHeight*(window.devicePixelRatio||1)),6464794:()=>{if(document.exitPointerLock){document.exitPointerLock()}},6464856:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},6465003:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},6465237:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){if(typeof navigator.userActivation==="undefined"){autoResumeAudioContext(SDL2.audioContext)}}}return SDL2.audioContext===undefined?-1:0},6465789:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},6465857:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearInterval(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined;SDL2.capture.silenceBuffer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vp",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vp",$2,[$3])};SDL2.capture.silenceTimer=setInterval(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},6467550:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}if(SDL2.audio.silenceTimer!==undefined){clearInterval(SDL2.audio.silenceTimer);SDL2.audio.silenceTimer=undefined;SDL2.audio.silenceBuffer=undefined}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vp",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"]);if(SDL2.audioContext.state==="suspended"){SDL2.audio.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.audio.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){if(typeof navigator.userActivation!=="undefined"){if(navigator.userActivation.hasBeenActive){SDL2.audioContext.resume()}}SDL2.audio.currentOutputBuffer=SDL2.audio.silenceBuffer;dynCall("vp",$2,[$3]);SDL2.audio.currentOutputBuffer=undefined};SDL2.audio.silenceTimer=setInterval(silence_callback,$1/SDL2.audioContext.sampleRate*1e3)}},6468725:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var buf=$0>>>2;var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearInterval(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Browser.createContext(Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels/4;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels/4;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},6473279:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},6473362:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},6473431:()=>window.innerWidth,6473461:()=>window.innerHeight};var _free=Module["_free"]=makeInvalidEarlyAccess("_free");var _emscripten_is_pointer_locked=Module["_emscripten_is_pointer_locked"]=makeInvalidEarlyAccess("_emscripten_is_pointer_locked");var _syncSaves=Module["_syncSaves"]=makeInvalidEarlyAccess("_syncSaves");var _main=Module["_main"]=makeInvalidEarlyAccess("_main");var _idbfsReady=Module["_idbfsReady"]=makeInvalidEarlyAccess("_idbfsReady");var _htons=makeInvalidEarlyAccess("_htons");var _ntohs=makeInvalidEarlyAccess("_ntohs");var _fflush=makeInvalidEarlyAccess("_fflush");var _malloc=Module["_malloc"]=makeInvalidEarlyAccess("_malloc");var _strerror=makeInvalidEarlyAccess("_strerror");var _emscripten_stack_get_end=makeInvalidEarlyAccess("_emscripten_stack_get_end");var _emscripten_stack_get_base=makeInvalidEarlyAccess("_emscripten_stack_get_base");var _setThrew=makeInvalidEarlyAccess("_setThrew");var _emscripten_stack_init=makeInvalidEarlyAccess("_emscripten_stack_init");var _emscripten_stack_get_free=makeInvalidEarlyAccess("_emscripten_stack_get_free");var __emscripten_stack_restore=makeInvalidEarlyAccess("__emscripten_stack_restore");var __emscripten_stack_alloc=makeInvalidEarlyAccess("__emscripten_stack_alloc");var _emscripten_stack_get_current=makeInvalidEarlyAccess("_emscripten_stack_get_current");var ___set_stack_limits=Module["___set_stack_limits"]=makeInvalidEarlyAccess("___set_stack_limits");var memory=makeInvalidEarlyAccess("memory");var __indirect_function_table=makeInvalidEarlyAccess("__indirect_function_table");var wasmMemory=makeInvalidEarlyAccess("wasmMemory");var wasmTable=makeInvalidEarlyAccess("wasmTable");function assignWasmExports(wasmExports){assert(typeof wasmExports["free"]!="undefined","missing Wasm export: free");assert(typeof wasmExports["emscripten_is_pointer_locked"]!="undefined","missing Wasm export: emscripten_is_pointer_locked");assert(typeof wasmExports["syncSaves"]!="undefined","missing Wasm export: syncSaves");assert(typeof wasmExports["__main_argc_argv"]!="undefined","missing Wasm export: __main_argc_argv");assert(typeof wasmExports["idbfsReady"]!="undefined","missing Wasm export: idbfsReady");assert(typeof wasmExports["htons"]!="undefined","missing Wasm export: htons");assert(typeof wasmExports["ntohs"]!="undefined","missing Wasm export: ntohs");assert(typeof wasmExports["fflush"]!="undefined","missing Wasm export: fflush");assert(typeof wasmExports["malloc"]!="undefined","missing Wasm export: malloc");assert(typeof wasmExports["strerror"]!="undefined","missing Wasm export: strerror");assert(typeof wasmExports["emscripten_stack_get_end"]!="undefined","missing Wasm export: emscripten_stack_get_end");assert(typeof wasmExports["emscripten_stack_get_base"]!="undefined","missing Wasm export: emscripten_stack_get_base");assert(typeof wasmExports["setThrew"]!="undefined","missing Wasm export: setThrew");assert(typeof wasmExports["emscripten_stack_init"]!="undefined","missing Wasm export: emscripten_stack_init");assert(typeof wasmExports["emscripten_stack_get_free"]!="undefined","missing Wasm export: emscripten_stack_get_free");assert(typeof wasmExports["_emscripten_stack_restore"]!="undefined","missing Wasm export: _emscripten_stack_restore");assert(typeof wasmExports["_emscripten_stack_alloc"]!="undefined","missing Wasm export: _emscripten_stack_alloc");assert(typeof wasmExports["emscripten_stack_get_current"]!="undefined","missing Wasm export: emscripten_stack_get_current");assert(typeof wasmExports["__set_stack_limits"]!="undefined","missing Wasm export: __set_stack_limits");assert(typeof wasmExports["memory"]!="undefined","missing Wasm export: memory");assert(typeof wasmExports["__indirect_function_table"]!="undefined","missing Wasm export: __indirect_function_table");_free=Module["_free"]=createExportWrapper("free",1);_emscripten_is_pointer_locked=Module["_emscripten_is_pointer_locked"]=createExportWrapper("emscripten_is_pointer_locked",0);_syncSaves=Module["_syncSaves"]=createExportWrapper("syncSaves",0);_main=Module["_main"]=createExportWrapper("__main_argc_argv",2);_idbfsReady=Module["_idbfsReady"]=createExportWrapper("idbfsReady",0);_htons=createExportWrapper("htons",1);_ntohs=createExportWrapper("ntohs",1);_fflush=createExportWrapper("fflush",1);_malloc=Module["_malloc"]=createExportWrapper("malloc",1);_strerror=createExportWrapper("strerror",1);_emscripten_stack_get_end=wasmExports["emscripten_stack_get_end"];_emscripten_stack_get_base=wasmExports["emscripten_stack_get_base"];_setThrew=createExportWrapper("setThrew",2);_emscripten_stack_init=wasmExports["emscripten_stack_init"];_emscripten_stack_get_free=wasmExports["emscripten_stack_get_free"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];___set_stack_limits=Module["___set_stack_limits"]=createExportWrapper("__set_stack_limits",2);memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__assert_fail:___assert_fail,__cxa_throw:___cxa_throw,__handle_stack_overflow:___handle_stack_overflow,__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_faccessat:___syscall_faccessat,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getdents64:___syscall_getdents64,__syscall_getsockname:___syscall_getsockname,__syscall_getsockopt:___syscall_getsockopt,__syscall_ioctl:___syscall_ioctl,__syscall_lstat64:___syscall_lstat64,__syscall_mkdirat:___syscall_mkdirat,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_recvfrom:___syscall_recvfrom,__syscall_renameat:___syscall_renameat,__syscall_rmdir:___syscall_rmdir,__syscall_sendto:___syscall_sendto,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_abort_js:__abort_js,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,_tzset_js:__tzset_js,alBufferData:_alBufferData,alDeleteBuffers:_alDeleteBuffers,alDeleteSources:_alDeleteSources,alDistanceModel:_alDistanceModel,alGenBuffers:_alGenBuffers,alGenSources:_alGenSources,alGetError:_alGetError,alGetSourcei:_alGetSourcei,alListenerfv:_alListenerfv,alSource3f:_alSource3f,alSourcePlay:_alSourcePlay,alSourcef:_alSourcef,alSourcei:_alSourcei,alcCloseDevice:_alcCloseDevice,alcCreateContext:_alcCreateContext,alcDestroyContext:_alcDestroyContext,alcMakeContextCurrent:_alcMakeContextCurrent,alcOpenDevice:_alcOpenDevice,clock_time_get:_clock_time_get,eglBindAPI:_eglBindAPI,eglChooseConfig:_eglChooseConfig,eglCreateContext:_eglCreateContext,eglCreateWindowSurface:_eglCreateWindowSurface,eglDestroyContext:_eglDestroyContext,eglDestroySurface:_eglDestroySurface,eglGetConfigAttrib:_eglGetConfigAttrib,eglGetDisplay:_eglGetDisplay,eglGetError:_eglGetError,eglInitialize:_eglInitialize,eglMakeCurrent:_eglMakeCurrent,eglQueryString:_eglQueryString,eglSwapBuffers:_eglSwapBuffers,eglSwapInterval:_eglSwapInterval,eglTerminate:_eglTerminate,eglWaitGL:_eglWaitGL,eglWaitNative:_eglWaitNative,emscripten_asm_const_double:_emscripten_asm_const_double,emscripten_asm_const_int:_emscripten_asm_const_int,emscripten_asm_const_int_sync_on_main_thread:_emscripten_asm_const_int_sync_on_main_thread,emscripten_asm_const_ptr_sync_on_main_thread:_emscripten_asm_const_ptr_sync_on_main_thread,emscripten_cancel_main_loop:_emscripten_cancel_main_loop,emscripten_date_now:_emscripten_date_now,emscripten_err:_emscripten_err,emscripten_exit_fullscreen:_emscripten_exit_fullscreen,emscripten_exit_pointerlock:_emscripten_exit_pointerlock,emscripten_get_device_pixel_ratio:_emscripten_get_device_pixel_ratio,emscripten_get_element_css_size:_emscripten_get_element_css_size,emscripten_get_gamepad_status:_emscripten_get_gamepad_status,emscripten_get_now:_emscripten_get_now,emscripten_get_num_gamepads:_emscripten_get_num_gamepads,emscripten_get_screen_size:_emscripten_get_screen_size,emscripten_glActiveTexture:_emscripten_glActiveTexture,emscripten_glAlphaFunc:_emscripten_glAlphaFunc,emscripten_glAttachShader:_emscripten_glAttachShader,emscripten_glBegin:_emscripten_glBegin,emscripten_glBeginQuery:_emscripten_glBeginQuery,emscripten_glBeginQueryEXT:_emscripten_glBeginQueryEXT,emscripten_glBeginTransformFeedback:_emscripten_glBeginTransformFeedback,emscripten_glBindAttribLocation:_emscripten_glBindAttribLocation,emscripten_glBindBuffer:_emscripten_glBindBuffer,emscripten_glBindBufferBase:_emscripten_glBindBufferBase,emscripten_glBindBufferRange:_emscripten_glBindBufferRange,emscripten_glBindFramebuffer:_emscripten_glBindFramebuffer,emscripten_glBindProgram:_emscripten_glBindProgram,emscripten_glBindRenderbuffer:_emscripten_glBindRenderbuffer,emscripten_glBindSampler:_emscripten_glBindSampler,emscripten_glBindTexture:_emscripten_glBindTexture,emscripten_glBindTransformFeedback:_emscripten_glBindTransformFeedback,emscripten_glBindVertexArray:_emscripten_glBindVertexArray,emscripten_glBindVertexArrayOES:_emscripten_glBindVertexArrayOES,emscripten_glBlendColor:_emscripten_glBlendColor,emscripten_glBlendEquation:_emscripten_glBlendEquation,emscripten_glBlendEquationSeparate:_emscripten_glBlendEquationSeparate,emscripten_glBlendFunc:_emscripten_glBlendFunc,emscripten_glBlendFuncSeparate:_emscripten_glBlendFuncSeparate,emscripten_glBlitFramebuffer:_emscripten_glBlitFramebuffer,emscripten_glBufferData:_emscripten_glBufferData,emscripten_glBufferSubData:_emscripten_glBufferSubData,emscripten_glCheckFramebufferStatus:_emscripten_glCheckFramebufferStatus,emscripten_glClear:_emscripten_glClear,emscripten_glClearBufferfi:_emscripten_glClearBufferfi,emscripten_glClearBufferfv:_emscripten_glClearBufferfv,emscripten_glClearBufferiv:_emscripten_glClearBufferiv,emscripten_glClearBufferuiv:_emscripten_glClearBufferuiv,emscripten_glClearColor:_emscripten_glClearColor,emscripten_glClearDepthf:_emscripten_glClearDepthf,emscripten_glClearStencil:_emscripten_glClearStencil,emscripten_glClientActiveTexture:_emscripten_glClientActiveTexture,emscripten_glClientWaitSync:_emscripten_glClientWaitSync,emscripten_glClipControlEXT:_emscripten_glClipControlEXT,emscripten_glClipPlane:_emscripten_glClipPlane,emscripten_glColor3d:_emscripten_glColor3d,emscripten_glColor3f:_emscripten_glColor3f,emscripten_glColor3fv:_emscripten_glColor3fv,emscripten_glColor3ub:_emscripten_glColor3ub,emscripten_glColor3ubv:_emscripten_glColor3ubv,emscripten_glColor3ui:_emscripten_glColor3ui,emscripten_glColor3uiv:_emscripten_glColor3uiv,emscripten_glColor3us:_emscripten_glColor3us,emscripten_glColor3usv:_emscripten_glColor3usv,emscripten_glColor4d:_emscripten_glColor4d,emscripten_glColor4f:_emscripten_glColor4f,emscripten_glColor4fv:_emscripten_glColor4fv,emscripten_glColor4ub:_emscripten_glColor4ub,emscripten_glColor4ubv:_emscripten_glColor4ubv,emscripten_glColor4ui:_emscripten_glColor4ui,emscripten_glColor4us:_emscripten_glColor4us,emscripten_glColorMask:_emscripten_glColorMask,emscripten_glColorPointer:_emscripten_glColorPointer,emscripten_glCompileShader:_emscripten_glCompileShader,emscripten_glCompressedTexImage2D:_emscripten_glCompressedTexImage2D,emscripten_glCompressedTexImage3D:_emscripten_glCompressedTexImage3D,emscripten_glCompressedTexSubImage2D:_emscripten_glCompressedTexSubImage2D,emscripten_glCompressedTexSubImage3D:_emscripten_glCompressedTexSubImage3D,emscripten_glCopyBufferSubData:_emscripten_glCopyBufferSubData,emscripten_glCopyTexImage2D:_emscripten_glCopyTexImage2D,emscripten_glCopyTexSubImage2D:_emscripten_glCopyTexSubImage2D,emscripten_glCopyTexSubImage3D:_emscripten_glCopyTexSubImage3D,emscripten_glCreateProgram:_emscripten_glCreateProgram,emscripten_glCreateShader:_emscripten_glCreateShader,emscripten_glCullFace:_emscripten_glCullFace,emscripten_glDeleteBuffers:_emscripten_glDeleteBuffers,emscripten_glDeleteFramebuffers:_emscripten_glDeleteFramebuffers,emscripten_glDeleteObject:_emscripten_glDeleteObject,emscripten_glDeleteProgram:_emscripten_glDeleteProgram,emscripten_glDeleteQueries:_emscripten_glDeleteQueries,emscripten_glDeleteQueriesEXT:_emscripten_glDeleteQueriesEXT,emscripten_glDeleteRenderbuffers:_emscripten_glDeleteRenderbuffers,emscripten_glDeleteSamplers:_emscripten_glDeleteSamplers,emscripten_glDeleteShader:_emscripten_glDeleteShader,emscripten_glDeleteSync:_emscripten_glDeleteSync,emscripten_glDeleteTextures:_emscripten_glDeleteTextures,emscripten_glDeleteTransformFeedbacks:_emscripten_glDeleteTransformFeedbacks,emscripten_glDeleteVertexArrays:_emscripten_glDeleteVertexArrays,emscripten_glDeleteVertexArraysOES:_emscripten_glDeleteVertexArraysOES,emscripten_glDepthFunc:_emscripten_glDepthFunc,emscripten_glDepthMask:_emscripten_glDepthMask,emscripten_glDepthRangef:_emscripten_glDepthRangef,emscripten_glDetachShader:_emscripten_glDetachShader,emscripten_glDisable:_emscripten_glDisable,emscripten_glDisableClientState:_emscripten_glDisableClientState,emscripten_glDisableVertexAttribArray:_emscripten_glDisableVertexAttribArray,emscripten_glDrawArrays:_emscripten_glDrawArrays,emscripten_glDrawArraysInstanced:_emscripten_glDrawArraysInstanced,emscripten_glDrawArraysInstancedANGLE:_emscripten_glDrawArraysInstancedANGLE,emscripten_glDrawArraysInstancedARB:_emscripten_glDrawArraysInstancedARB,emscripten_glDrawArraysInstancedEXT:_emscripten_glDrawArraysInstancedEXT,emscripten_glDrawArraysInstancedNV:_emscripten_glDrawArraysInstancedNV,emscripten_glDrawBuffer:_emscripten_glDrawBuffer,emscripten_glDrawBuffers:_emscripten_glDrawBuffers,emscripten_glDrawBuffersEXT:_emscripten_glDrawBuffersEXT,emscripten_glDrawBuffersWEBGL:_emscripten_glDrawBuffersWEBGL,emscripten_glDrawElements:_emscripten_glDrawElements,emscripten_glDrawElementsInstanced:_emscripten_glDrawElementsInstanced,emscripten_glDrawElementsInstancedANGLE:_emscripten_glDrawElementsInstancedANGLE,emscripten_glDrawElementsInstancedARB:_emscripten_glDrawElementsInstancedARB,emscripten_glDrawElementsInstancedEXT:_emscripten_glDrawElementsInstancedEXT,emscripten_glDrawElementsInstancedNV:_emscripten_glDrawElementsInstancedNV,emscripten_glDrawRangeElements:_emscripten_glDrawRangeElements,emscripten_glEnable:_emscripten_glEnable,emscripten_glEnableClientState:_emscripten_glEnableClientState,emscripten_glEnableVertexAttribArray:_emscripten_glEnableVertexAttribArray,emscripten_glEnd:_emscripten_glEnd,emscripten_glEndQuery:_emscripten_glEndQuery,emscripten_glEndQueryEXT:_emscripten_glEndQueryEXT,emscripten_glEndTransformFeedback:_emscripten_glEndTransformFeedback,emscripten_glFenceSync:_emscripten_glFenceSync,emscripten_glFinish:_emscripten_glFinish,emscripten_glFlush:_emscripten_glFlush,emscripten_glFramebufferRenderbuffer:_emscripten_glFramebufferRenderbuffer,emscripten_glFramebufferTexture2D:_emscripten_glFramebufferTexture2D,emscripten_glFramebufferTextureLayer:_emscripten_glFramebufferTextureLayer,emscripten_glFrontFace:_emscripten_glFrontFace,emscripten_glFrustum:_emscripten_glFrustum,emscripten_glGenBuffers:_emscripten_glGenBuffers,emscripten_glGenFramebuffers:_emscripten_glGenFramebuffers,emscripten_glGenQueries:_emscripten_glGenQueries,emscripten_glGenQueriesEXT:_emscripten_glGenQueriesEXT,emscripten_glGenRenderbuffers:_emscripten_glGenRenderbuffers,emscripten_glGenSamplers:_emscripten_glGenSamplers,emscripten_glGenTextures:_emscripten_glGenTextures,emscripten_glGenTransformFeedbacks:_emscripten_glGenTransformFeedbacks,emscripten_glGenVertexArrays:_emscripten_glGenVertexArrays,emscripten_glGenVertexArraysOES:_emscripten_glGenVertexArraysOES,emscripten_glGenerateMipmap:_emscripten_glGenerateMipmap,emscripten_glGetActiveAttrib:_emscripten_glGetActiveAttrib,emscripten_glGetActiveUniform:_emscripten_glGetActiveUniform,emscripten_glGetActiveUniformBlockName:_emscripten_glGetActiveUniformBlockName,emscripten_glGetActiveUniformBlockiv:_emscripten_glGetActiveUniformBlockiv,emscripten_glGetActiveUniformsiv:_emscripten_glGetActiveUniformsiv,emscripten_glGetAttachedShaders:_emscripten_glGetAttachedShaders,emscripten_glGetAttribLocation:_emscripten_glGetAttribLocation,emscripten_glGetBooleanv:_emscripten_glGetBooleanv,emscripten_glGetBufferParameteri64v:_emscripten_glGetBufferParameteri64v,emscripten_glGetBufferParameteriv:_emscripten_glGetBufferParameteriv,emscripten_glGetError:_emscripten_glGetError,emscripten_glGetFloatv:_emscripten_glGetFloatv,emscripten_glGetFragDataLocation:_emscripten_glGetFragDataLocation,emscripten_glGetFramebufferAttachmentParameteriv:_emscripten_glGetFramebufferAttachmentParameteriv,emscripten_glGetInfoLog:_emscripten_glGetInfoLog,emscripten_glGetInteger64i_v:_emscripten_glGetInteger64i_v,emscripten_glGetInteger64v:_emscripten_glGetInteger64v,emscripten_glGetIntegeri_v:_emscripten_glGetIntegeri_v,emscripten_glGetIntegerv:_emscripten_glGetIntegerv,emscripten_glGetInternalformativ:_emscripten_glGetInternalformativ,emscripten_glGetObjectParameteriv:_emscripten_glGetObjectParameteriv,emscripten_glGetPointerv:_emscripten_glGetPointerv,emscripten_glGetProgramBinary:_emscripten_glGetProgramBinary,emscripten_glGetProgramInfoLog:_emscripten_glGetProgramInfoLog,emscripten_glGetProgramiv:_emscripten_glGetProgramiv,emscripten_glGetQueryObjecti64vEXT:_emscripten_glGetQueryObjecti64vEXT,emscripten_glGetQueryObjectivEXT:_emscripten_glGetQueryObjectivEXT,emscripten_glGetQueryObjectui64vEXT:_emscripten_glGetQueryObjectui64vEXT,emscripten_glGetQueryObjectuiv:_emscripten_glGetQueryObjectuiv,emscripten_glGetQueryObjectuivEXT:_emscripten_glGetQueryObjectuivEXT,emscripten_glGetQueryiv:_emscripten_glGetQueryiv,emscripten_glGetQueryivEXT:_emscripten_glGetQueryivEXT,emscripten_glGetRenderbufferParameteriv:_emscripten_glGetRenderbufferParameteriv,emscripten_glGetSamplerParameterfv:_emscripten_glGetSamplerParameterfv,emscripten_glGetSamplerParameteriv:_emscripten_glGetSamplerParameteriv,emscripten_glGetShaderInfoLog:_emscripten_glGetShaderInfoLog,emscripten_glGetShaderPrecisionFormat:_emscripten_glGetShaderPrecisionFormat,emscripten_glGetShaderSource:_emscripten_glGetShaderSource,emscripten_glGetShaderiv:_emscripten_glGetShaderiv,emscripten_glGetString:_emscripten_glGetString,emscripten_glGetStringi:_emscripten_glGetStringi,emscripten_glGetSynciv:_emscripten_glGetSynciv,emscripten_glGetTexEnvfv:_emscripten_glGetTexEnvfv,emscripten_glGetTexEnviv:_emscripten_glGetTexEnviv,emscripten_glGetTexLevelParameteriv:_emscripten_glGetTexLevelParameteriv,emscripten_glGetTexParameterfv:_emscripten_glGetTexParameterfv,emscripten_glGetTexParameteriv:_emscripten_glGetTexParameteriv,emscripten_glGetTransformFeedbackVarying:_emscripten_glGetTransformFeedbackVarying,emscripten_glGetUniformBlockIndex:_emscripten_glGetUniformBlockIndex,emscripten_glGetUniformIndices:_emscripten_glGetUniformIndices,emscripten_glGetUniformLocation:_emscripten_glGetUniformLocation,emscripten_glGetUniformfv:_emscripten_glGetUniformfv,emscripten_glGetUniformiv:_emscripten_glGetUniformiv,emscripten_glGetUniformuiv:_emscripten_glGetUniformuiv,emscripten_glGetVertexAttribIiv:_emscripten_glGetVertexAttribIiv,emscripten_glGetVertexAttribIuiv:_emscripten_glGetVertexAttribIuiv,emscripten_glGetVertexAttribPointerv:_emscripten_glGetVertexAttribPointerv,emscripten_glGetVertexAttribfv:_emscripten_glGetVertexAttribfv,emscripten_glGetVertexAttribiv:_emscripten_glGetVertexAttribiv,emscripten_glHint:_emscripten_glHint,emscripten_glInvalidateFramebuffer:_emscripten_glInvalidateFramebuffer,emscripten_glInvalidateSubFramebuffer:_emscripten_glInvalidateSubFramebuffer,emscripten_glIsBuffer:_emscripten_glIsBuffer,emscripten_glIsEnabled:_emscripten_glIsEnabled,emscripten_glIsFramebuffer:_emscripten_glIsFramebuffer,emscripten_glIsProgram:_emscripten_glIsProgram,emscripten_glIsQuery:_emscripten_glIsQuery,emscripten_glIsQueryEXT:_emscripten_glIsQueryEXT,emscripten_glIsRenderbuffer:_emscripten_glIsRenderbuffer,emscripten_glIsSampler:_emscripten_glIsSampler,emscripten_glIsShader:_emscripten_glIsShader,emscripten_glIsSync:_emscripten_glIsSync,emscripten_glIsTexture:_emscripten_glIsTexture,emscripten_glIsTransformFeedback:_emscripten_glIsTransformFeedback,emscripten_glIsVertexArray:_emscripten_glIsVertexArray,emscripten_glIsVertexArrayOES:_emscripten_glIsVertexArrayOES,emscripten_glLightModelf:_emscripten_glLightModelf,emscripten_glLightModelfv:_emscripten_glLightModelfv,emscripten_glLightfv:_emscripten_glLightfv,emscripten_glLineWidth:_emscripten_glLineWidth,emscripten_glLinkProgram:_emscripten_glLinkProgram,emscripten_glLoadIdentity:_emscripten_glLoadIdentity,emscripten_glLoadMatrixd:_emscripten_glLoadMatrixd,emscripten_glLoadMatrixf:_emscripten_glLoadMatrixf,emscripten_glLoadTransposeMatrixd:_emscripten_glLoadTransposeMatrixd,emscripten_glLoadTransposeMatrixf:_emscripten_glLoadTransposeMatrixf,emscripten_glMaterialfv:_emscripten_glMaterialfv,emscripten_glMatrixMode:_emscripten_glMatrixMode,emscripten_glMultMatrixd:_emscripten_glMultMatrixd,emscripten_glMultMatrixf:_emscripten_glMultMatrixf,emscripten_glMultTransposeMatrixd:_emscripten_glMultTransposeMatrixd,emscripten_glMultTransposeMatrixf:_emscripten_glMultTransposeMatrixf,emscripten_glNormal3f:_emscripten_glNormal3f,emscripten_glNormalPointer:_emscripten_glNormalPointer,emscripten_glOrtho:_emscripten_glOrtho,emscripten_glPauseTransformFeedback:_emscripten_glPauseTransformFeedback,emscripten_glPixelStorei:_emscripten_glPixelStorei,emscripten_glPolygonMode:_emscripten_glPolygonMode,emscripten_glPolygonModeWEBGL:_emscripten_glPolygonModeWEBGL,emscripten_glPolygonOffset:_emscripten_glPolygonOffset,emscripten_glPolygonOffsetClampEXT:_emscripten_glPolygonOffsetClampEXT,emscripten_glPopMatrix:_emscripten_glPopMatrix,emscripten_glProgramBinary:_emscripten_glProgramBinary,emscripten_glProgramParameteri:_emscripten_glProgramParameteri,emscripten_glPushMatrix:_emscripten_glPushMatrix,emscripten_glQueryCounterEXT:_emscripten_glQueryCounterEXT,emscripten_glReadBuffer:_emscripten_glReadBuffer,emscripten_glReadPixels:_emscripten_glReadPixels,emscripten_glReleaseShaderCompiler:_emscripten_glReleaseShaderCompiler,emscripten_glRenderbufferStorage:_emscripten_glRenderbufferStorage,emscripten_glRenderbufferStorageMultisample:_emscripten_glRenderbufferStorageMultisample,emscripten_glResumeTransformFeedback:_emscripten_glResumeTransformFeedback,emscripten_glRotated:_emscripten_glRotated,emscripten_glRotatef:_emscripten_glRotatef,emscripten_glSampleCoverage:_emscripten_glSampleCoverage,emscripten_glSamplerParameterf:_emscripten_glSamplerParameterf,emscripten_glSamplerParameterfv:_emscripten_glSamplerParameterfv,emscripten_glSamplerParameteri:_emscripten_glSamplerParameteri,emscripten_glSamplerParameteriv:_emscripten_glSamplerParameteriv,emscripten_glScaled:_emscripten_glScaled,emscripten_glScalef:_emscripten_glScalef,emscripten_glScissor:_emscripten_glScissor,emscripten_glShadeModel:_emscripten_glShadeModel,emscripten_glShaderBinary:_emscripten_glShaderBinary,emscripten_glShaderSource:_emscripten_glShaderSource,emscripten_glStencilFunc:_emscripten_glStencilFunc,emscripten_glStencilFuncSeparate:_emscripten_glStencilFuncSeparate,emscripten_glStencilMask:_emscripten_glStencilMask,emscripten_glStencilMaskSeparate:_emscripten_glStencilMaskSeparate,emscripten_glStencilOp:_emscripten_glStencilOp,emscripten_glStencilOpSeparate:_emscripten_glStencilOpSeparate,emscripten_glTexCoord2f:_emscripten_glTexCoord2f,emscripten_glTexCoord2fv:_emscripten_glTexCoord2fv,emscripten_glTexCoord2i:_emscripten_glTexCoord2i,emscripten_glTexCoord3f:_emscripten_glTexCoord3f,emscripten_glTexCoord4f:_emscripten_glTexCoord4f,emscripten_glTexCoordPointer:_emscripten_glTexCoordPointer,emscripten_glTexGenfv:_emscripten_glTexGenfv,emscripten_glTexGeni:_emscripten_glTexGeni,emscripten_glTexImage1D:_emscripten_glTexImage1D,emscripten_glTexImage2D:_emscripten_glTexImage2D,emscripten_glTexImage3D:_emscripten_glTexImage3D,emscripten_glTexParameterf:_emscripten_glTexParameterf,emscripten_glTexParameterfv:_emscripten_glTexParameterfv,emscripten_glTexParameteri:_emscripten_glTexParameteri,emscripten_glTexParameteriv:_emscripten_glTexParameteriv,emscripten_glTexStorage2D:_emscripten_glTexStorage2D,emscripten_glTexStorage3D:_emscripten_glTexStorage3D,emscripten_glTexSubImage2D:_emscripten_glTexSubImage2D,emscripten_glTexSubImage3D:_emscripten_glTexSubImage3D,emscripten_glTransformFeedbackVaryings:_emscripten_glTransformFeedbackVaryings,emscripten_glTranslated:_emscripten_glTranslated,emscripten_glTranslatef:_emscripten_glTranslatef,emscripten_glUniform1f:_emscripten_glUniform1f,emscripten_glUniform1fv:_emscripten_glUniform1fv,emscripten_glUniform1i:_emscripten_glUniform1i,emscripten_glUniform1iv:_emscripten_glUniform1iv,emscripten_glUniform1ui:_emscripten_glUniform1ui,emscripten_glUniform1uiv:_emscripten_glUniform1uiv,emscripten_glUniform2f:_emscripten_glUniform2f,emscripten_glUniform2fv:_emscripten_glUniform2fv,emscripten_glUniform2i:_emscripten_glUniform2i,emscripten_glUniform2iv:_emscripten_glUniform2iv,emscripten_glUniform2ui:_emscripten_glUniform2ui,emscripten_glUniform2uiv:_emscripten_glUniform2uiv,emscripten_glUniform3f:_emscripten_glUniform3f,emscripten_glUniform3fv:_emscripten_glUniform3fv,emscripten_glUniform3i:_emscripten_glUniform3i,emscripten_glUniform3iv:_emscripten_glUniform3iv,emscripten_glUniform3ui:_emscripten_glUniform3ui,emscripten_glUniform3uiv:_emscripten_glUniform3uiv,emscripten_glUniform4f:_emscripten_glUniform4f,emscripten_glUniform4fv:_emscripten_glUniform4fv,emscripten_glUniform4i:_emscripten_glUniform4i,emscripten_glUniform4iv:_emscripten_glUniform4iv,emscripten_glUniform4ui:_emscripten_glUniform4ui,emscripten_glUniform4uiv:_emscripten_glUniform4uiv,emscripten_glUniformBlockBinding:_emscripten_glUniformBlockBinding,emscripten_glUniformMatrix2fv:_emscripten_glUniformMatrix2fv,emscripten_glUniformMatrix2x3fv:_emscripten_glUniformMatrix2x3fv,emscripten_glUniformMatrix2x4fv:_emscripten_glUniformMatrix2x4fv,emscripten_glUniformMatrix3fv:_emscripten_glUniformMatrix3fv,emscripten_glUniformMatrix3x2fv:_emscripten_glUniformMatrix3x2fv,emscripten_glUniformMatrix3x4fv:_emscripten_glUniformMatrix3x4fv,emscripten_glUniformMatrix4fv:_emscripten_glUniformMatrix4fv,emscripten_glUniformMatrix4x2fv:_emscripten_glUniformMatrix4x2fv,emscripten_glUniformMatrix4x3fv:_emscripten_glUniformMatrix4x3fv,emscripten_glUseProgram:_emscripten_glUseProgram,emscripten_glValidateProgram:_emscripten_glValidateProgram,emscripten_glVertex2f:_emscripten_glVertex2f,emscripten_glVertex2fv:_emscripten_glVertex2fv,emscripten_glVertex2i:_emscripten_glVertex2i,emscripten_glVertex3f:_emscripten_glVertex3f,emscripten_glVertex3fv:_emscripten_glVertex3fv,emscripten_glVertex3i:_emscripten_glVertex3i,emscripten_glVertex4f:_emscripten_glVertex4f,emscripten_glVertex4fv:_emscripten_glVertex4fv,emscripten_glVertex4i:_emscripten_glVertex4i,emscripten_glVertexAttrib1f:_emscripten_glVertexAttrib1f,emscripten_glVertexAttrib1fv:_emscripten_glVertexAttrib1fv,emscripten_glVertexAttrib2f:_emscripten_glVertexAttrib2f,emscripten_glVertexAttrib2fv:_emscripten_glVertexAttrib2fv,emscripten_glVertexAttrib3f:_emscripten_glVertexAttrib3f,emscripten_glVertexAttrib3fv:_emscripten_glVertexAttrib3fv,emscripten_glVertexAttrib4f:_emscripten_glVertexAttrib4f,emscripten_glVertexAttrib4fv:_emscripten_glVertexAttrib4fv,emscripten_glVertexAttribDivisor:_emscripten_glVertexAttribDivisor,emscripten_glVertexAttribDivisorANGLE:_emscripten_glVertexAttribDivisorANGLE,emscripten_glVertexAttribDivisorARB:_emscripten_glVertexAttribDivisorARB,emscripten_glVertexAttribDivisorEXT:_emscripten_glVertexAttribDivisorEXT,emscripten_glVertexAttribDivisorNV:_emscripten_glVertexAttribDivisorNV,emscripten_glVertexAttribI4i:_emscripten_glVertexAttribI4i,emscripten_glVertexAttribI4iv:_emscripten_glVertexAttribI4iv,emscripten_glVertexAttribI4ui:_emscripten_glVertexAttribI4ui,emscripten_glVertexAttribI4uiv:_emscripten_glVertexAttribI4uiv,emscripten_glVertexAttribIPointer:_emscripten_glVertexAttribIPointer,emscripten_glVertexAttribPointer:_emscripten_glVertexAttribPointer,emscripten_glVertexPointer:_emscripten_glVertexPointer,emscripten_glViewport:_emscripten_glViewport,emscripten_glWaitSync:_emscripten_glWaitSync,emscripten_has_asyncify:_emscripten_has_asyncify,emscripten_request_fullscreen_strategy:_emscripten_request_fullscreen_strategy,emscripten_request_pointerlock:_emscripten_request_pointerlock,emscripten_resize_heap:_emscripten_resize_heap,emscripten_sample_gamepad_data:_emscripten_sample_gamepad_data,emscripten_set_beforeunload_callback_on_thread:_emscripten_set_beforeunload_callback_on_thread,emscripten_set_blur_callback_on_thread:_emscripten_set_blur_callback_on_thread,emscripten_set_canvas_element_size:_emscripten_set_canvas_element_size,emscripten_set_element_css_size:_emscripten_set_element_css_size,emscripten_set_focus_callback_on_thread:_emscripten_set_focus_callback_on_thread,emscripten_set_fullscreenchange_callback_on_thread:_emscripten_set_fullscreenchange_callback_on_thread,emscripten_set_gamepadconnected_callback_on_thread:_emscripten_set_gamepadconnected_callback_on_thread,emscripten_set_gamepaddisconnected_callback_on_thread:_emscripten_set_gamepaddisconnected_callback_on_thread,emscripten_set_keydown_callback_on_thread:_emscripten_set_keydown_callback_on_thread,emscripten_set_keypress_callback_on_thread:_emscripten_set_keypress_callback_on_thread,emscripten_set_keyup_callback_on_thread:_emscripten_set_keyup_callback_on_thread,emscripten_set_main_loop:_emscripten_set_main_loop,emscripten_set_mousedown_callback_on_thread:_emscripten_set_mousedown_callback_on_thread,emscripten_set_mouseenter_callback_on_thread:_emscripten_set_mouseenter_callback_on_thread,emscripten_set_mouseleave_callback_on_thread:_emscripten_set_mouseleave_callback_on_thread,emscripten_set_mousemove_callback_on_thread:_emscripten_set_mousemove_callback_on_thread,emscripten_set_mouseup_callback_on_thread:_emscripten_set_mouseup_callback_on_thread,emscripten_set_pointerlockchange_callback_on_thread:_emscripten_set_pointerlockchange_callback_on_thread,emscripten_set_resize_callback_on_thread:_emscripten_set_resize_callback_on_thread,emscripten_set_touchcancel_callback_on_thread:_emscripten_set_touchcancel_callback_on_thread,emscripten_set_touchend_callback_on_thread:_emscripten_set_touchend_callback_on_thread,emscripten_set_touchmove_callback_on_thread:_emscripten_set_touchmove_callback_on_thread,emscripten_set_touchstart_callback_on_thread:_emscripten_set_touchstart_callback_on_thread,emscripten_set_visibilitychange_callback_on_thread:_emscripten_set_visibilitychange_callback_on_thread,emscripten_set_wheel_callback_on_thread:_emscripten_set_wheel_callback_on_thread,emscripten_set_window_title:_emscripten_set_window_title,emscripten_sleep:_emscripten_sleep,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,glAlphaFunc:_glAlphaFunc,glBindBuffer:_glBindBuffer,glBindTexture:_glBindTexture,glBlendFunc:_glBlendFunc,glBufferData:_glBufferData,glClear:_glClear,glClearColor:_glClearColor,glColor4f:_glColor4f,glColorMask:_glColorMask,glColorPointer:_glColorPointer,glCullFace:_glCullFace,glDeleteBuffers:_glDeleteBuffers,glDeleteTextures:_glDeleteTextures,glDepthFunc:_glDepthFunc,glDepthMask:_glDepthMask,glDepthRangef:_glDepthRangef,glDisable:_glDisable,glDisableClientState:_glDisableClientState,glDrawArrays:_glDrawArrays,glEnable:_glEnable,glEnableClientState:_glEnableClientState,glFogf:_glFogf,glFogfv:_glFogfv,glFogx:_glFogx,glGenBuffers:_glGenBuffers,glGenTextures:_glGenTextures,glGetFloatv:_glGetFloatv,glHint:_glHint,glLineWidth:_glLineWidth,glLoadIdentity:_glLoadIdentity,glMatrixMode:_glMatrixMode,glMultMatrixf:_glMultMatrixf,glNormal3f:_glNormal3f,glOrthof:_glOrthof,glPolygonOffset:_glPolygonOffset,glPopMatrix:_glPopMatrix,glPushMatrix:_glPushMatrix,glRotatef:_glRotatef,glScalef:_glScalef,glScissor:_glScissor,glShadeModel:_glShadeModel,glTexCoordPointer:_glTexCoordPointer,glTexImage2D:_glTexImage2D,glTexParameteri:_glTexParameteri,glTexSubImage2D:_glTexSubImage2D,glTranslatef:_glTranslatef,glVertexPointer:_glVertexPointer,glViewport:_glViewport,invoke_iii,invoke_vii,invoke_viiii,mcGetWorldResult:_mcGetWorldResult,mcGetWorldStatus:_mcGetWorldStatus,mcShowCreateWorldDialog:_mcShowCreateWorldDialog,mcSyncSaves:_mcSyncSaves};function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}var calledRun;function callMain(args=[]){assert(runDependencies==0,'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])');assert(typeof onPreRuns==="undefined"||onPreRuns.length==0,"cannot call main when preRun functions remain to be called");var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;for(var arg of args){HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4}HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}stackCheckInit();preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){assert(!calledRun);calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();Module["onRuntimeInitialized"]?.();consumedModuleProp("onRuntimeInitialized");var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}checkStackCookie()}function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=x=>{has=true};try{_fflush(0);for(var name of["stdout","stderr"]){var info=FS.analyzePath("/dev/"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty?.output?.length){has=true}}}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.")}}var wasmExports;createWasm();run(); +(function(){function humanReadableVersionToPacked(str){str=str.split("-")[0];var vers=str.split(".").slice(0,3);while(vers.length<3)vers.push("00");vers=vers.map((n,i,arr)=>n.padStart(2,"0"));return vers.join("")}var packedVersionToHumanReadable=n=>[n/1e4|0,(n/100|0)%100,n%100].join(".");var TARGET_NOT_SUPPORTED=2147483647;var currentNodeVersion=typeof process!=="undefined"&&process.versions?.node?humanReadableVersionToPacked(process.versions.node):TARGET_NOT_SUPPORTED;if(currentNodeVersion<16e4){throw new Error(`This emscripten-generated code requires node v${packedVersionToHumanReadable(16e4)} (detected v${packedVersionToHumanReadable(currentNodeVersion)})`)}var userAgent=typeof navigator!=="undefined"&&navigator.userAgent;if(!userAgent){return}var currentSafariVersion=userAgent.includes("Safari/")&&!userAgent.includes("Chrome/")&&userAgent.match(/Version\/(\d+\.?\d*\.?\d*)/)?humanReadableVersionToPacked(userAgent.match(/Version\/(\d+\.?\d*\.?\d*)/)[1]):TARGET_NOT_SUPPORTED;if(currentSafariVersion<15e4){throw new Error(`This emscripten-generated code requires Safari v${packedVersionToHumanReadable(15e4)} (detected v${currentSafariVersion})`)}var currentFirefoxVersion=userAgent.match(/Firefox\/(\d+(?:\.\d+)?)/)?parseFloat(userAgent.match(/Firefox\/(\d+(?:\.\d+)?)/)[1]):TARGET_NOT_SUPPORTED;if(currentFirefoxVersion<79){throw new Error(`This emscripten-generated code requires Firefox v79 (detected v${currentFirefoxVersion})`)}var currentChromeVersion=userAgent.match(/Chrome\/(\d+(?:\.\d+)?)/)?parseFloat(userAgent.match(/Chrome\/(\d+(?:\.\d+)?)/)[1]):TARGET_NOT_SUPPORTED;if(currentChromeVersion<85){throw new Error(`This emscripten-generated code requires Chrome v85 (detected v${currentChromeVersion})`)}})();var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(!Module["expectedDataFileDownloads"])Module["expectedDataFileDownloads"]=0;Module["expectedDataFileDownloads"]++;(()=>{var isPthread=typeof ENVIRONMENT_IS_PTHREAD!="undefined"&&ENVIRONMENT_IS_PTHREAD;var isWasmWorker=typeof ENVIRONMENT_IS_WASM_WORKER!="undefined"&&ENVIRONMENT_IS_WASM_WORKER;if(isPthread||isWasmWorker)return;var isNode=globalThis.process&&globalThis.process.versions&&globalThis.process.versions.node&&globalThis.process.type!="renderer";async function loadPackage(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf("/"))+"/")}var PACKAGE_NAME="index.data";var REMOTE_PACKAGE_BASE="index.data";var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];async function fetchRemotePackage(packageName,packageSize){if(isNode){var contents=require("fs").readFileSync(packageName);return new Uint8Array(contents).buffer}if(!Module["dataFileDownloads"])Module["dataFileDownloads"]={};try{var response=await fetch(packageName)}catch(e){throw new Error(`Network Error: ${packageName}`,{e})}if(!response.ok){throw new Error(`${response.status}: ${response.url}`)}const chunks=[];const headers=response.headers;const total=Number(headers.get("Content-Length")||packageSize);let loaded=0;Module["setStatus"]&&Module["setStatus"]("Downloading data...");const reader=response.body.getReader();while(1){var{done,value}=await reader.read();if(done)break;chunks.push(value);loaded+=value.length;Module["dataFileDownloads"][packageName]={loaded,total};let totalLoaded=0;let totalSize=0;for(const download of Object.values(Module["dataFileDownloads"])){totalLoaded+=download.loaded;totalSize+=download.total}Module["setStatus"]&&Module["setStatus"](`Downloading data... (${totalLoaded}/${totalSize})`)}const packageData=new Uint8Array(chunks.map(c=>c.length).reduce((a,b)=>a+b,0));let offset=0;for(const chunk of chunks){packageData.set(chunk,offset);offset+=chunk.length}return packageData.buffer}var fetchPromise;var fetched=Module["getPreloadedPackage"]&&Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE);if(!fetched){fetchPromise=fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE)}async function runWithFS(Module){function assert(check,msg){if(!check)throw new Error(msg)}Module["FS_createPath"]("/","data",true,true);Module["FS_createPath"]("/data","app",true,true);Module["FS_createPath"]("/data/app","ios",true,true);Module["FS_createPath"]("/data/app/ios","dialog",true,true);Module["FS_createPath"]("/data/app/ios/dialog","ipad",true,true);Module["FS_createPath"]("/data/app/ios","dialog2",true,true);Module["FS_createPath"]("/data/app/ios","icons",true,true);Module["FS_createPath"]("/data/app","launch",true,true);Module["FS_createPath"]("/data","fonts",true,true);Module["FS_createPath"]("/data","images",true,true);Module["FS_createPath"]("/data/images","armor",true,true);Module["FS_createPath"]("/data/images","art",true,true);Module["FS_createPath"]("/data/images","environment",true,true);Module["FS_createPath"]("/data/images","font",true,true);Module["FS_createPath"]("/data/images","gui",true,true);Module["FS_createPath"]("/data/images/gui","badge",true,true);Module["FS_createPath"]("/data/images/gui","logo",true,true);Module["FS_createPath"]("/data/images","item",true,true);Module["FS_createPath"]("/data/images","mob",true,true);Module["FS_createPath"]("/data","lang",true,true);Module["FS_createPath"]("/data","sound",true,true);Module["FS_createPath"]("/data/sound","aac",true,true);Module["FS_createPath"]("/data/sound/aac","damage",true,true);Module["FS_createPath"]("/data/sound/aac","mob",true,true);Module["FS_createPath"]("/data/sound/aac","random",true,true);Module["FS_createPath"]("/data/sound/aac","step",true,true);for(var file of metadata["files"]){var name=file["filename"];Module["addRunDependency"](`fp ${name}`)}async function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer.constructor.name===ArrayBuffer.name,"bad input to processPackageData "+arrayBuffer.constructor.name);var byteArray=new Uint8Array(arrayBuffer);for(var file of metadata["files"]){var name=file["filename"];var data=byteArray.subarray(file["start"],file["end"]);Module["FS_createDataFile"](name,null,data,true,true,true);Module["removeRunDependency"](`fp ${name}`)}Module["removeRunDependency"]("datafile_index.data")}Module["addRunDependency"]("datafile_index.data");if(!Module["preloadResults"])Module["preloadResults"]={};Module["preloadResults"][PACKAGE_NAME]={fromCache:false};if(!fetched){fetched=await fetchPromise}processPackageData(fetched)}if(Module["calledRun"]){runWithFS(Module)}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}}loadPackage({files:[{filename:"/data/.DS_Store",start:0,end:14340},{filename:"/data/app/.DS_Store",start:14340,end:24584},{filename:"/data/app/ios/bg128.png",start:24584,end:26300},{filename:"/data/app/ios/bg64.png",start:26300,end:27045},{filename:"/data/app/ios/dialog/cancel_0.png",start:27045,end:28929},{filename:"/data/app/ios/dialog/cancel_0_1.png",start:28929,end:29566},{filename:"/data/app/ios/dialog/cancel_0_3.png",start:29566,end:30490},{filename:"/data/app/ios/dialog/cancel_1.png",start:30490,end:32433},{filename:"/data/app/ios/dialog/cancel_1_1.png",start:32433,end:33106},{filename:"/data/app/ios/dialog/cancel_1_3.png",start:33106,end:34078},{filename:"/data/app/ios/dialog/create_0.png",start:34078,end:36012},{filename:"/data/app/ios/dialog/create_0_1.png",start:36012,end:36664},{filename:"/data/app/ios/dialog/create_0_3.png",start:36664,end:37604},{filename:"/data/app/ios/dialog/create_1.png",start:37604,end:39600},{filename:"/data/app/ios/dialog/create_1_1.png",start:39600,end:40301},{filename:"/data/app/ios/dialog/create_1_3.png",start:40301,end:41313},{filename:"/data/app/ios/dialog/ipad/cancel_0_4.png",start:41313,end:42336},{filename:"/data/app/ios/dialog/ipad/cancel_1_4.png",start:42336,end:43391},{filename:"/data/app/ios/dialog/ipad/create_0_4.png",start:43391,end:44476},{filename:"/data/app/ios/dialog/ipad/create_1_4.png",start:44476,end:45606},{filename:"/data/app/ios/dialog/ipad/creative_0_4.png",start:45606,end:46776},{filename:"/data/app/ios/dialog/ipad/creative_1_4.png",start:46776,end:49453},{filename:"/data/app/ios/dialog/ipad/creative_3_4.png",start:49453,end:52042},{filename:"/data/app/ios/dialog/ipad/survival_0_4.png",start:52042,end:53174},{filename:"/data/app/ios/dialog/ipad/survival_1_4.png",start:53174,end:55763},{filename:"/data/app/ios/dialog/ipad/survival_3_4.png",start:55763,end:58264},{filename:"/data/app/ios/dialog/ipad/worldname_ipad_4.png",start:58264,end:59195},{filename:"/data/app/ios/dialog/save_0.png",start:59195,end:61016},{filename:"/data/app/ios/dialog/save_0_3.png",start:61016,end:62351},{filename:"/data/app/ios/dialog/save_1.png",start:62351,end:64232},{filename:"/data/app/ios/dialog/save_1_3.png",start:64232,end:65621},{filename:"/data/app/ios/dialog/worldname_ipad.png",start:65621,end:66160},{filename:"/data/app/ios/dialog/worldname_ipad_3.png",start:66160,end:67806},{filename:"/data/app/ios/dialog/worldname_iphone.png",start:67806,end:68327},{filename:"/data/app/ios/dialog/worldname_iphone_3.png",start:68327,end:69863},{filename:"/data/app/ios/dialog2/cancel_0_1.png",start:69863,end:70475},{filename:"/data/app/ios/dialog2/cancel_0_3.png",start:70475,end:73754},{filename:"/data/app/ios/dialog2/cancel_1_1.png",start:73754,end:74386},{filename:"/data/app/ios/dialog2/cancel_1_3.png",start:74386,end:77722},{filename:"/data/app/ios/dialog2/create_0_1.png",start:77722,end:78352},{filename:"/data/app/ios/dialog2/create_0_3.png",start:78352,end:81657},{filename:"/data/app/ios/dialog2/create_1_1.png",start:81657,end:82306},{filename:"/data/app/ios/dialog2/create_1_3.png",start:82306,end:85662},{filename:"/data/app/ios/dialog2/creative_0_3.png",start:85662,end:89044},{filename:"/data/app/ios/dialog2/creative_1_3.png",start:89044,end:92470},{filename:"/data/app/ios/dialog2/survival_0_3.png",start:92470,end:95828},{filename:"/data/app/ios/dialog2/survival_1_3.png",start:95828,end:99237},{filename:"/data/app/ios/dialog2/worldname.png",start:99237,end:99826},{filename:"/data/app/ios/dialog2/worldname_3.png",start:99826,end:101669},{filename:"/data/app/ios/dialog2/worldname_ipad.png",start:101669,end:102208},{filename:"/data/app/ios/dialog2/worldname_ipad_3.png",start:102208,end:103854},{filename:"/data/app/ios/dialog2/worldname_iphone.png",start:103854,end:106920},{filename:"/data/app/ios/dialog2/worldname_iphone5_3.png",start:106920,end:110143},{filename:"/data/app/ios/dialog2/worldname_iphone_3.png",start:110143,end:113331},{filename:"/data/app/ios/icons/Icon-72.png",start:113331,end:125786},{filename:"/data/app/ios/icons/Icon-72_lite.png",start:125786,end:139006},{filename:"/data/app/ios/icons/Icon-Small-50.png",start:139006,end:147395},{filename:"/data/app/ios/icons/Icon-Small-50_lite.png",start:147395,end:156101},{filename:"/data/app/ios/icons/Icon-Small.png",start:156101,end:161103},{filename:"/data/app/ios/icons/Icon-Small@2x.png",start:161103,end:170855},{filename:"/data/app/ios/icons/Icon-Small@2x_lite.png",start:170855,end:181085},{filename:"/data/app/ios/icons/Icon-Small_lite.png",start:181085,end:186162},{filename:"/data/app/ios/icons/Icon.png",start:186162,end:195743},{filename:"/data/app/ios/icons/Icon@2x.png",start:195743,end:216449},{filename:"/data/app/ios/icons/Icon@2x_lite.png",start:216449,end:239100},{filename:"/data/app/ios/icons/Icon_lite.png",start:239100,end:249138},{filename:"/data/app/ios/icons/mcpe_ios_icon.png",start:249138,end:326889},{filename:"/data/app/ios/icons/mcpe_lite_ios_icon.png",start:326889,end:419849},{filename:"/data/app/launch/Default-Landscape~ipad.png",start:419849,end:487606},{filename:"/data/app/launch/Default.png",start:487606,end:507878},{filename:"/data/app/launch/Default@2x.png",start:507878,end:576450},{filename:"/data/fonts/minecraft.ttf",start:576450,end:594126},{filename:"/data/images/armor/chain_1.png",start:594126,end:595090},{filename:"/data/images/armor/chain_2.png",start:595090,end:595613},{filename:"/data/images/armor/cloth_1.png",start:595613,end:596752},{filename:"/data/images/armor/cloth_2.png",start:596752,end:597462},{filename:"/data/images/armor/diamond_1.png",start:597462,end:598680},{filename:"/data/images/armor/diamond_2.png",start:598680,end:599404},{filename:"/data/images/armor/gold_1.png",start:599404,end:600602},{filename:"/data/images/armor/gold_2.png",start:600602,end:601310},{filename:"/data/images/armor/iron_1.png",start:601310,end:602443},{filename:"/data/images/armor/iron_2.png",start:602443,end:603129},{filename:"/data/images/art/kz.png",start:603129,end:688716},{filename:"/data/images/environment/clouds.png",start:688716,end:702428},{filename:"/data/images/font/default8.png",start:702428,end:704579},{filename:"/data/images/gui/background.png",start:704579,end:704947},{filename:"/data/images/gui/badge/minecon140.png",start:704947,end:708051},{filename:"/data/images/gui/bg32.png",start:708051,end:708559},{filename:"/data/images/gui/cursor.png",start:708559,end:708840},{filename:"/data/images/gui/default_world.png",start:708840,end:734078},{filename:"/data/images/gui/gui.png",start:734078,end:757630},{filename:"/data/images/gui/gui2.png",start:757630,end:771514},{filename:"/data/images/gui/gui_blocks.png",start:771514,end:949518},{filename:"/data/images/gui/icons.png",start:949518,end:951958},{filename:"/data/images/gui/itemframe.png",start:951958,end:957198},{filename:"/data/images/gui/items.png",start:957198,end:986953},{filename:"/data/images/gui/logo/raknet_high_72.png",start:986953,end:1008342},{filename:"/data/images/gui/logo/raknet_low_18.png",start:1008342,end:1010185},{filename:"/data/images/gui/pi_title.png",start:1010185,end:1016956},{filename:"/data/images/gui/spritesheet.png",start:1016956,end:1028558},{filename:"/data/images/gui/title.png",start:1028558,end:1044308},{filename:"/data/images/gui/touchgui.png",start:1044308,end:1064017},{filename:"/data/images/item/arrows.png",start:1064017,end:1064339},{filename:"/data/images/item/camera.png",start:1064339,end:1065021},{filename:"/data/images/item/sign.png",start:1065021,end:1066281},{filename:"/data/images/mob/char.png",start:1066281,end:1067641},{filename:"/data/images/mob/chicken.png",start:1067641,end:1068133},{filename:"/data/images/mob/cow.png",start:1068133,end:1069511},{filename:"/data/images/mob/creeper.png",start:1069511,end:1072511},{filename:"/data/images/mob/pig.png",start:1072511,end:1075816},{filename:"/data/images/mob/pigzombie.png",start:1075816,end:1078849},{filename:"/data/images/mob/sheep.png",start:1078849,end:1081291},{filename:"/data/images/mob/sheep_fur.png",start:1081291,end:1082942},{filename:"/data/images/mob/skeleton.png",start:1082942,end:1083836},{filename:"/data/images/mob/spider.png",start:1083836,end:1086390},{filename:"/data/images/mob/zombie.png",start:1086390,end:1087705},{filename:"/data/images/particles.png",start:1087705,end:1089618},{filename:"/data/images/terrain.png",start:1089618,end:1181216},{filename:"/data/images/terrain.pvr",start:1181216,end:1214036},{filename:"/data/images/terrain.pvr4",start:1214036,end:1246856},{filename:"/data/images/terrain.pvrtc",start:1246856,end:1279676},{filename:"/data/images/terrain_4444.h",start:1279676,end:1641848},{filename:"/data/images/terrain_5551.h",start:1641848,end:2004020},{filename:"/data/images/terrain_565.h",start:2004020,end:2366191},{filename:"/data/images/terrain_565_2.h",start:2366191,end:2728364},{filename:"/data/lang/en_US.lang",start:2728364,end:2766161},{filename:"/data/sound/.DS_Store",start:2766161,end:2774357},{filename:"/data/sound/aac/damage/fallbig1.m4a",start:2774357,end:2781274},{filename:"/data/sound/aac/damage/fallbig2.m4a",start:2781274,end:2787090},{filename:"/data/sound/aac/damage/fallsmall.m4a",start:2787090,end:2791909},{filename:"/data/sound/aac/mob/chicken1.m4a",start:2791909,end:2797924},{filename:"/data/sound/aac/mob/chicken2.m4a",start:2797924,end:2805318},{filename:"/data/sound/aac/mob/chicken3.m4a",start:2805318,end:2810491},{filename:"/data/sound/aac/mob/chickenhurt1.m4a",start:2810491,end:2816310},{filename:"/data/sound/aac/mob/chickenhurt2.m4a",start:2816310,end:2820761},{filename:"/data/sound/aac/mob/chickenplop.m4a",start:2820761,end:2823516},{filename:"/data/sound/aac/mob/cow1.m4a",start:2823516,end:2835790},{filename:"/data/sound/aac/mob/cow2.m4a",start:2835790,end:2848001},{filename:"/data/sound/aac/mob/cow3.m4a",start:2848001,end:2865045},{filename:"/data/sound/aac/mob/cow4.m4a",start:2865045,end:2878329},{filename:"/data/sound/aac/mob/cowhurt1.m4a",start:2878329,end:2883517},{filename:"/data/sound/aac/mob/cowhurt2.m4a",start:2883517,end:2888496},{filename:"/data/sound/aac/mob/cowhurt3.m4a",start:2888496,end:2894114},{filename:"/data/sound/aac/mob/creeper1.m4a",start:2894114,end:2897964},{filename:"/data/sound/aac/mob/creeper2.m4a",start:2897964,end:2901853},{filename:"/data/sound/aac/mob/creeper3.m4a",start:2901853,end:2905744},{filename:"/data/sound/aac/mob/creeper4.m4a",start:2905744,end:2909711},{filename:"/data/sound/aac/mob/creeperdeath.m4a",start:2909711,end:2916822},{filename:"/data/sound/aac/mob/pig1.m4a",start:2916822,end:2921093},{filename:"/data/sound/aac/mob/pig2.m4a",start:2921093,end:2926049},{filename:"/data/sound/aac/mob/pig3.m4a",start:2926049,end:2930020},{filename:"/data/sound/aac/mob/pigdeath.m4a",start:2930020,end:2936139},{filename:"/data/sound/aac/mob/sheep1.m4a",start:2936139,end:2945414},{filename:"/data/sound/aac/mob/sheep2.m4a",start:2945414,end:2953859},{filename:"/data/sound/aac/mob/sheep3.m4a",start:2953859,end:2962039},{filename:"/data/sound/aac/mob/skeleton1.m4a",start:2962039,end:2967667},{filename:"/data/sound/aac/mob/skeleton2.m4a",start:2967667,end:2972359},{filename:"/data/sound/aac/mob/skeleton3.m4a",start:2972359,end:2977496},{filename:"/data/sound/aac/mob/skeletonhurt1.m4a",start:2977496,end:2981841},{filename:"/data/sound/aac/mob/skeletonhurt2.m4a",start:2981841,end:2986480},{filename:"/data/sound/aac/mob/skeletonhurt3.m4a",start:2986480,end:2991056},{filename:"/data/sound/aac/mob/skeletonhurt4.m4a",start:2991056,end:2995741},{filename:"/data/sound/aac/mob/spider1.m4a",start:2995741,end:3001850},{filename:"/data/sound/aac/mob/spider2.m4a",start:3001850,end:3006408},{filename:"/data/sound/aac/mob/spider3.m4a",start:3006408,end:3011410},{filename:"/data/sound/aac/mob/spider4.m4a",start:3011410,end:3015562},{filename:"/data/sound/aac/mob/spiderdeath.m4a",start:3015562,end:3023200},{filename:"/data/sound/aac/mob/zombie1.m4a",start:3023200,end:3036684},{filename:"/data/sound/aac/mob/zombie2.m4a",start:3036684,end:3049150},{filename:"/data/sound/aac/mob/zombie3.m4a",start:3049150,end:3066765},{filename:"/data/sound/aac/mob/zombiedeath.m4a",start:3066765,end:3074044},{filename:"/data/sound/aac/mob/zombiehurt1.m4a",start:3074044,end:3082423},{filename:"/data/sound/aac/mob/zombiehurt2.m4a",start:3082423,end:3090738},{filename:"/data/sound/aac/mob/zpig1.m4a",start:3090738,end:3098324},{filename:"/data/sound/aac/mob/zpig2.m4a",start:3098324,end:3107275},{filename:"/data/sound/aac/mob/zpig3.m4a",start:3107275,end:3111248},{filename:"/data/sound/aac/mob/zpig4.m4a",start:3111248,end:3116456},{filename:"/data/sound/aac/mob/zpigangry1.m4a",start:3116456,end:3123764},{filename:"/data/sound/aac/mob/zpigangry2.m4a",start:3123764,end:3127682},{filename:"/data/sound/aac/mob/zpigangry3.m4a",start:3127682,end:3135659},{filename:"/data/sound/aac/mob/zpigangry4.m4a",start:3135659,end:3144699},{filename:"/data/sound/aac/mob/zpigdeath.m4a",start:3144699,end:3154253},{filename:"/data/sound/aac/mob/zpighurt1.m4a",start:3154253,end:3158886},{filename:"/data/sound/aac/mob/zpighurt2.m4a",start:3158886,end:3163176},{filename:"/data/sound/aac/random/bow.m4a",start:3163176,end:3167178},{filename:"/data/sound/aac/random/bowhit1.m4a",start:3167178,end:3174531},{filename:"/data/sound/aac/random/bowhit2.m4a",start:3174531,end:3181262},{filename:"/data/sound/aac/random/bowhit3.m4a",start:3181262,end:3189552},{filename:"/data/sound/aac/random/bowhit4.m4a",start:3189552,end:3199619},{filename:"/data/sound/aac/random/click.m4a",start:3199619,end:3203821},{filename:"/data/sound/aac/random/door_close.m4a",start:3203821,end:3208057},{filename:"/data/sound/aac/random/door_open.m4a",start:3208057,end:3212999},{filename:"/data/sound/aac/random/eat1.m4a",start:3212999,end:3215891},{filename:"/data/sound/aac/random/eat2.m4a",start:3215891,end:3218914},{filename:"/data/sound/aac/random/eat3.m4a",start:3218914,end:3221861},{filename:"/data/sound/aac/random/explode.m4a",start:3221861,end:3227416},{filename:"/data/sound/aac/random/fuse.m4a",start:3227416,end:3241568},{filename:"/data/sound/aac/random/glass1.m4a",start:3241568,end:3248302},{filename:"/data/sound/aac/random/glass2.m4a",start:3248302,end:3254909},{filename:"/data/sound/aac/random/glass3.m4a",start:3254909,end:3261123},{filename:"/data/sound/aac/random/hurt.m4a",start:3261123,end:3269559},{filename:"/data/sound/aac/random/pop.m4a",start:3269559,end:3271654},{filename:"/data/sound/aac/random/splash.m4a",start:3271654,end:3277170},{filename:"/data/sound/aac/random/water.m4a",start:3277170,end:3299333},{filename:"/data/sound/aac/step/cloth1.m4a",start:3299333,end:3302368},{filename:"/data/sound/aac/step/cloth2.m4a",start:3302368,end:3305419},{filename:"/data/sound/aac/step/cloth3.m4a",start:3305419,end:3308530},{filename:"/data/sound/aac/step/cloth4.m4a",start:3308530,end:3311574},{filename:"/data/sound/aac/step/grass1.m4a",start:3311574,end:3316247},{filename:"/data/sound/aac/step/grass2.m4a",start:3316247,end:3321556},{filename:"/data/sound/aac/step/grass3.m4a",start:3321556,end:3326373},{filename:"/data/sound/aac/step/grass4.m4a",start:3326373,end:3331231},{filename:"/data/sound/aac/step/gravel2.m4a",start:3331231,end:3336798},{filename:"/data/sound/aac/step/gravel3.m4a",start:3336798,end:3342137},{filename:"/data/sound/aac/step/gravel4.m4a",start:3342137,end:3347661},{filename:"/data/sound/aac/step/ladder1.m4a",start:3347661,end:3351686},{filename:"/data/sound/aac/step/ladder2.m4a",start:3351686,end:3355716},{filename:"/data/sound/aac/step/ladder3.m4a",start:3355716,end:3359967},{filename:"/data/sound/aac/step/ladder4.m4a",start:3359967,end:3363978},{filename:"/data/sound/aac/step/sand1.m4a",start:3363978,end:3367317},{filename:"/data/sound/aac/step/sand2.m4a",start:3367317,end:3370205},{filename:"/data/sound/aac/step/sand3.m4a",start:3370205,end:3373377},{filename:"/data/sound/aac/step/sand4.m4a",start:3373377,end:3376697},{filename:"/data/sound/aac/step/snow1.m4a",start:3376697,end:3381082},{filename:"/data/sound/aac/step/snow2.m4a",start:3381082,end:3385692},{filename:"/data/sound/aac/step/snow3.m4a",start:3385692,end:3390378},{filename:"/data/sound/aac/step/snow4.m4a",start:3390378,end:3394809},{filename:"/data/sound/aac/step/stone1.m4a",start:3394809,end:3400880},{filename:"/data/sound/aac/step/stone2.m4a",start:3400880,end:3406019},{filename:"/data/sound/aac/step/stone3.m4a",start:3406019,end:3410593},{filename:"/data/sound/aac/step/stone4.m4a",start:3410593,end:3416100},{filename:"/data/sound/aac/step/wood1.m4a",start:3416100,end:3422602},{filename:"/data/sound/aac/step/wood2.m4a",start:3422602,end:3430062},{filename:"/data/sound/aac/step/wood3.m4a",start:3430062,end:3437220},{filename:"/data/sound/aac/step/wood4.m4a",start:3437220,end:3444853}],remote_package_size:3444853})})();if(typeof ENVIRONMENT_IS_WASM_WORKER!="undefined"&&ENVIRONMENT_IS_WASM_WORKER||typeof ENVIRONMENT_IS_PTHREAD!="undefined"&&ENVIRONMENT_IS_PTHREAD||typeof ENVIRONMENT_IS_AUDIO_WORKLET!="undefined"&&ENVIRONMENT_IS_AUDIO_WORKLET)Module["preRun"]=[];var necessaryPreJSTasks=Module["preRun"].slice();if(!Module["preRun"])throw"Module.preRun should exist because file support used it; did a pre-js delete it?";necessaryPreJSTasks.forEach(task=>{if(Module["preRun"].indexOf(task)<0)throw"All preRun tasks that exist before user pre-js code should remain after; did you replace Module or modify Module.preRun?"});var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=globalThis.document?.currentScript?.src;if(typeof __filename!="undefined"){_scriptName=__filename}else if(ENVIRONMENT_IS_WORKER){_scriptName=self.location.href}var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){const isNode=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(!isNode)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var fs=require("node:fs");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);assert(Buffer.isBuffer(ret));return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");assert(binary?Buffer.isBuffer(ret):typeof ret=="string");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_SHELL){}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}if(!(globalThis.window||globalThis.WorkerGlobalScope))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");{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=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{throw new Error("environment detection error")}var out=console.log.bind(console);var err=console.error.bind(console);assert(!ENVIRONMENT_IS_SHELL,"shell environment detected but not enabled at build time. Add `shell` to `-sENVIRONMENT` to enable.");var wasmBinary;if(!globalThis.WebAssembly){err("no native wasm support detected")}var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed"+(text?": "+text:""))}}var isFileURI=filename=>filename.startsWith("file://");function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0);if(max==0){max+=4}HEAPU32[max>>2]=34821223;checkInt32(34821223);HEAPU32[max+4>>2]=2310721022;checkInt32(2310721022);HEAPU32[0>>2]=1668509029;checkInt32(1668509029)}function checkStackCookie(){if(ABORT)return;var max=_emscripten_stack_get_end();if(max==0){max+=4}var cookie1=HEAPU32[max>>2];var cookie2=HEAPU32[max+4>>2];if(cookie1!=34821223||cookie2!=2310721022){abort(`Stack overflow! Stack cookie has been overwritten at ${ptrToString(max)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${ptrToString(cookie2)} ${ptrToString(cookie1)}`)}if(HEAPU32[0>>2]!=1668509029){abort("Runtime error: The application has corrupted its heap memory area (address zero)!")}}var runtimeDebug=true;function dbg(...args){if(!runtimeDebug&&typeof runtimeDebug!="undefined")return;console.warn(...args)}(()=>{var h16=new Int16Array(1);var h8=new Int8Array(h16.buffer);h16[0]=25459;if(h8[0]!==115||h8[1]!==99)abort("Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)")})();function consumedModuleProp(prop){if(!Object.getOwnPropertyDescriptor(Module,prop)){Object.defineProperty(Module,prop,{configurable:true,set(){abort(`Attempt to set \`Module.${prop}\` after it has already been processed. This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}}function makeInvalidEarlyAccess(name){return()=>assert(false,`call to '${name}' via reference taken before Wasm module initialization`)}function ignoredModuleProp(prop){if(Object.getOwnPropertyDescriptor(Module,prop)){abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`)}}function isExportedByForceFilesystem(name){return name==="FS_createPath"||name==="FS_createDataFile"||name==="FS_createPreloadedFile"||name==="FS_preloadFile"||name==="FS_unlink"||name==="addRunDependency"||name==="FS_createLazyFile"||name==="FS_createDevice"||name==="removeRunDependency"}function hookGlobalSymbolAccess(sym,func){if(!Object.getOwnPropertyDescriptor(globalThis,sym)){Object.defineProperty(globalThis,sym,{configurable:true,get(){func();return undefined}})}}function missingGlobal(sym,msg){hookGlobalSymbolAccess(sym,()=>{warnOnce(`\`${sym}\` is no longer defined by emscripten. ${msg}`)})}missingGlobal("buffer","Please use HEAP8.buffer or wasmMemory.buffer");missingGlobal("asm","Please use wasmExports instead");function missingLibrarySymbol(sym){hookGlobalSymbolAccess(sym,()=>{var msg=`\`${sym}\` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line`;var librarySymbol=sym;if(!librarySymbol.startsWith("_")){librarySymbol="$"+sym}msg+=` (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE='${librarySymbol}')`;if(isExportedByForceFilesystem(sym)){msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"}warnOnce(msg)});unexportedRuntimeSymbol(sym)}function unexportedRuntimeSymbol(sym){if(!Object.getOwnPropertyDescriptor(Module,sym)){Object.defineProperty(Module,sym,{configurable:true,get(){var msg=`'${sym}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;if(isExportedByForceFilesystem(sym)){msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"}abort(msg)}})}}var MAX_UINT8=2**8-1;var MAX_UINT16=2**16-1;var MAX_UINT32=2**32-1;var MAX_UINT53=2**53-1;var MAX_UINT64=2**64-1;var MIN_INT8=-(2**(8-1));var MIN_INT16=-(2**(16-1));var MIN_INT32=-(2**(32-1));var MIN_INT53=-(2**(53-1));var MIN_INT64=-(2**(64-1));function checkInt(value,bits,min,max){assert(Number.isInteger(Number(value)),`attempt to write non-integer (${value}) into integer heap`);assert(value<=max,`value (${value}) too large to write as ${bits}-bit value`);assert(value>=min,`value (${value}) too small to write as ${bits}-bit value`)}var checkInt8=value=>checkInt(value,8,MIN_INT8,MAX_UINT8);var checkInt16=value=>checkInt(value,16,MIN_INT16,MAX_UINT16);var checkInt32=value=>checkInt(value,32,MIN_INT32,MAX_UINT32);var checkInt64=value=>checkInt(value,64,MIN_INT64,MAX_UINT64);var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}assert(globalThis.Int32Array&&globalThis.Float64Array&&Int32Array.prototype.subarray&&Int32Array.prototype.set,"JS engine does not provide full typed array support");function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}consumedModuleProp("preRun");callRuntimeCallbacks(onPreRuns)}function initRuntime(){assert(!runtimeInitialized);runtimeInitialized=true;setStackLimits();checkStackCookie();SOCKFS.root=FS.mount(SOCKFS,{},null);if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();wasmExports["__wasm_call_ctors"]();FS.ignorePermissions=false}function preMain(){checkStackCookie()}function postRun(){checkStackCookie();if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}consumedModuleProp("postRun");callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;var e=new WebAssembly.RuntimeError(what);throw e}function createExportWrapper(name,nargs){return(...args)=>{assert(runtimeInitialized,`native function \`${name}\` called before runtime initialization`);var f=wasmExports[name];assert(f,`exported native function \`${name}\` not found`);assert(args.length<=nargs,`native function \`${name}\` called with ${args.length} args but expects ${nargs}`);return f(...args)}}var wasmBinaryFile;function findWasmBinary(){return locateFile("index.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);if(isFileURI(binaryFile)){err(`warning: Loading from a file URI (${binaryFile}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`)}abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");var trueModule=Module;function receiveInstantiationResult(result){assert(Module===trueModule,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?");trueModule=null;return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{try{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);reject(e)}})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var runDependencies=0;var dependenciesFulfilled=null;var runDependencyTracking={};var runDependencyWatcher=null;var removeRunDependency=id=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);assert(id,"removeRunDependency requires an ID");assert(runDependencyTracking[id]);delete runDependencyTracking[id];if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}};var addRunDependency=id=>{runDependencies++;Module["monitorRunDependencies"]?.(runDependencies);assert(id,"addRunDependency requires an ID");assert(!runDependencyTracking[id]);runDependencyTracking[id]=1;if(runDependencyWatcher===null&&globalThis.setInterval){runDependencyWatcher=setInterval(()=>{if(ABORT){clearInterval(runDependencyWatcher);runDependencyWatcher=null;return}var shown=false;for(var dep in runDependencyTracking){if(!shown){shown=true;err("still waiting on run dependencies:")}err(`dependency: ${dep}`)}if(shown){err("(end of list)")}},1e4);runDependencyWatcher.unref?.()}};var noExitRuntime=true;var ptrToString=ptr=>{assert(typeof ptr==="number",`ptrToString expects a number, got ${typeof ptr}`);ptr>>>=0;return"0x"+ptr.toString(16).padStart(8,"0")};var setStackLimits=()=>{var stackLow=_emscripten_stack_get_base();var stackHigh=_emscripten_stack_get_end();___set_stack_limits(stackLow,stackHigh)};function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr]=value;checkInt8(value);break;case"i8":HEAP8[ptr]=value;checkInt8(value);break;case"i16":HEAP16[ptr>>1]=value;checkInt16(value);break;case"i32":HEAP32[ptr>>2]=value;checkInt32(value);break;case"i64":HEAP64[ptr>>3]=BigInt(value);checkInt64(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);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 UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{assert(typeof ptr=="number",`UTF8ToString expects a number (got ${typeof ptr})`);return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):""};var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught;checkInt8(caught)}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown;checkInt8(rethrown)}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;assert(false,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")};var ___handle_stack_overflow=requested=>{var base=_emscripten_stack_get_base();var end=_emscripten_stack_get_end();abort(`stack overflow (Attempt to set SP to ${ptrToString(requested)}`+`, with stack limits [${ptrToString(end)} - ${ptrToString(base)}`+"]). If you require more stack space build with -sSTACK_SIZE=")};var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>nodeCrypto.randomFillSync(view)}return view=>crypto.getRandomValues(view)};var randomFill=view=>{(randomFill=initRandomFill())(view)};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.slice(-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.slice(0,-1)}return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[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).slice(1);to=PATH_FS.resolve(to).slice(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{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{assert(typeof str==="string",`stringToUTF8Array expects a string (got ${typeof str})`);if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=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;if(u>1114111)warnOnce("Invalid Unicode code point "+ptrToString(u)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).");heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var 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 FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}}else if(globalThis.window?.prompt){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(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){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=size=>{abort("internal error: mmapAlloc called but `emscripten_builtin_memalign` native symbol not exported")};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}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,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.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(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(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(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(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.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"]){if(attr[key]!=null){node[key]=attr[key]}}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw new FS.ErrnoError(44)},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){if(FS.isDir(old_node.mode)){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}FS.hashRemoveNode(new_node)}delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(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);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{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};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var IDBFS={dbs:{},indexedDB:()=>{assert(typeof indexedDB!="undefined","IDBFS used, but indexedDB not supported");return indexedDB},DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",queuePersist:mount=>{function onPersistComplete(){if(mount.idbPersistState==="again")startPersist();else mount.idbPersistState=0}function startPersist(){mount.idbPersistState="idb";IDBFS.syncfs(mount,false,onPersistComplete)}if(!mount.idbPersistState){mount.idbPersistState=setTimeout(startPersist,0)}else if(mount.idbPersistState==="idb"){mount.idbPersistState="again"}},mount:mount=>{var mnt=MEMFS.mount(mount);if(mount?.opts?.autoPersist){mount.idbPersistState=0;var memfs_node_ops=mnt.node_ops;mnt.node_ops={...mnt.node_ops};mnt.node_ops.mknod=(parent,name,mode,dev)=>{var node=memfs_node_ops.mknod(parent,name,mode,dev);node.node_ops=mnt.node_ops;node.idbfs_mount=mnt.mount;node.memfs_stream_ops=node.stream_ops;node.stream_ops={...node.stream_ops};node.stream_ops.write=(stream,buffer,offset,length,position,canOwn)=>{stream.node.isModified=true;return node.memfs_stream_ops.write(stream,buffer,offset,length,position,canOwn)};node.stream_ops.close=stream=>{var n=stream.node;if(n.isModified){IDBFS.queuePersist(n.idbfs_mount);n.isModified=false}if(n.memfs_stream_ops.close)return n.memfs_stream_ops.close(stream)};IDBFS.queuePersist(mnt.mount);return node};mnt.node_ops.rmdir=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rmdir(...args));mnt.node_ops.symlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.symlink(...args));mnt.node_ops.unlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.unlink(...args));mnt.node_ops.rename=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rename(...args))}return mnt},syncfs:(mount,populate,callback)=>{IDBFS.getLocalSet(mount,(err,local)=>{if(err)return callback(err);IDBFS.getRemoteSet(mount,(err,remote)=>{if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)})})},quit:()=>{for(var value of Object.values(IDBFS.dbs)){value.close()}IDBFS.dbs={}},getDB:(name,callback)=>{var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback("Unable to connect to IndexedDB")}req.onupgradeneeded=e=>{var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains("timestamp")){fileStore.createIndex("timestamp","timestamp",{unique:false})}};req.onsuccess=()=>{db=req.result;IDBFS.dbs[name]=db;callback(null,db)};req.onerror=e=>{callback(e.target.error);e.preventDefault()}},getLocalSet:(mount,callback)=>{var entries={};function isRealDir(p){return p!=="."&&p!==".."}function toAbsolute(root){return p=>PATH.join2(root,p)}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push(...FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:"local",entries})},getRemoteSet:(mount,callback)=>{var entries={};IDBFS.getDB(mount.mountpoint,(err,db)=>{if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=e=>{callback(e.target.error);e.preventDefault()};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=event=>{var cursor=event.target.result;if(!cursor){return callback(null,{type:"remote",db,entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()}}catch(e){return callback(e)}})},loadLocalEntry:(path,callback)=>{var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error("node type not supported"))}},storeLocalEntry:(path,entry,callback)=>{try{if(FS.isDir(entry["mode"])){FS.mkdirTree(path,entry["mode"])}else if(FS.isFile(entry["mode"])){FS.writeFile(path,entry["contents"],{canOwn:true})}else{return callback(new Error("node type not supported"))}FS.chmod(path,entry["mode"]);FS.utime(path,entry["timestamp"],entry["timestamp"])}catch(e){return callback(e)}callback(null)},removeLocalEntry:(path,callback)=>{try{var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)},loadRemoteEntry:(store,path,callback)=>{var req=store.get(path);req.onsuccess=event=>callback(null,event.target.result);req.onerror=e=>{callback(e.target.error);e.preventDefault()}},storeRemoteEntry:(store,path,entry,callback)=>{try{var req=store.put(entry,path)}catch(e){callback(e);return}req.onsuccess=event=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},removeRemoteEntry:(store,path,callback)=>{var req=store.delete(path);req.onsuccess=event=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},reconcile:(src,dst,callback)=>{var total=0;var create=[];for(var[key,e]of Object.entries(src.entries)){var e2=dst.entries[key];if(!e2||e["timestamp"].getTime()!=e2["timestamp"].getTime()){create.push(key);total++}}var remove=[];for(var key of Object.keys(dst.entries)){if(!src.entries[key]){remove.push(key);total++}}if(!total){return callback(null)}var errored=false;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err&&!errored){errored=true;return callback(err)}}transaction.onerror=transaction.onabort=e=>{done(e.target.error);e.preventDefault()};transaction.oncomplete=e=>{if(!errored){callback(null)}};for(const path of create.sort()){if(dst.type==="local"){IDBFS.loadRemoteEntry(store,path,(err,entry)=>{if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)})}else{IDBFS.loadLocalEntry(path,(err,entry)=>{if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)})}}for(var path of remove.sort().reverse()){if(dst.type==="local"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}}};var strError=errno=>UTF8ToString(_strerror(errno));var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>{var orig=id;while(1){if(!runDependencyTracking[id])return id;id=orig+Math.random()}};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!="undefined")Browser.init();for(var plugin of preloadPlugins){if(plugin["canHandle"](fullname)){assert(plugin["handle"].constructor.name==="AsyncFunction","Filesystem plugin handlers must be async functions (See #24914)");return plugin["handle"](byteArray,fullname)}}return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);addRunDependency(dep);try{var byteArray=url;if(typeof url=="string"){byteArray=await asyncLoad(url)}byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}}finally{removeRunDependency(dep)}};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,filesystems:null,syncFSRequests:0,ErrnoError:class extends Error{name="ErrnoError";constructor(errno){super(runtimeInitialized?strError(errno):"");this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=292|73;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){if(!path){throw new FS.ErrnoError(44)}opts.follow_mount??=true;if(!PATH.isAbs(path)){path=FS.cwd()+"/"+path}linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";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)}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){assert(typeof parent=="object");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}if(perms.includes("w")&&!(node.mode&146)){return 2}if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode)){return 54}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}var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode)){if(mode!=="r"||flags&(512|64)){return 31}}return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op){throw new FS.ErrnoError(err)}return op},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)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){assert(fd>=-1);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},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);setattr(arg,attr)},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;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(...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){assert(FS.syncFSRequests>0);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)}}for(var mount of mounts){if(mount.type.syncfs){mount.type.syncfs(mount,populate,done)}else{done(null)}}},mount(type,opts,mountpoint){if(typeof type=="string"){throw type}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,opts,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);for(var[hash,current]of Object.entries(FS.nameTable)){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);assert(idx!==-1);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){throw new FS.ErrnoError(28)}if(name==="."||name===".."){throw new FS.ErrnoError(20)}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)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs){Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root))}return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){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);old_node.parent=new_dir}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;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return 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 link.node_ops.readlink(link)},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&~4095,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow){var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){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)}FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},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}FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var setattr=FS.checkOpExists(node.node_ops.setattr,63);setattr(node,{atime,mtime})},open(path,flags,mode=438){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;var isDirPath;if(typeof path=="object"){node=path}else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else if(isDirPath){throw new FS.ErrnoError(31)}else{node=FS.mknod(path,mode|511,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,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(created){FS.chmod(node,mode&511)}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){assert(offset>=0);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){assert(offset>=0);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},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)}if(!length){throw new FS.ErrnoError(28)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){assert(offset>=0);if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},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"){abort(`Invalid encoding type "${opts.encoding}"`)}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"){buf=UTF8ArrayToString(buf)}FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){data=new Uint8Array(intArrayFromString(data,true))}if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{abort("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,llseek:()=>0});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){randomFill(randomBuffer);randomLeft=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",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input){FS.createDevice("/dev","stdin",input)}else{FS.symlink("/dev/tty","/dev/stdin")}if(output){FS.createDevice("/dev","stdout",null,output)}else{FS.symlink("/dev/tty","/dev/stdout")}if(error){FS.createDevice("/dev","stderr",null,error)}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);assert(stdin.fd===0,`invalid handle for stdin (${stdin.fd})`);assert(stdout.fd===1,`invalid handle for stdout (${stdout.fd})`);assert(stderr.fd===2,`invalid handle for stderr (${stderr.fd})`)},staticInit(){FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS,IDBFS}},init(input,output,error){assert(!FS.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)");FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;_fflush(0);for(var stream of FS.streams){if(stream){FS.close(stream)}}},findObject(path,dontResolveLastLink){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){if(e.errno!=20)throw 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;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort("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)abort("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)abort("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))abort("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")abort("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}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(globalThis.XMLHttpRequest){if(!ENVIRONMENT_IS_WORKER)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,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={};for(const[key,fn]of Object.entries(node.stream_ops)){stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}}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);assert(size>=0);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,allocated:true}};node.stream_ops=stream_ops;return node},absolutePath(){abort("FS.absolutePath has been removed; use PATH_FS.resolve instead")},createFolder(){abort("FS.createFolder has been removed; use FS.mkdir instead")},createLink(){abort("FS.createLink has been removed; use FS.symlink instead")},joinPath(){abort("FS.joinPath has been removed; use PATH.join instead")},mmapAlloc(){abort("FS.mmapAlloc has been replaced by the top level function mmapAlloc")},standardizePath(){abort("FS.standardizePath has been removed; use PATH.normalize instead")}};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2){throw new FS.ErrnoError(5)}type&=~526336;if(type!=1&&type!=2){throw new FS.ErrnoError(28)}var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=undefined;if(SOCKFS.websocketArgs["url"]){url=SOCKFS.websocketArgs["url"]}if(SOCKFS.websocketArgs["subprotocol"]){subProtocols=SOCKFS.websocketArgs["subprotocol"]}else if(SOCKFS.websocketArgs["subprotocol"]===null){subProtocols="null"}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;var handleOpen=function(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){SOCKFS.emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){SOCKFS.emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){if(sock.connecting){mask|=4}else{mask|=16}}return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;checkInt32(bytes);return 0;case 21537:var on=HEAP32[arg>>2];if(on){sock.stream.flags|=2048}else{sock.stream.flags&=~2048}return 0;default:return 28}},close(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!="undefined"||typeof sock.sport!="undefined"){throw new FS.ErrnoError(28)}sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server){throw new FS.ErrnoError(138)}if(typeof sock.daddr!="undefined"&&typeof sock.dport!="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest){if(dest.socket.readyState===dest.socket.CONNECTING){throw new FS.ErrnoError(7)}else{throw new FS.ErrnoError(30)}}}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(!ENVIRONMENT_IS_NODE){throw new FS.ErrnoError(138)}if(sock.server){throw new FS.ErrnoError(28)}var WebSocketServer=require("ws").Server;var host=sock.saddr;sock.server=new WebSocketServer({host,port:sock.sport});SOCKFS.emit("listen",sock.stream.fd);sock.server.on("connection",function(ws){if(sock.type===1){var newsock=SOCKFS.createSocket(sock.family,sock.type,sock.protocol);var peer=SOCKFS.websocket_sock_ops.createPeer(newsock,ws);newsock.daddr=peer.addr;newsock.dport=peer.port;sock.pending.push(newsock);SOCKFS.emit("connection",newsock.stream.fd)}else{SOCKFS.websocket_sock_ops.createPeer(sock,ws);SOCKFS.emit("connection",sock.stream.fd)}});sock.server.on("close",function(){SOCKFS.emit("close",sock.stream.fd);sock.server=null});sock.server.on("error",function(error){sock.error=23;SOCKFS.emit("error",[sock.stream.fd,sock.error,"EHOSTUNREACH: Host is unreachable"])})},accept(listensock){if(!listensock.server||!listensock.pending.length){throw new FS.ErrnoError(28)}var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===undefined||sock.dport===undefined){throw new FS.ErrnoError(53)}addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===undefined||port===undefined){addr=sock.daddr;port=sock.dport}if(addr===undefined||port===undefined){throw new FS.ErrnoError(17)}}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){throw new FS.ErrnoError(53)}}if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2){if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port)}}dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length){if(sock.type===1&&sock.server){throw new FS.ErrnoError(53)}var queued=sock.recv_queue.shift();if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest){throw new FS.ErrnoError(53)}if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED){return null}throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(sock.type===1&&bytesRead{var socket=SOCKFS.getSocket(fd);if(!socket)throw new FS.ErrnoError(8);return socket};var inetPton4=str=>{var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0};var inetPton6=str=>{var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=Number(words[words.length-4])+Number(words[words.length-3])*256;words[words.length-3]=Number(words[words.length-2])+Number(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;wHEAPU8.fill(0,ptr,ptr+size);var writeSockaddr=(sa,family,addr,port,addrlen)=>{switch(family){case 2:addr=inetPton4(addr);zeroMemory(sa,16);if(addrlen){HEAP32[addrlen>>2]=16;checkInt32(16)}HEAP16[sa>>1]=family;checkInt16(family);HEAP32[sa+4>>2]=addr;checkInt32(addr);HEAP16[sa+2>>1]=_htons(port);checkInt16(_htons(port));break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28;checkInt32(28)}HEAP32[sa>>2]=family;checkInt32(family);HEAP32[sa+8>>2]=addr[0];checkInt32(addr[0]);HEAP32[sa+12>>2]=addr[1];checkInt32(addr[1]);HEAP32[sa+16>>2]=addr[2];checkInt32(addr[2]);HEAP32[sa+20>>2]=addr[3];checkInt32(addr[3]);HEAP16[sa+2>>1]=_htons(port);checkInt16(_htons(port));break;default:return 5}return 0};var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen);assert(!errno)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var inetNtop4=addr=>(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255);var inetNtop6=ints=>{var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word{var family=HEAP16[sa>>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family,addr,port}};var getSocketAddress=(addrp,addrlen)=>{var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info};function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SYSCALLS={calculateAt(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 dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>2]=stat.dev;checkInt32(stat.dev);HEAPU32[buf+4>>2]=stat.mode;checkInt32(stat.mode);HEAPU32[buf+8>>2]=stat.nlink;checkInt32(stat.nlink);HEAPU32[buf+12>>2]=stat.uid;checkInt32(stat.uid);HEAPU32[buf+16>>2]=stat.gid;checkInt32(stat.gid);HEAPU32[buf+20>>2]=stat.rdev;checkInt32(stat.rdev);HEAP64[buf+24>>3]=BigInt(stat.size);checkInt64(stat.size);HEAP32[buf+32>>2]=4096;checkInt32(4096);HEAP32[buf+36>>2]=stat.blocks;checkInt32(stat.blocks);var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>3]=BigInt(Math.floor(atime/1e3));checkInt64(Math.floor(atime/1e3));HEAPU32[buf+48>>2]=atime%1e3*1e3*1e3;checkInt32(atime%1e3*1e3*1e3);HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));checkInt64(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3*1e3;checkInt32(mtime%1e3*1e3*1e3);HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));checkInt64(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3*1e3;checkInt32(ctime%1e3*1e3*1e3);HEAP64[buf+88>>3]=BigInt(stat.ino);checkInt64(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>2]=stats.bsize;checkInt32(stats.bsize);HEAPU32[buf+60>>2]=stats.bsize;checkInt32(stats.bsize);HEAP64[buf+8>>3]=BigInt(stats.blocks);checkInt64(stats.blocks);HEAP64[buf+16>>3]=BigInt(stats.bfree);checkInt64(stats.bfree);HEAP64[buf+24>>3]=BigInt(stats.bavail);checkInt64(stats.bavail);HEAP64[buf+32>>3]=BigInt(stats.files);checkInt64(stats.files);HEAP64[buf+40>>3]=BigInt(stats.ffree);checkInt64(stats.ffree);HEAPU32[buf+48>>2]=stats.fsid;checkInt32(stats.fsid);HEAPU32[buf+64>>2]=stats.flags;checkInt32(stats.flags);HEAPU32[buf+56>>2]=stats.namelen;checkInt32(stats.namelen)},doMsync(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)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);assert(!flags||flags==512);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var syscallGetVarargI=()=>{assert(SYSCALLS.varargs!=undefined);var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;checkInt16(2);return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{return SYSCALLS.writeStat(buf,FS.fstat(fd))}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>{assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!");return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)};function ___syscall_getdents64(fd,dirp,count){try{var stream=SYSCALLS.getStreamFromFD(fd);stream.getdents||=FS.readdir(stream.path);var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var startIdx=Math.floor(off/struct_size);var endIdx=Math.min(stream.getdents.length,startIdx+Math.floor(count/struct_size));for(var idx=startIdx;idx>3]=BigInt(id);checkInt64(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);checkInt64((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;checkInt16(280);HEAP8[dirp+pos+18]=type;checkInt8(type);stringToUTF8(name,dirp+pos+19,256);pos+=struct_size}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);assert(!errno);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;checkInt32(sock.error);HEAP32[optlen>>2]=4;checkInt32(4);sock.error=null;return 0}}return-50}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:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>2]=termios.c_iflag||0;checkInt32(termios.c_iflag||0);HEAP32[argp+4>>2]=termios.c_oflag||0;checkInt32(termios.c_oflag||0);HEAP32[argp+8>>2]=termios.c_cflag||0;checkInt32(termios.c_cflag||0);HEAP32[argp+12>>2]=termios.c_lflag||0;checkInt32(termios.c_lflag||0);for(var i=0;i<32;i++){HEAP8[argp+i+17]=termios.c_cc[i]||0;checkInt8(termios.c_cc[i]||0)}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>2];var c_oflag=HEAP32[argp+4>>2];var c_cflag=HEAP32[argp+8>>2];var c_lflag=HEAP32[argp+12>>2];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=syscallGetVarargP();HEAP32[argp>>2]=0;checkInt32(0);return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21537:case 21531:{var argp=syscallGetVarargP();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=syscallGetVarargP();HEAP16[argp>>1]=winsize[0];checkInt16(winsize[0]);HEAP16[argp+2>>1]=winsize[1];checkInt16(winsize[1])}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{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.writeStat(buf,FS.lstat(path))}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);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;assert(!flags,`unknown flags in __syscall_newfstatat: ${flags}`);path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.writeStat(buf,nofollow?FS.lstat(path):FS.stat(path))}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?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen);assert(!errno)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}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_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);if(!addr){return FS.write(sock.stream,HEAP8,message,length)}var dest=getSocketAddress(addr,addr_len);return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);assert(sock.stream.fd<64);return sock.stream.fd}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.writeStat(buf,FS.stat(path))}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){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{return-28}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var __abort_js=()=>abort("native code called abort()");var __emscripten_lookup_name=name=>{var nameString=UTF8ToString(name);return inetPton4(DNS.lookup_name(nameString))};var __emscripten_throw_longjmp=()=>{throw Infinity};var __tzset_js=(timezone,daylight,std_name,dst_name)=>{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);checkInt32(Number(winterOffset!=summerOffset));var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);assert(winterName);assert(summerName);assert(lengthBytesUTF8(winterName)<=16,`timezone name truncated to fit in TZNAME_MAX (${winterName})`);assert(lengthBytesUTF8(summerName)<=16,`timezone name truncated to fit in TZNAME_MAX (${summerName})`);if(summerOffset{MainLoop.timingMode=mode;MainLoop.timingValue=value;if(!MainLoop.func){err("emscripten_set_main_loop_timing: Cannot set timing mode for main loop since a main loop does not exist! Call emscripten_set_main_loop first to set one up.");return 1}if(!MainLoop.running){MainLoop.running=true}if(mode==0){MainLoop.scheduler=function MainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,MainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(MainLoop.runner,timeUntilNextTick)}}else if(mode==1){MainLoop.scheduler=function MainLoop_scheduler_rAF(){MainLoop.requestAnimationFrame(MainLoop.runner)}}else{assert(mode==2);if(!MainLoop.setImmediate){if(globalThis.setImmediate){MainLoop.setImmediate=setImmediate}else{var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var MainLoop_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",MainLoop_setImmediate_messageHandler,true);MainLoop.setImmediate=func=>{setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){Module["setImmediates"]??=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}}MainLoop.scheduler=function MainLoop_scheduler_setImmediate(){MainLoop.setImmediate(MainLoop.runner)}}return 0};var _emscripten_get_now=()=>performance.now();var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;checkUnflushedContent();if(keepRuntimeAlive()&&!implicit){var msg=`program exited (with status: ${status}), but keepRuntimeAlive() is set (counter=${runtimeKeepaliveCounter}) due to an async operation, so halting execution but not exiting the runtime or preventing further async execution (you can use emscripten_force_exit, if you want to force a true shutdown)`;err(msg)}_proc_exit(status)};var _exit=exitJS;var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}checkStackCookie();if(e instanceof WebAssembly.RuntimeError){if(_emscripten_stack_get_current()<=0){err("Stack overflow detected. You can try increasing -sSTACK_SIZE (currently set to 65536)")}}quit_(1,e)};var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var setMainLoop=(iterFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{assert(!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.");MainLoop.func=iterFunc;MainLoop.arg=arg;var thisMainLoopId=MainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=MainLoop.queue.shift();blocker.func(blocker.arg);if(MainLoop.remainingBlockers){var remaining=MainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){MainLoop.remainingBlockers=next}else{next=next+.5;MainLoop.remainingBlockers=(8*remaining+next)/9}}MainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(MainLoop.runner,0);return}if(!checkIsRunning())return;MainLoop.currentFrameNumber=MainLoop.currentFrameNumber+1|0;if(MainLoop.timingMode==1&&MainLoop.timingValue>1&&MainLoop.currentFrameNumber%MainLoop.timingValue!=0){MainLoop.scheduler();return}else if(MainLoop.timingMode==0){MainLoop.tickStartTime=_emscripten_get_now();if(Module["ctx"]){warnOnce("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!")}}MainLoop.runIter(iterFunc);if(!checkIsRunning())return;MainLoop.scheduler()};if(!noSetTiming){if(fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}MainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var callUserCallback=func=>{if(ABORT){err("user callback triggered after runtime exited or application aborted. Ignoring.");return}try{return func()}catch(e){handleException(e)}finally{maybeExit()}};var MainLoop={running:false,scheduler:null,currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],preMainLoop:[],postMainLoop:[],pause(){MainLoop.scheduler=null;MainLoop.currentlyRunningMainloop++},resume(){MainLoop.currentlyRunningMainloop++;var timingMode=MainLoop.timingMode;var timingValue=MainLoop.timingValue;var func=MainLoop.func;MainLoop.func=null;setMainLoop(func,0,false,MainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);MainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=MainLoop.remainingBlockers??0;var expected=MainLoop.expectedBlockers??0;if(remaining){if(remaining=MainLoop.nextRAF){MainLoop.nextRAF+=1e3/60}}var delay=Math.max(MainLoop.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(globalThis.requestAnimationFrame){requestAnimationFrame(func)}else{MainLoop.fakeRequestAnimationFrame(func)}}};var AL={QUEUE_INTERVAL:25,QUEUE_LOOKAHEAD:.1,DEVICE_NAME:"Emscripten OpenAL",CAPTURE_DEVICE_NAME:"Emscripten OpenAL capture",ALC_EXTENSIONS:{ALC_EXT_capture:true,ALC_SOFT_pause_device:true,ALC_SOFT_HRTF:true},AL_EXTENSIONS:{AL_EXT_float32:true,AL_SOFT_loop_points:true,AL_SOFT_source_length:true,AL_EXT_source_distance_model:true,AL_SOFT_source_spatialize:true},_alcErr:0,alcErr:0,deviceRefCounts:{},alcStringCache:{},paused:false,stringCache:{},contexts:{},currentCtx:null,buffers:{0:{id:0,refCount:0,audioBuf:null,frequency:0,bytesPerSample:2,channels:1,length:0}},paramArray:[],_nextId:1,newId:()=>AL.freeIds.length>0?AL.freeIds.pop():AL._nextId++,freeIds:[],scheduleContextAudio:ctx=>{if(MainLoop.timingMode===1&&document["visibilityState"]!="visible"){return}for(var i in ctx.sources){AL.scheduleSourceAudio(ctx.sources[i])}},scheduleSourceAudio:(src,lookahead)=>{if(MainLoop.timingMode===1&&document["visibilityState"]!="visible"){return}if(src.state!==4114){return}var currentTime=AL.updateSourceTime(src);var startTime=src.bufStartTime;var startOffset=src.bufOffset;var bufCursor=src.bufsProcessed;for(var i=0;i=src.bufQueue.length){if(src.looping){bufCursor%=src.bufQueue.length}else{break}}var buf=src.bufQueue[bufCursor%src.bufQueue.length];if(buf.length===0){skipCount++;if(skipCount===src.bufQueue.length){break}}else{var audioSrc=src.context.audioCtx.createBufferSource();audioSrc.buffer=buf.audioBuf;audioSrc.playbackRate.value=src.playbackRate;if(buf.audioBuf._loopStart||buf.audioBuf._loopEnd){audioSrc.loopStart=buf.audioBuf._loopStart;audioSrc.loopEnd=buf.audioBuf._loopEnd}var duration=0;if(src.type===4136&&src.looping){duration=Number.POSITIVE_INFINITY;audioSrc.loop=true;if(buf.audioBuf._loopStart){audioSrc.loopStart=buf.audioBuf._loopStart}if(buf.audioBuf._loopEnd){audioSrc.loopEnd=buf.audioBuf._loopEnd}}else{duration=(buf.audioBuf.duration-startOffset)/src.playbackRate}audioSrc._startOffset=startOffset;audioSrc._duration=duration;audioSrc._skipCount=skipCount;skipCount=0;audioSrc.connect(src.gain);if(typeof audioSrc.start!="undefined"){startTime=Math.max(startTime,src.context.audioCtx.currentTime);audioSrc.start(startTime,startOffset)}else if(typeof audioSrc.noteOn!="undefined"){startTime=Math.max(startTime,src.context.audioCtx.currentTime);audioSrc.noteOn(startTime)}audioSrc._startTime=startTime;src.audioQueue.push(audioSrc);startTime+=duration}startOffset=0;bufCursor++}},updateSourceTime:src=>{var currentTime=src.context.audioCtx.currentTime;if(src.state!==4114){return currentTime}if(!isFinite(src.bufStartTime)){src.bufStartTime=currentTime-src.bufOffset/src.playbackRate;src.bufOffset=0}var nextStartTime=0;while(src.audioQueue.length){var audioSrc=src.audioQueue[0];src.bufsProcessed+=audioSrc._skipCount;nextStartTime=audioSrc._startTime+audioSrc._duration;if(currentTime=src.bufQueue.length&&!src.looping){AL.setSourceState(src,4116)}else if(src.type===4136&&src.looping){var buf=src.bufQueue[0];if(buf.length===0){src.bufOffset=0}else{var delta=(currentTime-src.bufStartTime)*src.playbackRate;var loopStart=buf.audioBuf._loopStart||0;var loopEnd=buf.audioBuf._loopEnd||buf.audioBuf.duration;if(loopEnd<=loopStart){loopEnd=buf.audioBuf.duration}if(delta0){src.bufStartTime+=Math.floor((currentTime-src.bufStartTime)/srcDuration)*srcDuration}}for(var i=0;i=src.bufQueue.length){if(src.looping){src.bufsProcessed%=src.bufQueue.length}else{AL.setSourceState(src,4116);break}}var buf=src.bufQueue[src.bufsProcessed];if(buf.length>0){nextStartTime=src.bufStartTime+buf.audioBuf.duration/src.playbackRate;if(currentTime{AL.updateSourceTime(src);for(var i=1;i1){src.audioQueue.length=1}},stopSourceAudio:src=>{for(var i=0;i{if(state===4114){if(src.state===4114||src.state==4116){src.bufsProcessed=0;src.bufOffset=0}else{}AL.stopSourceAudio(src);src.state=4114;src.bufStartTime=Number.NEGATIVE_INFINITY;AL.scheduleSourceAudio(src)}else if(state===4115){if(src.state===4114){AL.updateSourceTime(src);AL.stopSourceAudio(src);src.state=4115}}else if(state===4116){if(src.state!==4113){src.state=4116;src.bufsProcessed=src.bufQueue.length;src.bufStartTime=Number.NEGATIVE_INFINITY;src.bufOffset=0;AL.stopSourceAudio(src)}}else if(state===4113){if(src.state!==4113){src.state=4113;src.bufsProcessed=0;src.bufStartTime=Number.NEGATIVE_INFINITY;src.bufOffset=0;AL.stopSourceAudio(src)}}},initSourcePanner:src=>{if(src.type===4144){return}var templateBuf=AL.buffers[0];for(var i=0;i{for(var i in ctx.sources){AL.updateSourceGlobal(ctx.sources[i])}},updateSourceGlobal:src=>{var panner=src.panner;if(!panner){return}panner.refDistance=src.refDistance;panner.maxDistance=src.maxDistance;panner.rolloffFactor=src.rolloffFactor;panner.panningModel=src.context.hrtf?"HRTF":"equalpower";var distanceModel=src.context.sourceDistanceModel?src.distanceModel:src.context.distanceModel;switch(distanceModel){case 0:panner.distanceModel="inverse";panner.refDistance=340282e33;break;case 53249:case 53250:panner.distanceModel="inverse";break;case 53251:case 53252:panner.distanceModel="linear";break;case 53253:case 53254:panner.distanceModel="exponential";break}},updateListenerSpace:ctx=>{var listener=ctx.audioCtx.listener;if(listener.positionX){listener.positionX.value=ctx.listener.position[0];listener.positionY.value=ctx.listener.position[1];listener.positionZ.value=ctx.listener.position[2]}else{listener.setPosition(ctx.listener.position[0],ctx.listener.position[1],ctx.listener.position[2])}if(listener.forwardX){listener.forwardX.value=ctx.listener.direction[0];listener.forwardY.value=ctx.listener.direction[1];listener.forwardZ.value=ctx.listener.direction[2];listener.upX.value=ctx.listener.up[0];listener.upY.value=ctx.listener.up[1];listener.upZ.value=ctx.listener.up[2]}else{listener.setOrientation(ctx.listener.direction[0],ctx.listener.direction[1],ctx.listener.direction[2],ctx.listener.up[0],ctx.listener.up[1],ctx.listener.up[2])}for(var i in ctx.sources){AL.updateSourceSpace(ctx.sources[i])}},updateSourceSpace:src=>{if(!src.panner){return}var panner=src.panner;var posX=src.position[0];var posY=src.position[1];var posZ=src.position[2];var dirX=src.direction[0];var dirY=src.direction[1];var dirZ=src.direction[2];var listener=src.context.listener;var lPosX=listener.position[0];var lPosY=listener.position[1];var lPosZ=listener.position[2];if(src.relative){var lBackX=-listener.direction[0];var lBackY=-listener.direction[1];var lBackZ=-listener.direction[2];var lUpX=listener.up[0];var lUpY=listener.up[1];var lUpZ=listener.up[2];var inverseMagnitude=(x,y,z)=>{var length=Math.sqrt(x*x+y*y+z*z);if(length{if(src.state===4114){AL.cancelPendingSourceAudio(src);var audioSrc=src.audioQueue[0];if(!audioSrc){return}var duration;if(src.type===4136&&src.looping){duration=Number.POSITIVE_INFINITY}else{duration=(audioSrc.buffer.duration-audioSrc._startOffset)/src.playbackRate}audioSrc._duration=duration;audioSrc.playbackRate.value=src.playbackRate;AL.scheduleSourceAudio(src)}},sourceDuration:src=>{var length=0;for(var i=0;i{AL.updateSourceTime(src);var offset=0;for(var i=0;i{var playing=src.state==4114;if(playing){AL.setSourceState(src,4113)}if(src.bufQueue[src.bufsProcessed].audioBuf!==null){src.bufsProcessed=0;while(offset>src.bufQueue[src.bufsProcessed].audioBuf.duration){offset-=src.bufQueue[src.bufsProcessed].audioBuf.duration;src.bufsProcessed++}src.bufOffset=offset}if(playing){AL.setSourceState(src,4114)}},getGlobalParam:(funcname,param)=>{if(!AL.currentCtx){return null}switch(param){case 49152:return AL.currentCtx.dopplerFactor;case 49155:return AL.currentCtx.speedOfSound;case 53248:return AL.currentCtx.distanceModel;default:AL.currentCtx.err=40962;return null}},setGlobalParam:(funcname,param,value)=>{if(!AL.currentCtx){return}switch(param){case 49152:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}AL.currentCtx.dopplerFactor=value;AL.updateListenerSpace(AL.currentCtx);break;case 49155:if(!Number.isFinite(value)||value<=0){AL.currentCtx.err=40963;return}AL.currentCtx.speedOfSound=value;AL.updateListenerSpace(AL.currentCtx);break;case 53248:switch(value){case 0:case 53249:case 53250:case 53251:case 53252:case 53253:case 53254:AL.currentCtx.distanceModel=value;AL.updateContextGlobal(AL.currentCtx);break;default:AL.currentCtx.err=40963;return}break;default:AL.currentCtx.err=40962;return}},getListenerParam:(funcname,param)=>{if(!AL.currentCtx){return null}switch(param){case 4100:return AL.currentCtx.listener.position;case 4102:return AL.currentCtx.listener.velocity;case 4111:return AL.currentCtx.listener.direction.concat(AL.currentCtx.listener.up);case 4106:return AL.currentCtx.gain.gain.value;default:AL.currentCtx.err=40962;return null}},setListenerParam:(funcname,param,value)=>{if(!AL.currentCtx){return}if(value===null){AL.currentCtx.err=40962;return}var listener=AL.currentCtx.listener;switch(param){case 4100:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}listener.position[0]=value[0];listener.position[1]=value[1];listener.position[2]=value[2];AL.updateListenerSpace(AL.currentCtx);break;case 4102:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}listener.velocity[0]=value[0];listener.velocity[1]=value[1];listener.velocity[2]=value[2];AL.updateListenerSpace(AL.currentCtx);break;case 4106:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}AL.currentCtx.gain.gain.value=value;break;case 4111:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])||!Number.isFinite(value[3])||!Number.isFinite(value[4])||!Number.isFinite(value[5])){AL.currentCtx.err=40963;return}listener.direction[0]=value[0];listener.direction[1]=value[1];listener.direction[2]=value[2];listener.up[0]=value[3];listener.up[1]=value[4];listener.up[2]=value[5];AL.updateListenerSpace(AL.currentCtx);break;default:AL.currentCtx.err=40962;return}},getBufferParam:(funcname,bufferId,param)=>{if(!AL.currentCtx){return}var buf=AL.buffers[bufferId];if(!buf||bufferId===0){AL.currentCtx.err=40961;return}switch(param){case 8193:return buf.frequency;case 8194:return buf.bytesPerSample*8;case 8195:return buf.channels;case 8196:return buf.length*buf.bytesPerSample*buf.channels;case 8213:if(buf.length===0){return[0,0]}return[(buf.audioBuf._loopStart||0)*buf.frequency,(buf.audioBuf._loopEnd||buf.length)*buf.frequency];default:AL.currentCtx.err=40962;return null}},setBufferParam:(funcname,bufferId,param,value)=>{if(!AL.currentCtx){return}var buf=AL.buffers[bufferId];if(!buf||bufferId===0){AL.currentCtx.err=40961;return}if(value===null){AL.currentCtx.err=40962;return}switch(param){case 8196:if(value!==0){AL.currentCtx.err=40963;return}break;case 8213:if(value[0]<0||value[0]>buf.length||value[1]<0||value[1]>buf.Length||value[0]>=value[1]){AL.currentCtx.err=40963;return}if(buf.refCount>0){AL.currentCtx.err=40964;return}if(buf.audioBuf){buf.audioBuf._loopStart=value[0]/buf.frequency;buf.audioBuf._loopEnd=value[1]/buf.frequency}break;default:AL.currentCtx.err=40962;return}},getSourceParam:(funcname,sourceId,param)=>{if(!AL.currentCtx){return null}var src=AL.currentCtx.sources[sourceId];if(!src){AL.currentCtx.err=40961;return null}switch(param){case 514:return src.relative;case 4097:return src.coneInnerAngle;case 4098:return src.coneOuterAngle;case 4099:return src.pitch;case 4100:return src.position;case 4101:return src.direction;case 4102:return src.velocity;case 4103:return src.looping;case 4105:if(src.type===4136){return src.bufQueue[0].id}return 0;case 4106:return src.gain.gain.value;case 4109:return src.minGain;case 4110:return src.maxGain;case 4112:return src.state;case 4117:if(src.bufQueue.length===1&&src.bufQueue[0].id===0){return 0}return src.bufQueue.length;case 4118:if(src.bufQueue.length===1&&src.bufQueue[0].id===0||src.looping){return 0}return src.bufsProcessed;case 4128:return src.refDistance;case 4129:return src.rolloffFactor;case 4130:return src.coneOuterGain;case 4131:return src.maxDistance;case 4132:return AL.sourceTell(src);case 4133:var offset=AL.sourceTell(src);if(offset>0){offset*=src.bufQueue[0].frequency}return offset;case 4134:var offset=AL.sourceTell(src);if(offset>0){offset*=src.bufQueue[0].frequency*src.bufQueue[0].bytesPerSample}return offset;case 4135:return src.type;case 4628:return src.spatialize;case 8201:var length=0;var bytesPerFrame=0;for(var i=0;i{if(!AL.currentCtx){return}var src=AL.currentCtx.sources[sourceId];if(!src){AL.currentCtx.err=40961;return}if(value===null){AL.currentCtx.err=40962;return}switch(param){case 514:if(value===1){src.relative=true;AL.updateSourceSpace(src)}else if(value===0){src.relative=false;AL.updateSourceSpace(src)}else{AL.currentCtx.err=40963;return}break;case 4097:if(!Number.isFinite(value)){AL.currentCtx.err=40963;return}src.coneInnerAngle=value;if(src.panner){src.panner.coneInnerAngle=value%360}break;case 4098:if(!Number.isFinite(value)){AL.currentCtx.err=40963;return}src.coneOuterAngle=value;if(src.panner){src.panner.coneOuterAngle=value%360}break;case 4099:if(!Number.isFinite(value)||value<=0){AL.currentCtx.err=40963;return}if(src.pitch===value){break}src.pitch=value;AL.updateSourceRate(src);break;case 4100:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}src.position[0]=value[0];src.position[1]=value[1];src.position[2]=value[2];AL.updateSourceSpace(src);break;case 4101:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}src.direction[0]=value[0];src.direction[1]=value[1];src.direction[2]=value[2];AL.updateSourceSpace(src);break;case 4102:if(!Number.isFinite(value[0])||!Number.isFinite(value[1])||!Number.isFinite(value[2])){AL.currentCtx.err=40963;return}src.velocity[0]=value[0];src.velocity[1]=value[1];src.velocity[2]=value[2];AL.updateSourceSpace(src);break;case 4103:if(value===1){src.looping=true;AL.updateSourceTime(src);if(src.type===4136&&src.audioQueue.length>0){var audioSrc=src.audioQueue[0];audioSrc.loop=true;audioSrc._duration=Number.POSITIVE_INFINITY}}else if(value===0){src.looping=false;var currentTime=AL.updateSourceTime(src);if(src.type===4136&&src.audioQueue.length>0){var audioSrc=src.audioQueue[0];audioSrc.loop=false;audioSrc._duration=src.bufQueue[0].audioBuf.duration/src.playbackRate;audioSrc._startTime=currentTime-src.bufOffset/src.playbackRate}}else{AL.currentCtx.err=40963;return}break;case 4105:if(src.state===4114||src.state===4115){AL.currentCtx.err=40964;return}if(value===0){for(var i in src.bufQueue){src.bufQueue[i].refCount--}src.bufQueue.length=1;src.bufQueue[0]=AL.buffers[0];src.bufsProcessed=0;src.type=4144}else{var buf=AL.buffers[value];if(!buf){AL.currentCtx.err=40963;return}for(var i in src.bufQueue){src.bufQueue[i].refCount--}src.bufQueue.length=0;buf.refCount++;src.bufQueue=[buf];src.bufsProcessed=0;src.type=4136}AL.initSourcePanner(src);AL.scheduleSourceAudio(src);break;case 4106:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.gain.gain.value=value;break;case 4109:if(!Number.isFinite(value)||value<0||value>Math.min(src.maxGain,1)){AL.currentCtx.err=40963;return}src.minGain=value;break;case 4110:if(!Number.isFinite(value)||value1){AL.currentCtx.err=40963;return}src.maxGain=value;break;case 4128:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.refDistance=value;if(src.panner){src.panner.refDistance=value}break;case 4129:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.rolloffFactor=value;if(src.panner){src.panner.rolloffFactor=value}break;case 4130:if(!Number.isFinite(value)||value<0||value>1){AL.currentCtx.err=40963;return}src.coneOuterGain=value;if(src.panner){src.panner.coneOuterGain=value}break;case 4131:if(!Number.isFinite(value)||value<0){AL.currentCtx.err=40963;return}src.maxDistance=value;if(src.panner){src.panner.maxDistance=value}break;case 4132:if(value<0||value>AL.sourceDuration(src)){AL.currentCtx.err=40963;return}AL.sourceSeek(src,value);break;case 4133:var srcLen=AL.sourceDuration(src);if(srcLen>0){var frequency;for(var bufId in src.bufQueue){if(bufId){frequency=src.bufQueue[bufId].frequency;break}}value/=frequency}if(value<0||value>srcLen){AL.currentCtx.err=40963;return}AL.sourceSeek(src,value);break;case 4134:var srcLen=AL.sourceDuration(src);if(srcLen>0){var bytesPerSec;for(var bufId in src.bufQueue){if(bufId){var buf=src.bufQueue[bufId];bytesPerSec=buf.frequency*buf.bytesPerSample*buf.channels;break}}value/=bytesPerSec}if(value<0||value>srcLen){AL.currentCtx.err=40963;return}AL.sourceSeek(src,value);break;case 4628:if(value!==0&&value!==1&&value!==2){AL.currentCtx.err=40963;return}src.spatialize=value;AL.initSourcePanner(src);break;case 8201:case 8202:case 8203:AL.currentCtx.err=40964;break;case 53248:switch(value){case 0:case 53249:case 53250:case 53251:case 53252:case 53253:case 53254:src.distanceModel=value;if(AL.currentCtx.sourceDistanceModel){AL.updateContextGlobal(AL.currentCtx)}break;default:AL.currentCtx.err=40963;return}break;default:AL.currentCtx.err=40962;return}},captures:{},sharedCaptureAudioCtx:null,requireValidCaptureDevice:(deviceId,funcname)=>{if(deviceId===0){AL.alcErr=40961;return null}var c=AL.captures[deviceId];if(!c){AL.alcErr=40961;return null}var err=c.mediaStreamError;if(err){AL.alcErr=40961;return null}return c}};var _alBufferData=(bufferId,format,pData,size,freq)=>{if(!AL.currentCtx){return}var buf=AL.buffers[bufferId];if(!buf){AL.currentCtx.err=40963;return}if(freq<=0){AL.currentCtx.err=40963;return}var audioBuf=null;try{switch(format){case 4352:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(1,size,freq);var channel0=audioBuf.getChannelData(0);for(var i=0;i0){audioBuf=AL.currentCtx.audioCtx.createBuffer(1,size>>1,freq);var channel0=audioBuf.getChannelData(0);pData>>=1;for(var i=0;i>1;++i){channel0[i]=HEAP16[pData++]*30517578125e-15}}buf.bytesPerSample=2;buf.channels=1;buf.length=size>>1;break;case 4354:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(2,size>>1,freq);var channel0=audioBuf.getChannelData(0);var channel1=audioBuf.getChannelData(1);for(var i=0;i>1;++i){channel0[i]=HEAPU8[pData++]*.0078125-1;channel1[i]=HEAPU8[pData++]*.0078125-1}}buf.bytesPerSample=1;buf.channels=2;buf.length=size>>1;break;case 4355:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(2,size>>2,freq);var channel0=audioBuf.getChannelData(0);var channel1=audioBuf.getChannelData(1);pData>>=1;for(var i=0;i>2;++i){channel0[i]=HEAP16[pData++]*30517578125e-15;channel1[i]=HEAP16[pData++]*30517578125e-15}}buf.bytesPerSample=2;buf.channels=2;buf.length=size>>2;break;case 65552:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(1,size>>2,freq);var channel0=audioBuf.getChannelData(0);pData>>=2;for(var i=0;i>2;++i){channel0[i]=HEAPF32[pData++]}}buf.bytesPerSample=4;buf.channels=1;buf.length=size>>2;break;case 65553:if(size>0){audioBuf=AL.currentCtx.audioCtx.createBuffer(2,size>>3,freq);var channel0=audioBuf.getChannelData(0);var channel1=audioBuf.getChannelData(1);pData>>=2;for(var i=0;i>3;++i){channel0[i]=HEAPF32[pData++];channel1[i]=HEAPF32[pData++]}}buf.bytesPerSample=4;buf.channels=2;buf.length=size>>3;break;default:AL.currentCtx.err=40963;return}buf.frequency=freq;buf.audioBuf=audioBuf}catch(e){AL.currentCtx.err=40963;return}};var _alDeleteBuffers=(count,pBufferIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2];if(bufId===0){continue}if(!AL.buffers[bufId]){AL.currentCtx.err=40961;return}if(AL.buffers[bufId].refCount){AL.currentCtx.err=40964;return}}for(var i=0;i>2];if(bufId===0){continue}AL.deviceRefCounts[AL.buffers[bufId].deviceId]--;delete AL.buffers[bufId];AL.freeIds.push(bufId)}};var _alSourcei=(sourceId,param,value)=>{switch(param){case 514:case 4097:case 4098:case 4103:case 4105:case 4128:case 4129:case 4131:case 4132:case 4133:case 4134:case 4628:case 8201:case 8202:case 53248:AL.setSourceParam("alSourcei",sourceId,param,value);break;default:AL.setSourceParam("alSourcei",sourceId,param,null);break}};var _alDeleteSources=(count,pSourceIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2];if(!AL.currentCtx.sources[srcId]){AL.currentCtx.err=40961;return}}for(var i=0;i>2];AL.setSourceState(AL.currentCtx.sources[srcId],4116);_alSourcei(srcId,4105,0);delete AL.currentCtx.sources[srcId];AL.freeIds.push(srcId)}};var _alDistanceModel=model=>{AL.setGlobalParam("alDistanceModel",53248,model)};var _alGenBuffers=(count,pBufferIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2]=buf.id;checkInt32(buf.id)}};var _alGenSources=(count,pSourceIds)=>{if(!AL.currentCtx){return}for(var i=0;i>2]=src.id;checkInt32(src.id)}};var _alGetError=()=>{if(!AL.currentCtx){return 40964}var err=AL.currentCtx.err;AL.currentCtx.err=0;return err};var _alGetSourcei=(sourceId,param,pValue)=>{var val=AL.getSourceParam("alGetSourcei",sourceId,param);if(val===null){return}if(!pValue){AL.currentCtx.err=40963;return}switch(param){case 514:case 4097:case 4098:case 4103:case 4105:case 4112:case 4117:case 4118:case 4128:case 4129:case 4131:case 4132:case 4133:case 4134:case 4135:case 4628:case 8201:case 8202:case 53248:HEAP32[pValue>>2]=val;checkInt32(val);break;default:AL.currentCtx.err=40962;return}};var _alListenerfv=(param,pValues)=>{if(!AL.currentCtx){return}if(!pValues){AL.currentCtx.err=40963;return}switch(param){case 4100:case 4102:AL.paramArray[0]=HEAPF32[pValues>>2];AL.paramArray[1]=HEAPF32[pValues+4>>2];AL.paramArray[2]=HEAPF32[pValues+8>>2];AL.setListenerParam("alListenerfv",param,AL.paramArray);break;case 4111:AL.paramArray[0]=HEAPF32[pValues>>2];AL.paramArray[1]=HEAPF32[pValues+4>>2];AL.paramArray[2]=HEAPF32[pValues+8>>2];AL.paramArray[3]=HEAPF32[pValues+12>>2];AL.paramArray[4]=HEAPF32[pValues+16>>2];AL.paramArray[5]=HEAPF32[pValues+20>>2];AL.setListenerParam("alListenerfv",param,AL.paramArray);break;default:AL.setListenerParam("alListenerfv",param,null);break}};var _alSource3f=(sourceId,param,value0,value1,value2)=>{switch(param){case 4100:case 4101:case 4102:AL.paramArray[0]=value0;AL.paramArray[1]=value1;AL.paramArray[2]=value2;AL.setSourceParam("alSource3f",sourceId,param,AL.paramArray);break;default:AL.setSourceParam("alSource3f",sourceId,param,null);break}};var _alSourcePlay=sourceId=>{if(!AL.currentCtx){return}var src=AL.currentCtx.sources[sourceId];if(!src){AL.currentCtx.err=40961;return}AL.setSourceState(src,4114)};var _alSourcef=(sourceId,param,value)=>{switch(param){case 4097:case 4098:case 4099:case 4106:case 4109:case 4110:case 4128:case 4129:case 4130:case 4131:case 4132:case 4133:case 4134:case 8203:AL.setSourceParam("alSourcef",sourceId,param,value);break;default:AL.setSourceParam("alSourcef",sourceId,param,null);break}};var _alcCloseDevice=deviceId=>{if(!(deviceId in AL.deviceRefCounts)||AL.deviceRefCounts[deviceId]>0){return 0}delete AL.deviceRefCounts[deviceId];AL.freeIds.push(deviceId);return 1};var autoResumeAudioContext=ctx=>{for(var event of["keydown","mousedown","touchstart"]){for(var element of[document,document.getElementById("canvas")]){element?.addEventListener(event,()=>{if(ctx.state==="suspended")ctx.resume()},{once:true})}}};var _alcCreateContext=(deviceId,pAttrList)=>{if(!(deviceId in AL.deviceRefCounts)){AL.alcErr=40961;return 0}var options=null;var attrs=[];var hrtf=null;pAttrList>>=2;if(pAttrList){var attr=0;var val=0;while(true){attr=HEAP32[pAttrList++];attrs.push(attr);if(attr===0){break}val=HEAP32[pAttrList++];attrs.push(val);switch(attr){case 4103:if(!options){options={}}options.sampleRate=val;break;case 4112:case 4113:break;case 6546:switch(val){case 0:hrtf=false;break;case 1:hrtf=true;break;case 2:break;default:AL.alcErr=40964;return 0}break;case 6550:if(val!==0){AL.alcErr=40964;return 0}break;default:AL.alcErr=40964;return 0}}}var AudioContext=window.AudioContext||window.webkitAudioContext;var ac=null;try{if(options){ac=new AudioContext(options)}else{ac=new AudioContext}}catch(e){if(e.name==="NotSupportedError"){AL.alcErr=40964}else{AL.alcErr=40961}return 0}autoResumeAudioContext(ac);if(typeof ac.createGain=="undefined"){ac.createGain=ac.createGainNode}var gain=ac.createGain();gain.connect(ac.destination);var ctx={deviceId,id:AL.newId(),attrs,audioCtx:ac,listener:{position:[0,0,0],velocity:[0,0,0],direction:[0,0,0],up:[0,0,0]},sources:[],interval:setInterval(()=>AL.scheduleContextAudio(ctx),AL.QUEUE_INTERVAL),gain,distanceModel:53250,speedOfSound:343.3,dopplerFactor:1,sourceDistanceModel:false,hrtf:hrtf||false,_err:0,get err(){return this._err},set err(val){if(this._err===0||val===0){this._err=val}}};AL.deviceRefCounts[deviceId]++;AL.contexts[ctx.id]=ctx;if(hrtf!==null){for(var ctxId in AL.contexts){var c=AL.contexts[ctxId];if(c.deviceId===deviceId){c.hrtf=hrtf;AL.updateContextGlobal(c)}}}return ctx.id};var _alcDestroyContext=contextId=>{var ctx=AL.contexts[contextId];if(AL.currentCtx===ctx){AL.alcErr=40962;return}if(AL.contexts[contextId].interval){clearInterval(AL.contexts[contextId].interval)}AL.deviceRefCounts[ctx.deviceId]--;delete AL.contexts[contextId];AL.freeIds.push(contextId)};var _alcMakeContextCurrent=contextId=>{if(contextId===0){AL.currentCtx=null}else{AL.currentCtx=AL.contexts[contextId]}return 1};var _alcOpenDevice=pDeviceName=>{if(pDeviceName){var name=UTF8ToString(pDeviceName);if(name!==AL.DEVICE_NAME){return 0}}if(globalThis.AudioContext||globalThis.webkitAudioContext){var deviceId=AL.newId();AL.deviceRefCounts[deviceId]=0;return deviceId}return 0};var _emscripten_date_now=()=>Date.now();var nowIsMonotonic=1;var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=_emscripten_date_now()}else if(nowIsMonotonic){now=_emscripten_get_now()}else{return 52}var nsec=Math.round(now*1e3*1e3);HEAP64[ptime>>3]=BigInt(nsec);checkInt64(nsec);return 0}function getFullscreenElement(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement||document.msFullscreenElement}var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var Browser={useWebGL:false,isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],preloadedImages:{},preloadedAudios:{},getCanvas:()=>Module["canvas"],init(){if(Browser.initted)return;Browser.initted=true;var imagePlugin={};imagePlugin["canHandle"]=name=>!Module["noImageDecoding"]&&/\.(jpg|jpeg|png|bmp|webp)$/i.test(name);imagePlugin["handle"]=async(byteArray,name)=>{var b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}var url=URL.createObjectURL(b);return new Promise((resolve,reject)=>{var img=new Image;img.onload=()=>{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);Browser.preloadedImages[name]=canvas;URL.revokeObjectURL(url);resolve(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);reject()};img.src=url})};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=name=>!Module["noAudioDecoding"]&&name.slice(-4)in{".ogg":1,".wav":1,".mp3":1};audioPlugin["handle"]=async(byteArray,name)=>new Promise((resolve,reject)=>{var done=false;function finish(audio){if(done)return;done=true;Browser.preloadedAudios[name]=audio;resolve(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=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.slice(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)});preloadPlugins.push(audioPlugin);function pointerLockChange(){var canvas=Browser.getCanvas();Browser.pointerLock=document.pointerLockElement===canvas}var canvas=Browser.getCanvas();if(canvas){document.addEventListener("pointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Browser.getCanvas().requestPointerLock){Browser.getCanvas().requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module["ctx"]&&canvas==Browser.getCanvas())return Module["ctx"];var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:typeof WebGL2RenderingContext!="undefined"?2:1};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);Browser.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(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=Browser.getCanvas();function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if(getFullscreenElement()===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)}}Module["onFullScreen"]?.(Browser.isFullscreen);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()},requestFullScreen(){abort("Module.requestFullScreen has been replaced by Module.requestFullscreen (without a capital S)")},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},getMimetype(name){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[name.slice(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(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:abort("unrecognized mouse wheel delta mode: "+event.deltaMode)}break;default:abort("unrecognized mouse wheel event: "+event.type)}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var canvas=Browser.getCanvas();var rect=canvas.getBoundingClientRect();var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;assert(typeof scrollX!="undefined"&&typeof scrollY!="undefined","Unable to retrieve scroll position, mouse positions likely broken.");var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(canvas.width/rect.width);adjustedY=adjustedY*(canvas.height/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x,y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(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)}Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);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];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Browser.getCanvas();Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Browser.getCanvas();Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags;checkInt32(flags)}Browser.updateCanvasDimensions(Browser.getCanvas());Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags;checkInt32(flags)}Browser.updateCanvasDimensions(Browser.getCanvas());Browser.updateResizeListeners()},updateCanvasDimensions(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"]>0){if(w/h>2];if(param==12321){var alphaSize=HEAP32[attribList+4>>2];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>2];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>2];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>2];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>2];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>2]=1;checkInt32(1)}if(config&&config_size>0){HEAPU32[config>>2]=62002}EGL.setErrorCode(12288);return 1}};var _eglBindAPI=api=>{if(api==12448){EGL.setErrorCode(12288);return 1}EGL.setErrorCode(12300);return 0};var _eglChooseConfig=(display,attrib_list,configs,config_size,numConfigs)=>EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs);var GLctx;var webgl_enable_ANGLE_instanced_arrays=ctx=>{var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=(index,divisor)=>ext["vertexAttribDivisorANGLE"](index,divisor);ctx["drawArraysInstanced"]=(mode,first,count,primcount)=>ext["drawArraysInstancedANGLE"](mode,first,count,primcount);ctx["drawElementsInstanced"]=(mode,count,type,indices,primcount)=>ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount);return 1}};var webgl_enable_OES_vertex_array_object=ctx=>{var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=()=>ext["createVertexArrayOES"]();ctx["deleteVertexArray"]=vao=>ext["deleteVertexArrayOES"](vao);ctx["bindVertexArray"]=vao=>ext["bindVertexArrayOES"](vao);ctx["isVertexArray"]=vao=>ext["isVertexArrayOES"](vao);return 1}};var webgl_enable_WEBGL_draw_buffers=ctx=>{var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=(n,bufs)=>ext["drawBuffersWEBGL"](n,bufs);return 1}};var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_EXT_polygon_offset_clamp=ctx=>!!(ctx.extPolygonOffsetClamp=ctx.getExtension("EXT_polygon_offset_clamp"));var webgl_enable_EXT_clip_control=ctx=>!!(ctx.extClipControl=ctx.getExtension("EXT_clip_control"));var webgl_enable_WEBGL_polygon_mode=ctx=>!!(ctx.webglPolygonMode=ctx.getExtension("WEBGL_polygon_mode"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["ANGLE_instanced_arrays","EXT_blend_minmax","EXT_disjoint_timer_query","EXT_frag_depth","EXT_shader_texture_lod","EXT_sRGB","OES_element_index_uint","OES_fbo_render_mipmap","OES_standard_derivatives","OES_texture_float","OES_texture_half_float","OES_texture_half_float_linear","OES_vertex_array_object","WEBGL_color_buffer_float","WEBGL_depth_texture","WEBGL_draw_buffers","EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_clip_control","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_polygon_offset_clamp","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw","WEBGL_polygon_mode"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var registerPreMainLoop=f=>{typeof MainLoop!="undefined"&&MainLoop.preMainLoop.push(f)};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],byteSizeByTypeRoot:5120,byteSizeByType:[1,1,2,2,4,4,4,2,3,4,8],stringCache:{},stringiCache:{},unpackAlignment:4,unpackRowLength:0,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>2]=id;checkInt32(id)}},MAX_TEMP_BUFFER_SIZE:2097152,numTempVertexBuffersPerSize:64,log2ceilLookup:i=>32-Math.clz32(i===0?0:i-1),generateTempBuffers:(quads,context)=>{var largestIndex=GL.log2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE);context.tempVertexBufferCounters1=[];context.tempVertexBufferCounters2=[];context.tempVertexBufferCounters1.length=context.tempVertexBufferCounters2.length=largestIndex+1;context.tempVertexBuffers1=[];context.tempVertexBuffers2=[];context.tempVertexBuffers1.length=context.tempVertexBuffers2.length=largestIndex+1;context.tempIndexBuffers=[];context.tempIndexBuffers.length=largestIndex+1;for(var i=0;i<=largestIndex;++i){context.tempIndexBuffers[i]=null;context.tempVertexBufferCounters1[i]=context.tempVertexBufferCounters2[i]=0;var ringbufferLength=GL.numTempVertexBuffersPerSize;context.tempVertexBuffers1[i]=[];context.tempVertexBuffers2[i]=[];var ringbuffer1=context.tempVertexBuffers1[i];var ringbuffer2=context.tempVertexBuffers2[i];ringbuffer1.length=ringbuffer2.length=ringbufferLength;for(var j=0;j>1;var quadIndexes=new Uint16Array(numIndexes);var i=0,v=0;while(1){quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+1;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v;if(i>=numIndexes)break;quadIndexes[i++]=v+2;if(i>=numIndexes)break;quadIndexes[i++]=v+3;if(i>=numIndexes)break;v+=4}context.GLctx.bufferData(34963,quadIndexes,35044);context.GLctx.bindBuffer(34963,null)}},getTempVertexBuffer:sizeBytes=>{var idx=GL.log2ceilLookup(sizeBytes);var ringbuffer=GL.currentContext.tempVertexBuffers1[idx];var nextFreeBufferIndex=GL.currentContext.tempVertexBufferCounters1[idx];GL.currentContext.tempVertexBufferCounters1[idx]=GL.currentContext.tempVertexBufferCounters1[idx]+1&GL.numTempVertexBuffersPerSize-1;var vbo=ringbuffer[nextFreeBufferIndex];if(vbo){return vbo}var prevVBO=GLctx.getParameter(34964);ringbuffer[nextFreeBufferIndex]=GLctx.createBuffer();GLctx.bindBuffer(34962,ringbuffer[nextFreeBufferIndex]);GLctx.bufferData(34962,1<{var idx=GL.log2ceilLookup(sizeBytes);var ibo=GL.currentContext.tempIndexBuffers[idx];if(ibo){return ibo}var prevIBO=GLctx.getParameter(34965);GL.currentContext.tempIndexBuffers[idx]=GLctx.createBuffer();GLctx.bindBuffer(34963,GL.currentContext.tempIndexBuffers[idx]);GLctx.bufferData(34963,1<{if(!GL.currentContext){return}var vb=GL.currentContext.tempVertexBuffers1;GL.currentContext.tempVertexBuffers1=GL.currentContext.tempVertexBuffers2;GL.currentContext.tempVertexBuffers2=vb;vb=GL.currentContext.tempVertexBufferCounters1;GL.currentContext.tempVertexBufferCounters1=GL.currentContext.tempVertexBufferCounters2;GL.currentContext.tempVertexBufferCounters2=vb;var largestIndex=GL.log2ceilLookup(GL.MAX_TEMP_BUFFER_SIZE);for(var i=0;i<=largestIndex;++i){GL.currentContext.tempVertexBufferCounters1[i]=0}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>2]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>2],len)}var type=GLctx.getShaderParameter(GL.shaders[shader],35663);if(type==35632){if(GLEmulation.findToken(source,"dFdx")||GLEmulation.findToken(source,"dFdy")||GLEmulation.findToken(source,"fwidth")){source="#extension GL_OES_standard_derivatives : enable\n"+source;var extension=GLctx.getExtension("OES_standard_derivatives")}}return source},createContext:(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=webGLContextAttributes.majorVersion>1?canvas.getContext("webgl2",webGLContextAttributes):canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={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:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module["ctx"]=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext: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]?.GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;context.compressionExt=GLctx.getExtension("WEBGL_compressed_texture_s3tc");context.anisotropicExt=GLctx.getExtension("EXT_texture_filter_anisotropic");webgl_enable_WEBGL_multi_draw(GLctx);webgl_enable_EXT_polygon_offset_clamp(GLctx);webgl_enable_EXT_clip_control(GLctx);webgl_enable_WEBGL_polygon_mode(GLctx);webgl_enable_ANGLE_instanced_arrays(GLctx);webgl_enable_OES_vertex_array_object(GLctx);webgl_enable_WEBGL_draw_buffers(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")}for(var ext of getEmscriptenSupportedExtensions(GLctx)){if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}}}};var _eglCreateContext=(display,config,hmm,contextAttribs)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>2];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>2]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Browser.getCanvas(),EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Browser.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}};var _eglCreateWindowSurface=(display,config,win,attrib_list)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006};var _eglDestroyContext=(display,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1};var _eglDestroySurface=(display,surface)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1};var _eglGetConfigAttrib=(display,config,attribute,value)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}if(!value){EGL.setErrorCode(12300);return 0}EGL.setErrorCode(12288);switch(attribute){case 12320:HEAP32[value>>2]=EGL.contextAttributes.alpha?32:24;checkInt32(EGL.contextAttributes.alpha?32:24);return 1;case 12321:HEAP32[value>>2]=EGL.contextAttributes.alpha?8:0;checkInt32(EGL.contextAttributes.alpha?8:0);return 1;case 12322:HEAP32[value>>2]=8;checkInt32(8);return 1;case 12323:HEAP32[value>>2]=8;checkInt32(8);return 1;case 12324:HEAP32[value>>2]=8;checkInt32(8);return 1;case 12325:HEAP32[value>>2]=EGL.contextAttributes.depth?24:0;checkInt32(EGL.contextAttributes.depth?24:0);return 1;case 12326:HEAP32[value>>2]=EGL.contextAttributes.stencil?8:0;checkInt32(EGL.contextAttributes.stencil?8:0);return 1;case 12327:HEAP32[value>>2]=12344;checkInt32(12344);return 1;case 12328:HEAP32[value>>2]=62002;checkInt32(62002);return 1;case 12329:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12330:HEAP32[value>>2]=4096;checkInt32(4096);return 1;case 12331:HEAP32[value>>2]=16777216;checkInt32(16777216);return 1;case 12332:HEAP32[value>>2]=4096;checkInt32(4096);return 1;case 12333:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12334:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12335:HEAP32[value>>2]=12344;checkInt32(12344);return 1;case 12337:HEAP32[value>>2]=EGL.contextAttributes.antialias?4:0;checkInt32(EGL.contextAttributes.antialias?4:0);return 1;case 12338:HEAP32[value>>2]=EGL.contextAttributes.antialias?1:0;checkInt32(EGL.contextAttributes.antialias?1:0);return 1;case 12339:HEAP32[value>>2]=4;checkInt32(4);return 1;case 12340:HEAP32[value>>2]=12344;checkInt32(12344);return 1;case 12341:case 12342:case 12343:HEAP32[value>>2]=-1;checkInt32(-1);return 1;case 12345:case 12346:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12347:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12348:HEAP32[value>>2]=1;checkInt32(1);return 1;case 12349:case 12350:HEAP32[value>>2]=0;checkInt32(0);return 1;case 12351:HEAP32[value>>2]=12430;checkInt32(12430);return 1;case 12352:HEAP32[value>>2]=4;checkInt32(4);return 1;case 12354:HEAP32[value>>2]=0;checkInt32(0);return 1;default:EGL.setErrorCode(12292);return 0}};var _eglGetDisplay=nativeDisplayType=>{EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3};var _eglGetError=()=>EGL.errorCode;var _eglInitialize=(display,majorVersion,minorVersion)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>2]=1;checkInt32(1)}if(minorVersion){HEAP32[minorVersion>>2]=4;checkInt32(4)}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1};var _eglMakeCurrent=(display,draw,read,context)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1};var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var _eglQueryString=(display,name)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.setErrorCode(12288);if(EGL.stringCache[name])return EGL.stringCache[name];var ret;switch(name){case 12371:ret=stringToNewUTF8("Emscripten");break;case 12372:ret=stringToNewUTF8("1.4 Emscripten EGL");break;case 12373:ret=stringToNewUTF8("");break;case 12429:ret=stringToNewUTF8("OpenGL_ES");break;default:EGL.setErrorCode(12300);return 0}EGL.stringCache[name]=ret;return ret};var _eglSwapBuffers=(dpy,surface)=>{if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!GLctx){EGL.setErrorCode(12290)}else if(GLctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0};var _eglSwapInterval=(display,interval)=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1};var _eglTerminate=display=>{if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1};var _eglWaitClient=()=>{EGL.setErrorCode(12288);return 1};var _eglWaitGL=_eglWaitClient;var _eglWaitNative=nativeEngineId=>{EGL.setErrorCode(12288);return 1};var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{assert(Array.isArray(readEmAsmArgsArray));assert(buf%16==0);readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++]){var chr=String.fromCharCode(ch);var validChars=["d","f","i","p"];validChars.push("j");assert(validChars.includes(chr),`Invalid character ${ch}("${chr}") in readEmAsmArgs! Use only [${validChars}], and do not specify "v" for void return argument.`);var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>2]:ch==106?HEAP64[buf>>3]:ch==105?HEAP32[buf>>2]:HEAPF64[buf>>3]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);assert(ASM_CONSTS.hasOwnProperty(code),`No EM_ASM constant found at address ${code}. The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);return ASM_CONSTS[code](...args)};var _emscripten_asm_const_double=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var _emscripten_asm_const_int=(code,sigPtr,argbuf)=>runEmAsmFunction(code,sigPtr,argbuf);var runMainThreadEmAsm=(emAsmAddr,sigPtr,argbuf,sync)=>{var args=readEmAsmArgs(sigPtr,argbuf);assert(ASM_CONSTS.hasOwnProperty(emAsmAddr),`No EM_ASM constant found at address ${emAsmAddr}. The loaded WebAssembly file is likely out of sync with the generated JavaScript.`);return ASM_CONSTS[emAsmAddr](...args)};var _emscripten_asm_const_int_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_asm_const_ptr_sync_on_main_thread=(emAsmAddr,sigPtr,argbuf)=>runMainThreadEmAsm(emAsmAddr,sigPtr,argbuf,1);var _emscripten_cancel_main_loop=()=>{MainLoop.pause();MainLoop.func=null};var _emscripten_err=str=>err(UTF8ToString(str));var onExits=[];var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(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 call of JSEvents.deferredCalls){if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction,precedence,argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedencecall.targetFunction!=targetFunction)},canPerformEventHandlerRequests(){if(navigator.userActivation){return navigator.userActivation.isActive}return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls(){if(!JSEvents.canPerformEventHandlerRequests()){return}var deferredCalls=JSEvents.deferredCalls;JSEvents.deferredCalls=[];for(var call of deferredCalls){call.targetFunction(...call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:(target,eventTypeString)=>{for(var i=0;icString>2?UTF8ToString(cString):cString;var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||globalThis.document?.querySelector(target);return domElement};var findCanvasEventTarget=findEventTarget;var _emscripten_get_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;HEAP32[width>>2]=canvas.width;checkInt32(canvas.width);HEAP32[height>>2]=canvas.height;checkInt32(canvas.height)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var getCanvasElementSize=target=>{var sp=stackSave();var w=stackAlloc(8);var h=w+4;var targetInt=stringToUTF8OnStack(target.id);var ret=_emscripten_get_canvas_element_size(targetInt,w,h);var size=[HEAP32[w>>2],HEAP32[h>>2]];stackRestore(sp);return size};var _emscripten_set_canvas_element_size=(target,width,height)=>{var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0};var setCanvasElementSize=(target,width,height)=>{if(!target.controlTransferredOffscreen){target.width=width;target.height=height}else{var sp=stackSave();var targetInt=stringToUTF8OnStack(target.id);_emscripten_set_canvas_element_size(targetInt,width,height);stackRestore(sp)}};var currentFullscreenStrategy={};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}assert(wasmTable.get(funcPtr)==func,"JavaScript-side Wasm function table mirror is out of date!");return func};var registerRestoreOldStyle=canvas=>{var canvasSize=getCanvasElementSize(canvas);var oldWidth=canvasSize[0];var oldHeight=canvasSize[1];var oldCssWidth=canvas.style.width;var oldCssHeight=canvas.style.height;var oldBackgroundColor=canvas.style.backgroundColor;var oldDocumentBackgroundColor=document.body.style.backgroundColor;var oldPaddingLeft=canvas.style.paddingLeft;var oldPaddingRight=canvas.style.paddingRight;var oldPaddingTop=canvas.style.paddingTop;var oldPaddingBottom=canvas.style.paddingBottom;var oldMarginLeft=canvas.style.marginLeft;var oldMarginRight=canvas.style.marginRight;var oldMarginTop=canvas.style.marginTop;var oldMarginBottom=canvas.style.marginBottom;var oldDocumentBodyMargin=document.body.style.margin;var oldDocumentOverflow=document.documentElement.style.overflow;var oldDocumentScroll=document.body.scroll;var oldImageRendering=canvas.style.imageRendering;function restoreOldStyle(){if(!getFullscreenElement()){document.removeEventListener("fullscreenchange",restoreOldStyle);document.removeEventListener("webkitfullscreenchange",restoreOldStyle);setCanvasElementSize(canvas,oldWidth,oldHeight);canvas.style.width=oldCssWidth;canvas.style.height=oldCssHeight;canvas.style.backgroundColor=oldBackgroundColor;if(!oldDocumentBackgroundColor)document.body.style.backgroundColor="white";document.body.style.backgroundColor=oldDocumentBackgroundColor;canvas.style.paddingLeft=oldPaddingLeft;canvas.style.paddingRight=oldPaddingRight;canvas.style.paddingTop=oldPaddingTop;canvas.style.paddingBottom=oldPaddingBottom;canvas.style.marginLeft=oldMarginLeft;canvas.style.marginRight=oldMarginRight;canvas.style.marginTop=oldMarginTop;canvas.style.marginBottom=oldMarginBottom;document.body.style.margin=oldDocumentBodyMargin;document.documentElement.style.overflow=oldDocumentOverflow;document.body.scroll=oldDocumentScroll;canvas.style.imageRendering=oldImageRendering;if(canvas.GLctxObject)canvas.GLctxObject.GLctx.viewport(0,0,oldWidth,oldHeight);if(currentFullscreenStrategy.canvasResizedCallback){getWasmTableEntry(currentFullscreenStrategy.canvasResizedCallback)(37,0,currentFullscreenStrategy.canvasResizedCallbackUserData)}}}document.addEventListener("fullscreenchange",restoreOldStyle);document.addEventListener("webkitfullscreenchange",restoreOldStyle);return restoreOldStyle};var setLetterbox=(element,topBottom,leftRight)=>{element.style.paddingLeft=element.style.paddingRight=leftRight+"px";element.style.paddingTop=element.style.paddingBottom=topBottom+"px"};var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{left:0,top:0};var JSEvents_resizeCanvasForFullscreen=(target,strategy)=>{var restoreOldStyle=registerRestoreOldStyle(target);var cssWidth=strategy.softFullscreen?innerWidth:screen.width;var cssHeight=strategy.softFullscreen?innerHeight:screen.height;var rect=getBoundingClientRect(target);var windowedCssWidth=rect.width;var windowedCssHeight=rect.height;var canvasSize=getCanvasElementSize(target);var windowedRttWidth=canvasSize[0];var windowedRttHeight=canvasSize[1];if(strategy.scaleMode==3){setLetterbox(target,(cssHeight-windowedCssHeight)/2,(cssWidth-windowedCssWidth)/2);cssWidth=windowedCssWidth;cssHeight=windowedCssHeight}else if(strategy.scaleMode==2){if(cssWidth*windowedRttHeight{if(strategy.scaleMode!=0||strategy.canvasResolutionScaleMode!=0){JSEvents_resizeCanvasForFullscreen(target,strategy)}if(target.requestFullscreen){target.requestFullscreen()}else if(target.webkitRequestFullscreen){target.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else{return JSEvents.fullscreenEnabled()?-3:-1}currentFullscreenStrategy=strategy;if(strategy.canvasResizedCallback){getWasmTableEntry(strategy.canvasResizedCallback)(37,0,strategy.canvasResizedCallbackUserData)}return 0};var _emscripten_exit_fullscreen=()=>{if(!JSEvents.fullscreenEnabled())return-1;JSEvents.removeDeferredCalls(JSEvents_requestFullscreen);var d=specialHTMLTargets[1];if(d.exitFullscreen){d.fullscreenElement&&d.exitFullscreen()}else if(d.webkitExitFullscreen){d.webkitFullscreenElement&&d.webkitExitFullscreen()}else{return-1}return 0};var requestPointerLock=target=>{if(target.requestPointerLock){target.requestPointerLock()}else{if(document.body.requestPointerLock){return-3}return-1}return 0};var _emscripten_exit_pointerlock=()=>{JSEvents.removeDeferredCalls(requestPointerLock);if(!document.exitPointerLock)return-1;document.exitPointerLock();return 0};var _emscripten_get_device_pixel_ratio=()=>globalThis.devicePixelRatio??1;var _emscripten_get_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0};var fillGamepadEventData=(eventStruct,e)=>{HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i>3]=e.axes[i]}for(var i=0;i>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i>2]=e.index;checkInt32(e.index);HEAP32[eventStruct+8>>2]=e.axes.length;checkInt32(e.axes.length);HEAP32[eventStruct+12>>2]=e.buttons.length;checkInt32(e.buttons.length);stringToUTF8(e.id,eventStruct+1112,64);stringToUTF8(e.mapping,eventStruct+1176,64)};var _emscripten_get_gamepad_status=(index,gamepadState)=>{assert(JSEvents.lastGamepadState,"emscripten_get_gamepad_status() can only be called after having first called emscripten_sample_gamepad_data() and that function has returned EMSCRIPTEN_RESULT_SUCCESS!");if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0};var _emscripten_get_num_gamepads=()=>{assert(JSEvents.lastGamepadState,"emscripten_get_num_gamepads() can only be called after having first called emscripten_sample_gamepad_data() and that function has returned EMSCRIPTEN_RESULT_SUCCESS!");return JSEvents.lastGamepadState.length};var _emscripten_get_screen_size=(width,height)=>{HEAP32[width>>2]=screen.width;checkInt32(screen.width);HEAP32[height>>2]=screen.height;checkInt32(screen.height)};var _emscripten_glActiveTexture=x0=>GLctx.activeTexture(x0);var _emscripten_glAlphaFunc=(func,ref)=>{switch(func){case 512:case 513:case 514:case 515:case 516:case 517:case 518:case 519:GLEmulation.alphaTestRef=ref;if(GLEmulation.alphaTestFunc!=func){GLEmulation.alphaTestFunc=func;GLImmediate.currentRenderer=null}break;default:break}};var _emscripten_glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _emscripten_glEnable=x0=>GLctx.enable(x0);var _glEnable=_emscripten_glEnable;var _emscripten_glDisable=x0=>GLctx.disable(x0);var _glDisable=_emscripten_glDisable;var _emscripten_glIsEnabled=x0=>GLctx.isEnabled(x0);var _glIsEnabled=_emscripten_glIsEnabled;var readI53FromI64=ptr=>HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;var readI53FromU64=ptr=>HEAPU32[ptr>>2]+HEAPU32[ptr+4>>2]*4294967296;var writeI53ToI64=(ptr,num)=>{HEAPU32[ptr>>2]=num;checkInt32(num);var lower=HEAPU32[ptr>>2];HEAPU32[ptr+4>>2]=(num-lower)/4294967296;checkInt32((num-lower)/4294967296);var deserialized=num>=0?readI53FromU64(ptr):readI53FromI64(ptr);var offset=ptr>>2;if(deserialized!=num)warnOnce(`writeI53ToI64() out of range: serialized JS Number ${num} to Wasm heap as bytes lo=${ptrToString(HEAPU32[offset])}, hi=${ptrToString(HEAPU32[offset+1])}, which deserializes back to ${deserialized} instead!`)};var webglGetExtensions=()=>{var exts=getEmscriptenSupportedExtensions(GLctx);exts=exts.concat(exts.map(e=>"GL_"+e));return exts};var 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}ret=webglGetExtensions().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];checkInt32(result[i]);break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i]=result[i]?1:0;checkInt8(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;checkInt32(ret);break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p]=ret?1:0;checkInt8(ret?1:0);break}};var _emscripten_glGetBooleanv=(name_,p)=>emscriptenWebGLGet(name_,p,4);var _glGetBooleanv=_emscripten_glGetBooleanv;var _emscripten_glGetIntegerv=(name_,p)=>emscriptenWebGLGet(name_,p,0);var _glGetIntegerv=_emscripten_glGetIntegerv;var _emscripten_glGetString=name_=>{var ret=GL.stringCache[name_];if(!ret){switch(name_){case 7939:ret=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=s?stringToNewUTF8(s):0;break;case 7938:var webGLVersion=GLctx.getParameter(7938);var glVersion=`OpenGL ES 2.0 (${webGLVersion})`;if(GL.currentContext.version>=2)glVersion=`OpenGL ES 3.0 (${webGLVersion})`;ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion=`OpenGL ES GLSL ES ${ver_num[1]} (${glslVersion})`}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280)}GL.stringCache[name_]=ret}return ret};var _glGetString=_emscripten_glGetString;var _emscripten_glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _glCreateShader=_emscripten_glCreateShader;var _emscripten_glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)};var _glShaderSource=_emscripten_glShaderSource;var _emscripten_glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _glCompileShader=_emscripten_glCompileShader;var _glAttachShader=_emscripten_glAttachShader;var _emscripten_glDetachShader=(program,shader)=>{GLctx.detachShader(GL.programs[program],GL.shaders[shader])};var _glDetachShader=_emscripten_glDetachShader;var _emscripten_glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};var _glUseProgram=_emscripten_glUseProgram;var _emscripten_glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _glDeleteProgram=_emscripten_glDeleteProgram;var _emscripten_glBindAttribLocation=(program,index,name)=>{GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))};var _glBindAttribLocation=_emscripten_glBindAttribLocation;var _emscripten_glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var _glLinkProgram=_emscripten_glLinkProgram;var _emscripten_glBindBuffer=(target,buffer)=>{if(target==34962){GLctx.currentArrayBufferBinding=buffer;GLImmediate.lastArrayBuffer=buffer}else if(target==34963){GLctx.currentElementArrayBufferBinding=buffer}if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindBuffer=_emscripten_glBindBuffer;var _emscripten_glGetFloatv=(name_,p)=>emscriptenWebGLGet(name_,p,2);var _glGetFloatv=_emscripten_glGetFloatv;var _emscripten_glHint=(x0,x1)=>GLctx.hint(x0,x1);var _glHint=_emscripten_glHint;var _emscripten_glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};var _glEnableVertexAttribArray=_emscripten_glEnableVertexAttribArray;var _emscripten_glDisableVertexAttribArray=index=>{GLctx.disableVertexAttribArray(index)};var _glDisableVertexAttribArray=_emscripten_glDisableVertexAttribArray;var _emscripten_glVertexAttribPointer=(index,size,type,normalized,stride,ptr)=>{GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)};var _glVertexAttribPointer=_emscripten_glVertexAttribPointer;var _glActiveTexture=_emscripten_glActiveTexture;var GLEmulation={fogStart:0,fogEnd:1,fogDensity:1,fogColor:null,fogMode:2048,fogEnabled:false,MAX_CLIP_PLANES:6,clipPlaneEnabled:[false,false,false,false,false,false],clipPlaneEquation:[],lightingEnabled:false,lightModelAmbient:null,lightModelLocalViewer:false,lightModelTwoSide:false,materialAmbient:null,materialDiffuse:null,materialSpecular:null,materialShininess:null,materialEmission:null,MAX_LIGHTS:8,lightEnabled:[false,false,false,false,false,false,false,false],lightAmbient:[],lightDiffuse:[],lightSpecular:[],lightPosition:[],alphaTestEnabled:false,alphaTestFunc:519,alphaTestRef:0,pointSize:1,vaos:[],currentVao:null,enabledVertexAttribArrays:{},hasRunInit:false,findToken(source,token){function isIdentChar(ch){if(ch>=48&&ch<=57)return true;if(ch>=65&&ch<=90)return true;if(ch>=97&&ch<=122)return true;return false}var i=-1;do{i=source.indexOf(token,i+1);if(i<0){break}if(i>0&&isIdentChar(source[i-1])){continue}i+=token.length;if(i{GLImmediate.lastRenderer?.cleanup();if(cap==2912){if(GLEmulation.fogEnabled!=true){GLImmediate.currentRenderer=null;GLEmulation.fogEnabled=true}return}else if(cap>=12288&&cap<12294){var clipPlaneId=cap-12288;if(GLEmulation.clipPlaneEnabled[clipPlaneId]!=true){GLImmediate.currentRenderer=null;GLEmulation.clipPlaneEnabled[clipPlaneId]=true}return}else if(cap>=16384&&cap<16392){var lightId=cap-16384;if(GLEmulation.lightEnabled[lightId]!=true){GLImmediate.currentRenderer=null;GLEmulation.lightEnabled[lightId]=true}return}else if(cap==2896){if(GLEmulation.lightingEnabled!=true){GLImmediate.currentRenderer=null;GLEmulation.lightingEnabled=true}return}else if(cap==3008){if(GLEmulation.alphaTestEnabled!=true){GLImmediate.currentRenderer=null;GLEmulation.alphaTestEnabled=true}return}else if(cap==3553){return}else if(!(cap in validCapabilities)){return}orig_glEnable(cap)};var orig_glDisable=_glDisable;_glDisable=_emscripten_glDisable=cap=>{GLImmediate.lastRenderer?.cleanup();if(cap==2912){if(GLEmulation.fogEnabled!=false){GLImmediate.currentRenderer=null;GLEmulation.fogEnabled=false}return}else if(cap>=12288&&cap<12294){var clipPlaneId=cap-12288;if(GLEmulation.clipPlaneEnabled[clipPlaneId]!=false){GLImmediate.currentRenderer=null;GLEmulation.clipPlaneEnabled[clipPlaneId]=false}return}else if(cap>=16384&&cap<16392){var lightId=cap-16384;if(GLEmulation.lightEnabled[lightId]!=false){GLImmediate.currentRenderer=null;GLEmulation.lightEnabled[lightId]=false}return}else if(cap==2896){if(GLEmulation.lightingEnabled!=false){GLImmediate.currentRenderer=null;GLEmulation.lightingEnabled=false}return}else if(cap==3008){if(GLEmulation.alphaTestEnabled!=false){GLImmediate.currentRenderer=null;GLEmulation.alphaTestEnabled=false}return}else if(cap==3553){return}else if(!(cap in validCapabilities)){return}orig_glDisable(cap)};_glIsEnabled=_emscripten_glIsEnabled=cap=>{if(cap==2912){return GLEmulation.fogEnabled?1:0}else if(cap>=12288&&cap<12294){var clipPlaneId=cap-12288;return GLEmulation.clipPlaneEnabled[clipPlaneId]?1:0}else if(cap>=16384&&cap<16392){var lightId=cap-16384;return GLEmulation.lightEnabled[lightId]?1:0}else if(cap==2896){return GLEmulation.lightingEnabled?1:0}else if(cap==3008){return GLEmulation.alphaTestEnabled?1:0}else if(!(cap in validCapabilities)){return 0}return GLctx.isEnabled(cap)};var orig_glGetBooleanv=_glGetBooleanv;_glGetBooleanv=_emscripten_glGetBooleanv=(pname,p)=>{var attrib=GLEmulation.getAttributeFromCapability(pname);if(attrib!==null){var result=GLImmediate.enabledClientAttributes[attrib];HEAP8[p]=result===true?1:0;checkInt8(result===true?1:0);return}orig_glGetBooleanv(pname,p)};var orig_glGetIntegerv=_glGetIntegerv;_glGetIntegerv=_emscripten_glGetIntegerv=(pname,params)=>{switch(pname){case 34018:pname=GLctx.MAX_TEXTURE_IMAGE_UNITS;break;case 35658:{var result=GLctx.getParameter(GLctx.MAX_VERTEX_UNIFORM_VECTORS);HEAP32[params>>2]=result*4;checkInt32(result*4);return}case 35657:{var result=GLctx.getParameter(GLctx.MAX_FRAGMENT_UNIFORM_VECTORS);HEAP32[params>>2]=result*4;checkInt32(result*4);return}case 35659:{var result=GLctx.getParameter(GLctx.MAX_VARYING_VECTORS);HEAP32[params>>2]=result*4;checkInt32(result*4);return}case 34929:pname=GLctx.MAX_COMBINED_TEXTURE_IMAGE_UNITS;break;case 32890:{var attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];HEAP32[params>>2]=attribute?attribute.size:0;checkInt32(attribute?attribute.size:0);return}case 32891:{var attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];HEAP32[params>>2]=attribute?attribute.type:0;checkInt32(attribute?attribute.type:0);return}case 32892:{var attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];HEAP32[params>>2]=attribute?attribute.stride:0;checkInt32(attribute?attribute.stride:0);return}case 32897:{var attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];HEAP32[params>>2]=attribute?attribute.size:0;checkInt32(attribute?attribute.size:0);return}case 32898:{var attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];HEAP32[params>>2]=attribute?attribute.type:0;checkInt32(attribute?attribute.type:0);return}case 32899:{var attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];HEAP32[params>>2]=attribute?attribute.stride:0;checkInt32(attribute?attribute.stride:0);return}case 32904:{var attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];HEAP32[params>>2]=attribute?attribute.size:0;checkInt32(attribute?attribute.size:0);return}case 32905:{var attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];HEAP32[params>>2]=attribute?attribute.type:0;checkInt32(attribute?attribute.type:0);return}case 32906:{var attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];HEAP32[params>>2]=attribute?attribute.stride:0;checkInt32(attribute?attribute.stride:0);return}case 3378:{HEAP32[params>>2]=GLEmulation.MAX_CLIP_PLANES;checkInt32(GLEmulation.MAX_CLIP_PLANES);return}case 2976:{HEAP32[params>>2]=GLImmediate.currentMatrix+5888;checkInt32(GLImmediate.currentMatrix+5888);return}case 3009:{HEAP32[params>>2]=GLEmulation.alphaTestFunc;checkInt32(GLEmulation.alphaTestFunc);return}}orig_glGetIntegerv(pname,params)};var orig_glGetString=_glGetString;_glGetString=_emscripten_glGetString=name_=>{if(GL.stringCache[name_])return GL.stringCache[name_];switch(name_){case 7939:var ret=stringToNewUTF8(getEmscriptenSupportedExtensions(GLctx).join(" ")+" GL_EXT_texture_env_combine GL_ARB_texture_env_crossbar GL_ATI_texture_env_combine3 GL_NV_texture_env_combine4 GL_EXT_texture_env_dot3 GL_ARB_multitexture GL_ARB_vertex_buffer_object GL_EXT_framebuffer_object GL_ARB_vertex_program GL_ARB_fragment_program GL_ARB_shading_language_100 GL_ARB_shader_objects GL_ARB_vertex_shader GL_ARB_fragment_shader GL_ARB_texture_cube_map GL_EXT_draw_range_elements"+(GL.currentContext.compressionExt?" GL_ARB_texture_compression GL_EXT_texture_compression_s3tc":"")+(GL.currentContext.anisotropicExt?" GL_EXT_texture_filter_anisotropic":""));return GL.stringCache[name_]=ret}return orig_glGetString(name_)};GL.shaderInfos={};var orig_glCreateShader=_glCreateShader;_glCreateShader=_emscripten_glCreateShader=shaderType=>{var id=orig_glCreateShader(shaderType);GL.shaderInfos[id]={type:shaderType,ftransform:false};return id};function ensurePrecision(source){if(!/precision +(low|medium|high)p +float *;/.test(source)){source="#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n"+source}return source}_glShaderSource=_emscripten_glShaderSource=(shader,count,string,length)=>{var source=GL.getSource(shader,count,string,length);if(GL.shaderInfos[shader].type==GLctx.VERTEX_SHADER){var has_pm=source.search(/u_projection/)>=0;var has_mm=source.search(/u_modelView/)>=0;var has_pv=source.search(/a_position/)>=0;var need_pm=0,need_mm=0,need_pv=0;var old=source;source=source.replace(/ftransform\(\)/g,"(u_projection * u_modelView * a_position)");if(old!=source)need_pm=need_mm=need_pv=1;old=source;source=source.replace(/gl_ProjectionMatrix/g,"u_projection");if(old!=source)need_pm=1;old=source;source=source.replace(/gl_ModelViewMatrixTranspose\[2\]/g,"vec4(u_modelView[0][2], u_modelView[1][2], u_modelView[2][2], u_modelView[3][2])");if(old!=source)need_mm=1;old=source;source=source.replace(/gl_ModelViewMatrix/g,"u_modelView");if(old!=source)need_mm=1;old=source;source=source.replace(/gl_Vertex/g,"a_position");if(old!=source)need_pv=1;old=source;source=source.replace(/gl_ModelViewProjectionMatrix/g,"(u_projection * u_modelView)");if(old!=source)need_pm=need_mm=1;if(need_pv&&!has_pv)source="attribute vec4 a_position; \n"+source;if(need_mm&&!has_mm)source="uniform mat4 u_modelView; \n"+source;if(need_pm&&!has_pm)source="uniform mat4 u_projection; \n"+source;GL.shaderInfos[shader].ftransform=need_pm||need_mm||need_pv;for(var i=0;i{GLctx.compileShader(GL.shaders[shader])};GL.programShaders={};var orig_glAttachShader=_glAttachShader;_glAttachShader=_emscripten_glAttachShader=(program,shader)=>{GL.programShaders[program]||=[];GL.programShaders[program].push(shader);orig_glAttachShader(program,shader)};var orig_glDetachShader=_glDetachShader;_glDetachShader=_emscripten_glDetachShader=(program,shader)=>{var programShader=GL.programShaders[program];if(!programShader){err(`WARNING: _glDetachShader received invalid program: ${program}`);return}var index=programShader.indexOf(shader);programShader.splice(index,1);orig_glDetachShader(program,shader)};var orig_glUseProgram=_glUseProgram;_glUseProgram=_emscripten_glUseProgram=program=>{if(GL.currProgram!=program){GLImmediate.currentRenderer=null;GL.currProgram=program;GLImmediate.fixedFunctionProgram=0;orig_glUseProgram(program)}};var orig_glDeleteProgram=_glDeleteProgram;_glDeleteProgram=_emscripten_glDeleteProgram=program=>{orig_glDeleteProgram(program);if(program==GL.currProgram){GLImmediate.currentRenderer=null;GL.currProgram=0}};var zeroUsedPrograms={};var orig_glBindAttribLocation=_glBindAttribLocation;_glBindAttribLocation=_emscripten_glBindAttribLocation=(program,index,name)=>{if(index==0)zeroUsedPrograms[program]=true;orig_glBindAttribLocation(program,index,name)};var orig_glLinkProgram=_glLinkProgram;_glLinkProgram=_emscripten_glLinkProgram=program=>{if(!(program in zeroUsedPrograms)){GLctx.bindAttribLocation(GL.programs[program],0,"a_position")}orig_glLinkProgram(program)};var orig_glBindBuffer=_glBindBuffer;_glBindBuffer=_emscripten_glBindBuffer=(target,buffer)=>{orig_glBindBuffer(target,buffer);if(target==GLctx.ARRAY_BUFFER){if(GLEmulation.currentVao){assert(GLEmulation.currentVao.arrayBuffer==buffer||GLEmulation.currentVao.arrayBuffer==0||buffer==0,"TODO: support for multiple array buffers in vao");GLEmulation.currentVao.arrayBuffer=buffer}}else if(target==GLctx.ELEMENT_ARRAY_BUFFER){if(GLEmulation.currentVao)GLEmulation.currentVao.elementArrayBuffer=buffer}};var orig_glGetFloatv=_glGetFloatv;_glGetFloatv=_emscripten_glGetFloatv=(pname,params)=>{if(pname==2982){HEAPF32.set(GLImmediate.matrix[0],params>>2)}else if(pname==2983){HEAPF32.set(GLImmediate.matrix[1],params>>2)}else if(pname==2984){HEAPF32.set(GLImmediate.matrix[2+GLImmediate.clientActiveTexture],params>>2)}else if(pname==2918){HEAPF32.set(GLEmulation.fogColor,params>>2)}else if(pname==2915){HEAPF32[params>>2]=GLEmulation.fogStart}else if(pname==2916){HEAPF32[params>>2]=GLEmulation.fogEnd}else if(pname==2914){HEAPF32[params>>2]=GLEmulation.fogDensity}else if(pname==2917){HEAPF32[params>>2]=GLEmulation.fogMode}else if(pname==2899){HEAPF32[params>>2]=GLEmulation.lightModelAmbient[0];HEAPF32[params+4>>2]=GLEmulation.lightModelAmbient[1];HEAPF32[params+8>>2]=GLEmulation.lightModelAmbient[2];HEAPF32[params+12>>2]=GLEmulation.lightModelAmbient[3]}else if(pname==3010){HEAPF32[params>>2]=GLEmulation.alphaTestRef}else{orig_glGetFloatv(pname,params)}};var orig_glHint=_glHint;_glHint=_emscripten_glHint=(target,mode)=>{if(target==34031){return}orig_glHint(target,mode)};var orig_glEnableVertexAttribArray=_glEnableVertexAttribArray;_glEnableVertexAttribArray=_emscripten_glEnableVertexAttribArray=index=>{orig_glEnableVertexAttribArray(index);GLEmulation.enabledVertexAttribArrays[index]=1;if(GLEmulation.currentVao)GLEmulation.currentVao.enabledVertexAttribArrays[index]=1};var orig_glDisableVertexAttribArray=_glDisableVertexAttribArray;_glDisableVertexAttribArray=_emscripten_glDisableVertexAttribArray=index=>{orig_glDisableVertexAttribArray(index);delete GLEmulation.enabledVertexAttribArrays[index];if(GLEmulation.currentVao)delete GLEmulation.currentVao.enabledVertexAttribArrays[index]};var orig_glVertexAttribPointer=_glVertexAttribPointer;_glVertexAttribPointer=_emscripten_glVertexAttribPointer=(index,size,type,normalized,stride,pointer)=>{orig_glVertexAttribPointer(index,size,type,normalized,stride,pointer);if(GLEmulation.currentVao){GLEmulation.currentVao.vertexAttribPointers[index]=[index,size,type,normalized,stride,pointer]}}},getAttributeFromCapability(cap){var attrib=null;switch(cap){case 3553:abort("GL_TEXTURE_2D is not a spec-defined capability for gl{Enable,Disable}ClientState.");case 32888:attrib=GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture;break;case 32884:attrib=GLImmediate.VERTEX;break;case 32885:attrib=GLImmediate.NORMAL;break;case 32886:attrib=GLImmediate.COLOR;break}return attrib}};var GLImmediate={MapTreeLib:null,spawnMapTreeLib:()=>{function CNaiveListMap(){var list=[];this.insert=function CNaiveListMap_insert(key,val){if(this.contains(key|0))return false;list.push([key,val]);return true};var __contains_i;this.contains=function CNaiveListMap_contains(key){for(__contains_i=0;__contains_inew CMapTree}},TexEnvJIT:null,spawnTexEnvJIT:()=>{var GL_TEXTURE0=33984;var GL_TEXTURE_1D=3552;var GL_TEXTURE_2D=3553;var GL_TEXTURE_3D=32879;var GL_TEXTURE_CUBE_MAP=34067;var GL_TEXTURE_ENV=8960;var GL_TEXTURE_ENV_MODE=8704;var GL_TEXTURE_ENV_COLOR=8705;var GL_SRC0_RGB=34176;var GL_SRC1_RGB=34177;var GL_SRC2_RGB=34178;var GL_SRC0_ALPHA=34184;var GL_SRC1_ALPHA=34185;var GL_SRC2_ALPHA=34186;var GL_OPERAND0_RGB=34192;var GL_OPERAND1_RGB=34193;var GL_OPERAND2_RGB=34194;var GL_OPERAND0_ALPHA=34200;var GL_OPERAND1_ALPHA=34201;var GL_OPERAND2_ALPHA=34202;var GL_COMBINE_RGB=34161;var GL_COMBINE_ALPHA=34162;var GL_RGB_SCALE=34163;var GL_ALPHA_SCALE=3356;var GL_ADD=260;var GL_BLEND=3042;var GL_REPLACE=7681;var GL_MODULATE=8448;var GL_DECAL=8449;var GL_COMBINE=34160;var GL_SUBTRACT=34023;var GL_INTERPOLATE=34165;var GL_TEXTURE=5890;var GL_CONSTANT=34166;var GL_PRIMARY_COLOR=34167;var GL_PREVIOUS=34168;var GL_SRC_COLOR=768;var GL_ONE_MINUS_SRC_COLOR=769;var GL_SRC_ALPHA=770;var GL_ONE_MINUS_SRC_ALPHA=771;var TEXENVJIT_NAMESPACE_PREFIX="tej_";var TEX_UNIT_UNIFORM_PREFIX="uTexUnit";var TEX_COORD_VARYING_PREFIX="vTexCoord";var PRIM_COLOR_VARYING="vPrimColor";var TEX_MATRIX_UNIFORM_PREFIX="uTexMatrix";var s_texUnits=null;var s_activeTexture=0;var s_requiredTexUnitsForPass=[];function abort_noSupport(info){abort("[TexEnvJIT] ABORT: No support: "+info)}function abort_sanity(info){abort("[TexEnvJIT] ABORT: Sanity failure: "+info)}function genTexUnitSampleExpr(texUnitID){var texUnit=s_texUnits[texUnitID];var texType=texUnit.getTexType();var func=null;switch(texType){case GL_TEXTURE_1D:func="texture2D";break;case GL_TEXTURE_2D:func="texture2D";break;case GL_TEXTURE_3D:return abort_noSupport("No support for 3D textures.");case GL_TEXTURE_CUBE_MAP:func="textureCube";break;default:return abort_sanity(`Unknown texType: ${ptrToString(texType)}`)}var texCoordExpr=TEX_COORD_VARYING_PREFIX+texUnitID;if(TEX_MATRIX_UNIFORM_PREFIX!=null){texCoordExpr=`(${TEX_MATRIX_UNIFORM_PREFIX}${texUnitID} * ${texCoordExpr})`}return`${func}(${TEX_UNIT_UNIFORM_PREFIX}${texUnitID}, ${texCoordExpr}.xy)`}function getTypeFromCombineOp(op){switch(op){case GL_SRC_COLOR:case GL_ONE_MINUS_SRC_COLOR:return"vec3";case GL_SRC_ALPHA:case GL_ONE_MINUS_SRC_ALPHA:return"float"}return abort_noSupport("Unsupported combiner op: "+ptrToString(op))}function getCurTexUnit(){return s_texUnits[s_activeTexture]}function genCombinerSourceExpr(texUnitID,constantExpr,previousVar,src,op){var srcExpr=null;switch(src){case GL_TEXTURE:srcExpr=genTexUnitSampleExpr(texUnitID);break;case GL_CONSTANT:srcExpr=constantExpr;break;case GL_PRIMARY_COLOR:srcExpr=PRIM_COLOR_VARYING;break;case GL_PREVIOUS:srcExpr=previousVar;break;default:return abort_noSupport("Unsupported combiner src: "+ptrToString(src))}var expr=null;switch(op){case GL_SRC_COLOR:expr=srcExpr+".rgb";break;case GL_ONE_MINUS_SRC_COLOR:expr="(vec3(1.0) - "+srcExpr+".rgb)";break;case GL_SRC_ALPHA:expr=srcExpr+".a";break;case GL_ONE_MINUS_SRC_ALPHA:expr="(1.0 - "+srcExpr+".a)";break;default:return abort_noSupport("Unsupported combiner op: "+ptrToString(op))}return expr}function valToFloatLiteral(val){if(val==Math.round(val))return val+".0";return val}function CTexEnv(){this.mode=GL_MODULATE;this.colorCombiner=GL_MODULATE;this.alphaCombiner=GL_MODULATE;this.colorScale=1;this.alphaScale=1;this.envColor=[0,0,0,0];this.colorSrc=[GL_TEXTURE,GL_PREVIOUS,GL_CONSTANT];this.alphaSrc=[GL_TEXTURE,GL_PREVIOUS,GL_CONSTANT];this.colorOp=[GL_SRC_COLOR,GL_SRC_COLOR,GL_SRC_ALPHA];this.alphaOp=[GL_SRC_ALPHA,GL_SRC_ALPHA,GL_SRC_ALPHA];this.traverseKey={7681:0,8448:1,260:2,3042:3,8449:4,34160:5,34023:3,34165:4,5890:0,34166:1,34167:2,34168:3,768:0,769:1,770:2,771:3};this.key0=-1;this.key1=0;this.key2=0;this.computeKey0=function(){var k=this.traverseKey;var key=k[this.mode]*1638400;key+=k[this.colorCombiner]*327680;key+=k[this.alphaCombiner]*65536;key+=(this.colorScale-1)*16384;key+=(this.alphaScale-1)*4096;key+=k[this.colorSrc[0]]*1024;key+=k[this.colorSrc[1]]*256;key+=k[this.colorSrc[2]]*64;key+=k[this.alphaSrc[0]]*16;key+=k[this.alphaSrc[1]]*4;key+=k[this.alphaSrc[2]];return key};this.computeKey1=function(){var k=this.traverseKey;var key=k[this.colorOp[0]]*4096;key+=k[this.colorOp[1]]*1024;key+=k[this.colorOp[2]]*256;key+=k[this.alphaOp[0]]*16;key+=k[this.alphaOp[1]]*4;key+=k[this.alphaOp[2]];return key};this.computeKey2=function(){return this.envColor[0]*16777216+this.envColor[1]*65536+this.envColor[2]*256+1+this.envColor[3]};this.recomputeKey=function(){this.key0=this.computeKey0();this.key1=this.computeKey1();this.key2=this.computeKey2()};this.invalidateKey=function(){this.key0=-1;GLImmediate.currentRenderer=null}}function CTexUnit(){this.env=new CTexEnv;this.enabled_tex1D=false;this.enabled_tex2D=false;this.enabled_tex3D=false;this.enabled_texCube=false;this.texTypesEnabled=0;this.traverseState=function CTexUnit_traverseState(keyView){if(this.texTypesEnabled){if(this.env.key0==-1){this.env.recomputeKey()}keyView.next(this.texTypesEnabled|this.env.key0<<4);keyView.next(this.env.key1);keyView.next(this.env.key2)}else{keyView.next(0)}}}CTexUnit.prototype.enabled=function CTexUnit_enabled(){return this.texTypesEnabled};CTexUnit.prototype.genPassLines=function CTexUnit_genPassLines(passOutputVar,passInputVar,texUnitID){if(!this.enabled()){return["vec4 "+passOutputVar+" = "+passInputVar+";"]}var lines=this.env.genPassLines(passOutputVar,passInputVar,texUnitID).join("\n");var texLoadLines="";var texLoadRegex=/(texture.*?\(.*?\))/g;var loadCounter=0;var load;while(load=texLoadRegex.exec(lines)){var texLoadExpr=load[1];var secondOccurrence=lines.slice(load.index+1).indexOf(texLoadExpr);if(secondOccurrence!=-1){var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texLoadVar=prefix+"texload"+loadCounter++;var texLoadLine="vec4 "+texLoadVar+" = "+texLoadExpr+";\n";texLoadLines+=texLoadLine+"\n";lines=lines.split(texLoadExpr).join(texLoadVar);texLoadRegex=/(texture.*\(.*\))/g}}return[texLoadLines+lines]};CTexUnit.prototype.getTexType=function CTexUnit_getTexType(){if(this.enabled_texCube){return GL_TEXTURE_CUBE_MAP}else if(this.enabled_tex3D){return GL_TEXTURE_3D}else if(this.enabled_tex2D){return GL_TEXTURE_2D}else if(this.enabled_tex1D){return GL_TEXTURE_1D}return 0};CTexEnv.prototype.genPassLines=function CTexEnv_genPassLines(passOutputVar,passInputVar,texUnitID){switch(this.mode){case GL_REPLACE:{return["vec4 "+passOutputVar+" = "+genTexUnitSampleExpr(texUnitID)+";"]}case GL_ADD:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texVar=prefix+"tex";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";return["vec4 "+texVar+" = "+genTexUnitSampleExpr(texUnitID)+";","vec3 "+colorVar+" = "+passInputVar+".rgb + "+texVar+".rgb;","float "+alphaVar+" = "+passInputVar+".a * "+texVar+".a;","vec4 "+passOutputVar+" = vec4("+colorVar+", "+alphaVar+");"]}case GL_MODULATE:{var line=["vec4 "+passOutputVar," = ",passInputVar," * ",genTexUnitSampleExpr(texUnitID),";"];return[line.join("")]}case GL_DECAL:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texVar=prefix+"tex";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";return["vec4 "+texVar+" = "+genTexUnitSampleExpr(texUnitID)+";",["vec3 "+colorVar+" = ",passInputVar+".rgb * (1.0 - "+texVar+".a)"," + ",texVar+".rgb * "+texVar+".a",";"].join(""),"float "+alphaVar+" = "+passInputVar+".a;","vec4 "+passOutputVar+" = vec4("+colorVar+", "+alphaVar+");"]}case GL_BLEND:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var texVar=prefix+"tex";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";return["vec4 "+texVar+" = "+genTexUnitSampleExpr(texUnitID)+";",["vec3 "+colorVar+" = ",passInputVar+".rgb * (1.0 - "+texVar+".rgb)"," + ",PRIM_COLOR_VARYING+".rgb * "+texVar+".rgb",";"].join(""),"float "+alphaVar+" = "+texVar+".a;","vec4 "+passOutputVar+" = vec4("+colorVar+", "+alphaVar+");"]}case GL_COMBINE:{var prefix=TEXENVJIT_NAMESPACE_PREFIX+"env"+texUnitID+"_";var colorVar=prefix+"color";var alphaVar=prefix+"alpha";var colorLines=this.genCombinerLines(true,colorVar,passInputVar,texUnitID,this.colorCombiner,this.colorSrc,this.colorOp);var alphaLines=this.genCombinerLines(false,alphaVar,passInputVar,texUnitID,this.alphaCombiner,this.alphaSrc,this.alphaOp);var scaledColor=this.colorScale==1?colorVar:colorVar+" * "+valToFloatLiteral(this.colorScale);var scaledAlpha=this.alphaScale==1?alphaVar:alphaVar+" * "+valToFloatLiteral(this.alphaScale);var line=["vec4 "+passOutputVar," = ","vec4(",scaledColor,", ",scaledAlpha,")",";"].join("");return[].concat(colorLines,alphaLines,[line])}}return abort_noSupport("Unsupported TexEnv mode: "+ptrToString(this.mode))};CTexEnv.prototype.genCombinerLines=function CTexEnv_getCombinerLines(isColor,outputVar,passInputVar,texUnitID,combiner,srcArr,opArr){var argsNeeded=null;switch(combiner){case GL_REPLACE:argsNeeded=1;break;case GL_MODULATE:case GL_ADD:case GL_SUBTRACT:argsNeeded=2;break;case GL_INTERPOLATE:argsNeeded=3;break;default:return abort_noSupport("Unsupported combiner: "+ptrToString(combiner))}var constantExpr=["vec4(",valToFloatLiteral(this.envColor[0]),", ",valToFloatLiteral(this.envColor[1]),", ",valToFloatLiteral(this.envColor[2]),", ",valToFloatLiteral(this.envColor[3]),")"].join("");var src0Expr=argsNeeded>=1?genCombinerSourceExpr(texUnitID,constantExpr,passInputVar,srcArr[0],opArr[0]):null;var src1Expr=argsNeeded>=2?genCombinerSourceExpr(texUnitID,constantExpr,passInputVar,srcArr[1],opArr[1]):null;var src2Expr=argsNeeded>=3?genCombinerSourceExpr(texUnitID,constantExpr,passInputVar,srcArr[2],opArr[2]):null;var outputType=isColor?"vec3":"float";var lines=null;switch(combiner){case GL_REPLACE:{lines=[`${outputType} ${outputVar} = ${src0Expr};`];break}case GL_MODULATE:{lines=[`${outputType} ${outputVar} = ${src0Expr} * ${src1Expr};`];break}case GL_ADD:{lines=[`${outputType} ${outputVar} = ${src0Expr} + ${src1Expr};`];break}case GL_SUBTRACT:{lines=[`${outputType} ${outputVar} = ${src0Expr} - ${src1Expr};`];break}case GL_INTERPOLATE:{var prefix=`${TEXENVJIT_NAMESPACE_PREFIX}env${texUnitID}_`;var arg2Var=`${prefix}colorSrc2`;var arg2Type=getTypeFromCombineOp(this.colorOp[2]);lines=[`${arg2Type} ${arg2Var} = ${src2Expr};`,`${outputType} ${outputVar} = ${src0Expr} * ${arg2Var} + ${src1Expr} * (1.0 - ${arg2Var});`];break}default:return abort_sanity("Unmatched TexEnv.colorCombiner?")}return lines};return{init:(gl,specifiedMaxTextureImageUnits)=>{var maxTexUnits=0;if(specifiedMaxTextureImageUnits){maxTexUnits=specifiedMaxTextureImageUnits}else if(gl){maxTexUnits=gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS)}assert(maxTexUnits>0);s_texUnits=[];for(var i=0;i{TEX_UNIT_UNIFORM_PREFIX=uTexUnitPrefix;TEX_COORD_VARYING_PREFIX=vTexCoordPrefix;PRIM_COLOR_VARYING=vPrimColor;TEX_MATRIX_UNIFORM_PREFIX=uTexMatrixPrefix},genAllPassLines:(resultDest,indentSize=0)=>{s_requiredTexUnitsForPass.length=0;var lines=[];var lastPassVar=PRIM_COLOR_VARYING;for(var i=0;is_requiredTexUnitsForPass,getActiveTexture:()=>s_activeTexture,traverseState:keyView=>{for(var texUnit of s_texUnits){texUnit.traverseState(keyView)}},getTexUnitType:texUnitID=>{assert(texUnitID>=0&&texUnitID{s_activeTexture=texture-GL_TEXTURE0;if(GLImmediate.currentMatrix>=2){GLImmediate.currentMatrix=2+s_activeTexture}},hook_enable:cap=>{var cur=getCurTexUnit();switch(cap){case GL_TEXTURE_1D:if(!cur.enabled_tex1D){GLImmediate.currentRenderer=null;cur.enabled_tex1D=true;cur.texTypesEnabled|=1}break;case GL_TEXTURE_2D:if(!cur.enabled_tex2D){GLImmediate.currentRenderer=null;cur.enabled_tex2D=true;cur.texTypesEnabled|=2}break;case GL_TEXTURE_3D:if(!cur.enabled_tex3D){GLImmediate.currentRenderer=null;cur.enabled_tex3D=true;cur.texTypesEnabled|=4}break;case GL_TEXTURE_CUBE_MAP:if(!cur.enabled_texCube){GLImmediate.currentRenderer=null;cur.enabled_texCube=true;cur.texTypesEnabled|=8}break}},hook_disable:cap=>{var cur=getCurTexUnit();switch(cap){case GL_TEXTURE_1D:if(cur.enabled_tex1D){GLImmediate.currentRenderer=null;cur.enabled_tex1D=false;cur.texTypesEnabled&=~1}break;case GL_TEXTURE_2D:if(cur.enabled_tex2D){GLImmediate.currentRenderer=null;cur.enabled_tex2D=false;cur.texTypesEnabled&=~2}break;case GL_TEXTURE_3D:if(cur.enabled_tex3D){GLImmediate.currentRenderer=null;cur.enabled_tex3D=false;cur.texTypesEnabled&=~4}break;case GL_TEXTURE_CUBE_MAP:if(cur.enabled_texCube){GLImmediate.currentRenderer=null;cur.enabled_texCube=false;cur.texTypesEnabled&=~8}break}},hook_texEnvf(target,pname,param){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_RGB_SCALE:if(env.colorScale!=param){env.invalidateKey();env.colorScale=param}break;case GL_ALPHA_SCALE:if(env.alphaScale!=param){env.invalidateKey();env.alphaScale=param}break;default:err("WARNING: Unhandled `pname` in call to `glTexEnvf`.")}},hook_texEnvi(target,pname,param){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_MODE:if(env.mode!=param){env.invalidateKey();env.mode=param}break;case GL_COMBINE_RGB:if(env.colorCombiner!=param){env.invalidateKey();env.colorCombiner=param}break;case GL_COMBINE_ALPHA:if(env.alphaCombiner!=param){env.invalidateKey();env.alphaCombiner=param}break;case GL_SRC0_RGB:if(env.colorSrc[0]!=param){env.invalidateKey();env.colorSrc[0]=param}break;case GL_SRC1_RGB:if(env.colorSrc[1]!=param){env.invalidateKey();env.colorSrc[1]=param}break;case GL_SRC2_RGB:if(env.colorSrc[2]!=param){env.invalidateKey();env.colorSrc[2]=param}break;case GL_SRC0_ALPHA:if(env.alphaSrc[0]!=param){env.invalidateKey();env.alphaSrc[0]=param}break;case GL_SRC1_ALPHA:if(env.alphaSrc[1]!=param){env.invalidateKey();env.alphaSrc[1]=param}break;case GL_SRC2_ALPHA:if(env.alphaSrc[2]!=param){env.invalidateKey();env.alphaSrc[2]=param}break;case GL_OPERAND0_RGB:if(env.colorOp[0]!=param){env.invalidateKey();env.colorOp[0]=param}break;case GL_OPERAND1_RGB:if(env.colorOp[1]!=param){env.invalidateKey();env.colorOp[1]=param}break;case GL_OPERAND2_RGB:if(env.colorOp[2]!=param){env.invalidateKey();env.colorOp[2]=param}break;case GL_OPERAND0_ALPHA:if(env.alphaOp[0]!=param){env.invalidateKey();env.alphaOp[0]=param}break;case GL_OPERAND1_ALPHA:if(env.alphaOp[1]!=param){env.invalidateKey();env.alphaOp[1]=param}break;case GL_OPERAND2_ALPHA:if(env.alphaOp[2]!=param){env.invalidateKey();env.alphaOp[2]=param}break;case GL_RGB_SCALE:if(env.colorScale!=param){env.invalidateKey();env.colorScale=param}break;case GL_ALPHA_SCALE:if(env.alphaScale!=param){env.invalidateKey();env.alphaScale=param}break;default:err("WARNING: Unhandled `pname` in call to `glTexEnvi`.")}},hook_texEnvfv(target,pname,params){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_COLOR:{for(var i=0;i<4;i++){var param=HEAPF32[params+i*4>>2];if(env.envColor[i]!=param){env.invalidateKey();env.envColor[i]=param}}break}default:err("WARNING: Unhandled `pname` in call to `glTexEnvfv`.")}},hook_getTexEnviv(target,pname,param){if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_MODE:HEAP32[param>>2]=env.mode;checkInt32(env.mode);return;case GL_TEXTURE_ENV_COLOR:HEAP32[param>>2]=Math.max(Math.min(env.envColor[0]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[0]*255,255,-255)));HEAP32[param+1>>2]=Math.max(Math.min(env.envColor[1]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[1]*255,255,-255)));HEAP32[param+2>>2]=Math.max(Math.min(env.envColor[2]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[2]*255,255,-255)));HEAP32[param+3>>2]=Math.max(Math.min(env.envColor[3]*255,255,-255));checkInt32(Math.max(Math.min(env.envColor[3]*255,255,-255)));return;case GL_COMBINE_RGB:HEAP32[param>>2]=env.colorCombiner;checkInt32(env.colorCombiner);return;case GL_COMBINE_ALPHA:HEAP32[param>>2]=env.alphaCombiner;checkInt32(env.alphaCombiner);return;case GL_SRC0_RGB:HEAP32[param>>2]=env.colorSrc[0];checkInt32(env.colorSrc[0]);return;case GL_SRC1_RGB:HEAP32[param>>2]=env.colorSrc[1];checkInt32(env.colorSrc[1]);return;case GL_SRC2_RGB:HEAP32[param>>2]=env.colorSrc[2];checkInt32(env.colorSrc[2]);return;case GL_SRC0_ALPHA:HEAP32[param>>2]=env.alphaSrc[0];checkInt32(env.alphaSrc[0]);return;case GL_SRC1_ALPHA:HEAP32[param>>2]=env.alphaSrc[1];checkInt32(env.alphaSrc[1]);return;case GL_SRC2_ALPHA:HEAP32[param>>2]=env.alphaSrc[2];checkInt32(env.alphaSrc[2]);return;case GL_OPERAND0_RGB:HEAP32[param>>2]=env.colorOp[0];checkInt32(env.colorOp[0]);return;case GL_OPERAND1_RGB:HEAP32[param>>2]=env.colorOp[1];checkInt32(env.colorOp[1]);return;case GL_OPERAND2_RGB:HEAP32[param>>2]=env.colorOp[2];checkInt32(env.colorOp[2]);return;case GL_OPERAND0_ALPHA:HEAP32[param>>2]=env.alphaOp[0];checkInt32(env.alphaOp[0]);return;case GL_OPERAND1_ALPHA:HEAP32[param>>2]=env.alphaOp[1];checkInt32(env.alphaOp[1]);return;case GL_OPERAND2_ALPHA:HEAP32[param>>2]=env.alphaOp[2];checkInt32(env.alphaOp[2]);return;case GL_RGB_SCALE:HEAP32[param>>2]=env.colorScale;checkInt32(env.colorScale);return;case GL_ALPHA_SCALE:HEAP32[param>>2]=env.alphaScale;checkInt32(env.alphaScale);return;default:err("WARNING: Unhandled `pname` in call to `glGetTexEnvi`.")}},hook_getTexEnvfv:(target,pname,param)=>{if(target!=GL_TEXTURE_ENV)return;var env=getCurTexUnit().env;switch(pname){case GL_TEXTURE_ENV_COLOR:HEAPF32[param>>2]=env.envColor[0];HEAPF32[param+4>>2]=env.envColor[1];HEAPF32[param+8>>2]=env.envColor[2];HEAPF32[param+12>>2]=env.envColor[3];return}}}},vertexData:null,vertexDataU8:null,tempData:null,indexData:null,vertexCounter:0,mode:-1,rendererCache:null,rendererComponents:[],rendererComponentPointer:0,lastRenderer:null,lastArrayBuffer:null,lastProgram:null,lastStride:-1,matrix:[],matrixStack:[],currentMatrix:0,tempMatrix:null,matricesModified:false,useTextureMatrix:false,VERTEX:0,NORMAL:1,COLOR:2,TEXTURE0:3,NUM_ATTRIBUTES:-1,MAX_TEXTURES:-1,totalEnabledClientAttributes:0,enabledClientAttributes:[0,0],clientAttributes:[],liveClientAttributes:[],currentRenderer:null,modifiedClientAttributes:false,clientActiveTexture:0,clientColor:null,usedTexUnitList:[],fixedFunctionProgram:null,setClientAttribute(name,size,type,stride,pointer){var attrib=GLImmediate.clientAttributes[name];if(!attrib){for(var i=0;i<=name;i++){GLImmediate.clientAttributes[i]||={name,size,type,stride,pointer,offset:0}}}else{attrib.name=name;attrib.size=size;attrib.type=type;attrib.stride=stride;attrib.pointer=pointer;attrib.offset=0}GLImmediate.modifiedClientAttributes=true},addRendererComponent(name,size,type){if(!GLImmediate.rendererComponents[name]){GLImmediate.rendererComponents[name]=1;if(GLImmediate.enabledClientAttributes[name]){warnOnce("Warning: glTexCoord used after EnableClientState for TEXTURE_COORD_ARRAY for TEXTURE0. Disabling TEXTURE_COORD_ARRAY...")}GLImmediate.enabledClientAttributes[name]=true;GLImmediate.setClientAttribute(name,size,type,0,GLImmediate.rendererComponentPointer);GLImmediate.rendererComponentPointer+=size*GL.byteSizeByType[type-GL.byteSizeByTypeRoot]}else{GLImmediate.rendererComponents[name]++}},disableBeginEndClientAttributes(){for(var i=0;i0&&this.normalLocation>=0;this.hasColor=this.colorLocation===0||this.colorLocation>0;this.floatType=GLctx.FLOAT;this.fogColorLocation=GLctx.getUniformLocation(this.program,"u_fogColor");this.fogEndLocation=GLctx.getUniformLocation(this.program,"u_fogEnd");this.fogScaleLocation=GLctx.getUniformLocation(this.program,"u_fogScale");this.fogDensityLocation=GLctx.getUniformLocation(this.program,"u_fogDensity");this.hasFog=!!(this.fogColorLocation||this.fogEndLocation||this.fogScaleLocation||this.fogDensityLocation);this.pointSizeLocation=GLctx.getUniformLocation(this.program,"u_pointSize");this.hasClipPlane=false;this.clipPlaneEquationLocation=[];for(var clipPlaneId=0;clipPlaneId>2,end>>2))}if(!GL.currProgram){if(GLImmediate.fixedFunctionProgram!=this.program){GLctx.useProgram(this.program);GLImmediate.fixedFunctionProgram=this.program}}if(this.modelViewLocation&&this.modelViewMatrixVersion!=GLImmediate.matrixVersion[0]){this.modelViewMatrixVersion=GLImmediate.matrixVersion[0];GLctx.uniformMatrix4fv(this.modelViewLocation,false,GLImmediate.matrix[0]);if(GLEmulation.lightEnabled){var tmpMVinv=GLImmediate.matrixLib.mat4.create(GLImmediate.matrix[0]);GLImmediate.matrixLib.mat4.inverse(tmpMVinv);GLImmediate.matrixLib.mat4.transpose(tmpMVinv);GLctx.uniformMatrix3fv(this.normalMatrixLocation,false,GLImmediate.matrixLib.mat4.toMat3(tmpMVinv))}}if(this.projectionLocation&&this.projectionMatrixVersion!=GLImmediate.matrixVersion[1]){this.projectionMatrixVersion=GLImmediate.matrixVersion[1];GLctx.uniformMatrix4fv(this.projectionLocation,false,GLImmediate.matrix[1])}var clientAttributes=GLImmediate.clientAttributes;var posAttr=clientAttributes[GLImmediate.VERTEX];GLctx.vertexAttribPointer(this.positionLocation,posAttr.size,posAttr.type,false,GLImmediate.stride,posAttr.offset);GLctx.enableVertexAttribArray(this.positionLocation);if(this.hasNormal){var normalAttr=clientAttributes[GLImmediate.NORMAL];GLctx.vertexAttribPointer(this.normalLocation,normalAttr.size,normalAttr.type,true,GLImmediate.stride,normalAttr.offset);GLctx.enableVertexAttribArray(this.normalLocation)}if(this.hasTextures){for(var i=0;i=0){GLctx.disableVertexAttribArray(this.texCoordLocations[i])}}}if(this.hasColor){GLctx.disableVertexAttribArray(this.colorLocation)}if(this.hasNormal){GLctx.disableVertexAttribArray(this.normalLocation)}if(!GL.currProgram){GLctx.useProgram(null);GLImmediate.fixedFunctionProgram=0}if(!GLctx.currentArrayBufferBinding){GLctx.bindBuffer(GLctx.ARRAY_BUFFER,null);GLImmediate.lastArrayBuffer=null}GLImmediate.matricesModified=true};this.init()}return new Renderer},setupFuncs(){GLImmediate.MapTreeLib=GLImmediate.spawnMapTreeLib();GLImmediate.spawnMapTreeLib=null;GLImmediate.TexEnvJIT=GLImmediate.spawnTexEnvJIT();GLImmediate.spawnTexEnvJIT=null;GLImmediate.setupHooks()},setupHooks(){if(!GLEmulation.hasRunInit){GLEmulation.init()}var glActiveTexture=_glActiveTexture;_glActiveTexture=_emscripten_glActiveTexture=texture=>{GLImmediate.TexEnvJIT.hook_activeTexture(texture);glActiveTexture(texture)};var glEnable=_glEnable;_glEnable=_emscripten_glEnable=cap=>{GLImmediate.TexEnvJIT.hook_enable(cap);glEnable(cap)};var glDisable=_glDisable;_glDisable=_emscripten_glDisable=cap=>{GLImmediate.TexEnvJIT.hook_disable(cap);glDisable(cap)};_glTexEnvf=_emscripten_glTexEnvf=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_texEnvf(target,pname,param)};_glTexEnvi=_emscripten_glTexEnvi=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_texEnvi(target,pname,param)};_glTexEnvfv=_emscripten_glTexEnvfv=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_texEnvfv(target,pname,param)};_glGetTexEnviv=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_getTexEnviv(target,pname,param)};_glGetTexEnvfv=(target,pname,param)=>{GLImmediate.TexEnvJIT.hook_getTexEnvfv(target,pname,param)};var glGetIntegerv=_glGetIntegerv;_glGetIntegerv=_emscripten_glGetIntegerv=(pname,params)=>{switch(pname){case 35725:{var cur=GLctx.getParameter(GLctx.CURRENT_PROGRAM);if(cur==GLImmediate.fixedFunctionProgram){HEAP32[params>>2]=0;checkInt32(0);return}break}}glGetIntegerv(pname,params)}},initted:false,init(){err("WARNING: using emscripten GL immediate mode emulation. This is very limited in what it supports");GLImmediate.initted=true;if(!Browser.useWebGL)return;GLImmediate.MAX_TEXTURES=Math.min(Module["GL_MAX_TEXTURE_IMAGE_UNITS"]||GLctx.getParameter(GLctx.MAX_TEXTURE_IMAGE_UNITS),28);GLImmediate.TexEnvJIT.init(GLctx,GLImmediate.MAX_TEXTURES);GLImmediate.NUM_ATTRIBUTES=3+GLImmediate.MAX_TEXTURES;GLImmediate.clientAttributes=[];GLEmulation.enabledClientAttribIndices=[];for(var i=0;i>2);GLImmediate.indexData=new Uint16Array(GL.MAX_TEMP_BUFFER_SIZE>>1);GLImmediate.vertexDataU8=new Uint8Array(GLImmediate.tempData.buffer);GL.generateTempBuffers(true,GL.currentContext);GLImmediate.clientColor=new Float32Array([1,1,1,1])},prepareClientAttributes(count,beginEnd){if(!GLImmediate.modifiedClientAttributes){GLImmediate.vertexCounter=GLImmediate.stride*count/4;return}GLImmediate.modifiedClientAttributes=false;var clientStartPointer=4294967295;var bytes=0;var minStride=4294967295;var maxStride=0;var attributes=GLImmediate.liveClientAttributes;attributes.length=0;for(var i=0;i<3+GLImmediate.MAX_TEXTURES;i++){if(GLImmediate.enabledClientAttributes[i]){var attr=GLImmediate.clientAttributes[i];attributes.push(attr);clientStartPointer=Math.min(clientStartPointer,attr.pointer);attr.sizeBytes=attr.size*GL.byteSizeByType[attr.type-GL.byteSizeByTypeRoot];bytes+=attr.sizeBytes;minStride=Math.min(minStride,attr.stride);maxStride=Math.max(maxStride,attr.stride)}}if((minStride!=maxStride||maxStride>2];HEAP32[start+attr.offset+(bytes*j+k)>>2]=val;checkInt32(val)}}}else{for(var j=0;j=0||!numProvidedIndexes);var renderer=GLImmediate.getRenderer();var numVertices=4*GLImmediate.vertexCounter/GLImmediate.stride;if(!numVertices)return;assert(numVertices%1==0,"`numVertices` must be an integer.");var emulatedElementArrayBuffer=false;var numIndexes=0;if(numProvidedIndexes){numIndexes=numProvidedIndexes;if(!GLctx.currentArrayBufferBinding&&GLImmediate.firstVertex>GLImmediate.lastVertex){assert(!GLctx.currentElementArrayBufferBinding);for(var i=0;i>1];GLImmediate.firstVertex=Math.min(GLImmediate.firstVertex,currIndex);GLImmediate.lastVertex=Math.max(GLImmediate.lastVertex,currIndex+1)}}if(!GLctx.currentElementArrayBufferBinding){assert(numProvidedIndexes<<1<=GL.MAX_TEMP_BUFFER_SIZE,"too many immediate mode indexes (a)");var indexBuffer=GL.getTempIndexBuffer(numProvidedIndexes<<1);GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,indexBuffer);GLctx.bufferSubData(GLctx.ELEMENT_ARRAY_BUFFER,0,HEAPU16.subarray(ptr>>1,ptr+(numProvidedIndexes<<1)>>1));ptr=0;emulatedElementArrayBuffer=true}}else if(GLImmediate.mode>6){if(GLImmediate.mode!=7)abort("unsupported immediate mode "+GLImmediate.mode);assert(GLImmediate.firstVertex%4==0);ptr=GLImmediate.firstVertex*3;var numQuads=numVertices/4;numIndexes=numQuads*6;assert(ptr+(numIndexes<<1)<=GL.MAX_TEMP_BUFFER_SIZE,"too many immediate mode indexes (b)");GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,GL.currentContext.tempQuadIndexBuffer);emulatedElementArrayBuffer=true;GLImmediate.mode=GLctx.TRIANGLES}renderer.prepare();if(numIndexes){GLctx.drawElements(GLImmediate.mode,numIndexes,GLctx.UNSIGNED_SHORT,ptr)}else{GLctx.drawArrays(GLImmediate.mode,startIndex,numVertices)}if(emulatedElementArrayBuffer){GLctx.bindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,GL.buffers[GLctx.currentElementArrayBufferBinding]||null)}renderer.cleanup()}};GLImmediate.matrixLib=(()=>{var vec3={};var mat3={};var mat4={};var quat4={};var MatrixArray=Float32Array;vec3.create=function(vec){var dest=new MatrixArray(3);if(vec){dest[0]=vec[0];dest[1]=vec[1];dest[2]=vec[2]}else{dest[0]=dest[1]=dest[2]=0}return dest};vec3.set=function(vec,dest){dest[0]=vec[0];dest[1]=vec[1];dest[2]=vec[2];return dest};vec3.add=function(vec,vec2,dest){if(!dest||vec===dest){vec[0]+=vec2[0];vec[1]+=vec2[1];vec[2]+=vec2[2];return vec}dest[0]=vec[0]+vec2[0];dest[1]=vec[1]+vec2[1];dest[2]=vec[2]+vec2[2];return dest};vec3.subtract=function(vec,vec2,dest){if(!dest||vec===dest){vec[0]-=vec2[0];vec[1]-=vec2[1];vec[2]-=vec2[2];return vec}dest[0]=vec[0]-vec2[0];dest[1]=vec[1]-vec2[1];dest[2]=vec[2]-vec2[2];return dest};vec3.multiply=function(vec,vec2,dest){if(!dest||vec===dest){vec[0]*=vec2[0];vec[1]*=vec2[1];vec[2]*=vec2[2];return vec}dest[0]=vec[0]*vec2[0];dest[1]=vec[1]*vec2[1];dest[2]=vec[2]*vec2[2];return dest};vec3.negate=function(vec,dest){if(!dest){dest=vec}dest[0]=-vec[0];dest[1]=-vec[1];dest[2]=-vec[2];return dest};vec3.scale=function(vec,val,dest){if(!dest||vec===dest){vec[0]*=val;vec[1]*=val;vec[2]*=val;return vec}dest[0]=vec[0]*val;dest[1]=vec[1]*val;dest[2]=vec[2]*val;return dest};vec3.normalize=function(vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],len=Math.sqrt(x*x+y*y+z*z);if(!len){dest[0]=0;dest[1]=0;dest[2]=0;return dest}else if(len===1){dest[0]=x;dest[1]=y;dest[2]=z;return dest}len=1/len;dest[0]=x*len;dest[1]=y*len;dest[2]=z*len;return dest};vec3.cross=function(vec,vec2,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],x2=vec2[0],y2=vec2[1],z2=vec2[2];dest[0]=y*z2-z*y2;dest[1]=z*x2-x*z2;dest[2]=x*y2-y*x2;return dest};vec3.length=function(vec){var x=vec[0],y=vec[1],z=vec[2];return Math.sqrt(x*x+y*y+z*z)};vec3.dot=function(vec,vec2){return vec[0]*vec2[0]+vec[1]*vec2[1]+vec[2]*vec2[2]};vec3.direction=function(vec,vec2,dest){if(!dest){dest=vec}var x=vec[0]-vec2[0],y=vec[1]-vec2[1],z=vec[2]-vec2[2],len=Math.sqrt(x*x+y*y+z*z);if(!len){dest[0]=0;dest[1]=0;dest[2]=0;return dest}len=1/len;dest[0]=x*len;dest[1]=y*len;dest[2]=z*len;return dest};vec3.lerp=function(vec,vec2,lerp,dest){if(!dest){dest=vec}dest[0]=vec[0]+lerp*(vec2[0]-vec[0]);dest[1]=vec[1]+lerp*(vec2[1]-vec[1]);dest[2]=vec[2]+lerp*(vec2[2]-vec[2]);return dest};vec3.dist=function(vec,vec2){var x=vec2[0]-vec[0],y=vec2[1]-vec[1],z=vec2[2]-vec[2];return Math.sqrt(x*x+y*y+z*z)};vec3.unproject=function(vec,view,proj,viewport,dest){if(!dest){dest=vec}var m=mat4.create();var v=new MatrixArray(4);v[0]=(vec[0]-viewport[0])*2/viewport[2]-1;v[1]=(vec[1]-viewport[1])*2/viewport[3]-1;v[2]=2*vec[2]-1;v[3]=1;mat4.multiply(proj,view,m);if(!mat4.inverse(m)){return null}mat4.multiplyVec4(m,v);if(v[3]===0){return null}dest[0]=v[0]/v[3];dest[1]=v[1]/v[3];dest[2]=v[2]/v[3];return dest};vec3.str=function(vec){return"["+vec[0]+", "+vec[1]+", "+vec[2]+"]"};mat3.create=function(mat){var dest=new MatrixArray(9);if(mat){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8]}return dest};mat3.set=function(mat,dest){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];return dest};mat3.identity=function(dest){if(!dest){dest=mat3.create()}dest[0]=1;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=1;dest[5]=0;dest[6]=0;dest[7]=0;dest[8]=1;return dest};mat3.transpose=function(mat,dest){if(!dest||mat===dest){var a01=mat[1],a02=mat[2],a12=mat[5];mat[1]=mat[3];mat[2]=mat[6];mat[3]=a01;mat[5]=mat[7];mat[6]=a02;mat[7]=a12;return mat}dest[0]=mat[0];dest[1]=mat[3];dest[2]=mat[6];dest[3]=mat[1];dest[4]=mat[4];dest[5]=mat[7];dest[6]=mat[2];dest[7]=mat[5];dest[8]=mat[8];return dest};mat3.toMat4=function(mat,dest){if(!dest){dest=mat4.create()}dest[15]=1;dest[14]=0;dest[13]=0;dest[12]=0;dest[11]=0;dest[10]=mat[8];dest[9]=mat[7];dest[8]=mat[6];dest[7]=0;dest[6]=mat[5];dest[5]=mat[4];dest[4]=mat[3];dest[3]=0;dest[2]=mat[2];dest[1]=mat[1];dest[0]=mat[0];return dest};mat3.str=function(mat){return"["+mat[0]+", "+mat[1]+", "+mat[2]+", "+mat[3]+", "+mat[4]+", "+mat[5]+", "+mat[6]+", "+mat[7]+", "+mat[8]+"]"};mat4.create=function(mat){var dest=new MatrixArray(16);if(mat){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}return dest};mat4.set=function(mat,dest){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15];return dest};mat4.identity=function(dest){if(!dest){dest=mat4.create()}dest[0]=1;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=0;dest[5]=1;dest[6]=0;dest[7]=0;dest[8]=0;dest[9]=0;dest[10]=1;dest[11]=0;dest[12]=0;dest[13]=0;dest[14]=0;dest[15]=1;return dest};mat4.transpose=function(mat,dest){if(!dest||mat===dest){var a01=mat[1],a02=mat[2],a03=mat[3],a12=mat[6],a13=mat[7],a23=mat[11];mat[1]=mat[4];mat[2]=mat[8];mat[3]=mat[12];mat[4]=a01;mat[6]=mat[9];mat[7]=mat[13];mat[8]=a02;mat[9]=a12;mat[11]=mat[14];mat[12]=a03;mat[13]=a13;mat[14]=a23;return mat}dest[0]=mat[0];dest[1]=mat[4];dest[2]=mat[8];dest[3]=mat[12];dest[4]=mat[1];dest[5]=mat[5];dest[6]=mat[9];dest[7]=mat[13];dest[8]=mat[2];dest[9]=mat[6];dest[10]=mat[10];dest[11]=mat[14];dest[12]=mat[3];dest[13]=mat[7];dest[14]=mat[11];dest[15]=mat[15];return dest};mat4.determinant=function(mat){var a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11],a30=mat[12],a31=mat[13],a32=mat[14],a33=mat[15];return a30*a21*a12*a03-a20*a31*a12*a03-a30*a11*a22*a03+a10*a31*a22*a03+a20*a11*a32*a03-a10*a21*a32*a03-a30*a21*a02*a13+a20*a31*a02*a13+a30*a01*a22*a13-a00*a31*a22*a13-a20*a01*a32*a13+a00*a21*a32*a13+a30*a11*a02*a23-a10*a31*a02*a23-a30*a01*a12*a23+a00*a31*a12*a23+a10*a01*a32*a23-a00*a11*a32*a23-a20*a11*a02*a33+a10*a21*a02*a33+a20*a01*a12*a33-a00*a21*a12*a33-a10*a01*a22*a33+a00*a11*a22*a33};mat4.inverse=function(mat,dest){if(!dest){dest=mat}var a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11],a30=mat[12],a31=mat[13],a32=mat[14],a33=mat[15],b00=a00*a11-a01*a10,b01=a00*a12-a02*a10,b02=a00*a13-a03*a10,b03=a01*a12-a02*a11,b04=a01*a13-a03*a11,b05=a02*a13-a03*a12,b06=a20*a31-a21*a30,b07=a20*a32-a22*a30,b08=a20*a33-a23*a30,b09=a21*a32-a22*a31,b10=a21*a33-a23*a31,b11=a22*a33-a23*a32,d=b00*b11-b01*b10+b02*b09+b03*b08-b04*b07+b05*b06,invDet;if(!d){return null}invDet=1/d;dest[0]=(a11*b11-a12*b10+a13*b09)*invDet;dest[1]=(-a01*b11+a02*b10-a03*b09)*invDet;dest[2]=(a31*b05-a32*b04+a33*b03)*invDet;dest[3]=(-a21*b05+a22*b04-a23*b03)*invDet;dest[4]=(-a10*b11+a12*b08-a13*b07)*invDet;dest[5]=(a00*b11-a02*b08+a03*b07)*invDet;dest[6]=(-a30*b05+a32*b02-a33*b01)*invDet;dest[7]=(a20*b05-a22*b02+a23*b01)*invDet;dest[8]=(a10*b10-a11*b08+a13*b06)*invDet;dest[9]=(-a00*b10+a01*b08-a03*b06)*invDet;dest[10]=(a30*b04-a31*b02+a33*b00)*invDet;dest[11]=(-a20*b04+a21*b02-a23*b00)*invDet;dest[12]=(-a10*b09+a11*b07-a12*b06)*invDet;dest[13]=(a00*b09-a01*b07+a02*b06)*invDet;dest[14]=(-a30*b03+a31*b01-a32*b00)*invDet;dest[15]=(a20*b03-a21*b01+a22*b00)*invDet;return dest};mat4.toRotationMat=function(mat,dest){if(!dest){dest=mat4.create()}dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=0;dest[13]=0;dest[14]=0;dest[15]=1;return dest};mat4.toMat3=function(mat,dest){if(!dest){dest=mat3.create()}dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[4];dest[4]=mat[5];dest[5]=mat[6];dest[6]=mat[8];dest[7]=mat[9];dest[8]=mat[10];return dest};mat4.toInverseMat3=function(mat,dest){var a00=mat[0],a01=mat[1],a02=mat[2],a10=mat[4],a11=mat[5],a12=mat[6],a20=mat[8],a21=mat[9],a22=mat[10],b01=a22*a11-a12*a21,b11=-a22*a10+a12*a20,b21=a21*a10-a11*a20,d=a00*b01+a01*b11+a02*b21,id;if(!d){return null}id=1/d;if(!dest){dest=mat3.create()}dest[0]=b01*id;dest[1]=(-a22*a01+a02*a21)*id;dest[2]=(a12*a01-a02*a11)*id;dest[3]=b11*id;dest[4]=(a22*a00-a02*a20)*id;dest[5]=(-a12*a00+a02*a10)*id;dest[6]=b21*id;dest[7]=(-a21*a00+a01*a20)*id;dest[8]=(a11*a00-a01*a10)*id;return dest};mat4.multiply=function(mat,mat2,dest){if(!dest){dest=mat}var a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11],a30=mat[12],a31=mat[13],a32=mat[14],a33=mat[15],b00=mat2[0],b01=mat2[1],b02=mat2[2],b03=mat2[3],b10=mat2[4],b11=mat2[5],b12=mat2[6],b13=mat2[7],b20=mat2[8],b21=mat2[9],b22=mat2[10],b23=mat2[11],b30=mat2[12],b31=mat2[13],b32=mat2[14],b33=mat2[15];dest[0]=b00*a00+b01*a10+b02*a20+b03*a30;dest[1]=b00*a01+b01*a11+b02*a21+b03*a31;dest[2]=b00*a02+b01*a12+b02*a22+b03*a32;dest[3]=b00*a03+b01*a13+b02*a23+b03*a33;dest[4]=b10*a00+b11*a10+b12*a20+b13*a30;dest[5]=b10*a01+b11*a11+b12*a21+b13*a31;dest[6]=b10*a02+b11*a12+b12*a22+b13*a32;dest[7]=b10*a03+b11*a13+b12*a23+b13*a33;dest[8]=b20*a00+b21*a10+b22*a20+b23*a30;dest[9]=b20*a01+b21*a11+b22*a21+b23*a31;dest[10]=b20*a02+b21*a12+b22*a22+b23*a32;dest[11]=b20*a03+b21*a13+b22*a23+b23*a33;dest[12]=b30*a00+b31*a10+b32*a20+b33*a30;dest[13]=b30*a01+b31*a11+b32*a21+b33*a31;dest[14]=b30*a02+b31*a12+b32*a22+b33*a32;dest[15]=b30*a03+b31*a13+b32*a23+b33*a33;return dest};mat4.multiplyVec3=function(mat,vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2];dest[0]=mat[0]*x+mat[4]*y+mat[8]*z+mat[12];dest[1]=mat[1]*x+mat[5]*y+mat[9]*z+mat[13];dest[2]=mat[2]*x+mat[6]*y+mat[10]*z+mat[14];return dest};mat4.multiplyVec4=function(mat,vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],w=vec[3];dest[0]=mat[0]*x+mat[4]*y+mat[8]*z+mat[12]*w;dest[1]=mat[1]*x+mat[5]*y+mat[9]*z+mat[13]*w;dest[2]=mat[2]*x+mat[6]*y+mat[10]*z+mat[14]*w;dest[3]=mat[3]*x+mat[7]*y+mat[11]*z+mat[15]*w;return dest};mat4.translate=function(mat,vec,dest){var x=vec[0],y=vec[1],z=vec[2],a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23;if(!dest||mat===dest){mat[12]=mat[0]*x+mat[4]*y+mat[8]*z+mat[12];mat[13]=mat[1]*x+mat[5]*y+mat[9]*z+mat[13];mat[14]=mat[2]*x+mat[6]*y+mat[10]*z+mat[14];mat[15]=mat[3]*x+mat[7]*y+mat[11]*z+mat[15];return mat}a00=mat[0];a01=mat[1];a02=mat[2];a03=mat[3];a10=mat[4];a11=mat[5];a12=mat[6];a13=mat[7];a20=mat[8];a21=mat[9];a22=mat[10];a23=mat[11];dest[0]=a00;dest[1]=a01;dest[2]=a02;dest[3]=a03;dest[4]=a10;dest[5]=a11;dest[6]=a12;dest[7]=a13;dest[8]=a20;dest[9]=a21;dest[10]=a22;dest[11]=a23;dest[12]=a00*x+a10*y+a20*z+mat[12];dest[13]=a01*x+a11*y+a21*z+mat[13];dest[14]=a02*x+a12*y+a22*z+mat[14];dest[15]=a03*x+a13*y+a23*z+mat[15];return dest};mat4.scale=function(mat,vec,dest){var x=vec[0],y=vec[1],z=vec[2];if(!dest||mat===dest){mat[0]*=x;mat[1]*=x;mat[2]*=x;mat[3]*=x;mat[4]*=y;mat[5]*=y;mat[6]*=y;mat[7]*=y;mat[8]*=z;mat[9]*=z;mat[10]*=z;mat[11]*=z;return mat}dest[0]=mat[0]*x;dest[1]=mat[1]*x;dest[2]=mat[2]*x;dest[3]=mat[3]*x;dest[4]=mat[4]*y;dest[5]=mat[5]*y;dest[6]=mat[6]*y;dest[7]=mat[7]*y;dest[8]=mat[8]*z;dest[9]=mat[9]*z;dest[10]=mat[10]*z;dest[11]=mat[11]*z;dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15];return dest};mat4.rotate=function(mat,angle,axis,dest){var x=axis[0],y=axis[1],z=axis[2],len=Math.sqrt(x*x+y*y+z*z),s,c,t,a00,a01,a02,a03,a10,a11,a12,a13,a20,a21,a22,a23,b00,b01,b02,b10,b11,b12,b20,b21,b22;if(!len){return null}if(len!==1){len=1/len;x*=len;y*=len;z*=len}s=Math.sin(angle);c=Math.cos(angle);t=1-c;a00=mat[0];a01=mat[1];a02=mat[2];a03=mat[3];a10=mat[4];a11=mat[5];a12=mat[6];a13=mat[7];a20=mat[8];a21=mat[9];a22=mat[10];a23=mat[11];b00=x*x*t+c;b01=y*x*t+z*s;b02=z*x*t-y*s;b10=x*y*t-z*s;b11=y*y*t+c;b12=z*y*t+x*s;b20=x*z*t+y*s;b21=y*z*t-x*s;b22=z*z*t+c;if(!dest){dest=mat}else if(mat!==dest){dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[0]=a00*b00+a10*b01+a20*b02;dest[1]=a01*b00+a11*b01+a21*b02;dest[2]=a02*b00+a12*b01+a22*b02;dest[3]=a03*b00+a13*b01+a23*b02;dest[4]=a00*b10+a10*b11+a20*b12;dest[5]=a01*b10+a11*b11+a21*b12;dest[6]=a02*b10+a12*b11+a22*b12;dest[7]=a03*b10+a13*b11+a23*b12;dest[8]=a00*b20+a10*b21+a20*b22;dest[9]=a01*b20+a11*b21+a21*b22;dest[10]=a02*b20+a12*b21+a22*b22;dest[11]=a03*b20+a13*b21+a23*b22;return dest};mat4.rotateX=function(mat,angle,dest){var s=Math.sin(angle),c=Math.cos(angle),a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11];if(!dest){dest=mat}else if(mat!==dest){dest[0]=mat[0];dest[1]=mat[1];dest[2]=mat[2];dest[3]=mat[3];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[4]=a10*c+a20*s;dest[5]=a11*c+a21*s;dest[6]=a12*c+a22*s;dest[7]=a13*c+a23*s;dest[8]=a10*-s+a20*c;dest[9]=a11*-s+a21*c;dest[10]=a12*-s+a22*c;dest[11]=a13*-s+a23*c;return dest};mat4.rotateY=function(mat,angle,dest){var s=Math.sin(angle),c=Math.cos(angle),a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a20=mat[8],a21=mat[9],a22=mat[10],a23=mat[11];if(!dest){dest=mat}else if(mat!==dest){dest[4]=mat[4];dest[5]=mat[5];dest[6]=mat[6];dest[7]=mat[7];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[0]=a00*c+a20*-s;dest[1]=a01*c+a21*-s;dest[2]=a02*c+a22*-s;dest[3]=a03*c+a23*-s;dest[8]=a00*s+a20*c;dest[9]=a01*s+a21*c;dest[10]=a02*s+a22*c;dest[11]=a03*s+a23*c;return dest};mat4.rotateZ=function(mat,angle,dest){var s=Math.sin(angle),c=Math.cos(angle),a00=mat[0],a01=mat[1],a02=mat[2],a03=mat[3],a10=mat[4],a11=mat[5],a12=mat[6],a13=mat[7];if(!dest){dest=mat}else if(mat!==dest){dest[8]=mat[8];dest[9]=mat[9];dest[10]=mat[10];dest[11]=mat[11];dest[12]=mat[12];dest[13]=mat[13];dest[14]=mat[14];dest[15]=mat[15]}dest[0]=a00*c+a10*s;dest[1]=a01*c+a11*s;dest[2]=a02*c+a12*s;dest[3]=a03*c+a13*s;dest[4]=a00*-s+a10*c;dest[5]=a01*-s+a11*c;dest[6]=a02*-s+a12*c;dest[7]=a03*-s+a13*c;return dest};mat4.frustum=function(left,right,bottom,top,near,far,dest){if(!dest){dest=mat4.create()}var rl=right-left,tb=top-bottom,fn=far-near;dest[0]=near*2/rl;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=0;dest[5]=near*2/tb;dest[6]=0;dest[7]=0;dest[8]=(right+left)/rl;dest[9]=(top+bottom)/tb;dest[10]=-(far+near)/fn;dest[11]=-1;dest[12]=0;dest[13]=0;dest[14]=-(far*near*2)/fn;dest[15]=0;return dest};mat4.perspective=function(fovy,aspect,near,far,dest){var top=near*Math.tan(fovy*Math.PI/360),right=top*aspect;return mat4.frustum(-right,right,-top,top,near,far,dest)};mat4.ortho=function(left,right,bottom,top,near,far,dest){if(!dest){dest=mat4.create()}var rl=right-left,tb=top-bottom,fn=far-near;dest[0]=2/rl;dest[1]=0;dest[2]=0;dest[3]=0;dest[4]=0;dest[5]=2/tb;dest[6]=0;dest[7]=0;dest[8]=0;dest[9]=0;dest[10]=-2/fn;dest[11]=0;dest[12]=-(left+right)/rl;dest[13]=-(top+bottom)/tb;dest[14]=-(far+near)/fn;dest[15]=1;return dest};mat4.lookAt=function(eye,center,up,dest){if(!dest){dest=mat4.create()}var x0,x1,x2,y0,y1,y2,z0,z1,z2,len,eyex=eye[0],eyey=eye[1],eyez=eye[2],upx=up[0],upy=up[1],upz=up[2],centerx=center[0],centery=center[1],centerz=center[2];if(eyex===centerx&&eyey===centery&&eyez===centerz){return mat4.identity(dest)}z0=eyex-centerx;z1=eyey-centery;z2=eyez-centerz;len=1/Math.sqrt(z0*z0+z1*z1+z2*z2);z0*=len;z1*=len;z2*=len;x0=upy*z2-upz*z1;x1=upz*z0-upx*z2;x2=upx*z1-upy*z0;len=Math.sqrt(x0*x0+x1*x1+x2*x2);if(!len){x0=0;x1=0;x2=0}else{len=1/len;x0*=len;x1*=len;x2*=len}y0=z1*x2-z2*x1;y1=z2*x0-z0*x2;y2=z0*x1-z1*x0;len=Math.sqrt(y0*y0+y1*y1+y2*y2);if(!len){y0=0;y1=0;y2=0}else{len=1/len;y0*=len;y1*=len;y2*=len}dest[0]=x0;dest[1]=y0;dest[2]=z0;dest[3]=0;dest[4]=x1;dest[5]=y1;dest[6]=z1;dest[7]=0;dest[8]=x2;dest[9]=y2;dest[10]=z2;dest[11]=0;dest[12]=-(x0*eyex+x1*eyey+x2*eyez);dest[13]=-(y0*eyex+y1*eyey+y2*eyez);dest[14]=-(z0*eyex+z1*eyey+z2*eyez);dest[15]=1;return dest};mat4.fromRotationTranslation=function(quat,vec,dest){if(!dest){dest=mat4.create()}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;dest[0]=1-(yy+zz);dest[1]=xy+wz;dest[2]=xz-wy;dest[3]=0;dest[4]=xy-wz;dest[5]=1-(xx+zz);dest[6]=yz+wx;dest[7]=0;dest[8]=xz+wy;dest[9]=yz-wx;dest[10]=1-(xx+yy);dest[11]=0;dest[12]=vec[0];dest[13]=vec[1];dest[14]=vec[2];dest[15]=1;return dest};mat4.str=function(mat){return"["+mat[0]+", "+mat[1]+", "+mat[2]+", "+mat[3]+", "+mat[4]+", "+mat[5]+", "+mat[6]+", "+mat[7]+", "+mat[8]+", "+mat[9]+", "+mat[10]+", "+mat[11]+", "+mat[12]+", "+mat[13]+", "+mat[14]+", "+mat[15]+"]"};quat4.create=function(quat){var dest=new MatrixArray(4);if(quat){dest[0]=quat[0];dest[1]=quat[1];dest[2]=quat[2];dest[3]=quat[3]}return dest};quat4.set=function(quat,dest){dest[0]=quat[0];dest[1]=quat[1];dest[2]=quat[2];dest[3]=quat[3];return dest};quat4.calculateW=function(quat,dest){var x=quat[0],y=quat[1],z=quat[2];if(!dest||quat===dest){quat[3]=-Math.sqrt(Math.abs(1-x*x-y*y-z*z));return quat}dest[0]=x;dest[1]=y;dest[2]=z;dest[3]=-Math.sqrt(Math.abs(1-x*x-y*y-z*z));return dest};quat4.dot=function(quat,quat2){return quat[0]*quat2[0]+quat[1]*quat2[1]+quat[2]*quat2[2]+quat[3]*quat2[3]};quat4.inverse=function(quat,dest){var q0=quat[0],q1=quat[1],q2=quat[2],q3=quat[3],dot=q0*q0+q1*q1+q2*q2+q3*q3,invDot=dot?1/dot:0;if(!dest||quat===dest){quat[0]*=-invDot;quat[1]*=-invDot;quat[2]*=-invDot;quat[3]*=invDot;return quat}dest[0]=-quat[0]*invDot;dest[1]=-quat[1]*invDot;dest[2]=-quat[2]*invDot;dest[3]=quat[3]*invDot;return dest};quat4.conjugate=function(quat,dest){if(!dest||quat===dest){quat[0]*=-1;quat[1]*=-1;quat[2]*=-1;return quat}dest[0]=-quat[0];dest[1]=-quat[1];dest[2]=-quat[2];dest[3]=quat[3];return dest};quat4.length=function(quat){var x=quat[0],y=quat[1],z=quat[2],w=quat[3];return Math.sqrt(x*x+y*y+z*z+w*w)};quat4.normalize=function(quat,dest){if(!dest){dest=quat}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],len=Math.sqrt(x*x+y*y+z*z+w*w);if(len===0){dest[0]=0;dest[1]=0;dest[2]=0;dest[3]=0;return dest}len=1/len;dest[0]=x*len;dest[1]=y*len;dest[2]=z*len;dest[3]=w*len;return dest};quat4.add=function(quat,quat2,dest){if(!dest||quat===dest){quat[0]+=quat2[0];quat[1]+=quat2[1];quat[2]+=quat2[2];quat[3]+=quat2[3];return quat}dest[0]=quat[0]+quat2[0];dest[1]=quat[1]+quat2[1];dest[2]=quat[2]+quat2[2];dest[3]=quat[3]+quat2[3];return dest};quat4.multiply=function(quat,quat2,dest){if(!dest){dest=quat}var qax=quat[0],qay=quat[1],qaz=quat[2],qaw=quat[3],qbx=quat2[0],qby=quat2[1],qbz=quat2[2],qbw=quat2[3];dest[0]=qax*qbw+qaw*qbx+qay*qbz-qaz*qby;dest[1]=qay*qbw+qaw*qby+qaz*qbx-qax*qbz;dest[2]=qaz*qbw+qaw*qbz+qax*qby-qay*qbx;dest[3]=qaw*qbw-qax*qbx-qay*qby-qaz*qbz;return dest};quat4.multiplyVec3=function(quat,vec,dest){if(!dest){dest=vec}var x=vec[0],y=vec[1],z=vec[2],qx=quat[0],qy=quat[1],qz=quat[2],qw=quat[3],ix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;dest[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;dest[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;dest[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;return dest};quat4.scale=function(quat,val,dest){if(!dest||quat===dest){quat[0]*=val;quat[1]*=val;quat[2]*=val;quat[3]*=val;return quat}dest[0]=quat[0]*val;dest[1]=quat[1]*val;dest[2]=quat[2]*val;dest[3]=quat[3]*val;return dest};quat4.toMat3=function(quat,dest){if(!dest){dest=mat3.create()}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;dest[0]=1-(yy+zz);dest[1]=xy+wz;dest[2]=xz-wy;dest[3]=xy-wz;dest[4]=1-(xx+zz);dest[5]=yz+wx;dest[6]=xz+wy;dest[7]=yz-wx;dest[8]=1-(xx+yy);return dest};quat4.toMat4=function(quat,dest){if(!dest){dest=mat4.create()}var x=quat[0],y=quat[1],z=quat[2],w=quat[3],x2=x+x,y2=y+y,z2=z+z,xx=x*x2,xy=x*y2,xz=x*z2,yy=y*y2,yz=y*z2,zz=z*z2,wx=w*x2,wy=w*y2,wz=w*z2;dest[0]=1-(yy+zz);dest[1]=xy+wz;dest[2]=xz-wy;dest[3]=0;dest[4]=xy-wz;dest[5]=1-(xx+zz);dest[6]=yz+wx;dest[7]=0;dest[8]=xz+wy;dest[9]=yz-wx;dest[10]=1-(xx+yy);dest[11]=0;dest[12]=0;dest[13]=0;dest[14]=0;dest[15]=1;return dest};quat4.slerp=function(quat,quat2,slerp,dest){if(!dest){dest=quat}var cosHalfTheta=quat[0]*quat2[0]+quat[1]*quat2[1]+quat[2]*quat2[2]+quat[3]*quat2[3],halfTheta,sinHalfTheta,ratioA,ratioB;if(Math.abs(cosHalfTheta)>=1){if(dest!==quat){dest[0]=quat[0];dest[1]=quat[1];dest[2]=quat[2];dest[3]=quat[3]}return dest}halfTheta=Math.acos(cosHalfTheta);sinHalfTheta=Math.sqrt(1-cosHalfTheta*cosHalfTheta);if(Math.abs(sinHalfTheta)<.001){dest[0]=quat[0]*.5+quat2[0]*.5;dest[1]=quat[1]*.5+quat2[1]*.5;dest[2]=quat[2]*.5+quat2[2]*.5;dest[3]=quat[3]*.5+quat2[3]*.5;return dest}ratioA=Math.sin((1-slerp)*halfTheta)/sinHalfTheta;ratioB=Math.sin(slerp*halfTheta)/sinHalfTheta;dest[0]=quat[0]*ratioA+quat2[0]*ratioB;dest[1]=quat[1]*ratioA+quat2[1]*ratioB;dest[2]=quat[2]*ratioA+quat2[2]*ratioB;dest[3]=quat[3]*ratioA+quat2[3]*ratioB;return dest};quat4.str=function(quat){return"["+quat[0]+", "+quat[1]+", "+quat[2]+", "+quat[3]+"]"};return{vec3,mat3,mat4,quat4}})();var _emscripten_glBegin=mode=>{GLImmediate.enabledClientAttributes_preBegin=GLImmediate.enabledClientAttributes;GLImmediate.enabledClientAttributes=[];GLImmediate.clientAttributes_preBegin=GLImmediate.clientAttributes;GLImmediate.clientAttributes=[];for(var i=0;i{GLctx.beginQuery(target,GL.queries[id])};var _emscripten_glBeginQueryEXT=(target,id)=>{GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.queries[id])};var _emscripten_glBeginTransformFeedback=x0=>GLctx.beginTransformFeedback(x0);var _emscripten_glBindBufferBase=(target,index,buffer)=>{GLctx.bindBufferBase(target,index,GL.buffers[buffer])};var _emscripten_glBindBufferRange=(target,index,buffer,offset,ptrsize)=>{GLctx.bindBufferRange(target,index,GL.buffers[buffer],offset,ptrsize)};var _emscripten_glBindFramebuffer=(target,framebuffer)=>{GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])};var _emscripten_glBindProgram=(type,id)=>{assert(id==0)};var _emscripten_glBindRenderbuffer=(target,renderbuffer)=>{GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])};var _emscripten_glBindSampler=(unit,sampler)=>{GLctx.bindSampler(unit,GL.samplers[sampler])};var _emscripten_glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _emscripten_glBindTransformFeedback=(target,id)=>{GLctx.bindTransformFeedback(target,GL.transformFeedbacks[id])};var _emscripten_glEnableClientState=cap=>{var attrib=GLEmulation.getAttributeFromCapability(cap);if(attrib===null){err(`WARNING: unhandled clientstate: ${cap}`);return}if(!GLImmediate.enabledClientAttributes[attrib]){GLImmediate.enabledClientAttributes[attrib]=true;GLImmediate.totalEnabledClientAttributes++;GLImmediate.currentRenderer=null;if(GLEmulation.currentVao)GLEmulation.currentVao.enabledClientStates[cap]=1;GLImmediate.modifiedClientAttributes=true}};var _glEnableClientState=_emscripten_glEnableClientState;var emulGlBindVertexArray=vao=>{GLEmulation.currentVao=null;GLImmediate.lastRenderer?.cleanup();_glBindBuffer(GLctx.ARRAY_BUFFER,0);_glBindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,0);for(var vaa in GLEmulation.enabledVertexAttribArrays){GLctx.disableVertexAttribArray(vaa)}GLEmulation.enabledVertexAttribArrays={};GLImmediate.enabledClientAttributes=[0,0];GLImmediate.totalEnabledClientAttributes=0;GLImmediate.modifiedClientAttributes=true;if(vao){var info=GLEmulation.vaos[vao];_glBindBuffer(GLctx.ARRAY_BUFFER,info.arrayBuffer);_glBindBuffer(GLctx.ELEMENT_ARRAY_BUFFER,info.elementArrayBuffer);for(var vaa in info.enabledVertexAttribArrays){_glEnableVertexAttribArray(vaa)}for(var vaa in info.vertexAttribPointers){_glVertexAttribPointer(...info.vertexAttribPointers[vaa])}for(var attrib in info.enabledClientStates){_glEnableClientState(attrib|0)}GLEmulation.currentVao=info}};var _emscripten_glBindVertexArray=vao=>{emulGlBindVertexArray(vao);var ibo=GLctx.getParameter(34965);GLctx.currentElementArrayBufferBinding=ibo?ibo.name|0:0};var _glBindVertexArray=_emscripten_glBindVertexArray;var _emscripten_glBindVertexArrayOES=_glBindVertexArray;var _emscripten_glBlendColor=(x0,x1,x2,x3)=>GLctx.blendColor(x0,x1,x2,x3);var _emscripten_glBlendEquation=x0=>GLctx.blendEquation(x0);var _emscripten_glBlendEquationSeparate=(x0,x1)=>GLctx.blendEquationSeparate(x0,x1);var _emscripten_glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);var _emscripten_glBlendFuncSeparate=(x0,x1,x2,x3)=>GLctx.blendFuncSeparate(x0,x1,x2,x3);var _emscripten_glBlitFramebuffer=(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9)=>GLctx.blitFramebuffer(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9);var _emscripten_glBufferData=(target,size,data,usage)=>{switch(usage){case 35041:case 35042:usage=35040;break;case 35045:case 35046:usage=35044;break;case 35049:case 35050:usage=35048;break}if(GL.currentContext.version>=2){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)};var _emscripten_glBufferSubData=(target,offset,size,data)=>{if(GL.currentContext.version>=2){size&&GLctx.bufferSubData(target,offset,HEAPU8,data,size);return}GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))};var _emscripten_glCheckFramebufferStatus=x0=>GLctx.checkFramebufferStatus(x0);var _emscripten_glClear=x0=>GLctx.clear(x0);var _emscripten_glClearBufferfi=(x0,x1,x2,x3)=>GLctx.clearBufferfi(x0,x1,x2,x3);var _emscripten_glClearBufferfv=(buffer,drawbuffer,value)=>{GLctx.clearBufferfv(buffer,drawbuffer,HEAPF32,value>>2)};var _emscripten_glClearBufferiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferiv(buffer,drawbuffer,HEAP32,value>>2)};var _emscripten_glClearBufferuiv=(buffer,drawbuffer,value)=>{GLctx.clearBufferuiv(buffer,drawbuffer,HEAPU32,value>>2)};var _emscripten_glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _emscripten_glClearDepthf=x0=>GLctx.clearDepth(x0);var _emscripten_glClearStencil=x0=>GLctx.clearStencil(x0);var _emscripten_glClientActiveTexture=texture=>{GLImmediate.clientActiveTexture=texture-33984};var _emscripten_glClientWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);return GLctx.clientWaitSync(GL.syncs[sync],flags,timeout)};var _emscripten_glClipControlEXT=(origin,depth)=>{GLctx.extClipControl["clipControlEXT"](origin,depth)};var _emscripten_glClipPlane=(pname,param)=>{if(pname>=12288&&pname<12294){var clipPlaneId=pname-12288;GLEmulation.clipPlaneEquation[clipPlaneId][0]=HEAPF64[param>>3];GLEmulation.clipPlaneEquation[clipPlaneId][1]=HEAPF64[param+8>>3];GLEmulation.clipPlaneEquation[clipPlaneId][2]=HEAPF64[param+16>>3];GLEmulation.clipPlaneEquation[clipPlaneId][3]=HEAPF64[param+24>>3];var tmpMV=GLImmediate.matrixLib.mat4.create(GLImmediate.matrix[0]);GLImmediate.matrixLib.mat4.inverse(tmpMV);GLImmediate.matrixLib.mat4.transpose(tmpMV);GLImmediate.matrixLib.mat4.multiplyVec4(tmpMV,GLEmulation.clipPlaneEquation[clipPlaneId])}};var _emscripten_glColor4f=(r,g,b,a)=>{r=Math.max(Math.min(r,1),0);g=Math.max(Math.min(g,1),0);b=Math.max(Math.min(b,1),0);a=Math.max(Math.min(a,1),0);if(GLImmediate.mode>=0){var start=GLImmediate.vertexCounter<<2;GLImmediate.vertexDataU8[start+0]=r*255;GLImmediate.vertexDataU8[start+1]=g*255;GLImmediate.vertexDataU8[start+2]=b*255;GLImmediate.vertexDataU8[start+3]=a*255;GLImmediate.vertexCounter++;GLImmediate.addRendererComponent(GLImmediate.COLOR,4,GLctx.UNSIGNED_BYTE)}else{GLImmediate.clientColor[0]=r;GLImmediate.clientColor[1]=g;GLImmediate.clientColor[2]=b;GLImmediate.clientColor[3]=a}};var _glColor4f=_emscripten_glColor4f;var _emscripten_glColor3f=(r,g,b)=>_glColor4f(r,g,b,1);var _glColor3f=_emscripten_glColor3f;var _emscripten_glColor3d=_glColor3f;var _emscripten_glColor3fv=p=>_glColor3f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2]);var _emscripten_glColor4ub=(r,g,b,a)=>_glColor4f((r&255)/255,(g&255)/255,(b&255)/255,(a&255)/255);var _glColor4ub=_emscripten_glColor4ub;var _emscripten_glColor3ub=(r,g,b)=>_glColor4ub(r,g,b,255);var _glColor3ub=_emscripten_glColor3ub;var _emscripten_glColor3ubv=p=>_glColor3ub(HEAP8[p],HEAP8[p+1],HEAP8[p+2]);var _emscripten_glColor4ui=(r,g,b,a)=>_glColor4f((r>>>0)/4294967295,(g>>>0)/4294967295,(b>>>0)/4294967295,(a>>>0)/4294967295);var _glColor4ui=_emscripten_glColor4ui;var _emscripten_glColor3ui=(r,g,b)=>_glColor4ui(r,g,b,4294967295);var _glColor3ui=_emscripten_glColor3ui;var _emscripten_glColor3uiv=p=>_glColor3ui(HEAP32[p>>2],HEAP32[p+4>>2],HEAP32[p+8>>2]);var _emscripten_glColor4us=(r,g,b,a)=>_glColor4f((r&65535)/65535,(g&65535)/65535,(b&65535)/65535,(a&65535)/65535);var _glColor4us=_emscripten_glColor4us;var _emscripten_glColor3us=(r,g,b)=>_glColor4us(r,g,b,65535);var _glColor3us=_emscripten_glColor3us;var _emscripten_glColor3usv=p=>_glColor3us(HEAP16[p>>1],HEAP16[p+2>>1],HEAP16[p+4>>1]);var _emscripten_glColor4d=_glColor4f;var _emscripten_glColor4fv=p=>_glColor4f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2],HEAPF32[p+12>>2]);var _emscripten_glColor4ubv=p=>_glColor4ub(HEAP8[p],HEAP8[p+1],HEAP8[p+2],HEAP8[p+3]);var _emscripten_glColorMask=(red,green,blue,alpha)=>{GLctx.colorMask(!!red,!!green,!!blue,!!alpha)};var _emscripten_glColorPointer=(size,type,stride,pointer)=>{GLImmediate.setClientAttribute(GLImmediate.COLOR,size,type,stride,pointer)};var _emscripten_glCompressedTexImage2D=(target,level,internalFormat,width,height,border,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8,data,imageSize);return}GLctx.compressedTexImage2D(target,level,internalFormat,width,height,border,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexImage3D=(target,level,internalFormat,width,height,depth,border,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,imageSize,data)}else{GLctx.compressedTexImage3D(target,level,internalFormat,width,height,depth,border,HEAPU8,data,imageSize)}};var _emscripten_glCompressedTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,imageSize,data)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding||!imageSize){GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8,data,imageSize);return}GLctx.compressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,HEAPU8.subarray(data,data+imageSize))};var _emscripten_glCompressedTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,imageSize,data)}else{GLctx.compressedTexSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,HEAPU8,data,imageSize)}};var _emscripten_glCopyBufferSubData=(x0,x1,x2,x3,x4)=>GLctx.copyBufferSubData(x0,x1,x2,x3,x4);var _emscripten_glCopyTexImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage2D=(x0,x1,x2,x3,x4,x5,x6,x7)=>GLctx.copyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7);var _emscripten_glCopyTexSubImage3D=(x0,x1,x2,x3,x4,x5,x6,x7,x8)=>GLctx.copyTexSubImage3D(x0,x1,x2,x3,x4,x5,x6,x7,x8);var _emscripten_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};var _emscripten_glCullFace=x0=>GLctx.cullFace(x0);var _emscripten_glDeleteBuffers=(n,buffers)=>{for(var i=0;i>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null;if(id==GLctx.currentArrayBufferBinding)GLctx.currentArrayBufferBinding=0;if(id==GLctx.currentElementArrayBufferBinding)GLctx.currentElementArrayBufferBinding=0;if(id==GLctx.currentPixelPackBufferBinding)GLctx.currentPixelPackBufferBinding=0;if(id==GLctx.currentPixelUnpackBufferBinding)GLctx.currentPixelUnpackBufferBinding=0}};var _emscripten_glDeleteFramebuffers=(n,framebuffers)=>{for(var i=0;i>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}};var _emscripten_glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};var _glDeleteShader=_emscripten_glDeleteShader;var _emscripten_glDeleteObject=id=>{if(GL.programs[id]){_glDeleteProgram(id)}else if(GL.shaders[id]){_glDeleteShader(id)}else{err(`WARNING: deleteObject received invalid id: ${id}`)}};var _emscripten_glDeleteQueries=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.deleteQuery(query);GL.queries[id]=null}};var _emscripten_glDeleteQueriesEXT=(n,ids)=>{for(var i=0;i>2];var query=GL.queries[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.queries[id]=null}};var _emscripten_glDeleteRenderbuffers=(n,renderbuffers)=>{for(var i=0;i>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}};var _emscripten_glDeleteSamplers=(n,samplers)=>{for(var i=0;i>2];var sampler=GL.samplers[id];if(!sampler)continue;GLctx.deleteSampler(sampler);sampler.name=0;GL.samplers[id]=null}};var _emscripten_glDeleteSync=id=>{if(!id)return;var sync=GL.syncs[id];if(!sync){GL.recordError(1281);return}GLctx.deleteSync(sync);sync.name=0;GL.syncs[id]=null};var _emscripten_glDeleteTextures=(n,textures)=>{for(var i=0;i>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}};var _emscripten_glDeleteTransformFeedbacks=(n,ids)=>{for(var i=0;i>2];var transformFeedback=GL.transformFeedbacks[id];if(!transformFeedback)continue;GLctx.deleteTransformFeedback(transformFeedback);transformFeedback.name=0;GL.transformFeedbacks[id]=null}};var emulGlDeleteVertexArrays=(n,vaos)=>{for(var i=0;i>2];GLEmulation.vaos[id]=null;if(GLEmulation.currentVao?.id==id)GLEmulation.currentVao=null}};var _emscripten_glDeleteVertexArrays=(n,vaos)=>{emulGlDeleteVertexArrays(n,vaos)};var _glDeleteVertexArrays=_emscripten_glDeleteVertexArrays;var _emscripten_glDeleteVertexArraysOES=_glDeleteVertexArrays;var _emscripten_glDepthFunc=x0=>GLctx.depthFunc(x0);var _emscripten_glDepthMask=flag=>{GLctx.depthMask(!!flag)};var _emscripten_glDepthRangef=(x0,x1)=>GLctx.depthRange(x0,x1);var _emscripten_glDisableClientState=cap=>{var attrib=GLEmulation.getAttributeFromCapability(cap);if(attrib===null){err(`WARNING: unhandled clientstate: ${cap}`);return}if(GLImmediate.enabledClientAttributes[attrib]){GLImmediate.enabledClientAttributes[attrib]=false;GLImmediate.totalEnabledClientAttributes--;GLImmediate.currentRenderer=null;if(GLEmulation.currentVao)delete GLEmulation.currentVao.enabledClientStates[cap];GLImmediate.modifiedClientAttributes=true}};var _emscripten_glDrawArrays=(mode,first,count)=>{if(GLImmediate.totalEnabledClientAttributes==0&&mode<=6){GLctx.drawArrays(mode,first,count);return}GLImmediate.prepareClientAttributes(count,false);GLImmediate.mode=mode;if(!GLctx.currentArrayBufferBinding){GLImmediate.vertexData=HEAPF32.subarray(GLImmediate.vertexPointer>>2,GLImmediate.vertexPointer+(first+count)*GLImmediate.stride>>2);GLImmediate.firstVertex=first;GLImmediate.lastVertex=first+count}GLImmediate.flush(null,first);GLImmediate.mode=-1};var _emscripten_glDrawArraysInstanced=(mode,first,count,primcount)=>{GLctx.drawArraysInstanced(mode,first,count,primcount)};var _glDrawArraysInstanced=_emscripten_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedANGLE=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedARB=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedEXT=_glDrawArraysInstanced;var _emscripten_glDrawArraysInstancedNV=_glDrawArraysInstanced;var _emscripten_glDrawBuffer=()=>{abort("glDrawBuffer: TODO")};var tempFixedLengthArray=[];var _emscripten_glDrawBuffers=(n,bufs)=>{var bufArray=tempFixedLengthArray[n];for(var i=0;i>2]}GLctx.drawBuffers(bufArray)};var _glDrawBuffers=_emscripten_glDrawBuffers;var _emscripten_glDrawBuffersEXT=_glDrawBuffers;var _emscripten_glDrawBuffersWEBGL=_glDrawBuffers;var _emscripten_glDrawElements=(mode,count,type,indices,start,end)=>{if(GLImmediate.totalEnabledClientAttributes==0&&mode<=6&&GLctx.currentElementArrayBufferBinding){GLctx.drawElements(mode,count,type,indices);return}if(!GLctx.currentElementArrayBufferBinding){assert(type==GLctx.UNSIGNED_SHORT)}warnOnce("DrawElements doesn't actually prepareClientAttributes properly.");GLImmediate.prepareClientAttributes(count,false);GLImmediate.mode=mode;if(!GLctx.currentArrayBufferBinding){GLImmediate.firstVertex=end?start:HEAP8.length;GLImmediate.lastVertex=end?end+1:0;start=GLImmediate.vertexPointer;if(end){end=GLImmediate.vertexPointer+(end+1)*GLImmediate.stride;GLImmediate.vertexData=HEAPF32.subarray(start>>2,end>>2)}else{GLImmediate.vertexData=HEAPF32.subarray(start>>2)}}GLImmediate.flush(count,0,indices);GLImmediate.mode=-1};var _emscripten_glDrawElementsInstanced=(mode,count,type,indices,primcount)=>{GLctx.drawElementsInstanced(mode,count,type,indices,primcount)};var _glDrawElementsInstanced=_emscripten_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedANGLE=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedARB=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedEXT=_glDrawElementsInstanced;var _emscripten_glDrawElementsInstancedNV=_glDrawElementsInstanced;var _glDrawElements=_emscripten_glDrawElements;var _emscripten_glDrawRangeElements=(mode,start,end,count,type,indices)=>{_glDrawElements(mode,count,type,indices,start,end)};var _emscripten_glEnd=()=>{GLImmediate.prepareClientAttributes(GLImmediate.rendererComponents[GLImmediate.VERTEX],true);GLImmediate.firstVertex=0;GLImmediate.lastVertex=GLImmediate.vertexCounter/(GLImmediate.stride>>2);GLImmediate.flush();GLImmediate.disableBeginEndClientAttributes();GLImmediate.mode=-1;GLImmediate.enabledClientAttributes=GLImmediate.enabledClientAttributes_preBegin;GLImmediate.clientAttributes=GLImmediate.clientAttributes_preBegin;GLImmediate.currentRenderer=null;GLImmediate.modifiedClientAttributes=true};var _emscripten_glEndQuery=x0=>GLctx.endQuery(x0);var _emscripten_glEndQueryEXT=target=>{GLctx.disjointTimerQueryExt["endQueryEXT"](target)};var _emscripten_glEndTransformFeedback=()=>GLctx.endTransformFeedback();var _emscripten_glFenceSync=(condition,flags)=>{var sync=GLctx.fenceSync(condition,flags);if(sync){var id=GL.getNewId(GL.syncs);sync.name=id;GL.syncs[id]=sync;return id}return 0};var _emscripten_glFinish=()=>GLctx.finish();var _emscripten_glFlush=()=>GLctx.flush();var _emscripten_glFramebufferRenderbuffer=(target,attachment,renderbuffertarget,renderbuffer)=>{GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])};var _emscripten_glFramebufferTexture2D=(target,attachment,textarget,texture,level)=>{GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)};var _emscripten_glFramebufferTextureLayer=(target,attachment,texture,level,layer)=>{GLctx.framebufferTextureLayer(target,attachment,GL.textures[texture],level,layer)};var _emscripten_glFrontFace=x0=>GLctx.frontFace(x0);var _emscripten_glFrustum=(left,right,bottom,top_,nearVal,farVal)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],GLImmediate.matrixLib.mat4.frustum(left,right,bottom,top_,nearVal,farVal))};var _emscripten_glGenBuffers=(n,buffers)=>{GL.genObject(n,buffers,"createBuffer",GL.buffers)};var _emscripten_glGenFramebuffers=(n,ids)=>{GL.genObject(n,ids,"createFramebuffer",GL.framebuffers)};var _emscripten_glGenQueries=(n,ids)=>{GL.genObject(n,ids,"createQuery",GL.queries)};var _emscripten_glGenQueriesEXT=(n,ids)=>{for(var i=0;i>2]=0;checkInt32(0);return}var id=GL.getNewId(GL.queries);query.name=id;GL.queries[id]=query;HEAP32[ids+i*4>>2]=id;checkInt32(id)}};var _emscripten_glGenRenderbuffers=(n,renderbuffers)=>{GL.genObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)};var _emscripten_glGenSamplers=(n,samplers)=>{GL.genObject(n,samplers,"createSampler",GL.samplers)};var _emscripten_glGenTextures=(n,textures)=>{GL.genObject(n,textures,"createTexture",GL.textures)};var _emscripten_glGenTransformFeedbacks=(n,ids)=>{GL.genObject(n,ids,"createTransformFeedback",GL.transformFeedbacks)};var emulGlGenVertexArrays=(n,vaos)=>{for(var i=0;i>2]=id;checkInt32(id)}};var _emscripten_glGenVertexArrays=(n,arrays)=>{emulGlGenVertexArrays(n,arrays)};var _glGenVertexArrays=_emscripten_glGenVertexArrays;var _emscripten_glGenVertexArraysOES=_glGenVertexArrays;var _emscripten_glGenerateMipmap=x0=>GLctx.generateMipmap(x0);var __glGetActiveAttribOrUniform=(funcName,program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull);if(size)HEAP32[size>>2]=info.size;checkInt32(info.size);if(type)HEAP32[type>>2]=info.type;checkInt32(info.type)}};var _emscripten_glGetActiveAttrib=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveUniform=(program,index,bufSize,length,size,type,name)=>__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name);var _emscripten_glGetActiveUniformBlockName=(program,uniformBlockIndex,bufSize,length,uniformBlockName)=>{program=GL.programs[program];var result=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);if(!result)return;if(uniformBlockName&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(result,uniformBlockName,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull)}else{if(length)HEAP32[length>>2]=0;checkInt32(0)}};var _emscripten_glGetActiveUniformBlockiv=(program,uniformBlockIndex,pname,params)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];if(pname==35393){var name=GLctx.getActiveUniformBlockName(program,uniformBlockIndex);HEAP32[params>>2]=name.length+1;checkInt32(name.length+1);return}var result=GLctx.getActiveUniformBlockParameter(program,uniformBlockIndex,pname);if(result===null)return;if(pname==35395){for(var i=0;i>2]=result[i];checkInt32(result[i])}}else{HEAP32[params>>2]=result;checkInt32(result)}};var _emscripten_glGetActiveUniformsiv=(program,uniformCount,uniformIndices,pname,params)=>{if(!params){GL.recordError(1281);return}if(uniformCount>0&&uniformIndices==0){GL.recordError(1281);return}program=GL.programs[program];var ids=[];for(var i=0;i>2])}var result=GLctx.getActiveUniforms(program,ids,pname);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i];checkInt32(result[i])}};var _emscripten_glGetAttachedShaders=(program,maxCount,count,shaders)=>{var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;checkInt32(len);for(var i=0;i>2]=id;checkInt32(id)}};var _emscripten_glGetAttribLocation=(program,name)=>GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetBufferParameteri64v=(target,value,data)=>{if(!data){GL.recordError(1281);return}writeI53ToI64(data,GLctx.getBufferParameter(target,value))};var _emscripten_glGetBufferParameteriv=(target,value,data)=>{if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value);checkInt32(GLctx.getBufferParameter(target,value))};var _emscripten_glGetError=()=>{var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error};var _emscripten_glGetFragDataLocation=(program,name)=>GLctx.getFragDataLocation(GL.programs[program],UTF8ToString(name));var _emscripten_glGetFramebufferAttachmentParameteriv=(target,attachment,pname,params)=>{var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result;checkInt32(result)};var _emscripten_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;checkInt32(numBytesWrittenExclNull)};var _glGetProgramInfoLog=_emscripten_glGetProgramInfoLog;var _emscripten_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;checkInt32(numBytesWrittenExclNull)};var _glGetShaderInfoLog=_emscripten_glGetShaderInfoLog;var _emscripten_glGetInfoLog=(id,maxLength,length,infoLog)=>{if(GL.programs[id]){_glGetProgramInfoLog(id,maxLength,length,infoLog)}else if(GL.shaders[id]){_glGetShaderInfoLog(id,maxLength,length,infoLog)}else{err(`WARNING: glGetInfoLog received invalid id: ${id}`)}};var emscriptenWebGLGetIndexed=(target,index,data,type)=>{if(!data){GL.recordError(1281);return}var result=GLctx.getIndexedParameter(target,index);var ret;switch(typeof result){case"boolean":ret=result?1:0;break;case"number":ret=result;break;case"object":if(result===null){switch(target){case 35983:case 35368:ret=0;break;default:{GL.recordError(1280);return}}}else if(result instanceof WebGLBuffer){ret=result.name|0}else{GL.recordError(1280);return}break;default:GL.recordError(1280);return}switch(type){case 1:writeI53ToI64(data,ret);break;case 0:HEAP32[data>>2]=ret;checkInt32(ret);break;case 2:HEAPF32[data>>2]=ret;break;case 4:HEAP8[data]=ret?1:0;checkInt8(ret?1:0);break;default:abort("internal emscriptenWebGLGetIndexed() error, bad type: "+type)}};var _emscripten_glGetInteger64i_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,1);var _emscripten_glGetInteger64v=(name_,p)=>{emscriptenWebGLGet(name_,p,1)};var _emscripten_glGetIntegeri_v=(target,index,data)=>emscriptenWebGLGetIndexed(target,index,data,0);var _emscripten_glGetInternalformativ=(target,internalformat,pname,bufSize,params)=>{if(bufSize<0){GL.recordError(1281);return}if(!params){GL.recordError(1281);return}var ret=GLctx.getInternalformatParameter(target,internalformat,pname);if(ret===null)return;for(var i=0;i>2]=ret[i];checkInt32(ret[i])}};var _emscripten_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;checkInt32(log.length+1)}else if(pname==35719){if(!program.maxUniformLength){var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(var i=0;i>2]=program.maxUniformLength;checkInt32(program.maxUniformLength)}else if(pname==35722){if(!program.maxAttributeLength){var numActiveAttributes=GLctx.getProgramParameter(program,35721);for(var i=0;i>2]=program.maxAttributeLength;checkInt32(program.maxAttributeLength)}else if(pname==35381){if(!program.maxUniformBlockNameLength){var numActiveUniformBlocks=GLctx.getProgramParameter(program,35382);for(var i=0;i>2]=program.maxUniformBlockNameLength;checkInt32(program.maxUniformBlockNameLength)}else{HEAP32[p>>2]=GLctx.getProgramParameter(program,pname);checkInt32(GLctx.getProgramParameter(program,pname))}};var _glGetProgramiv=_emscripten_glGetProgramiv;var _emscripten_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;checkInt32(logLength)}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength;checkInt32(sourceLength)}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname);checkInt32(GLctx.getShaderParameter(GL.shaders[shader],pname))}};var _glGetShaderiv=_emscripten_glGetShaderiv;var _emscripten_glGetObjectParameteriv=(id,type,result)=>{if(GL.programs[id]){if(type==35716){var log=GLctx.getProgramInfoLog(GL.programs[id]);if(log===null)log="(unknown error)";HEAP32[result>>2]=log.length;checkInt32(log.length);return}_glGetProgramiv(id,type,result)}else if(GL.shaders[id]){if(type==35716){var log=GLctx.getShaderInfoLog(GL.shaders[id]);if(log===null)log="(unknown error)";HEAP32[result>>2]=log.length;checkInt32(log.length);return}else if(type==35720){var source=GLctx.getShaderSource(GL.shaders[id]);if(source===null)return;HEAP32[result>>2]=source.length;checkInt32(source.length);return}_glGetShaderiv(id,type,result)}else{err(`WARNING: getObjectParameteriv received invalid id: ${id}`)}};var _emscripten_glGetPointerv=(name,p)=>{var attribute;switch(name){case 32910:attribute=GLImmediate.clientAttributes[GLImmediate.VERTEX];break;case 32912:attribute=GLImmediate.clientAttributes[GLImmediate.COLOR];break;case 32914:attribute=GLImmediate.clientAttributes[GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture];break;default:GL.recordError(1280);return}HEAP32[p>>2]=attribute?attribute.pointer:0;checkInt32(attribute?attribute.pointer:0)};var _emscripten_glGetProgramBinary=(program,bufSize,length,binaryFormat,binary)=>{GL.recordError(1282)};var _emscripten_glGetQueryObjecti64vEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param;if(GL.currentContext.version<2){param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname)}else{param=GLctx.getQueryParameter(query,pname)}var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)};var _emscripten_glGetQueryObjectivEXT=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret;checkInt32(ret)};var _glGetQueryObjecti64vEXT=_emscripten_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectui64vEXT=_glGetQueryObjecti64vEXT;var _emscripten_glGetQueryObjectuiv=(id,pname,params)=>{if(!params){GL.recordError(1281);return}var query=GL.queries[id];var param=GLctx.getQueryParameter(query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret;checkInt32(ret)};var _glGetQueryObjectivEXT=_emscripten_glGetQueryObjectivEXT;var _emscripten_glGetQueryObjectuivEXT=_glGetQueryObjectivEXT;var _emscripten_glGetQueryiv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getQuery(target,pname);checkInt32(GLctx.getQuery(target,pname))};var _emscripten_glGetQueryivEXT=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname);checkInt32(GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname))};var _emscripten_glGetRenderbufferParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname);checkInt32(GLctx.getRenderbufferParameter(target,pname))};var _emscripten_glGetSamplerParameterfv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname)};var _emscripten_glGetSamplerParameteriv=(sampler,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getSamplerParameter(GL.samplers[sampler],pname);checkInt32(GLctx.getSamplerParameter(GL.samplers[sampler],pname))};var _emscripten_glGetShaderPrecisionFormat=(shaderType,precisionType,range,precision)=>{var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;checkInt32(result.rangeMin);HEAP32[range+4>>2]=result.rangeMax;checkInt32(result.rangeMax);HEAP32[precision>>2]=result.precision;checkInt32(result.precision)};var _emscripten_glGetShaderSource=(shader,bufSize,length,source)=>{var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull)};var _emscripten_glGetStringi=(name,index)=>{if(GL.currentContext.version<2){GL.recordError(1282);return 0}var stringiCache=GL.stringiCache[name];if(stringiCache){if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index]}switch(name){case 7939:var exts=webglGetExtensions().map(stringToNewUTF8);stringiCache=GL.stringiCache[name]=exts;if(index<0||index>=stringiCache.length){GL.recordError(1281);return 0}return stringiCache[index];default:GL.recordError(1280);return 0}};var _emscripten_glGetSynciv=(sync,pname,bufSize,length,values)=>{if(bufSize<0){GL.recordError(1281);return}if(!values){GL.recordError(1281);return}var ret=GLctx.getSyncParameter(GL.syncs[sync],pname);if(ret!==null){HEAP32[values>>2]=ret;checkInt32(ret);if(length)HEAP32[length>>2]=1;checkInt32(1)}};var _emscripten_glGetTexEnvfv=(target,pname,param)=>abort("GL emulation not initialized!");var _emscripten_glGetTexEnviv=(target,pname,param)=>abort("GL emulation not initialized!");var _emscripten_glGetTexLevelParameteriv=(target,level,pname,params)=>abort("glGetTexLevelParameteriv: TODO");var _emscripten_glGetTexParameterfv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)};var _emscripten_glGetTexParameteriv=(target,pname,params)=>{if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname);checkInt32(GLctx.getTexParameter(target,pname))};var _emscripten_glGetTransformFeedbackVarying=(program,index,bufSize,length,size,type,name)=>{program=GL.programs[program];var info=GLctx.getTransformFeedbackVarying(program,index);if(!info)return;if(name&&bufSize>0){var numBytesWrittenExclNull=stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;checkInt32(numBytesWrittenExclNull)}else{if(length)HEAP32[length>>2]=0;checkInt32(0)}if(size)HEAP32[size>>2]=info.size;checkInt32(info.size);if(type)HEAP32[type>>2]=info.type;checkInt32(info.type)};var _emscripten_glGetUniformBlockIndex=(program,uniformBlockName)=>GLctx.getUniformBlockIndex(GL.programs[program],UTF8ToString(uniformBlockName));var _emscripten_glGetUniformIndices=(program,uniformCount,uniformNames,uniformIndices)=>{if(!uniformIndices){GL.recordError(1281);return}if(uniformCount>0&&(uniformNames==0||uniformIndices==0)){GL.recordError(1281);return}program=GL.programs[program];var names=[];for(var i=0;i>2]));var result=GLctx.getUniformIndices(program,names);if(!result)return;var len=result.length;for(var i=0;i>2]=result[i];checkInt32(result[i])}};var jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};var numActiveUniforms=GLctx.getProgramParameter(program,35718);for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j{name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{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)}};var emscriptenWebGLGetUniform=(program,location,params,type)=>{if(!params){GL.recordError(1281);return}program=GL.programs[program];webglPrepareUniformLocationsBeforeFirstUse(program);var data=GLctx.getUniform(program,webglGetUniformLocation(location));if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;checkInt32(data);break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i>2]=data[i];checkInt32(data[i]);break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}};var _emscripten_glGetUniformfv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,2)};var _emscripten_glGetUniformiv=(program,location,params)=>{emscriptenWebGLGetUniform(program,location,params,0)};var _emscripten_glGetUniformuiv=(program,location,params)=>emscriptenWebGLGetUniform(program,location,params,0);var emscriptenWebGLGetVertexAttrib=(index,pname,params,type)=>{if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"];checkInt32(data&&data["name"])}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;checkInt32(data);break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);checkInt32(Math.fround(data));break}}else{for(var i=0;i>2]=data[i];checkInt32(data[i]);break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);checkInt32(Math.fround(data[i]));break}}}};var _emscripten_glGetVertexAttribIiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,0)};var _glGetVertexAttribIiv=_emscripten_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribIuiv=_glGetVertexAttribIiv;var _emscripten_glGetVertexAttribPointerv=(index,pname,pointer)=>{if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname);checkInt32(GLctx.getVertexAttribOffset(index,pname))};var _emscripten_glGetVertexAttribfv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,2)};var _emscripten_glGetVertexAttribiv=(index,pname,params)=>{emscriptenWebGLGetVertexAttrib(index,pname,params,5)};var _emscripten_glInvalidateFramebuffer=(target,numAttachments,attachments)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateFramebuffer(target,list)};var _emscripten_glInvalidateSubFramebuffer=(target,numAttachments,attachments,x,y,width,height)=>{var list=tempFixedLengthArray[numAttachments];for(var i=0;i>2]}GLctx.invalidateSubFramebuffer(target,list,x,y,width,height)};var _emscripten_glIsBuffer=buffer=>{var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)};var _emscripten_glIsFramebuffer=framebuffer=>{var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)};var _emscripten_glIsProgram=program=>{program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)};var _emscripten_glIsQuery=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.isQuery(query)};var _emscripten_glIsQueryEXT=id=>{var query=GL.queries[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)};var _emscripten_glIsRenderbuffer=renderbuffer=>{var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)};var _emscripten_glIsSampler=id=>{var sampler=GL.samplers[id];if(!sampler)return 0;return GLctx.isSampler(sampler)};var _emscripten_glIsShader=shader=>{var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)};var _emscripten_glIsSync=sync=>GLctx.isSync(GL.syncs[sync]);var _emscripten_glIsTexture=id=>{var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)};var _emscripten_glIsTransformFeedback=id=>GLctx.isTransformFeedback(GL.transformFeedbacks[id]);var emulGlIsVertexArray=array=>{var vao=GLEmulation.vaos[array];if(!vao)return 0;return 1};var _emscripten_glIsVertexArray=array=>emulGlIsVertexArray(array);var _glIsVertexArray=_emscripten_glIsVertexArray;var _emscripten_glIsVertexArrayOES=_glIsVertexArray;var _emscripten_glLightModelf=(pname,param)=>{if(pname==2898){GLEmulation.lightModelTwoSide=param!=0?true:false}else{abort("glLightModelf: TODO: "+pname)}};var _emscripten_glLightModelfv=(pname,param)=>{if(pname==2899){GLEmulation.lightModelAmbient[0]=HEAPF32[param>>2];GLEmulation.lightModelAmbient[1]=HEAPF32[param+4>>2];GLEmulation.lightModelAmbient[2]=HEAPF32[param+8>>2];GLEmulation.lightModelAmbient[3]=HEAPF32[param+12>>2]}else{abort("glLightModelfv: TODO: "+pname)}};var _emscripten_glLightfv=(light,pname,param)=>{if(light>=16384&&light<16392){var lightId=light-16384;if(pname==4608){GLEmulation.lightAmbient[lightId][0]=HEAPF32[param>>2];GLEmulation.lightAmbient[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightAmbient[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightAmbient[lightId][3]=HEAPF32[param+12>>2]}else if(pname==4609){GLEmulation.lightDiffuse[lightId][0]=HEAPF32[param>>2];GLEmulation.lightDiffuse[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightDiffuse[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightDiffuse[lightId][3]=HEAPF32[param+12>>2]}else if(pname==4610){GLEmulation.lightSpecular[lightId][0]=HEAPF32[param>>2];GLEmulation.lightSpecular[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightSpecular[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightSpecular[lightId][3]=HEAPF32[param+12>>2]}else if(pname==4611){GLEmulation.lightPosition[lightId][0]=HEAPF32[param>>2];GLEmulation.lightPosition[lightId][1]=HEAPF32[param+4>>2];GLEmulation.lightPosition[lightId][2]=HEAPF32[param+8>>2];GLEmulation.lightPosition[lightId][3]=HEAPF32[param+12>>2];GLImmediate.matrixLib.mat4.multiplyVec4(GLImmediate.matrix[0],GLEmulation.lightPosition[lightId])}else{abort("glLightfv: TODO: "+pname)}}};var _emscripten_glLineWidth=x0=>GLctx.lineWidth(x0);var _emscripten_glLoadIdentity=()=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.identity(GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF64.subarray(matrix>>3,matrix+128>>3),GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF32.subarray(matrix>>2,matrix+64>>2),GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadTransposeMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF64.subarray(matrix>>3,matrix+128>>3),GLImmediate.matrix[GLImmediate.currentMatrix]);GLImmediate.matrixLib.mat4.transpose(GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glLoadTransposeMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.set(HEAPF32.subarray(matrix>>2,matrix+64>>2),GLImmediate.matrix[GLImmediate.currentMatrix]);GLImmediate.matrixLib.mat4.transpose(GLImmediate.matrix[GLImmediate.currentMatrix])};var _emscripten_glMaterialfv=(face,pname,param)=>{if(face!=1028&&face!=1032){abort("glMaterialfv: TODO"+face)}if(pname==4608){GLEmulation.materialAmbient[0]=HEAPF32[param>>2];GLEmulation.materialAmbient[1]=HEAPF32[param+4>>2];GLEmulation.materialAmbient[2]=HEAPF32[param+8>>2];GLEmulation.materialAmbient[3]=HEAPF32[param+12>>2]}else if(pname==4609){GLEmulation.materialDiffuse[0]=HEAPF32[param>>2];GLEmulation.materialDiffuse[1]=HEAPF32[param+4>>2];GLEmulation.materialDiffuse[2]=HEAPF32[param+8>>2];GLEmulation.materialDiffuse[3]=HEAPF32[param+12>>2]}else if(pname==4610){GLEmulation.materialSpecular[0]=HEAPF32[param>>2];GLEmulation.materialSpecular[1]=HEAPF32[param+4>>2];GLEmulation.materialSpecular[2]=HEAPF32[param+8>>2];GLEmulation.materialSpecular[3]=HEAPF32[param+12>>2]}else if(pname==5633){GLEmulation.materialShininess[0]=HEAPF32[param>>2]}else{abort("glMaterialfv: TODO: "+pname)}};var _emscripten_glMatrixMode=mode=>{if(mode==5888){GLImmediate.currentMatrix=0}else if(mode==5889){GLImmediate.currentMatrix=1}else if(mode==5890){GLImmediate.useTextureMatrix=true;GLImmediate.currentMatrix=2+GLImmediate.TexEnvJIT.getActiveTexture()}else{throw`Wrong mode ${mode} passed to glMatrixMode`}};var _emscripten_glMultMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],HEAPF64.subarray(matrix>>3,matrix+128>>3))};var _emscripten_glMultMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],HEAPF32.subarray(matrix>>2,matrix+64>>2))};var _emscripten_glMultTransposeMatrixd=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;var colMajor=GLImmediate.matrixLib.mat4.create();GLImmediate.matrixLib.mat4.set(HEAPF64.subarray(matrix>>3,matrix+128>>3),colMajor);GLImmediate.matrixLib.mat4.transpose(colMajor);GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],colMajor)};var _emscripten_glMultTransposeMatrixf=matrix=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;var colMajor=GLImmediate.matrixLib.mat4.create();GLImmediate.matrixLib.mat4.set(HEAPF32.subarray(matrix>>2,matrix+64>>2),colMajor);GLImmediate.matrixLib.mat4.transpose(colMajor);GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],colMajor)};var _emscripten_glNormal3f=(x,y,z)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=z;assert(GLImmediate.vertexCounter<<2{GLImmediate.setClientAttribute(GLImmediate.NORMAL,3,type,stride,pointer)};var _emscripten_glOrtho=(left,right,bottom,top_,nearVal,farVal)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.multiply(GLImmediate.matrix[GLImmediate.currentMatrix],GLImmediate.matrixLib.mat4.ortho(left,right,bottom,top_,nearVal,farVal))};var _emscripten_glPauseTransformFeedback=()=>GLctx.pauseTransformFeedback();var _emscripten_glPixelStorei=(pname,param)=>{if(pname==3317){GL.unpackAlignment=param}else if(pname==3314){GL.unpackRowLength=param}GLctx.pixelStorei(pname,param)};var _emscripten_glPolygonMode=()=>{};var _emscripten_glPolygonModeWEBGL=(face,mode)=>{GLctx.webglPolygonMode["polygonModeWEBGL"](face,mode)};var _emscripten_glPolygonOffset=(x0,x1)=>GLctx.polygonOffset(x0,x1);var _emscripten_glPolygonOffsetClampEXT=(factor,units,clamp)=>{GLctx.extPolygonOffsetClamp["polygonOffsetClampEXT"](factor,units,clamp)};var _emscripten_glPopMatrix=()=>{if(GLImmediate.matrixStack[GLImmediate.currentMatrix].length==0){GL.recordError(1284);return}GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrix[GLImmediate.currentMatrix]=GLImmediate.matrixStack[GLImmediate.currentMatrix].pop()};var _emscripten_glProgramBinary=(program,binaryFormat,binary,length)=>{GL.recordError(1280)};var _emscripten_glProgramParameteri=(program,pname,value)=>{GL.recordError(1280)};var _emscripten_glPushMatrix=()=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixStack[GLImmediate.currentMatrix].push(Array.prototype.slice.call(GLImmediate.matrix[GLImmediate.currentMatrix]))};var _emscripten_glQueryCounterEXT=(id,target)=>{GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.queries[id],target)};var _emscripten_glReadBuffer=x0=>GLctx.readBuffer(x0);var computeUnpackAlignedImageSize=(width,height,sizePerPixel)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=(GL.unpackRowLength||width)*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,GL.unpackAlignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel);return heap.subarray(toTypedArrayIndex(pixels,heap),toTypedArrayIndex(pixels+bytes,heap))};var _emscripten_glReadPixels=(x,y,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels);return}var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target);return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)};var _emscripten_glReleaseShaderCompiler=()=>{};var _emscripten_glRenderbufferStorage=(x0,x1,x2,x3)=>GLctx.renderbufferStorage(x0,x1,x2,x3);var _emscripten_glRenderbufferStorageMultisample=(x0,x1,x2,x3,x4)=>GLctx.renderbufferStorageMultisample(x0,x1,x2,x3,x4);var _emscripten_glResumeTransformFeedback=()=>GLctx.resumeTransformFeedback();var _emscripten_glRotated=(angle,x,y,z)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.rotate(GLImmediate.matrix[GLImmediate.currentMatrix],angle*Math.PI/180,[x,y,z])};var _glRotated=_emscripten_glRotated;var _emscripten_glRotatef=_glRotated;var _emscripten_glSampleCoverage=(value,invert)=>{GLctx.sampleCoverage(value,!!invert)};var _emscripten_glSamplerParameterf=(sampler,pname,param)=>{GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameterfv=(sampler,pname,params)=>{var param=HEAPF32[params>>2];GLctx.samplerParameterf(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteri=(sampler,pname,param)=>{GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glSamplerParameteriv=(sampler,pname,params)=>{var param=HEAP32[params>>2];GLctx.samplerParameteri(GL.samplers[sampler],pname,param)};var _emscripten_glScaled=(x,y,z)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.scale(GLImmediate.matrix[GLImmediate.currentMatrix],[x,y,z])};var _glScaled=_emscripten_glScaled;var _emscripten_glScalef=_glScaled;var _emscripten_glScissor=(x0,x1,x2,x3)=>GLctx.scissor(x0,x1,x2,x3);var _emscripten_glShadeModel=()=>warnOnce("TODO: glShadeModel");var _emscripten_glShaderBinary=(count,shaders,binaryformat,binary,length)=>{GL.recordError(1280)};var _emscripten_glStencilFunc=(x0,x1,x2)=>GLctx.stencilFunc(x0,x1,x2);var _emscripten_glStencilFuncSeparate=(x0,x1,x2,x3)=>GLctx.stencilFuncSeparate(x0,x1,x2,x3);var _emscripten_glStencilMask=x0=>GLctx.stencilMask(x0);var _emscripten_glStencilMaskSeparate=(x0,x1)=>GLctx.stencilMaskSeparate(x0,x1);var _emscripten_glStencilOp=(x0,x1,x2)=>GLctx.stencilOp(x0,x1,x2);var _emscripten_glStencilOpSeparate=(x0,x1,x2,x3)=>GLctx.stencilOpSeparate(x0,x1,x2,x3);var _emscripten_glTexCoord2i=(u,v)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=u;GLImmediate.vertexData[GLImmediate.vertexCounter++]=v;GLImmediate.addRendererComponent(GLImmediate.TEXTURE0,2,GLctx.FLOAT)};var _glTexCoord2i=_emscripten_glTexCoord2i;var _emscripten_glTexCoord2f=_glTexCoord2i;var _emscripten_glTexCoord2fv=v=>_glTexCoord2i(HEAPF32[v>>2],HEAPF32[v+4>>2]);var _emscripten_glTexCoord3f=(target,level,internalformat,width,border,format,type,data)=>abort("glTexCoord3f: TODO");var _emscripten_glTexCoord4f=()=>{abort("glTexCoord4f: TODO")};var _emscripten_glTexCoordPointer=(size,type,stride,pointer)=>{GLImmediate.setClientAttribute(GLImmediate.TEXTURE0+GLImmediate.clientActiveTexture,size,type,stride,pointer)};var _emscripten_glTexGenfv=(coord,pname,param)=>abort("glTexGenfv: TODO");var _emscripten_glTexGeni=(coord,pname,param)=>abort("glTexGeni: TODO");var _emscripten_glTexImage1D=(target,level,internalformat,width,border,format,type,data)=>abort("glTexImage1D: TODO");var _emscripten_glTexImage2D=(target,level,internalFormat,width,height,border,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);var index=toTypedArrayIndex(pixels,heap);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,index);return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null;GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixelData)};var _emscripten_glTexImage3D=(target,level,internalFormat,width,height,depth,border,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage3D(target,level,internalFormat,width,height,depth,border,format,type,null)}};var _emscripten_glTexParameterf=(x0,x1,x2)=>GLctx.texParameterf(x0,x1,x2);var _emscripten_glTexParameterfv=(target,pname,params)=>{var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)};var _emscripten_glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _emscripten_glTexParameteriv=(target,pname,params)=>{var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)};var _emscripten_glTexStorage2D=(x0,x1,x2,x3,x4)=>GLctx.texStorage2D(x0,x1,x2,x3,x4);var _emscripten_glTexStorage3D=(x0,x1,x2,x3,x4,x5)=>GLctx.texStorage3D(x0,x1,x2,x3,x4,x5);var _emscripten_glTexSubImage2D=(target,level,xoffset,yoffset,width,height,format,type,pixels)=>{if(GL.currentContext.version>=2){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);return}if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,heap,toTypedArrayIndex(pixels,heap));return}}var pixelData=pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0):null;GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)};var _emscripten_glTexSubImage3D=(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)=>{if(GLctx.currentPixelUnpackBufferBinding){GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texSubImage3D(target,level,xoffset,yoffset,zoffset,width,height,depth,format,type,null)}};var _emscripten_glTransformFeedbackVaryings=(program,count,varyings,bufferMode)=>{program=GL.programs[program];var vars=[];for(var i=0;i>2]));GLctx.transformFeedbackVaryings(program,vars,bufferMode)};var _emscripten_glTranslated=(x,y,z)=>{GLImmediate.matricesModified=true;GLImmediate.matrixVersion[GLImmediate.currentMatrix]=GLImmediate.matrixVersion[GLImmediate.currentMatrix]+1|0;GLImmediate.matrixLib.mat4.translate(GLImmediate.matrix[GLImmediate.currentMatrix],[x,y,z])};var _glTranslated=_emscripten_glTranslated;var _emscripten_glTranslatef=_glTranslated;var _emscripten_glUniform1f=(location,v0)=>{GLctx.uniform1f(webglGetUniformLocation(location),v0)};var miniTempWebGLFloatBuffers=[];var _emscripten_glUniform1fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1fv(webglGetUniformLocation(location),HEAPF32,value>>2,count);return}if(count<=288){var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var miniTempWebGLIntBuffers=[];var _emscripten_glUniform1iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform1iv(webglGetUniformLocation(location),HEAP32,value>>2,count);return}if(count<=288){var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform1ui=(location,v0)=>{GLctx.uniform1ui(webglGetUniformLocation(location),v0)};var _emscripten_glUniform1uiv=(location,count,value)=>{count&&GLctx.uniform1uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count)};var _emscripten_glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2i=(location,v0,v1)=>{GLctx.uniform2i(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform2iv(webglGetUniformLocation(location),HEAP32,value>>2,count*2);return}if(count<=144){count*=2;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform2ui=(location,v0,v1)=>{GLctx.uniform2ui(webglGetUniformLocation(location),v0,v1)};var _emscripten_glUniform2uiv=(location,count,value)=>{count&&GLctx.uniform2uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*2)};var _emscripten_glUniform3f=(location,v0,v1,v2)=>{GLctx.uniform3f(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3i=(location,v0,v1,v2)=>{GLctx.uniform3i(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform3iv(webglGetUniformLocation(location),HEAP32,value>>2,count*3);return}if(count<=96){count*=3;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform3ui=(location,v0,v1,v2)=>{GLctx.uniform3ui(webglGetUniformLocation(location),v0,v1,v2)};var _emscripten_glUniform3uiv=(location,count,value)=>{count&&GLctx.uniform3uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*3)};var _emscripten_glUniform4f=(location,v0,v1,v2,v3)=>{GLctx.uniform4f(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4fv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4fv(webglGetUniformLocation(location),HEAPF32,value>>2,count*4);return}if(count<=72){var view=miniTempWebGLFloatBuffers[4*count];var heap=HEAPF32;value=value>>2;count*=4;for(var i=0;i>2,value+count*16>>2)}GLctx.uniform4fv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4i=(location,v0,v1,v2,v3)=>{GLctx.uniform4i(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4iv=(location,count,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniform4iv(webglGetUniformLocation(location),HEAP32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLIntBuffers[count];for(var i=0;i>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(webglGetUniformLocation(location),view)};var _emscripten_glUniform4ui=(location,v0,v1,v2,v3)=>{GLctx.uniform4ui(webglGetUniformLocation(location),v0,v1,v2,v3)};var _emscripten_glUniform4uiv=(location,count,value)=>{count&&GLctx.uniform4uiv(webglGetUniformLocation(location),HEAPU32,value>>2,count*4)};var _emscripten_glUniformBlockBinding=(program,uniformBlockIndex,uniformBlockBinding)=>{program=GL.programs[program];GLctx.uniformBlockBinding(program,uniformBlockIndex,uniformBlockBinding)};var _emscripten_glUniformMatrix2fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*4);return}if(count<=72){count*=4;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix2x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix2x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix2x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix3fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*9);return}if(count<=32){count*=9;var view=miniTempWebGLFloatBuffers[count];for(var i=0;i>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix3x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*6)};var _emscripten_glUniformMatrix3x4fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix3x4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glUniformMatrix4fv=(location,count,transpose,value)=>{if(GL.currentContext.version>=2){count&&GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*16);return}if(count<=18){var view=miniTempWebGLFloatBuffers[16*count];var heap=HEAPF32;value=value>>2;count*=16;for(var i=0;i>2,value+count*64>>2)}GLctx.uniformMatrix4fv(webglGetUniformLocation(location),!!transpose,view)};var _emscripten_glUniformMatrix4x2fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x2fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*8)};var _emscripten_glUniformMatrix4x3fv=(location,count,transpose,value)=>{count&&GLctx.uniformMatrix4x3fv(webglGetUniformLocation(location),!!transpose,HEAPF32,value>>2,count*12)};var _emscripten_glValidateProgram=program=>{GLctx.validateProgram(GL.programs[program])};var _emscripten_glVertex2f=(x,y)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=0;GLImmediate.vertexData[GLImmediate.vertexCounter++]=1;assert(GLImmediate.vertexCounter<<2_glVertex2f(HEAPF32[p>>2],HEAPF32[p+4>>2]);var _emscripten_glVertex2i=_glVertex2f;var _emscripten_glVertex3f=(x,y,z)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=z;GLImmediate.vertexData[GLImmediate.vertexCounter++]=1;assert(GLImmediate.vertexCounter<<2_glVertex3f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2]);var _emscripten_glVertex3i=_glVertex3f;var _emscripten_glVertex4f=(x,y,z,w)=>{assert(GLImmediate.mode>=0);GLImmediate.vertexData[GLImmediate.vertexCounter++]=x;GLImmediate.vertexData[GLImmediate.vertexCounter++]=y;GLImmediate.vertexData[GLImmediate.vertexCounter++]=z;GLImmediate.vertexData[GLImmediate.vertexCounter++]=w;assert(GLImmediate.vertexCounter<<2_glVertex4f(HEAPF32[p>>2],HEAPF32[p+4>>2],HEAPF32[p+8>>2],HEAPF32[p+12>>2]);var _emscripten_glVertex4i=_glVertex4f;var _emscripten_glVertexAttrib1f=(x0,x1)=>GLctx.vertexAttrib1f(x0,x1);var _emscripten_glVertexAttrib1fv=(index,v)=>{GLctx.vertexAttrib1f(index,HEAPF32[v>>2])};var _emscripten_glVertexAttrib2f=(x0,x1,x2)=>GLctx.vertexAttrib2f(x0,x1,x2);var _emscripten_glVertexAttrib2fv=(index,v)=>{GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])};var _emscripten_glVertexAttrib3f=(x0,x1,x2,x3)=>GLctx.vertexAttrib3f(x0,x1,x2,x3);var _emscripten_glVertexAttrib3fv=(index,v)=>{GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])};var _emscripten_glVertexAttrib4f=(x0,x1,x2,x3,x4)=>GLctx.vertexAttrib4f(x0,x1,x2,x3,x4);var _emscripten_glVertexAttrib4fv=(index,v)=>{GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])};var _emscripten_glVertexAttribDivisor=(index,divisor)=>{GLctx.vertexAttribDivisor(index,divisor)};var _glVertexAttribDivisor=_emscripten_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorANGLE=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorARB=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorEXT=_glVertexAttribDivisor;var _emscripten_glVertexAttribDivisorNV=_glVertexAttribDivisor;var _emscripten_glVertexAttribI4i=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4i(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4iv=(index,v)=>{GLctx.vertexAttribI4i(index,HEAP32[v>>2],HEAP32[v+4>>2],HEAP32[v+8>>2],HEAP32[v+12>>2])};var _emscripten_glVertexAttribI4ui=(x0,x1,x2,x3,x4)=>GLctx.vertexAttribI4ui(x0,x1,x2,x3,x4);var _emscripten_glVertexAttribI4uiv=(index,v)=>{GLctx.vertexAttribI4ui(index,HEAPU32[v>>2],HEAPU32[v+4>>2],HEAPU32[v+8>>2],HEAPU32[v+12>>2])};var _emscripten_glVertexAttribIPointer=(index,size,type,stride,ptr)=>{GLctx.vertexAttribIPointer(index,size,type,stride,ptr)};var _emscripten_glVertexPointer=(size,type,stride,pointer)=>{GLImmediate.setClientAttribute(GLImmediate.VERTEX,size,type,stride,pointer)};var _emscripten_glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var _emscripten_glWaitSync=(sync,flags,timeout)=>{timeout=Number(timeout);GLctx.waitSync(GL.syncs[sync],flags,timeout)};var _emscripten_has_asyncify=()=>0;var doRequestFullscreen=(target,strategy)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;if(!target.requestFullscreen&&!target.webkitRequestFullscreen){return-3}if(!JSEvents.canPerformEventHandlerRequests()){if(strategy.deferUntilInEventHandler){JSEvents.deferCall(JSEvents_requestFullscreen,1,[target,strategy]);return 1}return-2}return JSEvents_requestFullscreen(target,strategy)};var _emscripten_request_fullscreen_strategy=(target,deferUntilInEventHandler,fullscreenStrategy)=>{var strategy={scaleMode:HEAP32[fullscreenStrategy>>2],canvasResolutionScaleMode:HEAP32[fullscreenStrategy+4>>2],filteringMode:HEAP32[fullscreenStrategy+8>>2],deferUntilInEventHandler,canvasResizedCallback:HEAP32[fullscreenStrategy+12>>2],canvasResizedCallbackUserData:HEAP32[fullscreenStrategy+16>>2]};return doRequestFullscreen(target,strategy)};var _emscripten_request_pointerlock=(target,deferUntilInEventHandler)=>{target=findEventTarget(target);if(!target)return-4;if(!target.requestPointerLock){return-1}if(!JSEvents.canPerformEventHandlerRequests()){if(deferUntilInEventHandler){JSEvents.deferCall(requestPointerLock,2,[target]);return 1}return-2}return requestPointerLock(target)};var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>{assert(alignment,"alignment argument is required");return Math.ceil(size/alignment)*alignment};var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){err(`growMemory: Attempted to grow heap from ${oldHeapSize} bytes to ${size} bytes, but got error: ${e}`)}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;assert(requestedSize>oldSize);var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){err(`Cannot enlarge memory, requested ${requestedSize} bytes, but the limit is ${maxHeapSize} bytes!`);return false}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,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var t0=_emscripten_get_now();var replacement=growMemory(newSize);var t1=_emscripten_get_now();dbg(`Heap resize call from ${oldSize} to ${newSize} took ${t1-t0} msecs. Success: ${!!replacement}`);if(replacement){return true}}err(`Failed to grow the heap from ${oldSize} bytes to ${newSize} bytes, not enough memory!`);return false};var _emscripten_sample_gamepad_data=()=>{try{if(navigator.getGamepads)return(JSEvents.lastGamepadState=navigator.getGamepads())?0:-1}catch(e){err(`navigator.getGamepads() exists, but failed to execute with exception ${e}. Disabling Gamepad access.`);navigator.getGamepads=null}return-1};var registerBeforeUnloadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString)=>{var beforeUnloadEventHandlerFunc=e=>{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,eventTypeId,userData,callbackfunc,handlerFunc:beforeUnloadEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _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")};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=256;JSEvents.focusEvent||=_malloc(eventSize);var focusEventHandlerFunc=e=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_blur_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread);var _emscripten_set_element_css_size=(target,width,height)=>{target=findEventTarget(target);if(!target)return-4;target.style.width=width+"px";target.style.height=height+"px";return 0};var _emscripten_set_focus_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread);var fillFullscreenChangeEventData=eventStruct=>{var fullscreenElement=getFullscreenElement();var isFullscreen=!!fullscreenElement;HEAP8[eventStruct]=isFullscreen;checkInt8(isFullscreen);HEAP8[eventStruct+1]=JSEvents.fullscreenEnabled();checkInt8(JSEvents.fullscreenEnabled());var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement?.id||"";stringToUTF8(nodeName,eventStruct+2,128);stringToUTF8(id,eventStruct+130,128);HEAP32[eventStruct+260>>2]=reportedElement?reportedElement.clientWidth:0;checkInt32(reportedElement?reportedElement.clientWidth:0);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientHeight:0;checkInt32(reportedElement?reportedElement.clientHeight:0);HEAP32[eventStruct+268>>2]=screen.width;checkInt32(screen.width);HEAP32[eventStruct+272>>2]=screen.height;checkInt32(screen.height);if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}};var registerFullscreenChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=276;JSEvents.fullscreenChangeEvent||=_malloc(eventSize);var fullscreenChangeEventHandlerFunc=e=>{var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:fullscreenChangeEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_fullscreenchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread)};var registerGamepadEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=1240;JSEvents.gamepadEvent||=_malloc(eventSize);var gamepadEventHandlerFunc=e=>{var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_gamepadconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread)};var _emscripten_set_gamepaddisconnected_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(_emscripten_sample_gamepad_data())return-1;return registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread)};var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=160;JSEvents.keyEvent||=_malloc(eventSize);var keyEventHandlerFunc=e=>{assert(e);var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>3]=e.timeStamp;var idx=keyEventData>>2;HEAP32[idx+2]=e.location;HEAP8[keyEventData+12]=e.ctrlKey;HEAP8[keyEventData+13]=e.shiftKey;HEAP8[keyEventData+14]=e.altKey;HEAP8[keyEventData+15]=e.metaKey;HEAP8[keyEventData+16]=e.repeat;HEAP32[idx+5]=e.charCode;HEAP32[idx+6]=e.keyCode;HEAP32[idx+7]=e.which;stringToUTF8(e.key||"",keyEventData+32,32);stringToUTF8(e.code||"",keyEventData+64,32);stringToUTF8(e.char||"",keyEventData+96,32);stringToUTF8(e.locale||"",keyEventData+128,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_keydown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);var _emscripten_set_keypress_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,1,"keypress",targetThread);var _emscripten_set_keyup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread);var _emscripten_set_main_loop=(func,fps,simulateInfiniteLoop)=>{var iterFunc=getWasmTableEntry(func);setMainLoop(iterFunc,fps,simulateInfiniteLoop)};var fillMouseEventData=(eventStruct,e,target)=>{assert(eventStruct%4==0);HEAPF64[eventStruct>>3]=e.timeStamp;var idx=eventStruct>>2;HEAP32[idx+2]=e.screenX;HEAP32[idx+3]=e.screenY;HEAP32[idx+4]=e.clientX;HEAP32[idx+5]=e.clientY;HEAP8[eventStruct+24]=e.ctrlKey;HEAP8[eventStruct+25]=e.shiftKey;HEAP8[eventStruct+26]=e.altKey;HEAP8[eventStruct+27]=e.metaKey;HEAP16[idx*2+14]=e.button;HEAP16[idx*2+15]=e.buttons;HEAP32[idx+8]=e["movementX"];HEAP32[idx+9]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+10]=e.clientX-(rect.left|0);HEAP32[idx+11]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=64;JSEvents.mouseEvent||=_malloc(eventSize);target=findEventTarget(target);var mouseEventHandlerFunc=e=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_mousedown_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread);var _emscripten_set_mouseenter_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,33,"mouseenter",targetThread);var _emscripten_set_mouseleave_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,34,"mouseleave",targetThread);var _emscripten_set_mousemove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread);var _emscripten_set_mouseup_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread);var fillPointerlockChangeEventData=eventStruct=>{var pointerLockElement=document.pointerLockElement;var isPointerlocked=!!pointerLockElement;HEAP8[eventStruct]=isPointerlocked;checkInt8(isPointerlocked);var nodeName=JSEvents.getNodeNameForTarget(pointerLockElement);var id=pointerLockElement?.id||"";stringToUTF8(nodeName,eventStruct+1,128);stringToUTF8(id,eventStruct+129,128)};var registerPointerlockChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=257;JSEvents.pointerlockChangeEvent||=_malloc(eventSize);var pointerlockChangeEventHandlerFunc=e=>{var pointerlockChangeEvent=JSEvents.pointerlockChangeEvent;fillPointerlockChangeEventData(pointerlockChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,pointerlockChangeEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:pointerlockChangeEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_pointerlockchange_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{if(!document.body?.requestPointerLock){return-1}target=findEventTarget(target);if(!target)return-4;return registerPointerlockChangeEventCallback(target,userData,useCapture,callbackfunc,20,"pointerlockchange",targetThread)};var registerUiEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=36;JSEvents.uiEvent||=_malloc(eventSize);target=findEventTarget(target);var uiEventHandlerFunc=e=>{if(e.target!=target){return}var b=document.body;if(!b){return}var uiEvent=JSEvents.uiEvent;HEAP32[uiEvent>>2]=0;checkInt32(0);HEAP32[uiEvent+4>>2]=b.clientWidth;checkInt32(b.clientWidth);HEAP32[uiEvent+8>>2]=b.clientHeight;checkInt32(b.clientHeight);HEAP32[uiEvent+12>>2]=innerWidth;checkInt32(innerWidth);HEAP32[uiEvent+16>>2]=innerHeight;checkInt32(innerHeight);HEAP32[uiEvent+20>>2]=outerWidth;checkInt32(outerWidth);HEAP32[uiEvent+24>>2]=outerHeight;checkInt32(outerHeight);HEAP32[uiEvent+28>>2]=pageXOffset|0;checkInt32(pageXOffset|0);HEAP32[uiEvent+32>>2]=pageYOffset|0;checkInt32(pageYOffset|0);if(getWasmTableEntry(callbackfunc)(eventTypeId,uiEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:uiEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_resize_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerUiEventCallback(target,userData,useCapture,callbackfunc,10,"resize",targetThread);var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=1552;JSEvents.touchEvent||=_malloc(eventSize);target=findEventTarget(target);var touchEventHandlerFunc=e=>{assert(e);var t,touches={},et=e.touches;for(let t of et){t.isChanged=t.onTarget=0;touches[t.identifier]=t}for(let t of e.changedTouches){t.isChanged=1;touches[t.identifier]=t}for(let t of e.targetTouches){touches[t.identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;HEAPF64[touchEvent>>3]=e.timeStamp;HEAP8[touchEvent+12]=e.ctrlKey;HEAP8[touchEvent+13]=e.shiftKey;HEAP8[touchEvent+14]=e.altKey;HEAP8[touchEvent+15]=e.metaKey;var idx=touchEvent+16;var targetRect=getBoundingClientRect(target);var numTouches=0;for(let t of Object.values(touches)){var idx32=idx>>2;HEAP32[idx32+0]=t.identifier;HEAP32[idx32+1]=t.screenX;HEAP32[idx32+2]=t.screenY;HEAP32[idx32+3]=t.clientX;HEAP32[idx32+4]=t.clientY;HEAP32[idx32+5]=t.pageX;HEAP32[idx32+6]=t.pageY;HEAP8[idx+28]=t.isChanged;HEAP8[idx+29]=t.onTarget;HEAP32[idx32+8]=t.clientX-(targetRect.left|0);HEAP32[idx32+9]=t.clientY-(targetRect.top|0);idx+=48;if(++numTouches>31){break}}HEAP32[touchEvent+8>>2]=numTouches;checkInt32(numTouches);if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_touchcancel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);var _emscripten_set_touchend_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);var _emscripten_set_touchmove_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);var _emscripten_set_touchstart_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);var fillVisibilityChangeEventData=eventStruct=>{var visibilityStates=["hidden","visible","prerender","unloaded"];var visibilityState=visibilityStates.indexOf(document.visibilityState);HEAP8[eventStruct]=document.hidden;checkInt8(document.hidden);HEAP32[eventStruct+4>>2]=visibilityState;checkInt32(visibilityState)};var registerVisibilityChangeEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=8;JSEvents.visibilityChangeEvent||=_malloc(eventSize);var visibilityChangeEventHandlerFunc=e=>{var visibilityChangeEvent=JSEvents.visibilityChangeEvent;fillVisibilityChangeEventData(visibilityChangeEvent);if(getWasmTableEntry(callbackfunc)(eventTypeId,visibilityChangeEvent,userData))e.preventDefault()};var eventHandler={target,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:visibilityChangeEventHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_visibilitychange_callback_on_thread=(userData,useCapture,callbackfunc,targetThread)=>{if(!specialHTMLTargets[1]){return-4}return registerVisibilityChangeEventCallback(specialHTMLTargets[1],userData,useCapture,callbackfunc,21,"visibilitychange",targetThread)};var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{var eventSize=96;JSEvents.wheelEvent||=_malloc(eventSize);var wheelHandlerFunc=e=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+64>>3]=e["deltaX"];HEAPF64[wheelEvent+72>>3]=e["deltaY"];HEAPF64[wheelEvent+80>>3]=e["deltaZ"];HEAP32[wheelEvent+88>>2]=e["deltaMode"];checkInt32(e["deltaMode"]);if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target,allowsDeferredCalls:true,eventTypeString,eventTypeId,userData,callbackfunc,handlerFunc:wheelHandlerFunc,useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};var _emscripten_set_wheel_callback_on_thread=(target,userData,useCapture,callbackfunc,targetThread)=>{target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}};var _emscripten_set_window_title=title=>document.title=UTF8ToString(title);var _emscripten_sleep=()=>{abort("Please compile your program with async support in order to use asynchronous operations like emscripten_sleep")};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"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};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;checkInt32(strings.length);var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;checkInt32(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}}var 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;checkInt32(num);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);checkInt64(stream.position);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}}var 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(curr>2]=num;checkInt32(num);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _glAlphaFunc=_emscripten_glAlphaFunc;var _glBindTexture=_emscripten_glBindTexture;var _glBlendFunc=_emscripten_glBlendFunc;var _glBufferData=_emscripten_glBufferData;var _glClear=_emscripten_glClear;var _glClearColor=_emscripten_glClearColor;var _glColorMask=_emscripten_glColorMask;var _glColorPointer=_emscripten_glColorPointer;var _glCullFace=_emscripten_glCullFace;var _glDeleteBuffers=_emscripten_glDeleteBuffers;var _glDeleteTextures=_emscripten_glDeleteTextures;var _glDepthFunc=_emscripten_glDepthFunc;var _glDepthMask=_emscripten_glDepthMask;var _glDepthRangef=_emscripten_glDepthRangef;var _glDisableClientState=_emscripten_glDisableClientState;var _glDrawArrays=_emscripten_glDrawArrays;var _emscripten_glFogf=(pname,param)=>{switch(pname){case 2915:GLEmulation.fogStart=param;break;case 2916:GLEmulation.fogEnd=param;break;case 2914:GLEmulation.fogDensity=param;break;case 2917:switch(param){case 2049:case 9729:if(GLEmulation.fogMode!=param){GLImmediate.currentRenderer=null;GLEmulation.fogMode=param}break;default:if(GLEmulation.fogMode!=2048){GLImmediate.currentRenderer=null;GLEmulation.fogMode=2048}break}break}};var _glFogf=_emscripten_glFogf;var _emscripten_glFogfv=(pname,param)=>{switch(pname){case 2918:GLEmulation.fogColor[0]=HEAPF32[param>>2];GLEmulation.fogColor[1]=HEAPF32[param+4>>2];GLEmulation.fogColor[2]=HEAPF32[param+8>>2];GLEmulation.fogColor[3]=HEAPF32[param+12>>2];break;case 2915:case 2916:_glFogf(pname,HEAPF32[param>>2]);break}};var _glFogfv=_emscripten_glFogfv;var _emscripten_glFogi=(pname,param)=>_glFogf(pname,param);var _glFogi=_emscripten_glFogi;var _emscripten_glFogx=_glFogi;var _glFogx=_emscripten_glFogx;var _glGenBuffers=_emscripten_glGenBuffers;var _glGenTextures=_emscripten_glGenTextures;var _glLineWidth=_emscripten_glLineWidth;var _glLoadIdentity=_emscripten_glLoadIdentity;var _glMatrixMode=_emscripten_glMatrixMode;var _glMultMatrixf=_emscripten_glMultMatrixf;var _glNormal3f=_emscripten_glNormal3f;var _glOrtho=_emscripten_glOrtho;var _emscripten_glOrthof=_glOrtho;var _glOrthof=_emscripten_glOrthof;var _glPolygonOffset=_emscripten_glPolygonOffset;var _glPopMatrix=_emscripten_glPopMatrix;var _glPushMatrix=_emscripten_glPushMatrix;var _glRotatef=_emscripten_glRotatef;var _glScalef=_emscripten_glScalef;var _glScissor=_emscripten_glScissor;var _glShadeModel=_emscripten_glShadeModel;var _glTexCoordPointer=_emscripten_glTexCoordPointer;var _glTexImage2D=_emscripten_glTexImage2D;var _glTexParameteri=_emscripten_glTexParameteri;var _glTexSubImage2D=_emscripten_glTexSubImage2D;var _glTranslatef=_emscripten_glTranslatef;var _glVertexPointer=_emscripten_glVertexPointer;var _glViewport=_emscripten_glViewport;function _mcGetWorldResult(){var r=window._mcWorldResult;if(!r)return 0;window._mcWorldResult=null;window._mcWorldStatus=-1;var len=lengthBytesUTF8(r)+1;var buf=_malloc(len);stringToUTF8(r,buf,len);return buf}function _mcGetWorldStatus(){if(window._mcWorldStatus===undefined)return-1;return window._mcWorldStatus}function _mcShowCreateWorldDialog(){var overlay=document.createElement("div");overlay.id="mc-create-world";overlay.style.cssText="position:fixed;top:0;left:0;width:100%;height:100%;"+"background:rgba(0,0,0,0.8);display:flex;align-items:center;"+"justify-content:center;z-index:9999;font-family:monospace";var box=document.createElement("div");box.style.cssText="background:#3c3c3c;border:2px solid #888;padding:28px;"+"min-width:320px;color:#eee;text-align:center";box.innerHTML='

Create New World

'+'
'+'
'+''+"
"+'
'+'
'+'"+"
"+'
'+''+''+"
";overlay.appendChild(box);document.body.appendChild(overlay);setTimeout(function(){var input=document.getElementById("mc-worldname");if(input){input.focus();input.select()}},50);window._mcWorldStatus=-1;window._mcWorldResult=null;document.getElementById("mc-create-btn").onclick=function(){var nm=(document.getElementById("mc-worldname").value||"My World").trim();var mode=document.getElementById("mc-gamemode").value;window._mcWorldStatus=1;window._mcWorldResult=nm+"|"+mode;document.body.removeChild(overlay)};document.getElementById("mc-cancel-btn").onclick=function(){window._mcWorldStatus=0;window._mcWorldResult=null;document.body.removeChild(overlay)};document.getElementById("mc-worldname").onkeydown=function(e){if(e.key==="Enter")document.getElementById("mc-create-btn").click();if(e.key==="Escape")document.getElementById("mc-cancel-btn").click()}}function _mcSyncSaves(){if(typeof FS!=="undefined"){FS.syncfs(false,function(err){if(err)console.error("FS sync error:",err)})}}var dynCall=(sig,ptr,args=[],promising=false)=>{assert(ptr,`null function pointer in dynCall`);assert(!promising,"async dynCall is not supported in this mode");assert(getWasmTableEntry(ptr),`missing table entry in dynCall: ${ptr}`);var func=getWasmTableEntry(ptr);var rtn=func(...args);function convert(rtn){return rtn}return convert(rtn)};var getCFunc=ident=>{var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func};var writeArrayToMemory=(array,buffer)=>{assert(array.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)");HEAP8.set(array,buffer)};var 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;assert(returnType!=="array",'Return type should not be "array".');if(args){for(var i=0;i(...args)=>ccall(ident,returnType,argTypes,args,opts);var FS_createPath=(...args)=>FS.createPath(...args);var FS_unlink=(...args)=>FS.unlink(...args);var FS_createLazyFile=(...args)=>FS.createLazyFile(...args);var FS_createDevice=(...args)=>FS.createDevice(...args);var createContext=Browser.createContext;FS.createPreloadedFile=FS_createPreloadedFile;FS.preloadFile=FS_preloadFile;FS.staticInit();Module["requestAnimationFrame"]=MainLoop.requestAnimationFrame;Module["pauseMainLoop"]=MainLoop.pause;Module["resumeMainLoop"]=MainLoop.resume;MainLoop.init();registerPreMainLoop(()=>GL.newRenderingFrameStarted());GLImmediate.setupFuncs();Browser.moduleContextCreatedCallbacks.push(()=>GLImmediate.init());GLEmulation.init();for(let i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<=288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i)}var miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<=288;++i){miniTempWebGLIntBuffers[i]=miniTempWebGLIntBuffersStorage.subarray(0,i)}{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["preloadPlugins"])preloadPlugins=Module["preloadPlugins"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];checkIncomingModuleAPI();if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];assert(typeof Module["memoryInitializerPrefixURL"]=="undefined","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["pthreadMainPrefixURL"]=="undefined","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["cdInitializerPrefixURL"]=="undefined","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["filePackagePrefixURL"]=="undefined","Module.filePackagePrefixURL option was removed, use Module.locateFile instead");assert(typeof Module["read"]=="undefined","Module.read option was removed");assert(typeof Module["readAsync"]=="undefined","Module.readAsync option was removed (modify readAsync in JS)");assert(typeof Module["readBinary"]=="undefined","Module.readBinary option was removed (modify readBinary in JS)");assert(typeof Module["setWindowTitle"]=="undefined","Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)");assert(typeof Module["TOTAL_MEMORY"]=="undefined","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY");assert(typeof Module["ENVIRONMENT"]=="undefined","Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");assert(typeof Module["STACK_SIZE"]=="undefined","STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time");assert(typeof Module["wasmMemory"]=="undefined","Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally");assert(typeof Module["INITIAL_MEMORY"]=="undefined","Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically");if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}consumedModuleProp("preInit")}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["createContext"]=createContext;Module["FS_preloadFile"]=FS_preloadFile;Module["FS_unlink"]=FS_unlink;Module["FS_createPath"]=FS_createPath;Module["FS_createDevice"]=FS_createDevice;Module["FS"]=FS;Module["FS_createDataFile"]=FS_createDataFile;Module["FS_createLazyFile"]=FS_createLazyFile;var missingLibrarySymbols=["writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","convertI32PairToI53","convertI32PairToI53Checked","convertU32PairToI53","getTempRet0","setTempRet0","createNamedFunction","withStackSave","getDynCaller","runtimeKeepalivePush","runtimeKeepalivePop","asmjsMangle","HandleAllocator","addOnInit","addOnPostCtor","addOnPreMain","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","convertJsFunctionToWasm","getEmptyTableSlot","updateTableMap","getFunctionAddress","addFunction","removeFunction","intArrayToString","AsciiToString","stringToAscii","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","hideEverythingExceptGivenElement","restoreHiddenElements","softFullscreenResizeWebGLRenderTarget","registerPointerlockErrorEventCallback","fillBatteryEventData","registerBatteryEventCallback","jsStackTrace","getCallstack","convertPCtoSourceLocation","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","setImmediateWrapped","safeRequestAnimationFrame","clearImmediateWrapped","registerPostMainLoop","getPromise","makePromise","idsToPromises","makePromiseCallback","findMatchingCatch","Browser_asyncPrepareDataCounter","isLeapYear","ydayFromDate","arraySum","addDays","FS_mkdirTree","_setNetworkCallback","writeGLArray","registerWebGlEventCallback","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","allocateUTF8","allocateUTF8OnStack","demangle","stackTrace","getNativeTypeSize"];missingLibrarySymbols.forEach(missingLibrarySymbol);var unexportedSymbols=["run","out","err","callMain","abort","wasmExports","HEAPF32","HEAPF64","HEAP8","HEAPU8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAP64","HEAPU64","writeStackCookie","checkStackCookie","writeI53ToI64","readI53FromI64","readI53FromU64","INT53_MAX","INT53_MIN","bigintToI53Checked","stackSave","stackRestore","stackAlloc","ptrToString","zeroMemory","exitJS","getHeapMax","growMemory","ENV","setStackLimits","ERRNO_CODES","strError","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","DNS","Protocols","Sockets","timers","warnOnce","readEmAsmArgsArray","readEmAsmArgs","runEmAsmFunction","runMainThreadEmAsm","jstoi_q","getExecutableName","autoResumeAudioContext","dynCall","handleException","keepRuntimeAlive","callUserCallback","maybeExit","asyncLoad","alignMemory","mmapAlloc","wasmTable","wasmMemory","getUniqueRunDependency","noExitRuntime","addOnPreRun","addOnExit","addOnPostRun","freeTableIndexes","functionsInTableMap","setValue","getValue","PATH","PATH_FS","UTF8Decoder","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","intArrayFromString","UTF16Decoder","stringToNewUTF8","stringToUTF8OnStack","writeArrayToMemory","JSEvents","registerKeyEventCallback","specialHTMLTargets","maybeCStringToJsString","findEventTarget","findCanvasEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","setLetterbox","currentFullscreenStrategy","restoreOldWindowedStyle","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","setCanvasElementSize","getCanvasElementSize","UNWIND_CACHE","ExitStatus","getEnvStrings","checkWasiClock","doReadv","doWritev","initRandomFill","randomFill","safeSetTimeout","emSetImmediate","emClearImmediate_deps","emClearImmediate","registerPreMainLoop","promiseMap","uncaughtExceptionCount","exceptionLast","exceptionCaught","ExceptionInfo","Browser","requestFullscreen","requestFullScreen","setCanvasSize","getUserMedia","getPreloadedImageData__data","wget","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","SYSCALLS","getSocketFromFD","getSocketAddress","preloadPlugins","FS_createPreloadedFile","FS_modeStringToFlags","FS_getMode","FS_stdin_getChar_buffer","FS_stdin_getChar","FS_readFile","FS_root","FS_mounts","FS_devices","FS_streams","FS_nextInode","FS_nameTable","FS_currentPath","FS_initialized","FS_ignorePermissions","FS_filesystems","FS_syncFSRequests","FS_lookupPath","FS_getPath","FS_hashName","FS_hashAddNode","FS_hashRemoveNode","FS_lookupNode","FS_createNode","FS_destroyNode","FS_isRoot","FS_isMountpoint","FS_isFile","FS_isDir","FS_isLink","FS_isChrdev","FS_isBlkdev","FS_isFIFO","FS_isSocket","FS_flagsToPermissionString","FS_nodePermissions","FS_mayLookup","FS_mayCreate","FS_mayDelete","FS_mayOpen","FS_checkOpExists","FS_nextfd","FS_getStreamChecked","FS_getStream","FS_createStream","FS_closeStream","FS_dupStream","FS_doSetAttr","FS_chrdev_stream_ops","FS_major","FS_minor","FS_makedev","FS_registerDevice","FS_getDevice","FS_getMounts","FS_syncfs","FS_mount","FS_unmount","FS_lookup","FS_mknod","FS_statfs","FS_statfsStream","FS_statfsNode","FS_create","FS_mkdir","FS_mkdev","FS_symlink","FS_rename","FS_rmdir","FS_readdir","FS_readlink","FS_stat","FS_fstat","FS_lstat","FS_doChmod","FS_chmod","FS_lchmod","FS_fchmod","FS_doChown","FS_chown","FS_lchown","FS_fchown","FS_doTruncate","FS_truncate","FS_ftruncate","FS_utime","FS_open","FS_close","FS_isClosed","FS_llseek","FS_read","FS_write","FS_mmap","FS_msync","FS_ioctl","FS_writeFile","FS_cwd","FS_chdir","FS_createDefaultDirectories","FS_createDefaultDevices","FS_createSpecialDirectories","FS_createStandardStreams","FS_staticInit","FS_init","FS_quit","FS_findObject","FS_analyzePath","FS_createFile","FS_forceLoadFile","FS_absolutePath","FS_createFolder","FS_createLink","FS_joinPath","FS_mmapAlloc","FS_standardizePath","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","webgl_enable_EXT_polygon_offset_clamp","webgl_enable_EXT_clip_control","webgl_enable_WEBGL_polygon_mode","GL","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","AL","GLUT","EGL","GLEW","IDBStore","emscriptenWebGLGetIndexed","webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance","webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance","GLEmulation","GLImmediate","GLImmediateSetup","emulGlGenVertexArrays","emulGlDeleteVertexArrays","emulGlIsVertexArray","emulGlBindVertexArray","print","printErr","jstoi_s","IDBFS"];unexportedSymbols.forEach(unexportedRuntimeSymbol);function checkIncomingModuleAPI(){ignoredModuleProp("fetchSettings");ignoredModuleProp("logReadFiles");ignoredModuleProp("loadSplitModule")}var ASM_CONSTS={6463976:()=>window.innerWidth,6464006:()=>window.innerHeight,6464037:()=>window.devicePixelRatio||1,6464080:()=>{if(typeof FS!=="undefined"){FS.syncfs(false,function(err){if(err)console.error("FS.syncfs save error:",err)})}},6464210:()=>document.pointerLockElement!=null?1:0,6464268:()=>Math.round(window.innerWidth*(window.devicePixelRatio||1)),6464343:()=>Math.round(window.innerHeight*(window.devicePixelRatio||1)),6464419:()=>{FS.mkdir("/games",511);FS.mount(IDBFS,{},"/games");FS.syncfs(true,function(err){if(err)console.warn("FS.syncfs load error:",err);Module._idbfsReady()})},6464591:()=>{document.addEventListener("pointerlockchange",function(){})},6464659:()=>Math.round(window.innerWidth*(window.devicePixelRatio||1)),6464734:()=>Math.round(window.innerHeight*(window.devicePixelRatio||1)),6464810:()=>{if(document.exitPointerLock){document.exitPointerLock()}},6464872:()=>{if(typeof AudioContext!=="undefined"){return true}else if(typeof webkitAudioContext!=="undefined"){return true}return false},6465019:()=>{if(typeof navigator.mediaDevices!=="undefined"&&typeof navigator.mediaDevices.getUserMedia!=="undefined"){return true}else if(typeof navigator.webkitGetUserMedia!=="undefined"){return true}return false},6465253:$0=>{if(typeof Module["SDL2"]==="undefined"){Module["SDL2"]={}}var SDL2=Module["SDL2"];if(!$0){SDL2.audio={}}else{SDL2.capture={}}if(!SDL2.audioContext){if(typeof AudioContext!=="undefined"){SDL2.audioContext=new AudioContext}else if(typeof webkitAudioContext!=="undefined"){SDL2.audioContext=new webkitAudioContext}if(SDL2.audioContext){if(typeof navigator.userActivation==="undefined"){autoResumeAudioContext(SDL2.audioContext)}}}return SDL2.audioContext===undefined?-1:0},6465805:()=>{var SDL2=Module["SDL2"];return SDL2.audioContext.sampleRate},6465873:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];var have_microphone=function(stream){if(SDL2.capture.silenceTimer!==undefined){clearInterval(SDL2.capture.silenceTimer);SDL2.capture.silenceTimer=undefined;SDL2.capture.silenceBuffer=undefined}SDL2.capture.mediaStreamNode=SDL2.audioContext.createMediaStreamSource(stream);SDL2.capture.scriptProcessorNode=SDL2.audioContext.createScriptProcessor($1,$0,1);SDL2.capture.scriptProcessorNode.onaudioprocess=function(audioProcessingEvent){if(SDL2===undefined||SDL2.capture===undefined){return}audioProcessingEvent.outputBuffer.getChannelData(0).fill(0);SDL2.capture.currentCaptureBuffer=audioProcessingEvent.inputBuffer;dynCall("vp",$2,[$3])};SDL2.capture.mediaStreamNode.connect(SDL2.capture.scriptProcessorNode);SDL2.capture.scriptProcessorNode.connect(SDL2.audioContext.destination);SDL2.capture.stream=stream};var no_microphone=function(error){};SDL2.capture.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.capture.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){SDL2.capture.currentCaptureBuffer=SDL2.capture.silenceBuffer;dynCall("vp",$2,[$3])};SDL2.capture.silenceTimer=setInterval(silence_callback,$1/SDL2.audioContext.sampleRate*1e3);if(navigator.mediaDevices!==undefined&&navigator.mediaDevices.getUserMedia!==undefined){navigator.mediaDevices.getUserMedia({audio:true,video:false}).then(have_microphone).catch(no_microphone)}else if(navigator.webkitGetUserMedia!==undefined){navigator.webkitGetUserMedia({audio:true,video:false},have_microphone,no_microphone)}},6467566:($0,$1,$2,$3)=>{var SDL2=Module["SDL2"];SDL2.audio.scriptProcessorNode=SDL2.audioContext["createScriptProcessor"]($1,0,$0);SDL2.audio.scriptProcessorNode["onaudioprocess"]=function(e){if(SDL2===undefined||SDL2.audio===undefined){return}if(SDL2.audio.silenceTimer!==undefined){clearInterval(SDL2.audio.silenceTimer);SDL2.audio.silenceTimer=undefined;SDL2.audio.silenceBuffer=undefined}SDL2.audio.currentOutputBuffer=e["outputBuffer"];dynCall("vp",$2,[$3])};SDL2.audio.scriptProcessorNode["connect"](SDL2.audioContext["destination"]);if(SDL2.audioContext.state==="suspended"){SDL2.audio.silenceBuffer=SDL2.audioContext.createBuffer($0,$1,SDL2.audioContext.sampleRate);SDL2.audio.silenceBuffer.getChannelData(0).fill(0);var silence_callback=function(){if(typeof navigator.userActivation!=="undefined"){if(navigator.userActivation.hasBeenActive){SDL2.audioContext.resume()}}SDL2.audio.currentOutputBuffer=SDL2.audio.silenceBuffer;dynCall("vp",$2,[$3]);SDL2.audio.currentOutputBuffer=undefined};SDL2.audio.silenceTimer=setInterval(silence_callback,$1/SDL2.audioContext.sampleRate*1e3)}},6468741:($0,$1)=>{var SDL2=Module["SDL2"];var numChannels=SDL2.capture.currentCaptureBuffer.numberOfChannels;for(var c=0;c{var SDL2=Module["SDL2"];var buf=$0>>>2;var numChannels=SDL2.audio.currentOutputBuffer["numberOfChannels"];for(var c=0;c{var SDL2=Module["SDL2"];if($0){if(SDL2.capture.silenceTimer!==undefined){clearInterval(SDL2.capture.silenceTimer)}if(SDL2.capture.stream!==undefined){var tracks=SDL2.capture.stream.getAudioTracks();for(var i=0;i{var w=$0;var h=$1;var pixels=$2;if(!Module["SDL2"])Module["SDL2"]={};var SDL2=Module["SDL2"];if(SDL2.ctxCanvas!==Module["canvas"]){SDL2.ctx=Browser.createContext(Module["canvas"],false,true);SDL2.ctxCanvas=Module["canvas"]}if(SDL2.w!==w||SDL2.h!==h||SDL2.imageCtx!==SDL2.ctx){SDL2.image=SDL2.ctx.createImageData(w,h);SDL2.w=w;SDL2.h=h;SDL2.imageCtx=SDL2.ctx}var data=SDL2.image.data;var src=pixels/4;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=255;src++;dst+=4}}else{if(SDL2.data32Data!==data){SDL2.data32=new Int32Array(data.buffer);SDL2.data8=new Uint8Array(data.buffer);SDL2.data32Data=data}var data32=SDL2.data32;num=data32.length;data32.set(HEAP32.subarray(src,src+num));var data8=SDL2.data8;var i=3;var j=i+4*num;if(num%8==0){while(i{var w=$0;var h=$1;var hot_x=$2;var hot_y=$3;var pixels=$4;var canvas=document.createElement("canvas");canvas.width=w;canvas.height=h;var ctx=canvas.getContext("2d");var image=ctx.createImageData(w,h);var data=image.data;var src=pixels/4;var dst=0;var num;if(typeof CanvasPixelArray!=="undefined"&&data instanceof CanvasPixelArray){num=data.length;while(dst>8&255;data[dst+2]=val>>16&255;data[dst+3]=val>>24&255;src++;dst+=4}}else{var data32=new Int32Array(data.buffer);num=data32.length;data32.set(HEAP32.subarray(src,src+num))}ctx.putImageData(image,0,0);var url=hot_x===0&&hot_y===0?"url("+canvas.toDataURL()+"), auto":"url("+canvas.toDataURL()+") "+hot_x+" "+hot_y+", auto";var urlBuf=_malloc(url.length+1);stringToUTF8(url,urlBuf,url.length+1);return urlBuf},6473295:$0=>{if(Module["canvas"]){Module["canvas"].style["cursor"]=UTF8ToString($0)}},6473378:()=>{if(Module["canvas"]){Module["canvas"].style["cursor"]="none"}},6473447:()=>window.innerWidth,6473477:()=>window.innerHeight};var _free=Module["_free"]=makeInvalidEarlyAccess("_free");var _emscripten_is_pointer_locked=Module["_emscripten_is_pointer_locked"]=makeInvalidEarlyAccess("_emscripten_is_pointer_locked");var _syncSaves=Module["_syncSaves"]=makeInvalidEarlyAccess("_syncSaves");var _main=Module["_main"]=makeInvalidEarlyAccess("_main");var _idbfsReady=Module["_idbfsReady"]=makeInvalidEarlyAccess("_idbfsReady");var _htons=makeInvalidEarlyAccess("_htons");var _ntohs=makeInvalidEarlyAccess("_ntohs");var _fflush=makeInvalidEarlyAccess("_fflush");var _malloc=Module["_malloc"]=makeInvalidEarlyAccess("_malloc");var _strerror=makeInvalidEarlyAccess("_strerror");var _emscripten_stack_get_end=makeInvalidEarlyAccess("_emscripten_stack_get_end");var _emscripten_stack_get_base=makeInvalidEarlyAccess("_emscripten_stack_get_base");var _setThrew=makeInvalidEarlyAccess("_setThrew");var _emscripten_stack_init=makeInvalidEarlyAccess("_emscripten_stack_init");var _emscripten_stack_get_free=makeInvalidEarlyAccess("_emscripten_stack_get_free");var __emscripten_stack_restore=makeInvalidEarlyAccess("__emscripten_stack_restore");var __emscripten_stack_alloc=makeInvalidEarlyAccess("__emscripten_stack_alloc");var _emscripten_stack_get_current=makeInvalidEarlyAccess("_emscripten_stack_get_current");var ___set_stack_limits=Module["___set_stack_limits"]=makeInvalidEarlyAccess("___set_stack_limits");var memory=makeInvalidEarlyAccess("memory");var __indirect_function_table=makeInvalidEarlyAccess("__indirect_function_table");var wasmMemory=makeInvalidEarlyAccess("wasmMemory");var wasmTable=makeInvalidEarlyAccess("wasmTable");function assignWasmExports(wasmExports){assert(typeof wasmExports["free"]!="undefined","missing Wasm export: free");assert(typeof wasmExports["emscripten_is_pointer_locked"]!="undefined","missing Wasm export: emscripten_is_pointer_locked");assert(typeof wasmExports["syncSaves"]!="undefined","missing Wasm export: syncSaves");assert(typeof wasmExports["__main_argc_argv"]!="undefined","missing Wasm export: __main_argc_argv");assert(typeof wasmExports["idbfsReady"]!="undefined","missing Wasm export: idbfsReady");assert(typeof wasmExports["htons"]!="undefined","missing Wasm export: htons");assert(typeof wasmExports["ntohs"]!="undefined","missing Wasm export: ntohs");assert(typeof wasmExports["fflush"]!="undefined","missing Wasm export: fflush");assert(typeof wasmExports["malloc"]!="undefined","missing Wasm export: malloc");assert(typeof wasmExports["strerror"]!="undefined","missing Wasm export: strerror");assert(typeof wasmExports["emscripten_stack_get_end"]!="undefined","missing Wasm export: emscripten_stack_get_end");assert(typeof wasmExports["emscripten_stack_get_base"]!="undefined","missing Wasm export: emscripten_stack_get_base");assert(typeof wasmExports["setThrew"]!="undefined","missing Wasm export: setThrew");assert(typeof wasmExports["emscripten_stack_init"]!="undefined","missing Wasm export: emscripten_stack_init");assert(typeof wasmExports["emscripten_stack_get_free"]!="undefined","missing Wasm export: emscripten_stack_get_free");assert(typeof wasmExports["_emscripten_stack_restore"]!="undefined","missing Wasm export: _emscripten_stack_restore");assert(typeof wasmExports["_emscripten_stack_alloc"]!="undefined","missing Wasm export: _emscripten_stack_alloc");assert(typeof wasmExports["emscripten_stack_get_current"]!="undefined","missing Wasm export: emscripten_stack_get_current");assert(typeof wasmExports["__set_stack_limits"]!="undefined","missing Wasm export: __set_stack_limits");assert(typeof wasmExports["memory"]!="undefined","missing Wasm export: memory");assert(typeof wasmExports["__indirect_function_table"]!="undefined","missing Wasm export: __indirect_function_table");_free=Module["_free"]=createExportWrapper("free",1);_emscripten_is_pointer_locked=Module["_emscripten_is_pointer_locked"]=createExportWrapper("emscripten_is_pointer_locked",0);_syncSaves=Module["_syncSaves"]=createExportWrapper("syncSaves",0);_main=Module["_main"]=createExportWrapper("__main_argc_argv",2);_idbfsReady=Module["_idbfsReady"]=createExportWrapper("idbfsReady",0);_htons=createExportWrapper("htons",1);_ntohs=createExportWrapper("ntohs",1);_fflush=createExportWrapper("fflush",1);_malloc=Module["_malloc"]=createExportWrapper("malloc",1);_strerror=createExportWrapper("strerror",1);_emscripten_stack_get_end=wasmExports["emscripten_stack_get_end"];_emscripten_stack_get_base=wasmExports["emscripten_stack_get_base"];_setThrew=createExportWrapper("setThrew",2);_emscripten_stack_init=wasmExports["emscripten_stack_init"];_emscripten_stack_get_free=wasmExports["emscripten_stack_get_free"];__emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];_emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];___set_stack_limits=Module["___set_stack_limits"]=createExportWrapper("__set_stack_limits",2);memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"]}var wasmImports={__assert_fail:___assert_fail,__cxa_throw:___cxa_throw,__handle_stack_overflow:___handle_stack_overflow,__syscall_accept4:___syscall_accept4,__syscall_bind:___syscall_bind,__syscall_faccessat:___syscall_faccessat,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_getdents64:___syscall_getdents64,__syscall_getsockname:___syscall_getsockname,__syscall_getsockopt:___syscall_getsockopt,__syscall_ioctl:___syscall_ioctl,__syscall_lstat64:___syscall_lstat64,__syscall_mkdirat:___syscall_mkdirat,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_recvfrom:___syscall_recvfrom,__syscall_renameat:___syscall_renameat,__syscall_rmdir:___syscall_rmdir,__syscall_sendto:___syscall_sendto,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,_abort_js:__abort_js,_emscripten_lookup_name:__emscripten_lookup_name,_emscripten_throw_longjmp:__emscripten_throw_longjmp,_tzset_js:__tzset_js,alBufferData:_alBufferData,alDeleteBuffers:_alDeleteBuffers,alDeleteSources:_alDeleteSources,alDistanceModel:_alDistanceModel,alGenBuffers:_alGenBuffers,alGenSources:_alGenSources,alGetError:_alGetError,alGetSourcei:_alGetSourcei,alListenerfv:_alListenerfv,alSource3f:_alSource3f,alSourcePlay:_alSourcePlay,alSourcef:_alSourcef,alSourcei:_alSourcei,alcCloseDevice:_alcCloseDevice,alcCreateContext:_alcCreateContext,alcDestroyContext:_alcDestroyContext,alcMakeContextCurrent:_alcMakeContextCurrent,alcOpenDevice:_alcOpenDevice,clock_time_get:_clock_time_get,eglBindAPI:_eglBindAPI,eglChooseConfig:_eglChooseConfig,eglCreateContext:_eglCreateContext,eglCreateWindowSurface:_eglCreateWindowSurface,eglDestroyContext:_eglDestroyContext,eglDestroySurface:_eglDestroySurface,eglGetConfigAttrib:_eglGetConfigAttrib,eglGetDisplay:_eglGetDisplay,eglGetError:_eglGetError,eglInitialize:_eglInitialize,eglMakeCurrent:_eglMakeCurrent,eglQueryString:_eglQueryString,eglSwapBuffers:_eglSwapBuffers,eglSwapInterval:_eglSwapInterval,eglTerminate:_eglTerminate,eglWaitGL:_eglWaitGL,eglWaitNative:_eglWaitNative,emscripten_asm_const_double:_emscripten_asm_const_double,emscripten_asm_const_int:_emscripten_asm_const_int,emscripten_asm_const_int_sync_on_main_thread:_emscripten_asm_const_int_sync_on_main_thread,emscripten_asm_const_ptr_sync_on_main_thread:_emscripten_asm_const_ptr_sync_on_main_thread,emscripten_cancel_main_loop:_emscripten_cancel_main_loop,emscripten_date_now:_emscripten_date_now,emscripten_err:_emscripten_err,emscripten_exit_fullscreen:_emscripten_exit_fullscreen,emscripten_exit_pointerlock:_emscripten_exit_pointerlock,emscripten_get_device_pixel_ratio:_emscripten_get_device_pixel_ratio,emscripten_get_element_css_size:_emscripten_get_element_css_size,emscripten_get_gamepad_status:_emscripten_get_gamepad_status,emscripten_get_now:_emscripten_get_now,emscripten_get_num_gamepads:_emscripten_get_num_gamepads,emscripten_get_screen_size:_emscripten_get_screen_size,emscripten_glActiveTexture:_emscripten_glActiveTexture,emscripten_glAlphaFunc:_emscripten_glAlphaFunc,emscripten_glAttachShader:_emscripten_glAttachShader,emscripten_glBegin:_emscripten_glBegin,emscripten_glBeginQuery:_emscripten_glBeginQuery,emscripten_glBeginQueryEXT:_emscripten_glBeginQueryEXT,emscripten_glBeginTransformFeedback:_emscripten_glBeginTransformFeedback,emscripten_glBindAttribLocation:_emscripten_glBindAttribLocation,emscripten_glBindBuffer:_emscripten_glBindBuffer,emscripten_glBindBufferBase:_emscripten_glBindBufferBase,emscripten_glBindBufferRange:_emscripten_glBindBufferRange,emscripten_glBindFramebuffer:_emscripten_glBindFramebuffer,emscripten_glBindProgram:_emscripten_glBindProgram,emscripten_glBindRenderbuffer:_emscripten_glBindRenderbuffer,emscripten_glBindSampler:_emscripten_glBindSampler,emscripten_glBindTexture:_emscripten_glBindTexture,emscripten_glBindTransformFeedback:_emscripten_glBindTransformFeedback,emscripten_glBindVertexArray:_emscripten_glBindVertexArray,emscripten_glBindVertexArrayOES:_emscripten_glBindVertexArrayOES,emscripten_glBlendColor:_emscripten_glBlendColor,emscripten_glBlendEquation:_emscripten_glBlendEquation,emscripten_glBlendEquationSeparate:_emscripten_glBlendEquationSeparate,emscripten_glBlendFunc:_emscripten_glBlendFunc,emscripten_glBlendFuncSeparate:_emscripten_glBlendFuncSeparate,emscripten_glBlitFramebuffer:_emscripten_glBlitFramebuffer,emscripten_glBufferData:_emscripten_glBufferData,emscripten_glBufferSubData:_emscripten_glBufferSubData,emscripten_glCheckFramebufferStatus:_emscripten_glCheckFramebufferStatus,emscripten_glClear:_emscripten_glClear,emscripten_glClearBufferfi:_emscripten_glClearBufferfi,emscripten_glClearBufferfv:_emscripten_glClearBufferfv,emscripten_glClearBufferiv:_emscripten_glClearBufferiv,emscripten_glClearBufferuiv:_emscripten_glClearBufferuiv,emscripten_glClearColor:_emscripten_glClearColor,emscripten_glClearDepthf:_emscripten_glClearDepthf,emscripten_glClearStencil:_emscripten_glClearStencil,emscripten_glClientActiveTexture:_emscripten_glClientActiveTexture,emscripten_glClientWaitSync:_emscripten_glClientWaitSync,emscripten_glClipControlEXT:_emscripten_glClipControlEXT,emscripten_glClipPlane:_emscripten_glClipPlane,emscripten_glColor3d:_emscripten_glColor3d,emscripten_glColor3f:_emscripten_glColor3f,emscripten_glColor3fv:_emscripten_glColor3fv,emscripten_glColor3ub:_emscripten_glColor3ub,emscripten_glColor3ubv:_emscripten_glColor3ubv,emscripten_glColor3ui:_emscripten_glColor3ui,emscripten_glColor3uiv:_emscripten_glColor3uiv,emscripten_glColor3us:_emscripten_glColor3us,emscripten_glColor3usv:_emscripten_glColor3usv,emscripten_glColor4d:_emscripten_glColor4d,emscripten_glColor4f:_emscripten_glColor4f,emscripten_glColor4fv:_emscripten_glColor4fv,emscripten_glColor4ub:_emscripten_glColor4ub,emscripten_glColor4ubv:_emscripten_glColor4ubv,emscripten_glColor4ui:_emscripten_glColor4ui,emscripten_glColor4us:_emscripten_glColor4us,emscripten_glColorMask:_emscripten_glColorMask,emscripten_glColorPointer:_emscripten_glColorPointer,emscripten_glCompileShader:_emscripten_glCompileShader,emscripten_glCompressedTexImage2D:_emscripten_glCompressedTexImage2D,emscripten_glCompressedTexImage3D:_emscripten_glCompressedTexImage3D,emscripten_glCompressedTexSubImage2D:_emscripten_glCompressedTexSubImage2D,emscripten_glCompressedTexSubImage3D:_emscripten_glCompressedTexSubImage3D,emscripten_glCopyBufferSubData:_emscripten_glCopyBufferSubData,emscripten_glCopyTexImage2D:_emscripten_glCopyTexImage2D,emscripten_glCopyTexSubImage2D:_emscripten_glCopyTexSubImage2D,emscripten_glCopyTexSubImage3D:_emscripten_glCopyTexSubImage3D,emscripten_glCreateProgram:_emscripten_glCreateProgram,emscripten_glCreateShader:_emscripten_glCreateShader,emscripten_glCullFace:_emscripten_glCullFace,emscripten_glDeleteBuffers:_emscripten_glDeleteBuffers,emscripten_glDeleteFramebuffers:_emscripten_glDeleteFramebuffers,emscripten_glDeleteObject:_emscripten_glDeleteObject,emscripten_glDeleteProgram:_emscripten_glDeleteProgram,emscripten_glDeleteQueries:_emscripten_glDeleteQueries,emscripten_glDeleteQueriesEXT:_emscripten_glDeleteQueriesEXT,emscripten_glDeleteRenderbuffers:_emscripten_glDeleteRenderbuffers,emscripten_glDeleteSamplers:_emscripten_glDeleteSamplers,emscripten_glDeleteShader:_emscripten_glDeleteShader,emscripten_glDeleteSync:_emscripten_glDeleteSync,emscripten_glDeleteTextures:_emscripten_glDeleteTextures,emscripten_glDeleteTransformFeedbacks:_emscripten_glDeleteTransformFeedbacks,emscripten_glDeleteVertexArrays:_emscripten_glDeleteVertexArrays,emscripten_glDeleteVertexArraysOES:_emscripten_glDeleteVertexArraysOES,emscripten_glDepthFunc:_emscripten_glDepthFunc,emscripten_glDepthMask:_emscripten_glDepthMask,emscripten_glDepthRangef:_emscripten_glDepthRangef,emscripten_glDetachShader:_emscripten_glDetachShader,emscripten_glDisable:_emscripten_glDisable,emscripten_glDisableClientState:_emscripten_glDisableClientState,emscripten_glDisableVertexAttribArray:_emscripten_glDisableVertexAttribArray,emscripten_glDrawArrays:_emscripten_glDrawArrays,emscripten_glDrawArraysInstanced:_emscripten_glDrawArraysInstanced,emscripten_glDrawArraysInstancedANGLE:_emscripten_glDrawArraysInstancedANGLE,emscripten_glDrawArraysInstancedARB:_emscripten_glDrawArraysInstancedARB,emscripten_glDrawArraysInstancedEXT:_emscripten_glDrawArraysInstancedEXT,emscripten_glDrawArraysInstancedNV:_emscripten_glDrawArraysInstancedNV,emscripten_glDrawBuffer:_emscripten_glDrawBuffer,emscripten_glDrawBuffers:_emscripten_glDrawBuffers,emscripten_glDrawBuffersEXT:_emscripten_glDrawBuffersEXT,emscripten_glDrawBuffersWEBGL:_emscripten_glDrawBuffersWEBGL,emscripten_glDrawElements:_emscripten_glDrawElements,emscripten_glDrawElementsInstanced:_emscripten_glDrawElementsInstanced,emscripten_glDrawElementsInstancedANGLE:_emscripten_glDrawElementsInstancedANGLE,emscripten_glDrawElementsInstancedARB:_emscripten_glDrawElementsInstancedARB,emscripten_glDrawElementsInstancedEXT:_emscripten_glDrawElementsInstancedEXT,emscripten_glDrawElementsInstancedNV:_emscripten_glDrawElementsInstancedNV,emscripten_glDrawRangeElements:_emscripten_glDrawRangeElements,emscripten_glEnable:_emscripten_glEnable,emscripten_glEnableClientState:_emscripten_glEnableClientState,emscripten_glEnableVertexAttribArray:_emscripten_glEnableVertexAttribArray,emscripten_glEnd:_emscripten_glEnd,emscripten_glEndQuery:_emscripten_glEndQuery,emscripten_glEndQueryEXT:_emscripten_glEndQueryEXT,emscripten_glEndTransformFeedback:_emscripten_glEndTransformFeedback,emscripten_glFenceSync:_emscripten_glFenceSync,emscripten_glFinish:_emscripten_glFinish,emscripten_glFlush:_emscripten_glFlush,emscripten_glFramebufferRenderbuffer:_emscripten_glFramebufferRenderbuffer,emscripten_glFramebufferTexture2D:_emscripten_glFramebufferTexture2D,emscripten_glFramebufferTextureLayer:_emscripten_glFramebufferTextureLayer,emscripten_glFrontFace:_emscripten_glFrontFace,emscripten_glFrustum:_emscripten_glFrustum,emscripten_glGenBuffers:_emscripten_glGenBuffers,emscripten_glGenFramebuffers:_emscripten_glGenFramebuffers,emscripten_glGenQueries:_emscripten_glGenQueries,emscripten_glGenQueriesEXT:_emscripten_glGenQueriesEXT,emscripten_glGenRenderbuffers:_emscripten_glGenRenderbuffers,emscripten_glGenSamplers:_emscripten_glGenSamplers,emscripten_glGenTextures:_emscripten_glGenTextures,emscripten_glGenTransformFeedbacks:_emscripten_glGenTransformFeedbacks,emscripten_glGenVertexArrays:_emscripten_glGenVertexArrays,emscripten_glGenVertexArraysOES:_emscripten_glGenVertexArraysOES,emscripten_glGenerateMipmap:_emscripten_glGenerateMipmap,emscripten_glGetActiveAttrib:_emscripten_glGetActiveAttrib,emscripten_glGetActiveUniform:_emscripten_glGetActiveUniform,emscripten_glGetActiveUniformBlockName:_emscripten_glGetActiveUniformBlockName,emscripten_glGetActiveUniformBlockiv:_emscripten_glGetActiveUniformBlockiv,emscripten_glGetActiveUniformsiv:_emscripten_glGetActiveUniformsiv,emscripten_glGetAttachedShaders:_emscripten_glGetAttachedShaders,emscripten_glGetAttribLocation:_emscripten_glGetAttribLocation,emscripten_glGetBooleanv:_emscripten_glGetBooleanv,emscripten_glGetBufferParameteri64v:_emscripten_glGetBufferParameteri64v,emscripten_glGetBufferParameteriv:_emscripten_glGetBufferParameteriv,emscripten_glGetError:_emscripten_glGetError,emscripten_glGetFloatv:_emscripten_glGetFloatv,emscripten_glGetFragDataLocation:_emscripten_glGetFragDataLocation,emscripten_glGetFramebufferAttachmentParameteriv:_emscripten_glGetFramebufferAttachmentParameteriv,emscripten_glGetInfoLog:_emscripten_glGetInfoLog,emscripten_glGetInteger64i_v:_emscripten_glGetInteger64i_v,emscripten_glGetInteger64v:_emscripten_glGetInteger64v,emscripten_glGetIntegeri_v:_emscripten_glGetIntegeri_v,emscripten_glGetIntegerv:_emscripten_glGetIntegerv,emscripten_glGetInternalformativ:_emscripten_glGetInternalformativ,emscripten_glGetObjectParameteriv:_emscripten_glGetObjectParameteriv,emscripten_glGetPointerv:_emscripten_glGetPointerv,emscripten_glGetProgramBinary:_emscripten_glGetProgramBinary,emscripten_glGetProgramInfoLog:_emscripten_glGetProgramInfoLog,emscripten_glGetProgramiv:_emscripten_glGetProgramiv,emscripten_glGetQueryObjecti64vEXT:_emscripten_glGetQueryObjecti64vEXT,emscripten_glGetQueryObjectivEXT:_emscripten_glGetQueryObjectivEXT,emscripten_glGetQueryObjectui64vEXT:_emscripten_glGetQueryObjectui64vEXT,emscripten_glGetQueryObjectuiv:_emscripten_glGetQueryObjectuiv,emscripten_glGetQueryObjectuivEXT:_emscripten_glGetQueryObjectuivEXT,emscripten_glGetQueryiv:_emscripten_glGetQueryiv,emscripten_glGetQueryivEXT:_emscripten_glGetQueryivEXT,emscripten_glGetRenderbufferParameteriv:_emscripten_glGetRenderbufferParameteriv,emscripten_glGetSamplerParameterfv:_emscripten_glGetSamplerParameterfv,emscripten_glGetSamplerParameteriv:_emscripten_glGetSamplerParameteriv,emscripten_glGetShaderInfoLog:_emscripten_glGetShaderInfoLog,emscripten_glGetShaderPrecisionFormat:_emscripten_glGetShaderPrecisionFormat,emscripten_glGetShaderSource:_emscripten_glGetShaderSource,emscripten_glGetShaderiv:_emscripten_glGetShaderiv,emscripten_glGetString:_emscripten_glGetString,emscripten_glGetStringi:_emscripten_glGetStringi,emscripten_glGetSynciv:_emscripten_glGetSynciv,emscripten_glGetTexEnvfv:_emscripten_glGetTexEnvfv,emscripten_glGetTexEnviv:_emscripten_glGetTexEnviv,emscripten_glGetTexLevelParameteriv:_emscripten_glGetTexLevelParameteriv,emscripten_glGetTexParameterfv:_emscripten_glGetTexParameterfv,emscripten_glGetTexParameteriv:_emscripten_glGetTexParameteriv,emscripten_glGetTransformFeedbackVarying:_emscripten_glGetTransformFeedbackVarying,emscripten_glGetUniformBlockIndex:_emscripten_glGetUniformBlockIndex,emscripten_glGetUniformIndices:_emscripten_glGetUniformIndices,emscripten_glGetUniformLocation:_emscripten_glGetUniformLocation,emscripten_glGetUniformfv:_emscripten_glGetUniformfv,emscripten_glGetUniformiv:_emscripten_glGetUniformiv,emscripten_glGetUniformuiv:_emscripten_glGetUniformuiv,emscripten_glGetVertexAttribIiv:_emscripten_glGetVertexAttribIiv,emscripten_glGetVertexAttribIuiv:_emscripten_glGetVertexAttribIuiv,emscripten_glGetVertexAttribPointerv:_emscripten_glGetVertexAttribPointerv,emscripten_glGetVertexAttribfv:_emscripten_glGetVertexAttribfv,emscripten_glGetVertexAttribiv:_emscripten_glGetVertexAttribiv,emscripten_glHint:_emscripten_glHint,emscripten_glInvalidateFramebuffer:_emscripten_glInvalidateFramebuffer,emscripten_glInvalidateSubFramebuffer:_emscripten_glInvalidateSubFramebuffer,emscripten_glIsBuffer:_emscripten_glIsBuffer,emscripten_glIsEnabled:_emscripten_glIsEnabled,emscripten_glIsFramebuffer:_emscripten_glIsFramebuffer,emscripten_glIsProgram:_emscripten_glIsProgram,emscripten_glIsQuery:_emscripten_glIsQuery,emscripten_glIsQueryEXT:_emscripten_glIsQueryEXT,emscripten_glIsRenderbuffer:_emscripten_glIsRenderbuffer,emscripten_glIsSampler:_emscripten_glIsSampler,emscripten_glIsShader:_emscripten_glIsShader,emscripten_glIsSync:_emscripten_glIsSync,emscripten_glIsTexture:_emscripten_glIsTexture,emscripten_glIsTransformFeedback:_emscripten_glIsTransformFeedback,emscripten_glIsVertexArray:_emscripten_glIsVertexArray,emscripten_glIsVertexArrayOES:_emscripten_glIsVertexArrayOES,emscripten_glLightModelf:_emscripten_glLightModelf,emscripten_glLightModelfv:_emscripten_glLightModelfv,emscripten_glLightfv:_emscripten_glLightfv,emscripten_glLineWidth:_emscripten_glLineWidth,emscripten_glLinkProgram:_emscripten_glLinkProgram,emscripten_glLoadIdentity:_emscripten_glLoadIdentity,emscripten_glLoadMatrixd:_emscripten_glLoadMatrixd,emscripten_glLoadMatrixf:_emscripten_glLoadMatrixf,emscripten_glLoadTransposeMatrixd:_emscripten_glLoadTransposeMatrixd,emscripten_glLoadTransposeMatrixf:_emscripten_glLoadTransposeMatrixf,emscripten_glMaterialfv:_emscripten_glMaterialfv,emscripten_glMatrixMode:_emscripten_glMatrixMode,emscripten_glMultMatrixd:_emscripten_glMultMatrixd,emscripten_glMultMatrixf:_emscripten_glMultMatrixf,emscripten_glMultTransposeMatrixd:_emscripten_glMultTransposeMatrixd,emscripten_glMultTransposeMatrixf:_emscripten_glMultTransposeMatrixf,emscripten_glNormal3f:_emscripten_glNormal3f,emscripten_glNormalPointer:_emscripten_glNormalPointer,emscripten_glOrtho:_emscripten_glOrtho,emscripten_glPauseTransformFeedback:_emscripten_glPauseTransformFeedback,emscripten_glPixelStorei:_emscripten_glPixelStorei,emscripten_glPolygonMode:_emscripten_glPolygonMode,emscripten_glPolygonModeWEBGL:_emscripten_glPolygonModeWEBGL,emscripten_glPolygonOffset:_emscripten_glPolygonOffset,emscripten_glPolygonOffsetClampEXT:_emscripten_glPolygonOffsetClampEXT,emscripten_glPopMatrix:_emscripten_glPopMatrix,emscripten_glProgramBinary:_emscripten_glProgramBinary,emscripten_glProgramParameteri:_emscripten_glProgramParameteri,emscripten_glPushMatrix:_emscripten_glPushMatrix,emscripten_glQueryCounterEXT:_emscripten_glQueryCounterEXT,emscripten_glReadBuffer:_emscripten_glReadBuffer,emscripten_glReadPixels:_emscripten_glReadPixels,emscripten_glReleaseShaderCompiler:_emscripten_glReleaseShaderCompiler,emscripten_glRenderbufferStorage:_emscripten_glRenderbufferStorage,emscripten_glRenderbufferStorageMultisample:_emscripten_glRenderbufferStorageMultisample,emscripten_glResumeTransformFeedback:_emscripten_glResumeTransformFeedback,emscripten_glRotated:_emscripten_glRotated,emscripten_glRotatef:_emscripten_glRotatef,emscripten_glSampleCoverage:_emscripten_glSampleCoverage,emscripten_glSamplerParameterf:_emscripten_glSamplerParameterf,emscripten_glSamplerParameterfv:_emscripten_glSamplerParameterfv,emscripten_glSamplerParameteri:_emscripten_glSamplerParameteri,emscripten_glSamplerParameteriv:_emscripten_glSamplerParameteriv,emscripten_glScaled:_emscripten_glScaled,emscripten_glScalef:_emscripten_glScalef,emscripten_glScissor:_emscripten_glScissor,emscripten_glShadeModel:_emscripten_glShadeModel,emscripten_glShaderBinary:_emscripten_glShaderBinary,emscripten_glShaderSource:_emscripten_glShaderSource,emscripten_glStencilFunc:_emscripten_glStencilFunc,emscripten_glStencilFuncSeparate:_emscripten_glStencilFuncSeparate,emscripten_glStencilMask:_emscripten_glStencilMask,emscripten_glStencilMaskSeparate:_emscripten_glStencilMaskSeparate,emscripten_glStencilOp:_emscripten_glStencilOp,emscripten_glStencilOpSeparate:_emscripten_glStencilOpSeparate,emscripten_glTexCoord2f:_emscripten_glTexCoord2f,emscripten_glTexCoord2fv:_emscripten_glTexCoord2fv,emscripten_glTexCoord2i:_emscripten_glTexCoord2i,emscripten_glTexCoord3f:_emscripten_glTexCoord3f,emscripten_glTexCoord4f:_emscripten_glTexCoord4f,emscripten_glTexCoordPointer:_emscripten_glTexCoordPointer,emscripten_glTexGenfv:_emscripten_glTexGenfv,emscripten_glTexGeni:_emscripten_glTexGeni,emscripten_glTexImage1D:_emscripten_glTexImage1D,emscripten_glTexImage2D:_emscripten_glTexImage2D,emscripten_glTexImage3D:_emscripten_glTexImage3D,emscripten_glTexParameterf:_emscripten_glTexParameterf,emscripten_glTexParameterfv:_emscripten_glTexParameterfv,emscripten_glTexParameteri:_emscripten_glTexParameteri,emscripten_glTexParameteriv:_emscripten_glTexParameteriv,emscripten_glTexStorage2D:_emscripten_glTexStorage2D,emscripten_glTexStorage3D:_emscripten_glTexStorage3D,emscripten_glTexSubImage2D:_emscripten_glTexSubImage2D,emscripten_glTexSubImage3D:_emscripten_glTexSubImage3D,emscripten_glTransformFeedbackVaryings:_emscripten_glTransformFeedbackVaryings,emscripten_glTranslated:_emscripten_glTranslated,emscripten_glTranslatef:_emscripten_glTranslatef,emscripten_glUniform1f:_emscripten_glUniform1f,emscripten_glUniform1fv:_emscripten_glUniform1fv,emscripten_glUniform1i:_emscripten_glUniform1i,emscripten_glUniform1iv:_emscripten_glUniform1iv,emscripten_glUniform1ui:_emscripten_glUniform1ui,emscripten_glUniform1uiv:_emscripten_glUniform1uiv,emscripten_glUniform2f:_emscripten_glUniform2f,emscripten_glUniform2fv:_emscripten_glUniform2fv,emscripten_glUniform2i:_emscripten_glUniform2i,emscripten_glUniform2iv:_emscripten_glUniform2iv,emscripten_glUniform2ui:_emscripten_glUniform2ui,emscripten_glUniform2uiv:_emscripten_glUniform2uiv,emscripten_glUniform3f:_emscripten_glUniform3f,emscripten_glUniform3fv:_emscripten_glUniform3fv,emscripten_glUniform3i:_emscripten_glUniform3i,emscripten_glUniform3iv:_emscripten_glUniform3iv,emscripten_glUniform3ui:_emscripten_glUniform3ui,emscripten_glUniform3uiv:_emscripten_glUniform3uiv,emscripten_glUniform4f:_emscripten_glUniform4f,emscripten_glUniform4fv:_emscripten_glUniform4fv,emscripten_glUniform4i:_emscripten_glUniform4i,emscripten_glUniform4iv:_emscripten_glUniform4iv,emscripten_glUniform4ui:_emscripten_glUniform4ui,emscripten_glUniform4uiv:_emscripten_glUniform4uiv,emscripten_glUniformBlockBinding:_emscripten_glUniformBlockBinding,emscripten_glUniformMatrix2fv:_emscripten_glUniformMatrix2fv,emscripten_glUniformMatrix2x3fv:_emscripten_glUniformMatrix2x3fv,emscripten_glUniformMatrix2x4fv:_emscripten_glUniformMatrix2x4fv,emscripten_glUniformMatrix3fv:_emscripten_glUniformMatrix3fv,emscripten_glUniformMatrix3x2fv:_emscripten_glUniformMatrix3x2fv,emscripten_glUniformMatrix3x4fv:_emscripten_glUniformMatrix3x4fv,emscripten_glUniformMatrix4fv:_emscripten_glUniformMatrix4fv,emscripten_glUniformMatrix4x2fv:_emscripten_glUniformMatrix4x2fv,emscripten_glUniformMatrix4x3fv:_emscripten_glUniformMatrix4x3fv,emscripten_glUseProgram:_emscripten_glUseProgram,emscripten_glValidateProgram:_emscripten_glValidateProgram,emscripten_glVertex2f:_emscripten_glVertex2f,emscripten_glVertex2fv:_emscripten_glVertex2fv,emscripten_glVertex2i:_emscripten_glVertex2i,emscripten_glVertex3f:_emscripten_glVertex3f,emscripten_glVertex3fv:_emscripten_glVertex3fv,emscripten_glVertex3i:_emscripten_glVertex3i,emscripten_glVertex4f:_emscripten_glVertex4f,emscripten_glVertex4fv:_emscripten_glVertex4fv,emscripten_glVertex4i:_emscripten_glVertex4i,emscripten_glVertexAttrib1f:_emscripten_glVertexAttrib1f,emscripten_glVertexAttrib1fv:_emscripten_glVertexAttrib1fv,emscripten_glVertexAttrib2f:_emscripten_glVertexAttrib2f,emscripten_glVertexAttrib2fv:_emscripten_glVertexAttrib2fv,emscripten_glVertexAttrib3f:_emscripten_glVertexAttrib3f,emscripten_glVertexAttrib3fv:_emscripten_glVertexAttrib3fv,emscripten_glVertexAttrib4f:_emscripten_glVertexAttrib4f,emscripten_glVertexAttrib4fv:_emscripten_glVertexAttrib4fv,emscripten_glVertexAttribDivisor:_emscripten_glVertexAttribDivisor,emscripten_glVertexAttribDivisorANGLE:_emscripten_glVertexAttribDivisorANGLE,emscripten_glVertexAttribDivisorARB:_emscripten_glVertexAttribDivisorARB,emscripten_glVertexAttribDivisorEXT:_emscripten_glVertexAttribDivisorEXT,emscripten_glVertexAttribDivisorNV:_emscripten_glVertexAttribDivisorNV,emscripten_glVertexAttribI4i:_emscripten_glVertexAttribI4i,emscripten_glVertexAttribI4iv:_emscripten_glVertexAttribI4iv,emscripten_glVertexAttribI4ui:_emscripten_glVertexAttribI4ui,emscripten_glVertexAttribI4uiv:_emscripten_glVertexAttribI4uiv,emscripten_glVertexAttribIPointer:_emscripten_glVertexAttribIPointer,emscripten_glVertexAttribPointer:_emscripten_glVertexAttribPointer,emscripten_glVertexPointer:_emscripten_glVertexPointer,emscripten_glViewport:_emscripten_glViewport,emscripten_glWaitSync:_emscripten_glWaitSync,emscripten_has_asyncify:_emscripten_has_asyncify,emscripten_request_fullscreen_strategy:_emscripten_request_fullscreen_strategy,emscripten_request_pointerlock:_emscripten_request_pointerlock,emscripten_resize_heap:_emscripten_resize_heap,emscripten_sample_gamepad_data:_emscripten_sample_gamepad_data,emscripten_set_beforeunload_callback_on_thread:_emscripten_set_beforeunload_callback_on_thread,emscripten_set_blur_callback_on_thread:_emscripten_set_blur_callback_on_thread,emscripten_set_canvas_element_size:_emscripten_set_canvas_element_size,emscripten_set_element_css_size:_emscripten_set_element_css_size,emscripten_set_focus_callback_on_thread:_emscripten_set_focus_callback_on_thread,emscripten_set_fullscreenchange_callback_on_thread:_emscripten_set_fullscreenchange_callback_on_thread,emscripten_set_gamepadconnected_callback_on_thread:_emscripten_set_gamepadconnected_callback_on_thread,emscripten_set_gamepaddisconnected_callback_on_thread:_emscripten_set_gamepaddisconnected_callback_on_thread,emscripten_set_keydown_callback_on_thread:_emscripten_set_keydown_callback_on_thread,emscripten_set_keypress_callback_on_thread:_emscripten_set_keypress_callback_on_thread,emscripten_set_keyup_callback_on_thread:_emscripten_set_keyup_callback_on_thread,emscripten_set_main_loop:_emscripten_set_main_loop,emscripten_set_mousedown_callback_on_thread:_emscripten_set_mousedown_callback_on_thread,emscripten_set_mouseenter_callback_on_thread:_emscripten_set_mouseenter_callback_on_thread,emscripten_set_mouseleave_callback_on_thread:_emscripten_set_mouseleave_callback_on_thread,emscripten_set_mousemove_callback_on_thread:_emscripten_set_mousemove_callback_on_thread,emscripten_set_mouseup_callback_on_thread:_emscripten_set_mouseup_callback_on_thread,emscripten_set_pointerlockchange_callback_on_thread:_emscripten_set_pointerlockchange_callback_on_thread,emscripten_set_resize_callback_on_thread:_emscripten_set_resize_callback_on_thread,emscripten_set_touchcancel_callback_on_thread:_emscripten_set_touchcancel_callback_on_thread,emscripten_set_touchend_callback_on_thread:_emscripten_set_touchend_callback_on_thread,emscripten_set_touchmove_callback_on_thread:_emscripten_set_touchmove_callback_on_thread,emscripten_set_touchstart_callback_on_thread:_emscripten_set_touchstart_callback_on_thread,emscripten_set_visibilitychange_callback_on_thread:_emscripten_set_visibilitychange_callback_on_thread,emscripten_set_wheel_callback_on_thread:_emscripten_set_wheel_callback_on_thread,emscripten_set_window_title:_emscripten_set_window_title,emscripten_sleep:_emscripten_sleep,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,glAlphaFunc:_glAlphaFunc,glBindBuffer:_glBindBuffer,glBindTexture:_glBindTexture,glBlendFunc:_glBlendFunc,glBufferData:_glBufferData,glClear:_glClear,glClearColor:_glClearColor,glColor4f:_glColor4f,glColorMask:_glColorMask,glColorPointer:_glColorPointer,glCullFace:_glCullFace,glDeleteBuffers:_glDeleteBuffers,glDeleteTextures:_glDeleteTextures,glDepthFunc:_glDepthFunc,glDepthMask:_glDepthMask,glDepthRangef:_glDepthRangef,glDisable:_glDisable,glDisableClientState:_glDisableClientState,glDrawArrays:_glDrawArrays,glEnable:_glEnable,glEnableClientState:_glEnableClientState,glFogf:_glFogf,glFogfv:_glFogfv,glFogx:_glFogx,glGenBuffers:_glGenBuffers,glGenTextures:_glGenTextures,glGetFloatv:_glGetFloatv,glHint:_glHint,glLineWidth:_glLineWidth,glLoadIdentity:_glLoadIdentity,glMatrixMode:_glMatrixMode,glMultMatrixf:_glMultMatrixf,glNormal3f:_glNormal3f,glOrthof:_glOrthof,glPolygonOffset:_glPolygonOffset,glPopMatrix:_glPopMatrix,glPushMatrix:_glPushMatrix,glRotatef:_glRotatef,glScalef:_glScalef,glScissor:_glScissor,glShadeModel:_glShadeModel,glTexCoordPointer:_glTexCoordPointer,glTexImage2D:_glTexImage2D,glTexParameteri:_glTexParameteri,glTexSubImage2D:_glTexSubImage2D,glTranslatef:_glTranslatef,glVertexPointer:_glVertexPointer,glViewport:_glViewport,invoke_iii,invoke_vii,invoke_viiii,mcGetWorldResult:_mcGetWorldResult,mcGetWorldStatus:_mcGetWorldStatus,mcShowCreateWorldDialog:_mcShowCreateWorldDialog,mcSyncSaves:_mcSyncSaves};function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}var calledRun;function callMain(args=[]){assert(runDependencies==0,'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])');assert(typeof onPreRuns==="undefined"||onPreRuns.length==0,"cannot call main when preRun functions remain to be called");var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;for(var arg of args){HEAPU32[argv_ptr>>2]=stringToUTF8OnStack(arg);argv_ptr+=4}HEAPU32[argv_ptr>>2]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function stackCheckInit(){_emscripten_stack_init();writeStackCookie()}function run(args=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}stackCheckInit();preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){assert(!calledRun);calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();Module["onRuntimeInitialized"]?.();consumedModuleProp("onRuntimeInitialized");var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}checkStackCookie()}function checkUnflushedContent(){var oldOut=out;var oldErr=err;var has=false;out=err=x=>{has=true};try{_fflush(0);for(var name of["stdout","stderr"]){var info=FS.analyzePath("/dev/"+name);if(!info)return;var stream=info.object;var rdev=stream.rdev;var tty=TTY.ttys[rdev];if(tty?.output?.length){has=true}}}catch(e){}out=oldOut;err=oldErr;if(has){warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the Emscripten FAQ), or make sure to emit a newline when you printf etc.")}}var wasmExports;createWasm();run(); diff --git a/index.wasm b/index.wasm index 6e61d3078d6aa81b854ae84f76b75bb7b51907a8..092c07b10a5f5bb45d602912187460c4a599e5df 100644 GIT binary patch delta 421257 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∓He!v$1@5`a$O`r(@HEhnxqTF(v-&e-wtqo=wke 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

xEB#1t4;$E2|o*1qNy2~B{ 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%0DG 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%0Dpkf! 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 SB*9}|=0>a8Z1{WI$NxV8XvWL{ delta 419538 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