var UnityLoader = UnityLoader || { compatibilityCheck: function (gameInstance, onsuccess, onerror) { if (!UnityLoader.SystemInfo.hasWebGL) { gameInstance.popup("Your browser does not support WebGL", [{text: "OK", callback: onerror}]); } else if (UnityLoader.SystemInfo.mobile) { gameInstance.popup("Please note that Unity WebGL is not currently supported on mobiles. Press OK if you wish to continue anyway.", [{text: "OK", callback: onsuccess}]); } else if (["Firefox", "Chrome", "Safari"].indexOf(UnityLoader.SystemInfo.browser) == -1) { gameInstance.popup("Please note that your browser is not currently supported for this Unity WebGL content. Press OK if you wish to continue anyway.", [{text: "OK", callback: onsuccess}]); } else { onsuccess(); } }, Blobs: {}, loadCode: function (code, onload, info) { var functionId = [].slice.call(UnityLoader.Cryptography.md5(code)).map(function(x) { return ("0" + x.toString(16)).substr(-2); }).join(""); var script = document.createElement("script"); var blobUrl = URL.createObjectURL(new Blob(["UnityLoader[\"" + functionId + "\"]=", code], { type: "text/javascript" })); UnityLoader.Blobs[blobUrl] = info; script.src = blobUrl; script.onload = function () { URL.revokeObjectURL(blobUrl); onload(functionId); } document.body.appendChild(script); }, allocateHeapJob: function (Module, job) { var TOTAL_STACK = Module["TOTAL_STACK"] || 5 * 1024 * 1024; var TOTAL_MEMORY = Module["TOTAL_MEMORY"] || (Module["buffer"] ? Module["buffer"].byteLength : 256 * 1024 * 1024); var WASM_PAGE_SIZE = 64 * 1024, ASM_MEMORY_GRANULARITY = 16 * 1024 * 1024; var totalMemory = WASM_PAGE_SIZE; while (totalMemory < TOTAL_MEMORY || totalMemory < 2 * TOTAL_STACK) totalMemory += totalMemory < ASM_MEMORY_GRANULARITY ? totalMemory : ASM_MEMORY_GRANULARITY; if (totalMemory != TOTAL_MEMORY) Module.printErr("increasing TOTAL_MEMORY to " + totalMemory + " to be compliant with the asm.js spec (and given that TOTAL_STACK=" + TOTAL_STACK + ")"); TOTAL_MEMORY = totalMemory; if (job.parameters.useWasm) { Module["wasmMemory"] = new WebAssembly.Memory({ initial: TOTAL_MEMORY / WASM_PAGE_SIZE, maximum: TOTAL_MEMORY / WASM_PAGE_SIZE }); Module["buffer"] = Module["wasmMemory"].buffer; } else if (!Module["buffer"]) { Module["buffer"] = new ArrayBuffer(TOTAL_MEMORY); } else if (Module["buffer"].byteLength != TOTAL_MEMORY) { Module.printErr("provided buffer should be " + TOTAL_MEMORY + " bytes, but it is " + Module["buffer"].byteLength + ", reallocating the buffer"); Module["buffer"] = new ArrayBuffer(TOTAL_MEMORY); } Module["TOTAL_MEMORY"] = Module["buffer"].byteLength; job.complete(); }, setupIndexedDBJob: function (Module, job) { function setupIndexedDB(idb) { if (setupIndexedDB.called) return; setupIndexedDB.called = true; Module.indexedDB = idb; job.complete(); } try { var idb = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; var testRequest = idb.open("/idbfs-test"); testRequest.onerror = function(e) { e.preventDefault(); setupIndexedDB(); } testRequest.onsuccess = function() { testRequest.result.close(); setupIndexedDB(idb); } setTimeout(setupIndexedDB, 1000); } catch (e) { setupIndexedDB(); } }, processWasmCodeJob: function (Module, job) { Module.wasmBinary = UnityLoader.Job.result(Module, "downloadWasmCode"); job.complete(); }, processWasmFrameworkJob: function (Module, job) { UnityLoader.loadCode(UnityLoader.Job.result(Module, "downloadWasmFramework"), function (id) { UnityLoader[id](Module); job.complete(); }, {Module: Module, url: Module["wasmFrameworkUrl"]}); }, processAsmCodeJob: function (Module, job) { var asm = UnityLoader.Job.result(Module, "downloadAsmCode"); UnityLoader.loadCode(!Math.fround ? UnityLoader.Utils.optimizeMathFround(asm) : asm, function (id) { Module.asm = UnityLoader[id]; job.complete(); }, {Module: Module, url: Module["asmCodeUrl"]}); }, processAsmFrameworkJob: function (Module, job) { UnityLoader.loadCode(UnityLoader.Job.result(Module, "downloadAsmFramework"), function (id) { UnityLoader[id](Module); job.complete(); }, {Module: Module, url: Module["asmFrameworkUrl"]}); }, processAsmMemoryJob: function (Module, job) { Module["memoryInitializerRequest"].status = 200; Module["memoryInitializerRequest"].response = UnityLoader.Job.result(Module, "downloadAsmMemory"); if (Module["memoryInitializerRequest"].callback) Module["memoryInitializerRequest"].callback(); job.complete(); }, processDataJob: function (Module, job) { var data = UnityLoader.Job.result(Module, "downloadData"); var view = new DataView(data.buffer, data.byteOffset, data.byteLength); var pos = 0; var prefix = "UnityWebData1.0\0"; if (!String.fromCharCode.apply(null, data.subarray(pos, pos + prefix.length)) == prefix) throw "unknown data format"; pos += prefix.length; var headerSize = view.getUint32(pos, true); pos += 4; while (pos < headerSize) { var offset = view.getUint32(pos, true); pos += 4; var size = view.getUint32(pos, true); pos += 4; var pathLength = view.getUint32(pos, true); pos += 4; var path = String.fromCharCode.apply(null, data.subarray(pos, pos + pathLength)); pos += pathLength; for (var folder = 0, folderNext = path.indexOf("/", folder) + 1 ; folderNext > 0; folder = folderNext, folderNext = path.indexOf("/", folder) + 1) Module["FS_createPath"](path.substring(0, folder), path.substring(folder, folderNext - 1), true, true); Module["FS_createDataFile"](path, null, data.subarray(offset, offset + size), true, true, true); } Module["removeRunDependency"]("processDataJob"); job.complete(); }, downloadJob: function (Module, job) { var xhr = new XMLHttpRequest(); xhr.open("GET", job.parameters.url); xhr.responseType = "arraybuffer"; xhr.onload = function () { UnityLoader.Compression.decompress(new Uint8Array(xhr.response), function (decompressed) { job.complete(decompressed) }) }; if (job.parameters.onprogress) xhr.addEventListener("progress", job.parameters.onprogress); if (job.parameters.onload) xhr.addEventListener("load", job.parameters.onload); xhr.send(); }, scheduleBuildDownloadJob: function (Module, id, url) { UnityLoader.Progress.update(Module, id); UnityLoader.Job.schedule(Module, id, [], UnityLoader.downloadJob, { url: Module.resolveBuildUrl(url), onprogress: function(e) { UnityLoader.Progress.update(Module, id, e); }, onload: function(e) { UnityLoader.Progress.update(Module, id, e); }, }); }, loadModule: function (Module) { Module.useWasm = Module["wasmCodeUrl"] && UnityLoader.SystemInfo.hasWasm; if (Module.useWasm) { UnityLoader.scheduleBuildDownloadJob(Module, "downloadWasmCode", Module["wasmCodeUrl"]); UnityLoader.Job.schedule(Module, "processWasmCode", ["downloadWasmCode"], UnityLoader.processWasmCodeJob); UnityLoader.scheduleBuildDownloadJob(Module, "downloadWasmFramework", Module["wasmFrameworkUrl"]); UnityLoader.Job.schedule(Module, "processWasmFramework", ["downloadWasmFramework", "processWasmCode", "setupIndexedDB"], UnityLoader.processWasmFrameworkJob); } else if (Module["asmCodeUrl"]) { UnityLoader.scheduleBuildDownloadJob(Module, "downloadAsmCode", Module["asmCodeUrl"]); UnityLoader.Job.schedule(Module, "processAsmCode", ["downloadAsmCode"], UnityLoader.processAsmCodeJob); UnityLoader.scheduleBuildDownloadJob(Module, "downloadAsmMemory", Module["asmMemoryUrl"]); UnityLoader.Job.schedule(Module, "processAsmMemory", ["downloadAsmMemory"], UnityLoader.processAsmMemoryJob); Module["memoryInitializerRequest"] = { addEventListener: function (type, callback) { Module["memoryInitializerRequest"].callback = callback; } } if (Module.asmLibraryUrl) Module.dynamicLibraries = [Module.asmLibraryUrl].map(Module.resolveBuildUrl); UnityLoader.scheduleBuildDownloadJob(Module, "downloadAsmFramework", Module["asmFrameworkUrl"]); UnityLoader.Job.schedule(Module, "processAsmFramework", ["downloadAsmFramework", "processAsmCode", "setupIndexedDB"], UnityLoader.processAsmFrameworkJob); } else { throw "WebAssembly support is not detected in this browser."; } UnityLoader.scheduleBuildDownloadJob(Module, "downloadData", Module["dataUrl"]); UnityLoader.Job.schedule(Module, "setupIndexedDB", [], UnityLoader.setupIndexedDBJob); Module["preRun"].push(function () { Module["addRunDependency"]("processDataJob"); UnityLoader.Job.schedule(Module, "processData", ["downloadData"], UnityLoader.processDataJob); }); }, instantiate: function (container, url, parameters) { function instantiate(container, gameInstance) { if (typeof container == "string" && !(container = document.getElementById(container))) return false; container.innerHTML = ""; container.style.border = container.style.margin = container.style.padding = 0; if (getComputedStyle(container).getPropertyValue("position") == "static") container.style.position = "relative"; container.style.width = gameInstance.width || container.style.width; container.style.height = gameInstance.height || container.style.height; gameInstance.container = container; var Module = gameInstance.Module; Module.canvas = document.createElement("canvas"); Module.canvas.style.width = "100%"; Module.canvas.style.height = "100%"; Module.canvas.addEventListener("contextmenu", function (e) { e.preventDefault() }), Module.canvas.id = "#canvas"; container.appendChild(Module.canvas); gameInstance.compatibilityCheck(gameInstance, function () { var xhr = new XMLHttpRequest(); xhr.open("GET", gameInstance.url, true); xhr.responseType = "text"; xhr.onload = function () { var parameters = JSON.parse(xhr.responseText); for (var parameter in parameters) { if (typeof Module[parameter] == "undefined") Module[parameter] = parameters[parameter]; } container.style.background = Module.backgroundUrl ? "center/cover url('" + Module.resolveBuildUrl(Module.backgroundUrl) + "')" : Module.backgroundColor ? " " + Module.backgroundColor : ""; UnityLoader.loadModule(Module); } xhr.send(); }, function () { console.log("Instantiation of the '" + url + "' terminated due to the failed compatibility check."); }); return true; } var gameInstance = { url: url, onProgress: UnityLoader.Progress.handler, compatibilityCheck: UnityLoader.compatibilityCheck, Module: { preRun: [], postRun: [], print: function (message) { console.log(message); }, printErr: function (message) { console.error(message); }, Jobs: {}, buildDownloadProgress: {}, resolveBuildUrl: function (buildUrl) { return buildUrl.match(/(http|https|ftp|file):\/\//) ? buildUrl : url.substring(0, url.lastIndexOf("/") + 1) + buildUrl; }, }, SetFullscreen: function() { if (gameInstance.Module.SetFullscreen) return gameInstance.Module.SetFullscreen.apply(gameInstance.Module, arguments); }, SendMessage: function() { if (gameInstance.Module.SendMessage) return gameInstance.Module.SendMessage.apply(gameInstance.Module, arguments); }, }; gameInstance.Module.gameInstance = gameInstance; gameInstance.popup = function (message, callbacks) { return UnityLoader.Error.popup(gameInstance, message, callbacks); }; for (var parameter in parameters) { if (parameter == "Module") { for (var moduleParameter in parameters[parameter]) gameInstance.Module[moduleParameter] = parameters[parameter][moduleParameter]; } else { gameInstance[parameter] = parameters[parameter]; } } if (!instantiate(container, gameInstance)) document.addEventListener("DOMContentLoaded", function () { instantiate(container, gameInstance) }); return gameInstance; }, // The Unity WebGL generated content depends on SystemInfo, therefore it should not be changed. If any modification is necessary, do it at your own risk. SystemInfo: (function() { var unknown = "-"; var nVer = navigator.appVersion; var nAgt = navigator.userAgent; var browser = navigator.appName; var version = "" + parseFloat(navigator.appVersion); var majorVersion = parseInt(navigator.appVersion, 10); var nameOffset, verOffset, ix; if ((verOffset = nAgt.indexOf("Opera")) != -1) { browser = "Opera"; version = nAgt.substring(verOffset + 6); if ((verOffset = nAgt.indexOf("Version")) != -1) { version = nAgt.substring(verOffset + 8); } } else if ((verOffset = nAgt.indexOf("MSIE")) != -1) { browser = "Microsoft Internet Explorer"; version = nAgt.substring(verOffset + 5); } else if ((verOffset = nAgt.indexOf("Chrome")) != -1) { browser = "Chrome"; version = nAgt.substring(verOffset + 7); } else if ((verOffset = nAgt.indexOf("Safari")) != -1) { browser = "Safari"; version = nAgt.substring(verOffset + 7); if ((verOffset = nAgt.indexOf("Version")) != -1) { version = nAgt.substring(verOffset + 8); } } else if ((verOffset = nAgt.indexOf("Firefox")) != -1) { browser = "Firefox"; version = nAgt.substring(verOffset + 8); } else if (nAgt.indexOf("Trident/") != -1) { browser = "Microsoft Internet Explorer"; version = nAgt.substring(nAgt.indexOf("rv:") + 3); } else if ((nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/"))) { browser = nAgt.substring(nameOffset, verOffset); version = nAgt.substring(verOffset + 1); if (browser.toLowerCase() == browser.toUpperCase()) { browser = navigator.appName; } } if ((ix = version.indexOf(";")) != -1) version = version.substring(0, ix); if ((ix = version.indexOf(" ")) != -1) version = version.substring(0, ix); if ((ix = version.indexOf(")")) != -1) version = version.substring(0, ix); majorVersion = parseInt("" + version, 10); if (isNaN(majorVersion)) { version = "" + parseFloat(navigator.appVersion); majorVersion = parseInt(navigator.appVersion, 10); } var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer); var os = unknown; var clientStrings = [ {s: "Windows 3.11", r: /Win16/}, {s: "Windows 95", r: /(Windows 95|Win95|Windows_95)/}, {s: "Windows ME", r: /(Win 9x 4.90|Windows ME)/}, {s: "Windows 98", r: /(Windows 98|Win98)/}, {s: "Windows CE", r: /Windows CE/}, {s: "Windows 2000", r: /(Windows NT 5.0|Windows 2000)/}, {s: "Windows XP", r: /(Windows NT 5.1|Windows XP)/}, {s: "Windows Server 2003", r: /Windows NT 5.2/}, {s: "Windows Vista", r: /Windows NT 6.0/}, {s: "Windows 7", r: /(Windows 7|Windows NT 6.1)/}, {s: "Windows 8.1", r: /(Windows 8.1|Windows NT 6.3)/}, {s: "Windows 8", r: /(Windows 8|Windows NT 6.2)/}, {s: "Windows 10", r: /(Windows 10|Windows NT 10.0)/}, {s: "Windows NT 4.0", r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/}, {s: "Windows ME", r: /Windows ME/}, {s: "Android", r: /Android/}, {s: "Open BSD", r: /OpenBSD/}, {s: "Sun OS", r: /SunOS/}, {s: "Linux", r: /(Linux|X11)/}, {s: "iOS", r: /(iPhone|iPad|iPod)/}, {s: "Mac OS X", r: /Mac OS X/}, {s: "Mac OS", r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/}, {s: "QNX", r: /QNX/}, {s: "UNIX", r: /UNIX/}, {s: "BeOS", r: /BeOS/}, {s: "OS/2", r: /OS\/2/}, {s: "Search Bot", r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/} ]; for (var id in clientStrings) { var cs = clientStrings[id]; if (cs.r.test(nAgt)) { os = cs.s; break; } } var osVersion = unknown; if (/Windows/.test(os)) { osVersion = /Windows (.*)/.exec(os)[1]; os = "Windows"; } switch (os) { case "Mac OS X": osVersion = /Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1]; break; case "Android": osVersion = /Android ([\.\_\d]+)/.exec(nAgt)[1]; break; case "iOS": osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer); osVersion = osVersion[1] + "." + osVersion[2] + "." + (osVersion[3] | 0); break; } return { width: screen.width ? screen.width : 0, height: screen.height ? screen.height : 0, browser: browser, browserVersion: version, mobile: mobile, os: os, osVersion: osVersion, language: window.navigator.userLanguage || window.navigator.language, hasWebGL: (function() { if (!window.WebGLRenderingContext) { return 0; } var canvas = document.createElement("canvas"); var gl = canvas.getContext("webgl2"); if (!gl) { var gl = canvas.getContext("experimental-webgl2"); if (!gl) { var gl = canvas.getContext("webgl"); if (!gl) { gl = canvas.getContext("experimental-webgl"); if (!gl) { return 0; } } return 1; } return 2; } return 2; })(), hasCursorLock: (function() { var e = document.createElement("canvas"); if (e["requestPointerLock"] || e["mozRequestPointerLock"] || e["webkitRequestPointerLock"] || e["msRequestPointerLock"]) return 1; else return 0; })(), hasFullscreen: (function() { var e = document.createElement("canvas"); if (e["requestFullScreen"] || e["mozRequestFullScreen"] || e["msRequestFullscreen"] || e["webkitRequestFullScreen"]) { if (browser.indexOf("Safari") == -1 || version >= 10.1) return 1; } return 0; })(), hasWasm: typeof WebAssembly == "object" && typeof WebAssembly.validate == "function" && typeof WebAssembly.compile == "function", }; })(), Error: { // stacktrace example: // // [Chrome] // Error // at Array.eWg (blob:http%3A//localhost%3A8080/7dd54af3-48c5-47e1-893f-5f1ef09ab62b:10:238896) // at Object.P7h [as dynCall_iiii] (blob:http%3A//localhost%3A8080/7dd54af3-48c5-47e1-893f-5f1ef09ab62b:28:33689) // at invoke_iiii (blob:http%3A//localhost%3A8080/972f149f-a28e-4ee9-a1c7-45e8c4b0998b:1:334638) // at DJd (blob:http%3A//localhost%3A8080/7dd54af3-48c5-47e1-893f-5f1ef09ab62b:15:260807) // at Object.dynCall (blob:http%3A//localhost%3A8080/972f149f-a28e-4ee9-a1c7-45e8c4b0998b:1:7492) // at browserIterationFunc (blob:http%3A//localhost%3A8080/972f149f-a28e-4ee9-a1c7-45e8c4b0998b:1:207518) // at Object.runIter (blob:http%3A//localhost%3A8080/972f149f-a28e-4ee9-a1c7-45e8c4b0998b:1:189915) // // [Chrome WebAssembly] // at ([24622]+70) // at ([24000]+73) // // [Firefox] // eWg@blob:http://localhost:8080/0e677969-e11c-e24b-bb23-4f3afdbd5a3a:10:1 // P7h@blob:http://localhost:8080/0e677969-e11c-e24b-bb23-4f3afdbd5a3a:28:1 // invoke_iiii@blob:http://localhost:8080/67513e21-4cf2-de4e-a571-c6ee67cc2a72:1:334616 // DJd@blob:http://localhost:8080/0e677969-e11c-e24b-bb23-4f3afdbd5a3a:15:1 // Runtime.dynCall@blob:http://localhost:8080/67513e21-4cf2-de4e-a571-c6ee67cc2a72:1:7469 // _emscripten_set_main_loop/browserIterationFunc@blob:http://localhost:8080/67513e21-4cf2-de4e-a571-c6ee67cc2a72:1:207510 // Browser.mainLoop.runIter@blob:http://localhost:8080/67513e21-4cf2-de4e-a571-c6ee67cc2a72:1:189915 // // [Firefox WebAssembly] // wasm-function[24622]@blob:null/2e0a79af-37a7-ac43-9534-4ac66e23fea4:8059611:1 // wasm-function[24000]@blob:null/2e0a79af-37a7-ac43-9534-4ac66e23fea4:7932153:1 // // [Safari] // eWg@blob:http://localhost:8080/6efe7f5a-b930-45c3-9175-296366f9d9f4:10:238896 // P7h@blob:http://localhost:8080/6efe7f5a-b930-45c3-9175-296366f9d9f4:28:33689 // invoke_iiii@blob:http://localhost:8080/597cffca-fc52-4586-9da7-f9c8e591738b:1:334638 // DJd@blob:http://localhost:8080/6efe7f5a-b930-45c3-9175-296366f9d9f4:15:260809 // dynCall@blob:http://localhost:8080/597cffca-fc52-4586-9da7-f9c8e591738b:1:7496 // browserIterationFunc@blob:http://localhost:8080/597cffca-fc52-4586-9da7-f9c8e591738b:1:207525 // runIter@blob:http://localhost:8080/597cffca-fc52-4586-9da7-f9c8e591738b:1:189919 init: (function () { Error.stackTraceLimit = 50; window.addEventListener("error", function (e) { var Module = UnityLoader.Error.getModule(e); if (!Module) return UnityLoader.Error.handler(e); var debugSymbolsUrl = Module.useWasm ? Module.wasmSymbolsUrl : Module.asmSymbolsUrl; if (!debugSymbolsUrl) return UnityLoader.Error.handler(e, Module); var xhr = new XMLHttpRequest(); xhr.open("GET", Module.resolveBuildUrl(debugSymbolsUrl)); xhr.responseType = "arraybuffer"; xhr.onload = function () { UnityLoader.loadCode(UnityLoader.Compression.decompress(new Uint8Array(xhr.response)), function (id) { Module.demangleSymbol = UnityLoader[id](); UnityLoader.Error.handler(e, Module); }); }; xhr.send(); }); return true; })(), stackTraceFormat: navigator.userAgent.indexOf("Chrome") != -1 ? "(\\s+at\\s+)(([\\w\\d_\\.]*?)([\\w\\d_$]+)(/[\\w\\d_\\./]+|))(\\s+\\[.*\\]|)\\s*\\((blob:.*)\\)" : "(\\s*)(([\\w\\d_\\.]*?)([\\w\\d_$]+)(/[\\w\\d_\\./]+|))(\\s+\\[.*\\]|)\\s*@(blob:.*)", stackTraceFormatWasm: navigator.userAgent.indexOf("Chrome") != -1 ? "((\\s+at\\s*)\\s\\(\\[(\\d+)\\]\\+\\d+\\))()" : "((\\s*)wasm-function\\[(\\d+)\\])@(blob:.*)", blobParseRegExp: new RegExp("^(blob:.*)(:\\d+:\\d+)$"), getModule: function (e) { var traceMatch = e.message.match(new RegExp(this.stackTraceFormat, "g")); for (var trace in traceMatch) { var traceParse = traceMatch[trace].match(new RegExp("^" + this.stackTraceFormat + "$")); var blobParse = traceParse[7].match(this.blobParseRegExp); if (blobParse && UnityLoader.Blobs[blobParse[1]] && UnityLoader.Blobs[blobParse[1]].Module) return UnityLoader.Blobs[blobParse[1]].Module; } }, demangle: function (e, Module) { var message = e.message; if (!Module) return message; message = message.replace(new RegExp(this.stackTraceFormat, "g"), function (trace) { var errParse = trace.match(new RegExp("^" + this.stackTraceFormat + "$")); var blobParse = errParse[7].match(this.blobParseRegExp); var functionName = Module.demangleSymbol ? Module.demangleSymbol(errParse[4]) : errParse[4]; var url = blobParse && UnityLoader.Blobs[blobParse[1]] && UnityLoader.Blobs[blobParse[1]].url ? UnityLoader.Blobs[blobParse[1]].url : "blob"; return errParse[1] + functionName + (errParse[2] != functionName ? " ["+ errParse[2] + "]" : "") + " (" + (blobParse ? url.substr(url.lastIndexOf("/") + 1) + blobParse[2] : errParse[7]) + ")"; }.bind(this)); if (Module.useWasm) { message = message.replace(new RegExp(this.stackTraceFormatWasm, "g"), function (trace) { var errParse = trace.match(new RegExp("^" + this.stackTraceFormatWasm + "$")); var functionName = Module.demangleSymbol ? Module.demangleSymbol(errParse[3]) : errParse[3]; var blobParse = errParse[4].match(this.blobParseRegExp); var url = blobParse && UnityLoader.Blobs[blobParse[1]] && UnityLoader.Blobs[blobParse[1]].url ? UnityLoader.Blobs[blobParse[1]].url : "blob"; return (functionName == errParse[3] ? errParse[1] : errParse[2] + functionName + " [wasm:"+ errParse[3] + "]") + (errParse[4] ? " (" + (blobParse ? url.substr(url.lastIndexOf("/") + 1) + blobParse[2] : errParse[4]) + ")" : ""); }.bind(this)); } return message; }, handler: function (e, Module) { var message = Module ? this.demangle(e, Module) : e.message; if (Module && Module.errorhandler && Module.errorhandler(message, e.filename, e.lineno)) return; console.log("Invoking error handler due to\n" + message); if (typeof dump == "function") dump("Invoking error handler due to\n" + message); // Firefox has a bug where it's IndexedDB implementation will throw UnknownErrors, which are harmless, and should not be shown. if (message.indexOf("UnknownError") != -1) return; // Ignore error when application terminated with return code 0 if (message.indexOf("Program terminated with exit(0)") != -1) return; if (this.didShowErrorMessage) return; var message = "An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was:\n" + message; if (message.indexOf("DISABLE_EXCEPTION_CATCHING") != -1) { message = "An exception has occurred, but exception handling has been disabled in this build. If you are the developer of this content, enable exceptions in your project WebGL player settings to be able to catch the exception or see the stack trace."; } else if (message.indexOf("Cannot enlarge memory arrays") != -1) { message = "Out of memory. If you are the developer of this content, try allocating more memory to your WebGL build in the WebGL player settings."; } else if (message.indexOf("Invalid array buffer length") != -1 || message.indexOf("Invalid typed array length") != -1 || message.indexOf("out of memory") != -1) { message = "The browser could not allocate enough memory for the WebGL content. If you are the developer of this content, try allocating less memory to your WebGL build in the WebGL player settings."; } alert(message); this.didShowErrorMessage = true; }, popup: function (gameInstance, message, callbacks) { callbacks = callbacks || [{text: "OK"}]; var popup = document.createElement("div"); popup.style.cssText = "position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); text-align: center; border: 1px solid black; padding: 5px; background: #E8E8E8"; var messageElement = document.createElement("span"); messageElement.textContent = message; popup.appendChild(messageElement); popup.appendChild(document.createElement("br")); for (var i = 0; i < callbacks.length; i++) { var button = document.createElement("button"); if (callbacks[i].text) button.textContent = callbacks[i].text; if (callbacks[i].callback) button.onclick = callbacks[i].callback; button.style.margin = "5px"; button.addEventListener("click", function () { gameInstance.container.removeChild(popup); }) popup.appendChild(button); } gameInstance.container.appendChild(popup); }, }, Job: { schedule: function (Module, id, dependencies, callback, parameters) { parameters = parameters || {}; var job = Module.Jobs[id]; if (!job) job = Module.Jobs[id] = {dependencies: {}, dependants: {}}; if (job.callback) throw "[UnityLoader.Job.schedule] job '" + id + "' has been already scheduled"; if (typeof callback != "function") throw "[UnityLoader.Job.schedule] job '" + id + "' has invalid callback"; if (typeof parameters != "object") throw "[UnityLoader.Job.schedule] job '" + id + "' has invalid parameters"; job.callback = function (x,y) { job.starttime = performance.now(); callback(x,y) }; job.parameters = parameters; job.complete = function (result) { job.endtime = performance.now(); job.result = {value: result}; for (var dependant in job.dependants) { var dependantJob = Module.Jobs[dependant]; dependantJob.dependencies[id] = job.dependants[dependant] = false; var pending = typeof dependantJob.callback != "function"; for (var dependency in dependantJob.dependencies) pending = pending || dependantJob.dependencies[dependency]; if (!pending) { if (dependantJob.executed) throw "[UnityLoader.Job.schedule] job '" + id + "' has already been executed"; dependantJob.executed = true; setTimeout(dependantJob.callback.bind(null, Module, dependantJob), 0); } } } var pending = false; dependencies.forEach(function (dependency) { var dependencyJob = Module.Jobs[dependency]; if (!dependencyJob) dependencyJob = Module.Jobs[dependency] = {dependencies: {}, dependants: {}}; if (job.dependencies[dependency] = dependencyJob.dependants[id] = !dependencyJob.result) pending = true; }); if (!pending) { job.executed = true; setTimeout(job.callback.bind(null, Module, job), 0); } }, result: function (Module, id) { var job = Module.Jobs[id]; if (!job) throw "[UnityLoader.Job.result] job '" + id + "' does not exist"; if (typeof job.result != "object") throw "[UnityLoader.Job.result] job '" + id + "' has invalid result"; return job.result.value; }, }, Utils: { assert: function (condition, text) { if (!condition) abort("Assertion failed: " + text); }, optimizeMathFround: function (code, embeddedAsm) { console.log("optimizing out Math.fround calls"); var State = { LOOKING_FOR_MODULE: 0, SCANNING_MODULE_VARIABLES: 1, SCANNING_MODULE_FUNCTIONS: 2, }; var stateSwitchMarker = [ "EMSCRIPTEN_START_ASM", "EMSCRIPTEN_START_FUNCS", "EMSCRIPTEN_END_FUNCS", ]; var froundPrefix = "var"; var froundMarker = "global.Math.fround;"; var position = 0; var state = embeddedAsm ? State.LOOKING_FOR_MODULE : State.SCANNING_MODULE_VARIABLES; var froundLast = 0; var froundLength = 0; for(; state <= State.SCANNING_MODULE_FUNCTIONS && position < code.length; position++) { if (code[position] == 0x2F && code[position + 1] == 0x2F && code[position + 2] == 0x20 && String.fromCharCode.apply(null, code.subarray(position + 3, position + 3 + stateSwitchMarker[state].length)) === stateSwitchMarker[state]) { // if code at position starts with "// " + stateSwitchMarker[state] state++; } else if (state == State.SCANNING_MODULE_VARIABLES && !froundLength && code[position] == 0x3D && String.fromCharCode.apply(null, code.subarray(position + 1, position + 1 + froundMarker.length)) === froundMarker) { // if we are at the module variable section and Math_fround name has not yet been found and code at position starts with "=" + froundMarker froundLast = position - 1; while(code[froundLast - froundLength] != 0x20) froundLength++; // scan back until the first space character (it is always present as at least it is a part of the previously found "// ") if (!froundLength || String.fromCharCode.apply(null, code.subarray(froundLast - froundLength - froundPrefix.length, froundLast - froundLength)) !== froundPrefix) froundLast = froundLength = 0; } else if (froundLength && code[position] == 0x28) { // if Math_fround name has been found and code at position starts with "(" var nameLength = 0; while (nameLength < froundLength && code[position - 1 - nameLength] == code[froundLast - nameLength]) nameLength++; if (nameLength == froundLength) { var c = code[position - 1 - nameLength]; if (c < 0x24 || (0x24 < c && c < 0x30) || (0x39 < c && c < 0x41) || (0x5A < c && c < 0x5F) || (0x5F < c && c < 0x61) || 0x7A < c) { // if the matched Math_fround name is not a suffix of another identifier, i.e. it's preceding character does not match [$0-9A-Z_a-z] for(;nameLength; nameLength--) code[position - nameLength] = 0x20; // fill the Math_fround name with spaces (replacement works faster than shifting back the rest of the code) } } } } return code; }, }, Cryptography: { crc32: function (code) { var module = UnityLoader.Cryptography.crc32.module; if (!module) { var buffer = new ArrayBuffer(0x1000000); var asm = (function (global, env, buffer) { "use asm" var HEAPU8 = new global.Uint8Array(buffer); var HEAPU32 = new global.Uint32Array(buffer); function process(data, length) { data = data | 0; length = length | 0; var crc = 0; for (crc = HEAPU32[0x400 >> 2] | 0; length; data = (data + 1) | 0, length = (length - 1) | 0) crc = HEAPU32[(((crc & 0xFF) ^ HEAPU8[data]) << 2) >> 2] ^ (crc >>> 8) ^ 0xFF000000; HEAPU32[0x400 >> 2] = crc; } return {process: process}; })({Uint8Array: Uint8Array, Uint32Array: Uint32Array}, null, buffer); module = UnityLoader.Cryptography.crc32.module = { buffer: buffer, HEAPU8: new Uint8Array(buffer), HEAPU32: new Uint32Array(buffer), process: asm.process, crc32: 0x400, data: 0x404, }; for (var i = 0; i < 0x100; i++) { var a = i ^ 0xFF; for (var j = 0; j < 8; j++) a = (a >>> 1) ^ ((a & 1) ? 0xEDB88320 : 0); module.HEAPU32[i] = a; } } module.HEAPU32[module.crc32 >> 2] = 0; for (var offset = 0; offset < code.length;) { var length = Math.min(module.HEAPU8.length - module.data, code.length - offset); module.HEAPU8.set(code.subarray(offset, offset + length), module.data); crc = module.process(module.data, length); offset += length; } var crc32 = module.HEAPU32[module.crc32 >> 2]; return new Uint8Array([crc32 >> 24, crc32 >> 16, crc32 >> 8, crc32]); }, md5: function (code) { var module = UnityLoader.Cryptography.md5.module; if (!module) { var buffer = new ArrayBuffer(0x1000000); var asm = (function (global, env, buffer) { "use asm" var HEAPU32 = new global.Uint32Array(buffer); function process(data, blockCount) { data = data | 0; blockCount = blockCount | 0; var h0 = 0, h1 = 0, h2 = 0, h3 = 0, d0 = 0, d1 = 0, d2 = 0, d3 = 0, d4 = 0, i = 0, t = 0, s = 0; h0 = HEAPU32[0x80] | 0, h1 = HEAPU32[0x81] | 0, h2 = HEAPU32[0x82] | 0, h3 = HEAPU32[0x83] | 0; for (; blockCount; data = (data + 64) | 0, blockCount = (blockCount - 1) | 0) { d0 = h0; d1 = h1; d2 = h2; d3 = h3; for (i = 0; (i | 0) < 512; i = (i + 8) | 0) { s = (HEAPU32[i >> 2] | 0); h0 = (h0 + (HEAPU32[(i + 4) >> 2] | 0) + (HEAPU32[(data + (s >>> 14)) >> 2] | 0) + ( (i | 0) < 128 ? h3 ^ (h1 & (h2 ^ h3)) : (i | 0) < 256 ? h2 ^ (h3 & (h1 ^ h2)) : (i | 0) < 384 ? h1 ^ h2 ^ h3: (h2 ^ (h1 | ~h3)) )) | 0; t = (((h0 << (s & 31)) | (h0 >>> (32 - (s & 31)))) + h1) | 0; h0 = h3; h3 = h2; h2 = h1; h1 = t; } h0 = (h0 + d0) | 0; h1 = (h1 + d1) | 0; h2 = (h2 + d2) | 0; h3 = (h3 + d3) | 0; } HEAPU32[0x80] = h0; HEAPU32[0x81] = h1; HEAPU32[0x82] = h2; HEAPU32[0x83] = h3; } return {process: process}; })({Uint32Array:Uint32Array}, null, buffer); module = UnityLoader.Cryptography.md5.module = { buffer: buffer, HEAPU8: new Uint8Array(buffer), HEAPU32: new Uint32Array(buffer), process: asm.process, md5: 0x200, data: 0x240, }; module.HEAPU32.set(new Uint32Array([ 0x00000007, 0xD76AA478, 0x0001000C, 0xE8C7B756, 0x00020011, 0x242070DB, 0x00030016, 0xC1BDCEEE, 0x00040007, 0xF57C0FAF, 0x0005000C, 0x4787C62A, 0x00060011, 0xA8304613, 0x00070016, 0xFD469501, 0x00080007, 0x698098D8, 0x0009000C, 0x8B44F7AF, 0x000A0011, 0xFFFF5BB1, 0x000B0016, 0x895CD7BE, 0x000C0007, 0x6B901122, 0x000D000C, 0xFD987193, 0x000E0011, 0xA679438E, 0x000F0016, 0x49B40821, 0x00010005, 0xF61E2562, 0x00060009, 0xC040B340, 0x000B000E, 0x265E5A51, 0x00000014, 0xE9B6C7AA, 0x00050005, 0xD62F105D, 0x000A0009, 0x02441453, 0x000F000E, 0xD8A1E681, 0x00040014, 0xE7D3FBC8, 0x00090005, 0x21E1CDE6, 0x000E0009, 0xC33707D6, 0x0003000E, 0xF4D50D87, 0x00080014, 0x455A14ED, 0x000D0005, 0xA9E3E905, 0x00020009, 0xFCEFA3F8, 0x0007000E, 0x676F02D9, 0x000C0014, 0x8D2A4C8A, 0x00050004, 0xFFFA3942, 0x0008000B, 0x8771F681, 0x000B0010, 0x6D9D6122, 0x000E0017, 0xFDE5380C, 0x00010004, 0xA4BEEA44, 0x0004000B, 0x4BDECFA9, 0x00070010, 0xF6BB4B60, 0x000A0017, 0xBEBFBC70, 0x000D0004, 0x289B7EC6, 0x0000000B, 0xEAA127FA, 0x00030010, 0xD4EF3085, 0x00060017, 0x04881D05, 0x00090004, 0xD9D4D039, 0x000C000B, 0xE6DB99E5, 0x000F0010, 0x1FA27CF8, 0x00020017, 0xC4AC5665, 0x00000006, 0xF4292244, 0x0007000A, 0x432AFF97, 0x000E000F, 0xAB9423A7, 0x00050015, 0xFC93A039, 0x000C0006, 0x655B59C3, 0x0003000A, 0x8F0CCC92, 0x000A000F, 0xFFEFF47D, 0x00010015, 0x85845DD1, 0x00080006, 0x6FA87E4F, 0x000F000A, 0xFE2CE6E0, 0x0006000F, 0xA3014314, 0x000D0015, 0x4E0811A1, 0x00040006, 0xF7537E82, 0x000B000A, 0xBD3AF235, 0x0002000F, 0x2AD7D2BB, 0x00090015, 0xEB86D391, ])); } module.HEAPU32.set(new Uint32Array([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476]), module.md5 >> 2); for (var offset = 0; offset < code.length;) { var length = Math.min(module.HEAPU8.length - module.data, code.length - offset) & ~63; module.HEAPU8.set(code.subarray(offset, offset + length), module.data); offset += length; module.process(module.data, length >> 6); if (code.length - offset < 64) { length = code.length - offset; module.HEAPU8.set(code.subarray(code.length - length, code.length), module.data); offset += length; module.HEAPU8[module.data + length++] = 0x80; if (length > 56) { for (var i = length; i < 64; i++) module.HEAPU8[module.data + i] = 0; module.process(module.data, 1); length = 0; } for (var i = length; i < 64; i++) module.HEAPU8[module.data + i] = 0; for (var value = code.length, add = 0, i = 56; i < 64; i++, add = (value & 0xE0) >> 5, value /= 0x100) module.HEAPU8[module.data + i] = ((value & 0x1F) << 3) + add; module.process(module.data, 1); } } return new Uint8Array(module.HEAPU8.subarray(module.md5, module.md5 + 16)); }, sha1: function (code) { var module = UnityLoader.Cryptography.sha1.module; if (!module) { var buffer = new ArrayBuffer(0x1000000); var asm = (function (global, env, buffer) { "use asm" var HEAPU32 = new global.Uint32Array(buffer); function process(data, blockCount) { data = data | 0; blockCount = blockCount | 0; var h0 = 0, h1 = 0, h2 = 0, h3 = 0, h4 = 0, d0 = 0, d1 = 0, d2 = 0, d3 = 0, d4 = 0, t = 0, i = 0; h0 = HEAPU32[80] | 0, h1 = HEAPU32[81] | 0, h2 = HEAPU32[82] | 0, h3 = HEAPU32[83] | 0, h4 = HEAPU32[84] | 0; for (; blockCount; data = (data + 64) | 0, blockCount = (blockCount - 1) | 0) { d0 = h0; d1 = h1; d2 = h2; d3 = h3; d4 = h4; for (i = 0; (i | 0) < 320; i = (i + 4) | 0, h4 = h3, h3 = h2, h2 = (h1 << 30) | (h1 >>> 2), h1 = h0, h0 = t) { if ((i | 0) < 64) { t = (HEAPU32[(data + i) >> 2] | 0); t = ((t << 24) & 0xFF000000) | ((t << 8) & 0xFF0000) | ((t >>> 8) & 0xFF00) | ((t >>> 24) & 0xFF); } else { t = HEAPU32[(i - 12) >> 2] ^ HEAPU32[(i - 32) >> 2] ^ HEAPU32[(i - 56) >> 2] ^ HEAPU32[(i - 64) >> 2]; t = (t << 1) | (t >>> 31); } HEAPU32[i >> 2] = t; t = (t + (((h0 << 5) | (h0 >>> 27)) + h4) + ( (i | 0) < 80 ? ((((h1 & h2) | (~h1 & h3)) | 0) + 0x5A827999) | 0 : (i | 0) < 160 ? ((h1 ^ h2 ^ h3) + 0x6ED9EBA1) | 0 : (i | 0) < 240 ? (((h1 & h2) | (h1 & h3) | (h2 & h3)) + 0x8F1BBCDC) | 0 : ((h1 ^ h2 ^ h3) + 0xCA62C1D6) | 0 )) | 0; } h0 = (h0 + d0) | 0; h1 = (h1 + d1) | 0; h2 = (h2 + d2) | 0; h3 = (h3 + d3) | 0; h4 = (h4 + d4) | 0; } HEAPU32[80] = h0; HEAPU32[81] = h1; HEAPU32[82] = h2; HEAPU32[83] = h3; HEAPU32[84] = h4; } return {process: process}; })({Uint32Array:Uint32Array}, null, buffer); module = UnityLoader.Cryptography.sha1.module = { buffer: buffer, HEAPU8: new Uint8Array(buffer), HEAPU32: new Uint32Array(buffer), process: asm.process, sha1: 0x140, data: 0x180, }; } module.HEAPU32.set(new Uint32Array([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]), module.sha1 >> 2); for (var offset = 0; offset < code.length;) { var length = Math.min(module.HEAPU8.length - module.data, code.length - offset) & ~63; module.HEAPU8.set(code.subarray(offset, offset + length), module.data); offset += length; module.process(module.data, length >> 6); if (code.length - offset < 64) { length = code.length - offset; module.HEAPU8.set(code.subarray(code.length - length, code.length), module.data); offset += length; module.HEAPU8[module.data + length++] = 0x80; if (length > 56) { for (var i = length; i < 64; i++) module.HEAPU8[module.data + i] = 0; module.process(module.data, 1); length = 0; } for (var i = length; i < 64; i++) module.HEAPU8[module.data + i] = 0; for (var value = code.length, add = 0, i = 63; i >=56; i--, add = (value & 0xE0) >> 5, value /= 0x100) module.HEAPU8[module.data + i] = ((value & 0x1F) << 3) + add; module.process(module.data, 1); } } var sha1 = new Uint8Array(20); for (var i = 0; i < sha1.length; i++) sha1[i] = module.HEAPU8[module.sha1 + (i & ~3) + 3 - (i & 3)]; return sha1; }, }, Progress: { Styles: { Dark: { progressLogoUrl: "data:image/png;base64,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", progressEmptyUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAASCAYAAABmbl0zAAAACXBIWXMAAAsSAAALEgHS3X78AAAATUlEQVRo3u3aIQ4AIAwEQUr4/5cPiyMVBDOj0M2mCKgkGdAwjYCudZzLOLiITYPrCdEgGkSDaEA0iAbRIBpEA6JBNHx1vnL7V4NNwxsbCNMGI3YImu0AAAAASUVORK5CYII=", progressFullUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAASCAYAAABmbl0zAAAACXBIWXMAAAsSAAALEgHS3X78AAAAO0lEQVRo3u3SQREAAAjDMMC/56EB3omEXjtJCg5GAkyDaTANpsE0YBpMg2kwDaYB02AaTINpMA2Yhr8FO18EIBpZMeQAAAAASUVORK5CYII=", }, Light: { progressLogoUrl: "data:image/png;base64,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", progressEmptyUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAASCAYAAABmbl0zAAAACXBIWXMAAAsSAAALEgHS3X78AAAAUUlEQVRo3u3aMQ4AEAxAUcRJzGb3v1mt3cQglvcmc/NTA3XMFQUuNCPgVk/nahwchE2D6wnRIBpEg2hANIgG0SAaRAOiQTR8lV+5/avBpuGNDcz6A6oq1CgNAAAAAElFTkSuQmCC", progressFullUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI0AAAASCAYAAABmbl0zAAAACXBIWXMAAAsSAAALEgHS3X78AAAAQElEQVRo3u3SMREAMAgAsVIpnTvj3xlogDmR8PfxftaBgSsBpsE0mAbTYBowDabBNJgG04BpMA2mwTSYBkzDXgP/hgGnr4PpeAAAAABJRU5ErkJggg==", }, }, handler: function (gameInstance, progress) { if (!gameInstance.Module) return; var style = UnityLoader.Progress.Styles[gameInstance.Module.splashScreenStyle]; var progressLogoUrl = gameInstance.Module.progressLogoUrl ? gameInstance.Module.resolveBuildUrl(gameInstance.Module.progressLogoUrl) : style.progressLogoUrl; var progressEmptyUrl = gameInstance.Module.progressEmptyUrl ? gameInstance.Module.resolveBuildUrl(gameInstance.Module.progressEmptyUrl) : style.progressEmptyUrl; var progressFullUrl = gameInstance.Module.progressFullUrl ? gameInstance.Module.resolveBuildUrl(gameInstance.Module.progressFullUrl) : style.progressFullUrl; var commonStyle = "position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%);"; if (!gameInstance.logo) { gameInstance.logo = document.createElement("div"); gameInstance.logo.style.cssText = commonStyle + "background: url('" + progressLogoUrl + "') no-repeat center / contain; width: 154px; height: 130px;"; gameInstance.container.appendChild(gameInstance.logo); } if (!gameInstance.progress) { gameInstance.progress = document.createElement("div"); gameInstance.progress.style.cssText = commonStyle + " height: 18px; width: 141px; margin-top: 90px;"; gameInstance.progress.empty = document.createElement("div"); gameInstance.progress.empty.style.cssText = "background: url('" + progressEmptyUrl + "') no-repeat right / cover; float: right; width: 100%; height: 100%; display: inline-block;"; gameInstance.progress.appendChild(gameInstance.progress.empty); gameInstance.progress.full = document.createElement("div"); gameInstance.progress.full.style.cssText = "background: url('" + progressFullUrl + "') no-repeat left / cover; float: left; width: 0%; height: 100%; display: inline-block;"; gameInstance.progress.appendChild(gameInstance.progress.full); gameInstance.container.appendChild(gameInstance.progress); } gameInstance.progress.full.style.width = (100 * progress) + "%"; gameInstance.progress.empty.style.width = (100 * (1 - progress)) + "%"; if (progress == 1) gameInstance.logo.style.display = gameInstance.progress.style.display = "none"; }, update: function (Module, id, e) { var progress = Module.buildDownloadProgress[id]; if (!progress) progress = Module.buildDownloadProgress[id] = { started: false, finished: false, lengthComputable: false, total: 0, loaded: 0, }; if (typeof e == "object" && (e.type == "progress" || e.type == "load")) { if (!progress.started) { progress.started = true; progress.lengthComputable = e.lengthComputable; progress.total = e.total; } progress.loaded = e.loaded; if (e.type == "load") progress.finished = true; } var loaded = 0, total = 0, started = 0, computable = 0, unfinishedNonComputable = 0; for (var id in Module.buildDownloadProgress) { var progress = Module.buildDownloadProgress[id]; if (!progress.started) return 0; started++; if (progress.lengthComputable) { loaded += progress.loaded; total += progress.total; computable++; } else if (!progress.finished) { unfinishedNonComputable++; } } var totalProgress = started ? (started - unfinishedNonComputable - (total ? computable * (total - loaded) / total : 0)) / started : 0; Module.gameInstance.onProgress(Module.gameInstance, totalProgress); }, }, Compression: { identity: { require: function () { return {}; }, decompress: function (data) { return data; }, }, gzip: { require: function require(e){var t={"inflate.js":function(e,t,i){"use strict";function n(e){if(!(this instanceof n))return new n(e);this.options=o.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0===(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var i=s.inflateInit2(this.strm,t.windowBits);if(i!==f.Z_OK)throw new Error(d[i]);this.header=new u,s.inflateGetHeader(this.strm,this.header)}function a(e,t){var i=new n(t);if(i.push(e,!0),i.err)throw i.msg||d[i.err];return i.result}function r(e,t){return t=t||{},t.raw=!0,a(e,t)}var s=e("./zlib/inflate"),o=e("./utils/common"),l=e("./utils/strings"),f=e("./zlib/constants"),d=e("./zlib/messages"),h=e("./zlib/zstream"),u=e("./zlib/gzheader"),c=Object.prototype.toString;n.prototype.push=function(e,t){var i,n,a,r,d,h,u=this.strm,b=this.options.chunkSize,w=this.options.dictionary,m=!1;if(this.ended)return!1;n=t===~~t?t:t===!0?f.Z_FINISH:f.Z_NO_FLUSH,"string"==typeof e?u.input=l.binstring2buf(e):"[object ArrayBuffer]"===c.call(e)?u.input=new Uint8Array(e):u.input=e,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new o.Buf8(b),u.next_out=0,u.avail_out=b),i=s.inflate(u,f.Z_NO_FLUSH),i===f.Z_NEED_DICT&&w&&(h="string"==typeof w?l.string2buf(w):"[object ArrayBuffer]"===c.call(w)?new Uint8Array(w):w,i=s.inflateSetDictionary(this.strm,h)),i===f.Z_BUF_ERROR&&m===!0&&(i=f.Z_OK,m=!1),i!==f.Z_STREAM_END&&i!==f.Z_OK)return this.onEnd(i),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&i!==f.Z_STREAM_END&&(0!==u.avail_in||n!==f.Z_FINISH&&n!==f.Z_SYNC_FLUSH)||("string"===this.options.to?(a=l.utf8border(u.output,u.next_out),r=u.next_out-a,d=l.buf2string(u.output,a),u.next_out=r,u.avail_out=b-r,r&&o.arraySet(u.output,u.output,a,r,0),this.onData(d)):this.onData(o.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(m=!0)}while((u.avail_in>0||0===u.avail_out)&&i!==f.Z_STREAM_END);return i===f.Z_STREAM_END&&(n=f.Z_FINISH),n===f.Z_FINISH?(i=s.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===f.Z_OK):n!==f.Z_SYNC_FLUSH||(this.onEnd(f.Z_OK),u.avail_out=0,!0)},n.prototype.onData=function(e){this.chunks.push(e)},n.prototype.onEnd=function(e){e===f.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},i.Inflate=n,i.inflate=a,i.inflateRaw=r,i.ungzip=a},"utils/common.js":function(e,t,i){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;i.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(var n in i)i.hasOwnProperty(n)&&(e[n]=i[n])}}return e},i.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var a={arraySet:function(e,t,i,n,a){if(t.subarray&&e.subarray)return void e.set(t.subarray(i,i+n),a);for(var r=0;r=252?6:l>=248?5:l>=240?4:l>=224?3:l>=192?2:1;o[254]=o[254]=1,i.string2buf=function(e){var t,i,n,r,s,o=e.length,l=0;for(r=0;r>>6,t[s++]=128|63&i):i<65536?(t[s++]=224|i>>>12,t[s++]=128|i>>>6&63,t[s++]=128|63&i):(t[s++]=240|i>>>18,t[s++]=128|i>>>12&63,t[s++]=128|i>>>6&63,t[s++]=128|63&i);return t},i.buf2binstring=function(e){return n(e,e.length)},i.binstring2buf=function(e){for(var t=new a.Buf8(e.length),i=0,n=t.length;i4)f[a++]=65533,i+=s-1;else{for(r&=2===s?31:3===s?15:7;s>1&&i1?f[a++]=65533:r<65536?f[a++]=r:(r-=65536,f[a++]=55296|r>>10&1023,f[a++]=56320|1023&r)}return n(f,a)},i.utf8border=function(e,t){var i;for(t=t||e.length,t>e.length&&(t=e.length),i=t-1;i>=0&&128===(192&e[i]);)i--;return i<0?t:0===i?t:i+o[e[i]]>t?i:t}},"zlib/inflate.js":function(e,t,i){"use strict";function n(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function a(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new _.Buf16(320),this.work=new _.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function r(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=U,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new _.Buf32(we),t.distcode=t.distdyn=new _.Buf32(me),t.sane=1,t.back=-1,z):C}function s(e){var t;return e&&e.state?(t=e.state,t.wsize=0,t.whave=0,t.wnext=0,r(e)):C}function o(e,t){var i,n;return e&&e.state?(n=e.state,t<0?(i=0,t=-t):(i=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15)?C:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=i,n.wbits=t,s(e))):C}function l(e,t){var i,n;return e?(n=new a,e.state=n,n.window=null,i=o(e,t),i!==z&&(e.state=null),i):C}function f(e){return l(e,_e)}function d(e){if(ge){var t;for(m=new _.Buf32(512),k=new _.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(x(S,e.lens,0,288,m,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;x(B,e.lens,0,32,k,0,e.work,{bits:5}),ge=!1}e.lencode=m,e.lenbits=9,e.distcode=k,e.distbits=5}function h(e,t,i,n){var a,r=e.state;return null===r.window&&(r.wsize=1<=r.wsize?(_.arraySet(r.window,t,i-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(a=r.wsize-r.wnext,a>n&&(a=n),_.arraySet(r.window,t,i-n,a,r.wnext),n-=a,n?(_.arraySet(r.window,t,i-n,n,0),r.wnext=n,r.whave=r.wsize):(r.wnext+=a,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,i.check=v(i.check,Ze,2,0),u=0,c=0,i.mode=j;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&u)<<8)+(u>>8))%31){e.msg="incorrect header check",i.mode=ue;break}if((15&u)!==F){e.msg="unknown compression method",i.mode=ue;break}if(u>>>=4,c-=4,xe=(15&u)+8,0===i.wbits)i.wbits=xe;else if(xe>i.wbits){e.msg="invalid window size",i.mode=ue;break}i.dmax=1<>8&1),512&i.flags&&(Ze[0]=255&u,Ze[1]=u>>>8&255,i.check=v(i.check,Ze,2,0)),u=0,c=0,i.mode=D;case D:for(;c<32;){if(0===l)break e;l--,u+=a[s++]<>>8&255,Ze[2]=u>>>16&255,Ze[3]=u>>>24&255,i.check=v(i.check,Ze,4,0)),u=0,c=0,i.mode=L;case L:for(;c<16;){if(0===l)break e;l--,u+=a[s++]<>8),512&i.flags&&(Ze[0]=255&u,Ze[1]=u>>>8&255,i.check=v(i.check,Ze,2,0)),u=0,c=0,i.mode=H;case H:if(1024&i.flags){for(;c<16;){if(0===l)break e;l--,u+=a[s++]<>>8&255,i.check=v(i.check,Ze,2,0)),u=0,c=0}else i.head&&(i.head.extra=null);i.mode=K;case K:if(1024&i.flags&&(m=i.length,m>l&&(m=l),m&&(i.head&&(xe=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),_.arraySet(i.head.extra,a,s,m,xe)),512&i.flags&&(i.check=v(i.check,a,m,s)),l-=m,s+=m,i.length-=m),i.length))break e;i.length=0,i.mode=M;case M:if(2048&i.flags){if(0===l)break e;m=0;do xe=a[s+m++],i.head&&xe&&i.length<65536&&(i.head.name+=String.fromCharCode(xe));while(xe&&m>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=q;break;case G:for(;c<32;){if(0===l)break e;l--,u+=a[s++]<>>=7&c,c-=7&c,i.mode=fe;break}for(;c<3;){if(0===l)break e;l--,u+=a[s++]<>>=1,c-=1,3&u){case 0:i.mode=J;break;case 1:if(d(i),i.mode=ie,t===A){u>>>=2,c-=2;break e}break;case 2:i.mode=$;break;case 3:e.msg="invalid block type",i.mode=ue}u>>>=2,c-=2;break;case J:for(u>>>=7&c,c-=7&c;c<32;){if(0===l)break e;l--,u+=a[s++]<>>16^65535)){e.msg="invalid stored block lengths",i.mode=ue;break}if(i.length=65535&u,u=0,c=0,i.mode=Q,t===A)break e;case Q:i.mode=V;case V:if(m=i.length){if(m>l&&(m=l),m>f&&(m=f),0===m)break e;_.arraySet(r,a,s,m,o),l-=m,s+=m,f-=m,o+=m,i.length-=m;break}i.mode=q;break;case $:for(;c<14;){if(0===l)break e;l--,u+=a[s++]<>>=5,c-=5,i.ndist=(31&u)+1,u>>>=5,c-=5,i.ncode=(15&u)+4,u>>>=4,c-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=ue;break}i.have=0,i.mode=ee;case ee:for(;i.have>>=3,c-=3}for(;i.have<19;)i.lens[Ae[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,Se={bits:i.lenbits},ye=x(y,i.lens,0,19,i.lencode,0,i.work,Se),i.lenbits=Se.bits,ye){e.msg="invalid code lengths set",i.mode=ue;break}i.have=0,i.mode=te;case te:for(;i.have>>24,ke=Ee>>>16&255,_e=65535&Ee,!(me<=c);){if(0===l)break e;l--,u+=a[s++]<>>=me,c-=me,i.lens[i.have++]=_e;else{if(16===_e){for(Be=me+2;c>>=me,c-=me,0===i.have){e.msg="invalid bit length repeat",i.mode=ue;break}xe=i.lens[i.have-1],m=3+(3&u),u>>>=2,c-=2}else if(17===_e){for(Be=me+3;c>>=me,c-=me,xe=0,m=3+(7&u),u>>>=3,c-=3}else{for(Be=me+7;c>>=me,c-=me,xe=0,m=11+(127&u),u>>>=7,c-=7}if(i.have+m>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=ue;break}for(;m--;)i.lens[i.have++]=xe}}if(i.mode===ue)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=ue;break}if(i.lenbits=9,Se={bits:i.lenbits},ye=x(S,i.lens,0,i.nlen,i.lencode,0,i.work,Se),i.lenbits=Se.bits,ye){e.msg="invalid literal/lengths set",i.mode=ue;break}if(i.distbits=6,i.distcode=i.distdyn,Se={bits:i.distbits},ye=x(B,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,Se),i.distbits=Se.bits,ye){e.msg="invalid distances set",i.mode=ue;break}if(i.mode=ie,t===A)break e;case ie:i.mode=ne;case ne:if(l>=6&&f>=258){e.next_out=o,e.avail_out=f,e.next_in=s,e.avail_in=l,i.hold=u,i.bits=c,p(e,w),o=e.next_out,r=e.output,f=e.avail_out,s=e.next_in,a=e.input,l=e.avail_in,u=i.hold,c=i.bits,i.mode===q&&(i.back=-1);break}for(i.back=0;Ee=i.lencode[u&(1<>>24,ke=Ee>>>16&255,_e=65535&Ee,!(me<=c);){if(0===l)break e;l--,u+=a[s++]<>ge)],me=Ee>>>24,ke=Ee>>>16&255,_e=65535&Ee,!(ge+me<=c);){if(0===l)break e;l--,u+=a[s++]<>>=ge,c-=ge,i.back+=ge}if(u>>>=me,c-=me,i.back+=me,i.length=_e,0===ke){i.mode=le;break}if(32&ke){i.back=-1,i.mode=q;break}if(64&ke){e.msg="invalid literal/length code",i.mode=ue;break}i.extra=15&ke,i.mode=ae;case ae:if(i.extra){for(Be=i.extra;c>>=i.extra,c-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=re;case re:for(;Ee=i.distcode[u&(1<>>24,ke=Ee>>>16&255,_e=65535&Ee,!(me<=c);){if(0===l)break e;l--,u+=a[s++]<>ge)],me=Ee>>>24,ke=Ee>>>16&255,_e=65535&Ee,!(ge+me<=c);){if(0===l)break e;l--,u+=a[s++]<>>=ge,c-=ge,i.back+=ge}if(u>>>=me,c-=me,i.back+=me,64&ke){e.msg="invalid distance code",i.mode=ue;break}i.offset=_e,i.extra=15&ke,i.mode=se;case se:if(i.extra){for(Be=i.extra;c>>=i.extra,c-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=ue;break}i.mode=oe;case oe:if(0===f)break e;if(m=w-f,i.offset>m){if(m=i.offset-m,m>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=ue;break}m>i.wnext?(m-=i.wnext,k=i.wsize-m):k=i.wnext-m,m>i.length&&(m=i.length),we=i.window}else we=r,k=o-i.offset,m=i.length;m>f&&(m=f),f-=m,i.length-=m;do r[o++]=we[k++];while(--m);0===i.length&&(i.mode=ne);break;case le:if(0===f)break e;r[o++]=i.length,f--,i.mode=ne;break;case fe:if(i.wrap){for(;c<32;){if(0===l)break e;l--,u|=a[s++]<>>16&65535|0,s=0;0!==i;){s=i>2e3?2e3:i,i-=s;do a=a+t[n++]|0,r=r+a|0;while(--s);a%=65521,r%=65521}return a|r<<16|0}t.exports=n},"zlib/crc32.js":function(e,t,i){"use strict";function n(){for(var e,t=[],i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}function a(e,t,i,n){var a=r,s=n+i;e^=-1;for(var o=n;o>>8^a[255&(e^t[o])];return e^-1}var r=n();t.exports=a},"zlib/inffast.js":function(e,t,i){"use strict";var n=30,a=12;t.exports=function(e,t){var i,r,s,o,l,f,d,h,u,c,b,w,m,k,_,g,v,p,x,y,S,B,E,Z,A;i=e.state,r=e.next_in,Z=e.input,s=r+(e.avail_in-5),o=e.next_out,A=e.output,l=o-(t-e.avail_out),f=o+(e.avail_out-257),d=i.dmax,h=i.wsize,u=i.whave,c=i.wnext,b=i.window,w=i.hold,m=i.bits,k=i.lencode,_=i.distcode,g=(1<>>24,w>>>=x,m-=x,x=p>>>16&255,0===x)A[o++]=65535&p;else{if(!(16&x)){if(0===(64&x)){p=k[(65535&p)+(w&(1<>>=x,m-=x),m<15&&(w+=Z[r++]<>>24,w>>>=x,m-=x,x=p>>>16&255,!(16&x)){if(0===(64&x)){p=_[(65535&p)+(w&(1<d){e.msg="invalid distance too far back",i.mode=n;break e}if(w>>>=x,m-=x,x=o-l,S>x){if(x=S-x,x>u&&i.sane){e.msg="invalid distance too far back",i.mode=n;break e}if(B=0,E=b,0===c){if(B+=h-x,x2;)A[o++]=E[B++],A[o++]=E[B++],A[o++]=E[B++],y-=3;y&&(A[o++]=E[B++],y>1&&(A[o++]=E[B++]))}else{B=o-S;do A[o++]=A[B++],A[o++]=A[B++],A[o++]=A[B++],y-=3;while(y>2);y&&(A[o++]=A[B++],y>1&&(A[o++]=A[B++]))}break}}break}}while(r>3,r-=y,m-=y<<3,w&=(1<=1&&0===H[C];C--);if(O>C&&(O=C),0===C)return w[m++]=20971520,w[m++]=20971520,_.bits=1,0;for(N=1;N0&&(e===o||1!==C))return-1;for(K[1]=0,z=1;zr||e===f&&U>s)return 1;for(;;){B=z-T,k[R]S?(E=M[P+k[R]],Z=D[L+k[R]]):(E=96,Z=0),g=1<>T)+v]=B<<24|E<<16|Z|0;while(0!==v);for(g=1<>=1;if(0!==g?(j&=g-1,j+=g):j=0,R++,0===--H[z]){if(z===C)break;z=t[i+k[R]]}if(z>O&&(j&x)!==p){for(0===T&&(T=O),y+=N,I=z-T,F=1<r||e===f&&U>s)return 1;p=j&x,w[p]=O<<24|I<<16|y-m|0}}return 0!==j&&(w[y+j]=z-T<<24|64<<16|0),_.bits=O,0}}};for(var i in t)t[i].folder=i.substring(0,i.lastIndexOf("/")+1);var n=function(e){var i=[];return e=e.split("/").every(function(e){return".."==e?i.pop():"."==e||""==e||i.push(e)})?i.join("/"):null,e?t[e]||t[e+".js"]||t[e+"/index.js"]:null},a=function(e,t){return e?n(e.folder+"node_modules/"+t)||a(e.parent,t):null},r=function(e,t){var i=t.match(/^\//)?null:e?t.match(/^\.\.?\//)?n(e.folder+t):a(e,t):n(t);if(!i)throw"module not found: "+t;return i.exports||(i.parent=e,i(r.bind(null,i),i,i.exports={})),i.exports};return r(null,e)}, decompress: function (data) { if (!this.exports) this.exports = this.require("inflate.js"); try { return this.exports.inflate(data) } catch (e) {}; }, hasUnityMarker: function (data) { var commentOffset = 10, expectedComment = "UnityWeb Compressed Content (gzip)"; if (commentOffset > data.length || data[0] != 0x1F || data[1] != 0x8B) return false; var flags = data[3]; if (flags & 0x04) { if (commentOffset + 2 > data.length) return false; commentOffset += 2 + data[commentOffset] + (data[commentOffset + 1] << 8); if (commentOffset > data.length) return false; } if (flags & 0x08) { while (commentOffset < data.length && data[commentOffset]) commentOffset++; if (commentOffset + 1 > data.length) return false; commentOffset++; } return (flags & 0x10) && String.fromCharCode.apply(null, data.subarray(commentOffset, commentOffset + expectedComment.length + 1)) == expectedComment + "\0"; }, }, brotli: { require: function require(e){var n={"decompress.js":function(e,n,t){n.exports=e("./dec/decode").BrotliDecompressBuffer},"dec/bit_reader.js":function(e,n,t){function r(e){this.buf_=new Uint8Array(o),this.input_=e,this.reset()}const i=4096,o=8224,s=8191,a=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);r.READ_SIZE=i,r.IBUF_MASK=s,r.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var e=0;e<4;e++)this.val_|=this.buf_[this.pos_]<<8*e,++this.pos_;return this.bit_end_pos_>0},r.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var e=this.buf_ptr_,n=this.input_.read(this.buf_,e,i);if(n<0)throw new Error("Unexpected end of input");if(n=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&s]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},r.prototype.readBits=function(e){32-this.bit_pos_>>this.bit_pos_&a[e];return this.bit_pos_+=e,n},n.exports=r},"dec/context.js":function(e,n,t){t.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),t.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},"dec/decode.js":function(e,n,t){function r(e){var n;return 0===e.readBits(1)?16:(n=e.readBits(3),n>0?17+n:(n=e.readBits(3),n>0?8+n:17))}function i(e){if(e.readBits(1)){var n=e.readBits(3);return 0===n?1:e.readBits(n)+(1<1&&0===s)throw new Error("Invalid size byte");i.meta_block_length|=s<<8*r}}else for(r=0;r4&&0===a)throw new Error("Invalid size nibble");i.meta_block_length|=a<<4*r}return++i.meta_block_length,i.input_end||i.is_metadata||(i.is_uncompressed=e.readBits(1)),i}function a(e,n,t){var r;return t.fillBitWindow(),n+=t.val_>>>t.bit_pos_&K,r=e[n].bits-k,r>0&&(t.bit_pos_+=k,n+=e[n].value,n+=t.val_>>>t.bit_pos_&(1<0;){var u,p=0;if(r.readMoreInput(),r.fillBitWindow(),p+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=w[p].bits,u=255&w[p].value,u>u);else{var c,h,l=u-14,b=0;if(u===M&&(b=o),a!==b&&(s=0,a=b),c=s,s>0&&(s-=2,s<<=l),s+=r.readBits(l)+3,h=s-c,i+h>n)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var v=0;v0;++a){var v,m=L[a],y=0;r.fillBitWindow(),y+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=b[y].bits,v=b[y].value,c[m]=v,0!==v&&(h-=32>>v,++l)}if(1!==l&&0!==h)throw new Error("[ReadHuffmanCode] invalid num_codes or space");f(c,e,s,r)}if(o=q(n,t,k,s,e),0===o)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return o}function d(e,n,t){var r,i;return r=a(e,n,t),i=B.kBlockLengthPrefixCode[r].nbits,B.kBlockLengthPrefixCode[r].offset+t.readBits(i)}function u(e,n,t){var r;return e>>5]),this.htrees=new Uint32Array(n)}function l(e,n){var t,r,o,s={num_htrees:null,context_map:null},f=0;n.readMoreInput();var d=s.num_htrees=i(n)+1,u=s.context_map=new Uint8Array(e);if(d<=1)return s;for(t=n.readBits(1),t&&(f=n.readBits(4)+1),r=[],o=0;o=e)throw new Error("[DecodeContextMap] i >= context_map_size");u[o]=0,++o}else u[o]=p-f,++o}return n.readBits(1)&&c(u,e),s}function b(e,n,t,r,i,o,s){var f,w=2*t,d=t,u=a(n,t*X,s);f=0===u?i[w+(1&o[d])]:1===u?i[w+(o[d]-1&1)]+1:u-2,f>=e&&(f-=e),r[t]=f,i[w+(1&o[d])]=f,++o[d]}function v(e,n,t,r,i,o){var s,a=i+1,f=t&i,w=o.pos_&V.IBUF_MASK;if(n<8||o.bit_pos_+(n<<3)0;)o.readMoreInput(),r[f++]=o.readBits(8),f===a&&(e.write(r,a),f=0);else{if(o.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;o.bit_pos_<32;)r[f]=o.val_>>>o.bit_pos_,o.bit_pos_+=8,++f,--n;if(s=o.bit_end_pos_-o.bit_pos_>>3,w+s>V.IBUF_MASK){for(var d=V.IBUF_MASK+1-w,u=0;u=a){e.write(r,a),f-=a;for(var u=0;u=a;){if(s=a-f,o.input_.read(r,f,s)n.buffer.length){var We=new Uint8Array(E+te);We.set(n.buffer),n.buffer=We}if(q=ye.input_end,D=ye.is_uncompressed,ye.is_metadata)for(m(U);te>0;--te)U.readMoreInput(),U.readBits(8);else if(0!==te)if(D)U.bit_pos_=U.bit_pos_+7&-8,v(n,te,E,c,p,U),E+=te;else{for(t=0;t<3;++t)oe[t]=i(U)+1,oe[t]>=2&&(w(oe[t]+2,W,t*X,U),w(F,x,t*X,U),re[t]=d(x,t*X,U),ae[t]=1);for(U.readMoreInput(),j=U.readBits(2),Q=J+(U.readBits(4)<0;){var Ee,Ve,Oe,Ne,qe,Ye,Be,Re,He,Me,Ae;for(U.readMoreInput(),0===re[1]&&(b(oe[1],W,1,ie,se,ae,U),re[1]=d(x,X,U),ne=T[1].htrees[ie[1]]),--re[1],Ee=a(T[1].codes,ne,U),Ve=Ee>>6,Ve>=2?(Ve-=2,Be=-1):Be=0,Oe=B.kInsertRangeLut[Ve]+(Ee>>3&7),Ne=B.kCopyRangeLut[Ve]+(7&Ee),qe=B.kInsertLengthPrefixCode[Oe].offset+U.readBits(B.kInsertLengthPrefixCode[Oe].nbits),Ye=B.kCopyLengthPrefixCode[Ne].offset+U.readBits(B.kCopyLengthPrefixCode[Ne].nbits),G=c[E-1&p],L=c[E-2&p],Me=0;Me4?3:Ye-2),be=de[le+He],Be=a(T[2].codes,T[2].htrees[be],U),Be>=Q){var ge,Fe,Ze;Be-=Q,Fe=Be&C,Be>>=j,ge=(Be>>1)+1,Ze=(2+(1&Be)<M){if(!(Ye>=O.minDictionaryWordLength&&Ye<=O.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+E+" distance: "+Re+" len: "+Ye+" bytes left: "+te);var Ze=O.offsetsByLength[Ye],Pe=Re-M-1,ke=O.sizeBitsByLength[Ye],Ke=(1<>ke;if(Ze+=Xe*Ye,!(Ge=y){n.write(c,f);for(var Je=0;Je0&&(k[3&K]=Re,++K),Ye>te)throw new Error("Invalid backward reference. pos: "+E+" distance: "+Re+" len: "+Ye+" bytes left: "+te);for(Me=0;Me>=1;return(e&t-1)+t}function o(e,n,t,i,o){do i-=t,e[n+i]=new r(o.bits,o.value);while(i>0)}function s(e,n,t){for(var r=1<0;--U[u])d=new r(255&u,65535&W[p++]),o(e,n+c,h,m,d),c=i(c,u);for(b=y-1,l=-1,u=t+1,h=2;u<=a;++u,h<<=1)for(;U[u]>0;--U[u])(c&b)!==l&&(n+=m,v=s(U,u,t),m=1<>t),h,m,d),c=i(c,u);return y}},"dec/prefix.js":function(e,n,t){function r(e,n){this.offset=e,this.nbits=n}t.kBlockLengthPrefixCode=[new r(1,2),new r(5,2),new r(9,2),new r(13,2),new r(17,3),new r(25,3),new r(33,3),new r(41,3),new r(49,4),new r(65,4),new r(81,4),new r(97,4),new r(113,5),new r(145,5),new r(177,5),new r(209,5),new r(241,6),new r(305,6),new r(369,7),new r(497,8),new r(753,9),new r(1265,10),new r(2289,11),new r(4337,12),new r(8433,13),new r(16625,24)],t.kInsertLengthPrefixCode=[new r(0,0),new r(1,0),new r(2,0),new r(3,0),new r(4,0),new r(5,0),new r(6,1),new r(8,1),new r(10,2),new r(14,2),new r(18,3),new r(26,3),new r(34,4),new r(50,4),new r(66,5),new r(98,5),new r(130,6),new r(194,7),new r(322,8),new r(578,9),new r(1090,10),new r(2114,12),new r(6210,14),new r(22594,24)],t.kCopyLengthPrefixCode=[new r(2,0),new r(3,0),new r(4,0),new r(5,0),new r(6,0),new r(7,0),new r(8,0),new r(9,0),new r(10,1),new r(12,1),new r(14,2),new r(18,2),new r(22,3),new r(30,3),new r(38,4),new r(54,4),new r(70,5),new r(102,5),new r(134,6),new r(198,7),new r(326,8),new r(582,9),new r(1094,10),new r(2118,24)],t.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],t.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},"dec/streams.js":function(e,n,t){function r(e){this.buffer=e,this.pos=0}function i(e){this.buffer=e,this.pos=0}r.prototype.read=function(e,n,t){this.pos+t>this.buffer.length&&(t=this.buffer.length-this.pos);for(var r=0;rthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(e.subarray(0,n),this.pos),this.pos+=n,n},t.BrotliOutput=i},"dec/transform.js":function(e,n,t){function r(e,n,t){this.prefix=new Uint8Array(e.length),this.transform=n,this.suffix=new Uint8Array(t.length);for(var r=0;r=97&&e[n]<=122&&(e[n]^=32),1):e[n]<224?(e[n+1]^=32,2):(e[n+2]^=5,3)}var o=e("./dictionary");const s=0,a=1,f=2,w=3,d=4,u=5,p=6,c=7,h=8,l=9,b=10,v=11,m=12,y=13,W=14,x=15,U=16,E=17,V=18,O=20;var N=[new r("",s,""),new r("",s," "),new r(" ",s," "),new r("",m,""),new r("",b," "),new r("",s," the "),new r(" ",s,""),new r("s ",s," "),new r("",s," of "),new r("",b,""),new r("",s," and "),new r("",y,""),new r("",a,""),new r(", ",s," "),new r("",s,", "),new r(" ",b," "),new r("",s," in "),new r("",s," to "),new r("e ",s," "),new r("",s,'"'),new r("",s,"."),new r("",s,'">'),new r("",s,"\n"),new r("",w,""),new r("",s,"]"),new r("",s," for "),new r("",W,""),new r("",f,""),new r("",s," a "),new r("",s," that "),new r(" ",b,""),new r("",s,". "),new r(".",s,""),new r(" ",s,", "),new r("",x,""),new r("",s," with "),new r("",s,"'"),new r("",s," from "),new r("",s," by "),new r("",U,""),new r("",E,""),new r(" the ",s,""),new r("",d,""),new r("",s,". The "),new r("",v,""),new r("",s," on "),new r("",s," as "),new r("",s," is "),new r("",c,""),new r("",a,"ing "),new r("",s,"\n\t"),new r("",s,":"),new r(" ",s,". "),new r("",s,"ed "),new r("",O,""),new r("",V,""),new r("",p,""),new r("",s,"("),new r("",b,", "),new r("",h,""),new r("",s," at "),new r("",s,"ly "),new r(" the ",s," of "),new r("",u,""),new r("",l,""),new r(" ",b,", "),new r("",b,'"'),new r(".",s,"("),new r("",v," "),new r("",b,'">'),new r("",s,'="'),new r(" ",s,"."),new r(".com/",s,""),new r(" the ",s," of the "),new r("",b,"'"),new r("",s,". This "),new r("",s,","),new r(".",s," "),new r("",b,"("),new r("",b,"."),new r("",s," not "),new r(" ",s,'="'),new r("",s,"er "),new r(" ",v," "),new r("",s,"al "),new r(" ",v,""),new r("",s,"='"),new r("",v,'"'),new r("",b,". "),new r(" ",s,"("),new r("",s,"ful "),new r(" ",b,". "),new r("",s,"ive "),new r("",s,"less "),new r("",v,"'"),new r("",s,"est "),new r(" ",b,"."),new r("",v,'">'),new r(" ",s,"='"),new r("",b,","),new r("",s,"ize "),new r("",v,"."),new r("\xc2\xa0",s,""),new r(" ",s,","),new r("",b,'="'),new r("",v,'="'),new r("",s,"ous "),new r("",v,", "),new r("",b,"='"),new r(" ",b,","),new r(" ",v,'="'),new r(" ",v,", "),new r("",v,","),new r("",v,"("),new r("",v,". "),new r(" ",v,"."),new r("",v,"='"),new r(" ",v,". "),new r(" ",b,'="'),new r(" ",v,"='"),new r(" ",b,"='")];t.kTransforms=N,t.kNumTransforms=N.length,t.transformDictionaryWord=function(e,n,t,r,s){var a,f=N[s].prefix,w=N[s].suffix,d=N[s].transform,u=dr&&(u=r);for(var h=0;h0;){var y=i(e,a);a+=y,r-=y}for(var W=0;W0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[n-2]?2:"="===e[n-1]?1:0}function i(e){return 3*e.length/4-r(e)}function o(e){var n,t,i,o,s,a,f=e.length;s=r(e),a=new u(3*f/4-s),i=s>0?f-4:f;var w=0;for(n=0,t=0;n>16&255,a[w++]=o>>8&255,a[w++]=255&o;return 2===s?(o=d[e.charCodeAt(n)]<<2|d[e.charCodeAt(n+1)]>>4,a[w++]=255&o):1===s&&(o=d[e.charCodeAt(n)]<<10|d[e.charCodeAt(n+1)]<<4|d[e.charCodeAt(n+2)]>>2,a[w++]=o>>8&255,a[w++]=255&o),a}function s(e){return w[e>>18&63]+w[e>>12&63]+w[e>>6&63]+w[63&e]}function a(e,n,t){for(var r,i=[],o=n;od?d:f+s));return 1===r?(n=e[t-1],i+=w[n>>2],i+=w[n<<4&63],i+="=="):2===r&&(n=(e[t-2]<<8)+e[t-1],i+=w[n>>10],i+=w[n>>4&63],i+=w[n<<2&63],i+="="),o.push(i),o.join("")}t.byteLength=i,t.toByteArray=o,t.fromByteArray=f;for(var w=[],d=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,h=p.length;c> 3); commentOffset = (WBITS_length + 1 + 2 + 1 + 2 + (MSKIPBYTES << 3) + 7) >> 3; if (WBITS == 0x11 || commentOffset > data.length) return false; var expectedCommentPrefix = WBITS + (((3 << 1) + (MSKIPBYTES << 4) + ((expectedComment.length - 1) << 6)) << WBITS_length); for (var i = 0; i < commentOffset; i++, expectedCommentPrefix >>>= 8) { if (data[i] != (expectedCommentPrefix & 0xFF)) return false; } return String.fromCharCode.apply(null, data.subarray(commentOffset, commentOffset + expectedComment.length)) == expectedComment; }, }, decompress: function (compressed, callback) { var decompressor = this.gzip.hasUnityMarker(compressed) ? this.gzip : this.brotli.hasUnityMarker(compressed) ? this.brotli : this.identity; if (typeof callback != "function") return decompressor.decompress(compressed); if (!decompressor.worker) { var workerUrl = URL.createObjectURL(new Blob(["this.require = ", decompressor.require.toString(), "; this.decompress = ", decompressor.decompress.toString(), "; this.onmessage = ", function (e) { var data = { id: e.data.id, decompressed: this.decompress(e.data.compressed) }; postMessage(data, data.decompressed ? [data.decompressed.buffer] : []); }.toString(), "; postMessage({ ready: true });"], { type: "text/javascript" })); decompressor.worker = new Worker(workerUrl); decompressor.worker.onmessage = function (e) { if (e.data.ready) { URL.revokeObjectURL(workerUrl); return; } this.callbacks[e.data.id](e.data.decompressed); delete this.callbacks[e.data.id]; }; decompressor.worker.callbacks = {}; decompressor.worker.nextCallbackId = 0; } var id = decompressor.worker.nextCallbackId++; decompressor.worker.callbacks[id] = callback; decompressor.worker.postMessage({id: id, compressed: compressed}, [compressed.buffer]); }, }, };