{"version":3,"sources":["jsdelivr-header.js","/npm/tvmjs@0.23.0-dev1/lib/index.js"],"names":[],"mappings":"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","file":"/npm/tvmjs@0.23.0-dev1/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/tvmjs@0.23.0-dev1/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.tvmjs = {}));\n})(this, (function (exports) { 'use strict';\n\n  /******************************************************************************\n  Copyright (c) Microsoft Corporation.\n\n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n  AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n  ***************************************************************************** */\n\n  function __awaiter(thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n  }\n\n  typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n    var e = new Error(message);\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n  };\n\n  /*\r\n   * Licensed to the Apache Software Foundation (ASF) under one\r\n   * or more contributor license agreements.  See the NOTICE file\r\n   * distributed with this work for additional information\r\n   * regarding copyright ownership.  The ASF licenses this file\r\n   * to you under the Apache License, Version 2.0 (the\r\n   * \"License\"); you may not use this file except in compliance\r\n   * with the License.  You may obtain a copy of the License at\r\n   *\r\n   *   http://www.apache.org/licenses/LICENSE-2.0\r\n   *\r\n   * Unless required by applicable law or agreed to in writing,\r\n   * software distributed under the License is distributed on an\r\n   * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n   * KIND, either express or implied.  See the License for the\r\n   * specific language governing permissions and limitations\r\n   * under the License.\r\n   */\r\n  /**\r\n   * Check if value is a promise type\r\n   *\r\n   * @param value The input value\r\n   * @returns Whether value is promise\r\n   */\r\n  function isPromise(value) {\r\n      return value !== undefined && (typeof value == \"object\" || typeof value == \"function\") && typeof value.then == \"function\";\r\n  }\r\n  /**\r\n   * Convert string to Uint8array.\r\n   * @param str The string.\r\n   * @returns The corresponding Uint8Array.\r\n   */\r\n  function StringToUint8Array(str) {\r\n      const arr = new TextEncoder().encode(str);\r\n      const resArr = new Uint8Array(arr.length + 1);\r\n      for (let i = 0; i < arr.length; ++i) {\r\n          resArr[i] = arr[i];\r\n      }\r\n      resArr[arr.length] = 0;\r\n      return resArr;\r\n  }\r\n  /**\r\n   * Convert Uint8array to string.\r\n   * @param array The array.\r\n   * @returns The corresponding string.\r\n   */\r\n  function Uint8ArrayToString(arr) {\r\n      const ret = [];\r\n      for (const ch of arr) {\r\n          ret.push(String.fromCharCode(ch));\r\n      }\r\n      return ret.join(\"\");\r\n  }\r\n  /**\r\n   * Internal assert helper\r\n   * @param condition The condition to fail.\r\n   * @param msg The message.\r\n   */\r\n  function assert(condition, msg) {\r\n      if (!condition) {\r\n          throw new Error(\"AssertError:\" + (msg || \"\"));\r\n      }\r\n  }\r\n  /**\r\n   * Get the path to the wasm library in nodejs.\r\n   * @return The wasm path.\r\n   */\r\n  function wasmPath() {\r\n      return __dirname + \"/wasm\";\r\n  }\r\n  /**\r\n   * Linear congruential generator for random number generating that can be seeded.\r\n   *\r\n   * Follows the implementation of `include/tvm/support/random_engine.h`, which follows the\r\n   * sepcification in https://en.cppreference.com/w/cpp/numeric/random/linear_congruential_engine.\r\n   *\r\n   * Note `Number.MAX_SAFE_INTEGER = 2^53 - 1`, and our intermediates are strictly less than 2^48.\r\n   */\r\n  class LinearCongruentialGenerator {\r\n      /**\r\n       * Set modulus, multiplier, and increment. Initialize `rand_state` according to `Date.now()`.\r\n       */\r\n      constructor() {\r\n          this.modulus = 2147483647; // 2^32 - 1\r\n          this.multiplier = 48271; // between 2^15 and 2^16\r\n          this.increment = 0;\r\n          this.setSeed(Date.now());\r\n      }\r\n      /**\r\n       * Sets `rand_state` after normalized with `modulus` to ensure that it is within range.\r\n       * @param seed Any integer. Used to set `rand_state` after normalized with `modulus`.\r\n       *\r\n       * Postcondition: pass `checkRandState()`, i.e. rand_state > 0 and is an integer.\r\n       */\r\n      setSeed(seed) {\r\n          if (!Number.isInteger(seed)) {\r\n              throw new Error(\"Seed should be an integer.\");\r\n          }\r\n          this.rand_state = seed % this.modulus;\r\n          if (this.rand_state == 0) {\r\n              this.rand_state = 1;\r\n          }\r\n          this.checkRandState();\r\n      }\r\n      /**\r\n       * Generate the next integer in the range (0, this.modulus) non-inclusive, updating `rand_state`.\r\n       *\r\n       * Postcondition: pass `checkRandState()`, i.e. rand_state > 0 and is an integer.\r\n       */\r\n      nextInt() {\r\n          // `intermediate` is always < 2^48, hence less than `Number.MAX_SAFE_INTEGER` due to the\r\n          // invariants as commented in the constructor.\r\n          const intermediate = this.multiplier * this.rand_state + this.increment;\r\n          this.rand_state = intermediate % this.modulus;\r\n          this.checkRandState();\r\n          return this.rand_state;\r\n      }\r\n      /**\r\n       * Generates random float between (0, 1) non-inclusive, updating `rand_state`.\r\n       *\r\n       * Postcondition: pass `checkRandState()`, i.e. rand_state > 0 and is an integer.\r\n       */\r\n      randomFloat() {\r\n          return this.nextInt() / this.modulus;\r\n      }\r\n      checkRandState() {\r\n          if (this.rand_state <= 0) {\r\n              throw new Error(\"Random state is unexpectedly not strictly positive.\");\r\n          }\r\n          if (!Number.isInteger(this.rand_state)) {\r\n              throw new Error(\"Random state is unexpectedly not an integer.\");\r\n          }\r\n      }\r\n  }\n\n  /**\r\n   * Wasm Memory wrapper to perform JS side raw memory access.\r\n   */\r\n  class Memory {\r\n      constructor(memory) {\r\n          this.wasm32 = true;\r\n          this.memory = memory;\r\n          this.buffer = this.memory.buffer;\r\n          this.viewU8 = new Uint8Array(this.buffer);\r\n          this.viewU16 = new Uint16Array(this.buffer);\r\n          this.viewI32 = new Int32Array(this.buffer);\r\n          this.viewU32 = new Uint32Array(this.buffer);\r\n          this.viewF32 = new Float32Array(this.buffer);\r\n          this.viewF64 = new Float64Array(this.buffer);\r\n      }\r\n      loadU8(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          return this.viewU8[ptr >> 0];\r\n      }\r\n      loadU16(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          return this.viewU16[ptr >> 1];\r\n      }\r\n      loadU32(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          return this.viewU32[ptr >> 2];\r\n      }\r\n      loadI32(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          return this.viewI32[ptr >> 2];\r\n      }\r\n      loadI64(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          const base = ptr >> 2;\r\n          // assumes little endian, for now truncate high.\r\n          return this.viewI32[base];\r\n      }\r\n      loadF32(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          return this.viewF32[ptr >> 2];\r\n      }\r\n      loadF64(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          return this.viewF64[ptr >> 3];\r\n      }\r\n      loadPointer(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          if (this.wasm32) {\r\n              return this.loadU32(ptr);\r\n          }\r\n          else {\r\n              return this.loadI64(ptr);\r\n          }\r\n      }\r\n      loadUSize(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          if (this.wasm32) {\r\n              return this.loadU32(ptr);\r\n          }\r\n          else {\r\n              return this.loadI64(ptr);\r\n          }\r\n      }\r\n      sizeofPtr() {\r\n          return this.wasm32 ? 4 /* SizeOf.I32 */ : 8 /* SizeOf.I64 */;\r\n      }\r\n      /**\r\n       * Load raw bytes from ptr.\r\n       * @param ptr The head address\r\n       * @param numBytes The number\r\n       */\r\n      loadRawBytes(ptr, numBytes) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          const result = new Uint8Array(numBytes);\r\n          result.set(this.viewU8.slice(ptr, ptr + numBytes));\r\n          return result;\r\n      }\r\n      /**\r\n       * Load null-terminated C-string from ptr.\r\n       * @param ptr The head address\r\n       */\r\n      loadCString(ptr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          // NOTE: the views are still valid for read.\r\n          const ret = [];\r\n          let ch = 1;\r\n          while (ch != 0) {\r\n              ch = this.viewU8[ptr];\r\n              if (ch != 0) {\r\n                  ret.push(String.fromCharCode(ch));\r\n              }\r\n              ++ptr;\r\n          }\r\n          return ret.join(\"\");\r\n      }\r\n      /**\r\n       * Store raw bytes to the ptr.\r\n       * @param ptr The head address.\r\n       * @param bytes The bytes content.\r\n       */\r\n      storeRawBytes(ptr, bytes) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          this.viewU8.set(bytes, ptr);\r\n      }\r\n      // the following functions are related to TVM FFI\r\n      /**\r\n       * Load the object type index from the object handle.\r\n       * @param objectHandle The handle of the object.\r\n       * @returns The object type index.\r\n       */\r\n      loadObjectTypeIndex(objectHandle) {\r\n          // The object layout is [ref_counter (i64), type_index (i32), ...].\r\n          return this.loadI32(objectHandle + 8 /* SizeOf.I64 */);\r\n      }\r\n      /**\r\n       * Load the type key from the type info pointer.\r\n       * @param typeInfoPtr The pointer to the type info.\r\n       * @returns The type key.\r\n       */\r\n      loadTypeInfoTypeKey(typeInfoPtr) {\r\n          const typeKeyPtr = typeInfoPtr + 2 * 4 /* SizeOf.I32 */;\r\n          return this.loadByteArrayAsString(typeKeyPtr);\r\n      }\r\n      /**\r\n       * Load small string from value pointer.\r\n       * @param ffiAnyPtr The pointer to the value.\r\n       * @returns The small string.\r\n       */\r\n      loadSmallStr(ffiAnyPtr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          const sizePtr = ffiAnyPtr + 4 /* SizeOf.I32 */;\r\n          const length = this.loadU32(sizePtr);\r\n          const dataPtr = ffiAnyPtr + 4 /* SizeOf.I32 */ + 4 /* SizeOf.I32 */;\r\n          const ret = [];\r\n          for (let i = 0; i < length; i++) {\r\n              ret.push(String.fromCharCode(this.viewU8[dataPtr + i]));\r\n          }\r\n          return ret.join(\"\");\r\n      }\r\n      /**\r\n       * Load small bytes from value pointer.\r\n       * @param ffiAnyPtr\r\n       */\r\n      loadSmallBytes(ffiAnyPtr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          const sizePtr = ffiAnyPtr + 4 /* SizeOf.I32 */;\r\n          const length = this.loadU32(sizePtr);\r\n          const dataPtr = ffiAnyPtr + 4 /* SizeOf.I32 */ + 4 /* SizeOf.I32 */;\r\n          const result = new Uint8Array(length);\r\n          result.set(this.viewU8.slice(dataPtr, dataPtr + length));\r\n          return result;\r\n      }\r\n      /**\r\n       * Load bytearray as string from ptr.\r\n       * @param byteArrayPtr The head address of the bytearray.\r\n       */\r\n      loadByteArrayAsString(byteArrayPtr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          const ptr = this.loadPointer(byteArrayPtr);\r\n          const length = this.loadUSize(byteArrayPtr + this.sizeofPtr());\r\n          // NOTE: the views are still valid for read.\r\n          const ret = [];\r\n          for (let i = 0; i < length; i++) {\r\n              ret.push(String.fromCharCode(this.viewU8[ptr + i]));\r\n          }\r\n          return ret.join(\"\");\r\n      }\r\n      /**\r\n       * Load bytearray as bytes from ptr.\r\n       * @param byteArrayPtr The head address of the bytearray.\r\n       */\r\n      loadByteArrayAsBytes(byteArrayPtr) {\r\n          if (this.buffer != this.memory.buffer) {\r\n              this.updateViews();\r\n          }\r\n          const ptr = this.loadPointer(byteArrayPtr);\r\n          const length = this.loadUSize(byteArrayPtr + this.sizeofPtr());\r\n          const result = new Uint8Array(length);\r\n          result.set(this.viewU8.slice(ptr, ptr + length));\r\n          return result;\r\n      }\r\n      // private functions\r\n      /**\r\n       * Update memory view after the memory growth.\r\n       */\r\n      updateViews() {\r\n          this.buffer = this.memory.buffer;\r\n          this.viewU8 = new Uint8Array(this.buffer);\r\n          this.viewU16 = new Uint16Array(this.buffer);\r\n          this.viewI32 = new Int32Array(this.buffer);\r\n          this.viewU32 = new Uint32Array(this.buffer);\r\n          this.viewF32 = new Float32Array(this.buffer);\r\n          this.viewF64 = new Float64Array(this.buffer);\r\n      }\r\n  }\r\n  /**\r\n   * Auxiliary call stack for the FFI calls.\r\n   *\r\n   * Lifecyle of a call stack.\r\n   * - Calls into allocXX to allocate space, mixed with storeXXX to store data.\r\n   * - Calls into ptrFromOffset, no further allocation(as ptrFromOffset can change),\r\n   *   can still call into storeXX\r\n   * - Calls into commitToWasmMemory once.\r\n   * - reset.\r\n   */\r\n  class CachedCallStack {\r\n      constructor(memory, allocSpace, freeSpace) {\r\n          /** List of temporay arguments that can be disposed during reset. */\r\n          this.tempArgs = [];\r\n          this.stackTop = 0;\r\n          this.basePtr = 0;\r\n          this.addressToSetTargetValue = [];\r\n          const initCallStackSize = 128;\r\n          this.memory = memory;\r\n          this.cAllocSpace = allocSpace;\r\n          this.cFreeSpace = freeSpace;\r\n          this.buffer = new ArrayBuffer(initCallStackSize);\r\n          this.basePtr = this.cAllocSpace(initCallStackSize);\r\n          this.viewU8 = new Uint8Array(this.buffer);\r\n          this.viewI32 = new Int32Array(this.buffer);\r\n          this.viewU32 = new Uint32Array(this.buffer);\r\n          this.viewF64 = new Float64Array(this.buffer);\r\n          this.updateViews();\r\n      }\r\n      dispose() {\r\n          if (this.basePtr != 0) {\r\n              this.cFreeSpace(this.basePtr);\r\n              this.basePtr = 0;\r\n          }\r\n      }\r\n      /**\r\n       * Rest the call stack so that it can be reused again.\r\n       */\r\n      reset() {\r\n          this.stackTop = 0;\r\n          assert(this.addressToSetTargetValue.length === 0);\r\n          while (this.tempArgs.length != 0) {\r\n              this.tempArgs.pop().dispose();\r\n          }\r\n      }\r\n      /**\r\n       * Commit all the cached data to WasmMemory.\r\n       * This function can only be called once.\r\n       * No further store function should be called.\r\n       *\r\n       * @param nbytes Number of bytes to be stored.\r\n       */\r\n      commitToWasmMemory(nbytes = this.stackTop) {\r\n          // commit all pointer values.\r\n          while (this.addressToSetTargetValue.length != 0) {\r\n              const [targetOffset, valueOffset] = this.addressToSetTargetValue.pop();\r\n              this.storePtr(targetOffset, this.ptrFromOffset(valueOffset));\r\n          }\r\n          this.memory.storeRawBytes(this.basePtr, this.viewU8.slice(0, nbytes));\r\n      }\r\n      /**\r\n       * Allocate space by number of bytes\r\n       * @param nbytes Number of bytes.\r\n       * @note This function always allocate space that aligns to 64bit.\r\n       */\r\n      allocRawBytes(nbytes) {\r\n          // always aligns to 64bit\r\n          nbytes = ((nbytes + 7) >> 3) << 3;\r\n          if (this.stackTop + nbytes > this.buffer.byteLength) {\r\n              const newSize = Math.max(this.buffer.byteLength * 2, this.stackTop + nbytes);\r\n              const oldU8 = this.viewU8;\r\n              this.buffer = new ArrayBuffer(newSize);\r\n              this.updateViews();\r\n              this.viewU8.set(oldU8);\r\n              if (this.basePtr != 0) {\r\n                  this.cFreeSpace(this.basePtr);\r\n              }\r\n              this.basePtr = this.cAllocSpace(newSize);\r\n          }\r\n          const retOffset = this.stackTop;\r\n          this.stackTop += nbytes;\r\n          return retOffset;\r\n      }\r\n      /**\r\n       * Allocate space for pointers.\r\n       * @param count Number of pointers.\r\n       * @returns The allocated pointer array.\r\n       */\r\n      allocPtrArray(count) {\r\n          return this.allocRawBytes(this.memory.sizeofPtr() * count);\r\n      }\r\n      /**\r\n       * Get the real pointer from offset values.\r\n       * Note that the returned value becomes obsolete if alloc is called on the stack.\r\n       * @param offset The allocated offset.\r\n       */\r\n      ptrFromOffset(offset) {\r\n          return this.basePtr + offset;\r\n      }\r\n      // Store APIs\r\n      storePtr(offset, value) {\r\n          if (this.memory.wasm32) {\r\n              this.storeU32(offset, value);\r\n          }\r\n          else {\r\n              this.storeI64(offset, value);\r\n          }\r\n      }\r\n      storeUSize(offset, value) {\r\n          if (this.memory.wasm32) {\r\n              this.storeU32(offset, value);\r\n          }\r\n          else {\r\n              this.storeI64(offset, value);\r\n          }\r\n      }\r\n      storeI32(offset, value) {\r\n          this.viewI32[offset >> 2] = value;\r\n      }\r\n      storeU32(offset, value) {\r\n          this.viewU32[offset >> 2] = value;\r\n      }\r\n      storeI64(offset, value) {\r\n          // For now, just store as 32bit\r\n          // NOTE: wasm always uses little endian.\r\n          const low = value & 0xffffffff;\r\n          const base = offset >> 2;\r\n          this.viewI32[base] = low;\r\n          // sign extend\r\n          this.viewI32[base + 1] = value < 0 ? -1 : 0;\r\n      }\r\n      storeF64(offset, value) {\r\n          this.viewF64[offset >> 3] = value;\r\n      }\r\n      storeRawBytes(offset, bytes) {\r\n          this.viewU8.set(bytes, offset);\r\n      }\r\n      /**\r\n       * Allocate a byte array for a string and return the offset of the byte array.\r\n       * @param data The string to allocate.\r\n       * @returns The offset of the byte array.\r\n       */\r\n      allocByteArrayForString(data) {\r\n          const dataUint8 = StringToUint8Array(data);\r\n          // Note: size of size_t equals sizeof ptr.\r\n          const headerOffset = this.allocRawBytes(this.memory.sizeofPtr() * 2);\r\n          const dataOffset = this.allocRawBytes(dataUint8.length);\r\n          this.storeUSize(headerOffset + this.memory.sizeofPtr(), data.length);\r\n          this.storeRawBytes(dataOffset, dataUint8);\r\n          this.addressToSetTargetValue.push([headerOffset, dataOffset]);\r\n          return headerOffset;\r\n      }\r\n      /**\r\n       * Allocate then set C-String pointer to the offset.\r\n       * This function will call into allocBytes to allocate necessary data.\r\n       * The address won't be set immediately(because the possible change of basePtr)\r\n       * and will be filled when we commit the data.\r\n       *\r\n       * @param offset The offset to set ot data pointer.\r\n       * @param data The string content.\r\n       */\r\n      allocThenSetArgString(offset, data) {\r\n          const dataUint8 = StringToUint8Array(data);\r\n          const strOffset = this.allocRawBytes(dataUint8.length);\r\n          this.storeRawBytes(strOffset, dataUint8);\r\n          this.addressToSetTargetValue.push([offset, strOffset]);\r\n      }\r\n      /**\r\n       * Allocate then set the argument location with a TVMByteArray.\r\n       * Allocate new temporary space for bytes.\r\n       *\r\n       * @param offset The offset to set ot data pointer.\r\n       * @param data The string content.\r\n       */\r\n      allocThenSetArgBytes(offset, data) {\r\n          // Note: size of size_t equals sizeof ptr.\r\n          const headerOffset = this.allocRawBytes(this.memory.sizeofPtr() * 2);\r\n          const dataOffset = this.allocRawBytes(data.length);\r\n          this.storeRawBytes(dataOffset, data);\r\n          this.storeUSize(headerOffset + this.memory.sizeofPtr(), data.length);\r\n          this.addressToSetTargetValue.push([offset, headerOffset]);\r\n          this.addressToSetTargetValue.push([headerOffset, dataOffset]);\r\n      }\r\n      /**\r\n       * Update internal cache views.\r\n       */\r\n      updateViews() {\r\n          this.viewU8 = new Uint8Array(this.buffer);\r\n          this.viewI32 = new Int32Array(this.buffer);\r\n          this.viewU32 = new Uint32Array(this.buffer);\r\n          this.viewF64 = new Float64Array(this.buffer);\r\n      }\r\n  }\n\n  /**\r\n   * Detect library provider from the importObject.\r\n   *\r\n   * @param importObject The import object.\r\n   */\r\n  function detectLibraryProvider(importObject) {\r\n      if (importObject[\"wasmLibraryProvider\"] &&\r\n          importObject[\"wasmLibraryProvider\"][\"start\"] &&\r\n          importObject[\"wasmLibraryProvider\"][\"imports\"] !== undefined) {\r\n          const item = importObject;\r\n          // create provider so that we capture imports in the provider.\r\n          return {\r\n              imports: item.wasmLibraryProvider.imports,\r\n              start: (inst) => {\r\n                  item.wasmLibraryProvider.start(inst);\r\n              },\r\n          };\r\n      }\r\n      else if (importObject[\"imports\"] && importObject[\"start\"] !== undefined) {\r\n          return importObject;\r\n      }\r\n      else if (importObject[\"wasiImport\"] && importObject[\"start\"] !== undefined) {\r\n          // WASI\r\n          return {\r\n              imports: {\r\n                  \"wasi_snapshot_preview1\": importObject[\"wasiImport\"],\r\n              },\r\n              start: (inst) => {\r\n                  importObject[\"start\"](inst);\r\n              }\r\n          };\r\n      }\r\n      else {\r\n          return undefined;\r\n      }\r\n  }\r\n  /**\r\n   * Environment to impelement most of the JS library functions.\r\n   */\r\n  class Environment {\r\n      constructor(importObject = {}, logger = console.log) {\r\n          /**\r\n           * Maintains a table of FTVMWasmPackedCFunc that the C part\r\n           * can call via TVMWasmPackedCFunc.\r\n           *\r\n           * We maintain a separate table so that we can have un-limited amount\r\n           * of functions that do not maps to the address space.\r\n           */\r\n          this.packedCFuncTable = [\r\n              undefined,\r\n          ];\r\n          /**\r\n           * Free table index that can be recycled.\r\n           */\r\n          this.packedCFuncTableFreeId = [];\r\n          this.logger = logger;\r\n          this.libProvider = detectLibraryProvider(importObject);\r\n          // get imports from the provider\r\n          if (this.libProvider !== undefined) {\r\n              this.imports = this.libProvider.imports;\r\n          }\r\n          else {\r\n              this.imports = importObject;\r\n          }\r\n          // update with more functions\r\n          this.imports.env = this.environment(this.imports.env);\r\n      }\r\n      /** Mark the start of the instance. */\r\n      start(inst) {\r\n          if (this.libProvider !== undefined) {\r\n              this.libProvider.start(inst);\r\n          }\r\n      }\r\n      environment(initEnv) {\r\n          // default env can be overriden by libraries.\r\n          const defaultEnv = {\r\n              \"__cxa_thread_atexit\": () => { },\r\n              // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n              \"emscripten_notify_memory_growth\": (index) => { }\r\n          };\r\n          const wasmSafeCall = (self, args, num_args, result) => {\r\n              const cfunc = this.packedCFuncTable[self];\r\n              assert(cfunc !== undefined);\r\n              return cfunc(self, args, num_args, result);\r\n          };\r\n          const wasmFunctionDeleter = (self) => {\r\n              this.packedCFuncTable[self] = undefined;\r\n              this.packedCFuncTableFreeId.push(self);\r\n          };\r\n          const newEnv = {\r\n              \"TVMFFIWasmSafeCall\": wasmSafeCall,\r\n              \"TVMFFIWasmFunctionDeleter\": wasmFunctionDeleter,\r\n              \"__console_log\": (msg) => {\r\n                  this.logger(msg);\r\n              }\r\n          };\r\n          return Object.assign(defaultEnv, initEnv, newEnv);\r\n      }\r\n  }\n\n  /** The start location of asynctify stack data */\r\n  const ASYNCIFY_DATA_ADDR = 16;\r\n  /** The data start of stack rewind/unwind */\r\n  const ASYNCIFY_DATA_START = ASYNCIFY_DATA_ADDR + 8;\r\n  /** The data end of stack rewind/unwind */\r\n  const ASYNCIFY_DATA_END = 1024;\r\n  /** Hold asynctify handler instance that runtime can use */\r\n  class AsyncifyHandler {\r\n      constructor(exports, memory) {\r\n          /** current state kind */\r\n          this.state = 0 /* AsyncifyStateKind.None */;\r\n          /** The stored value before unwind */\r\n          this.storedPromiseBeforeUnwind = null;\r\n          // NOTE: asynctify do not work with exceptions\r\n          // this implementation here is mainly for possible future compact\r\n          /** The stored value that is resolved */\r\n          this.storedValueBeforeRewind = null;\r\n          /** The stored exception */\r\n          this.storedExceptionBeforeRewind = null;\r\n          this.exports = exports;\r\n          this.initMemory(memory);\r\n      }\r\n      // NOTE: wrapImport and wrapExport are closely related to each other\r\n      // We mark the logical jump pt in comments to increase the readability\r\n      /**\r\n       * Whether the wasm enables asynctify\r\n       * @returns Whether the wasm enables asynctify\r\n       */\r\n      enabled() {\r\n          return this.exports.asyncify_stop_rewind !== undefined;\r\n      }\r\n      /**\r\n       * Get the current asynctify state\r\n       *\r\n       * @returns The current asynctify state\r\n       */\r\n      isNormalStackState() {\r\n          return this.state == 0 /* AsyncifyStateKind.None */;\r\n      }\r\n      /**\r\n       * Get the current asynctify state\r\n       *\r\n       * @returns The current asynctify state\r\n       */\r\n      getState() {\r\n          return this.state;\r\n      }\r\n      /**\r\n       * Wrap a function that can be used as import of the wasm asynctify layer\r\n       *\r\n       * @param func The input import function\r\n       * @returns The wrapped function that can be registered to the system\r\n       */\r\n      wrapImport(func) {\r\n          return (...args) => {\r\n              // this is being called second time\r\n              // where we are rewinding the stack\r\n              if (this.getState() == 2 /* AsyncifyStateKind.Rewinding */) {\r\n                  // JUMP-PT-REWIND: rewind will jump to this pt\r\n                  // while rewinding the stack\r\n                  this.stopRewind();\r\n                  // the value has been resolved\r\n                  if (this.storedValueBeforeRewind !== null) {\r\n                      assert(this.storedExceptionBeforeRewind === null);\r\n                      const result = this.storedValueBeforeRewind;\r\n                      this.storedValueBeforeRewind = null;\r\n                      return result;\r\n                  }\r\n                  else {\r\n                      assert(this.storedValueBeforeRewind === null);\r\n                      const error = this.storedExceptionBeforeRewind;\r\n                      this.storedExceptionBeforeRewind = null;\r\n                      throw error;\r\n                  }\r\n              }\r\n              // this function is being called for the first time\r\n              assert(this.getState() == 0 /* AsyncifyStateKind.None */);\r\n              // call the function\r\n              const value = func(...args);\r\n              // if the value is promise\r\n              // we need to unwind the stack\r\n              // so the caller will be able to evaluate the promise\r\n              if (isPromise(value)) {\r\n                  // The next code step is JUMP-PT-UNWIND in wrapExport\r\n                  // The value will be passed to that pt through storedPromiseBeforeUnwind\r\n                  // getState() == Unwinding and we will enter the while loop in wrapExport\r\n                  this.startUnwind();\r\n                  assert(this.storedPromiseBeforeUnwind == null);\r\n                  this.storedPromiseBeforeUnwind = value;\r\n                  return undefined;\r\n              }\r\n              else {\r\n                  // The next code step is JUMP-PT-UNWIND in wrapExport\r\n                  // normal value, we don't have to do anything\r\n                  // getState() == None and we will exit while loop there\r\n                  return value;\r\n              }\r\n          };\r\n      }\r\n      /**\r\n       * Warp an exported asynctify function so it can return promise\r\n       *\r\n       * @param func The input function\r\n       * @returns The wrapped async function\r\n       */\r\n      wrapExport(func) {\r\n          return (...args) => __awaiter(this, void 0, void 0, function* () {\r\n              assert(this.getState() == 0 /* AsyncifyStateKind.None */);\r\n              // call the original function\r\n              let result = func(...args);\r\n              // JUMP-PT-UNWIND\r\n              // after calling the function\r\n              // the caller may hit a unwinding point depending on\r\n              // the if (isPromise(value)) condition in wrapImport\r\n              while (this.getState() == 1 /* AsyncifyStateKind.Unwinding */) {\r\n                  this.stopUnwind();\r\n                  // try to resolve the promise that the internal requested\r\n                  // we then store it into the temp value in storedValueBeforeRewind\r\n                  // which then get passed onto the function(see wrapImport)\r\n                  // that can return the value\r\n                  const storedPromiseBeforeUnwind = this.storedPromiseBeforeUnwind;\r\n                  this.storedPromiseBeforeUnwind = null;\r\n                  assert(this.storedExceptionBeforeRewind === null);\r\n                  assert(this.storedValueBeforeRewind == null);\r\n                  try {\r\n                      this.storedValueBeforeRewind = yield storedPromiseBeforeUnwind;\r\n                  }\r\n                  catch (error) {\r\n                      // the store exception\r\n                      this.storedExceptionBeforeRewind = error;\r\n                  }\r\n                  assert(!isPromise(this.storedValueBeforeRewind));\r\n                  // because we called asynctify_stop_unwind,the state is now none\r\n                  assert(this.getState() == 0 /* AsyncifyStateKind.None */);\r\n                  // re-enter the function, jump to JUMP-PT-REWIND in wrapImport\r\n                  // the value will be passed to that point via storedValueBeforeRewind\r\n                  //\r\n                  // NOTE: we guarantee that if exception is throw the asynctify state\r\n                  // will already be at None, this is because we will goto JUMP-PT-REWIND\r\n                  // which will call aynctify_stop_rewind\r\n                  this.startRewind();\r\n                  result = func(...args);\r\n              }\r\n              return result;\r\n          });\r\n      }\r\n      startRewind() {\r\n          if (this.exports.asyncify_start_rewind === undefined) {\r\n              throw Error(\"Asynctify is not enabled, please compile with -s ASYNCIFY=1 in emcc\");\r\n          }\r\n          this.exports.asyncify_start_rewind(ASYNCIFY_DATA_ADDR);\r\n          this.state = 2 /* AsyncifyStateKind.Rewinding */;\r\n      }\r\n      stopRewind() {\r\n          if (this.exports.asyncify_stop_rewind === undefined) {\r\n              throw Error(\"Asynctify is not enabled, please compile with -s ASYNCIFY=1 in emcc\");\r\n          }\r\n          this.exports.asyncify_stop_rewind();\r\n          this.state = 0 /* AsyncifyStateKind.None */;\r\n      }\r\n      startUnwind() {\r\n          if (this.exports.asyncify_start_unwind === undefined) {\r\n              throw Error(\"Asynctify is not enabled, please compile with -s ASYNCIFY=1 in emcc\");\r\n          }\r\n          this.exports.asyncify_start_unwind(ASYNCIFY_DATA_ADDR);\r\n          this.state = 1 /* AsyncifyStateKind.Unwinding */;\r\n      }\r\n      stopUnwind() {\r\n          if (this.exports.asyncify_stop_unwind === undefined) {\r\n              throw Error(\"Asynctify is not enabled, please compile with -s ASYNCIFY=1 in emcc\");\r\n          }\r\n          this.exports.asyncify_stop_unwind();\r\n          this.state = 0 /* AsyncifyStateKind.None */;\r\n      }\r\n      /**\r\n       * Initialize the wasm memory to setup necessary meta-data\r\n       * for asynctify handling\r\n       * @param memory The memory ti\r\n       */\r\n      initMemory(memory) {\r\n          // Set the meta-data at address ASYNCTIFY_DATA_ADDR\r\n          new Int32Array(memory.buffer, ASYNCIFY_DATA_ADDR, 2).set([ASYNCIFY_DATA_START, ASYNCIFY_DATA_END]);\r\n      }\r\n  }\n\n  /**\r\n   * DetectGPU device in the environment.\r\n   */\r\n  function detectGPUDevice(powerPreference = \"high-performance\") {\r\n      return __awaiter(this, void 0, void 0, function* () {\r\n          if (typeof navigator !== \"undefined\" && navigator.gpu !== undefined) {\r\n              const adapter = yield navigator.gpu.requestAdapter({ powerPreference });\r\n              if (adapter == null) {\r\n                  throw Error(\"Unable to find a compatible GPU. This issue might be because your computer doesn't have a GPU, or your system settings are not configured properly. \" +\r\n                      \"Please check if your device has a GPU properly set up and if your your browser supports WebGPU. \" +\r\n                      \"You can also consult your browser's compatibility chart to see if it supports WebGPU. \" +\r\n                      \"For more information about WebGPU support in your browser, visit https://webgpureport.org/\");\r\n              }\r\n              const computeMB = (value) => {\r\n                  return Math.ceil(value / (1 << 20)) + \"MB\";\r\n              };\r\n              // more detailed error message\r\n              let requiredMaxBufferSize = 1 << 30; // 1GB\r\n              if (requiredMaxBufferSize > adapter.limits.maxBufferSize) {\r\n                  // If 1GB is too large, try 256MB (default size stated in WebGPU doc)\r\n                  const backupRequiredMaxBufferSize = 1 << 28; // 256MB\r\n                  console.log(`Requested maxBufferSize exceeds limit. \\n` +\r\n                      `requested=${computeMB(requiredMaxBufferSize)}, \\n` +\r\n                      `limit=${computeMB(adapter.limits.maxBufferSize)}. \\n` +\r\n                      `WARNING: Falling back to ${computeMB(backupRequiredMaxBufferSize)}...`);\r\n                  requiredMaxBufferSize = backupRequiredMaxBufferSize;\r\n                  if (backupRequiredMaxBufferSize > adapter.limits.maxBufferSize) {\r\n                      // Fail if 256MB is still too big\r\n                      throw Error(`Cannot initialize runtime because of requested maxBufferSize ` +\r\n                          `exceeds limit. requested=${computeMB(backupRequiredMaxBufferSize)}, ` +\r\n                          `limit=${computeMB(adapter.limits.maxBufferSize)}. ` +\r\n                          `Consider upgrading your browser.`);\r\n                  }\r\n              }\r\n              let requiredMaxStorageBufferBindingSize = 1 << 30; // 1GB\r\n              if (requiredMaxStorageBufferBindingSize > adapter.limits.maxStorageBufferBindingSize) {\r\n                  // If 1GB is too large, try 128MB (default size stated in WebGPU doc)\r\n                  const backupRequiredMaxStorageBufferBindingSize = 1 << 27; // 128MB\r\n                  console.log(`Requested maxStorageBufferBindingSize exceeds limit. \\n` +\r\n                      `requested=${computeMB(requiredMaxStorageBufferBindingSize)}, \\n` +\r\n                      `limit=${computeMB(adapter.limits.maxStorageBufferBindingSize)}. \\n` +\r\n                      `WARNING: Falling back to ${computeMB(backupRequiredMaxStorageBufferBindingSize)}...`);\r\n                  requiredMaxStorageBufferBindingSize = backupRequiredMaxStorageBufferBindingSize;\r\n                  if (backupRequiredMaxStorageBufferBindingSize > adapter.limits.maxStorageBufferBindingSize) {\r\n                      // Fail if 128MB is still too big\r\n                      throw Error(`Cannot initialize runtime because of requested maxStorageBufferBindingSize ` +\r\n                          `exceeds limit. requested=${computeMB(backupRequiredMaxStorageBufferBindingSize)}, ` +\r\n                          `limit=${computeMB(adapter.limits.maxStorageBufferBindingSize)}. `);\r\n                  }\r\n              }\r\n              const requiredMaxComputeWorkgroupStorageSize = 32 << 10;\r\n              if (requiredMaxComputeWorkgroupStorageSize > adapter.limits.maxComputeWorkgroupStorageSize) {\r\n                  throw Error(`Cannot initialize runtime because of requested maxComputeWorkgroupStorageSize ` +\r\n                      `exceeds limit. requested=${requiredMaxComputeWorkgroupStorageSize}, ` +\r\n                      `limit=${adapter.limits.maxComputeWorkgroupStorageSize}. `);\r\n              }\r\n              const requiredMaxStorageBuffersPerShaderStage = 10; // default is 8\r\n              if (requiredMaxStorageBuffersPerShaderStage > adapter.limits.maxStorageBuffersPerShaderStage) {\r\n                  throw Error(`Cannot initialize runtime because of requested maxStorageBuffersPerShaderStage ` +\r\n                      `exceeds limit. requested=${requiredMaxStorageBuffersPerShaderStage}, ` +\r\n                      `limit=${adapter.limits.maxStorageBuffersPerShaderStage}. `);\r\n              }\r\n              const requiredFeatures = [];\r\n              // Always require f16 if available\r\n              if (adapter.features.has(\"shader-f16\")) {\r\n                  requiredFeatures.push(\"shader-f16\");\r\n              }\r\n              // requestAdapterInfo() is deprecated, causing requestAdapterInfo to raise\r\n              // issue when building. However, it is still needed for older browsers, hence `as any`.\r\n              const adapterInfo = adapter.info || (yield adapter.requestAdapterInfo());\r\n              const device = yield adapter.requestDevice({\r\n                  requiredLimits: {\r\n                      maxBufferSize: requiredMaxBufferSize,\r\n                      maxStorageBufferBindingSize: requiredMaxStorageBufferBindingSize,\r\n                      maxComputeWorkgroupStorageSize: requiredMaxComputeWorkgroupStorageSize,\r\n                      maxStorageBuffersPerShaderStage: requiredMaxStorageBuffersPerShaderStage,\r\n                  },\r\n                  requiredFeatures\r\n              });\r\n              return {\r\n                  adapter: adapter,\r\n                  adapterInfo: adapterInfo,\r\n                  device: device\r\n              };\r\n          }\r\n          else {\r\n              return undefined;\r\n          }\r\n      });\r\n  }\r\n  /**\r\n   * Create GPU buffer with `createBuffer()` but with error catching; destroy if error caught.\r\n   * @param device The GPUDevice used to create a buffer.\r\n   * @param descriptor The GPUBufferDescriptor passed to `createBuffer()`.\r\n   * @returns The buffer created by `createBuffer()`.\r\n   *\r\n   * @note We treat any error occurred at `createBuffer()` fatal and expect the user to handle\r\n   *   `device.destroy()` with `device.lost.then()`.\r\n   */\r\n  function tryCreateBuffer(device, descriptor) {\r\n      device.pushErrorScope(\"out-of-memory\");\r\n      device.pushErrorScope(\"validation\");\r\n      device.pushErrorScope(\"internal\");\r\n      const buffer = device.createBuffer(descriptor);\r\n      device.popErrorScope().then((error) => { if (error) {\r\n          device.destroy();\r\n          console.error(error);\r\n      } });\r\n      device.popErrorScope().then((error) => { if (error) {\r\n          device.destroy();\r\n          console.error(error);\r\n      } });\r\n      device.popErrorScope().then((error) => { if (error) {\r\n          device.destroy();\r\n          console.error(error);\r\n      } });\r\n      return buffer;\r\n  }\r\n  const canvasRenderWGSL = `\n@group(0) @binding(0) var my_sampler : sampler;\n@group(0) @binding(1) var my_texture : texture_2d<f32>;\n\nstruct VertexOutput {\n  @builtin(position) position : vec4<f32>,\n  @location(0) uv : vec2<f32>,\n}\n\n@vertex\nfn vertex_main(@builtin(vertex_index) vidx : u32) -> VertexOutput {\n  const pos = array(\n    vec2( 1.0,  1.0),\n    vec2( 1.0, -1.0),\n    vec2(-1.0, -1.0),\n    vec2( 1.0,  1.0),\n    vec2(-1.0, -1.0),\n    vec2(-1.0,  1.0),\n  );\n\n  const uv = array(\n    vec2(1.0, 0.0),\n    vec2(1.0, 1.0),\n    vec2(0.0, 1.0),\n    vec2(1.0, 0.0),\n    vec2(0.0, 1.0),\n    vec2(0.0, 0.0),\n  );\n\n  var output : VertexOutput;\n  output.position = vec4(pos[vidx], 0.0, 1.0);\n  output.uv = uv[vidx];\n  return output;\n}\n\n@fragment\nfn fragment_main(@location(0) uv : vec2<f32>) -> @location(0) vec4<f32> {\n  return textureSample(my_texture, my_sampler, uv);\n}\n\n@fragment\nfn fragment_clear(@location(0) uv : vec2<f32>) -> @location(0) vec4<f32> {\n  return vec4(1.0, 1.0, 1.0, 1.0);\n}\n`;\r\n  class CanvasRenderManager {\r\n      constructor(device, canvas) {\r\n          this.device = device;\r\n          const ctx = canvas.getContext(\"webgpu\");\r\n          if (ctx == null) {\r\n              throw Error(\"Cannot bind WebGPU context\");\r\n          }\r\n          // avoid possible ts complain\r\n          this.canvasContext = ctx;\r\n          this.canvasTextureFormat = navigator.gpu.getPreferredCanvasFormat();\r\n          this.canvasContext.configure({\r\n              device: this.device,\r\n              format: this.canvasTextureFormat,\r\n              alphaMode: \"opaque\",\r\n          });\r\n          this.renderPipeline = device.createRenderPipeline({\r\n              layout: \"auto\",\r\n              vertex: {\r\n                  module: device.createShaderModule({\r\n                      code: canvasRenderWGSL,\r\n                  }),\r\n                  entryPoint: \"vertex_main\",\r\n              },\r\n              fragment: {\r\n                  module: device.createShaderModule({\r\n                      code: canvasRenderWGSL,\r\n                  }),\r\n                  entryPoint: \"fragment_main\",\r\n                  targets: [{\r\n                          format: this.canvasTextureFormat,\r\n                      }],\r\n              },\r\n              primitive: {\r\n                  topology: \"triangle-list\",\r\n              },\r\n          });\r\n          this.clearPipeline = device.createRenderPipeline({\r\n              layout: \"auto\",\r\n              vertex: {\r\n                  module: device.createShaderModule({\r\n                      code: canvasRenderWGSL,\r\n                  }),\r\n                  entryPoint: \"vertex_main\",\r\n              },\r\n              fragment: {\r\n                  module: device.createShaderModule({\r\n                      code: canvasRenderWGSL,\r\n                  }),\r\n                  entryPoint: \"fragment_clear\",\r\n                  targets: [{\r\n                          format: this.canvasTextureFormat,\r\n                      }],\r\n              },\r\n              primitive: {\r\n                  topology: \"triangle-list\",\r\n              },\r\n          });\r\n          this.renderSampler = device.createSampler({\r\n              magFilter: \"linear\",\r\n              minFilter: \"linear\",\r\n          });\r\n          // staging texture always be in RGBA\r\n          this.stagingTexture = device.createTexture({\r\n              size: [canvas.height, canvas.width, 1],\r\n              format: \"rgba8unorm\",\r\n              usage: GPUTextureUsage.TEXTURE_BINDING |\r\n                  GPUTextureUsage.COPY_DST |\r\n                  GPUTextureUsage.RENDER_ATTACHMENT,\r\n          });\r\n      }\r\n      clear() {\r\n          const commandEncoder = this.device.createCommandEncoder();\r\n          const passEncoder = commandEncoder.beginRenderPass({\r\n              colorAttachments: [\r\n                  {\r\n                      view: this.canvasContext.getCurrentTexture().createView(),\r\n                      clearValue: { r: 0.0, g: 0.0, b: 0.0, a: 1.0 },\r\n                      loadOp: \"clear\",\r\n                      storeOp: \"store\",\r\n                  },\r\n              ],\r\n          });\r\n          passEncoder.setPipeline(this.clearPipeline);\r\n          const renderBindingGroup = this.device.createBindGroup({\r\n              layout: this.renderPipeline.getBindGroupLayout(0),\r\n              entries: [\r\n                  { binding: 0, resource: this.renderSampler },\r\n                  { binding: 1, resource: this.stagingTexture.createView() },\r\n              ],\r\n          });\r\n          passEncoder.setBindGroup(0, renderBindingGroup);\r\n          passEncoder.draw(6, 1, 0, 0);\r\n          passEncoder.end();\r\n          this.device.queue.submit([commandEncoder.finish()]);\r\n      }\r\n      draw(buffer, height, width) {\r\n          // resize the staging texture\r\n          if (height != this.stagingTexture.height || width != this.stagingTexture.width) {\r\n              this.stagingTexture.destroy();\r\n              this.stagingTexture = this.device.createTexture({\r\n                  size: [height, width, 1],\r\n                  format: \"rgba8unorm\",\r\n                  usage: GPUTextureUsage.TEXTURE_BINDING |\r\n                      GPUTextureUsage.COPY_DST |\r\n                      GPUTextureUsage.RENDER_ATTACHMENT,\r\n              });\r\n          }\r\n          const commandEncoder = this.device.createCommandEncoder();\r\n          commandEncoder.copyBufferToTexture({\r\n              buffer: buffer,\r\n              offset: 0,\r\n              bytesPerRow: this.stagingTexture.width * 4\r\n          }, {\r\n              texture: this.stagingTexture\r\n          }, {\r\n              width: this.stagingTexture.width,\r\n              height: this.stagingTexture.height\r\n          });\r\n          const passEncoder = commandEncoder.beginRenderPass({\r\n              colorAttachments: [\r\n                  {\r\n                      view: this.canvasContext.getCurrentTexture().createView(),\r\n                      clearValue: { r: 0.0, g: 0.0, b: 0.0, a: 1.0 },\r\n                      loadOp: \"clear\",\r\n                      storeOp: \"store\",\r\n                  },\r\n              ],\r\n          });\r\n          passEncoder.setPipeline(this.renderPipeline);\r\n          const renderBindingGroup = this.device.createBindGroup({\r\n              layout: this.renderPipeline.getBindGroupLayout(0),\r\n              entries: [\r\n                  { binding: 0, resource: this.renderSampler },\r\n                  { binding: 1, resource: this.stagingTexture.createView() },\r\n              ],\r\n          });\r\n          passEncoder.setBindGroup(0, renderBindingGroup);\r\n          passEncoder.draw(6, 1, 0, 0);\r\n          passEncoder.end();\r\n          this.device.queue.submit([commandEncoder.finish()]);\r\n      }\r\n      dispose() {\r\n          this.stagingTexture.destroy();\r\n      }\r\n  }\r\n  /**\r\n   * WebGPU context\r\n   * Manages all the webgpu resources here.\r\n   */\r\n  class WebGPUContext {\r\n      constructor(memory, device) {\r\n          // internal data\r\n          this.bufferTable = [undefined];\r\n          this.bufferTableFreeId = [];\r\n          this.podArgStagingBuffers = [];\r\n          this.canvasRenderManager = undefined;\r\n          // number of pod arg staging buffers\r\n          this.maxNumPodArgsStagingBuffers = 2;\r\n          // flags for debugging\r\n          // stats of the runtime.\r\n          // peak allocation\r\n          this.peakAllocatedBytes = 0;\r\n          // current allocation\r\n          this.currAllocatedBytes = 0;\r\n          // all allocation(ignoring free)\r\n          this.allAllocatedBytes = 0;\r\n          // shader submit counter\r\n          this.shaderSubmitCounter = 0;\r\n          // limite number of shaders to be submitted, useful for debugging, default to -1\r\n          this.debugShaderSubmitLimit = -1;\r\n          // log and sync each step\r\n          this.debugLogFinish = false;\r\n          this.memory = memory;\r\n          this.device = device;\r\n      }\r\n      /**\r\n       * Dispose context.\r\n       */\r\n      dispose() {\r\n          var _a, _b, _c;\r\n          (_a = this.canvasRenderManager) === null || _a === void 0 ? void 0 : _a.dispose();\r\n          this.bufferTableFreeId = [];\r\n          while (this.bufferTable.length != 0) {\r\n              (_b = this.bufferTable.pop()) === null || _b === void 0 ? void 0 : _b.destroy();\r\n          }\r\n          while (this.podArgStagingBuffers.length != 0) {\r\n              (_c = this.podArgStagingBuffers.pop()) === null || _c === void 0 ? void 0 : _c.destroy();\r\n          }\r\n          this.device.destroy();\r\n      }\r\n      /**\r\n       * Wait for all pending GPU tasks to complete\r\n       */\r\n      sync() {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              yield this.device.queue.onSubmittedWorkDone();\r\n          });\r\n      }\r\n      /**\r\n       * Obtain the runtime information in readable format.\r\n       */\r\n      runtimeStatsText() {\r\n          let info = \"peak-memory=\" + Math.ceil(this.peakAllocatedBytes / (1 << 20)) + \" MB\";\r\n          info += \", all-memory=\" + Math.ceil(this.allAllocatedBytes / (1 << 20)) + \" MB\";\r\n          info += \", shader-submissions=\" + this.shaderSubmitCounter;\r\n          return info;\r\n      }\r\n      /**\r\n       * Draw image from data in storage buffer.\r\n       * @param ptr The GPU ptr\r\n       * @param height The height of the image.\r\n       * @param width The width of the image.\r\n       */\r\n      drawImageFromBuffer(ptr, height, width) {\r\n          if (this.canvasRenderManager == undefined) {\r\n              throw Error(\"Do not have a canvas context, call bindCanvas first\");\r\n          }\r\n          this.canvasRenderManager.draw(this.gpuBufferFromPtr(ptr), height, width);\r\n      }\r\n      /**\r\n       * Copy raw bytes into buffer ptr.\r\n       *\r\n       * @param rawBytes The raw bytes\r\n       * @param toPtr The target gpu buffer ptr\r\n       * @param toOffset The beginning offset\r\n       * @param nbytes Number of bytes\r\n       */\r\n      copyRawBytesToBuffer(rawBytes, toPtr, toOffset, nbytes) {\r\n          // Perhaps it would be more useful to use a staging buffer?\r\n          this.device.queue.writeBuffer(this.gpuBufferFromPtr(toPtr), toOffset, rawBytes, 0, nbytes);\r\n      }\r\n      /**\r\n       * Clear canvas\r\n       */\r\n      clearCanvas() {\r\n          var _a;\r\n          (_a = this.canvasRenderManager) === null || _a === void 0 ? void 0 : _a.clear();\r\n      }\r\n      /**\r\n       * Bind a canvas element to the runtime.\r\n       * @param canvas The HTML canvas/\r\n       */\r\n      bindCanvas(canvas) {\r\n          this.canvasRenderManager = new CanvasRenderManager(this.device, canvas);\r\n      }\r\n      /**\r\n       * Create a PackedFunc that runs the given shader\r\n       * via createComputePipeline\r\n       *\r\n       * @param info The function information already parsed as a record.\r\n       * @param code The shader data(in WGSL)\r\n       * @returns The shader\r\n       */\r\n      createShader(finfo, code) {\r\n          return this.createShadeInternal(finfo, code, false);\r\n      }\r\n      /**\r\n       * Create a PackedFunc that runs the given shader asynchronously\r\n       * via createComputePipelineAsync\r\n       *\r\n       * @param info The function information already parsed as a record.\r\n       * @param code The shader data(in WGSL)\r\n       * @returns The shader\r\n       */\r\n      createShaderAsync(finfo, code) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              return yield this.createShadeInternal(finfo, code, true);\r\n          });\r\n      }\r\n      /**\r\n       * Get the pod arg staging buffer\r\n       * \\param nbytes The minimum size.\r\n       * \\return The allocated buffer\r\n       */\r\n      getPodArgsBuffer(nbytes) {\r\n          let buffer = undefined;\r\n          if (this.podArgStagingBuffers.length >= this.maxNumPodArgsStagingBuffers) {\r\n              buffer = this.podArgStagingBuffers.shift();\r\n          }\r\n          // minimum of 16 bytes\r\n          let allocSize = 16;\r\n          if (buffer !== undefined) {\r\n              allocSize = buffer.size;\r\n              if (buffer.size < nbytes) {\r\n                  buffer.destroy();\r\n                  buffer = undefined;\r\n              }\r\n          }\r\n          while (allocSize < nbytes) {\r\n              allocSize *= 2;\r\n          }\r\n          if (buffer == undefined) {\r\n              // create uniform buffer\r\n              buffer = tryCreateBuffer(this.device, {\r\n                  size: allocSize,\r\n                  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\r\n              });\r\n          }\r\n          assert(nbytes <= buffer.size);\r\n          return buffer;\r\n      }\r\n      /**\r\n       * Internal impl of createShader for both async and sync mode.\r\n       *\r\n       * @param info The function information already parsed as a record.\r\n       * @param code The shader data(in WGSL)\r\n       * @param asyncMode Whether use async mode.\r\n       * @returns The shader function or promise of shader func.\r\n       */\r\n      createShadeInternal(finfo, code, asyncMode) {\r\n          const dispatchToDim = [];\r\n          let paramWriteAccess = [];\r\n          for (let i = 0; i < finfo.launch_param_tags.length; ++i) {\r\n              const tag = finfo.launch_param_tags[i];\r\n              if (tag.startsWith(\"blockIdx.\")) {\r\n                  const target = tag.charCodeAt(tag.length - 1) - (\"x\".charCodeAt(0));\r\n                  assert(target >= 0 && target < 3);\r\n                  dispatchToDim.push(target);\r\n              }\r\n              else if (tag.startsWith(\"threadIdx.\")) {\r\n                  const target = tag.charCodeAt(tag.length - 1) - (\"x\".charCodeAt(0));\r\n                  assert(target >= 0 && target < 3);\r\n                  dispatchToDim.push(target + 3);\r\n              }\r\n              else if (tag.startsWith(\"paramWriteAccess:\")) {\r\n                  paramWriteAccess = JSON.parse(tag.substring(17));\r\n              }\r\n              else {\r\n                  throw new Error(\"Cannot handle thread_axis \" + tag);\r\n              }\r\n          }\r\n          const layoutEntries = [];\r\n          const bufferArgIndices = [];\r\n          const podArgIndices = [];\r\n          for (let i = 0; i < finfo.arg_types.length; ++i) {\r\n              const dtype = finfo.arg_types[i];\r\n              if (dtype == \"handle\") {\r\n                  layoutEntries.push({\r\n                      binding: bufferArgIndices.length,\r\n                      visibility: GPUShaderStage.COMPUTE,\r\n                      buffer: {\r\n                          type: paramWriteAccess[bufferArgIndices.length] ? \"storage\" : \"read-only-storage\"\r\n                      }\r\n                  });\r\n                  bufferArgIndices.push(i);\r\n              }\r\n              else if (dtype.startsWith(\"int\") || dtype.startsWith(\"uint\") || dtype.startsWith(\"float\")) {\r\n                  podArgIndices.push(i);\r\n              }\r\n              else {\r\n                  throw new Error(\"Cannot handle argument type \" + dtype + \" in WebGPU shader\");\r\n              }\r\n          }\r\n          assert(paramWriteAccess.length == bufferArgIndices.length);\r\n          // POD arguments are pass in the end\r\n          layoutEntries.push({\r\n              binding: bufferArgIndices.length,\r\n              visibility: GPUShaderStage.COMPUTE,\r\n              buffer: {\r\n                  type: \"uniform\"\r\n              }\r\n          });\r\n          const bindGroupLayout = this.device.createBindGroupLayout({\r\n              entries: layoutEntries\r\n          });\r\n          const pipelineLayout = this.device.createPipelineLayout({\r\n              bindGroupLayouts: [bindGroupLayout]\r\n          });\r\n          // Function to create the pipeline.\r\n          const createShaderFunc = (pipeline) => {\r\n              const submitShader = (...args) => {\r\n                  if (this.debugShaderSubmitLimit != -1 &&\r\n                      this.shaderSubmitCounter >= this.debugShaderSubmitLimit) {\r\n                      this.shaderSubmitCounter += 1;\r\n                      return;\r\n                  }\r\n                  const commandEncoder = this.device.createCommandEncoder();\r\n                  const compute = commandEncoder.beginComputePass();\r\n                  compute.setPipeline(pipeline);\r\n                  const bindGroupEntries = [];\r\n                  const numBufferOrPodArgs = bufferArgIndices.length + podArgIndices.length;\r\n                  assert(args.length == numBufferOrPodArgs + dispatchToDim.length);\r\n                  const workDim = [1, 1, 1, 1, 1, 1];\r\n                  for (let i = 0; i < dispatchToDim.length; ++i) {\r\n                      workDim[dispatchToDim[i]] = args[numBufferOrPodArgs + i];\r\n                  }\r\n                  // get around 65535 restriction of blockIdx.x\r\n                  if (workDim[2] != 1) {\r\n                      throw Error(\"WebGPU: blockIdx.z is reserved for internal use\");\r\n                  }\r\n                  const packDimX = workDim[0];\r\n                  // spread thinsg out into blockIdx.z\r\n                  if (workDim[0] >= (1 << 16)) {\r\n                      let wl_x = workDim[0];\r\n                      let wl_z = workDim[2];\r\n                      while (wl_x >= (1 << 16)) {\r\n                          if (wl_x % 2 == 0) {\r\n                              wl_x = wl_x / 2;\r\n                          }\r\n                          else {\r\n                              // pad up\r\n                              wl_x = (wl_x + 1) / 2;\r\n                          }\r\n                          wl_z *= 2;\r\n                      }\r\n                      workDim[0] = wl_x;\r\n                      workDim[2] = wl_z;\r\n                      assert(wl_x * wl_z >= packDimX);\r\n                  }\r\n                  for (let i = 0; i < bufferArgIndices.length; ++i) {\r\n                      bindGroupEntries.push({\r\n                          binding: i,\r\n                          resource: {\r\n                              buffer: this.gpuBufferFromPtr(args[bufferArgIndices[i]])\r\n                          }\r\n                      });\r\n                  }\r\n                  // push pod buffer\r\n                  const sizeOfI32 = 4;\r\n                  const podArgBuffer = this.getPodArgsBuffer((podArgIndices.length + 1) * sizeOfI32);\r\n                  const i32View = new Int32Array(podArgIndices.length + 1);\r\n                  const u32View = new Uint32Array(i32View.buffer);\r\n                  const f32View = new Float32Array(i32View.buffer);\r\n                  for (let i = 0; i < podArgIndices.length; ++i) {\r\n                      const value = args[podArgIndices[i]];\r\n                      const dtype = finfo.arg_types[podArgIndices[i]];\r\n                      if (dtype.startsWith(\"int\")) {\r\n                          i32View[i] = value;\r\n                      }\r\n                      else if (dtype.startsWith(\"uint\")) {\r\n                          u32View[i] = value;\r\n                      }\r\n                      else if (dtype.startsWith(\"float\")) {\r\n                          f32View[i] = value;\r\n                      }\r\n                      else {\r\n                          throw Error(\"Unknown pod dtype \" + dtype);\r\n                      }\r\n                  }\r\n                  // always pass in dim z launching grid size in\r\n                  u32View[podArgIndices.length] = packDimX;\r\n                  this.device.queue.writeBuffer(podArgBuffer, 0, i32View.buffer);\r\n                  bindGroupEntries.push({\r\n                      binding: bufferArgIndices.length,\r\n                      resource: {\r\n                          buffer: podArgBuffer,\r\n                          size: i32View.buffer.byteLength\r\n                      }\r\n                  });\r\n                  compute.setBindGroup(0, this.device.createBindGroup({\r\n                      layout: bindGroupLayout,\r\n                      entries: bindGroupEntries\r\n                  }));\r\n                  compute.dispatchWorkgroups(workDim[0], workDim[1], workDim[2]);\r\n                  compute.end();\r\n                  const command = commandEncoder.finish();\r\n                  this.device.queue.submit([command]);\r\n                  if (this.debugLogFinish) {\r\n                      const currCounter = this.shaderSubmitCounter;\r\n                      this.device.queue.onSubmittedWorkDone().then(() => {\r\n                          console.log(\"[\" + currCounter + \"][Debug] finish shader\" + finfo.name);\r\n                      });\r\n                  }\r\n                  this.shaderSubmitCounter += 1;\r\n              };\r\n              return submitShader;\r\n          };\r\n          const shaderModule = this.device.createShaderModule({\r\n              code: code,\r\n              compilationHints: [\r\n                  {\r\n                      entryPoint: \"main\",\r\n                      layout: pipelineLayout\r\n                  }\r\n              ]\r\n          });\r\n          if (asyncMode) {\r\n              return this.device.createComputePipelineAsync({\r\n                  layout: pipelineLayout,\r\n                  compute: {\r\n                      module: shaderModule,\r\n                      entryPoint: finfo.name\r\n                  }\r\n              }).then((pipeline) => {\r\n                  return createShaderFunc(pipeline);\r\n              });\r\n          }\r\n          else {\r\n              const pipeline = this.device.createComputePipeline({\r\n                  layout: pipelineLayout,\r\n                  compute: {\r\n                      module: shaderModule,\r\n                      entryPoint: finfo.name\r\n                  }\r\n              });\r\n              return createShaderFunc(pipeline);\r\n          }\r\n      }\r\n      /**\r\n       * Get the device API according to its name\r\n       * @param The name of the API.\r\n       * @returns The corresponding device api.\r\n       */\r\n      getDeviceAPI(name) {\r\n          if (name == \"deviceAllocDataSpace\") {\r\n              return (nbytes) => {\r\n                  return this.deviceAllocDataSpace(nbytes);\r\n              };\r\n          }\r\n          else if (name == \"deviceFreeDataSpace\") {\r\n              return (ptr) => {\r\n                  return this.deviceFreeDataSpace(ptr);\r\n              };\r\n          }\r\n          else if (name == \"deviceCopyToGPU\") {\r\n              return (from, to, toOffset, nbytes) => {\r\n                  this.deviceCopyToGPU(from, to, toOffset, nbytes);\r\n              };\r\n          }\r\n          else if (name == \"deviceCopyFromGPU\") {\r\n              return (from, fromOffset, to, nbytes) => {\r\n                  this.deviceCopyFromGPU(from, fromOffset, to, nbytes);\r\n              };\r\n          }\r\n          else if (name == \"deviceCopyWithinGPU\") {\r\n              return (from, fromOffset, to, toOffset, nbytes) => {\r\n                  this.deviceCopyWithinGPU(from, fromOffset, to, toOffset, nbytes);\r\n              };\r\n          }\r\n          else {\r\n              throw new Error(\"Unknown DeviceAPI function \" + name);\r\n          }\r\n      }\r\n      // DeviceAPI\r\n      deviceAllocDataSpace(nbytes) {\r\n          // allocate 0 bytes buffer as 1 bytes buffer.\r\n          if (nbytes == 0) {\r\n              nbytes = 1;\r\n          }\r\n          const buffer = tryCreateBuffer(this.device, {\r\n              size: nbytes,\r\n              usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST,\r\n          });\r\n          this.currAllocatedBytes += nbytes;\r\n          this.allAllocatedBytes += nbytes;\r\n          if (this.currAllocatedBytes > this.peakAllocatedBytes) {\r\n              this.peakAllocatedBytes = this.currAllocatedBytes;\r\n          }\r\n          const ptr = this.attachToBufferTable(buffer);\r\n          return ptr;\r\n      }\r\n      deviceFreeDataSpace(ptr) {\r\n          const idx = ptr;\r\n          const buffer = this.bufferTable[idx];\r\n          this.bufferTable[idx] = undefined;\r\n          assert(buffer !== undefined);\r\n          this.bufferTableFreeId.push(idx);\r\n          this.currAllocatedBytes -= buffer.size;\r\n          buffer.destroy();\r\n      }\r\n      deviceCopyToGPU(from, to, toOffset, nbytes) {\r\n          // Perhaps it would be more useful to use a staging buffer?\r\n          let rawBytes = this.memory.loadRawBytes(from, nbytes);\r\n          if (rawBytes.length % 4 !== 0) {\r\n              // writeBuffer requires length to be multiples of 4, so we pad here\r\n              const toPad = 4 - rawBytes.length % 4;\r\n              rawBytes = new Uint8Array(rawBytes.length + toPad);\r\n              rawBytes.set(rawBytes);\r\n              nbytes = nbytes + toPad;\r\n          }\r\n          this.device.queue.writeBuffer(this.gpuBufferFromPtr(to), toOffset, rawBytes, 0, nbytes);\r\n      }\r\n      deviceCopyFromGPU(from, fromOffset, to, nbytes) {\r\n          // Perhaps it would be more useful to resuse a staging buffer?\r\n          const gpuTemp = tryCreateBuffer(this.device, {\r\n              size: nbytes,\r\n              usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST,\r\n          });\r\n          const copyEncoder = this.device.createCommandEncoder();\r\n          copyEncoder.copyBufferToBuffer(this.gpuBufferFromPtr(from), fromOffset, gpuTemp, 0, nbytes);\r\n          const copyCommands = copyEncoder.finish();\r\n          this.device.queue.submit([copyCommands]);\r\n          gpuTemp.mapAsync(GPUMapMode.READ).then(() => {\r\n              const data = gpuTemp.getMappedRange();\r\n              this.memory.storeRawBytes(to, new Uint8Array(data));\r\n              gpuTemp.destroy();\r\n          });\r\n      }\r\n      deviceCopyWithinGPU(from, fromOffset, to, toOffset, nbytes) {\r\n          const copyEncoder = this.device.createCommandEncoder();\r\n          copyEncoder.copyBufferToBuffer(this.gpuBufferFromPtr(from), fromOffset, this.gpuBufferFromPtr(to), toOffset, nbytes);\r\n          const copyCommands = copyEncoder.finish();\r\n          this.device.queue.submit([copyCommands]);\r\n      }\r\n      gpuBufferFromPtr(ptr) {\r\n          const buffer = this.bufferTable[ptr];\r\n          assert(buffer !== undefined);\r\n          return buffer;\r\n      }\r\n      attachToBufferTable(buffer) {\r\n          if (this.bufferTableFreeId.length != 0) {\r\n              const idx = this.bufferTableFreeId.pop();\r\n              this.bufferTable[idx] = buffer;\r\n              return idx;\r\n          }\r\n          else {\r\n              const idx = this.bufferTable.length;\r\n              this.bufferTable.push(buffer);\r\n              return idx;\r\n          }\r\n      }\r\n  }\n\n  /*\r\n   * Licensed to the Apache Software Foundation (ASF) under one\r\n   * or more contributor license agreements.  See the NOTICE file\r\n   * distributed with this work for additional information\r\n   * regarding copyright ownership.  The ASF licenses this file\r\n   * to you under the Apache License, Version 2.0 (the\r\n   * \"License\"); you may not use this file except in compliance\r\n   * with the License.  You may obtain a copy of the License at\r\n   *\r\n   *   http://www.apache.org/licenses/LICENSE-2.0\r\n   *\r\n   * Unless required by applicable law or agreed to in writing,\r\n   * software distributed under the License is distributed on an\r\n   * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n   * KIND, either express or implied.  See the License for the\r\n   * specific language governing permissions and limitations\r\n   * under the License.\r\n   */\r\n  /**\r\n   * Cache to store model related data, implemented with the Cache API.\r\n   */\r\n  class ArtifactCache {\r\n      constructor(scope) {\r\n          this.scope = scope;\r\n      }\r\n      /**\r\n       * Convert the Response object to the expected storetype instead\r\n       */\r\n      responseTostoretype(response, storetype) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              if (storetype === undefined) {\r\n                  return response;\r\n              }\r\n              else if (storetype.toLowerCase() === \"json\") {\r\n                  return yield response.json();\r\n              }\r\n              else if (storetype.toLowerCase() === \"arraybuffer\") {\r\n                  return yield response.arrayBuffer();\r\n              }\r\n              else {\r\n                  console.error(\"Unknown storage type \" + storetype + \", returning raw response\");\r\n                  return response;\r\n              }\r\n          });\r\n      }\r\n      /**\r\n       * fetch the corresponding url object in response or stored object format\r\n       * @param url url\r\n       * @param storetype the storage type for indexedDB\r\n       * @param signal an optional abort signal to abort fetching\r\n       * @returns response in json, arraybuffer or pure response format\r\n       */\r\n      fetchWithCache(url, storetype, signal) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              yield this.addToCache(url, storetype, signal);\r\n              const result = yield this.cache.match(new Request(url));\r\n              if (result === undefined) {\r\n                  // Already called `addToCache()`, should expect the request in cache.\r\n                  throw Error(\"Cannot fetch \" + url);\r\n              }\r\n              return yield this.responseTostoretype(result, storetype);\r\n          });\r\n      }\r\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n      addToCache(url, storetype, signal) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              const request = new Request(url, signal ? { signal } : undefined);\r\n              if (this.cache === undefined) {\r\n                  this.cache = yield caches.open(this.scope);\r\n              }\r\n              const result = yield this.cache.match(request);\r\n              if (result === undefined) {\r\n                  yield this.cache.add(request);\r\n              }\r\n          });\r\n      }\r\n      /**\r\n       * Determine if all keys exist in the cache\r\n       * @param keys the url key list of the strings\r\n       * @returns boolean value indicate if all keys are in cache\r\n       */\r\n      hasAllKeys(keys) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              if (this.cache === undefined) {\r\n                  this.cache = yield caches.open(this.scope);\r\n              }\r\n              return this.cache.keys()\r\n                  .then(requests => requests.map(request => request.url))\r\n                  .then(cacheKeys => keys.every(key => cacheKeys.indexOf(key) !== -1))\r\n                  .catch(() => false);\r\n          });\r\n      }\r\n      /**\r\n       * Delete the corresponding url object in cache\r\n       * @param url the corresponding url object to be deleted\r\n       */\r\n      deleteInCache(url) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              if (this.cache === undefined) {\r\n                  this.cache = yield caches.open(this.scope);\r\n              }\r\n              yield this.cache.delete(url);\r\n          });\r\n      }\r\n  }\r\n  /**\r\n   * Cache by IndexedDB to support caching model data\r\n   */\r\n  class ArtifactIndexedDBCache {\r\n      constructor(dbName) {\r\n          this.dbVersion = 1;\r\n          this.dbName = dbName;\r\n      }\r\n      /**\r\n       * Init the indexed DB database if it is not initialized.\r\n       */\r\n      initDB() {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              if (this.db != null) {\r\n                  return; // the db is already inialized\r\n              }\r\n              return new Promise((resolve, reject) => {\r\n                  const request = indexedDB.open(this.dbName, this.dbVersion);\r\n                  request.onupgradeneeded = (event) => {\r\n                      this.db = event.target.result;\r\n                      if (!this.db.objectStoreNames.contains('urls')) {\r\n                          this.db.createObjectStore('urls', { keyPath: 'url' });\r\n                      }\r\n                  };\r\n                  request.onsuccess = (event) => {\r\n                      this.db = event.target.result;\r\n                      resolve();\r\n                  };\r\n                  request.onerror = (event) => {\r\n                      console.error(\"Database error: \", event.target.error);\r\n                      reject(event.target.error);\r\n                  };\r\n              });\r\n          });\r\n      }\r\n      /**\r\n       * Check if current url object is in indexedDB or not\r\n       * @param url the url link\r\n       * @returns boolean indicate if url object in indexedDB\r\n       */\r\n      isUrlInDB(url) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              return new Promise((resolve, reject) => {\r\n                  var _a;\r\n                  const transaction = (_a = this.db) === null || _a === void 0 ? void 0 : _a.transaction(['urls'], 'readonly');\r\n                  if (transaction === undefined) {\r\n                      return false;\r\n                  }\r\n                  const store = transaction.objectStore('urls');\r\n                  const request = store.get(url);\r\n                  request.onsuccess = () => {\r\n                      resolve(request.result !== undefined);\r\n                  };\r\n                  request.onerror = (event) => {\r\n                      reject(event.target.error);\r\n                  };\r\n              });\r\n          });\r\n      }\r\n      asyncGetHelper(url) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              return new Promise((resolve, reject) => {\r\n                  var _a;\r\n                  let result;\r\n                  const transaction = (_a = this.db) === null || _a === void 0 ? void 0 : _a.transaction(['urls'], 'readonly');\r\n                  if (transaction === undefined) {\r\n                      return false;\r\n                  }\r\n                  transaction.oncomplete = () => resolve(result);\r\n                  transaction.onerror = () => reject(transaction.error);\r\n                  const objectStore = transaction.objectStore('urls');\r\n                  const getRequest = objectStore.get(url);\r\n                  getRequest.onsuccess = () => {\r\n                      result = getRequest.result;\r\n                  };\r\n              });\r\n          });\r\n      }\r\n      fetchWithCache(url, storetype, signal) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              yield this.addToCache(url, storetype, signal);\r\n              let result = yield this.asyncGetHelper(url);\r\n              if (result === null) {\r\n                  // previously null data in cache or somehow failed to add to cache, delete and retry\r\n                  yield this.deleteInCache(url);\r\n                  yield this.addToCache(url, storetype);\r\n                  result = yield this.asyncGetHelper(url);\r\n              }\r\n              if (result != null && typeof result === \"object\" && \"data\" in result) {\r\n                  // `storetype` not used here because the data stored in indexedDB is already in that type\r\n                  return result.data;\r\n              }\r\n              throw Error(\"ArtifactIndexedDBCache failed to fetch: \" + url);\r\n          });\r\n      }\r\n      addToIndexedDB(url, response, storetype) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              yield this.initDB();\r\n              let data;\r\n              // IndexedDB, unlike the Cache API, stores the actual data object, so we convert reponse here.\r\n              if (storetype != undefined) {\r\n                  if (storetype.toLowerCase() === \"json\") {\r\n                      data = yield response.json();\r\n                  }\r\n                  else if (storetype.toLocaleLowerCase() === \"arraybuffer\") {\r\n                      data = yield response.arrayBuffer();\r\n                  }\r\n                  else {\r\n                      throw Error(\"Unsupported storetyp for IndexedDB: \" + storetype);\r\n                  }\r\n              }\r\n              return new Promise((resolve, reject) => {\r\n                  var _a;\r\n                  const transaction = (_a = this.db) === null || _a === void 0 ? void 0 : _a.transaction(['urls'], 'readwrite');\r\n                  if (transaction === undefined) {\r\n                      return;\r\n                  }\r\n                  const store = transaction.objectStore('urls');\r\n                  const request = store.add({ data, url }); // Index DB follows a {value, key} format, instead of {key, value} format!\r\n                  request.onsuccess = () => resolve();\r\n                  request.onerror = (event) => reject(event.target.error);\r\n              });\r\n          });\r\n      }\r\n      addToCache(url, storetype, signal) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              yield this.initDB(); // await the initDB process\r\n              // If already cached, nothing to do\r\n              const isInDB = yield this.isUrlInDB(url);\r\n              if (isInDB) {\r\n                  return;\r\n              }\r\n              try {\r\n                  const response = yield fetch(url, signal ? { signal } : undefined);\r\n                  if (!response.ok) {\r\n                      throw new Error('Network response was not ok');\r\n                  }\r\n                  const response_copy = response.clone();\r\n                  yield this.addToIndexedDB(url, response_copy, storetype);\r\n              }\r\n              catch (error) {\r\n                  throw Error(\"Failed to store \" + url + \" with error: \" + error);\r\n              }\r\n          });\r\n      }\r\n      hasAllKeys(keys) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              yield this.initDB(); // Ensure the DB is initialized\r\n              if (!this.db) {\r\n                  throw new Error('Database is not initialized');\r\n              }\r\n              return new Promise((resolve, reject) => {\r\n                  const transaction = this.db.transaction(['urls'], 'readonly');\r\n                  const store = transaction.objectStore('urls');\r\n                  const promises = keys.map(key => {\r\n                      return new Promise((resolve) => {\r\n                          const request = store.get(key);\r\n                          request.onsuccess = () => {\r\n                              if (request.result === undefined) {\r\n                                  resolve(false); // Key not found, resolve with false\r\n                              }\r\n                              else {\r\n                                  resolve(true); // Key found, resolve with true\r\n                              }\r\n                          };\r\n                          request.onerror = () => {\r\n                              resolve(false); // On error, resolve as if the key was not found\r\n                          };\r\n                      });\r\n                  });\r\n                  Promise.all(promises).then(results => {\r\n                      const allExist = results.every(exists => exists);\r\n                      resolve(allExist);\r\n                  }).catch(error => {\r\n                      reject(error); // Reject the main promise if any of the promises are rejected\r\n                  });\r\n              });\r\n          });\r\n      }\r\n      deleteInCache(url) {\r\n          var _a;\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              yield this.initDB(); // Make sure the DB is initialized\r\n              const transaction = (_a = this.db) === null || _a === void 0 ? void 0 : _a.transaction(['urls'], 'readwrite');\r\n              if (transaction === undefined) {\r\n                  return;\r\n              }\r\n              const store = transaction.objectStore('urls');\r\n              const request = store.delete(url);\r\n              // Await completion of the delete request\r\n              yield new Promise((resolve, reject) => {\r\n                  request.onsuccess = () => resolve();\r\n                  request.onerror = () => reject(request.error);\r\n              });\r\n              return;\r\n          });\r\n      }\r\n  }\r\n  /**\r\n   * Function to check if NDarray is in Cache or not\r\n   *\r\n   * @param tensorCacheUrl The cache url which links to the Tensor\r\n   * @param cacheScope The scope identifier of the cache\r\n   * @param cacheType The type of the cache: \"cache\" or \"indexedDB\"\r\n   * @returns the result if the cache has Tensor\r\n   */\r\n  function hasTensorInCache(tensorCacheUrl, cacheScope = \"tvmjs\", cacheType = \"cache\") {\r\n      return __awaiter(this, void 0, void 0, function* () {\r\n          let artifactCache;\r\n          if (cacheType.toLowerCase() === \"cache\") {\r\n              artifactCache = new ArtifactCache(cacheScope);\r\n          }\r\n          else if (cacheType.toLowerCase() == \"indexeddb\") {\r\n              artifactCache = new ArtifactIndexedDBCache(cacheScope);\r\n          }\r\n          else {\r\n              console.error(\"Unsupported cacheType: \" + cacheType + \", using default ArtifactCache.\");\r\n              artifactCache = new ArtifactCache(cacheScope);\r\n          }\r\n          const jsonUrl = new URL(\"tensor-cache.json\", tensorCacheUrl).href;\r\n          const hasJsonUrlInCache = yield artifactCache.hasAllKeys([jsonUrl]);\r\n          if (!hasJsonUrlInCache) {\r\n              return false;\r\n          }\r\n          let list = yield artifactCache.fetchWithCache(jsonUrl, \"json\");\r\n          list = list[\"records\"];\r\n          return yield artifactCache.hasAllKeys(list.map(key => new URL(key.dataPath, tensorCacheUrl).href));\r\n      });\r\n  }\r\n  /**\r\n   * Given cacheUrl, search up items to delete based on cacheUrl/tensor-cache.json\r\n   *\r\n   * @param cacheUrl The cacheUrl for the items\r\n   * @param cacheScope The scope identifier of the cache\r\n   * @param cacheType The type of the cache: \"cache\" or \"indexedDB\"\r\n   */\r\n  function deleteTensorCache(cacheUrl, cacheScope = \"tvmjs\", cacheType = \"cache\") {\r\n      return __awaiter(this, void 0, void 0, function* () {\r\n          let artifactCache;\r\n          if (cacheType.toLowerCase() === \"cache\") {\r\n              artifactCache = new ArtifactCache(cacheScope);\r\n          }\r\n          else if (cacheType.toLowerCase() == \"indexeddb\") {\r\n              artifactCache = new ArtifactIndexedDBCache(cacheScope);\r\n          }\r\n          else {\r\n              console.error(\"Unsupported cacheType: \" + cacheType + \", using default ArtifactCache.\");\r\n              artifactCache = new ArtifactCache(cacheScope);\r\n          }\r\n          const jsonUrl = new URL(\"tensor-cache.json\", cacheUrl).href;\r\n          const list = yield artifactCache.fetchWithCache(jsonUrl, \"json\");\r\n          const arrayentry = list[\"records\"];\r\n          const processShard = (i) => __awaiter(this, void 0, void 0, function* () {\r\n              const dataUrl = new URL(arrayentry[i].dataPath, cacheUrl).href;\r\n              yield artifactCache.deleteInCache(dataUrl);\r\n          });\r\n          yield Promise.all(arrayentry.map((_, index) => processShard(index)));\r\n      });\r\n  }\n\n  function EmccWASI() {\n  var Module=typeof Module!=\"undefined\"?Module:{};var __wasmLib={};function __wasmLibInstantiateWasm(imports,successCallback){__wasmLib.imports=imports;__wasmLib.successCallback=successCallback;}function __wasmLibStart(wasmInstance){__wasmLib.successCallback(wasmInstance);}__wasmLib.start=__wasmLibStart;var Module={\"instantiateWasm\":__wasmLibInstantiateWasm,\"wasmLibraryProvider\":__wasmLib};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var nodePath=require(\"path\");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+\"/\";}else {scriptDirectory=__dirname+\"/\";}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:\"utf8\")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret);}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:\"utf8\",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data);});};if(!Module[\"thisProgram\"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\\\/g,\"/\");}arguments_=process.argv.slice(2);if(typeof module!=\"undefined\"){module[\"exports\"]=Module;}process.on(\"uncaughtException\",ex=>{if(ex!==\"unwind\"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href;}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src;}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\";}else {scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1);}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)};}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror();};xhr.onerror=onerror;xhr.send(null);};}}else;var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP32,HEAPU32,HEAP64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=new Float32Array(b);Module[\"HEAPF64\"]=new Float64Array(b);Module[\"HEAP64\"]=HEAP64=new BigInt64Array(b);Module[\"HEAPU64\"]=new BigUint64Array(b);}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift());}}callRuntimeCallbacks(__ATPRERUN__);}function initRuntime(){if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;callRuntimeCallbacks(__ATINIT__);}function preMain(){callRuntimeCallbacks(__ATMAIN__);}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift());}}callRuntimeCallbacks(__ATPOSTRUN__);}function addOnPreRun(cb){__ATPRERUN__.unshift(cb);}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb);}var runDependencies=0;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies);}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback();}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith(\"file://\");var wasmBinaryFile;wasmBinaryFile=\"tvmjs_runtime.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile);}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw \"both async and sync fetching of the wasm failed\"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==\"function\"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:\"same-origin\"}).then(response=>{if(!response[\"ok\"]){throw `failed to load wasm binary file at '${binaryFile}'`}return response[\"arrayBuffer\"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject);})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason);})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch==\"function\"){return fetch(binaryFile,{credentials:\"same-origin\"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={\"env\":wasmImports,\"wasi_snapshot_preview1\":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=Asyncify.instrumentWasmExports(wasmExports);wasmMemory=wasmExports[\"memory\"];updateMemoryViews();removeRunDependency();return wasmExports}addRunDependency();function receiveInstantiationResult(result){receiveInstance(result[\"instance\"]);}if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return {}}function ExitStatus(status){this.name=\"ExitStatus\";this.message=`Program terminated with exit(${status})`;this.status=status;}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module);}};var noExitRuntime=Module[\"noExitRuntime\"]||true;function _TVMFFIWasmFunctionDeleter(){abort(\"missing function: TVMFFIWasmFunctionDeleter\");}_TVMFFIWasmFunctionDeleter.stub=true;function _TVMFFIWasmSafeCall(){abort(\"missing function: TVMFFIWasmSafeCall\");}_TVMFFIWasmSafeCall.stub=true;function __ZN3tvm7runtime9threading10NumThreadsEv(){abort(\"missing function: _ZN3tvm7runtime9threading10NumThreadsEv\");}__ZN3tvm7runtime9threading10NumThreadsEv.stub=true;function __ZN3tvm7runtime9threading15ResetThreadPoolEv(){abort(\"missing function: _ZN3tvm7runtime9threading15ResetThreadPoolEv\");}__ZN3tvm7runtime9threading15ResetThreadPoolEv.stub=true;var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var checkWasiClock=clock_id=>clock_id==0||clock_id==1||clock_id==2||clock_id==3;var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;var bigintToI53Checked=num=>num<MIN_INT53||num>MAX_INT53?NaN:Number(num);function _clock_time_get(clk_id,ignored_precision,ptime){if(!checkWasiClock(clk_id)){return 28}var now;if(clk_id===0){now=Date.now();}else {now=_emscripten_get_now();}var nsec=Math.round(now*1e3*1e3);HEAP32[ptime>>2]=nsec>>>0;HEAP32[ptime+4>>2]=nsec/Math.pow(2,32)>>>0;return 0}var _emscripten_notify_memory_growth=memoryIndex=>{updateMemoryViews();};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={\"USER\":\"web_user\",\"LOGNAME\":\"web_user\",\"PATH\":\"/\",\"PWD\":\"/\",\"HOME\":\"/home/web_user\",\"LANG\":lang,\"_\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x];}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`);}getEnvStrings.strings=strings;}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){HEAP8[buffer++]=str.charCodeAt(i);}HEAP8[buffer]=0;};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1;});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1);}else if(last===\"..\"){parts.splice(i,1);up++;}else if(up){parts.splice(i,1);up--;}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\");}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\";}if(path&&trailingSlash){path+=\"/\";}return (isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return \".\"}if(dir){dir=dir.substr(0,dir.length-1);}return root+dir},basename:path=>{if(path===\"/\")return \"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>{if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require(\"crypto\");var randomFillSync=crypto_module[\"randomFillSync\"];if(randomFillSync){return view=>crypto_module[\"randomFillSync\"](view)}var randomBytes=crypto_module[\"randomBytes\"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort(\"initRandomDevice\");};var randomFill=view=>(randomFill=initRandomFill())(view);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).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=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<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\");}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")}};var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else {u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63;}if(u0<65536){str+=String.fromCharCode(u0);}else {var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++;}else if(c<=2047){len+=2;}else if(c>=55296&&c<=57343){len+=4;++i;}else {len+=3;}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023;}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u;}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63;}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}else {if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var 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);}catch(e){if(e.toString().includes(\"EOF\"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString(\"utf-8\");}else {result=null;}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\";}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\";}}if(!result){return null}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: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;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty);}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i]);}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now();}return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[];}else {if(val!=0)tty.output.push(val);}},fsync(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));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,0));tty.output=[];}else {if(val!=0)tty.output.push(val);}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[];}}}};var mmapAlloc=size=>{abort();};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16384|511,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,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={};}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null;}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream;}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream;}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp;}return node},getFileDataAsTypedArray(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<CAPACITY_DOUBLING_MAX?2:1.125)>>>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.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode;}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp;}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size);}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name);}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir;},unlink(parent,name){delete parent.contents[name];parent.timestamp=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.timestamp=Date.now();},readdir(node){var entries=[\".\",\"..\"];for(var key of Object.keys(node.contents)){entries.push(key);}return entries},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);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset);}else {for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];}return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false;}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position);}else {for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i];}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position;}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes;}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length);},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset;}else {if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length);}else {contents=Array.prototype.slice.call(contents,position,position+length);}}allocated=true;ptr=mmapAlloc();if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr);}return {ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):\"\";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency();},event=>{if(onerror){onerror();}else {throw `Loading data file \"${url}\" failed.`}});if(dep)addRunDependency();};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn);};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true;}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn);}onload?.();removeRunDependency();}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency();})){return}finish(byteArray);}addRunDependency();if(typeof url==\"string\"){asyncLoad(url,processData,onerror);}else {processData(url);}};var FS_modeStringToFlags=str=>{var flagModes={\"r\":0,\"r+\":2,\"w\":512|64|1,\"w+\":512|64|2,\"a\":1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name=\"ErrnoError\";this.errno=errno;}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.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{constructor(parent,name,mode,rdev){if(!parent){parent=this;}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146;}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={}){path=PATH_FS.resolve(path);if(!path)return {path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root;}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return {path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent;}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0;}return (parentid+hash>>>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){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node);},isRoot(node){return node===node.parent},isMountpoint(node){return !!node.mounted},isFile(mode){return (mode&61440)===32768},isDir(mode){return (mode&61440)===16384},isLink(mode){return (mode&61440)===40960},isChrdev(mode){return (mode&61440)===8192},isBlkdev(mode){return (mode&61440)===24576},isFIFO(mode){return (mode&61440)===4096},isSocket(mode){return (mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\";}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){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){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name);}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else {if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},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){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},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){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null);}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done);});},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot;}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount);}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current);}current=next;}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1);},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];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);}catch(e){throw e}finally{FS.hashAddNode(old_node);}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat(path){return FS.stat(path,true)},chmod(path,mode,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node;}else {node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()});},lchmod(path,mode){FS.chmod(path,mode,true);},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode);},chown(path,uid,gid,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node;}else {node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()});},lchown(path,uid,gid){FS.chown(path,uid,gid,true);},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid);},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;}else {node=path;}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()});},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len);},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)});},open(path,flags,mode){if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS_modeStringToFlags(flags):flags;mode=typeof mode==\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768;}else {mode=0;}var node;if(typeof path==\"object\"){node=path;}else {path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node;}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else {node=FS.mknod(path,mode,0);created=true;}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512;}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0);}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream);}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream);}}catch(e){throw e}finally{FS.closeStream(stream.fd);}stream.fd=null;},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2);}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position;}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length);},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error(`Invalid encoding type \"${opts.encoding}\"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0);}else if(opts.encoding===\"binary\"){ret=buf;}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn);}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn);}else {throw new Error(\"Unsupported data type\")}FS.close(stream);},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path;},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\");},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength;}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\");},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\");},createStandardStreams(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"]);}else {FS.symlink(\"/dev/tty\",\"/dev/stdin\");}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"]);}else {FS.symlink(\"/dev/tty\",\"/dev/stdout\");}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"]);}else {FS.symlink(\"/dev/tty1\",\"/dev/stderr\");}FS.open(\"/dev/stdin\",0);FS.open(\"/dev/stdout\",1);FS.open(\"/dev/stderr\",1);},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\";});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS};},init(input,output,error){FS.init.initialized=true;Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams();},quit(){FS.init.initialized=false;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}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){}parent=current;}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent;}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr;}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode);}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false;},close(stream){if(output?.buffer?.length){output(10);}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input();}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result;}if(bytesRead){stream.node.timestamp=Date.now();}return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i]);}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now();}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length;}catch(e){throw new FS.ErrnoError(29)}}else {throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{constructor(){this.lengthKnown=false;this.chunks=[];}get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}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))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end);}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\");}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true;}get length(){if(!this.lengthKnown){this.cacheLength();}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength();}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray};}else {var properties={isDevice:false,url:url};}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents;}else if(properties.url){node.contents=null;node.url=properties.url;}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...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);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i];}}else {for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i);}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc();if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return {ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\";var SYSCALLS={DEFAULT_POLLMASK:5,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 PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;HEAP64[buf+24>>3]=BigInt(stat.size);HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=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));HEAPU32[buf+48>>2]=atime%1e3*1e3;HEAP64[buf+56>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>2]=mtime%1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>2]=ctime%1e3*1e3;HEAP64[buf+88>>3]=BigInt(stat.ino);return 0},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);},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};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<iovcnt;i++){var ptr=HEAPU32[iov>>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<len)break;if(typeof offset!==\"undefined\"){offset+=curr;}}return ret};function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=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);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<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return -1;ret+=curr;if(typeof offset!==\"undefined\"){offset+=curr;}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}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;_proc_exit(status);};var handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e);};var runAndAbortIfError=func=>{try{return func()}catch(e){abort(e);}};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS);}catch(e){handleException(e);}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit();}catch(e){handleException(e);}};var Asyncify={instrumentWasmImports(imports){var importPattern=/^(invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports)){original.sig;if(typeof original==\"function\"){original.isAsync||importPattern.test(x);}}},instrumentWasmExports(exports){var ret={};for(let[x,original]of Object.entries(exports)){if(typeof original==\"function\"){ret[x]=(...args)=>{Asyncify.exportCallStack.push(x);try{return original(...args)}finally{if(!ABORT){Asyncify.exportCallStack.pop();Asyncify.maybeStopUnwind();}}};}else {ret[x]=original;}}return ret},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:4096,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName;}return id},maybeStopUnwind(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_unwind);if(typeof Fibers!=\"undefined\"){Fibers.trampoline();}}},whenDone(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject};})},allocateData(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader(ptr,stack,stackSize){HEAPU32[ptr>>2]=stack;HEAPU32[ptr+4>>2]=stack+stackSize;},setDataRewindFunc(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId;},getDataRewindFunc(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];var func=wasmExports[name];return func},doRewind(ptr){var start=Asyncify.getDataRewindFunc(ptr);return start()},handleSleep(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync((handleSleepReturnValue=0)=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.resume();}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData);}catch(err){asyncWasmReturnValue=err;isError=true;}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true;}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.pause();}runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData));}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_rewind);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(callUserCallback);}else {abort(`invalid state: ${Asyncify.state}`);}return Asyncify.handleSleepReturnValue},handleAsync(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp);})}};FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={TVMFFIWasmFunctionDeleter:_TVMFFIWasmFunctionDeleter,TVMFFIWasmSafeCall:_TVMFFIWasmSafeCall,_ZN3tvm7runtime9threading10NumThreadsEv:__ZN3tvm7runtime9threading10NumThreadsEv,_ZN3tvm7runtime9threading15ResetThreadPoolEv:__ZN3tvm7runtime9threading15ResetThreadPoolEv,clock_time_get:_clock_time_get,emscripten_notify_memory_growth:_emscripten_notify_memory_growth,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,proc_exit:_proc_exit};var wasmExports=createWasm();var _malloc=a0=>(_malloc=wasmExports[\"malloc\"])(a0);Module[\"_TVMFFIBacktrace\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFIBacktrace\"]=wasmExports[\"TVMFFIBacktrace\"])(a0,a1,a2,a3);Module[\"__ZN3tvm7runtime6detail12LogFatalImplERKNSt3__212basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEiSA_\"]=(a0,a1,a2)=>(Module[\"__ZN3tvm7runtime6detail12LogFatalImplERKNSt3__212basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEiSA_\"]=wasmExports[\"_ZN3tvm7runtime6detail12LogFatalImplERKNSt3__212basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEiSA_\"])(a0,a1,a2);Module[\"_TVMFFIEnvSetStream\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFIEnvSetStream\"]=wasmExports[\"TVMFFIEnvSetStream\"])(a0,a1,a2,a3);Module[\"_TVMFFIEnvGetStream\"]=(a0,a1)=>(Module[\"_TVMFFIEnvGetStream\"]=wasmExports[\"TVMFFIEnvGetStream\"])(a0,a1);Module[\"_TVMBackendGetFuncFromEnv\"]=(a0,a1,a2)=>(Module[\"_TVMBackendGetFuncFromEnv\"]=wasmExports[\"TVMBackendGetFuncFromEnv\"])(a0,a1,a2);Module[\"_TVMFFIEnvModLookupFromImports\"]=(a0,a1,a2)=>(Module[\"_TVMFFIEnvModLookupFromImports\"]=wasmExports[\"TVMFFIEnvModLookupFromImports\"])(a0,a1,a2);Module[\"_TVMBackendAllocWorkspace\"]=(a0,a1,a2,a3,a4)=>(Module[\"_TVMBackendAllocWorkspace\"]=wasmExports[\"TVMBackendAllocWorkspace\"])(a0,a1,a2,a3,a4);Module[\"_TVMBackendFreeWorkspace\"]=(a0,a1,a2)=>(Module[\"_TVMBackendFreeWorkspace\"]=wasmExports[\"TVMBackendFreeWorkspace\"])(a0,a1,a2);Module[\"_TVMBackendRunOnce\"]=(a0,a1,a2,a3)=>(Module[\"_TVMBackendRunOnce\"]=wasmExports[\"TVMBackendRunOnce\"])(a0,a1,a2,a3);Module[\"_TVMFFIDataTypeToString\"]=(a0,a1)=>(Module[\"_TVMFFIDataTypeToString\"]=wasmExports[\"TVMFFIDataTypeToString\"])(a0,a1);Module[\"__ZN3tvm7runtime6Tensor5EmptyENS_3ffi5ShapeE10DLDataType8DLDeviceNS2_8OptionalINS2_6StringEvEE\"]=(a0,a1,a2,a3,a4)=>(Module[\"__ZN3tvm7runtime6Tensor5EmptyENS_3ffi5ShapeE10DLDataType8DLDeviceNS2_8OptionalINS2_6StringEvEE\"]=wasmExports[\"_ZN3tvm7runtime6Tensor5EmptyENS_3ffi5ShapeE10DLDataType8DLDeviceNS2_8OptionalINS2_6StringEvEE\"])(a0,a1,a2,a3,a4);Module[\"__ZN3tvm7runtime6Tensor11CopyToBytesEPK8DLTensorPvmS5_\"]=(a0,a1,a2,a3)=>(Module[\"__ZN3tvm7runtime6Tensor11CopyToBytesEPK8DLTensorPvmS5_\"]=wasmExports[\"_ZN3tvm7runtime6Tensor11CopyToBytesEPK8DLTensorPvmS5_\"])(a0,a1,a2,a3);Module[\"__ZN3tvm7runtime5Timer5StartE8DLDevice\"]=(a0,a1)=>(Module[\"__ZN3tvm7runtime5Timer5StartE8DLDevice\"]=wasmExports[\"_ZN3tvm7runtime5Timer5StartE8DLDevice\"])(a0,a1);Module[\"_TVMFFIFunctionGetGlobal\"]=(a0,a1)=>(Module[\"_TVMFFIFunctionGetGlobal\"]=wasmExports[\"TVMFFIFunctionGetGlobal\"])(a0,a1);Module[\"_TVMFFITypeGetOrAllocIndex\"]=(a0,a1,a2,a3,a4,a5)=>(Module[\"_TVMFFITypeGetOrAllocIndex\"]=wasmExports[\"TVMFFITypeGetOrAllocIndex\"])(a0,a1,a2,a3,a4,a5);Module[\"__ZN3tvm7runtime6detail14LogMessageImplERKNSt3__212basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEiiSA_\"]=(a0,a1,a2,a3)=>(Module[\"__ZN3tvm7runtime6detail14LogMessageImplERKNSt3__212basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEiiSA_\"]=wasmExports[\"_ZN3tvm7runtime6detail14LogMessageImplERKNSt3__212basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEiiSA_\"])(a0,a1,a2,a3);Module[\"__ZNK3tvm7runtime6Tensor10CreateViewENS_3ffi5ShapeE10DLDataTypey\"]=(a0,a1,a2,a3,a4)=>(Module[\"__ZNK3tvm7runtime6Tensor10CreateViewENS_3ffi5ShapeE10DLDataTypey\"]=wasmExports[\"_ZNK3tvm7runtime6Tensor10CreateViewENS_3ffi5ShapeE10DLDataTypey\"])(a0,a1,a2,a3,a4);Module[\"__ZNK3tvm7runtime6Tensor11CopyToBytesEPvm\"]=(a0,a1,a2)=>(Module[\"__ZNK3tvm7runtime6Tensor11CopyToBytesEPvm\"]=wasmExports[\"_ZNK3tvm7runtime6Tensor11CopyToBytesEPvm\"])(a0,a1,a2);Module[\"__ZN3tvm7runtime6Tensor13CopyFromBytesEPKvm\"]=(a0,a1,a2)=>(Module[\"__ZN3tvm7runtime6Tensor13CopyFromBytesEPKvm\"]=wasmExports[\"_ZN3tvm7runtime6Tensor13CopyFromBytesEPKvm\"])(a0,a1,a2);Module[\"__ZNK3tvm7runtime6Tensor6CopyToERK8DLDeviceNS_3ffi8OptionalINS5_6StringEvEE\"]=(a0,a1,a2,a3)=>(Module[\"__ZNK3tvm7runtime6Tensor6CopyToERK8DLDeviceNS_3ffi8OptionalINS5_6StringEvEE\"]=wasmExports[\"_ZNK3tvm7runtime6Tensor6CopyToERK8DLDeviceNS_3ffi8OptionalINS5_6StringEvEE\"])(a0,a1,a2,a3);Module[\"__ZN3tvm7runtime6Tensor10CopyFromToEPK8DLTensorPS2_Pv\"]=(a0,a1,a2)=>(Module[\"__ZN3tvm7runtime6Tensor10CopyFromToEPK8DLTensorPS2_Pv\"]=wasmExports[\"_ZN3tvm7runtime6Tensor10CopyFromToEPK8DLTensorPS2_Pv\"])(a0,a1,a2);Module[\"_TVMFFIDataTypeFromString\"]=(a0,a1)=>(Module[\"_TVMFFIDataTypeFromString\"]=wasmExports[\"TVMFFIDataTypeFromString\"])(a0,a1);Module[\"_TVMFFIErrorSetRaisedFromCStr\"]=(a0,a1)=>(Module[\"_TVMFFIErrorSetRaisedFromCStr\"]=wasmExports[\"TVMFFIErrorSetRaisedFromCStr\"])(a0,a1);Module[\"_TVMFFIErrorSetRaisedFromCStrParts\"]=(a0,a1,a2)=>(Module[\"_TVMFFIErrorSetRaisedFromCStrParts\"]=wasmExports[\"TVMFFIErrorSetRaisedFromCStrParts\"])(a0,a1,a2);Module[\"_TVMFFIErrorSetRaised\"]=a0=>(Module[\"_TVMFFIErrorSetRaised\"]=wasmExports[\"TVMFFIErrorSetRaised\"])(a0);Module[\"_TVMFFIErrorMoveFromRaised\"]=a0=>(Module[\"_TVMFFIErrorMoveFromRaised\"]=wasmExports[\"TVMFFIErrorMoveFromRaised\"])(a0);Module[\"_TVMFFIErrorCreate\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFIErrorCreate\"]=wasmExports[\"TVMFFIErrorCreate\"])(a0,a1,a2,a3);Module[\"_TVMFFIEnvCheckSignals\"]=()=>(Module[\"_TVMFFIEnvCheckSignals\"]=wasmExports[\"TVMFFIEnvCheckSignals\"])();Module[\"_TVMFFIEnvRegisterCAPI\"]=(a0,a1)=>(Module[\"_TVMFFIEnvRegisterCAPI\"]=wasmExports[\"TVMFFIEnvRegisterCAPI\"])(a0,a1);Module[\"_TVMFFIEnvSetDLPackManagedTensorAllocator\"]=(a0,a1,a2)=>(Module[\"_TVMFFIEnvSetDLPackManagedTensorAllocator\"]=wasmExports[\"TVMFFIEnvSetDLPackManagedTensorAllocator\"])(a0,a1,a2);Module[\"_TVMFFIEnvGetDLPackManagedTensorAllocator\"]=()=>(Module[\"_TVMFFIEnvGetDLPackManagedTensorAllocator\"]=wasmExports[\"TVMFFIEnvGetDLPackManagedTensorAllocator\"])();Module[\"_TVMFFIEnvTensorAlloc\"]=(a0,a1)=>(Module[\"_TVMFFIEnvTensorAlloc\"]=wasmExports[\"TVMFFIEnvTensorAlloc\"])(a0,a1);Module[\"__ZN3tvm3ffi6Module19VisitContextSymbolsERKNS0_13TypedFunctionIFvNS0_6StringEPvEEE\"]=a0=>(Module[\"__ZN3tvm3ffi6Module19VisitContextSymbolsERKNS0_13TypedFunctionIFvNS0_6StringEPvEEE\"]=wasmExports[\"_ZN3tvm3ffi6Module19VisitContextSymbolsERKNS0_13TypedFunctionIFvNS0_6StringEPvEEE\"])(a0);Module[\"_TVMFFIEnvModRegisterContextSymbol\"]=(a0,a1)=>(Module[\"_TVMFFIEnvModRegisterContextSymbol\"]=wasmExports[\"TVMFFIEnvModRegisterContextSymbol\"])(a0,a1);Module[\"_TVMFFIEnvModRegisterSystemLibSymbol\"]=(a0,a1)=>(Module[\"_TVMFFIEnvModRegisterSystemLibSymbol\"]=wasmExports[\"TVMFFIEnvModRegisterSystemLibSymbol\"])(a0,a1);Module[\"__ZN3tvm3ffi6Module12LoadFromFileERKNS0_6StringE\"]=(a0,a1)=>(Module[\"__ZN3tvm3ffi6Module12LoadFromFileERKNS0_6StringE\"]=wasmExports[\"_ZN3tvm3ffi6Module12LoadFromFileERKNS0_6StringE\"])(a0,a1);Module[\"_TVMFFIFunctionCreate\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFIFunctionCreate\"]=wasmExports[\"TVMFFIFunctionCreate\"])(a0,a1,a2,a3);Module[\"_TVMFFIAnyViewToOwnedAny\"]=(a0,a1)=>(Module[\"_TVMFFIAnyViewToOwnedAny\"]=wasmExports[\"TVMFFIAnyViewToOwnedAny\"])(a0,a1);Module[\"_TVMFFIFunctionSetGlobal\"]=(a0,a1,a2)=>(Module[\"_TVMFFIFunctionSetGlobal\"]=wasmExports[\"TVMFFIFunctionSetGlobal\"])(a0,a1,a2);Module[\"_TVMFFIFunctionSetGlobalFromMethodInfo\"]=(a0,a1)=>(Module[\"_TVMFFIFunctionSetGlobalFromMethodInfo\"]=wasmExports[\"TVMFFIFunctionSetGlobalFromMethodInfo\"])(a0,a1);Module[\"_TVMFFIFunctionCall\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFIFunctionCall\"]=wasmExports[\"TVMFFIFunctionCall\"])(a0,a1,a2,a3);Module[\"_TVMFFIGetVersion\"]=a0=>(Module[\"_TVMFFIGetVersion\"]=wasmExports[\"TVMFFIGetVersion\"])(a0);Module[\"_TVMFFIObjectDecRef\"]=a0=>(Module[\"_TVMFFIObjectDecRef\"]=wasmExports[\"TVMFFIObjectDecRef\"])(a0);Module[\"_TVMFFIObjectIncRef\"]=a0=>(Module[\"_TVMFFIObjectIncRef\"]=wasmExports[\"TVMFFIObjectIncRef\"])(a0);Module[\"_TVMFFIObjectCreateOpaque\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFIObjectCreateOpaque\"]=wasmExports[\"TVMFFIObjectCreateOpaque\"])(a0,a1,a2,a3);Module[\"_TVMFFITypeKeyToIndex\"]=(a0,a1)=>(Module[\"_TVMFFITypeKeyToIndex\"]=wasmExports[\"TVMFFITypeKeyToIndex\"])(a0,a1);Module[\"_TVMFFITypeRegisterField\"]=(a0,a1)=>(Module[\"_TVMFFITypeRegisterField\"]=wasmExports[\"TVMFFITypeRegisterField\"])(a0,a1);Module[\"_TVMFFITypeRegisterMethod\"]=(a0,a1)=>(Module[\"_TVMFFITypeRegisterMethod\"]=wasmExports[\"TVMFFITypeRegisterMethod\"])(a0,a1);Module[\"_TVMFFITypeRegisterMetadata\"]=(a0,a1)=>(Module[\"_TVMFFITypeRegisterMetadata\"]=wasmExports[\"TVMFFITypeRegisterMetadata\"])(a0,a1);Module[\"_TVMFFITypeRegisterAttr\"]=(a0,a1,a2)=>(Module[\"_TVMFFITypeRegisterAttr\"]=wasmExports[\"TVMFFITypeRegisterAttr\"])(a0,a1,a2);Module[\"_TVMFFIGetTypeAttrColumn\"]=a0=>(Module[\"_TVMFFIGetTypeAttrColumn\"]=wasmExports[\"TVMFFIGetTypeAttrColumn\"])(a0);Module[\"_TVMFFIGetTypeInfo\"]=a0=>(Module[\"_TVMFFIGetTypeInfo\"]=wasmExports[\"TVMFFIGetTypeInfo\"])(a0);Module[\"_TVMFFIStringFromByteArray\"]=(a0,a1)=>(Module[\"_TVMFFIStringFromByteArray\"]=wasmExports[\"TVMFFIStringFromByteArray\"])(a0,a1);Module[\"_TVMFFIBytesFromByteArray\"]=(a0,a1)=>(Module[\"_TVMFFIBytesFromByteArray\"]=wasmExports[\"TVMFFIBytesFromByteArray\"])(a0,a1);Module[\"_TVMFFITensorFromDLPack\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFITensorFromDLPack\"]=wasmExports[\"TVMFFITensorFromDLPack\"])(a0,a1,a2,a3);Module[\"_TVMFFITensorFromDLPackVersioned\"]=(a0,a1,a2,a3)=>(Module[\"_TVMFFITensorFromDLPackVersioned\"]=wasmExports[\"TVMFFITensorFromDLPackVersioned\"])(a0,a1,a2,a3);Module[\"_TVMFFITensorToDLPack\"]=(a0,a1)=>(Module[\"_TVMFFITensorToDLPack\"]=wasmExports[\"TVMFFITensorToDLPack\"])(a0,a1);Module[\"_TVMFFITensorToDLPackVersioned\"]=(a0,a1)=>(Module[\"_TVMFFITensorToDLPackVersioned\"]=wasmExports[\"TVMFFITensorToDLPackVersioned\"])(a0,a1);Module[\"_TVMFFITestingDummyTarget\"]=()=>(Module[\"_TVMFFITestingDummyTarget\"]=wasmExports[\"TVMFFITestingDummyTarget\"])();Module[\"__ZN3tvm7runtime6memory9Allocator10CreateViewERKNS1_6BufferENS_3ffi5ShapeE10DLDataTypeRKNSt3__212basic_stringIcNS9_11char_traitsIcEENS9_9allocatorIcEEEE\"]=(a0,a1,a2,a3,a4)=>(Module[\"__ZN3tvm7runtime6memory9Allocator10CreateViewERKNS1_6BufferENS_3ffi5ShapeE10DLDataTypeRKNSt3__212basic_stringIcNS9_11char_traitsIcEENS9_9allocatorIcEEEE\"]=wasmExports[\"_ZN3tvm7runtime6memory9Allocator10CreateViewERKNS1_6BufferENS_3ffi5ShapeE10DLDataTypeRKNSt3__212basic_stringIcNS9_11char_traitsIcEENS9_9allocatorIcEEEE\"])(a0,a1,a2,a3,a4);Module[\"__ZN3tvm7runtime6memory9Allocator8FreeViewE8DLDevicePv\"]=(a0,a1,a2)=>(Module[\"__ZN3tvm7runtime6memory9Allocator8FreeViewE8DLDevicePv\"]=wasmExports[\"_ZN3tvm7runtime6memory9Allocator8FreeViewE8DLDevicePv\"])(a0,a1,a2);Module[\"__ZN3tvm7runtime6memory7StorageC2ENS1_6BufferEPNS1_9AllocatorE\"]=(a0,a1,a2)=>(Module[\"__ZN3tvm7runtime6memory7StorageC2ENS1_6BufferEPNS1_9AllocatorE\"]=wasmExports[\"_ZN3tvm7runtime6memory7StorageC2ENS1_6BufferEPNS1_9AllocatorE\"])(a0,a1,a2);Module[\"__ZN3tvm7runtime6memory10StorageObj17AllocTensorScopedExNS_3ffi5ShapeE10DLDataTypeNS3_6StringE\"]=(a0,a1,a2,a3,a4,a5)=>(Module[\"__ZN3tvm7runtime6memory10StorageObj17AllocTensorScopedExNS_3ffi5ShapeE10DLDataTypeNS3_6StringE\"]=wasmExports[\"_ZN3tvm7runtime6memory10StorageObj17AllocTensorScopedExNS_3ffi5ShapeE10DLDataTypeNS3_6StringE\"])(a0,a1,a2,a3,a4,a5);Module[\"__ZN3tvm7runtime6memory10StorageObj11AllocTensorExNS_3ffi5ShapeE10DLDataType\"]=(a0,a1,a2,a3,a4)=>(Module[\"__ZN3tvm7runtime6memory10StorageObj11AllocTensorExNS_3ffi5ShapeE10DLDataType\"]=wasmExports[\"_ZN3tvm7runtime6memory10StorageObj11AllocTensorExNS_3ffi5ShapeE10DLDataType\"])(a0,a1,a2,a3,a4);Module[\"__ZN3tvm7runtime6memory13MemoryManager6GlobalEv\"]=()=>(Module[\"__ZN3tvm7runtime6memory13MemoryManager6GlobalEv\"]=wasmExports[\"_ZN3tvm7runtime6memory13MemoryManager6GlobalEv\"])();Module[\"__ZN3tvm7runtime6memory13MemoryManager20GetOrCreateAllocatorE8DLDeviceNS1_13AllocatorTypeE\"]=(a0,a1)=>(Module[\"__ZN3tvm7runtime6memory13MemoryManager20GetOrCreateAllocatorE8DLDeviceNS1_13AllocatorTypeE\"]=wasmExports[\"_ZN3tvm7runtime6memory13MemoryManager20GetOrCreateAllocatorE8DLDeviceNS1_13AllocatorTypeE\"])(a0,a1);Module[\"__ZN3tvm7runtime6memory13MemoryManager12GetAllocatorE8DLDeviceNS1_13AllocatorTypeE\"]=(a0,a1)=>(Module[\"__ZN3tvm7runtime6memory13MemoryManager12GetAllocatorE8DLDeviceNS1_13AllocatorTypeE\"]=wasmExports[\"_ZN3tvm7runtime6memory13MemoryManager12GetAllocatorE8DLDeviceNS1_13AllocatorTypeE\"])(a0,a1);Module[\"__ZN3tvm7runtime6memory9Allocator5EmptyENS_3ffi5ShapeE10DLDataType8DLDeviceNS3_8OptionalINS3_6StringEvEE\"]=(a0,a1,a2,a3,a4,a5)=>(Module[\"__ZN3tvm7runtime6memory9Allocator5EmptyENS_3ffi5ShapeE10DLDataType8DLDeviceNS3_8OptionalINS3_6StringEvEE\"]=wasmExports[\"_ZN3tvm7runtime6memory9Allocator5EmptyENS_3ffi5ShapeE10DLDataType8DLDeviceNS3_8OptionalINS3_6StringEvEE\"])(a0,a1,a2,a3,a4,a5);Module[\"__ZNK3tvm7runtime6memory9Allocator16AllowMemoryScopeERKNSt3__212basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE\"]=(a0,a1)=>(Module[\"__ZNK3tvm7runtime6memory9Allocator16AllowMemoryScopeERKNSt3__212basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE\"]=wasmExports[\"_ZNK3tvm7runtime6memory9Allocator16AllowMemoryScopeERKNSt3__212basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE\"])(a0,a1);Module[\"__ZN3tvm7runtime6memory9Allocator5AllocE8DLDeviceNS_3ffi5ShapeE10DLDataTypeRKNSt3__212basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEE\"]=(a0,a1,a2,a3,a4,a5)=>(Module[\"__ZN3tvm7runtime6memory9Allocator5AllocE8DLDeviceNS_3ffi5ShapeE10DLDataTypeRKNSt3__212basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEE\"]=wasmExports[\"_ZN3tvm7runtime6memory9Allocator5AllocE8DLDeviceNS_3ffi5ShapeE10DLDataTypeRKNSt3__212basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEE\"])(a0,a1,a2,a3,a4,a5);Module[\"__ZN3tvm7runtime6memory9Allocator5ClearEv\"]=a0=>(Module[\"__ZN3tvm7runtime6memory9Allocator5ClearEv\"]=wasmExports[\"_ZN3tvm7runtime6memory9Allocator5ClearEv\"])(a0);Module[\"__ZN3tvm7runtime15NVTXScopedRangeC2EPKc\"]=(a0,a1)=>(Module[\"__ZN3tvm7runtime15NVTXScopedRangeC2EPKc\"]=wasmExports[\"_ZN3tvm7runtime15NVTXScopedRangeC2EPKc\"])(a0,a1);Module[\"__ZN3tvm7runtime15NVTXScopedRangeD2Ev\"]=a0=>(Module[\"__ZN3tvm7runtime15NVTXScopedRangeD2Ev\"]=wasmExports[\"_ZN3tvm7runtime15NVTXScopedRangeD2Ev\"])(a0);Module[\"__ZN3tvm7runtime6memory7StorageC1ENS1_6BufferEPNS1_9AllocatorE\"]=(a0,a1,a2)=>(Module[\"__ZN3tvm7runtime6memory7StorageC1ENS1_6BufferEPNS1_9AllocatorE\"]=wasmExports[\"_ZN3tvm7runtime6memory7StorageC1ENS1_6BufferEPNS1_9AllocatorE\"])(a0,a1,a2);Module[\"_TVMBackendAnyListSetPackedArg\"]=(a0,a1,a2,a3)=>(Module[\"_TVMBackendAnyListSetPackedArg\"]=wasmExports[\"TVMBackendAnyListSetPackedArg\"])(a0,a1,a2,a3);Module[\"_TVMBackendAnyListResetItem\"]=(a0,a1)=>(Module[\"_TVMBackendAnyListResetItem\"]=wasmExports[\"TVMBackendAnyListResetItem\"])(a0,a1);Module[\"_TVMBackendAnyListMoveFromPackedReturn\"]=(a0,a1,a2,a3)=>(Module[\"_TVMBackendAnyListMoveFromPackedReturn\"]=wasmExports[\"TVMBackendAnyListMoveFromPackedReturn\"])(a0,a1,a2,a3);Module[\"__ZN3tvm7runtime2vm19TensorCacheMetadata4LoadERKNSt3__212basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE\"]=(a0,a1)=>(Module[\"__ZN3tvm7runtime2vm19TensorCacheMetadata4LoadERKNSt3__212basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE\"]=wasmExports[\"_ZN3tvm7runtime2vm19TensorCacheMetadata4LoadERKNSt3__212basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE\"])(a0,a1);Module[\"__ZNK3tvm7runtime2vm19TensorCacheMetadata10FileRecord11ParamRecord4LoadE8DLDevicePKNSt3__212basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEPNS_3ffi8OptionalINS0_6TensorEvEE\"]=(a0,a1,a2,a3,a4)=>(Module[\"__ZNK3tvm7runtime2vm19TensorCacheMetadata10FileRecord11ParamRecord4LoadE8DLDevicePKNSt3__212basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEPNS_3ffi8OptionalINS0_6TensorEvEE\"]=wasmExports[\"_ZNK3tvm7runtime2vm19TensorCacheMetadata10FileRecord11ParamRecord4LoadE8DLDevicePKNSt3__212basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEPNS_3ffi8OptionalINS0_6TensorEvEE\"])(a0,a1,a2,a3,a4);Module[\"__ZNK3tvm7runtime2vm19TensorCacheMetadata10FileRecord4LoadE8DLDeviceRKNSt3__212basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEPSB_PNS_3ffi8OptionalINS0_6TensorEvEE\"]=(a0,a1,a2,a3,a4,a5)=>(Module[\"__ZNK3tvm7runtime2vm19TensorCacheMetadata10FileRecord4LoadE8DLDeviceRKNSt3__212basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEPSB_PNS_3ffi8OptionalINS0_6TensorEvEE\"]=wasmExports[\"_ZNK3tvm7runtime2vm19TensorCacheMetadata10FileRecord4LoadE8DLDeviceRKNSt3__212basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEPSB_PNS_3ffi8OptionalINS0_6TensorEvEE\"])(a0,a1,a2,a3,a4,a5);Module[\"__ZN3tvm7runtime15NVTXScopedRangeD1Ev\"]=a0=>(Module[\"__ZN3tvm7runtime15NVTXScopedRangeD1Ev\"]=wasmExports[\"_ZN3tvm7runtime15NVTXScopedRangeD1Ev\"])(a0);Module[\"_TVMBackendParallelLaunch\"]=(a0,a1,a2)=>(Module[\"_TVMBackendParallelLaunch\"]=wasmExports[\"TVMBackendParallelLaunch\"])(a0,a1,a2);Module[\"_TVMBackendParallelBarrier\"]=(a0,a1)=>(Module[\"_TVMBackendParallelBarrier\"]=wasmExports[\"TVMBackendParallelBarrier\"])(a0,a1);var _free=a0=>(_free=wasmExports[\"free\"])(a0);Module[\"__ZN3tvm7runtime15NVTXScopedRangeC1EPKc\"]=(a0,a1)=>(Module[\"__ZN3tvm7runtime15NVTXScopedRangeC1EPKc\"]=wasmExports[\"_ZN3tvm7runtime15NVTXScopedRangeC1EPKc\"])(a0,a1);Module[\"_TVMWasmAllocSpace\"]=a0=>(Module[\"_TVMWasmAllocSpace\"]=wasmExports[\"TVMWasmAllocSpace\"])(a0);Module[\"_TVMWasmFreeSpace\"]=a0=>(Module[\"_TVMWasmFreeSpace\"]=wasmExports[\"TVMWasmFreeSpace\"])(a0);Module[\"_TVMFFIWasmFunctionCreate\"]=(a0,a1)=>(Module[\"_TVMFFIWasmFunctionCreate\"]=wasmExports[\"TVMFFIWasmFunctionCreate\"])(a0,a1);Module[\"_TVMFFIWasmGetLastError\"]=()=>(Module[\"_TVMFFIWasmGetLastError\"]=wasmExports[\"TVMFFIWasmGetLastError\"])();var __initialize=Module[\"__initialize\"]=()=>(__initialize=Module[\"__initialize\"]=wasmExports[\"_initialize\"])();var _asyncify_start_unwind=a0=>(_asyncify_start_unwind=wasmExports[\"asyncify_start_unwind\"])(a0);var _asyncify_stop_unwind=()=>(_asyncify_stop_unwind=wasmExports[\"asyncify_stop_unwind\"])();var _asyncify_start_rewind=a0=>(_asyncify_start_rewind=wasmExports[\"asyncify_start_rewind\"])(a0);var _asyncify_stop_rewind=()=>(_asyncify_stop_rewind=wasmExports[\"asyncify_stop_rewind\"])();var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller;};function callMain(args=[]){var entryFunction=__initialize;try{entryFunction();var ret=0;exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain(args);postRun();}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\");},1);doRun();},1);}else {doRun();}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()();}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;run();\n\n      this.Module = Module;\n      this.start = Module.wasmLibraryProvider.start;\n      this.imports = Module.wasmLibraryProvider.imports;\n      this.wasiImport = this.imports[\"wasi_snapshot_preview1\"];\n  }\n\n  /**\r\n   * Get performance measurement.\r\n   */\r\n  function getPerformance() {\r\n      if (typeof performance === \"undefined\") {\r\n          // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n          const performanceNode = require(\"perf_hooks\");\r\n          return performanceNode.performance;\r\n      }\r\n      else {\r\n          return performance;\r\n      }\r\n  }\r\n  /**\r\n   * Create a new websocket for a given URL\r\n   * @param url The url.\r\n   */\r\n  function createWebSocket(url) {\r\n      if (typeof WebSocket === \"undefined\") {\r\n          // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n          const WebSocket = require(\"ws\");\r\n          return new WebSocket(url);\r\n      }\r\n      else {\r\n          return new WebSocket(url);\r\n      }\r\n  }\r\n  /**\r\n   * Create a WASI based on current environment.\r\n   *\r\n   * @return A wasi that can run on broswer or local.\r\n   */\r\n  function createPolyfillWASI() {\r\n      return new EmccWASI();\r\n  }\n\n  /*\r\n   * Licensed to the Apache Software Foundation (ASF) under one\r\n   * or more contributor license agreements.  See the NOTICE file\r\n   * distributed with this work for additional information\r\n   * regarding copyright ownership.  The ASF licenses this file\r\n   * to you under the Apache License, Version 2.0 (the\r\n   * \"License\"); you may not use this file except in compliance\r\n   * with the License.  You may obtain a copy of the License at\r\n   *\r\n   *   http://www.apache.org/licenses/LICENSE-2.0\r\n   *\r\n   * Unless required by applicable law or agreed to in writing,\r\n   * software distributed under the License is distributed on an\r\n   * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n   * KIND, either express or implied.  See the License for the\r\n   * specific language governing permissions and limitations\r\n   * under the License.\r\n   */\r\n  /**\r\n   * @internal\r\n   * FFI Library wrapper, maintains most runtime states.\r\n   */\r\n  class FFILibrary {\r\n      constructor(wasmInstance, imports) {\r\n          this.recycledCallStacks = [];\r\n          this.wasmInstance = wasmInstance;\r\n          this.memory = new Memory(this.detectWasmMemory(this.wasmInstance, imports));\r\n          assert(this.wasmInstance.exports !== undefined, \"Expect the library module contains exports\");\r\n          this.exports = this.wasmInstance.exports;\r\n          this.wasm32 = this.memory.wasm32;\r\n          this.validateInstance();\r\n      }\r\n      dispose() {\r\n          var _a;\r\n          while (this.recycledCallStacks.length != 0) {\r\n              this.recycledCallStacks.pop().dispose();\r\n          }\r\n          (_a = this.webGPUContext) === null || _a === void 0 ? void 0 : _a.dispose();\r\n      }\r\n      sizeofPtr() {\r\n          return this.memory.sizeofPtr();\r\n      }\r\n      checkCall(code) {\r\n          if (code != 0) {\r\n              const msgPtr = this.exports\r\n                  .TVMFFIWasmGetLastError();\r\n              throw new Error(this.memory.loadCString(msgPtr));\r\n          }\r\n      }\r\n      getOrAllocCallStack() {\r\n          if (this.recycledCallStacks.length != 0) {\r\n              return this.recycledCallStacks.pop();\r\n          }\r\n          return new CachedCallStack(this.memory, this.exports.TVMWasmAllocSpace, this.exports.TVMWasmFreeSpace);\r\n      }\r\n      recycleCallStack(callstack) {\r\n          callstack.reset();\r\n          this.recycledCallStacks.push(callstack);\r\n      }\r\n      validateInstance() {\r\n          this.checkExports([\"TVMWasmAllocSpace\", \"TVMWasmFreeSpace\"]);\r\n      }\r\n      checkExports(funcNames) {\r\n          const missList = [];\r\n          for (const name of funcNames) {\r\n              const f = this.exports[name];\r\n              if (!(f instanceof Function)) {\r\n                  missList.push(name);\r\n              }\r\n          }\r\n          if (missList.length != 0) {\r\n              throw new Error(\"Cannot find \" + missList + \" in exports\");\r\n          }\r\n      }\r\n      detectWasmMemory(instance, imports) {\r\n          if (instance.exports.memory instanceof WebAssembly.Memory) {\r\n              return instance.exports.memory;\r\n          }\r\n          if (imports.env && imports.env.memory instanceof WebAssembly.Memory) {\r\n              return imports.env.memory;\r\n          }\r\n          throw new Error(\"Cannt detect wasm memory from imports \" +\r\n              imports +\r\n              \" or exports\" +\r\n              instance.exports);\r\n      }\r\n  }\r\n  /**\r\n   * @internal\r\n   * Manages extra runtime context for the runtime.\r\n   */\r\n  class RuntimeContext {\r\n      constructor(getGlobalFunc) {\r\n          this.autoDisposeScope = [];\r\n          this.functionListGlobalNamesFunctor = getGlobalFunc(\"ffi.FunctionListGlobalNamesFunctor\");\r\n          this.moduleGetFunction = getGlobalFunc(\"ffi.ModuleGetFunction\");\r\n          this.moduleImport = getGlobalFunc(\"ffi.ModuleImportModule\");\r\n          this.tensorEmpty = getGlobalFunc(\"runtime.TVMTensorAllocWithScope\");\r\n          this.tensorCopyFromTo = getGlobalFunc(\"runtime.TVMTensorCopyFromTo\");\r\n          this.tensorCopyFromJSBytes = getGlobalFunc(\"tvmjs.runtime.TensorCopyFromBytes\");\r\n          this.tensorCopyToJSBytes = getGlobalFunc(\"tvmjs.runtime.TensorCopyToBytes\");\r\n          this.arrayGetItem = getGlobalFunc(\"ffi.ArrayGetItem\");\r\n          this.arrayGetSize = getGlobalFunc(\"ffi.ArraySize\");\r\n          this.arrayMake = getGlobalFunc(\"ffi.Array\");\r\n          this.arrayConcat = getGlobalFunc(\"tvmjs.runtime.ArrayConcat\");\r\n          this.getSysLib = getGlobalFunc(\"ffi.SystemLib\");\r\n          this.tensorCacheGet = getGlobalFunc(\"vm.builtin.tensor_cache.get\");\r\n          this.tensorCacheRemove = getGlobalFunc(\"vm.builtin.tensor_cache.remove\");\r\n          this.tensorCacheUpdate = getGlobalFunc(\"vm.builtin.tensor_cache.update\");\r\n          this.tensorCacheClear = getGlobalFunc(\"vm.builtin.tensor_cache.clear\");\r\n          this.arrayDecodeStorage = getGlobalFunc(\"tvmjs.array.decode_storage\");\r\n          this.paramModuleFromCache = getGlobalFunc(\"vm.builtin.param_module_from_cache\");\r\n          this.paramModuleFromCacheByName = getGlobalFunc(\"vm.builtin.param_module_from_cache_by_name\");\r\n          this.makeShapeTuple = getGlobalFunc(\"ffi.Shape\");\r\n          this.tensorCreateView = getGlobalFunc(\"runtime.TVMTensorCreateView\");\r\n          this.sampleTopPFromLogits = getGlobalFunc(\"vm.builtin.sample_top_p_from_logits\");\r\n          this.sampleTopPFromProb = getGlobalFunc(\"vm.builtin.sample_top_p_from_prob\");\r\n          this.applyRepetitionPenalty = getGlobalFunc(\"vm.builtin.apply_repetition_penalty\");\r\n          this.applyPresenceAndFrequencyPenalty = getGlobalFunc(\"vm.builtin.apply_presence_and_frequency_penalty\");\r\n          this.applySoftmaxWithTemperature = getGlobalFunc(\"vm.builtin.apply_softmax_with_temperature\");\r\n          this.concatEmbeddings = getGlobalFunc(\"tvmjs.runtime.ConcatEmbeddings\");\r\n      }\r\n      dispose() {\r\n          var _a;\r\n          // call array cache clear to clear all cached items\r\n          this.tensorCacheClear.dispose();\r\n          this.arrayGetItem.dispose();\r\n          this.arrayGetSize.dispose();\r\n          this.arrayMake.dispose();\r\n          this.arrayConcat.dispose();\r\n          this.tensorCacheGet.dispose();\r\n          this.tensorCacheRemove.dispose();\r\n          this.tensorCacheUpdate.dispose();\r\n          this.arrayDecodeStorage.dispose();\r\n          this.paramModuleFromCache.dispose();\r\n          this.paramModuleFromCacheByName.dispose();\r\n          this.makeShapeTuple.dispose();\r\n          this.tensorCreateView.dispose();\r\n          this.sampleTopPFromLogits.dispose();\r\n          this.applyRepetitionPenalty.dispose();\r\n          this.applyPresenceAndFrequencyPenalty.dispose();\r\n          this.applySoftmaxWithTemperature.dispose();\r\n          (_a = this.concatEmbeddings) === null || _a === void 0 ? void 0 : _a.dispose();\r\n      }\r\n      beginScope() {\r\n          this.autoDisposeScope.push([]);\r\n      }\r\n      endScope() {\r\n          if (this.autoDisposeScope.length === 0) {\r\n              throw Error(\"tvm.endScope called when the stack is empty.\");\r\n          }\r\n          // automatically dispose all the tracked values in the current scope.\r\n          const currScope = this.autoDisposeScope.pop();\r\n          for (let i = 0; i < currScope.length; ++i) {\r\n              const val = currScope[i];\r\n              if (val !== undefined) {\r\n                  val.dispose();\r\n              }\r\n          }\r\n      }\r\n      /**\r\n       * Track object for dispose in current scope.\r\n       *\r\n       * @param obj The object to be tracked.\r\n       * @returns the same object.\r\n       * @note This function only needs to be called for raw system C API values.\r\n       *       The return value of PackedFunc will be automatically tracked.\r\n       */\r\n      attachToCurrentScope(obj) {\r\n          if (this.autoDisposeScope.length === 0) {\r\n              throw Error(\"Must call beginScope to use functions that returns TVM objects\");\r\n          }\r\n          const currScope = this.autoDisposeScope[this.autoDisposeScope.length - 1];\r\n          currScope.push(obj);\r\n          return obj;\r\n      }\r\n      moveToParentScope(obj) {\r\n          this.detachFromCurrentScope(obj);\r\n          if (this.autoDisposeScope.length < 2) {\r\n              throw Error(\"moveToParentScope: Parent scope do not exist\");\r\n          }\r\n          const parentScope = this.autoDisposeScope[this.autoDisposeScope.length - 2];\r\n          parentScope.push(obj);\r\n          return obj;\r\n      }\r\n      detachFromCurrentScope(obj) {\r\n          const currScope = this.autoDisposeScope[this.autoDisposeScope.length - 1];\r\n          let occurrence = 0;\r\n          for (let i = 0; i < currScope.length; ++i) {\r\n              if (currScope[i] === obj) {\r\n                  occurrence += 1;\r\n                  currScope[i] = undefined;\r\n              }\r\n          }\r\n          if (occurrence === 0) {\r\n              throw Error(\"Cannot find obj in the current auto conversion pool\");\r\n          }\r\n          if (occurrence > 1) {\r\n              throw Error(\"Value attached to scope multiple times\");\r\n          }\r\n          return obj;\r\n      }\r\n  }\r\n  /**\r\n   * A typed scalar constant used to represent a typed number\r\n   * argument to PackedFunc calls.\r\n   */\r\n  class Scalar {\r\n      constructor(value, dtype) {\r\n          this.value = value;\r\n          this.dtype = dtype;\r\n      }\r\n  }\r\n  const DeviceEnumToStr = {\r\n      1: \"cpu\",\r\n      2: \"cuda\",\r\n      4: \"opencl\",\r\n      8: \"metal\",\r\n      15: \"webgpu\"\r\n  };\r\n  const DeviceStrToEnum = {\r\n      cpu: 1,\r\n      cuda: 2,\r\n      cl: 4,\r\n      opencl: 4,\r\n      vulkan: 7,\r\n      metal: 8,\r\n      webgpu: 15\r\n  };\r\n  /**\r\n   * Represent a runtime context where a Tensor can reside.\r\n   */\r\n  class DLDevice {\r\n      constructor(deviceType, deviceId, lib) {\r\n          const tp = typeof deviceType;\r\n          if (tp === \"string\") {\r\n              this.deviceType = DeviceStrToEnum[deviceType];\r\n              if (this.deviceType === undefined) {\r\n                  throw new Error(\"Cannot recogonize deviceType \" + deviceType);\r\n              }\r\n          }\r\n          else if (tp === \"number\") {\r\n              this.deviceType = deviceType;\r\n          }\r\n          else {\r\n              throw new Error(\"Cannot take type \" + tp + \" as deviceType\");\r\n          }\r\n          this.deviceId = deviceId;\r\n          this.lib = lib;\r\n      }\r\n      /**\r\n       * Synchronize the device\r\n       */\r\n      sync() {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              if (this.deviceType === DeviceStrToEnum.webgpu) {\r\n                  assert(this.lib.webGPUContext !== undefined);\r\n                  yield this.lib.webGPUContext.sync();\r\n              }\r\n          });\r\n      }\r\n      toString() {\r\n          return (DeviceEnumToStr[this.deviceType] + \":\" + this.deviceId.toString());\r\n      }\r\n  }\r\n  /**\r\n   * The data type code in DLDataType\r\n   */\r\n  var DLDataTypeCode;\r\n  (function (DLDataTypeCode) {\r\n      DLDataTypeCode[DLDataTypeCode[\"Int\"] = 0] = \"Int\";\r\n      DLDataTypeCode[DLDataTypeCode[\"UInt\"] = 1] = \"UInt\";\r\n      DLDataTypeCode[DLDataTypeCode[\"Float\"] = 2] = \"Float\";\r\n      DLDataTypeCode[DLDataTypeCode[\"OpaqueHandle\"] = 3] = \"OpaqueHandle\";\r\n  })(DLDataTypeCode || (DLDataTypeCode = {}));\r\n  const DLDataTypeCodeToStr = {\r\n      0: \"int\",\r\n      1: \"uint\",\r\n      2: \"float\",\r\n      3: \"handle\",\r\n  };\r\n  /**\r\n   * Runtime data type of Tensor.\r\n   */\r\n  class DLDataType {\r\n      constructor(code, bits, lanes) {\r\n          this.code = code;\r\n          this.bits = bits;\r\n          this.lanes = lanes;\r\n      }\r\n      toString() {\r\n          const ret = DLDataTypeCodeToStr[this.code] + this.bits.toString();\r\n          if (this.lanes != 1) {\r\n              return ret + \"x\" + this.lanes.toString();\r\n          }\r\n          else {\r\n              return ret;\r\n          }\r\n      }\r\n      numStorageBytes() {\r\n          return (this.bits * this.lanes + 7) >> 3;\r\n      }\r\n  }\r\n  /**\r\n   * Generic object base\r\n   */\r\n  class TVMObject {\r\n      constructor(handle, lib, ctx) {\r\n          this.handle = handle;\r\n          this.lib = lib;\r\n          this.ctx = ctx;\r\n      }\r\n      dispose() {\r\n          if (this.handle != 0) {\r\n              this.lib.checkCall(this.lib.exports.TVMFFIObjectDecRef(this.handle));\r\n              this.handle = 0;\r\n          }\r\n      }\r\n      /**\r\n       * Get handle of module, check it is not null.\r\n       *\r\n       * @param requireNotNull require handle is not null.\r\n       * @returns The handle.\r\n       */\r\n      getHandle(requireNotNull = true) {\r\n          if (requireNotNull && this.handle === 0) {\r\n              throw Error(\"Object has already been disposed\");\r\n          }\r\n          return this.handle;\r\n      }\r\n      /** get the type index of the object */\r\n      typeIndex() {\r\n          if (this.handle === 0) {\r\n              throw Error(\"The current Object has already been disposed\");\r\n          }\r\n          return this.lib.memory.loadObjectTypeIndex(this.handle);\r\n      }\r\n      /** get the type key of the object */\r\n      typeKey() {\r\n          const type_index = this.typeIndex();\r\n          const typeInfoPtr = this.lib.exports.TVMFFIGetTypeInfo(type_index);\r\n          return this.lib.memory.loadTypeInfoTypeKey(typeInfoPtr);\r\n      }\r\n  }\r\n  /**\r\n   * Cell holds the PackedFunc object.\r\n   */\r\n  class PackedFuncCell extends TVMObject {\r\n      constructor(handle, lib, ctx) {\r\n          super(handle, lib, ctx);\r\n      }\r\n  }\r\n  /**\r\n   * Tensor( n-dimnesional array).\r\n   */\r\n  class Tensor extends TVMObject {\r\n      constructor(handle, lib, ctx, isView) {\r\n          // if the array is a view, we need to create a new object with a null handle\r\n          // so dispose won't trigger memory free\r\n          const objectHandle = isView ? 0 : handle;\r\n          super(objectHandle, lib, ctx);\r\n          this.isView = isView;\r\n          if (this.isView) {\r\n              this.dltensor = handle;\r\n          }\r\n          else {\r\n              this.dltensor = this.getDLTensorFromArrayHandle(this.handle);\r\n          }\r\n          // constant offsets.\r\n          const arrayOffsetData = 0;\r\n          const arrayOffsetContext = arrayOffsetData + this.lib.sizeofPtr();\r\n          const arrayOffsetDevType = arrayOffsetContext;\r\n          const arrayOffsetDevId = arrayOffsetContext + 4 /* SizeOf.I32 */;\r\n          const arrayOffsetNdim = arrayOffsetContext + 8 /* SizeOf.DLDevice */;\r\n          const arrayOffsetDtype = arrayOffsetNdim + 4 /* SizeOf.I32 */;\r\n          const arrayOffsetDtypeCode = arrayOffsetDtype;\r\n          const arrayOffsetDtypeBits = arrayOffsetDtype + 1 /* SizeOf.U8 */;\r\n          const arrayOffsetDtypeLanes = arrayOffsetDtypeBits + 1 /* SizeOf.U8 */;\r\n          const arrayOffsetShape = arrayOffsetDtype + 4 /* SizeOf.DLDataType */;\r\n          const arrayOffsetStrides = arrayOffsetShape + this.lib.sizeofPtr();\r\n          const arrayOffsetByteOffset = arrayOffsetStrides + this.lib.sizeofPtr();\r\n          // dataPtr\r\n          this.dataPtr = lib.memory.loadPointer(this.dltensor);\r\n          // ndim\r\n          this.ndim = lib.memory.loadI32(this.dltensor + arrayOffsetNdim);\r\n          // shape\r\n          const cshapePtr = lib.memory.loadPointer(this.dltensor + arrayOffsetShape);\r\n          this.shape = [];\r\n          for (let i = 0; i < this.ndim; ++i) {\r\n              this.shape.push(lib.memory.loadI64(cshapePtr + i * 8 /* SizeOf.I64 */));\r\n          }\r\n          // dtype\r\n          const code = lib.memory.loadU8(this.dltensor + arrayOffsetDtypeCode);\r\n          const bits = lib.memory.loadU8(this.dltensor + arrayOffsetDtypeBits);\r\n          const lanes = lib.memory.loadU16(this.dltensor + arrayOffsetDtypeLanes);\r\n          this.dlDataType = new DLDataType(code, bits, lanes);\r\n          this.dtype = this.dlDataType.toString();\r\n          // device\r\n          const deviceType = lib.memory.loadI32(this.dltensor + arrayOffsetDevType);\r\n          const deviceId = lib.memory.loadI32(this.dltensor + arrayOffsetDevId);\r\n          this.device = new DLDevice(deviceType, deviceId, lib);\r\n          // byte_offset\r\n          this.byteOffset = lib.memory.loadI64(this.dltensor + arrayOffsetByteOffset);\r\n      }\r\n      /**\r\n       * Create a view of the array.\r\n       * @param shape The shape of the view.\r\n       * @param dtype The data type of the new array.\r\n       * @returns The new sliced ndarray.\r\n       */\r\n      view(shape, dtype) {\r\n          const shapeArray = shape.map((value) => new Scalar(value, \"int\"));\r\n          if (dtype === undefined) {\r\n              dtype = this.dtype;\r\n          }\r\n          return this.ctx.tensorCreateView(this, this.ctx.makeShapeTuple(...shapeArray), this.dtype, \r\n          /*relative_byte_offset=*/ new Scalar(0, \"int\"));\r\n      }\r\n      /**\r\n       * Get dataPtr of NDarray\r\n       *\r\n       * @returns The handle.\r\n       */\r\n      getDataPtr() {\r\n          if (this.handle === 0) {\r\n              throw Error(\"Tensor has already been disposed\");\r\n          }\r\n          return this.dataPtr;\r\n      }\r\n      /**\r\n       * Copy data from another Tensor or javascript array.\r\n       * The number of elements must match.\r\n       *\r\n       * @param data The source data array.\r\n       * @returns this\r\n       */\r\n      copyFrom(data) {\r\n          if (data instanceof Tensor) {\r\n              this.ctx.tensorCopyFromTo(data, this);\r\n              return this;\r\n          }\r\n          else {\r\n              const size = this.shape.reduce((a, b) => {\r\n                  return a * b;\r\n              }, 1);\r\n              if (data.length != size) {\r\n                  throw new Error(\"data size and shape mismatch data.length\" +\r\n                      data.length +\r\n                      \" vs \" +\r\n                      size);\r\n              }\r\n              let buffer;\r\n              if (this.dtype === \"float32\") {\r\n                  buffer = Float32Array.from(data).buffer;\r\n              }\r\n              else if (this.dtype === \"float64\") {\r\n                  buffer = Float64Array.from(data).buffer;\r\n              }\r\n              else if (this.dtype === \"int32\") {\r\n                  buffer = Int32Array.from(data).buffer;\r\n              }\r\n              else if (this.dtype === \"int8\") {\r\n                  buffer = Int8Array.from(data).buffer;\r\n              }\r\n              else if (this.dtype === \"uint8\") {\r\n                  buffer = Uint8Array.from(data).buffer;\r\n              }\r\n              else if (this.dtype === \"uint32\") {\r\n                  buffer = Uint32Array.from(data).buffer;\r\n              }\r\n              else {\r\n                  throw new Error(\"Unsupported data type \" + this.dtype);\r\n              }\r\n              return this.copyFromRawBytes(new Uint8Array(buffer));\r\n          }\r\n      }\r\n      /**\r\n       * Copy data from raw bytes.\r\n       * @param data Uint8Array of bytes.\r\n       * @returns this\r\n       */\r\n      copyFromRawBytes(data) {\r\n          var _a;\r\n          // short cut for gpu copy\r\n          if (this.device.deviceType === DeviceStrToEnum.webgpu) {\r\n              (_a = this.lib.webGPUContext) === null || _a === void 0 ? void 0 : _a.copyRawBytesToBuffer(data, this.getDataPtr(), 0, data.length);\r\n              return this;\r\n          }\r\n          // CPU copy\r\n          const size = this.shape.reduce((a, b) => {\r\n              return a * b;\r\n          }, 1);\r\n          const nbytes = this.dlDataType.numStorageBytes() * size;\r\n          if (nbytes != data.length) {\r\n              throw new Error(\"Expect the data's length equals nbytes=\" + nbytes);\r\n          }\r\n          this.ctx.tensorCopyFromJSBytes(this, data);\r\n          return this;\r\n      }\r\n      /**\r\n       * Return a copied Uint8Array of the raw bytes in the Tensor.\r\n       * @returns The result array.\r\n       */\r\n      toRawBytes() {\r\n          if (this.device.deviceType != DeviceStrToEnum.cpu) {\r\n              throw new Error(\"Can only sync copy CPU array, use cpu_arr.copyfrom(gpu_arr) then sync instead.\");\r\n          }\r\n          return this.ctx.tensorCopyToJSBytes(this);\r\n      }\r\n      /**\r\n       * Return a TypedArray copy of the Tensor, the specific type depends on\r\n       * the dtype of the Tensor.\r\n       * @returns The result array.\r\n       */\r\n      toArray() {\r\n          const stype = this.dtype;\r\n          if (stype === \"float32\") {\r\n              return new Float32Array(this.toRawBytes().buffer);\r\n          }\r\n          else if (stype === \"float64\") {\r\n              return new Float64Array(this.toRawBytes().buffer);\r\n          }\r\n          else if (stype === \"int32\") {\r\n              return new Int32Array(this.toRawBytes().buffer);\r\n          }\r\n          else if (stype === \"int8\") {\r\n              return new Int8Array(this.toRawBytes().buffer);\r\n          }\r\n          else if (stype === \"uint8\") {\r\n              return new Uint8Array(this.toRawBytes().buffer);\r\n          }\r\n          else {\r\n              throw new Error(\"Unsupported data type \" + this.dtype);\r\n          }\r\n      }\r\n      getDLTensorFromArrayHandle(handle) {\r\n          return handle + 24 /* SizeOf.ObjectHeader */;\r\n      }\r\n  }\r\n  /**\r\n   * Runtime Module.\r\n   */\r\n  class Module extends TVMObject {\r\n      constructor(handle, lib, ctx) {\r\n          super(handle, lib, ctx);\r\n      }\r\n      /**\r\n       * Get a function in the module.\r\n       * @param name The name of the function.\r\n       * @param queryImports Whether to also query imports\r\n       * @returns The result function.\r\n       */\r\n      getFunction(name, queryImports = true) {\r\n          return this.ctx.moduleGetFunction(this, name, queryImports);\r\n      }\r\n      /**\r\n       * Import another module into the current runtime module.\r\n       * @param mod The module to be imported.\r\n       */\r\n      importModule(mod) {\r\n          this.ctx.moduleImport(this, mod);\r\n      }\r\n  }\r\n  /** Runtime array object. */\r\n  class TVMArray extends TVMObject {\r\n      constructor(handle, lib, ctx) {\r\n          super(handle, lib, ctx);\r\n      }\r\n      /**\r\n       * @returns the size of the array.\r\n       */\r\n      size() {\r\n          return this.ctx.arrayGetSize(this);\r\n      }\r\n      /**\r\n       * Get index-th element of the array\r\n       * @param index the array index.\r\n       * @returns The element.\r\n       */\r\n      get(index) {\r\n          return this.ctx.arrayGetItem(this, new Scalar(index, \"int32\"));\r\n      }\r\n  }\r\n  var VMAllocatorKind;\r\n  (function (VMAllocatorKind) {\r\n      VMAllocatorKind[VMAllocatorKind[\"NAIVE_ALLOCATOR\"] = 1] = \"NAIVE_ALLOCATOR\";\r\n      VMAllocatorKind[VMAllocatorKind[\"POOLED_ALLOCATOR\"] = 2] = \"POOLED_ALLOCATOR\";\r\n  })(VMAllocatorKind || (VMAllocatorKind = {}));\r\n  /**\r\n   *  VirtualMachine Executor.\r\n   *\r\n   *  This is a thin wrapper of the underlying TVM module.\r\n   *  you can also directly call set_input, run, and get_output\r\n   *  of underlying module functions\r\n   */\r\n  class VirtualMachine {\r\n      /**\r\n       * Constructor\r\n       * @param mod The underlying module, need to be detached.\r\n       * @param device The main device ro run VM on.\r\n       */\r\n      constructor(mod, device) {\r\n          this.mod = mod;\r\n          this.mod.getFunction(\"vm_initialization\")(new Scalar(device.deviceType, \"int\"), new Scalar(device.deviceId, \"int\"), new Scalar(VMAllocatorKind.POOLED_ALLOCATOR, \"int\"), \r\n          // explicitly specify host device type\r\n          new Scalar(DeviceStrToEnum.cpu, \"int\"), new Scalar(0, \"int\"), new Scalar(VMAllocatorKind.POOLED_ALLOCATOR, \"int\"));\r\n      }\r\n      dispose() {\r\n          this.mod.dispose();\r\n      }\r\n      /**\r\n       * Get a function in the VM module.\r\n       * @param name The name of the function.\r\n       * @returns The result function.\r\n       */\r\n      getFunction(name) {\r\n          return this.mod.getFunction(name);\r\n      }\r\n      /**\r\n       * Get the internal module.\r\n       */\r\n      getInternalModule() {\r\n          return this.mod;\r\n      }\r\n  }\r\n  /** Code used as the first argument of the async callback. */\r\n  var AsyncCallbackCode;\r\n  (function (AsyncCallbackCode) {\r\n      AsyncCallbackCode[AsyncCallbackCode[\"kReturn\"] = 4] = \"kReturn\";\r\n      AsyncCallbackCode[AsyncCallbackCode[\"kException\"] = 5] = \"kException\";\r\n  })(AsyncCallbackCode || (AsyncCallbackCode = {}));\r\n  /**\r\n   * TVM runtime instance.\r\n   *\r\n   * All objects(Tensor, Module, PackedFunc) returned by TVM runtim function call\r\n   * and PackedFunc instance are tracked through a scope mechanism that will get\r\n   * auto-released when we call EndScope.\r\n   *\r\n   * This is necessarily to be able to release the underlying WASM and WebGPU memory that\r\n   * are not tracked through JS native garbage collection mechanism.\r\n   *\r\n   * This does mean that we have to get familar with the following functions:\r\n   * - {@link beginScope}\r\n   * - {@link endScope}\r\n   * - {@link withNewScope}\r\n   * - {@link attachToCurrentScope}\r\n   * - {@link detachFromCurrentScope}\r\n   */\r\n  class Instance {\r\n      /**\r\n       * Constructor\r\n       *\r\n       * importObject can also be a {@link LibraryProvider} object,\r\n       * a WASI object, or an object containing wasmLibraryProvider field.\r\n       *\r\n       * @param wasmModule The input module or instance.\r\n       * @param importObject The imports to initialize the wasmInstance if it is not provided.\r\n       * @param wasmInstance Additional wasm instance argument for deferred construction.\r\n       * @param env Directly specified environment module.\r\n       *\r\n       * @see Please use the async version {@link instantiate} when targeting browsers.\r\n       */\r\n      constructor(wasmModule, importObject = {}, wasmInstance, env) {\r\n          this.cacheMetadata = {};\r\n          this.initProgressCallback = [];\r\n          this.deviceLostIsError = true; // whether device.lost is due to actual error or dispose()\r\n          if (wasmInstance instanceof WebAssembly.Instance) {\r\n              assert(env instanceof Environment, \"env must be provided when passing in instance\");\r\n          }\r\n          else {\r\n              assert(env === undefined);\r\n              env = new Environment(importObject);\r\n              wasmInstance = new WebAssembly.Instance(wasmModule, env.imports);\r\n          }\r\n          env.start(wasmInstance);\r\n          this.env = env;\r\n          this.lib = new FFILibrary(wasmInstance, env.imports);\r\n          this.memory = this.lib.memory;\r\n          this.exports = this.lib.exports;\r\n          this.asyncifyHandler = new AsyncifyHandler(this.exports, this.memory.memory);\r\n          this.objFactory = new Map();\r\n          this.ctx = new RuntimeContext((name) => {\r\n              const autoAttachToScope = false;\r\n              // runtime context function do not auto-release.\r\n              return this.getGlobalFuncInternal(name, autoAttachToScope);\r\n          });\r\n          this.registerEnvGlobalPackedFuncs();\r\n          this.registerObjectFactoryFuncs();\r\n          this.rng = new LinearCongruentialGenerator();\r\n      }\r\n      /**\r\n       * Benchmark stable execution of the run function.\r\n       *\r\n       * @params run The run function\r\n       * @params dev The device to sync during each run.\r\n       * @number The number of times to compute the average.\r\n       * @repeat The number of times to repeat the run.\r\n       */\r\n      benchmark(run, dev, number = 10, repeat = 1) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              // Skip first run as it can involve GPU warmup and module loading time.\r\n              const perf = getPerformance();\r\n              const results = [];\r\n              // run with new scope\r\n              this.withNewScope(run);\r\n              yield dev.sync();\r\n              for (let k = 0; k < repeat; ++k) {\r\n                  const tstart = perf.now();\r\n                  for (let i = 0; i < number; ++i) {\r\n                      this.withNewScope(run);\r\n                  }\r\n                  yield dev.sync();\r\n                  const tend = perf.now();\r\n                  results.push((tend - tstart) / number);\r\n              }\r\n              return results;\r\n          });\r\n      }\r\n      /**\r\n       * Check whether we enabled asyncify mode\r\n       * @returns The asynctify mode toggle\r\n       */\r\n      asyncifyEnabled() {\r\n          return this.asyncifyHandler.enabled();\r\n      }\r\n      dispose() {\r\n          this.deviceLostIsError = false; // prevent dispose to trigger device.lost error\r\n          // order matters\r\n          // ctx release goes back into lib.\r\n          this.ctx.dispose();\r\n          this.lib.dispose();\r\n          // Cannot set deviceLostIsError back to true here because GPUDevice.destroy() is asynchronous.\r\n      }\r\n      /**\r\n       * Obtain the runtime information in readable format.\r\n       */\r\n      runtimeStatsText() {\r\n          if (this.lib.webGPUContext !== undefined) {\r\n              return this.lib.webGPUContext.runtimeStatsText();\r\n          }\r\n          else {\r\n              return \"\";\r\n          }\r\n      }\r\n      /**\r\n       * Begin a new scope for tracking object disposal.\r\n       */\r\n      beginScope() {\r\n          this.ctx.beginScope();\r\n      }\r\n      /**\r\n       * End a scope and release all created TVM objects\r\n       * under the current scope.\r\n       *\r\n       * Exception: one can call {@link moveToParentScope} to move\r\n       * a value to parent scope.\r\n       */\r\n      endScope() {\r\n          this.ctx.endScope();\r\n      }\r\n      /**\r\n       * Perform action under a new scope.\r\n       *\r\n       * @param action The action function.\r\n       * @returns The result value.\r\n       *\r\n       * @note For action to return a valid value,\r\n       *       we will need to call {@link moveToParentScope}\r\n       *       for the objects that are created in the scope.\r\n       */\r\n      withNewScope(action) {\r\n          this.beginScope();\r\n          const val = action();\r\n          this.endScope();\r\n          return val;\r\n      }\r\n      /**\r\n       * Attach a detached obj to the auto-release pool of the current scope.\r\n       *\r\n       * @param obj The input obj.\r\n       * @note Normally user do not need to call this function explicitly, as\r\n       *       all library call return values are explicitly attached to\r\n       *       the current scope. You only need to do so when you call\r\n       *       {@link detachFromCurrentScope} to create a detached object.\r\n       */\r\n      attachToCurrentScope(obj) {\r\n          return this.ctx.attachToCurrentScope(obj);\r\n      }\r\n      /**\r\n       * Move obj's attachment to the parent scope.\r\n       *\r\n       * This function is useful to make sure objects are still\r\n       * alive when exit the current scope.\r\n       *\r\n       * @param obj The object to be moved.\r\n       * @returns The input obj.\r\n       */\r\n      moveToParentScope(obj) {\r\n          return this.ctx.moveToParentScope(obj);\r\n      }\r\n      /**\r\n       * Detach the object from the current scope\r\n       * so it won't be released via auto-release during endscope.\r\n       *\r\n       * User needs to either explicitly call obj.dispose(), or\r\n       * {@link attachToCurrentScope} to re-attach to the current scope.\r\n       *\r\n       * This function can be used to return values to the parent scope.\r\n       * @param obj The object.\r\n       */\r\n      detachFromCurrentScope(obj) {\r\n          return this.ctx.detachFromCurrentScope(obj);\r\n      }\r\n      /**\r\n       * Get system-wide library module in the wasm.\r\n       * System lib is a global module that contains self register functions in startup.\r\n       * @returns The system library module.\r\n       */\r\n      systemLib() {\r\n          return this.ctx.getSysLib();\r\n      }\r\n      /**\r\n       * List all the global function names registered in the runtime.\r\n       * @returns The name list.\r\n       */\r\n      listGlobalFuncNames() {\r\n          return this.withNewScope(() => {\r\n              const functor = this.ctx.functionListGlobalNamesFunctor();\r\n              const numNames = functor(new Scalar(-1, \"int\"));\r\n              const names = new Array(numNames);\r\n              for (let i = 0; i < numNames; i++) {\r\n                  names[i] = functor(new Scalar(i, \"int\"));\r\n              }\r\n              return names;\r\n          });\r\n      }\r\n      /**\r\n       * Register function to be global function in tvm runtime.\r\n       * @param name The name of the function.\r\n       * @param f function to be registered.\r\n       * @param override Whether overwrite function in existing registry.\r\n       */\r\n      registerFunc(name, func, override = false) {\r\n          this.withNewScope(() => {\r\n              const autoAttachToScope = true;\r\n              // packed func can be released once it is registered\r\n              const packedFunc = this.toPackedFuncInternal(func, autoAttachToScope);\r\n              const ioverride = override ? 1 : 0;\r\n              const stack = this.lib.getOrAllocCallStack();\r\n              const nameOffset = stack.allocByteArrayForString(name);\r\n              stack.commitToWasmMemory();\r\n              this.lib.checkCall(this.lib.exports.TVMFFIFunctionSetGlobal(stack.ptrFromOffset(nameOffset), packedFunc._tvmPackedCell.getHandle(), ioverride));\r\n              this.lib.recycleCallStack(stack);\r\n          });\r\n      }\r\n      /**\r\n       * Get global PackedFunc from the runtime.\r\n       * @param name The name of the function.\r\n       * @param autoAttachToScope Whether to track it via autoDispose\r\n       * @returns The result function.\r\n       */\r\n      getGlobalFunc(name) {\r\n          return this.getGlobalFuncInternal(name, true);\r\n      }\r\n      getGlobalFuncInternal(name, autoAttachToScope = true) {\r\n          const stack = this.lib.getOrAllocCallStack();\r\n          const nameOffset = stack.allocByteArrayForString(name);\r\n          const outOffset = stack.allocPtrArray(1);\r\n          const outPtr = stack.ptrFromOffset(outOffset);\r\n          stack.commitToWasmMemory(outOffset);\r\n          this.lib.checkCall(this.exports.TVMFFIFunctionGetGlobal(stack.ptrFromOffset(nameOffset), outPtr));\r\n          const handle = this.memory.loadPointer(outPtr);\r\n          this.lib.recycleCallStack(stack);\r\n          if (handle === 0) {\r\n              throw Error(\"Cannot find global function \" + name);\r\n          }\r\n          const ret = this.makePackedFunc(handle);\r\n          if (autoAttachToScope)\r\n              this.ctx.attachToCurrentScope(ret);\r\n          return ret;\r\n      }\r\n      /**\r\n       * Check if func is PackedFunc.\r\n       *\r\n       * @param func The input.\r\n       * @returns The check result.\r\n       */\r\n      isPackedFunc(func) {\r\n          // eslint-disable-next-line no-prototype-builtins\r\n          return typeof func === \"function\" && func.hasOwnProperty(\"_tvmPackedCell\");\r\n      }\r\n      /**\r\n       * Convert func to PackedFunc\r\n       *\r\n       * @param func Input function.\r\n       * @returns The converted function.\r\n       */\r\n      toPackedFunc(func) {\r\n          return this.toPackedFuncInternal(func, true);\r\n      }\r\n      toPackedFuncInternal(func, autoAttachToScope) {\r\n          if (this.isPackedFunc(func))\r\n              return func;\r\n          const ret = this.createPackedFuncFromSafeCallType(this.wrapJSFuncAsSafeCallType(func));\r\n          if (autoAttachToScope)\r\n              return this.ctx.attachToCurrentScope(ret);\r\n          return ret;\r\n      }\r\n      /**\r\n      * Setup a virtual machine module with given device.\r\n      *\r\n      * @param dev DLDevice the device.\r\n      * @returns The created virtual machime.\r\n      */\r\n      createVirtualMachine(dev) {\r\n          const mod = this.ctx.detachFromCurrentScope(this.systemLib().getFunction(\"vm_load_executable\")());\r\n          return this.ctx.attachToCurrentScope(new VirtualMachine(mod, dev));\r\n      }\r\n      //-----------------------------------------------\r\n      // Native Tensor Cache Support\r\n      //-----------------------------------------------\r\n      /**\r\n       * Register a call back for fetch progress.\r\n      *\r\n       * @param cb the fetch progress callback.\r\n       */\r\n      registerInitProgressCallback(cb) {\r\n          this.initProgressCallback.push(cb);\r\n      }\r\n      /**\r\n       * Get parameters in the form of prefix_i\r\n       *\r\n       * @param prefix The parameter prefix.\r\n       * @param numParams  Number of parameters.\r\n       * @returns\r\n       */\r\n      getParamsFromCache(prefix, numParams) {\r\n          return this.ctx.paramModuleFromCache(prefix, new Scalar(numParams, \"int32\")).getFunction(\"get_params\")();\r\n      }\r\n      /**\r\n       * Get parameters based on parameter names provided\r\n       *\r\n       * @param paramNames Names of the parameters.\r\n       * @returns Parameters read.\r\n       */\r\n      getParamsFromCacheByName(paramNames) {\r\n          return this.ctx.paramModuleFromCacheByName(paramNames).getFunction(\"get_params\")();\r\n      }\r\n      /**\r\n       * Get Tensor from cache.\r\n       * @param name  The name of array.\r\n       * @returns  The result.\r\n       */\r\n      tensorCacheGet(name) {\r\n          return this.ctx.tensorCacheGet(name);\r\n      }\r\n      /**\r\n       * Get Tensor from cache.\r\n       * @param name  The name of array.\r\n       * @returns  The result.\r\n       */\r\n      tensorCacheRemove(name) {\r\n          return this.ctx.tensorCacheRemove(name);\r\n      }\r\n      /**\r\n       * Update the tensor cache.\r\n       * @param name The name of the array.\r\n       * @param arr The content.\r\n       */\r\n      tensorCacheUpdate(name, arr, override = false) {\r\n          this.ctx.tensorCacheUpdate(name, arr, this.scalar(override ? 1 : 0, \"int32\"));\r\n      }\r\n      /**\r\n       * Update the tensor cache.\r\n       * @param name The name of the array.\r\n       * @param arr The content.\r\n       */\r\n      tensorCacheClear() {\r\n          this.ctx.tensorCacheClear();\r\n      }\r\n      /**\r\n       * Given cacheUrl, search up items to fetch based on cacheUrl/tensor-cache.json\r\n       *\r\n       * @param tensorCacheUrl The cache url.\r\n       * @param device The device to be fetched to.\r\n       * @param cacheScope The scope identifier of the cache\r\n       * @param cacheType The type of the cache: \"cache\" or \"indexedDB\"\r\n       * @param signal An optional AbortSignal to abort the fetch\r\n       * @returns The meta data\r\n       */\r\n      fetchTensorCache(tensorCacheUrl, device, cacheScope = \"tvmjs\", cacheType = \"cache\", signal) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              let artifactCache;\r\n              if (cacheType === undefined || cacheType.toLowerCase() === \"cache\") {\r\n                  artifactCache = new ArtifactCache(cacheScope);\r\n              }\r\n              else if (cacheType.toLowerCase() == \"indexeddb\") {\r\n                  artifactCache = new ArtifactIndexedDBCache(cacheScope);\r\n              }\r\n              else {\r\n                  console.error(\"Unsupported cacheType: \" + cacheType + \", using default ArtifactCache.\");\r\n                  artifactCache = new ArtifactCache(cacheScope);\r\n              }\r\n              const jsonUrl = new URL(\"tensor-cache.json\", tensorCacheUrl).href;\r\n              const list = yield artifactCache.fetchWithCache(jsonUrl, \"json\");\r\n              yield this.fetchTensorCacheInternal(tensorCacheUrl, list[\"records\"], device, artifactCache, signal);\r\n              this.cacheMetadata = Object.assign(Object.assign({}, this.cacheMetadata), list[\"metadata\"]);\r\n          });\r\n      }\r\n      /**\r\n       * Fetch list of Tensor into the TensorCache.\r\n       *\r\n       * @param tensorCacheUrl The cache url.\r\n       * @param list The list of array data.\r\n       * @param device The device to store the data to.\r\n       * @param artifactCache The artifact cache\r\n       * @param signal An optional AbortSignal to abort the fetch\r\n       */\r\n      fetchTensorCacheInternal(tensorCacheUrl, list, device, artifactCache, signal) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              const perf = getPerformance();\r\n              const tstart = perf.now();\r\n              let totalBytes = 0;\r\n              for (let i = 0; i < list.length; ++i) {\r\n                  totalBytes += list[i].nbytes;\r\n              }\r\n              let fetchedBytes = 0;\r\n              let fetchedShards = 0;\r\n              let timeElapsed = 0;\r\n              const cacheOnly = yield artifactCache.hasAllKeys(list.map(key => new URL(key.dataPath, tensorCacheUrl).href));\r\n              // `loading`: we have finished downloading (or already cacheOnly) and are loading onto WebGPU\r\n              const reportCallback = (iter, loading = false) => {\r\n                  // report\r\n                  for (let j = 0; j < this.initProgressCallback.length; ++j) {\r\n                      let text;\r\n                      if (loading) {\r\n                          text = \"Loading model from cache[\" + iter + \"/\" + list.length + \"]: \";\r\n                          text += Math.ceil(fetchedBytes / (1024 * 1024)).toString() + \"MB loaded. \";\r\n                          text += Math.floor(fetchedBytes * 100 / totalBytes).toString() + \"% completed, \";\r\n                          text += timeElapsed + \" secs elapsed.\";\r\n                      }\r\n                      else {\r\n                          text = \"Fetching param cache[\" + iter + \"/\" + list.length + \"]: \";\r\n                          text += Math.ceil(fetchedBytes / (1024 * 1024)).toString() + \"MB fetched. \";\r\n                          text += Math.floor(fetchedBytes * 100 / totalBytes).toString() + \"% completed, \";\r\n                          text += timeElapsed + \" secs elapsed.\";\r\n                          text += \" It can take a while when we first visit this page to populate the cache.\";\r\n                          text += \" Later refreshes will become faster.\";\r\n                      }\r\n                      this.initProgressCallback[j]({\r\n                          progress: fetchedBytes / totalBytes,\r\n                          timeElapsed: timeElapsed,\r\n                          text: text\r\n                      });\r\n                  }\r\n              };\r\n              for (let j = 0; j < this.initProgressCallback.length; ++j) {\r\n                  this.initProgressCallback[j]({\r\n                      progress: fetchedBytes / totalBytes,\r\n                      timeElapsed: 0,\r\n                      text: \"Start to fetch params\",\r\n                  });\r\n              }\r\n              // First download all shards to cache parallely if not yet in cache\r\n              const downloadCache = (start, end) => __awaiter(this, void 0, void 0, function* () {\r\n                  // Download params [start, end) from `list`\r\n                  for (let i = start; i < end; i++) {\r\n                      const shard = list[i];\r\n                      const dataUrl = new URL(shard.dataPath, tensorCacheUrl).href;\r\n                      try {\r\n                          yield artifactCache.addToCache(dataUrl, \"arraybuffer\", signal);\r\n                      }\r\n                      catch (err) {\r\n                          this.env.logger(\"Error: Cannot fetch \" + dataUrl + \" err= \" + err);\r\n                          throw err;\r\n                      }\r\n                      timeElapsed = Math.ceil((perf.now() - tstart) / 1000);\r\n                      fetchedBytes += shard.nbytes;\r\n                      reportCallback(++fetchedShards, /*loading=*/ false);\r\n                  }\r\n              });\r\n              // We launch 4 parallel for loops to limit the max concurrency to 4 download\r\n              if (!cacheOnly) {\r\n                  const loopSize = Math.floor(list.length / 4);\r\n                  yield Promise.all([\r\n                      downloadCache(0, loopSize),\r\n                      downloadCache(loopSize, 2 * loopSize),\r\n                      downloadCache(2 * loopSize, 3 * loopSize),\r\n                      downloadCache(3 * loopSize, list.length)\r\n                  ]);\r\n              }\r\n              // Reset for the loading phase to avoid double counting with download phase\r\n              fetchedBytes = 0;\r\n              fetchedShards = 0;\r\n              // Then iteratively, load the shard from cache\r\n              for (let i = 0; i < list.length; ++i) {\r\n                  const shard = list[i];\r\n                  const dataUrl = new URL(shard.dataPath, tensorCacheUrl).href;\r\n                  let buffer;\r\n                  try {\r\n                      buffer = yield artifactCache.fetchWithCache(dataUrl, \"arraybuffer\");\r\n                  }\r\n                  catch (err) {\r\n                      this.env.logger(\"Error: Cannot fetch \" + dataUrl + \" err= \" + err);\r\n                      throw err;\r\n                  }\r\n                  const shardRecords = shard.records;\r\n                  for (let j = 0; j < shardRecords.length; ++j) {\r\n                      try {\r\n                          const rec = shardRecords[j];\r\n                          const cpu_arr = this.withNewScope(() => {\r\n                              return this.detachFromCurrentScope(this.empty(rec.shape, rec.dtype, this.cpu()));\r\n                          });\r\n                          const recSource = buffer.slice(rec.byteOffset, rec.byteOffset + rec.nbytes);\r\n                          // first sync copy to cpu.\r\n                          this.ctx.arrayDecodeStorage(cpu_arr, new Uint8Array(recSource), rec.format, rec.dtype);\r\n                          // then async stream into GPU if needed\r\n                          if (device.deviceType === DeviceStrToEnum.cpu) {\r\n                              this.tensorCacheUpdate(rec.name, cpu_arr, false);\r\n                              cpu_arr.dispose();\r\n                          }\r\n                          else {\r\n                              // allocate a gpu arr and async copy to it.\r\n                              const gpu_arr = this.withNewScope(() => {\r\n                                  return this.detachFromCurrentScope(this.empty(rec.shape, rec.dtype, device));\r\n                              });\r\n                              gpu_arr.copyFrom(cpu_arr);\r\n                              yield device.sync();\r\n                              this.tensorCacheUpdate(rec.name, gpu_arr, false);\r\n                              cpu_arr.dispose();\r\n                              gpu_arr.dispose();\r\n                          }\r\n                      }\r\n                      catch (err) {\r\n                          this.env.logger(\"Failed to load shard \" + i + \"'s record: \" + JSON.stringify(shardRecords[j]) + \"\\n\" +\r\n                              \"Error: \" + err);\r\n                          throw err;\r\n                      }\r\n                  }\r\n                  fetchedBytes += shard.nbytes;\r\n                  timeElapsed = Math.ceil((perf.now() - tstart) / 1000);\r\n                  reportCallback(++fetchedShards, /*loading=*/ true);\r\n              }\r\n          });\r\n      }\r\n      /**\r\n       * Create a new {@link Scalar} that can be passed to a PackedFunc.\r\n       * @param value The number value.\r\n       * @param dtype The dtype string.\r\n       * @returns The created scalar.\r\n       */\r\n      scalar(value, dtype) {\r\n          return new Scalar(value, dtype);\r\n      }\r\n      /**\r\n       * Create a new {@link DLDevice}\r\n       * @param deviceType The device type.\r\n       * @param deviceId The device index.\r\n       * @returns The created device.\r\n       */\r\n      device(deviceType, deviceId = 0) {\r\n          return new DLDevice(deviceType, deviceId, this.lib);\r\n      }\r\n      /**\r\n       * Create a new cpu {@link DLDevice}\r\n       * @param deviceId The device index.\r\n       */\r\n      cpu(deviceId = 0) {\r\n          return this.device(\"cpu\", deviceId);\r\n      }\r\n      /**\r\n       * Create a new webgpu {@link DLDevice}\r\n       * @param deviceId The device index.\r\n       */\r\n      webgpu(deviceId = 0) {\r\n          return this.device(\"webgpu\", deviceId);\r\n      }\r\n      /**\r\n       * Create an empty {@link Tensor} with given shape and dtype.\r\n       *\r\n       * @param shape The shape of the array.\r\n       * @param dtype The data type of the array.\r\n       * @param dev The device of the ndarray.\r\n       * @returns The created ndarray.\r\n       */\r\n      empty(shape, dtype = \"float32\", dev = this.device(\"cpu\", 0)) {\r\n          shape = typeof shape === \"number\" ? [shape] : shape;\r\n          return this.ctx.tensorEmpty(this.makeShapeTuple(shape), dtype, dev, null);\r\n      }\r\n      /**\r\n       * Create am uniform {@link Tensor} with given shape.\r\n       *\r\n       * @param shape The shape of the array.\r\n       * @param low The low value.\r\n       * @param high The high value.\r\n       * @param dev The device of the ndarray.\r\n       * @returns The created ndarray.\r\n       */\r\n      uniform(shape, low, high, dev) {\r\n          const ret = this.empty(shape, \"float32\", dev);\r\n          const size = shape.reduce((a, b) => {\r\n              return a * b;\r\n          }, 1);\r\n          const scale = high - low;\r\n          const input = new Float32Array(size);\r\n          for (let i = 0; i < input.length; ++i) {\r\n              input[i] = low + this.rng.randomFloat() * scale;\r\n          }\r\n          return ret.copyFrom(input);\r\n      }\r\n      /**\r\n       * Set the seed of the internal LinearCongruentialGenerator.\r\n       */\r\n      setSeed(seed) {\r\n          this.rng.setSeed(seed);\r\n      }\r\n      /**\r\n       * Sample index via top-p sampling.\r\n       *\r\n       * @param logits The input logits before normalization.\r\n       * @param temperature  The temperature factor, will take argmax if temperature = 0.0\r\n       * @param top_p The top_p\r\n       * @returns The sampled index.\r\n       */\r\n      sampleTopPFromLogits(logits, temperature, top_p) {\r\n          return this.ctx.sampleTopPFromLogits(logits, temperature, top_p, this.rng.randomFloat());\r\n      }\r\n      /**\r\n       * Sample index via top-p sampling.\r\n       *\r\n       * @param prob The distribution, i.e. logits after `applySoftmaxWithTemperature()` is performed.\r\n       * @param top_p The top_p\r\n       * @returns The sampled index.\r\n       */\r\n      sampleTopPFromProb(prob, top_p) {\r\n          return this.ctx.sampleTopPFromProb(prob, top_p, this.rng.randomFloat());\r\n      }\r\n      /**\r\n       * Apply repetition penalty to the logits.\r\n       * @param logits The input logits before penalty.\r\n       * @param token_ids The appeared token ids.\r\n       * @param penalty The penalty factor.\r\n       */\r\n      applyRepetitionPenalty(logits, token_ids, penalty) {\r\n          return this.ctx.applyRepetitionPenalty(logits, token_ids, penalty);\r\n      }\r\n      /**\r\n       * Apply presence and frequency penalty. This is an inplace operation.\r\n       * @param logits The input logits before penalty.\r\n       * @param token_ids The appeared token ids.\r\n       * @param token_freqs The number of times each token has appeared since last PrefillStep.\r\n       * token_freqs[i] is the frequency of token_ids[i], for all i. And all token_freqs should be >= 1.\r\n       * @param presence_penalty The penalty factor.\r\n       * @param frequency_penalty The penalty factor.\r\n       */\r\n      applyPresenceAndFrequencyPenalty(logits, token_ids, token_freqs, presence_penalty, frequency_penalty) {\r\n          return this.ctx.applyPresenceAndFrequencyPenalty(logits, token_ids, token_freqs, presence_penalty, frequency_penalty);\r\n      }\r\n      /**\r\n       * Apply softmax with temperature to the logits.\r\n       * @param logits The input logits before softmax w/ temperature.\r\n       * @param temperature The temperature factor.\r\n       */\r\n      applySoftmaxWithTemperature(logits, temperature) {\r\n          return this.ctx.applySoftmaxWithTemperature(logits, temperature);\r\n      }\r\n      /**\r\n       * Bind canvas to the current WebGPU context\r\n       * @param canvas The canvas.\r\n       */\r\n      bindCanvas(canvas) {\r\n          var _a;\r\n          (_a = this.lib.webGPUContext) === null || _a === void 0 ? void 0 : _a.bindCanvas(canvas);\r\n      }\r\n      /**\r\n       * Show image in canvas.\r\n       *\r\n       * @param dataRGBA Image array in height x width uint32 Tensor RGBA format on GPU.\r\n       */\r\n      showImage(dataRGBA) {\r\n          var _a;\r\n          if (dataRGBA.shape.length != 2) {\r\n              throw Error(\"Require a height x width uint32 Tensor in RGBA\" +\r\n                  \"get shape=\" + dataRGBA.shape.toString() + \" instead.\");\r\n          }\r\n          if (dataRGBA.device.deviceType != DeviceStrToEnum.webgpu) {\r\n              throw new Error(\"Can only run showImage on WebGPU array, \" +\r\n                  \"get \" + DeviceEnumToStr[dataRGBA.device.deviceType] + \" instead.\");\r\n          }\r\n          if (dataRGBA.dtype != \"uint32\") {\r\n              throw Error(\"Require a height x width uint32 Tensor in RGBA, \" +\r\n                  \"get \" + dataRGBA.dtype + \" instead.\");\r\n          }\r\n          (_a = this.lib.webGPUContext) === null || _a === void 0 ? void 0 : _a.drawImageFromBuffer(dataRGBA.getDataPtr(), dataRGBA.shape[0], dataRGBA.shape[1]);\r\n      }\r\n      /**\r\n       * Clear canvas\r\n       */\r\n      clearCanvas() {\r\n          var _a;\r\n          (_a = this.lib.webGPUContext) === null || _a === void 0 ? void 0 : _a.clearCanvas();\r\n      }\r\n      /**\r\n       * Create an tuple {@link TVMArray} input array.\r\n       *\r\n       * The input array can be passed to tvm runtime function\r\n       * and needs to b explicitly disposed.\r\n       *\r\n       * @param inputs The input array\r\n       * @returns The result array.\r\n       */\r\n      makeTVMArray(inputs) {\r\n          const CALL_STACK_LIMIT = 30000;\r\n          const inputsLength = inputs.length;\r\n          if (inputsLength <= CALL_STACK_LIMIT) {\r\n              return this.ctx.arrayMake(...inputs);\r\n          }\r\n          // If too many elements, TypeScript would complain `Maximum call stack size exceeded`\r\n          // So we make several arrays and concatenate them\r\n          const listOfArrays = [];\r\n          for (let begin = 0; begin < inputsLength; begin += CALL_STACK_LIMIT) {\r\n              const end = Math.min(inputsLength, begin + CALL_STACK_LIMIT);\r\n              const chunk = inputs.slice(begin, end);\r\n              listOfArrays.push(this.ctx.arrayMake(...chunk));\r\n          }\r\n          return this.ctx.arrayConcat(...listOfArrays);\r\n      }\r\n      /**\r\n       * Join a sequence of Tensors that represent embeddings.\r\n       * @param inputs A list of embeddings in Tensors, each array i has shape (m_i, hidden_size).\r\n       * @returns An Tensor of shape (\\sum_{i} {m}, hidden_size)\r\n       */\r\n      concatEmbeddings(embeddings) {\r\n          // 1. Check shape validity\r\n          const hidden_size = embeddings[0].shape[1];\r\n          embeddings.forEach((input) => {\r\n              if (input.shape.length !== 2 || input.shape[1] !== hidden_size) {\r\n                  throw new Error(\"Expect embeddings to concatenate have shape (m_i, hidden_size).\");\r\n              }\r\n          });\r\n          // 2. Call global func\r\n          if (this.ctx.concatEmbeddings === undefined) {\r\n              throw new Error(\"Global function tvmjs.runtime.ConcatEmbeddings was \" +\r\n                  \"not found, but called concatEmbeddings.\");\r\n          }\r\n          return this.ctx.concatEmbeddings(...embeddings);\r\n      }\r\n      /**\r\n       * Create a shape tuple to pass to runtime.\r\n       * @param shape The shape .\r\n       * @returns The created shape tuple.\r\n       */\r\n      makeShapeTuple(shape) {\r\n          const shapeArray = shape.map((value) => new Scalar(value, \"int\"));\r\n          return this.ctx.makeShapeTuple(...shapeArray);\r\n      }\r\n      /**\r\n       * Get type index from type key.\r\n       * @param typeKey The type key.\r\n       * @returns The corresponding type index.\r\n       */\r\n      typeKey2Index(typeKey) {\r\n          const stack = this.lib.getOrAllocCallStack();\r\n          const typeKeyOffset = stack.allocByteArrayForString(typeKey);\r\n          const outOffset = stack.allocPtrArray(1);\r\n          const outPtr = stack.ptrFromOffset(outOffset);\r\n          stack.commitToWasmMemory(outOffset);\r\n          this.lib.checkCall(this.lib.exports.TVMFFITypeKeyToIndex(stack.ptrFromOffset(typeKeyOffset), outPtr));\r\n          const typeIndex = this.memory.loadU32(outPtr);\r\n          this.lib.recycleCallStack(stack);\r\n          return typeIndex;\r\n      }\r\n      /**\r\n       * Register an object constructor.\r\n       * @param typeKey The name of the function.\r\n       * @param func Function to be registered.\r\n       * @param override Whether overwrite function in existing registry.\r\n       */\r\n      registerObjectConstructor(typeKey, func, override = false) {\r\n          const typeIndex = this.typeKey2Index(typeKey);\r\n          if (this.objFactory.has(typeIndex)) {\r\n              if (!override) {\r\n                  throw new Error(\"Type \" + typeKey + \" already registered\");\r\n              }\r\n          }\r\n          this.objFactory.set(typeIndex, func);\r\n      }\r\n      /**\r\n       * Wrap a function obtained from tvm runtime as AsyncPackedFunc\r\n       * through the asyncify mechanism\r\n       *\r\n       * You only need to call it if the function may contain callback into async\r\n       * JS function via asynctify. A common one can be GPU synchronize.\r\n       *\r\n       * It is always safe to wrap any function as Asynctify, however you do need\r\n       * to make sure you use await when calling the funciton.\r\n       *\r\n       * @param func The PackedFunc.\r\n       * @returns The wrapped AsyncPackedFunc\r\n       */\r\n      wrapAsyncifyPackedFunc(func) {\r\n          const asyncFunc = this.asyncifyHandler.wrapExport(func);\r\n          asyncFunc.dispose = func.dispose;\r\n          asyncFunc._tvmPackedCell = func._tvmPackedCell;\r\n          return asyncFunc;\r\n      }\r\n      /**\r\n       * Register async function as asynctify callable in global environment.\r\n       *\r\n       * @param name The name of the function.\r\n       * @param func function to be registered.\r\n       * @param override Whether overwrite function in existing registry.\r\n       *\r\n       * @note This function is handled via asynctify mechanism\r\n       * The wasm needs to be compiled with Asynctify\r\n       */\r\n      registerAsyncifyFunc(name, func, override = false) {\r\n          const asyncWrapped = this.asyncifyHandler.wrapImport(func);\r\n          this.registerFunc(name, asyncWrapped, override);\r\n      }\r\n      /**\r\n       * Register an asyncfunction to be global function in the server.\r\n       *\r\n       * @param name The name of the function.\r\n       * @param func function to be registered.\r\n       * @param override Whether overwrite function in existing registry.\r\n       *\r\n       * @note The async function will only be used for serving remote calls in the rpc\r\n       * These functions contains explicit continuation\r\n       */\r\n      registerAsyncServerFunc(name, func, override = false) {\r\n          const asyncVariant = (...args) => {\r\n              const fargs = args.slice(0, args.length - 1);\r\n              // need to keep it alive until callback is fulfilled.\r\n              const callback = this.detachFromCurrentScope(args[args.length - 1]);\r\n              const promise = func(...fargs);\r\n              const onFulfilled = (rv) => {\r\n                  callback(this.scalar(AsyncCallbackCode.kReturn, \"int32\"), rv);\r\n                  callback.dispose();\r\n              };\r\n              const onRejected = (reason) => {\r\n                  callback(this.scalar(AsyncCallbackCode.kException, \"int32\"), reason.toString());\r\n                  callback.dispose();\r\n              };\r\n              promise.then(onFulfilled, onRejected);\r\n          };\r\n          this.registerFunc(\"__async.\" + name, asyncVariant, override);\r\n      }\r\n      /**\r\n       * Asynchronously load webgpu pipelines when possible.\r\n       * @param mod The input module.\r\n       */\r\n      asyncLoadWebGPUPipelines(mod) {\r\n          return __awaiter(this, void 0, void 0, function* () {\r\n              if (this.lib.webGPUContext === undefined)\r\n                  throw Error(\"WebGPU not initialied\");\r\n              const webgpuContext = this.lib.webGPUContext;\r\n              this.beginScope();\r\n              const fmap_str = mod.getFunction(\"webgpu.get_fmap\", true)();\r\n              const fmap = JSON.parse(fmap_str);\r\n              const fGetShader = this.detachFromCurrentScope(mod.getFunction(\"webgpu.get_shader\"));\r\n              const fUpdatePrebuild = this.detachFromCurrentScope(mod.getFunction(\"webgpu.update_prebuild\"));\r\n              this.endScope();\r\n              const perf = getPerformance();\r\n              const tstart = perf.now();\r\n              let tlastReport = tstart;\r\n              let finishCounter = 0;\r\n              const fmapEntries = Object.entries(fmap);\r\n              let allEvents = Promise.resolve();\r\n              for (const [key, finfo] of fmapEntries) {\r\n                  const code = fGetShader(key);\r\n                  assert(key === finfo.name);\r\n                  const event = webgpuContext.createShaderAsync(finfo, code).then((func) => {\r\n                      this.beginScope();\r\n                      fUpdatePrebuild(key, func);\r\n                      this.endScope();\r\n                  }).then(() => {\r\n                      finishCounter += 1;\r\n                      const tend = perf.now();\r\n                      // skip report if gap is smaller than 1000\r\n                      if ((tend - tlastReport) < 1000 && finishCounter != fmapEntries.length) {\r\n                          return;\r\n                      }\r\n                      tlastReport = tend;\r\n                      const timeElapsed = Math.ceil((perf.now() - tstart) / 1000);\r\n                      // report\r\n                      for (let j = 0; j < this.initProgressCallback.length; ++j) {\r\n                          const progress = finishCounter / fmapEntries.length;\r\n                          let text = \"Loading GPU shader modules[\" + finishCounter + \"/\" + fmapEntries.length + \"]: \";\r\n                          text += Math.floor(progress * 100).toString() + \"% completed, \";\r\n                          text += timeElapsed + \" secs elapsed.\";\r\n                          this.initProgressCallback[j]({\r\n                              progress: progress,\r\n                              timeElapsed: timeElapsed,\r\n                              text: text\r\n                          });\r\n                      }\r\n                  });\r\n                  allEvents = Promise.all([allEvents, event]).then(() => { });\r\n              }\r\n              yield allEvents;\r\n              assert(finishCounter === fmapEntries.length);\r\n          });\r\n      }\r\n      /**\r\n       * Initialize webgpu in the runtime.\r\n       * @param device The given GPU device.\r\n       */\r\n      initWebGPU(device) {\r\n          device.addEventListener(\"uncapturederror\", (event) => {\r\n              console.error(\"A WebGPU error was not captured: \", event);\r\n          });\r\n          device.lost.then((info) => {\r\n              if (this.deviceLostIsError) {\r\n                  console.error(\"Device lost, calling Instance.dispose(). Please initialize again. \", info);\r\n                  this.dispose();\r\n              }\r\n          });\r\n          this.deviceLostIsError = true;\r\n          const webGPUContext = new WebGPUContext(this.memory, device);\r\n          this.registerFunc(\"wasm.WebGPUDeviceAPI\", (name) => {\r\n              return webGPUContext.getDeviceAPI(name);\r\n          });\r\n          this.registerFunc(\"wasm.WebGPUCreateShader\", (info, code) => {\r\n              const finfo = JSON.parse(info);\r\n              return webGPUContext.createShader(finfo, code);\r\n          });\r\n          this.registerAsyncServerFunc(\"wasm.WebGPUWaitForTasks\", () => __awaiter(this, void 0, void 0, function* () {\r\n              yield webGPUContext.sync();\r\n          }));\r\n          if (this.asyncifyHandler.enabled()) {\r\n              this.registerAsyncifyFunc(\"__asyncify.WebGPUWaitForTasks\", () => __awaiter(this, void 0, void 0, function* () {\r\n                  yield webGPUContext.sync();\r\n              }));\r\n          }\r\n          this.lib.webGPUContext = webGPUContext;\r\n      }\r\n      /** Register all object factory */\r\n      registerObjectFactoryFuncs() {\r\n          this.registerObjectConstructor(\"ffi.Array\", (handle, lib, ctx) => {\r\n              return new TVMArray(handle, lib, ctx);\r\n          });\r\n          this.registerObjectConstructor(\"ffi.Module\", (handle, lib, ctx) => {\r\n              return new Module(handle, lib, ctx);\r\n          });\r\n      }\r\n      /** Register global packed functions needed by the backend to the env. */\r\n      registerEnvGlobalPackedFuncs() {\r\n          // Register the timer function to enable the time_evaluator.\r\n          const perf = getPerformance();\r\n          // Helper function to time the finvoke\r\n          const timeExecution = (finvoke, dev, nstep, repeat, minRepeatMs, limitZeroTimeIterations, cooldownIntervalMs, repeatsToCooldown) => __awaiter(this, void 0, void 0, function* () {\r\n              // detach and explicit dispose when tasks is fullfilled\r\n              // the promise will immediately return and we need to makesure\r\n              // finvoke do not get recycled.\r\n              this.ctx.detachFromCurrentScope(finvoke);\r\n              finvoke(this.scalar(1, \"int32\"));\r\n              yield dev.sync();\r\n              const result = [];\r\n              let setupNumber = nstep;\r\n              for (let i = 0; i < repeat; ++i) {\r\n                  let durationMs = 0.0;\r\n                  let absoluteZeroTimes = 0;\r\n                  do {\r\n                      if (durationMs > 0.0) {\r\n                          const golden_ratio = 1.618;\r\n                          setupNumber = Math.floor(Math.max(minRepeatMs / (durationMs / setupNumber) + 1, setupNumber * golden_ratio));\r\n                      }\r\n                      const tstart = perf.now();\r\n                      finvoke(this.scalar(setupNumber, \"int32\"));\r\n                      yield dev.sync();\r\n                      const tend = perf.now();\r\n                      durationMs = tend - tstart;\r\n                      if (durationMs === 0) {\r\n                          absoluteZeroTimes++;\r\n                      }\r\n                  } while (durationMs < minRepeatMs && absoluteZeroTimes < limitZeroTimeIterations);\r\n                  const speed = durationMs / setupNumber / 1000;\r\n                  result.push(speed);\r\n                  if (cooldownIntervalMs > 0.0 && (i % repeatsToCooldown) === 0) {\r\n                      yield new Promise(r => setTimeout(r, cooldownIntervalMs));\r\n                  }\r\n              }\r\n              const ret = new Float64Array(result.length);\r\n              ret.set(result);\r\n              // dispose finvoke\r\n              finvoke.dispose();\r\n              return new Uint8Array(ret.buffer);\r\n          });\r\n          const addOne = (x) => __awaiter(this, void 0, void 0, function* () {\r\n              yield new Promise(resolve => setTimeout(resolve, 100));\r\n              return x + 1;\r\n          });\r\n          this.registerAsyncServerFunc(\"wasm.TimeExecution\", timeExecution);\r\n          this.registerAsyncServerFunc(\"testing.asyncAddOne\", addOne);\r\n      }\r\n      createPackedFuncFromSafeCallType(func) {\r\n          let findex = this.env.packedCFuncTable.length;\r\n          if (this.env.packedCFuncTableFreeId.length != 0) {\r\n              findex = this.env.packedCFuncTableFreeId.pop();\r\n          }\r\n          else {\r\n              this.env.packedCFuncTable.push(undefined);\r\n          }\r\n          this.env.packedCFuncTable[findex] = func;\r\n          const stack = this.lib.getOrAllocCallStack();\r\n          const outOffset = stack.allocPtrArray(1);\r\n          const outPtr = stack.ptrFromOffset(outOffset);\r\n          this.lib.checkCall(this.exports\r\n              .TVMFFIWasmFunctionCreate(findex, outPtr));\r\n          const ret = this.makePackedFunc(this.memory.loadPointer(outPtr));\r\n          this.lib.recycleCallStack(stack);\r\n          return ret;\r\n      }\r\n      /**\r\n       * Set packed function arguments into the location indicated by argsValue and argsCode.\r\n       * Allocate new temporary space from the stack if necessary.\r\n       *\r\n       * @parma stack The call stack\r\n       * @param args  The input arguments.\r\n       * @param packedArgs The offset of packedArgs.\r\n       */\r\n      setPackedArguments(stack, args, packedArgs) {\r\n          for (let i = 0; i < args.length; ++i) {\r\n              let val = args[i];\r\n              const tp = typeof val;\r\n              const argOffset = packedArgs + i * 16 /* SizeOf.TVMFFIAny */;\r\n              const argTypeIndexOffset = argOffset;\r\n              const argZeroPaddingOffset = argOffset + 4 /* SizeOf.I32 */;\r\n              const argValueOffset = argOffset + 4 /* SizeOf.I32 */ * 2;\r\n              // Convert string[] to a TVMArray of, hence treated as a TVMObject\r\n              if (val instanceof Array && val.every(e => typeof e === \"string\")) {\r\n                  const tvmStringArray = [];\r\n                  val.forEach(e => { tvmStringArray.push(e); });\r\n                  val = this.makeTVMArray(tvmStringArray);\r\n              }\r\n              // clear off the extra zero padding before ptr storage\r\n              stack.storeI32(argZeroPaddingOffset, 0);\r\n              // clear off the extra zero padding after ptr storage\r\n              stack.storeI32(argValueOffset + 4 /* SizeOf.I32 */, 0);\r\n              if (val instanceof Tensor) {\r\n                  if (!val.isView) {\r\n                      stack.storeI32(argTypeIndexOffset, 70 /* TypeIndex.kTVMFFITensor */);\r\n                      stack.storePtr(argValueOffset, val.getHandle());\r\n                  }\r\n                  else {\r\n                      stack.storeI32(argTypeIndexOffset, 7 /* TypeIndex.kTVMFFIDLTensorPtr */);\r\n                      stack.storePtr(argValueOffset, val.getHandle());\r\n                  }\r\n              }\r\n              else if (val instanceof Scalar) {\r\n                  if (val.dtype.startsWith(\"int\") || val.dtype.startsWith(\"uint\")) {\r\n                      stack.storeI32(argTypeIndexOffset, 1 /* TypeIndex.kTVMFFIInt */);\r\n                      stack.storeI64(argValueOffset, val.value);\r\n                  }\r\n                  else if (val.dtype.startsWith(\"float\")) {\r\n                      stack.storeI32(argTypeIndexOffset, 3 /* TypeIndex.kTVMFFIFloat */);\r\n                      stack.storeF64(argValueOffset, val.value);\r\n                  }\r\n                  else {\r\n                      assert(val.dtype === \"handle\", \"Expect handle\");\r\n                      stack.storeI32(argTypeIndexOffset, 4 /* TypeIndex.kTVMFFIOpaquePtr */);\r\n                      stack.storePtr(argValueOffset, val.value);\r\n                  }\r\n              }\r\n              else if (val instanceof DLDevice) {\r\n                  stack.storeI32(argTypeIndexOffset, 6 /* TypeIndex.kTVMFFIDevice */);\r\n                  stack.storeI32(argValueOffset, val.deviceType);\r\n                  stack.storeI32(argValueOffset + 4 /* SizeOf.I32 */, val.deviceId);\r\n              }\r\n              else if (tp === \"boolean\") {\r\n                  stack.storeI32(argTypeIndexOffset, 2 /* TypeIndex.kTVMFFIBool */);\r\n                  stack.storeI64(argValueOffset, val ? 1 : 0);\r\n              }\r\n              else if (tp === \"number\") {\r\n                  stack.storeI32(argTypeIndexOffset, 3 /* TypeIndex.kTVMFFIFloat */);\r\n                  stack.storeF64(argValueOffset, val);\r\n                  // eslint-disable-next-line no-prototype-builtins\r\n              }\r\n              else if (tp === \"function\" && val.hasOwnProperty(\"_tvmPackedCell\")) {\r\n                  stack.storePtr(argValueOffset, val._tvmPackedCell.getHandle());\r\n                  stack.storeI32(argTypeIndexOffset, 68 /* TypeIndex.kTVMFFIFunction */);\r\n              }\r\n              else if (val === null || val === undefined) {\r\n                  stack.storeI32(argTypeIndexOffset, 0 /* TypeIndex.kTVMFFINone */);\r\n                  stack.storePtr(argValueOffset, 0);\r\n              }\r\n              else if (tp === \"string\") {\r\n                  stack.storeI32(argTypeIndexOffset, 8 /* TypeIndex.kTVMFFIRawStr */);\r\n                  stack.allocThenSetArgString(argValueOffset, val);\r\n              }\r\n              else if (val instanceof Uint8Array) {\r\n                  stack.storeI32(argTypeIndexOffset, 9 /* TypeIndex.kTVMFFIByteArrayPtr */);\r\n                  stack.allocThenSetArgBytes(argValueOffset, val);\r\n              }\r\n              else if (val instanceof Function) {\r\n                  val = this.toPackedFuncInternal(val, false);\r\n                  stack.tempArgs.push(val);\r\n                  stack.storeI32(argTypeIndexOffset, 68 /* TypeIndex.kTVMFFIFunction */);\r\n                  stack.storePtr(argValueOffset, val._tvmPackedCell.getHandle());\r\n              }\r\n              else if (val instanceof Module) {\r\n                  stack.storeI32(argTypeIndexOffset, 73 /* TypeIndex.kTVMFFIModule */);\r\n                  stack.storePtr(argValueOffset, val.getHandle());\r\n              }\r\n              else if (val instanceof TVMObject) {\r\n                  stack.storeI32(argTypeIndexOffset, val.typeIndex());\r\n                  stack.storePtr(argValueOffset, val.getHandle());\r\n              }\r\n              else {\r\n                  throw new Error(\"Unsupported argument type \" + tp + \" value=`\" + val.toString() + \"`\");\r\n              }\r\n          }\r\n      }\r\n      wrapJSFuncAsSafeCallType(func) {\r\n          const lib = this.lib;\r\n          return (\r\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n          self, packedArgs, numArgs, ret) => {\r\n              const jsArgs = [];\r\n              // use scope to track js values.\r\n              this.ctx.beginScope();\r\n              for (let i = 0; i < numArgs; ++i) {\r\n                  const argPtr = packedArgs + i * 16 /* SizeOf.TVMFFIAny */;\r\n                  const typeIndex = lib.memory.loadI32(argPtr);\r\n                  if (typeIndex >= 8 /* TypeIndex.kTVMFFIRawStr */) {\r\n                      // NOTE: the following code have limitations in asyncify mode.\r\n                      // The reason is that the TVMFFIAnyViewToOwnedAny will simply\r\n                      // get skipped during the rewinding process, causing memory failure\r\n                      if (!this.asyncifyHandler.isNormalStackState()) {\r\n                          throw Error(\"Cannot handle str/object argument callback in asyncify mode\");\r\n                      }\r\n                      lib.checkCall(lib.exports.TVMFFIAnyViewToOwnedAny(argPtr, argPtr));\r\n                  }\r\n                  jsArgs.push(this.retValueToJS(argPtr, true));\r\n              }\r\n              let rv;\r\n              try {\r\n                  rv = func(...jsArgs);\r\n              }\r\n              catch (error) {\r\n                  // error handling\r\n                  // store error via SetLastError\r\n                  this.ctx.endScope();\r\n                  const errKind = \"JSCallbackError\";\r\n                  const errMsg = error.message;\r\n                  const stack = lib.getOrAllocCallStack();\r\n                  const errKindOffset = stack.allocRawBytes(errKind.length + 1);\r\n                  stack.storeRawBytes(errKindOffset, StringToUint8Array(errKind));\r\n                  const errMsgOffset = stack.allocRawBytes(errMsg.length + 1);\r\n                  stack.storeRawBytes(errMsgOffset, StringToUint8Array(errMsg));\r\n                  stack.commitToWasmMemory();\r\n                  this.lib.exports.FTVMFFIErrorSetRaisedFromCStr(stack.ptrFromOffset(errKindOffset), stack.ptrFromOffset(errMsgOffset));\r\n                  this.lib.recycleCallStack(stack);\r\n                  return -1;\r\n              }\r\n              // normal return path\r\n              // recycle all js object value in function unless we want to retain them.\r\n              this.ctx.endScope();\r\n              if (rv !== undefined && rv !== null) {\r\n                  const stack = lib.getOrAllocCallStack();\r\n                  const argOffset = stack.allocRawBytes(16 /* SizeOf.TVMFFIAny */);\r\n                  this.setPackedArguments(stack, [rv], argOffset);\r\n                  stack.commitToWasmMemory();\r\n                  const argPtr = stack.ptrFromOffset(argOffset);\r\n                  lib.checkCall(lib.exports.TVMFFIAnyViewToOwnedAny(argPtr, ret));\r\n                  lib.recycleCallStack(stack);\r\n              }\r\n              return 0;\r\n          };\r\n      }\r\n      makePackedFunc(handle) {\r\n          const cell = new PackedFuncCell(handle, this.lib, this.ctx);\r\n          const packedFunc = (...args) => {\r\n              const stack = this.lib.getOrAllocCallStack();\r\n              const argsOffset = stack.allocRawBytes(16 /* SizeOf.TVMFFIAny */ * args.length);\r\n              this.setPackedArguments(stack, args, argsOffset);\r\n              const retOffset = stack.allocRawBytes(16 /* SizeOf.TVMFFIAny */);\r\n              // pre-store the result to be null\r\n              stack.storeI32(retOffset, 0 /* TypeIndex.kTVMFFINone */);\r\n              // clear off the extra zero padding before ptr storage\r\n              stack.storeI32(retOffset + 4 /* SizeOf.I32 */, 0);\r\n              stack.commitToWasmMemory();\r\n              this.lib.checkCall(this.exports.TVMFFIFunctionCall(cell.getHandle(), stack.ptrFromOffset(argsOffset), args.length, stack.ptrFromOffset(retOffset)));\r\n              const ret = this.retValueToJS(stack.ptrFromOffset(retOffset), false);\r\n              this.lib.recycleCallStack(stack);\r\n              return ret;\r\n          };\r\n          // Attach attributes to the function type.\r\n          // This is because javascript do not allow us to overload call.\r\n          const ret = packedFunc;\r\n          ret.dispose = () => {\r\n              cell.dispose();\r\n          };\r\n          ret._tvmPackedCell = cell;\r\n          return ret;\r\n      }\r\n      /**\r\n       * Creaye return value of the packed func. The value us auto-tracked for dispose.\r\n       * @param resultAnyPtr The location of rvalue\r\n       * @param callbackArg Whether it is being used in callbackArg.\r\n       * @returns The JS value.\r\n       */\r\n      retValueToJS(resultAnyPtr, callbackArg) {\r\n          const typeIndex = this.memory.loadI32(resultAnyPtr);\r\n          const valuePtr = resultAnyPtr + 4 /* SizeOf.I32 */ * 2;\r\n          switch (typeIndex) {\r\n              case 0 /* TypeIndex.kTVMFFINone */: return undefined;\r\n              case 2 /* TypeIndex.kTVMFFIBool */:\r\n                  return this.memory.loadI64(valuePtr) != 0;\r\n              case 1 /* TypeIndex.kTVMFFIInt */:\r\n                  return this.memory.loadI64(valuePtr);\r\n              case 3 /* TypeIndex.kTVMFFIFloat */:\r\n                  return this.memory.loadF64(valuePtr);\r\n              case 4 /* TypeIndex.kTVMFFIOpaquePtr */: {\r\n                  return this.memory.loadPointer(valuePtr);\r\n              }\r\n              case 70 /* TypeIndex.kTVMFFITensor */: {\r\n                  return this.ctx.attachToCurrentScope(new Tensor(this.memory.loadPointer(valuePtr), this.lib, this.ctx, false));\r\n              }\r\n              case 7 /* TypeIndex.kTVMFFIDLTensorPtr */: {\r\n                  assert(callbackArg);\r\n                  // no need to attach as we are only looking at view\r\n                  return new Tensor(this.memory.loadPointer(valuePtr), this.lib, this.ctx, true);\r\n              }\r\n              case 68 /* TypeIndex.kTVMFFIFunction */: {\r\n                  return this.ctx.attachToCurrentScope(this.makePackedFunc(this.memory.loadPointer(valuePtr)));\r\n              }\r\n              case 6 /* TypeIndex.kTVMFFIDevice */: {\r\n                  const deviceType = this.memory.loadI32(valuePtr);\r\n                  const deviceId = this.memory.loadI32(valuePtr + 4 /* SizeOf.I32 */);\r\n                  return this.device(deviceType, deviceId);\r\n              }\r\n              case 5 /* TypeIndex.kTVMFFIDataType */: {\r\n                  // simply return dtype as tring to keep things simple\r\n                  this.lib.checkCall(this.lib.exports.TVMFFIDataTypeToString(valuePtr, valuePtr));\r\n                  const strObjPtr = this.memory.loadPointer(valuePtr);\r\n                  const result = this.memory.loadByteArrayAsString(strObjPtr + 24 /* SizeOf.ObjectHeader */);\r\n                  this.lib.checkCall(this.lib.exports.TVMFFIObjectDecRef(strObjPtr));\r\n                  return result;\r\n              }\r\n              case 11 /* TypeIndex.kTVMFFISmallStr */: {\r\n                  return this.memory.loadSmallStr(resultAnyPtr);\r\n              }\r\n              case 65 /* TypeIndex.kTVMFFIStr */: {\r\n                  const strObjPtr = this.memory.loadPointer(valuePtr);\r\n                  const result = this.memory.loadByteArrayAsString(strObjPtr + 24 /* SizeOf.ObjectHeader */);\r\n                  this.lib.checkCall(this.lib.exports.TVMFFIObjectDecRef(strObjPtr));\r\n                  return result;\r\n              }\r\n              case 12 /* TypeIndex.kTVMFFISmallBytes */: {\r\n                  return this.memory.loadSmallBytes(resultAnyPtr);\r\n              }\r\n              case 66 /* TypeIndex.kTVMFFIBytes */: {\r\n                  const bytesObjPtr = this.memory.loadPointer(valuePtr);\r\n                  const result = this.memory.loadByteArrayAsBytes(bytesObjPtr + 24 /* SizeOf.ObjectHeader */);\r\n                  this.lib.checkCall(this.lib.exports.TVMFFIObjectDecRef(bytesObjPtr));\r\n                  return result;\r\n              }\r\n              default: {\r\n                  if (typeIndex >= 64 /* TypeIndex.kTVMFFIStaticObjectBegin */) {\r\n                      const obj = new TVMObject(this.memory.loadPointer(valuePtr), this.lib, this.ctx);\r\n                      const func = this.objFactory.get(obj.typeIndex());\r\n                      if (func != undefined) {\r\n                          return this.ctx.attachToCurrentScope(func(obj.getHandle(), this.lib, this.ctx));\r\n                      }\r\n                      else {\r\n                          return this.ctx.attachToCurrentScope(obj);\r\n                      }\r\n                  }\r\n                  else {\r\n                      throw new Error(\"Unsupported return type code=\" + typeIndex);\r\n                  }\r\n              }\r\n          }\r\n      }\r\n  }\r\n  /**\r\n   * Asynchrously instantiate a new {@link Instance}.\r\n   *\r\n   * importObject can also be a {@link LibraryProvider} object,\r\n   * a WASI object, or an object containing wasmLibraryProvider field.\r\n   * We can take benefit of syslib implementations from the Emscripten\r\n   * by passing its generated js Module as the imports.\r\n   *\r\n   * @param bufferSource The source to be compiled.\r\n   * @param importObject The import objects.\r\n   * @param logger The system logger.\r\n   */\r\n  function instantiate(bufferSource, importObject = {}, logger = console.log) {\r\n      const env = new Environment(importObject, logger);\r\n      return WebAssembly.instantiate(bufferSource, env.imports).then((result) => {\r\n          return new Instance(result.module, {}, result.instance, env);\r\n      });\r\n  }\n\n  /*\r\n   * Licensed to the Apache Software Foundation (ASF) under one\r\n   * or more contributor license agreements.  See the NOTICE file\r\n   * distributed with this work for additional information\r\n   * regarding copyright ownership.  The ASF licenses this file\r\n   * to you under the Apache License, Version 2.0 (the\r\n   * \"License\"); you may not use this file except in compliance\r\n   * with the License.  You may obtain a copy of the License at\r\n   *\r\n   *   http://www.apache.org/licenses/LICENSE-2.0\r\n   *\r\n   * Unless required by applicable law or agreed to in writing,\r\n   * software distributed under the License is distributed on an\r\n   * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n   * KIND, either express or implied.  See the License for the\r\n   * specific language governing permissions and limitations\r\n   * under the License.\r\n   */\r\n  var RPCServerState;\r\n  (function (RPCServerState) {\r\n      RPCServerState[RPCServerState[\"InitHeader\"] = 0] = \"InitHeader\";\r\n      RPCServerState[RPCServerState[\"InitHeaderKey\"] = 1] = \"InitHeaderKey\";\r\n      RPCServerState[RPCServerState[\"InitServer\"] = 2] = \"InitServer\";\r\n      RPCServerState[RPCServerState[\"WaitForCallback\"] = 3] = \"WaitForCallback\";\r\n      RPCServerState[RPCServerState[\"ReceivePacketHeader\"] = 4] = \"ReceivePacketHeader\";\r\n      RPCServerState[RPCServerState[\"ReceivePacketBody\"] = 5] = \"ReceivePacketBody\";\r\n  })(RPCServerState || (RPCServerState = {}));\r\n  /** RPC magic header */\r\n  const RPC_MAGIC = 0xff271;\r\n  /**\r\n   * An utility class to read from binary bytes.\r\n   */\r\n  class ByteStreamReader {\r\n      constructor(bytes) {\r\n          this.offset = 0;\r\n          this.bytes = bytes;\r\n      }\r\n      readU32() {\r\n          const i = this.offset;\r\n          const b = this.bytes;\r\n          const val = b[i] | (b[i + 1] << 8) | (b[i + 2] << 16) | (b[i + 3] << 24);\r\n          this.offset += 4;\r\n          return val;\r\n      }\r\n      readU64() {\r\n          const val = this.readU32();\r\n          this.offset += 4;\r\n          return val;\r\n      }\r\n      readByteArray() {\r\n          const len = this.readU64();\r\n          assert(this.offset + len <= this.bytes.byteLength);\r\n          const ret = new Uint8Array(len);\r\n          ret.set(this.bytes.slice(this.offset, this.offset + len));\r\n          this.offset += len;\r\n          return ret;\r\n      }\r\n  }\r\n  /**\r\n   * A websocket based RPC\r\n   */\r\n  class RPCServer {\r\n      constructor(url, key, getImports, logger = console.log, tensorCacheUrl = \"\", tensorCacheDevice = \"cpu\", initProgressCallback = undefined, asyncOnServerLoad = undefined) {\r\n          this.state = RPCServerState.InitHeader;\r\n          this.pendingSend = Promise.resolve();\r\n          this.inst = undefined;\r\n          this.globalObjects = [];\r\n          this.currPacketLength = 0;\r\n          this.remoteKeyLength = 0;\r\n          this.pendingBytes = 0;\r\n          this.buffredBytes = 0;\r\n          this.messageQueue = [];\r\n          this.url = url;\r\n          this.key = key;\r\n          this.name = \"WebSocketRPCServer[\" + this.key + \"]: \";\r\n          this.getImports = getImports;\r\n          this.logger = logger;\r\n          this.tensorCacheUrl = tensorCacheUrl;\r\n          this.tensorCacheDevice = tensorCacheDevice;\r\n          this.initProgressCallback = initProgressCallback;\r\n          this.asyncOnServerLoad = asyncOnServerLoad;\r\n          this.checkLittleEndian();\r\n          this.socket = createWebSocket(url);\r\n          this.socket.binaryType = \"arraybuffer\";\r\n          this.socket.addEventListener(\"open\", (event) => {\r\n              return this.onOpen(event);\r\n          });\r\n          this.socket.addEventListener(\"message\", (event) => {\r\n              return this.onMessage(event);\r\n          });\r\n          this.socket.addEventListener(\"close\", (event) => {\r\n              return this.onClose(event);\r\n          });\r\n      }\r\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n      onClose(_event) {\r\n          if (this.inst !== undefined) {\r\n              this.globalObjects.forEach(obj => {\r\n                  obj.dispose();\r\n              });\r\n              this.log(this.inst.runtimeStatsText());\r\n              this.inst.dispose();\r\n          }\r\n          if (this.state === RPCServerState.ReceivePacketHeader) {\r\n              this.log(\"Closing the server in clean state\");\r\n              this.log(\"Automatic reconnecting..\");\r\n              new RPCServer(this.url, this.key, this.getImports, this.logger, this.tensorCacheUrl, this.tensorCacheDevice, this.initProgressCallback, this.asyncOnServerLoad);\r\n          }\r\n          else {\r\n              this.log(\"Closing the server, final state=\" + this.state);\r\n          }\r\n      }\r\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n      onOpen(_event) {\r\n          // Send the headers\r\n          let bkey = StringToUint8Array(\"server:\" + this.key);\r\n          bkey = bkey.slice(0, bkey.length - 1);\r\n          const intbuf = new Int32Array(1);\r\n          intbuf[0] = RPC_MAGIC;\r\n          this.socket.send(intbuf);\r\n          intbuf[0] = bkey.length;\r\n          this.socket.send(intbuf);\r\n          this.socket.send(bkey);\r\n          this.log(\"connected...\");\r\n          // request bytes: magic + keylen\r\n          this.requestBytes(4 /* SizeOf.I32 */ + 4 /* SizeOf.I32 */);\r\n          this.state = RPCServerState.InitHeader;\r\n      }\r\n      /** Handler for raw message. */\r\n      onMessage(event) {\r\n          const buffer = event.data;\r\n          this.buffredBytes += buffer.byteLength;\r\n          this.messageQueue.push(new Uint8Array(buffer));\r\n          this.processEvents();\r\n      }\r\n      /** Process ready events. */\r\n      processEvents() {\r\n          while (this.buffredBytes >= this.pendingBytes && this.pendingBytes != 0) {\r\n              this.onDataReady();\r\n          }\r\n      }\r\n      /** State machine to handle each request */\r\n      onDataReady() {\r\n          switch (this.state) {\r\n              case RPCServerState.InitHeader: {\r\n                  this.handleInitHeader();\r\n                  break;\r\n              }\r\n              case RPCServerState.InitHeaderKey: {\r\n                  this.handleInitHeaderKey();\r\n                  break;\r\n              }\r\n              case RPCServerState.ReceivePacketHeader: {\r\n                  this.currPacketHeader = this.readFromBuffer(8 /* SizeOf.I64 */);\r\n                  const reader = new ByteStreamReader(this.currPacketHeader);\r\n                  this.currPacketLength = reader.readU64();\r\n                  assert(this.pendingBytes === 0);\r\n                  this.requestBytes(this.currPacketLength);\r\n                  this.state = RPCServerState.ReceivePacketBody;\r\n                  break;\r\n              }\r\n              case RPCServerState.ReceivePacketBody: {\r\n                  const body = this.readFromBuffer(this.currPacketLength);\r\n                  assert(this.pendingBytes === 0);\r\n                  assert(this.currPacketHeader !== undefined);\r\n                  this.onPacketReady(this.currPacketHeader, body);\r\n                  break;\r\n              }\r\n              case RPCServerState.WaitForCallback: {\r\n                  assert(this.pendingBytes === 0);\r\n                  break;\r\n              }\r\n              default: {\r\n                  throw new Error(\"Cannot handle state \" + this.state);\r\n              }\r\n          }\r\n      }\r\n      onPacketReady(header, body) {\r\n          if (this.inst === undefined) {\r\n              // initialize server.\r\n              const reader = new ByteStreamReader(body);\r\n              // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n              reader.readU32();\r\n              // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n              Uint8ArrayToString(reader.readByteArray());\r\n              const nargs = reader.readU32();\r\n              const args = [];\r\n              for (let i = 0; i < nargs; ++i) {\r\n                  const typeIndex = reader.readU32();\r\n                  if (typeIndex === 8 /* TypeIndex.kTVMFFIRawStr */) {\r\n                      const str = Uint8ArrayToString(reader.readByteArray());\r\n                      args.push(str);\r\n                  }\r\n                  else if (typeIndex === 9 /* TypeIndex.kTVMFFIByteArrayPtr */) {\r\n                      args.push(reader.readByteArray());\r\n                  }\r\n                  else {\r\n                      throw new Error(\"cannot support type index \" + typeIndex);\r\n                  }\r\n              }\r\n              this.onInitServer(args, header, body);\r\n          }\r\n          else {\r\n              assert(this.serverRecvData !== undefined);\r\n              this.serverRecvData(header, body);\r\n              this.requestBytes(8 /* SizeOf.I64 */);\r\n              this.state = RPCServerState.ReceivePacketHeader;\r\n          }\r\n      }\r\n      /** Event handler during server initialization. */\r\n      onInitServer(args, header, body) {\r\n          // start the server\r\n          assert(args[0] === \"rpc.WasmSession\");\r\n          assert(this.pendingBytes === 0);\r\n          const asyncInitServer = () => __awaiter(this, void 0, void 0, function* () {\r\n              assert(args[1] instanceof Uint8Array);\r\n              const inst = yield instantiate(args[1].buffer, this.getImports(), this.logger);\r\n              try {\r\n                  const output = yield detectGPUDevice();\r\n                  if (output !== undefined) {\r\n                      const label = \"WebGPU: \" + output.adapterInfo.description;\r\n                      this.log(\"Initialize GPU device: \" + label);\r\n                      inst.initWebGPU(output.device);\r\n                  }\r\n                  else {\r\n                      this.log(\"Cannot find WebGPU device in the env\");\r\n                  }\r\n              }\r\n              catch (err) {\r\n                  this.log(\"Cannnot initialize WebGPU, \" + err.toString());\r\n              }\r\n              this.inst = inst;\r\n              // begin scope to allow handling of objects\r\n              this.inst.beginScope();\r\n              if (this.initProgressCallback !== undefined) {\r\n                  this.inst.registerInitProgressCallback(this.initProgressCallback);\r\n              }\r\n              if (this.tensorCacheUrl.length != 0) {\r\n                  if (this.tensorCacheDevice === \"cpu\") {\r\n                      yield this.inst.fetchTensorCache(this.tensorCacheUrl, this.inst.cpu());\r\n                  }\r\n                  else {\r\n                      assert(this.tensorCacheDevice === \"webgpu\");\r\n                      yield this.inst.fetchTensorCache(this.tensorCacheUrl, this.inst.webgpu());\r\n                  }\r\n              }\r\n              assert(this.inst !== undefined);\r\n              if (this.asyncOnServerLoad !== undefined) {\r\n                  yield this.asyncOnServerLoad(this.inst);\r\n              }\r\n              const fcreate = this.inst.getGlobalFunc(\"rpc.CreateEventDrivenServer\");\r\n              const messageHandler = fcreate((cbytes) => {\r\n                  assert(this.inst !== undefined);\r\n                  if (this.socket.readyState === 1) {\r\n                      // WebSocket will automatically close the socket\r\n                      // if we burst send data that exceeds its internal buffer\r\n                      // wait a bit before we send next one.\r\n                      const sendDataWithCongestionControl = () => __awaiter(this, void 0, void 0, function* () {\r\n                          const packetSize = 4 << 10;\r\n                          const maxBufferAmount = 4 * packetSize;\r\n                          const waitTimeMs = 20;\r\n                          for (let offset = 0; offset < cbytes.length; offset += packetSize) {\r\n                              const end = Math.min(offset + packetSize, cbytes.length);\r\n                              while (this.socket.bufferedAmount >= maxBufferAmount) {\r\n                                  yield new Promise((r) => setTimeout(r, waitTimeMs));\r\n                              }\r\n                              this.socket.send(cbytes.slice(offset, end));\r\n                          }\r\n                      });\r\n                      // Chain up the pending send so that the async send is always in-order.\r\n                      this.pendingSend = this.pendingSend.then(sendDataWithCongestionControl);\r\n                      // Directly return since the data are \"sent\" from the caller's pov.\r\n                      return this.inst.scalar(cbytes.length, \"int32\");\r\n                  }\r\n                  else {\r\n                      return this.inst.scalar(0, \"int32\");\r\n                  }\r\n              }, this.name, this.key);\r\n              // message handler should persist across RPC runs\r\n              this.globalObjects.push(this.inst.detachFromCurrentScope(messageHandler));\r\n              const writeFlag = this.inst.scalar(3, \"int32\");\r\n              this.serverRecvData = (header, body) => {\r\n                  if (messageHandler(header, writeFlag) === 0) {\r\n                      this.socket.close();\r\n                  }\r\n                  if (messageHandler(body, writeFlag) === 0) {\r\n                      this.socket.close();\r\n                  }\r\n              };\r\n              // Forward the same init sequence to the wasm RPC.\r\n              // The RPC will look for \"rpc.wasmSession\"\r\n              // and we will redirect it to the correct local session.\r\n              // register the callback to redirect the session to local.\r\n              const flocal = this.inst.getGlobalFunc(\"wasm.LocalSession\");\r\n              const localSession = flocal();\r\n              assert(localSession instanceof Module);\r\n              // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n              this.inst.registerFunc(\"rpc.WasmSession\", \r\n              // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n              (_args) => {\r\n                  return localSession;\r\n              });\r\n              messageHandler(header, writeFlag);\r\n              messageHandler(body, writeFlag);\r\n              this.log(\"Finish initializing the Wasm Server..\");\r\n              this.requestBytes(8 /* SizeOf.I64 */);\r\n              this.state = RPCServerState.ReceivePacketHeader;\r\n              // call process events in case there are bufferred data.\r\n              this.processEvents();\r\n              // recycle all values.\r\n              this.inst.endScope();\r\n          });\r\n          this.state = RPCServerState.WaitForCallback;\r\n          asyncInitServer();\r\n      }\r\n      log(msg) {\r\n          this.logger(this.name + msg);\r\n      }\r\n      handleInitHeader() {\r\n          const reader = new ByteStreamReader(this.readFromBuffer(4 /* SizeOf.I32 */ * 2));\r\n          const magic = reader.readU32();\r\n          if (magic === RPC_MAGIC + 1) {\r\n              throw new Error(\"key: \" + this.key + \" has already been used in proxy\");\r\n          }\r\n          else if (magic === RPC_MAGIC + 2) {\r\n              throw new Error(\"RPCProxy do not have matching client key \" + this.key);\r\n          }\r\n          assert(magic === RPC_MAGIC, this.url + \" is not an RPC Proxy\");\r\n          this.remoteKeyLength = reader.readU32();\r\n          assert(this.pendingBytes === 0);\r\n          this.requestBytes(this.remoteKeyLength);\r\n          this.state = RPCServerState.InitHeaderKey;\r\n      }\r\n      handleInitHeaderKey() {\r\n          // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n          Uint8ArrayToString(this.readFromBuffer(this.remoteKeyLength));\r\n          assert(this.pendingBytes === 0);\r\n          this.requestBytes(8 /* SizeOf.I64 */);\r\n          this.state = RPCServerState.ReceivePacketHeader;\r\n      }\r\n      checkLittleEndian() {\r\n          const a = new ArrayBuffer(4);\r\n          const b = new Uint8Array(a);\r\n          const c = new Uint32Array(a);\r\n          b[0] = 0x11;\r\n          b[1] = 0x22;\r\n          b[2] = 0x33;\r\n          b[3] = 0x44;\r\n          assert(c[0] === 0x44332211, \"RPCServer little endian to work\");\r\n      }\r\n      requestBytes(nbytes) {\r\n          this.pendingBytes += nbytes;\r\n      }\r\n      readFromBuffer(nbytes) {\r\n          const ret = new Uint8Array(nbytes);\r\n          let ptr = 0;\r\n          while (ptr < nbytes) {\r\n              assert(this.messageQueue.length != 0);\r\n              const nleft = nbytes - ptr;\r\n              if (this.messageQueue[0].byteLength <= nleft) {\r\n                  const buffer = this.messageQueue.shift();\r\n                  ret.set(buffer, ptr);\r\n                  ptr += buffer.byteLength;\r\n              }\r\n              else {\r\n                  const buffer = this.messageQueue[0];\r\n                  ret.set(buffer.slice(0, nleft), ptr);\r\n                  this.messageQueue[0] = buffer.slice(nleft, buffer.byteLength);\r\n                  ptr += nleft;\r\n              }\r\n          }\r\n          this.buffredBytes -= nbytes;\r\n          this.pendingBytes -= nbytes;\r\n          return ret;\r\n      }\r\n  }\n\n  exports.ArtifactCache = ArtifactCache;\n  exports.ArtifactIndexedDBCache = ArtifactIndexedDBCache;\n  exports.DLDataType = DLDataType;\n  exports.DLDevice = DLDevice;\n  exports.Instance = Instance;\n  exports.LinearCongruentialGenerator = LinearCongruentialGenerator;\n  exports.Module = Module;\n  exports.RPCServer = RPCServer;\n  exports.Scalar = Scalar;\n  exports.TVMArray = TVMArray;\n  exports.TVMObject = TVMObject;\n  exports.Tensor = Tensor;\n  exports.VirtualMachine = VirtualMachine;\n  exports.assert = assert;\n  exports.createPolyfillWASI = createPolyfillWASI;\n  exports.deleteTensorCache = deleteTensorCache;\n  exports.detectGPUDevice = detectGPUDevice;\n  exports.hasTensorInCache = hasTensorInCache;\n  exports.instantiate = instantiate;\n  exports.wasmPath = wasmPath;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n"]}