update pleroma-fe
[akkoma] / priv / static / static / ruffle / ruffle.js.map
1 {"version":3,"file":"ruffle.js","mappings":"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","sources":["webpack://ruffle-selfhosted/webpack/bootstrap","webpack://ruffle-selfhosted/webpack/runtime/global","webpack://ruffle-selfhosted/webpack/runtime/hasOwnProperty shorthand","webpack://ruffle-selfhosted/webpack/runtime/publicPath","webpack://ruffle-selfhosted/webpack/runtime/jsonp chunk loading","webpack://ruffle-selfhosted/../core/pkg/ruffle_web.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-imports.js","webpack://ruffle-selfhosted/../core/pkg/js-polyfills.js","webpack://ruffle-selfhosted/../core/pkg/public-path.js","webpack://ruffle-selfhosted/../core/pkg/load-ruffle.js","webpack://ruffle-selfhosted/../core/pkg/plugin-polyfill.js","webpack://ruffle-selfhosted/../core/pkg/shadow-template.js","webpack://ruffle-selfhosted/../core/pkg/register-element.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-player.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-embed.js","webpack://ruffle-selfhosted/../core/pkg/ruffle-object.js","webpack://ruffle-selfhosted/../core/pkg/polyfills.js","webpack://ruffle-selfhosted/../core/pkg/version.js","webpack://ruffle-selfhosted/../core/pkg/version-range.js","webpack://ruffle-selfhosted/../core/pkg/public-api.js","webpack://ruffle-selfhosted/./js/ruffle.js","webpack://ruffle-selfhosted/../core/pkg/source-api.js"],"sourcesContent":["// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.p = \"\";","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","import { copyToAudioBuffer, getAudioOutputTimestamp } from './ruffle-imports.js';\n\nconst lAudioContext = (typeof AudioContext !== 'undefined' ? AudioContext : (typeof webkitAudioContext !== 'undefined' ? webkitAudioContext : undefined));\nlet wasm;\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedTextEncoder = new TextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachegetFloat64Memory0 = null;\nfunction getFloat64Memory0() {\n if (cachegetFloat64Memory0 === null || cachegetFloat64Memory0.buffer !== wasm.memory.buffer) {\n cachegetFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachegetFloat64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_38(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hf2fb09d5c8a8a014(arg0, arg1, arg2);\n}\n\nfunction __wbg_adapter_41(arg0, arg1) {\n wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h3c3ce0189896ae89(arg0, arg1);\n}\n\nfunction __wbg_adapter_44(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h57227d77287c9d42(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_47(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h57227d77287c9d42(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_50(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h57227d77287c9d42(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_53(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h57227d77287c9d42(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_56(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h57227d77287c9d42(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_59(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h57227d77287c9d42(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction __wbg_adapter_62(arg0, arg1, arg2) {\n wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0017b6248e5a7e46(arg0, arg1, addHeapObject(arg2));\n}\n\nlet cachegetFloat32Memory0 = null;\nfunction getFloat32Memory0() {\n if (cachegetFloat32Memory0 === null || cachegetFloat32Memory0.buffer !== wasm.memory.buffer) {\n cachegetFloat32Memory0 = new Float32Array(wasm.memory.buffer);\n }\n return cachegetFloat32Memory0;\n}\n\nfunction getArrayF32FromWasm0(ptr, len) {\n return getFloat32Memory0().subarray(ptr / 4, ptr / 4 + len);\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nlet stack_pointer = 32;\n\nfunction addBorrowedObject(obj) {\n if (stack_pointer == 1) throw new Error('out of js stack');\n heap[--stack_pointer] = obj;\n return stack_pointer;\n}\n\nlet cachegetUint32Memory0 = null;\nfunction getUint32Memory0() {\n if (cachegetUint32Memory0 === null || cachegetUint32Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachegetUint32Memory0;\n}\n\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4);\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nlet cachegetUint8ClampedMemory0 = null;\nfunction getUint8ClampedMemory0() {\n if (cachegetUint8ClampedMemory0 === null || cachegetUint8ClampedMemory0.buffer !== wasm.memory.buffer) {\n cachegetUint8ClampedMemory0 = new Uint8ClampedArray(wasm.memory.buffer);\n }\n return cachegetUint8ClampedMemory0;\n}\n\nfunction getClampedArrayU8FromWasm0(ptr, len) {\n return getUint8ClampedMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\nfunction __wbg_adapter_603(arg0, arg1, arg2, arg3) {\n wasm.wasm_bindgen__convert__closures__invoke2_mut__hb98954a061226d04(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n* An opaque handle to a `RuffleInstance` inside the pool.\n*\n* This type is exported to JS, and is used to interact with the library.\n*/\nexport class Ruffle {\n\n static __wrap(ptr) {\n const obj = Object.create(Ruffle.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_ruffle_free(ptr);\n }\n /**\n * @param {HTMLElement} parent\n * @param {any} js_player\n * @param {any} config\n */\n constructor(parent, js_player, config) {\n try {\n var ret = wasm.ruffle_new(addHeapObject(parent), addHeapObject(js_player), addBorrowedObject(config));\n return takeObject(ret);\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n * Stream an arbitrary movie file from (presumably) the Internet.\n *\n * This method should only be called once per player.\n * @param {string} movie_url\n * @param {any} parameters\n */\n stream_from(movie_url, parameters) {\n try {\n var ptr0 = passStringToWasm0(movie_url, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n wasm.ruffle_stream_from(this.ptr, ptr0, len0, addBorrowedObject(parameters));\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n * Play an arbitrary movie on this instance.\n *\n * This method should only be called once per player.\n * @param {Uint8Array} swf_data\n * @param {any} parameters\n */\n load_data(swf_data, parameters) {\n try {\n wasm.ruffle_load_data(this.ptr, addHeapObject(swf_data), addBorrowedObject(parameters));\n } finally {\n heap[stack_pointer++] = undefined;\n }\n }\n /**\n */\n play() {\n wasm.ruffle_play(this.ptr);\n }\n /**\n */\n pause() {\n wasm.ruffle_pause(this.ptr);\n }\n /**\n * @returns {boolean}\n */\n is_playing() {\n var ret = wasm.ruffle_is_playing(this.ptr);\n return ret !== 0;\n }\n /**\n * @returns {any}\n */\n prepare_context_menu() {\n var ret = wasm.ruffle_prepare_context_menu(this.ptr);\n return takeObject(ret);\n }\n /**\n * @param {number} index\n */\n run_context_menu_callback(index) {\n wasm.ruffle_run_context_menu_callback(this.ptr, index);\n }\n /**\n * @param {boolean} is_fullscreen\n */\n set_fullscreen(is_fullscreen) {\n wasm.ruffle_set_fullscreen(this.ptr, is_fullscreen);\n }\n /**\n */\n clear_custom_menu_items() {\n wasm.ruffle_clear_custom_menu_items(this.ptr);\n }\n /**\n */\n destroy() {\n wasm.ruffle_destroy(this.ptr);\n }\n /**\n * @param {string} name\n * @param {any[]} args\n * @returns {any}\n */\n call_exposed_callback(name, args) {\n var ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = passArrayJsValueToWasm0(args, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n var ret = wasm.ruffle_call_exposed_callback(this.ptr, ptr0, len0, ptr1, len1);\n return takeObject(ret);\n }\n /**\n * @param {any} observer\n */\n set_trace_observer(observer) {\n wasm.ruffle_set_trace_observer(this.ptr, addHeapObject(observer));\n }\n /**\n * Returns the web AudioContext used by this player.\n * Returns `None` if the audio backend does not use Web Audio.\n * @returns {AudioContext | undefined}\n */\n audio_context() {\n var ret = wasm.ruffle_audio_context(this.ptr);\n return takeObject(ret);\n }\n}\n\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nasync function init(input) {\n if (typeof input === 'undefined') {\n input = new URL('ruffle_web_bg.wasm', import.meta.url);\n }\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_cb_drop = function(arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n var ret = false;\n return ret;\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_ruffle_new = function(arg0) {\n var ret = Ruffle.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n var ret = typeof(getObject(arg0)) === 'function';\n return ret;\n };\n imports.wbg.__wbindgen_json_parse = function(arg0, arg1) {\n var ret = JSON.parse(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) {\n const obj = getObject(arg1);\n var ret = JSON.stringify(obj === undefined ? null : obj);\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_new_df6e6ab7a65c4c4d = function(arg0, arg1) {\n var ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_panic_bbc809dd04a12c60 = function(arg0, arg1) {\n getObject(arg0).panic(getObject(arg1));\n };\n imports.wbg.__wbg_copyToAudioBuffer_58f244be94bac1d2 = function(arg0, arg1, arg2, arg3, arg4) {\n copyToAudioBuffer(getObject(arg0), arg1 === 0 ? undefined : getArrayF32FromWasm0(arg1, arg2), arg3 === 0 ? undefined : getArrayF32FromWasm0(arg3, arg4));\n };\n imports.wbg.__wbg_getAudioOutputTimestamp_a67aa6687740cd15 = function(arg0) {\n var ret = getAudioOutputTimestamp(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_setFullscreen_9819a8b20564e39b = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).setFullscreen(arg1 !== 0);\n }, arguments) };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n var ret = typeof(obj) === 'string' ? obj : undefined;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_displayUnsupportedMessage_a8f81a8e054e5e91 = function(arg0) {\n getObject(arg0).displayUnsupportedMessage();\n };\n imports.wbg.__wbg_displayRootMovieDownloadFailedMessage_1a5c34096259685a = function(arg0) {\n getObject(arg0).displayRootMovieDownloadFailedMessage();\n };\n imports.wbg.__wbg_displayMessage_c57c20204892da2b = function(arg0, arg1, arg2) {\n getObject(arg0).displayMessage(getStringFromWasm0(arg1, arg2));\n };\n imports.wbg.__wbg_setMetadata_bbaeaee7f48274e6 = function(arg0, arg1) {\n getObject(arg0).setMetadata(takeObject(arg1));\n };\n imports.wbg.__wbg_onCallbackAvailable_3a48fae397926c96 = function(arg0, arg1, arg2) {\n getObject(arg0).onCallbackAvailable(getStringFromWasm0(arg1, arg2));\n };\n imports.wbg.__wbg_onFSCommand_fb2f94653f71796e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).onFSCommand(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n var ret = typeof(obj) === 'number' ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_boolean_get = function(arg0) {\n const v = getObject(arg0);\n var ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n var ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_693216e109162396 = function() {\n var ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_error_09919627ac0992f5 = function(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_instanceof_WebGl2RenderingContext_56ad96bfac3f5531 = function(arg0) {\n var ret = getObject(arg0) instanceof WebGL2RenderingContext;\n return ret;\n };\n imports.wbg.__wbg_bindVertexArray_52b8b2f5fd93d81d = function(arg0, arg1) {\n getObject(arg0).bindVertexArray(getObject(arg1));\n };\n imports.wbg.__wbg_blitFramebuffer_d6dafd082e3b1266 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n getObject(arg0).blitFramebuffer(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9 >>> 0, arg10 >>> 0);\n };\n imports.wbg.__wbg_createVertexArray_d59135c0a43c410b = function(arg0) {\n var ret = getObject(arg0).createVertexArray();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_renderbufferStorageMultisample_41916a754c02df64 = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n getObject(arg0).renderbufferStorageMultisample(arg1 >>> 0, arg2, arg3 >>> 0, arg4, arg5);\n };\n imports.wbg.__wbg_texImage2D_29ea0a7f026e239b = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10));\n }, arguments) };\n imports.wbg.__wbg_bindFramebuffer_48c4bf8ff82bf7e9 = function(arg0, arg1, arg2) {\n getObject(arg0).bindFramebuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindRenderbuffer_4a9ad1cf80580397 = function(arg0, arg1, arg2) {\n getObject(arg0).bindRenderbuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindTexture_9d8ed0fcd83eb0a9 = function(arg0, arg1, arg2) {\n getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_createFramebuffer_9818fc04b4a38c18 = function(arg0) {\n var ret = getObject(arg0).createFramebuffer();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createRenderbuffer_d1a55ec78e26295b = function(arg0) {\n var ret = getObject(arg0).createRenderbuffer();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createTexture_8f31e7386e22fc37 = function(arg0) {\n var ret = getObject(arg0).createTexture();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_deleteFramebuffer_5f58ccb548438c57 = function(arg0, arg1) {\n getObject(arg0).deleteFramebuffer(getObject(arg1));\n };\n imports.wbg.__wbg_deleteRenderbuffer_6372146d4689793e = function(arg0, arg1) {\n getObject(arg0).deleteRenderbuffer(getObject(arg1));\n };\n imports.wbg.__wbg_deleteTexture_a0632c71429795ac = function(arg0, arg1) {\n getObject(arg0).deleteTexture(getObject(arg1));\n };\n imports.wbg.__wbg_framebufferRenderbuffer_9d619e8bf8f2aeb6 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).framebufferRenderbuffer(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, getObject(arg4));\n };\n imports.wbg.__wbg_framebufferTexture2D_3da41a7f38e2c523 = function(arg0, arg1, arg2, arg3, arg4, arg5) {\n getObject(arg0).framebufferTexture2D(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0, getObject(arg4), arg5);\n };\n imports.wbg.__wbg_getError_868f7c8ef6475b32 = function(arg0) {\n var ret = getObject(arg0).getError();\n return ret;\n };\n imports.wbg.__wbg_getParameter_e3aea13dd0a2904d = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).getParameter(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_texParameteri_c54aab65b2f8cf6d = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3);\n };\n imports.wbg.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) {\n var ret = getObject(arg0) instanceof Window;\n return ret;\n };\n imports.wbg.__wbg_document_1c64944725c0d81d = function(arg0) {\n var ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_location_f98ad02632f88c43 = function(arg0) {\n var ret = getObject(arg0).location;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_navigator_480e592af6ad365b = function(arg0) {\n var ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_devicePixelRatio_d8c3852bb37f76bf = function(arg0) {\n var ret = getObject(arg0).devicePixelRatio;\n return ret;\n };\n imports.wbg.__wbg_performance_947628766699c5bb = function(arg0) {\n var ret = getObject(arg0).performance;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_localStorage_6775414303ab5085 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_cancelAnimationFrame_5f2a1e987a6de100 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).cancelAnimationFrame(arg1);\n }, arguments) };\n imports.wbg.__wbg_focus_70ecc8fcab4bdb61 = function() { return handleError(function (arg0) {\n getObject(arg0).focus();\n }, arguments) };\n imports.wbg.__wbg_open_5416e4448a959cfa = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).open(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_requestAnimationFrame_71638ca922068239 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).requestAnimationFrame(getObject(arg1));\n return ret;\n }, arguments) };\n imports.wbg.__wbg_fetch_cfe0d1dd786e9cd4 = function(arg0, arg1) {\n var ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_destination_6c3ac66ee8b2fe85 = function(arg0) {\n var ret = getObject(arg0).destination;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_sampleRate_ffa6f08191b00934 = function(arg0) {\n var ret = getObject(arg0).sampleRate;\n return ret;\n };\n imports.wbg.__wbg_currentTime_e231c76a3c011126 = function(arg0) {\n var ret = getObject(arg0).currentTime;\n return ret;\n };\n imports.wbg.__wbg_new_52bbbd81ffc19dff = function() { return handleError(function () {\n var ret = new lAudioContext();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_suspend_5b2c4674b28d07f2 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).suspend();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createBuffer_79833a4052d7b42a = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).createBuffer(arg1 >>> 0, arg2 >>> 0, arg3);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createBufferSource_7244d810d62a0bed = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).createBufferSource();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createChannelMerger_542d0885aa4bdc09 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).createChannelMerger(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createChannelSplitter_95302cbc3f9b9f85 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).createChannelSplitter(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createGain_c5f114390c363029 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).createGain();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createScriptProcessor_ec30f8ab6ea543d1 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).createScriptProcessor(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_decodeAudioData_66b886741a4167f4 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).decodeAudioData(getObject(arg1), getObject(arg2), getObject(arg3));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_resume_ca50287e91c0323e = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).resume();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setvalue_df8236adf40ea2d3 = function(arg0, arg1) {\n getObject(arg0).value = arg1;\n };\n imports.wbg.__wbg_linearRampToValueAtTime_113d2920c90f1851 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).linearRampToValueAtTime(arg1, arg2);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setValueAtTime_9396570ff0d3cc1f = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).setValueAtTime(arg1, arg2);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_gain_d4eaca6128dcfd90 = function(arg0) {\n var ret = getObject(arg0).gain;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_baseURI_083fd53f8bea9af2 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg1).baseURI;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_appendChild_d318db34c4559916 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_instanceof_SvgsvgElement_631275f115d8f8e3 = function(arg0) {\n var ret = getObject(arg0) instanceof SVGSVGElement;\n return ret;\n };\n imports.wbg.__wbg_createSVGMatrix_037d6368ea06b02d = function(arg0) {\n var ret = getObject(arg0).createSVGMatrix();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_protocol_f17adabd4e662b06 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg1).protocol;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_assign_26269af9ce90e6c7 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).assign(getStringFromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_new_a3422e0170c31454 = function() { return handleError(function () {\n var ret = new Path2D();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_addPath_18881cd56483fe63 = function(arg0, arg1, arg2) {\n getObject(arg0).addPath(getObject(arg1), getObject(arg2));\n };\n imports.wbg.__wbg_closePath_bf39ada268053aea = function(arg0) {\n getObject(arg0).closePath();\n };\n imports.wbg.__wbg_lineTo_4d75fbab7308c3d2 = function(arg0, arg1, arg2) {\n getObject(arg0).lineTo(arg1, arg2);\n };\n imports.wbg.__wbg_moveTo_70f7a4760893f917 = function(arg0, arg1, arg2) {\n getObject(arg0).moveTo(arg1, arg2);\n };\n imports.wbg.__wbg_quadraticCurveTo_7724e01d766ebfe2 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).quadraticCurveTo(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_get_f0092ad67dc97639 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg1)[getStringFromWasm0(arg2, arg3)];\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_set_3a236a97145dc780 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0)[getStringFromWasm0(arg1, arg2)] = getStringFromWasm0(arg3, arg4);\n }, arguments) };\n imports.wbg.__wbg_delete_881ab2d2a830b82f = function() { return handleError(function (arg0, arg1, arg2) {\n delete getObject(arg0)[getStringFromWasm0(arg1, arg2)];\n }, arguments) };\n imports.wbg.__wbg_length_b398b347bd3c9cd5 = function(arg0) {\n var ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_setTransform_3f9fc1784a580fff = function(arg0, arg1) {\n getObject(arg0).setTransform(getObject(arg1));\n };\n imports.wbg.__wbg_setProperty_1460c660bc329763 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setProperty(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_offsetX_5da3ebf8a8cda8a4 = function(arg0) {\n var ret = getObject(arg0).offsetX;\n return ret;\n };\n imports.wbg.__wbg_offsetY_b0edbc16723a55cb = function(arg0) {\n var ret = getObject(arg0).offsetY;\n return ret;\n };\n imports.wbg.__wbg_button_a02c0467d38e8338 = function(arg0) {\n var ret = getObject(arg0).button;\n return ret;\n };\n imports.wbg.__wbg_bindVertexArrayOES_7104c80fb0d31cb0 = function(arg0, arg1) {\n getObject(arg0).bindVertexArrayOES(getObject(arg1));\n };\n imports.wbg.__wbg_createVertexArrayOES_ced4f8a084b789b7 = function(arg0) {\n var ret = getObject(arg0).createVertexArrayOES();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_deltaY_080604c20160c0e8 = function(arg0) {\n var ret = getObject(arg0).deltaY;\n return ret;\n };\n imports.wbg.__wbg_deltaMode_c5ec1ee518ea0a08 = function(arg0) {\n var ret = getObject(arg0).deltaMode;\n return ret;\n };\n imports.wbg.__wbg_connect_723cc4823fe3e6c0 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).connect(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_connect_cb8dcaafd6d14fe4 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).connect(getObject(arg1), arg2 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_connect_eb8fcb61cab88f0b = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).connect(getObject(arg1), arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_disconnect_661941cf5b88fa5a = function() { return handleError(function (arg0) {\n getObject(arg0).disconnect();\n }, arguments) };\n imports.wbg.__wbg_instanceof_HtmlFormElement_aeafa27e92962efa = function(arg0) {\n var ret = getObject(arg0) instanceof HTMLFormElement;\n return ret;\n };\n imports.wbg.__wbg_submit_7479ea6e99f76174 = function() { return handleError(function (arg0) {\n getObject(arg0).submit();\n }, arguments) };\n imports.wbg.__wbg_instanceof_Response_e1b11afbefa5b563 = function(arg0) {\n var ret = getObject(arg0) instanceof Response;\n return ret;\n };\n imports.wbg.__wbg_ok_270f6d403efe7e7b = function(arg0) {\n var ret = getObject(arg0).ok;\n return ret;\n };\n imports.wbg.__wbg_statusText_97740db9b8bb12e3 = function(arg0, arg1) {\n var ret = getObject(arg1).statusText;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_arrayBuffer_b8937ed04beb0d36 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).arrayBuffer();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_seta_f5667df13832f473 = function(arg0, arg1) {\n getObject(arg0).a = arg1;\n };\n imports.wbg.__wbg_setb_51b68c87004ceb92 = function(arg0, arg1) {\n getObject(arg0).b = arg1;\n };\n imports.wbg.__wbg_setc_62d7a8abc0082fcc = function(arg0, arg1) {\n getObject(arg0).c = arg1;\n };\n imports.wbg.__wbg_setd_544fd4902db40bca = function(arg0, arg1) {\n getObject(arg0).d = arg1;\n };\n imports.wbg.__wbg_sete_a3575dd88c8f17a3 = function(arg0, arg1) {\n getObject(arg0).e = arg1;\n };\n imports.wbg.__wbg_setf_956eaea5b3047302 = function(arg0, arg1) {\n getObject(arg0).f = arg1;\n };\n imports.wbg.__wbg_setbuffer_c643a88bac27b2bd = function(arg0, arg1) {\n getObject(arg0).buffer = getObject(arg1);\n };\n imports.wbg.__wbg_setloop_32c84ea32fabef74 = function(arg0, arg1) {\n getObject(arg0).loop = arg1 !== 0;\n };\n imports.wbg.__wbg_setloopStart_a113b4d478da7f93 = function(arg0, arg1) {\n getObject(arg0).loopStart = arg1;\n };\n imports.wbg.__wbg_setloopEnd_b83c2563fe5be665 = function(arg0, arg1) {\n getObject(arg0).loopEnd = arg1;\n };\n imports.wbg.__wbg_setonended_6ce8715add45953e = function(arg0, arg1) {\n getObject(arg0).onended = getObject(arg1);\n };\n imports.wbg.__wbg_start_551bedf1ecfdc0e2 = function() { return handleError(function (arg0) {\n getObject(arg0).start();\n }, arguments) };\n imports.wbg.__wbg_start_885262ec460f3ef3 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).start(arg1, arg2);\n }, arguments) };\n imports.wbg.__wbg_stop_c6532de1aeb2e765 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).stop(arg1);\n }, arguments) };\n imports.wbg.__wbg_outputBuffer_3f27dc3af0998ec9 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).outputBuffer;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_now_559193109055ebad = function(arg0) {\n var ret = getObject(arg0).now();\n return ret;\n };\n imports.wbg.__wbg_pointerId_9302f0e125f0b48e = function(arg0) {\n var ret = getObject(arg0).pointerId;\n return ret;\n };\n imports.wbg.__wbg_currentTarget_65309531208d5df3 = function(arg0) {\n var ret = getObject(arg0).currentTarget;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_preventDefault_9866c9fd51eecfb6 = function(arg0) {\n getObject(arg0).preventDefault();\n };\n imports.wbg.__wbg_setsrc_3eb04f553f8335c7 = function(arg0, arg1, arg2) {\n getObject(arg0).src = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_new_265b3e027a3022bd = function() { return handleError(function () {\n var ret = new Image();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_key_10dcaa4bb6d5449f = function(arg0, arg1) {\n var ret = getObject(arg1).key;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_code_1c2fd251f38b398a = function(arg0, arg1) {\n var ret = getObject(arg1).code;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_newwithstrandinit_9b0fa00478c37287 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setonaudioprocess_4334efc34353560d = function(arg0, arg1) {\n getObject(arg0).onaudioprocess = getObject(arg1);\n };\n imports.wbg.__wbg_body_78ae4fd43b446013 = function(arg0) {\n var ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createElement_86c152812a141a62 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createElementNS_ae12b8681c3957a3 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_setid_681bb5a14c3d5850 = function(arg0, arg1, arg2) {\n getObject(arg0).id = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_clientWidth_4d9e01af2b5b9f21 = function(arg0) {\n var ret = getObject(arg0).clientWidth;\n return ret;\n };\n imports.wbg.__wbg_clientHeight_87c209f0cacf2e97 = function(arg0) {\n var ret = getObject(arg0).clientHeight;\n return ret;\n };\n imports.wbg.__wbg_querySelector_dc71838110c91f39 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).querySelector(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_releasePointerCapture_326599f769b49681 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).releasePointerCapture(arg1);\n }, arguments) };\n imports.wbg.__wbg_setAttribute_1b533bf07966de55 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_setAttributeNS_92db6decf2ec8400 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n getObject(arg0).setAttributeNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4), getStringFromWasm0(arg5, arg6));\n }, arguments) };\n imports.wbg.__wbg_setPointerCapture_bd3244d9f008798f = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).setPointerCapture(arg1);\n }, arguments) };\n imports.wbg.__wbg_remove_c63cabc94a77cacb = function(arg0) {\n getObject(arg0).remove();\n };\n imports.wbg.__wbg_instanceof_WebGlRenderingContext_101b938bec1286a3 = function(arg0) {\n var ret = getObject(arg0) instanceof WebGLRenderingContext;\n return ret;\n };\n imports.wbg.__wbg_drawingBufferWidth_8b0c2b31d9d6eee7 = function(arg0) {\n var ret = getObject(arg0).drawingBufferWidth;\n return ret;\n };\n imports.wbg.__wbg_drawingBufferHeight_f62678018bab567c = function(arg0) {\n var ret = getObject(arg0).drawingBufferHeight;\n return ret;\n };\n imports.wbg.__wbg_bufferData_2f9be23b37e5a1a4 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).bufferData(arg1 >>> 0, getArrayU8FromWasm0(arg2, arg3), arg4 >>> 0);\n };\n imports.wbg.__wbg_texImage2D_712c56fe5a9825ed = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10) {\n getObject(arg0).texImage2D(arg1 >>> 0, arg2, arg3, arg4, arg5, arg6, arg7 >>> 0, arg8 >>> 0, arg9 === 0 ? undefined : getArrayU8FromWasm0(arg9, arg10));\n }, arguments) };\n imports.wbg.__wbg_uniform1fv_02b26dddaa3ea984 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).uniform1fv(getObject(arg1), getArrayF32FromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_uniform4fv_ca394beb323215c6 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).uniform4fv(getObject(arg1), getArrayF32FromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_uniformMatrix3fv_340429fe0911bc6f = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).uniformMatrix3fv(getObject(arg1), arg2 !== 0, getArrayF32FromWasm0(arg3, arg4));\n };\n imports.wbg.__wbg_uniformMatrix4fv_a92133b68236ac68 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).uniformMatrix4fv(getObject(arg1), arg2 !== 0, getArrayF32FromWasm0(arg3, arg4));\n };\n imports.wbg.__wbg_activeTexture_b34aca0c2110966c = function(arg0, arg1) {\n getObject(arg0).activeTexture(arg1 >>> 0);\n };\n imports.wbg.__wbg_attachShader_eaa824fd5b37a770 = function(arg0, arg1, arg2) {\n getObject(arg0).attachShader(getObject(arg1), getObject(arg2));\n };\n imports.wbg.__wbg_bindBuffer_2ca7e1c18819ecb2 = function(arg0, arg1, arg2) {\n getObject(arg0).bindBuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindFramebuffer_c9f468afa9d42a5f = function(arg0, arg1, arg2) {\n getObject(arg0).bindFramebuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindRenderbuffer_7b2b49f71f3eeef9 = function(arg0, arg1, arg2) {\n getObject(arg0).bindRenderbuffer(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_bindTexture_edd827f3dba6038e = function(arg0, arg1, arg2) {\n getObject(arg0).bindTexture(arg1 >>> 0, getObject(arg2));\n };\n imports.wbg.__wbg_blendFunc_d5ab9f0ff5a40a48 = function(arg0, arg1, arg2) {\n getObject(arg0).blendFunc(arg1 >>> 0, arg2 >>> 0);\n };\n imports.wbg.__wbg_clear_da26620d46f0a11a = function(arg0, arg1) {\n getObject(arg0).clear(arg1 >>> 0);\n };\n imports.wbg.__wbg_clearColor_cbf22f8faa5a52c1 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).clearColor(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_colorMask_035708eb94fe9af8 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).colorMask(arg1 !== 0, arg2 !== 0, arg3 !== 0, arg4 !== 0);\n };\n imports.wbg.__wbg_compileShader_8fb70a472f32552c = function(arg0, arg1) {\n getObject(arg0).compileShader(getObject(arg1));\n };\n imports.wbg.__wbg_createBuffer_4802e2f0e1b1acdf = function(arg0) {\n var ret = getObject(arg0).createBuffer();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createProgram_b1d94f4c7554d3a1 = function(arg0) {\n var ret = getObject(arg0).createProgram();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createShader_da09e167692f0dc7 = function(arg0, arg1) {\n var ret = getObject(arg0).createShader(arg1 >>> 0);\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createTexture_bafc7c08393ae59d = function(arg0) {\n var ret = getObject(arg0).createTexture();\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_disable_b07faddb7d04349f = function(arg0, arg1) {\n getObject(arg0).disable(arg1 >>> 0);\n };\n imports.wbg.__wbg_disableVertexAttribArray_c9fdabd5f12b0539 = function(arg0, arg1) {\n getObject(arg0).disableVertexAttribArray(arg1 >>> 0);\n };\n imports.wbg.__wbg_drawElements_8e8af4b6757fedce = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).drawElements(arg1 >>> 0, arg2, arg3 >>> 0, arg4);\n };\n imports.wbg.__wbg_enable_d3d210aeb08eff52 = function(arg0, arg1) {\n getObject(arg0).enable(arg1 >>> 0);\n };\n imports.wbg.__wbg_enableVertexAttribArray_d539e547495bea44 = function(arg0, arg1) {\n getObject(arg0).enableVertexAttribArray(arg1 >>> 0);\n };\n imports.wbg.__wbg_getAttribLocation_706a0beabcdaebcf = function(arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).getAttribLocation(getObject(arg1), getStringFromWasm0(arg2, arg3));\n return ret;\n };\n imports.wbg.__wbg_getExtension_045789240c50a108 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).getExtension(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getParameter_6412bd2d0602696d = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).getParameter(arg1 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getProgramInfoLog_b60e82d52c200cbd = function(arg0, arg1, arg2) {\n var ret = getObject(arg1).getProgramInfoLog(getObject(arg2));\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_getProgramParameter_229c193895936bbe = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).getProgramParameter(getObject(arg1), arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getShaderInfoLog_ba51160c01b98360 = function(arg0, arg1, arg2) {\n var ret = getObject(arg1).getShaderInfoLog(getObject(arg2));\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_getUniformLocation_c3b3570b4632cc5c = function(arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).getUniformLocation(getObject(arg1), getStringFromWasm0(arg2, arg3));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_linkProgram_7080c84b0233cea2 = function(arg0, arg1) {\n getObject(arg0).linkProgram(getObject(arg1));\n };\n imports.wbg.__wbg_pixelStorei_3cd96723ae22a5c6 = function(arg0, arg1, arg2) {\n getObject(arg0).pixelStorei(arg1 >>> 0, arg2);\n };\n imports.wbg.__wbg_shaderSource_67b991301db003d0 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).shaderSource(getObject(arg1), getStringFromWasm0(arg2, arg3));\n };\n imports.wbg.__wbg_stencilFunc_bbc24750c2db9a15 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).stencilFunc(arg1 >>> 0, arg2, arg3 >>> 0);\n };\n imports.wbg.__wbg_stencilMask_0ec7662710f598d4 = function(arg0, arg1) {\n getObject(arg0).stencilMask(arg1 >>> 0);\n };\n imports.wbg.__wbg_stencilOp_fd4ec71a7de6ac85 = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).stencilOp(arg1 >>> 0, arg2 >>> 0, arg3 >>> 0);\n };\n imports.wbg.__wbg_texParameteri_bd724f6a5ad0cbbc = function(arg0, arg1, arg2, arg3) {\n getObject(arg0).texParameteri(arg1 >>> 0, arg2 >>> 0, arg3);\n };\n imports.wbg.__wbg_uniform1f_b9cff1cea32def5a = function(arg0, arg1, arg2) {\n getObject(arg0).uniform1f(getObject(arg1), arg2);\n };\n imports.wbg.__wbg_uniform1i_0811c29c0eebe191 = function(arg0, arg1, arg2) {\n getObject(arg0).uniform1i(getObject(arg1), arg2);\n };\n imports.wbg.__wbg_useProgram_b72b0bfcbc720fa9 = function(arg0, arg1) {\n getObject(arg0).useProgram(getObject(arg1));\n };\n imports.wbg.__wbg_vertexAttribPointer_b5cb524c6fe9eec8 = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n getObject(arg0).vertexAttribPointer(arg1 >>> 0, arg2, arg3 >>> 0, arg4 !== 0, arg5, arg6);\n };\n imports.wbg.__wbg_viewport_89af3aceb7036a2c = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).viewport(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_debug_675b0ecb65722d2a = function(arg0) {\n console.debug(getObject(arg0));\n };\n imports.wbg.__wbg_error_cc38ce2b4b661e1d = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_e0c9813e6fd3bdc1 = function(arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_log_3445347661d4505e = function(arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_warn_5ec7c7c02d0b3841 = function(arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_style_c88e323890d3a091 = function(arg0) {\n var ret = getObject(arg0).style;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae = function(arg0) {\n var ret = getObject(arg0) instanceof CanvasRenderingContext2D;\n return ret;\n };\n imports.wbg.__wbg_setglobalAlpha_27b14e5f5b7567ec = function(arg0, arg1) {\n getObject(arg0).globalAlpha = arg1;\n };\n imports.wbg.__wbg_setglobalCompositeOperation_c650e9805cc6316f = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).globalCompositeOperation = getStringFromWasm0(arg1, arg2);\n }, arguments) };\n imports.wbg.__wbg_setstrokeStyle_947bd4c26c94673f = function(arg0, arg1) {\n getObject(arg0).strokeStyle = getObject(arg1);\n };\n imports.wbg.__wbg_setfillStyle_528a6a267c863ae7 = function(arg0, arg1) {\n getObject(arg0).fillStyle = getObject(arg1);\n };\n imports.wbg.__wbg_setfilter_3d48443a4a710be8 = function(arg0, arg1, arg2) {\n getObject(arg0).filter = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_setimageSmoothingEnabled_92d14a22667eae22 = function(arg0, arg1) {\n getObject(arg0).imageSmoothingEnabled = arg1 !== 0;\n };\n imports.wbg.__wbg_setlineWidth_3221b7818c00ed48 = function(arg0, arg1) {\n getObject(arg0).lineWidth = arg1;\n };\n imports.wbg.__wbg_setlineCap_5284a001e1efcecd = function(arg0, arg1, arg2) {\n getObject(arg0).lineCap = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_setlineJoin_a6af4e7d24a3a67e = function(arg0, arg1, arg2) {\n getObject(arg0).lineJoin = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_setmiterLimit_9fa0d72650341727 = function(arg0, arg1) {\n getObject(arg0).miterLimit = arg1;\n };\n imports.wbg.__wbg_drawImage_5e8203c5b210fce3 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).drawImage(getObject(arg1), arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_drawImage_9492b361f8b31282 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).drawImage(getObject(arg1), arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_fill_75988ff43d6e3499 = function(arg0, arg1, arg2) {\n getObject(arg0).fill(getObject(arg1), takeObject(arg2));\n };\n imports.wbg.__wbg_stroke_d91ac76d5b1eb792 = function(arg0, arg1) {\n getObject(arg0).stroke(getObject(arg1));\n };\n imports.wbg.__wbg_createPattern_1d0b3c3750c8448c = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).createPattern(getObject(arg1), getStringFromWasm0(arg2, arg3));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createPattern_b824d17776fa1f1e = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).createPattern(getObject(arg1), getStringFromWasm0(arg2, arg3));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getImageData_9ffc3df78ca3dbc9 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).getImageData(arg1, arg2, arg3, arg4);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_putImageData_b9544b271e569392 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).putImageData(getObject(arg1), arg2, arg3);\n }, arguments) };\n imports.wbg.__wbg_clearRect_07caefec3496ced1 = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).clearRect(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_fillRect_10e42dc7a5e8cccd = function(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).fillRect(arg1, arg2, arg3, arg4);\n };\n imports.wbg.__wbg_resetTransform_26f86c1cc48a4fae = function() { return handleError(function (arg0) {\n getObject(arg0).resetTransform();\n }, arguments) };\n imports.wbg.__wbg_setTransform_8ffd6a5c85396174 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6) {\n getObject(arg0).setTransform(arg1, arg2, arg3, arg4, arg5, arg6);\n }, arguments) };\n imports.wbg.__wbg_newwithbuffersourcesequenceandoptions_2b60b470c130cb1a = function() { return handleError(function (arg0, arg1) {\n var ret = new Blob(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_addEventListener_52721772cc0a7f30 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments) };\n imports.wbg.__wbg_addEventListener_09e11fbf8b4b719b = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4));\n }, arguments) };\n imports.wbg.__wbg_addEventListener_0ed522a6d9900d5d = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0);\n }, arguments) };\n imports.wbg.__wbg_removeEventListener_f2adc9b2b318de99 = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments) };\n imports.wbg.__wbg_removeEventListener_24d5a7c12c3f3c39 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0);\n }, arguments) };\n imports.wbg.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e = function(arg0) {\n var ret = getObject(arg0) instanceof HTMLCanvasElement;\n return ret;\n };\n imports.wbg.__wbg_width_555f63ab09ba7d3f = function(arg0) {\n var ret = getObject(arg0).width;\n return ret;\n };\n imports.wbg.__wbg_setwidth_c1a7061891b71f25 = function(arg0, arg1) {\n getObject(arg0).width = arg1 >>> 0;\n };\n imports.wbg.__wbg_height_7153faec70fbaf7b = function(arg0) {\n var ret = getObject(arg0).height;\n return ret;\n };\n imports.wbg.__wbg_setheight_88894b05710ff752 = function(arg0, arg1) {\n getObject(arg0).height = arg1 >>> 0;\n };\n imports.wbg.__wbg_getContext_f701d0231ae22393 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getContext_3e21e21280a332fc = function() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2), getObject(arg3));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_width_16bd64d09cbf5661 = function(arg0) {\n var ret = getObject(arg0).width;\n return ret;\n };\n imports.wbg.__wbg_height_368bb86c37d51bc9 = function(arg0) {\n var ret = getObject(arg0).height;\n return ret;\n };\n imports.wbg.__wbg_data_1ae7496c58caf755 = function(arg0, arg1) {\n var ret = getObject(arg1).data;\n var ptr0 = passArray8ToWasm0(ret, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_newwithu8clampedarray_45da2809f7882d12 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0);\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_userAgent_bdd46cceef222f52 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg1).userAgent;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n }, arguments) };\n imports.wbg.__wbg_randomFillSync_64cc7d048f228ca8 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_getRandomValues_98117e9a7e993920 = function() { return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments) };\n imports.wbg.__wbg_process_2f24d6544ea7b200 = function(arg0) {\n var ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_object = function(arg0) {\n const val = getObject(arg0);\n var ret = typeof(val) === 'object' && val !== null;\n return ret;\n };\n imports.wbg.__wbg_versions_6164651e75405d4a = function(arg0) {\n var ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_4b517d861cbcb3bc = function(arg0) {\n var ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function(arg0) {\n var ret = typeof(getObject(arg0)) === 'string';\n return ret;\n };\n imports.wbg.__wbg_modulerequire_3440a4bcf44437db = function() { return handleError(function (arg0, arg1) {\n var ret = module.require(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_crypto_98fc271021c7d2ad = function(arg0) {\n var ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_msCrypto_a2cdb043d2bfe57f = function(arg0) {\n var ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_67189fe0b323d288 = function(arg0, arg1) {\n var ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_949bbc1147195c4e = function() {\n var ret = new Array();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newnoargs_be86524d73f67598 = function(arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_7720502039b96d00 = function() { return handleError(function (arg0) {\n var ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_done_b06cf0578e89ff68 = function(arg0) {\n var ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_e74a542443d92451 = function(arg0) {\n var ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4d0f21c2f823742e = function() { return handleError(function (arg0, arg1) {\n var ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_888d259a5fefc347 = function() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_0b83d3df67ecb33e = function() {\n var ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_eb7ad55f2da67dde = function(arg0) {\n var ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_of_db9e1b8e0a7ed9bc = function(arg0, arg1) {\n var ret = Array.of(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_push_284486ca27c6aa8b = function(arg0, arg1) {\n var ret = getObject(arg0).push(getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_764b6d4119231cb3 = function(arg0) {\n var ret = getObject(arg0) instanceof ArrayBuffer;\n return ret;\n };\n imports.wbg.__wbg_new_3e02a228090b2e72 = function(arg0) {\n var ret = new ArrayBuffer(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_slice_dcc477bca8fe38b1 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).slice(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_values_364ae56c608e6824 = function(arg0) {\n var ret = getObject(arg0).values();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_apply_7cfa6ebf144990a5 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).apply(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_call_346669c262382ad7 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_getTime_10d33f4f2959e5dd = function(arg0) {\n var ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbg_getTimezoneOffset_d3e5a22a1b7fb1d8 = function(arg0) {\n var ret = getObject(arg0).getTimezoneOffset();\n return ret;\n };\n imports.wbg.__wbg_new0_fd3a3a290b25cdac = function() {\n var ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_Object_66786225e0dbc8ba = function(arg0) {\n var ret = getObject(arg0) instanceof Object;\n return ret;\n };\n imports.wbg.__wbg_entries_aadf9c3f38203a12 = function(arg0) {\n var ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fromEntries_164ebf0f69983a8e = function() { return handleError(function (arg0) {\n var ret = Object.fromEntries(getObject(arg0));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_is_0f5efc7977a2c50b = function(arg0, arg1) {\n var ret = Object.is(getObject(arg0), getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_new_b1d61b5687f5e73a = function(arg0, arg1) {\n try {\n var state0 = {a: arg0, b: arg1};\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_603(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n var ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbg_resolve_d23068002f584f22 = function(arg0) {\n var ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_2fcac196782070cc = function(arg0, arg1) {\n var ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_then_8c2d62e8ae5978f7 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_baec038b5ab35c54 = function() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_1bc0b39582740e95 = function() { return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_buffer_397eaa4d72ee94dd = function(arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff = function(arg0, arg1, arg2) {\n var ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_a7ce447f15ff496f = function(arg0) {\n var ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_969ad0a60e51d320 = function(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_1eb8fc608a0d4cdb = function(arg0) {\n var ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_newwithlength_929232475839a482 = function(arg0) {\n var ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fill_cd6951964c67ad3a = function(arg0, arg1, arg2, arg3) {\n var ret = getObject(arg0).fill(arg1, arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_facf0398a281c85b = function(arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_subarray_8b658422a224f479 = function(arg0, arg1, arg2) {\n var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_byteLength_3e250b41a8915757 = function(arg0) {\n var ret = getObject(arg0).byteLength;\n return ret;\n };\n imports.wbg.__wbg_byteOffset_4204ecb24a6e5df9 = function(arg0) {\n var ret = getObject(arg0).byteOffset;\n return ret;\n };\n imports.wbg.__wbg_ownKeys_f3f1916b5564918f = function() { return handleError(function (arg0) {\n var ret = Reflect.ownKeys(getObject(arg0));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_set_82a4e8a85e31ac42 = function() { return handleError(function (arg0, arg1, arg2) {\n var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_rethrow = function(arg0) {\n throw takeObject(arg0);\n };\n imports.wbg.__wbindgen_memory = function() {\n var ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper413 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_38);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper415 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_41);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper417 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_44);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper419 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_47);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper421 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_50);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper423 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_53);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper425 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_56);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper427 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 3, __wbg_adapter_59);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1860 = function(arg0, arg1, arg2) {\n var ret = makeMutClosure(arg0, arg1, 916, __wbg_adapter_62);\n return addHeapObject(ret);\n };\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n\n\n const { instance, module } = await load(await input, imports);\n\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n\n return wasm;\n}\n\nexport default init;\n\n","/**\n * Functions imported from JS into Ruffle.\n *\n * @ignore\n * @internal\n */\n/**\n * Copies data into the given audio channel.\n * This is necessary because Safari does not support `AudioBuffer.copyToChannel`.\n *\n * @internal\n */\nexport function copyToAudioBuffer(audioBuffer, leftData, rightData) {\n if (leftData) {\n const dstBuffer = audioBuffer.getChannelData(0);\n dstBuffer.set(leftData);\n }\n if (rightData) {\n const dstBuffer = audioBuffer.getChannelData(1);\n dstBuffer.set(rightData);\n }\n}\n/**\n * Returns `AudioContext.getOutputTimestamp`, defaulting to `context.currentTime` if\n * `getOutputTimestamp` is unavailable. This is necessary because `web-sys` does not yet export\n * `AudioBuffer.copyToChannel`.\n *\n * @internal\n */\nexport function getAudioOutputTimestamp(context) {\n var _a, _b;\n const timestamp = (_a = context.getOutputTimestamp) === null || _a === void 0 ? void 0 : _a.call(context);\n return (_b = timestamp === null || timestamp === void 0 ? void 0 : timestamp.contextTime) !== null && _b !== void 0 ? _b : context.currentTime - context.baseLatency;\n}\n","/**\n * Polyfills the `Array.prototype.reduce` method.\n *\n * Production steps of ECMA-262, Edition 5, 15.4.4.21\n * Reference: https://es5.github.io/#x15.4.4.21\n * https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n *\n */\nfunction polyfillArrayPrototypeReduce() {\n Object.defineProperty(Array.prototype, \"reduce\", {\n value(...args) {\n if (args.length === 0 &&\n window.Prototype &&\n window.Prototype.Version &&\n window.Prototype.Version < \"1.6.1\") {\n // Off-spec: compatibility with prototype.js\n return this.length > 1 ? this : this[0];\n }\n const callback = args[0];\n if (this === null) {\n throw new TypeError(\"Array.prototype.reduce called on null or undefined\");\n }\n if (typeof callback !== \"function\") {\n throw new TypeError(`${callback} is not a function`);\n }\n const o = Object(this);\n const len = o.length >>> 0;\n let k = 0;\n let value;\n if (args.length >= 2) {\n value = args[1];\n }\n else {\n while (k < len && !(k in o)) {\n k++;\n }\n if (k >= len) {\n throw new TypeError(\"Reduce of empty array with no initial value\");\n }\n value = o[k++];\n }\n while (k < len) {\n if (k in o) {\n value = callback(value, o[k], k, o);\n }\n k++;\n }\n return value;\n },\n });\n}\n/**\n * Polyfills the `Window` function.\n *\n */\nfunction polyfillWindow() {\n if (typeof window.constructor !== \"function\" ||\n !isNativeFunction(window.constructor)) {\n // Don't polyfill `Window` if `window.constructor` has been overridden.\n return;\n }\n // @ts-expect-error: `Function not assignable to { new (): Window; prototype: Window; }`\n window.Window = window.constructor;\n}\n/**\n * Polyfills the `Reflect` object and members.\n *\n * Currently it's a minimal implementation with only `get` and `set`\n * just enough for wasm-bindgen's stdlib to not crash on pages I've found.\n *\n */\nfunction tryPolyfillReflect() {\n if (window.Reflect == undefined) {\n // @ts-expect-error: {} indeed doesn't implement Reflect's interface.\n window.Reflect = {};\n }\n if (typeof Reflect.get !== \"function\") {\n Object.defineProperty(Reflect, \"get\", {\n value(target, key) {\n return target[key];\n },\n });\n }\n if (typeof Reflect.set !== \"function\") {\n Object.defineProperty(Reflect, \"set\", {\n value(target, key, value) {\n target[key] = value;\n },\n });\n }\n}\n/**\n * Determines whether a function is native or not.\n *\n * @param func The function to test.\n * @returns True if the function hasn't been overridden.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFunction(func) {\n const val = typeof Function.prototype.toString === \"function\"\n ? Function.prototype.toString()\n : null;\n if (typeof val === \"string\" && val.indexOf(\"[native code]\") >= 0) {\n return (Function.prototype.toString.call(func).indexOf(\"[native code]\") >= 0);\n }\n return false;\n}\n/**\n * Checks and applies the polyfills to the current window, if needed.\n *\n */\nexport function setPolyfillsOnLoad() {\n if (typeof Array.prototype.reduce !== \"function\" ||\n !isNativeFunction(Array.prototype.reduce)) {\n // Some external libraries override the `Array.prototype.reduce` method in a way\n // that causes Webpack to crash (#1507, #1865), so we need to override it again.\n polyfillArrayPrototypeReduce();\n }\n if (typeof Window !== \"function\" || !isNativeFunction(Window)) {\n // Overriding the native `Window` function causes issues in wasm-bindgen, as a\n // code like `window instanceof Window` will no longer work.\n polyfillWindow();\n }\n // Some pages override native `Reflect` with a new object without some properties,\n // which causes issues for wasm-bindgen's stdlib implementation.\n tryPolyfillReflect();\n}\n","// This must be in global scope because `document.currentScript`\n// works only while the script is initially being processed.\nlet currentScriptURL = \"\";\ntry {\n if (document.currentScript !== undefined &&\n document.currentScript !== null &&\n \"src\" in document.currentScript &&\n document.currentScript.src !== \"\") {\n currentScriptURL = new URL(\".\", document.currentScript.src).href;\n }\n}\ncatch (e) {\n console.warn(\"Unable to get currentScript URL\");\n}\n/**\n * Attempt to discover the public path of the current Ruffle source. This can\n * be used to configure Webpack.\n *\n * A global public path can be specified for all sources using the RufflePlayer\n * config:\n *\n * ```js\n * window.RufflePlayer.config.publicPath = \"/dist/\";\n * ```\n *\n * If no such config is specified, then the parent path of where this script is\n * hosted is assumed, which should be the correct default in most cases.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @returns The public path for the given source.\n */\nexport function publicPath(config) {\n // Default to the directory where this script resides.\n let path = currentScriptURL;\n if (config !== undefined && config.publicPath !== undefined) {\n path = config.publicPath;\n }\n // Webpack expects the paths to end with a slash.\n if (path !== \"\" && !path.endsWith(\"/\")) {\n path += \"/\";\n }\n return path;\n}\n","/**\n * Conditional ruffle loader\n */\nimport init, { Ruffle } from \"../pkg/ruffle_web\";\nimport { setPolyfillsOnLoad } from \"./js-polyfills\";\nimport { publicPath } from \"./public-path\";\n/**\n * Load ruffle from an automatically-detected location.\n *\n * This function returns a new instance of Ruffle and downloads it every time.\n * You should not use it directly; this module will memoize the resource\n * download.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @returns A ruffle constructor that may be used to create new Ruffle\n * instances.\n */\nasync function fetchRuffle(config) {\n // Apply some pure JavaScript polyfills to prevent conflicts with external\n // libraries, if needed.\n setPolyfillsOnLoad();\n __webpack_public_path__ = publicPath(config);\n await init();\n return Ruffle;\n}\nlet lastLoaded = null;\n/**\n * Obtain an instance of `Ruffle`.\n *\n * This function returns a promise which yields `Ruffle` asynchronously.\n *\n * @param config The `window.RufflePlayer.config` object.\n * @returns A ruffle constructor that may be used to create new Ruffle\n * instances.\n */\nexport function loadRuffle(config) {\n if (lastLoaded == null) {\n lastLoaded = fetchRuffle(config);\n }\n return lastLoaded;\n}\n","/**\n * Replacement object for `MimeTypeArray` that lets us install new fake mime\n * types.\n *\n * Unlike plugins we can at least enumerate mime types in Firefox, so we don't\n * lose data.\n *\n * We also expose a method called `install` which adds a new plugin. This is\n * used to falsify Flash detection. If the existing `navigator.mimeTypes` has an\n * `install` method, you should not use `RuffleMimeTypeArray` as some other\n * plugin emulator is already present.\n */\nclass RuffleMimeTypeArray {\n constructor(native_mimetype_array) {\n this.__mimetypes = [];\n this.__named_mimetypes = {};\n if (native_mimetype_array) {\n for (let i = 0; i < native_mimetype_array.length; i++) {\n this.install(native_mimetype_array[i]);\n }\n }\n }\n /**\n * Install a MIME Type into the array.\n *\n * @param mimetype The mimetype to install\n */\n install(mimetype) {\n const id = this.__mimetypes.length;\n this.__mimetypes.push(mimetype);\n this.__named_mimetypes[mimetype.type] = mimetype;\n this[mimetype.type] = mimetype;\n this[id] = mimetype;\n }\n item(index) {\n return this.__mimetypes[index];\n }\n namedItem(name) {\n return this.__named_mimetypes[name];\n }\n get length() {\n return this.__mimetypes.length;\n }\n [Symbol.iterator]() {\n return this.__mimetypes[Symbol.iterator]();\n }\n}\n/**\n * Equivalent object to `Plugin` that allows us to falsify plugins.\n */\nclass RufflePlugin extends RuffleMimeTypeArray {\n constructor(name, description, filename, mimetypes) {\n super(mimetypes);\n this.name = name;\n this.description = description;\n this.filename = filename;\n }\n install(mimetype) {\n super.install(mimetype);\n }\n [Symbol.iterator]() {\n return super[Symbol.iterator]();\n }\n}\n/**\n * Replacement object for `PluginArray` that lets us install new fake plugins.\n *\n * This object needs to wrap the native plugin array, since the user might have\n * actual plugins installed. Firefox doesn't let us enumerate the array, though,\n * which has some consequences. Namely, we can't actually perfectly wrap the\n * native plugin array, at least unless there's some secret \"unresolved object\n * property name handler\" that I've never known before in JS...\n *\n * We can still wrap `namedItem` perfectly at least.\n *\n * We also expose a method called `install` which adds a new plugin. This is\n * used to falsify Flash detection. If the existing `navigator.plugins` has an\n * `install` method, you should not use `RufflePluginArray` as some other plugin\n * emulator is already present.\n */\nclass RufflePluginArray {\n constructor(native_plugin_array) {\n this.__plugins = [];\n this.__named_plugins = {};\n for (let i = 0; i < native_plugin_array.length; i++) {\n this.install(native_plugin_array[i]);\n }\n }\n install(plugin) {\n const id = this.__plugins.length;\n this.__plugins.push(plugin);\n this.__named_plugins[plugin.name] = plugin;\n this[plugin.name] = plugin;\n this[id] = plugin;\n }\n item(index) {\n return this.__plugins[index];\n }\n namedItem(name) {\n return this.__named_plugins[name];\n }\n get length() {\n return this.__plugins.length;\n }\n}\n/**\n * A fake plugin designed to trigger Flash detection scripts.\n */\nexport const FLASH_PLUGIN = new RufflePlugin(\"Shockwave Flash\", \"Shockwave Flash 32.0 r0\", \"ruffle.js\", null);\nFLASH_PLUGIN.install({\n type: \"application/futuresplash\",\n description: \"Shockwave Flash\",\n suffixes: \"spl\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: \"application/x-shockwave-flash\",\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: \"application/x-shockwave-flash2-preview\",\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\nFLASH_PLUGIN.install({\n type: \"application/vnd.adobe.flash-movie\",\n description: \"Shockwave Flash\",\n suffixes: \"swf\",\n enabledPlugin: FLASH_PLUGIN,\n});\n/**\n * Install a fake plugin such that detectors will see it in `navigator.plugins`.\n *\n * This function takes care to check if the existing implementation of\n * `navigator.plugins` already accepts fake plugin entries. If so, it will use\n * that version of the plugin array. This allows the plugin polyfill to compose\n * across multiple plugin emulators with the first emulator's polyfill winning.\n *\n * @param plugin The plugin to install\n */\nexport function installPlugin(plugin) {\n if (!(\"install\" in navigator.plugins) || !navigator.plugins[\"install\"]) {\n Object.defineProperty(navigator, \"plugins\", {\n value: new RufflePluginArray(navigator.plugins),\n writable: false,\n });\n }\n const plugins = navigator.plugins;\n plugins.install(plugin);\n if (plugin.length > 0 &&\n (!(\"install\" in navigator.mimeTypes) || !navigator.mimeTypes[\"install\"])) {\n Object.defineProperty(navigator, \"mimeTypes\", {\n value: new RuffleMimeTypeArray(navigator.mimeTypes),\n writable: false,\n });\n }\n const mimeTypes = navigator.mimeTypes;\n for (let i = 0; i < plugin.length; i += 1) {\n mimeTypes.install(plugin[i]);\n }\n}\n","/**\n * The shadow template which is used to fill the actual Ruffle player element\n * on the page.\n */\nexport const ruffleShadowTemplate = document.createElement(\"template\");\nruffleShadowTemplate.innerHTML = `\n <style>\n :host {\n --ruffle-blue: #37528c;\n --ruffle-orange: #ffad33;\n\n display: inline-block;\n position: relative;\n /* Default width/height; this will get overridden by user styles/attributes. */\n width: 550px;\n height: 400px;\n font-family: Arial, sans-serif;\n letter-spacing: 0.4px;\n touch-action: none;\n user-select: none;\n -webkit-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n /* Ruffle's width/height CSS interferes Safari fullscreen CSS. */\n /* Ensure that Safari's fullscreen mode actually fills the screen. */\n :host(:-webkit-full-screen) {\n display: block;\n width: 100% !important;\n height: 100% !important;\n }\n\n /* All of these use the dimensions specified by the embed. */\n #container,\n #play_button,\n #unmute_overlay,\n #unmute_overlay .background,\n #panic,\n #message_overlay {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n }\n\n #container {\n overflow: hidden;\n }\n\n #container canvas {\n width: 100%;\n height: 100%;\n }\n\n #play_button,\n #unmute_overlay {\n cursor: pointer;\n display: none;\n }\n\n #unmute_overlay .background {\n background: black;\n opacity: 0.7;\n }\n\n #play_button .icon,\n #unmute_overlay .icon {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 50%;\n height: 50%;\n max-width: 384px;\n max-height: 384px;\n transform: translate(-50%, -50%);\n opacity: 0.8;\n }\n\n #play_button:hover .icon,\n #unmute_overlay:hover .icon {\n opacity: 1;\n }\n\n #panic {\n font-size: 20px;\n text-align: center;\n /* Inverted colors from play button! */\n background: linear-gradient(180deg, #fd3a40 0%, #fda138 100%);\n color: white;\n display: flex;\n flex-flow: column;\n justify-content: space-around;\n }\n\n #panic a {\n color: var(--ruffle-blue);\n font-weight: bold;\n }\n\n #panic-title {\n font-size: xxx-large;\n font-weight: bold;\n }\n\n #panic-body.details {\n flex: 0.9;\n margin: 0 10px;\n }\n\n #panic-body textarea {\n width: 100%;\n height: 100%;\n resize: none;\n }\n\n #panic ul {\n padding: 0;\n display: flex;\n list-style-type: none;\n justify-content: space-evenly;\n }\n\n #message_overlay {\n position: absolute;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n opacity: 1;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: auto;\n }\n\n #message_overlay .message {\n text-align: center;\n max-height: 100%;\n max-width: 100%;\n padding: 5%;\n }\n\n #message_overlay p {\n margin: 0.5em 0;\n }\n\n #message_overlay .message div {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n column-gap: 1em;\n }\n\n #message_overlay a, #message_overlay button {\n cursor: pointer;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n border: 2px solid var(--ruffle-orange);\n font-weight: bold;\n font-size: 1.25em;\n border-radius: 0.6em;\n padding: 10px;\n text-decoration: none;\n margin: 2% 0;\n }\n\n #message_overlay a:hover, #message_overlay button:hover {\n background: #ffffff4c;\n }\n\n #continue-btn {\n cursor: pointer;\n background: var(--ruffle-blue);\n color: var(--ruffle-orange);\n border: 2px solid var(--ruffle-orange);\n font-weight: bold;\n font-size: 20px;\n border-radius: 20px;\n padding: 10px;\n }\n\n #continue-btn:hover {\n background: #ffffff4c;\n }\n\n #context-menu {\n display: none;\n color: black;\n background: #fafafa;\n border: 1px solid gray;\n box-shadow: 0px 5px 10px -5px black;\n position: absolute;\n font-size: 14px;\n text-align: left;\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n #context-menu .menu_item {\n padding: 5px 10px;\n cursor: pointer;\n color: black;\n }\n\n #context-menu .menu_item.disabled {\n cursor: default;\n color: gray;\n }\n\n #context-menu .menu_item:not(.disabled):hover {\n background: lightgray;\n }\n\n #context-menu .menu_separator hr {\n border: none;\n border-bottom: 1px solid lightgray;\n margin: 2px;\n }\n </style>\n <style id=\"dynamic_styles\"></style>\n\n <div id=\"container\">\n <div id=\"play_button\"><div class=\"icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid\" viewBox=\"0 0 250 250\" style=\"width:100%;height:100%;\"><defs><linearGradient id=\"a\" gradientUnits=\"userSpaceOnUse\" x1=\"125\" y1=\"0\" x2=\"125\" y2=\"250\" spreadMethod=\"pad\"><stop offset=\"0%\" stop-color=\"#FDA138\"/><stop offset=\"100%\" stop-color=\"#FD3A40\"/></linearGradient><g id=\"b\"><path fill=\"url(#a)\" d=\"M250 125q0-52-37-88-36-37-88-37T37 37Q0 73 0 125t37 88q36 37 88 37t88-37q37-36 37-88M87 195V55l100 70-100 70z\"/><path fill=\"#FFF\" d=\"M87 55v140l100-70L87 55z\"/></g></defs><use xlink:href=\"#b\"/></svg></div></div>\n <div id=\"unmute_overlay\"><div class=\"background\"></div><div class=\"icon\"><svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" preserveAspectRatio=\"xMidYMid\" viewBox=\"0 0 512 584\" style=\"width:100%;height:100%;scale:0.8;\"><path fill=\"#FFF\" stroke=\"#FFF\" d=\"m457.941 256 47.029-47.029c9.372-9.373 9.372-24.568 0-33.941-9.373-9.373-24.568-9.373-33.941 0l-47.029 47.029-47.029-47.029c-9.373-9.373-24.568-9.373-33.941 0-9.372 9.373-9.372 24.568 0 33.941l47.029 47.029-47.029 47.029c-9.372 9.373-9.372 24.568 0 33.941 4.686 4.687 10.827 7.03 16.97 7.03s12.284-2.343 16.971-7.029l47.029-47.03 47.029 47.029c4.687 4.687 10.828 7.03 16.971 7.03s12.284-2.343 16.971-7.029c9.372-9.373 9.372-24.568 0-33.941z\"/><path fill=\"#FFF\" stroke=\"#FFF\" d=\"m99 160h-55c-24.301 0-44 19.699-44 44v104c0 24.301 19.699 44 44 44h55c2.761 0 5-2.239 5-5v-182c0-2.761-2.239-5-5-5z\"/><path fill=\"#FFF\" stroke=\"#FFF\" d=\"m280 56h-24c-5.269 0-10.392 1.734-14.578 4.935l-103.459 79.116c-1.237.946-1.963 2.414-1.963 3.972v223.955c0 1.557.726 3.026 1.963 3.972l103.459 79.115c4.186 3.201 9.309 4.936 14.579 4.936h23.999c13.255 0 24-10.745 24-24v-352.001c0-13.255-10.745-24-24-24z\"/><text x=\"256\" y=\"560\" text-anchor=\"middle\" style=\"font-size:60px;fill:#FFF;stroke:#FFF;\">Click to unmute</text></svg></div></div>\n </div>\n\n <ul id=\"context-menu\"></ul>\n`;\n","/**\n * Number of times to try defining a custom element.\n */\nconst MAX_TRIES = 999;\n/**\n * A mapping between internal element IDs and DOM element IDs.\n */\nconst privateRegistry = {};\n/**\n * Lookup a previously registered custom element.\n *\n * The returned object will have `name`, `class`, and `internal_name`\n * properties listing the external name, implementing class, and internal name\n * respectively.\n *\n * @param elementName The internal element name, previously used to\n * register the element with the private registry.\n * @returns The element data in the registry, or null if there is\n * no such element name registered.\n */\nexport function lookupElement(elementName) {\n const data = privateRegistry[elementName];\n if (data !== undefined) {\n return {\n internalName: elementName,\n name: data.name,\n class: data.class,\n };\n }\n else {\n return null;\n }\n}\n/**\n * Register a custom element.\n *\n * This function is designed to be tolerant of naming conflicts. If\n * registration fails, we modify the name, and try again. As a result, this\n * function returns the real element name to use.\n *\n * Calling this function multiple times will *not* register multiple elements.\n * We store a private registry mapping internal element names to DOM names.\n * Thus, the proper way to use this function is to call it every time you are\n * about to work with custom element names.\n *\n * @param elementName The internal name of the element.\n * @param elementClass The class of the element.\n *\n * You must call this function with the same class every time.\n * @returns The actual element name.\n * @throws Throws an error if two different elements were registered with the\n * same internal name.\n */\nexport function registerElement(elementName, elementClass) {\n if (privateRegistry[elementName] !== undefined) {\n if (privateRegistry[elementName].class !== elementClass) {\n throw new Error(\"Internal naming conflict on \" + elementName);\n }\n else {\n return privateRegistry[elementName].name;\n }\n }\n let tries = 0;\n if (window.customElements !== undefined) {\n while (tries < MAX_TRIES) {\n let externalName = elementName;\n if (tries > 0) {\n externalName = externalName + \"-\" + tries;\n }\n if (window.customElements.get(externalName) !== undefined) {\n tries += 1;\n continue;\n }\n else {\n window.customElements.define(externalName, elementClass);\n }\n privateRegistry[elementName] = {\n class: elementClass,\n name: externalName,\n internalName: elementName,\n };\n return externalName;\n }\n }\n throw new Error(\"Failed to assign custom element \" + elementName);\n}\n","import { loadRuffle } from \"./load-ruffle\";\nimport { ruffleShadowTemplate } from \"./shadow-template\";\nimport { lookupElement } from \"./register-element\";\nexport const FLASH_MIMETYPE = \"application/x-shockwave-flash\";\nexport const FUTURESPLASH_MIMETYPE = \"application/futuresplash\";\nexport const FLASH7_AND_8_MIMETYPE = \"application/x-shockwave-flash2-preview\";\nexport const FLASH_MOVIE_MIMETYPE = \"application/vnd.adobe.flash-movie\";\nexport const FLASH_ACTIVEX_CLASSID = \"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\";\nconst RUFFLE_ORIGIN = \"https://ruffle.rs\";\nconst DIMENSION_REGEX = /^\\s*(\\d+(\\.\\d+)?(%)?)/;\nlet isAudioContextUnmuted = false;\n/**\n * Converts arbitrary input to an easy to use record object.\n *\n * @param parameters Parameters to sanitize\n * @returns A sanitized map of param name to param value\n */\nfunction sanitizeParameters(parameters) {\n if (parameters === null || parameters === undefined) {\n return {};\n }\n if (!(parameters instanceof URLSearchParams)) {\n parameters = new URLSearchParams(parameters);\n }\n const output = {};\n for (const [key, value] of parameters) {\n // Every value must be type of string\n output[key] = value.toString();\n }\n return output;\n}\n/**\n * The ruffle player element that should be inserted onto the page.\n *\n * This element will represent the rendered and intractable flash movie.\n */\nexport class RufflePlayer extends HTMLElement {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n */\n constructor() {\n super();\n this.hasContextMenu = false;\n // Allows the user to permanently disable the context menu.\n this.contextMenuForceDisabled = false;\n // Whether this device is a touch device.\n // Set to true when a touch event is encountered.\n this.isTouch = false;\n this.showSwfDownload = false;\n this.panicked = false;\n this.isExtension = false;\n /**\n * Any configuration that should apply to this specific player.\n * This will be defaulted with any global configuration.\n */\n this.config = {};\n this.shadow = this.attachShadow({ mode: \"open\" });\n this.shadow.appendChild(ruffleShadowTemplate.content.cloneNode(true));\n this.dynamicStyles = (this.shadow.getElementById(\"dynamic_styles\"));\n this.container = this.shadow.getElementById(\"container\");\n this.playButton = this.shadow.getElementById(\"play_button\");\n if (this.playButton) {\n this.playButton.addEventListener(\"click\", () => this.play());\n }\n this.unmuteOverlay = this.shadow.getElementById(\"unmute_overlay\");\n this.contextMenuElement = this.shadow.getElementById(\"context-menu\");\n this.addEventListener(\"contextmenu\", this.showContextMenu.bind(this));\n this.addEventListener(\"pointerdown\", this.pointerDown.bind(this));\n this.addEventListener(\"fullscreenchange\", this.fullScreenChange.bind(this));\n this.addEventListener(\"webkitfullscreenchange\", this.fullScreenChange.bind(this));\n window.addEventListener(\"click\", this.hideContextMenu.bind(this));\n this.instance = null;\n this.options = null;\n this.onFSCommand = null;\n this._readyState = 0 /* HaveNothing */;\n this._metadata = null;\n this.lastActivePlayingState = false;\n this.setupPauseOnTabHidden();\n return this;\n }\n /**\n * Indicates the readiness of the playing movie.\n *\n * @returns The `ReadyState` of the player.\n */\n get readyState() {\n return this._readyState;\n }\n /**\n * The metadata of the playing movie (such as movie width and height).\n * These are inherent properties stored in the SWF file and are not affected by runtime changes.\n * For example, `metadata.width` is the width of the SWF file, and not the width of the Ruffle player.\n *\n * @returns The metadata of the movie, or `null` if the movie metadata has not yet loaded.\n */\n get metadata() {\n return this._metadata;\n }\n /**\n * Setup event listener to detect when tab is not active to pause instance playback.\n * this.instance.play() is called when the tab becomes visible only if the\n * the instance was not paused before tab became hidden.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API\n * @ignore\n * @internal\n */\n setupPauseOnTabHidden() {\n document.addEventListener(\"visibilitychange\", () => {\n if (!this.instance)\n return;\n // Tab just changed to be inactive. Record whether instance was playing.\n if (document.hidden) {\n this.lastActivePlayingState = this.instance.is_playing();\n this.instance.pause();\n }\n // Play only if instance was playing originally.\n if (!document.hidden && this.lastActivePlayingState === true) {\n this.instance.play();\n }\n }, false);\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n this.updateStyles();\n }\n /**\n * @ignore\n * @internal\n */\n static get observedAttributes() {\n return [\"width\", \"height\"];\n }\n /**\n * @ignore\n * @internal\n */\n attributeChangedCallback(name, _oldValue, _newValue) {\n if (name === \"width\" || name === \"height\") {\n this.updateStyles();\n }\n }\n /**\n * @ignore\n * @internal\n */\n disconnectedCallback() {\n this.destroy();\n }\n /**\n * Updates the internal shadow DOM to reflect any set attributes from\n * this element.\n *\n * @protected\n */\n updateStyles() {\n if (this.dynamicStyles.sheet) {\n if (this.dynamicStyles.sheet.rules) {\n for (let i = 0; i < this.dynamicStyles.sheet.rules.length; i++) {\n this.dynamicStyles.sheet.deleteRule(i);\n }\n }\n const widthAttr = this.attributes.getNamedItem(\"width\");\n if (widthAttr !== undefined && widthAttr !== null) {\n const width = RufflePlayer.htmlDimensionToCssDimension(widthAttr.value);\n if (width !== null) {\n this.dynamicStyles.sheet.insertRule(`:host { width: ${width}; }`);\n }\n }\n const heightAttr = this.attributes.getNamedItem(\"height\");\n if (heightAttr !== undefined && heightAttr !== null) {\n const height = RufflePlayer.htmlDimensionToCssDimension(heightAttr.value);\n if (height !== null) {\n this.dynamicStyles.sheet.insertRule(`:host { height: ${height}; }`);\n }\n }\n }\n }\n /**\n * Determine if this element is the fallback content of another Ruffle\n * player.\n *\n * This heuristic assumes Ruffle objects will never use their fallback\n * content. If this changes, then this code also needs to change.\n *\n * @private\n */\n isUnusedFallbackObject() {\n let parent = this.parentNode;\n const element = lookupElement(\"ruffle-object\");\n if (element !== null) {\n while (parent != document && parent != null) {\n if (parent.nodeName === element.name) {\n return true;\n }\n parent = parent.parentNode;\n }\n }\n return false;\n }\n /**\n * Ensure a fresh Ruffle instance is ready on this player before continuing.\n *\n * @throws Any exceptions generated by loading Ruffle Core will be logged\n * and passed on.\n *\n * @private\n */\n async ensureFreshInstance(config) {\n var _a;\n this.destroy();\n const ruffleConstructor = await loadRuffle(config).catch((e) => {\n console.error(`Serious error loading Ruffle: ${e}`);\n // Serious duck typing. In error conditions, let's not make assumptions.\n if (window.location.protocol === \"file:\") {\n e.ruffleIndexError = 2 /* FileProtocol */;\n }\n else {\n e.ruffleIndexError = 9 /* WasmNotFound */;\n const message = String(e.message).toLowerCase();\n if (message.includes(\"mime\")) {\n e.ruffleIndexError = 8 /* WasmMimeType */;\n }\n else if (message.includes(\"networkerror\") ||\n message.includes(\"failed to fetch\")) {\n e.ruffleIndexError = 6 /* WasmCors */;\n }\n else if (message.includes(\"disallowed by embedder\")) {\n e.ruffleIndexError = 1 /* CSPConflict */;\n }\n else if (e.name === \"CompileError\") {\n e.ruffleIndexError = 3 /* InvalidWasm */;\n }\n else if (message.includes(\"could not download wasm module\") &&\n e.name === \"TypeError\") {\n e.ruffleIndexError = 7 /* WasmDownload */;\n }\n else if (e.name === \"TypeError\") {\n e.ruffleIndexError = 5 /* JavascriptConflict */;\n }\n }\n this.panic(e);\n throw e;\n });\n this.instance = await new ruffleConstructor(this.container, this, config);\n console.log(\"New Ruffle instance created.\");\n // In Firefox, AudioContext.state is always \"suspended\" when the object has just been created.\n // It may change by itself to \"running\" some milliseconds later. So we need to wait a little\n // bit before checking if autoplay is supported and applying the instance config.\n if (this.audioState() !== \"running\") {\n this.container.style.visibility = \"hidden\";\n await new Promise((resolve) => {\n window.setTimeout(() => {\n resolve();\n }, 200);\n });\n this.container.style.visibility = \"\";\n }\n this.unmuteAudioContext();\n // Treat unspecified and invalid values as `AutoPlay.Auto`.\n if (config.autoplay === \"on\" /* On */ ||\n (config.autoplay !== \"off\" /* Off */ &&\n this.audioState() === \"running\")) {\n this.play();\n if (this.audioState() !== \"running\") {\n // Treat unspecified and invalid values as `UnmuteOverlay.Visible`.\n if (config.unmuteOverlay !== \"hidden\" /* Hidden */) {\n this.unmuteOverlay.style.display = \"block\";\n }\n this.container.addEventListener(\"click\", this.unmuteOverlayClicked.bind(this), {\n once: true,\n });\n const audioContext = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.audio_context();\n if (audioContext) {\n audioContext.onstatechange = () => {\n if (audioContext.state === \"running\") {\n this.unmuteOverlayClicked();\n }\n audioContext.onstatechange = null;\n };\n }\n }\n }\n else {\n this.playButton.style.display = \"block\";\n }\n }\n /**\n * Destroys the currently running instance of Ruffle.\n */\n destroy() {\n if (this.instance) {\n this.instance.destroy();\n this.instance = null;\n this._metadata = null;\n this._readyState = 0 /* HaveNothing */;\n console.log(\"Ruffle instance destroyed.\");\n }\n }\n /**\n * Loads a specified movie into this player.\n *\n * This will replace any existing movie that may be playing.\n *\n * @param options One of the following:\n * - A URL, passed as a string, which will load a URL with default options.\n * - A [[URLLoadOptions]] object, to load a URL with options.\n * - A [[DataLoadOptions]] object, to load data with options.\n *\n * The options will be defaulted by the [[config]] field, which itself\n * is defaulted by a global `window.RufflePlayer.config`.\n */\n async load(options) {\n var _a, _b;\n let optionsError = \"\";\n switch (typeof options) {\n case \"string\":\n options = { url: options };\n break;\n case \"object\":\n if (options === null) {\n optionsError = \"Argument 0 must be a string or object\";\n }\n else if (!(\"url\" in options) && !(\"data\" in options)) {\n optionsError =\n \"Argument 0 must contain a `url` or `data` key\";\n }\n else if (\"url\" in options &&\n typeof options.url !== \"string\") {\n optionsError = \"`url` must be a string\";\n }\n break;\n default:\n optionsError = \"Argument 0 must be a string or object\";\n break;\n }\n if (optionsError.length > 0) {\n const error = new TypeError(optionsError);\n error.ruffleIndexError = 4 /* JavascriptConfiguration */;\n this.panic(error);\n throw error;\n }\n if (!this.isConnected || this.isUnusedFallbackObject()) {\n console.warn(\"Ignoring attempt to play a disconnected or suspended Ruffle element\");\n return;\n }\n if (isFallbackElement(this)) {\n // Silently fail on attempt to play a Ruffle element inside a specific node.\n return;\n }\n try {\n const config = Object.assign(Object.assign(Object.assign({}, ((_b = (_a = window.RufflePlayer) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {})), this.config), options);\n // `allowScriptAccess` can only be set in `options`.\n config.allowScriptAccess = options.allowScriptAccess;\n this.showSwfDownload = config.showSwfDownload === true;\n this.options = options;\n this.hasContextMenu = config.contextMenu !== false;\n // Pre-emptively set background color of container while Ruffle/SWF loads.\n if (config.backgroundColor) {\n this.container.style.backgroundColor = config.backgroundColor;\n }\n await this.ensureFreshInstance(config);\n if (\"url\" in options) {\n console.log(`Loading SWF file ${options.url}`);\n try {\n this.swfUrl = new URL(options.url, document.location.href).href;\n }\n catch (_c) {\n this.swfUrl = options.url;\n }\n const parameters = Object.assign(Object.assign({}, sanitizeParameters(options.url.substring(options.url.indexOf(\"?\")))), sanitizeParameters(options.parameters));\n this.instance.stream_from(this.swfUrl, parameters);\n }\n else if (\"data\" in options) {\n console.log(\"Loading SWF data\");\n this.instance.load_data(new Uint8Array(options.data), sanitizeParameters(options.parameters));\n }\n }\n catch (err) {\n console.error(`Serious error occurred loading SWF file: ${err}`);\n throw err;\n }\n }\n /**\n * Plays or resumes the movie.\n */\n play() {\n if (this.instance) {\n this.instance.play();\n if (this.playButton) {\n this.playButton.style.display = \"none\";\n }\n }\n }\n /**\n * Checks if this player is allowed to be fullscreen by the browser.\n *\n * @returns True if you may call [[enterFullscreen]].\n */\n get fullscreenEnabled() {\n return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled);\n }\n /**\n * Checks if this player is currently fullscreen inside the browser.\n *\n * @returns True if it is fullscreen.\n */\n get isFullscreen() {\n return ((document.fullscreenElement || document.webkitFullscreenElement) ===\n this);\n }\n /**\n * Exported function that requests the browser to change the fullscreen state if\n * it is allowed.\n *\n * @param isFull Whether to set to fullscreen or return to normal.\n */\n setFullscreen(isFull) {\n if (this.fullscreenEnabled) {\n if (isFull) {\n this.enterFullscreen();\n }\n else {\n this.exitFullscreen();\n }\n }\n }\n /**\n * Requests the browser to make this player fullscreen.\n *\n * This is not guaranteed to succeed, please check [[fullscreenEnabled]] first.\n */\n enterFullscreen() {\n const options = {\n navigationUI: \"hide\",\n };\n if (this.requestFullscreen) {\n this.requestFullscreen(options);\n }\n else if (this.webkitRequestFullscreen) {\n this.webkitRequestFullscreen(options);\n }\n else if (this.webkitRequestFullScreen) {\n this.webkitRequestFullScreen(options);\n }\n }\n /**\n * Requests the browser to no longer make this player fullscreen.\n */\n exitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n }\n else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n }\n /**\n * Called when entering / leaving fullscreen\n */\n fullScreenChange() {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_fullscreen(this.isFullscreen);\n }\n pointerDown(event) {\n // Give option to disable context menu when touch support is being used\n // to avoid a long press triggering the context menu. (#1972)\n if (event.pointerType === \"touch\" || event.pointerType === \"pen\") {\n this.isTouch = true;\n }\n }\n /**\n * Fetches the loaded SWF and downloads it.\n */\n async downloadSwf() {\n try {\n if (this.swfUrl) {\n console.log(\"Downloading SWF: \" + this.swfUrl);\n const response = await fetch(this.swfUrl);\n if (!response.ok) {\n console.error(\"SWF download failed\");\n return;\n }\n const blob = await response.blob();\n const blobUrl = URL.createObjectURL(blob);\n const swfDownloadA = document.createElement(\"a\");\n swfDownloadA.style.display = \"none\";\n swfDownloadA.href = blobUrl;\n swfDownloadA.download = this.swfUrl.substring(this.swfUrl.lastIndexOf(\"/\") + 1);\n document.body.appendChild(swfDownloadA);\n swfDownloadA.click();\n document.body.removeChild(swfDownloadA);\n URL.revokeObjectURL(blobUrl);\n }\n else {\n console.error(\"SWF download failed\");\n }\n }\n catch (err) {\n console.error(\"SWF download failed\");\n }\n }\n contextMenuItems() {\n const CHECKMARK = String.fromCharCode(0x2713);\n const items = [];\n if (this.instance) {\n const customItems = this.instance.prepare_context_menu();\n customItems.forEach((item, index) => {\n if (item.separatorBefore)\n items.push(null);\n items.push({\n // TODO: better checkboxes\n text: item.caption + (item.checked ? ` (${CHECKMARK})` : ``),\n onClick: () => { var _a; return (_a = this.instance) === null || _a === void 0 ? void 0 : _a.run_context_menu_callback(index); },\n enabled: item.enabled,\n });\n });\n }\n items.push(null);\n if (this.fullscreenEnabled) {\n if (this.isFullscreen) {\n items.push({\n text: \"Exit fullscreen\",\n onClick: () => { var _a; return (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_fullscreen(false); },\n });\n }\n else {\n items.push({\n text: \"Enter fullscreen\",\n onClick: () => { var _a; return (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_fullscreen(true); },\n });\n }\n }\n if (this.instance && this.swfUrl && this.showSwfDownload) {\n items.push(null);\n items.push({\n text: `Download .swf`,\n onClick: this.downloadSwf.bind(this),\n });\n }\n items.push(null);\n const extensionString = this.isExtension ? \"extension\" : \"\";\n items.push({\n text: `About Ruffle ${extensionString} (nightly 2021-12-31)`,\n onClick() {\n window.open(RUFFLE_ORIGIN, \"_blank\");\n },\n });\n if (this.isTouch) {\n items.push(null);\n items.push({\n text: \"Hide this menu\",\n onClick: () => (this.contextMenuForceDisabled = true),\n });\n }\n return items;\n }\n showContextMenu(e) {\n e.preventDefault();\n if (!this.hasContextMenu || this.contextMenuForceDisabled) {\n return;\n }\n // Clear all context menu items.\n while (this.contextMenuElement.firstChild) {\n this.contextMenuElement.removeChild(this.contextMenuElement.firstChild);\n }\n // Populate context menu items.\n for (const item of this.contextMenuItems()) {\n if (item === null) {\n if (!this.contextMenuElement.lastElementChild)\n continue; // don't start with separators\n if (this.contextMenuElement.lastElementChild.classList.contains(\"menu_separator\"))\n continue; // don't repeat separators\n const menuSeparator = document.createElement(\"li\");\n menuSeparator.className = \"menu_separator\";\n const hr = document.createElement(\"hr\");\n menuSeparator.appendChild(hr);\n this.contextMenuElement.appendChild(menuSeparator);\n }\n else {\n const { text, onClick, enabled } = item;\n const menuItem = document.createElement(\"li\");\n menuItem.className = \"menu_item\";\n menuItem.textContent = text;\n this.contextMenuElement.appendChild(menuItem);\n if (enabled !== false) {\n menuItem.addEventListener(\"click\", onClick);\n }\n else {\n menuItem.classList.add(\"disabled\");\n }\n }\n }\n // Place a context menu in the top-left corner, so\n // its `clientWidth` and `clientHeight` are not clamped.\n this.contextMenuElement.style.left = \"0\";\n this.contextMenuElement.style.top = \"0\";\n this.contextMenuElement.style.display = \"block\";\n const rect = this.getBoundingClientRect();\n const x = e.clientX - rect.x;\n const y = e.clientY - rect.y;\n const maxX = rect.width - this.contextMenuElement.clientWidth - 1;\n const maxY = rect.height - this.contextMenuElement.clientHeight - 1;\n this.contextMenuElement.style.left =\n Math.floor(Math.min(x, maxX)) + \"px\";\n this.contextMenuElement.style.top =\n Math.floor(Math.min(y, maxY)) + \"px\";\n }\n hideContextMenu() {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.clear_custom_menu_items();\n this.contextMenuElement.style.display = \"none\";\n }\n /**\n * Pauses this player.\n *\n * No more frames, scripts or sounds will be executed.\n * This movie will be considered inactive and will not wake up until resumed.\n */\n pause() {\n if (this.instance) {\n this.instance.pause();\n if (this.playButton) {\n this.playButton.style.display = \"block\";\n }\n }\n }\n audioState() {\n if (this.instance) {\n const audioContext = this.instance.audio_context();\n return (audioContext && audioContext.state) || \"running\";\n }\n return \"suspended\";\n }\n unmuteOverlayClicked() {\n if (this.instance) {\n if (this.audioState() !== \"running\") {\n const audioContext = this.instance.audio_context();\n if (audioContext) {\n audioContext.resume();\n }\n }\n if (this.unmuteOverlay) {\n this.unmuteOverlay.style.display = \"none\";\n }\n }\n }\n /**\n * Plays a silent sound based on the AudioContext's sample rate.\n *\n * This is used to unmute audio on iOS and iPadOS when silent mode is enabled on the device (issue 1552).\n */\n unmuteAudioContext() {\n // No need to play the dummy sound again once audio is unmuted.\n if (isAudioContextUnmuted)\n return;\n // TODO: Use `navigator.userAgentData` to detect the platform when support improves?\n if (navigator.maxTouchPoints < 1) {\n isAudioContextUnmuted = true;\n return;\n }\n this.container.addEventListener(\"click\", () => {\n var _a;\n if (isAudioContextUnmuted)\n return;\n const audioContext = (_a = this.instance) === null || _a === void 0 ? void 0 : _a.audio_context();\n if (!audioContext)\n return;\n const audio = new Audio();\n audio.src = (() => {\n // Returns a seven samples long 8 bit mono WAVE file.\n // This is required to prevent the AudioContext from desyncing and crashing.\n const arrayBuffer = new ArrayBuffer(10);\n const dataView = new DataView(arrayBuffer);\n const sampleRate = audioContext.sampleRate;\n dataView.setUint32(0, sampleRate, true);\n dataView.setUint32(4, sampleRate, true);\n dataView.setUint16(8, 1, true);\n const missingCharacters = window\n .btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)))\n .slice(0, 13);\n return `data:audio/wav;base64,UklGRisAAABXQVZFZm10IBAAAAABAAEA${missingCharacters}AgAZGF0YQcAAACAgICAgICAAAA=`;\n })();\n audio.load();\n audio\n .play()\n .then(() => {\n isAudioContextUnmuted = true;\n })\n .catch((err) => {\n console.warn(`Failed to play dummy sound: ${err}`);\n });\n }, { once: true });\n }\n /**\n * Copies attributes and children from another element to this player element.\n * Used by the polyfill elements, RuffleObject and RuffleEmbed.\n *\n * @param elem The element to copy all attributes from.\n * @protected\n */\n copyElement(elem) {\n if (elem) {\n for (let i = 0; i < elem.attributes.length; i++) {\n const attrib = elem.attributes[i];\n if (attrib.specified) {\n // Issue 468: Chrome \"Click to Active Flash\" box stomps on title attribute\n if (attrib.name === \"title\" &&\n attrib.value === \"Adobe Flash Player\") {\n continue;\n }\n try {\n this.setAttribute(attrib.name, attrib.value);\n }\n catch (err) {\n // The embed may have invalid attributes, so handle these gracefully.\n console.warn(`Unable to set attribute ${attrib.name} on Ruffle instance`);\n }\n }\n }\n for (const node of Array.from(elem.children)) {\n this.appendChild(node);\n }\n }\n }\n /**\n * Converts a dimension attribute on an HTML embed/object element to a valid CSS dimension.\n * HTML element dimensions are unitless, but can also be percentages.\n * Add a 'px' unit unless the value is a percentage.\n * Returns null if this is not a valid dimension.\n *\n * @param attribute The attribute to convert\n *\n * @private\n */\n static htmlDimensionToCssDimension(attribute) {\n if (attribute) {\n const match = attribute.match(DIMENSION_REGEX);\n if (match) {\n let out = match[1];\n if (!match[3]) {\n // Unitless -- add px for CSS.\n out += \"px\";\n }\n return out;\n }\n }\n return null;\n }\n /**\n * When a movie presents a new callback through `ExternalInterface.addCallback`,\n * we are informed so that we can expose the method on any relevant DOM element.\n *\n * This should only be called by Ruffle itself and not by users.\n *\n * @param name The name of the callback that is now available.\n *\n * @internal\n * @ignore\n */\n onCallbackAvailable(name) {\n const instance = this.instance;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this[name] = (...args) => {\n return instance === null || instance === void 0 ? void 0 : instance.call_exposed_callback(name, args);\n };\n }\n /**\n * Sets a trace observer on this flash player.\n *\n * The observer will be called, as a function, for each message that the playing movie will \"trace\" (output).\n *\n * @param observer The observer that will be called for each trace.\n */\n set traceObserver(observer) {\n var _a;\n (_a = this.instance) === null || _a === void 0 ? void 0 : _a.set_trace_observer(observer);\n }\n /**\n * Panics this specific player, forcefully destroying all resources and displays an error message to the user.\n *\n * This should be called when something went absolutely, incredibly and disastrously wrong and there is no chance\n * of recovery.\n *\n * Ruffle will attempt to isolate all damage to this specific player instance, but no guarantees can be made if there\n * was a core issue which triggered the panic. If Ruffle is unable to isolate the cause to a specific player, then\n * all players will panic and Ruffle will become \"poisoned\" - no more players will run on this page until it is\n * reloaded fresh.\n *\n * @param error The error, if any, that triggered this panic.\n */\n panic(error) {\n var _a;\n if (this.panicked) {\n // Only show the first major error, not any repeats - they aren't as important\n return;\n }\n this.panicked = true;\n if (error instanceof Error &&\n (error.name === \"AbortError\" ||\n error.message.includes(\"AbortError\"))) {\n // Firefox: Don't display the panic screen if the user leaves the page while something is still loading\n return;\n }\n const errorIndex = (_a = error === null || error === void 0 ? void 0 : error.ruffleIndexError) !== null && _a !== void 0 ? _a : 0 /* Unknown */;\n const errorArray = Object.assign([], {\n stackIndex: -1,\n });\n errorArray.push(\"# Error Info\\n\");\n if (error instanceof Error) {\n errorArray.push(`Error name: ${error.name}\\n`);\n errorArray.push(`Error message: ${error.message}\\n`);\n if (error.stack) {\n const stackIndex = errorArray.push(`Error stack:\\n\\`\\`\\`\\n${error.stack}\\n\\`\\`\\`\\n`) - 1;\n errorArray.stackIndex = stackIndex;\n }\n }\n else {\n errorArray.push(`Error: ${error}\\n`);\n }\n errorArray.push(\"\\n# Player Info\\n\");\n errorArray.push(this.debugPlayerInfo());\n errorArray.push(\"\\n# Page Info\\n\");\n errorArray.push(`Page URL: ${document.location.href}\\n`);\n if (this.swfUrl)\n errorArray.push(`SWF URL: ${this.swfUrl}\\n`);\n errorArray.push(\"\\n# Browser Info\\n\");\n errorArray.push(`Useragent: ${window.navigator.userAgent}\\n`);\n errorArray.push(`OS: ${window.navigator.platform}\\n`);\n errorArray.push(\"\\n# Ruffle Info\\n\");\n errorArray.push(`Version: 0.1.0\\n`);\n errorArray.push(`Name: nightly 2021-12-31\\n`);\n errorArray.push(`Channel: nightly\\n`);\n errorArray.push(`Built: 2021-12-31T00:11:55.965Z\\n`);\n errorArray.push(`Commit: 0bab5f6d9105e587522a7b828e5e5b0175aec69b\\n`);\n errorArray.push(`Is extension: ${this.isExtension}\\n`);\n const errorText = errorArray.join(\"\");\n // Remove query params for the issue title.\n const pageUrl = document.location.href.split(/[?#]/)[0];\n const issueTitle = `Error on ${pageUrl}`;\n let issueLink = `https://github.com/ruffle-rs/ruffle/issues/new?title=${encodeURIComponent(issueTitle)}&labels=error-report&body=`;\n let issueBody = encodeURIComponent(errorText);\n if (errorArray.stackIndex > -1 &&\n String(issueLink + issueBody).length > 8195) {\n // Strip the stack error from the array when the produced URL is way too long.\n // This should prevent \"414 Request-URI Too Large\" errors on Github.\n errorArray[errorArray.stackIndex] = null;\n issueBody = encodeURIComponent(errorArray.join(\"\"));\n }\n issueLink += issueBody;\n // Clears out any existing content (ie play button or canvas) and replaces it with the error screen\n let errorBody, errorFooter;\n switch (errorIndex) {\n case 2 /* FileProtocol */:\n // General error: Running on the `file:` protocol\n errorBody = `\n <p>It appears you are running Ruffle on the \"file:\" protocol.</p>\n <p>This doesn't work as browsers block many features from working for security reasons.</p>\n <p>Instead, we invite you to setup a local server or either use the web demo or the desktop application.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"${RUFFLE_ORIGIN}/demo\">Web Demo</a></li>\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/tags\">Desktop Application</a></li>\n `;\n break;\n case 4 /* JavascriptConfiguration */:\n // General error: Incorrect JavaScript configuration\n errorBody = `\n <p>Ruffle has encountered a major issue due to an incorrect JavaScript configuration.</p>\n <p>If you are the server administrator, we invite you to check the error details to find out which parameter is at fault.</p>\n <p>You can also consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#javascript-api\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 9 /* WasmNotFound */:\n // Self hosted: Cannot load `.wasm` file - file not found\n errorBody = `\n <p>Ruffle failed to load the required \".wasm\" file component.</p>\n <p>If you are the server administrator, please ensure the file has correctly been uploaded.</p>\n <p>If the issue persists, you may need to use the \"publicPath\" setting: please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configuration-options\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 8 /* WasmMimeType */:\n // Self hosted: Cannot load `.wasm` file - incorrect MIME type\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>This web server is not serving \".wasm\" files with the correct MIME type.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-webassembly-mime-type\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 10 /* SwfFetchError */:\n errorBody = `\n <p>Ruffle failed to load the Flash SWF file.</p>\n <p>The most likely reason is that the file no longer exists, so there is nothing for Ruffle to load.</p>\n <p>Try contacting the website administrator for help.</p>\n `;\n errorFooter = `\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 6 /* WasmCors */:\n // Self hosted: Cannot load `.wasm` file - CORS issues\n errorBody = `\n <p>Ruffle failed to load the required \".wasm\" file component.</p>\n <p>Access to fetch has likely been blocked by CORS policy.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#web\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 3 /* InvalidWasm */:\n // Self hosted: Cannot load `.wasm` file - incorrect configuration or missing files\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>It seems like this page has missing or invalid files for running Ruffle.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#addressing-a-compileerror\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 7 /* WasmDownload */:\n // Usually a transient network error or botched deployment\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>This can often resolve itself, so you can try reloading the page.</p>\n <p>Otherwise, please contact the website administrator.</p>\n `;\n errorFooter = `\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 5 /* JavascriptConflict */:\n // Self hosted: Cannot load `.wasm` file - a native object / function is overriden\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>It seems like this page uses JavaScript code that conflicts with Ruffle.</p>\n <p>If you are the server administrator, we invite you to try loading the file on a blank page.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"${issueLink}\">Report Bug</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n case 1 /* CSPConflict */:\n // General error: Cannot load `.wasm` file - a native object / function is overriden\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to initialize.</p>\n <p>This web server's Content Security Policy does not allow the required \".wasm\" component to run.</p>\n <p>If you are the server administrator, please consult the Ruffle wiki for help.</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Using-Ruffle#configure-wasm-csp\">View Ruffle Wiki</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n default:\n // Unknown error\n errorBody = `\n <p>Ruffle has encountered a major issue whilst trying to display this Flash content.</p>\n <p>This isn't supposed to happen, so we'd really appreciate if you could file a bug!</p>\n `;\n errorFooter = `\n <li><a target=\"_top\" href=\"${issueLink}\">Report Bug</a></li>\n <li><a href=\"#\" id=\"panic-view-details\">View Error Details</a></li>\n `;\n break;\n }\n this.container.innerHTML = `\n <div id=\"panic\">\n <div id=\"panic-title\">Something went wrong :(</div>\n <div id=\"panic-body\">${errorBody}</div>\n <div id=\"panic-footer\">\n <ul>${errorFooter}</ul>\n </div>\n </div>\n `;\n const viewDetails = (this.container.querySelector(\"#panic-view-details\"));\n if (viewDetails) {\n viewDetails.onclick = () => {\n const panicBody = (this.container.querySelector(\"#panic-body\"));\n panicBody.classList.add(\"details\");\n panicBody.innerHTML = `<textarea>${errorText}</textarea>`;\n return false;\n };\n }\n // Do this last, just in case it causes any cascading issues.\n this.destroy();\n }\n displayRootMovieDownloadFailedMessage() {\n const swfUrl = new URL(this.swfUrl);\n if (window.location.origin == swfUrl.origin ||\n !this.isExtension ||\n !window.location.protocol.includes(\"http\")) {\n const error = new Error(\"Failed to fetch: \" + this.swfUrl);\n error.ruffleIndexError = 10 /* SwfFetchError */;\n this.panic(error);\n return;\n }\n const div = document.createElement(\"div\");\n div.id = \"message_overlay\";\n div.innerHTML = `<div class=\"message\">\n <p>Ruffle wasn't able to run the Flash embedded in this page.</p>\n <p>You can try to open the file in a separate tab, to sidestep this issue.</p>\n <div>\n <a target=\"_blank\" href=\"${this.swfUrl}\">Open in a new tab</a>\n </div>\n </div>`;\n this.container.prepend(div);\n }\n displayUnsupportedMessage() {\n const div = document.createElement(\"div\");\n div.id = \"message_overlay\";\n // TODO: Change link to https://ruffle.rs/faq or similar\n // TODO: Pause content until message is dismissed\n div.innerHTML = `<div class=\"message\">\n <p>Flash Player has been removed from browsers in 2021.</p>\n <p>This content is not yet supported by the Ruffle emulator and will likely not run as intended.</p>\n <div>\n <a target=\"_blank\" class=\"more-info-link\" href=\"https://github.com/ruffle-rs/ruffle/wiki/Frequently-Asked-Questions-For-Users\">More info</a>\n <button id=\"run-anyway-btn\">Run anyway</button>\n </div>\n </div>`;\n this.container.prepend(div);\n const button = div.querySelector(\"#run-anyway-btn\");\n button.onclick = () => {\n div.parentNode.removeChild(div);\n };\n }\n displayMessage(message) {\n // Show a dismissible message in front of the player\n const div = document.createElement(\"div\");\n div.id = \"message_overlay\";\n div.innerHTML = `<div class=\"message\">\n <p>${message}</p>\n <div>\n <button id=\"continue-btn\">continue</button>\n </div>\n </div>`;\n this.container.prepend(div);\n (this.container.querySelector(\"#continue-btn\")).onclick = () => {\n div.parentNode.removeChild(div);\n };\n }\n debugPlayerInfo() {\n var _a, _b;\n return `Allows script access: ${(_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.allowScriptAccess) !== null && _b !== void 0 ? _b : false}\\n`;\n }\n setMetadata(metadata) {\n this._metadata = metadata;\n // TODO: Switch this to ReadyState.Loading when we have streaming support.\n this._readyState = 2 /* Loaded */;\n this.dispatchEvent(new Event(RufflePlayer.LOADED_METADATA));\n // TODO: Move this to whatever function changes the ReadyState to Loaded when we have streaming support.\n this.dispatchEvent(new Event(RufflePlayer.LOADED_DATA));\n }\n setIsExtension(isExtension) {\n this.isExtension = isExtension;\n }\n}\n/**\n * Triggered when a movie metadata has been loaded (such as movie width and height).\n *\n * @event RufflePlayer#loadedmetadata\n */\nRufflePlayer.LOADED_METADATA = \"loadedmetadata\";\n/**\n * Triggered when a movie is fully loaded.\n *\n * @event RufflePlayer#loadeddata\n */\nRufflePlayer.LOADED_DATA = \"loadeddata\";\n/**\n * Returns whether a SWF file can call JavaScript code in the surrounding HTML file.\n *\n * @param access The value of the `allowScriptAccess` attribute.\n * @param url The URL of the SWF file.\n * @returns True if script access is allowed.\n */\nexport function isScriptAccessAllowed(access, url) {\n if (!access) {\n access = \"sameDomain\";\n }\n switch (access.toLowerCase()) {\n case \"always\":\n return true;\n case \"never\":\n return false;\n case \"samedomain\":\n default:\n try {\n return (new URL(window.location.href).origin ===\n new URL(url, window.location.href).origin);\n }\n catch (_a) {\n return false;\n }\n }\n}\n/**\n * Returns whether a SWF file should show the built-in context menu items.\n *\n * @param menu The value of the `menu` attribute.\n * @returns True if the built-in context items should be shown.\n */\nexport function isBuiltInContextMenuVisible(menu) {\n if (menu === null || menu.toLowerCase() === \"true\") {\n return true;\n }\n return false;\n}\n/**\n * Returns whether the given filename ends in a known flash extension.\n *\n * @param filename The filename to test.\n * @returns True if the filename is a flash movie (swf or spl).\n */\nexport function isSwfFilename(filename) {\n if (filename) {\n let pathname = \"\";\n try {\n // A base URL is required if `filename` is a relative URL, but we don't need to detect the real URL origin.\n pathname = new URL(filename, RUFFLE_ORIGIN).pathname;\n }\n catch (err) {\n // Some invalid filenames, like `///`, could raise a TypeError. Let's fail silently in this situation.\n }\n if (pathname && pathname.length >= 4) {\n const extension = pathname.slice(-4).toLowerCase();\n if (extension === \".swf\" || extension === \".spl\") {\n return true;\n }\n }\n }\n return false;\n}\n/**\n * Determine if an element is a child of a node that was not supported\n * in non-HTML5 compliant browsers. If so, the element was meant to be\n * used as a fallback content.\n *\n * @param elem The element to test.\n * @returns True if the element is inside an <audio> or <video> node.\n */\nexport function isFallbackElement(elem) {\n let parent = elem.parentElement;\n while (parent !== null) {\n switch (parent.tagName) {\n case \"AUDIO\":\n case \"VIDEO\":\n return true;\n }\n parent = parent.parentElement;\n }\n return false;\n}\n","import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, isBuiltInContextMenuVisible, isFallbackElement, isScriptAccessAllowed, isSwfFilename, RufflePlayer, } from \"./ruffle-player\";\nimport { registerElement } from \"./register-element\";\n/**\n * A polyfill html element.\n *\n * This specific class tries to polyfill existing `<embed>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n *\n * @internal\n */\nexport class RuffleEmbed extends RufflePlayer {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n *\n * This specific class tries to polyfill existing `<embed>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n */\n constructor() {\n super();\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n super.connectedCallback();\n const src = this.attributes.getNamedItem(\"src\");\n if (src) {\n const allowScriptAccess = (_b = (_a = this.attributes.getNamedItem(\"allowScriptAccess\")) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : null;\n const menu = (_d = (_c = this.attributes.getNamedItem(\"menu\")) === null || _c === void 0 ? void 0 : _c.value) !== null && _d !== void 0 ? _d : null;\n // Kick off the SWF download.\n this.load({\n url: src.value,\n allowScriptAccess: isScriptAccessAllowed(allowScriptAccess, src.value),\n parameters: (_e = this.attributes.getNamedItem(\"flashvars\")) === null || _e === void 0 ? void 0 : _e.value,\n backgroundColor: (_f = this.attributes.getNamedItem(\"bgcolor\")) === null || _f === void 0 ? void 0 : _f.value,\n base: (_g = this.attributes.getNamedItem(\"base\")) === null || _g === void 0 ? void 0 : _g.value,\n menu: isBuiltInContextMenuVisible(menu),\n salign: (_j = (_h = this.attributes.getNamedItem(\"salign\")) === null || _h === void 0 ? void 0 : _h.value) !== null && _j !== void 0 ? _j : \"\",\n quality: (_l = (_k = this.attributes.getNamedItem(\"quality\")) === null || _k === void 0 ? void 0 : _k.value) !== null && _l !== void 0 ? _l : \"high\",\n scale: (_o = (_m = this.attributes.getNamedItem(\"scale\")) === null || _m === void 0 ? void 0 : _m.value) !== null && _o !== void 0 ? _o : \"showAll\",\n });\n }\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n get src() {\n var _a;\n return (_a = this.attributes.getNamedItem(\"src\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n set src(srcval) {\n if (srcval != undefined) {\n const attr = document.createAttribute(\"src\");\n attr.value = srcval;\n this.attributes.setNamedItem(attr);\n }\n else {\n this.attributes.removeNamedItem(\"src\");\n }\n }\n /**\n * @ignore\n * @internal\n */\n static get observedAttributes() {\n return [\"src\", \"width\", \"height\"];\n }\n /**\n * @ignore\n * @internal\n */\n attributeChangedCallback(name, oldValue, newValue) {\n var _a;\n super.attributeChangedCallback(name, oldValue, newValue);\n if (this.isConnected && name === \"src\") {\n let parameters;\n const flashvars = this.attributes.getNamedItem(\"flashvars\");\n if (flashvars) {\n parameters = flashvars.value;\n }\n const src = this.attributes.getNamedItem(\"src\");\n if (src) {\n this.load({\n url: src.value,\n parameters,\n base: (_a = this.attributes.getNamedItem(\"base\")) === null || _a === void 0 ? void 0 : _a.value,\n });\n }\n }\n }\n /**\n * Checks if the given element may be polyfilled with this one.\n *\n * @param elem Element to check.\n * @returns True if the element looks like a flash embed.\n */\n static isInterdictable(elem) {\n var _a;\n // Don't polyfill if the element is inside a specific node.\n if (isFallbackElement(elem)) {\n return false;\n }\n // Don't polyfill when no file is specified.\n if (!elem.getAttribute(\"src\")) {\n return false;\n }\n // Check for MIME type.\n const type = (_a = elem.getAttribute(\"type\")) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n if (type === FLASH_MIMETYPE.toLowerCase() ||\n type === FUTURESPLASH_MIMETYPE.toLowerCase() ||\n type === FLASH7_AND_8_MIMETYPE.toLowerCase() ||\n type === FLASH_MOVIE_MIMETYPE.toLowerCase()) {\n return true;\n }\n else if (type == null || type === \"\") {\n return isSwfFilename(elem.getAttribute(\"src\"));\n }\n return false;\n }\n /**\n * Creates a RuffleEmbed that will polyfill and replace the given element.\n *\n * @param elem Element to replace.\n * @returns Created RuffleEmbed.\n */\n static fromNativeEmbedElement(elem) {\n const externalName = registerElement(\"ruffle-embed\", RuffleEmbed);\n const ruffleObj = document.createElement(externalName);\n ruffleObj.copyElement(elem);\n return ruffleObj;\n }\n}\n","import { FLASH_MIMETYPE, FUTURESPLASH_MIMETYPE, FLASH7_AND_8_MIMETYPE, FLASH_MOVIE_MIMETYPE, FLASH_ACTIVEX_CLASSID, isBuiltInContextMenuVisible, isFallbackElement, isScriptAccessAllowed, isSwfFilename, RufflePlayer, } from \"./ruffle-player\";\nimport { registerElement } from \"./register-element\";\nimport { RuffleEmbed } from \"./ruffle-embed\";\n/**\n * Find and return the first value in obj with the given key.\n * Many Flash params were case insensitive, so we use this when checking for them.\n *\n * @param obj Object to check\n * @param key Key to find\n * @param defaultValue Value if not found\n * @returns Value if found, else [[defaultValue]]\n */\nfunction findCaseInsensitive(obj, key, defaultValue) {\n key = key.toLowerCase();\n for (const k in obj) {\n if (Object.hasOwnProperty.call(obj, k) && key === k.toLowerCase()) {\n return obj[k];\n }\n }\n return defaultValue;\n}\n/**\n * Returns all flash params ([[HTMLParamElement]]) that are for the given object.\n *\n * @param elem Element to check.\n * @returns A record of every parameter.\n */\nfunction paramsOf(elem) {\n var _a, _b;\n const params = {};\n for (const param of elem.children) {\n if (param instanceof HTMLParamElement) {\n const key = (_a = param.attributes.getNamedItem(\"name\")) === null || _a === void 0 ? void 0 : _a.value;\n const value = (_b = param.attributes.getNamedItem(\"value\")) === null || _b === void 0 ? void 0 : _b.value;\n if (key && value) {\n params[key] = value;\n }\n }\n }\n return params;\n}\n/**\n * A polyfill html element.\n *\n * This specific class tries to polyfill existing `<object>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n *\n * @internal\n */\nexport class RuffleObject extends RufflePlayer {\n /**\n * Constructs a new Ruffle flash player for insertion onto the page.\n *\n * This specific class tries to polyfill existing `<object>` tags,\n * and should not be used. Prefer [[RufflePlayer]] instead.\n */\n constructor() {\n super();\n this.params = {};\n }\n /**\n * @ignore\n * @internal\n */\n connectedCallback() {\n var _a;\n super.connectedCallback();\n this.params = paramsOf(this);\n let url = null;\n if (this.attributes.getNamedItem(\"data\")) {\n url = (_a = this.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n else if (this.params.movie) {\n url = this.params.movie;\n }\n const allowScriptAccess = findCaseInsensitive(this.params, \"allowScriptAccess\", null);\n const parameters = findCaseInsensitive(this.params, \"flashvars\", this.getAttribute(\"flashvars\"));\n const backgroundColor = findCaseInsensitive(this.params, \"bgcolor\", this.getAttribute(\"bgcolor\"));\n const base = findCaseInsensitive(this.params, \"base\", this.getAttribute(\"base\"));\n const menu = findCaseInsensitive(this.params, \"menu\", null);\n const salign = findCaseInsensitive(this.params, \"salign\", \"\");\n const quality = findCaseInsensitive(this.params, \"quality\", \"high\");\n const scale = findCaseInsensitive(this.params, \"scale\", \"showAll\");\n if (url) {\n const options = { url };\n options.allowScriptAccess = isScriptAccessAllowed(allowScriptAccess, url);\n if (parameters) {\n options.parameters = parameters;\n }\n if (backgroundColor) {\n options.backgroundColor = backgroundColor;\n }\n if (base) {\n options.base = base;\n }\n options.menu = isBuiltInContextMenuVisible(menu);\n if (salign) {\n options.salign = salign;\n }\n if (quality) {\n options.quality = quality;\n }\n if (scale) {\n options.scale = scale;\n }\n // Kick off the SWF download.\n this.load(options);\n }\n }\n debugPlayerInfo() {\n var _a;\n let errorText = super.debugPlayerInfo();\n errorText += \"Player type: Object\\n\";\n let url = null;\n if (this.attributes.getNamedItem(\"data\")) {\n url = (_a = this.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value;\n }\n else if (this.params.movie) {\n url = this.params.movie;\n }\n errorText += `SWF URL: ${url}\\n`;\n Object.keys(this.params).forEach((key) => {\n errorText += `Param ${key}: ${this.params[key]}\\n`;\n });\n Object.keys(this.attributes).forEach((key) => {\n var _a;\n errorText += `Attribute ${key}: ${(_a = this.attributes.getNamedItem(key)) === null || _a === void 0 ? void 0 : _a.value}\\n`;\n });\n return errorText;\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n get data() {\n return this.getAttribute(\"data\");\n }\n /**\n * Polyfill of HTMLObjectElement.\n *\n * @ignore\n * @internal\n */\n set data(href) {\n if (href != undefined) {\n const attr = document.createAttribute(\"data\");\n attr.value = href;\n this.attributes.setNamedItem(attr);\n }\n else {\n this.attributes.removeNamedItem(\"data\");\n }\n }\n /**\n * Checks if the given element may be polyfilled with this one.\n *\n * @param elem Element to check.\n * @returns True if the element looks like a flash object.\n */\n static isInterdictable(elem) {\n var _a, _b, _c;\n // Don't polyfill if the element is inside a specific node.\n if (isFallbackElement(elem)) {\n return false;\n }\n // Don't polyfill if there's already a <ruffle-embed> inside the <object>.\n if (elem.getElementsByTagName(\"ruffle-embed\").length > 0) {\n return false;\n }\n // Don't polyfill if no movie specified.\n const data = (_a = elem.attributes.getNamedItem(\"data\")) === null || _a === void 0 ? void 0 : _a.value.toLowerCase();\n const params = paramsOf(elem);\n let isSwf;\n // Check for SWF file.\n if (data) {\n isSwf = isSwfFilename(data);\n }\n else if (params && params.movie) {\n isSwf = isSwfFilename(params.movie);\n }\n else {\n // Don't polyfill when no file is specified.\n return false;\n }\n // Check ActiveX class ID.\n const classid = (_b = elem.attributes\n .getNamedItem(\"classid\")) === null || _b === void 0 ? void 0 : _b.value.toLowerCase();\n if (classid === FLASH_ACTIVEX_CLASSID.toLowerCase()) {\n // classid is an old-IE style embed that would not work on modern browsers.\n // Often there will be an <embed> inside the <object> that would take precedence.\n // Only polyfill this <object> if it doesn't contain a polyfillable <embed>.\n return !Array.from(elem.getElementsByTagName(\"embed\")).some(RuffleEmbed.isInterdictable);\n }\n else if (classid != null && classid !== \"\") {\n // Non-Flash classid.\n return false;\n }\n // Check for MIME type.\n const type = (_c = elem.attributes.getNamedItem(\"type\")) === null || _c === void 0 ? void 0 : _c.value.toLowerCase();\n if (type === FLASH_MIMETYPE.toLowerCase() ||\n type === FUTURESPLASH_MIMETYPE.toLowerCase() ||\n type === FLASH7_AND_8_MIMETYPE.toLowerCase() ||\n type === FLASH_MOVIE_MIMETYPE.toLowerCase()) {\n return true;\n }\n else if (type != null && type !== \"\") {\n return false;\n }\n // If no MIME/class type is specified, polyfill if movie is an SWF file.\n return isSwf;\n }\n /**\n * Creates a RuffleObject that will polyfill and replace the given element.\n *\n * @param elem Element to replace.\n * @returns Created RuffleObject.\n */\n static fromNativeObjectElement(elem) {\n const externalName = registerElement(\"ruffle-object\", RuffleObject);\n const ruffleObj = (document.createElement(externalName));\n // Avoid copying embeds-inside-objects to avoid double polyfilling.\n for (const embedElem of Array.from(elem.getElementsByTagName(\"embed\"))) {\n if (RuffleEmbed.isInterdictable(embedElem)) {\n embedElem.remove();\n }\n }\n // Avoid copying objects-inside-objects to avoid double polyfilling.\n // This may happen when Internet Explorer's conditional comments are used.\n for (const objectElem of Array.from(elem.getElementsByTagName(\"object\"))) {\n if (RuffleObject.isInterdictable(objectElem)) {\n objectElem.remove();\n }\n }\n ruffleObj.copyElement(elem);\n return ruffleObj;\n }\n}\n","var _a, _b;\nimport { RuffleObject } from \"./ruffle-object\";\nimport { RuffleEmbed } from \"./ruffle-embed\";\nimport { installPlugin, FLASH_PLUGIN } from \"./plugin-polyfill\";\nimport { publicPath } from \"./public-path\";\nlet isExtension;\nconst globalConfig = (_b = (_a = window.RufflePlayer) === null || _a === void 0 ? void 0 : _a.config) !== null && _b !== void 0 ? _b : {};\nconst jsScriptUrl = publicPath(globalConfig) + \"ruffle.js\";\n/**\n * Polyfill native Flash elements with Ruffle equivalents.\n *\n * This polyfill isn't fool-proof: If there's a chance site JavaScript has\n * access to a pre-polyfill element, then this will break horribly. We can\n * keep native objects out of the DOM, and thus out of JavaScript's grubby\n * little hands, but only if we load first.\n */\nlet objects;\nlet embeds;\n/**\n *\n */\nfunction polyfillFlashInstances() {\n try {\n // Create live collections to track embed tags.\n objects = objects !== null && objects !== void 0 ? objects : document.getElementsByTagName(\"object\");\n embeds = embeds !== null && embeds !== void 0 ? embeds : document.getElementsByTagName(\"embed\");\n // Replace <object> first, because <object> often wraps <embed>.\n for (const elem of Array.from(objects)) {\n if (RuffleObject.isInterdictable(elem)) {\n const ruffleObject = RuffleObject.fromNativeObjectElement(elem);\n ruffleObject.setIsExtension(isExtension);\n elem.replaceWith(ruffleObject);\n }\n }\n for (const elem of Array.from(embeds)) {\n if (RuffleEmbed.isInterdictable(elem)) {\n const ruffleEmbed = RuffleEmbed.fromNativeEmbedElement(elem);\n ruffleEmbed.setIsExtension(isExtension);\n elem.replaceWith(ruffleEmbed);\n }\n }\n }\n catch (err) {\n console.error(`Serious error encountered when polyfilling native Flash elements: ${err}`);\n }\n}\n/**\n * Inject Ruffle into <iframe> and <frame> elements.\n *\n * This polyfill isn't fool-proof either: On self-hosted builds, it may\n * not work due to browsers CORS policy or be loaded too late for some\n * libraries like SWFObject. These should be less of a problem on the\n * web extension. This polyfill should, however, do the trick in most\n * cases, but users should be aware of its natural limits.\n */\nlet iframes;\nlet frames;\n/**\n *\n */\nfunction polyfillFrames() {\n // Create live collections to track embed tags.\n iframes = iframes !== null && iframes !== void 0 ? iframes : document.getElementsByTagName(\"iframe\");\n frames = frames !== null && frames !== void 0 ? frames : document.getElementsByTagName(\"frame\");\n [iframes, frames].forEach((elementsList) => {\n for (let i = 0; i < elementsList.length; i++) {\n const element = elementsList[i];\n if (element.dataset.rufflePolyfilled !== undefined) {\n // Don't re-polyfill elements with the \"data-ruffle-polyfilled\" attribute.\n continue;\n }\n element.dataset.rufflePolyfilled = \"\";\n const elementWindow = element.contentWindow;\n // Cross origin requests may reach an exception, so let's prepare for this eventuality.\n const errorMessage = `Couldn't load Ruffle into ${element.tagName}[${element.src}]: `;\n try {\n if (elementWindow.document.readyState === \"complete\") {\n injectRuffle(elementWindow, errorMessage);\n }\n }\n catch (err) {\n if (!isExtension) {\n // The web extension should be able to load Ruffle into cross origin frames\n // because it has \"all_frames\" set to true in its manifest.json: RufflePlayer\n // config won't be injected but it's not worth showing an error.\n console.warn(errorMessage + err);\n }\n }\n // Attach listener to the element to handle frame navigation.\n element.addEventListener(\"load\", () => {\n injectRuffle(elementWindow, errorMessage);\n }, false);\n }\n });\n}\n/**\n * @param elementWindow The (i)frame's window object.\n * @param errorMessage The message to log when Ruffle cannot access the (i)frame's document.\n */\nasync function injectRuffle(elementWindow, errorMessage) {\n var _a;\n // The document is supposed to be completely loaded when this function is run.\n // As Chrome may be unable to access the document properties, we have to delay the execution a little bit.\n await new Promise((resolve) => {\n window.setTimeout(() => {\n resolve();\n }, 100);\n });\n let elementDocument;\n try {\n elementDocument = elementWindow.document;\n if (!elementDocument) {\n // Don't polyfill if the window has no document: the element may have been removed from the parent window.\n return;\n }\n }\n catch (err) {\n if (!isExtension) {\n console.warn(errorMessage + err);\n }\n return;\n }\n if (!isExtension &&\n elementDocument.documentElement.dataset.ruffleOptout !== undefined) {\n // Don't polyfill elements with the \"data-ruffle-optout\" attribute.\n return;\n }\n if (!isExtension) {\n if (!elementWindow.RufflePlayer) {\n const script = elementDocument.createElement(\"script\");\n script.setAttribute(\"src\", jsScriptUrl);\n script.onload = () => {\n // Inject parent configuration once the script is loaded, preventing it from being ignored.\n elementWindow.RufflePlayer = {};\n elementWindow.RufflePlayer.config = globalConfig;\n };\n elementDocument.head.appendChild(script);\n }\n }\n else {\n if (!elementWindow.RufflePlayer) {\n elementWindow.RufflePlayer = {};\n }\n // Merge parent window and frame configurations, will likely be applied too late though.\n elementWindow.RufflePlayer.config = Object.assign(Object.assign({}, globalConfig), ((_a = elementWindow.RufflePlayer.config) !== null && _a !== void 0 ? _a : {}));\n }\n}\n/**\n * Listen for changes to the DOM.\n *\n */\nfunction initMutationObserver() {\n const observer = new MutationObserver(function (mutationsList) {\n // If any nodes were added, re-run the polyfill to detect any new instances.\n const nodesAdded = mutationsList.some((mutation) => mutation.addedNodes.length > 0);\n if (nodesAdded) {\n polyfillFlashInstances();\n polyfillFrames();\n }\n });\n observer.observe(document, { childList: true, subtree: true });\n}\n/**\n * Polyfills the detection of Flash plugins in the browser.\n */\nexport function pluginPolyfill() {\n installPlugin(FLASH_PLUGIN);\n}\n/**\n * Polyfills legacy Flash content on the page.\n *\n * @param isExt Whether or not Ruffle is running as a browser's extension.\n */\nexport function polyfill(isExt) {\n isExtension = isExt;\n polyfillFlashInstances();\n polyfillFrames();\n initMutationObserver();\n}\n","/**\n * A representation of a semver 2 compliant version string\n */\nexport class Version {\n /**\n * Construct a Version from specific components.\n *\n * If you wish to parse a string into a Version then please use [[fromSemver]].\n *\n * @param major The major version component.\n * @param minor The minor version component.\n * @param patch The patch version component.\n * @param prIdent A list of pre-release identifiers, if any\n * @param buildIdent A list of build identifiers, if any\n */\n constructor(major, minor, patch, prIdent, buildIdent) {\n this.major = major;\n this.minor = minor;\n this.patch = patch;\n this.prIdent = prIdent;\n this.buildIdent = buildIdent;\n }\n /**\n * Construct a version from a semver 2 compliant string.\n *\n * This function is intended for use with semver 2 compliant strings.\n * Malformed strings may still parse correctly, but this result is not\n * guaranteed.\n *\n * @param versionString A semver 2.0.0 compliant version string\n * @returns A version object\n */\n static fromSemver(versionString) {\n const buildSplit = versionString.split(\"+\"), prSplit = buildSplit[0].split(\"-\"), versionSplit = prSplit[0].split(\".\");\n const major = parseInt(versionSplit[0], 10);\n let minor = 0;\n let patch = 0;\n let prIdent = null;\n let buildIdent = null;\n if (versionSplit[1] != undefined) {\n minor = parseInt(versionSplit[1], 10);\n }\n if (versionSplit[2] != undefined) {\n patch = parseInt(versionSplit[2], 10);\n }\n if (prSplit[1] != undefined) {\n prIdent = prSplit[1].split(\".\");\n }\n if (buildSplit[1] != undefined) {\n buildIdent = buildSplit[1].split(\".\");\n }\n return new Version(major, minor, patch, prIdent, buildIdent);\n }\n /**\n * Returns true if a given version is compatible with this one.\n *\n * Compatibility is defined as having the same nonzero major version\n * number, or if both major versions are zero, the same nonzero minor\n * version number, or if both minor versions are zero, the same nonzero\n * patch version number.\n *\n * This implements the ^ operator in npm's semver package, with the\n * exception of the prerelease exclusion rule.\n *\n * @param other The other version to test against\n * @returns True if compatible\n */\n isCompatibleWith(other) {\n return ((this.major !== 0 && this.major === other.major) ||\n (this.major === 0 &&\n other.major === 0 &&\n this.minor !== 0 &&\n this.minor === other.minor) ||\n (this.major === 0 &&\n other.major === 0 &&\n this.minor === 0 &&\n other.minor === 0 &&\n this.patch !== 0 &&\n this.patch === other.patch));\n }\n /**\n * Returns true if this version has precedence over (is newer than) another\n * version.\n *\n * Precedence is defined as in the Semver 2 spec. This implements the >\n * operator in npm's semver package, with the exception of the prerelease\n * exclusion rule.\n *\n * @param other The other version to test against\n * @returns True if this version has precedence over the other one\n */\n hasPrecedenceOver(other) {\n if (this.major > other.major) {\n return true;\n }\n else if (this.major < other.major) {\n return false;\n }\n if (this.minor > other.minor) {\n return true;\n }\n else if (this.minor < other.minor) {\n return false;\n }\n if (this.patch > other.patch) {\n return true;\n }\n else if (this.patch < other.patch) {\n return false;\n }\n if (this.prIdent == null && other.prIdent != null) {\n return true;\n }\n else if (this.prIdent != null && other.prIdent != null) {\n const isNumeric = /^[0-9]*$/;\n for (let i = 0; i < this.prIdent.length && i < other.prIdent.length; i += 1) {\n if (!isNumeric.test(this.prIdent[i]) &&\n isNumeric.test(other.prIdent[i])) {\n return true;\n }\n else if (isNumeric.test(this.prIdent[i]) &&\n isNumeric.test(other.prIdent[i])) {\n if (parseInt(this.prIdent[i], 10) >\n parseInt(other.prIdent[i], 10)) {\n return true;\n }\n else if (parseInt(this.prIdent[i], 10) <\n parseInt(other.prIdent[i], 10)) {\n return false;\n }\n }\n else if (isNumeric.test(this.prIdent[i]) &&\n !isNumeric.test(other.prIdent[i])) {\n return false;\n }\n else if (!isNumeric.test(this.prIdent[i]) &&\n !isNumeric.test(other.prIdent[i])) {\n if (this.prIdent[i] > other.prIdent[i]) {\n return true;\n }\n else if (this.prIdent[i] < other.prIdent[i]) {\n return false;\n }\n }\n }\n return this.prIdent.length > other.prIdent.length;\n }\n return false;\n }\n /**\n * Tests if a given version is equivalent to this one.\n *\n * Build and prerelease tags are ignored.\n *\n * @param other The other version to test against\n * @returns True if the given version is equivalent\n */\n isEqual(other) {\n return (this.major === other.major &&\n this.minor === other.minor &&\n this.patch === other.patch);\n }\n /**\n * Tests if a given version is stable or a compatible prerelease for this\n * version.\n *\n * This implements the prerelease exclusion rule of NPM semver: a\n * prerelease version can only pass this check if the major/minor/patch\n * components of both versions are the same. Otherwise, the prerelease\n * version always fails.\n *\n * @param other The other version to test against\n * @returns True if the given version is either stable, or a\n * prerelease in the same series as this one.\n */\n isStableOrCompatiblePrerelease(other) {\n if (other.prIdent == null) {\n return true;\n }\n else {\n return (this.major === other.major &&\n this.minor === other.minor &&\n this.patch === other.patch);\n }\n }\n}\n","import { Version } from \"./version\";\n/**\n * Represents a set of version requirements.\n */\nexport class VersionRange {\n /**\n * Constructs a range of versions as specified by the given requirements.\n *\n * If you wish to construct this object from a string representation,\n * then use [[fromRequirementString]].\n *\n * @param requirements Requirements to set this range by\n */\n constructor(requirements) {\n this.requirements = requirements;\n }\n /**\n * Determine if a given version satisfies this range.\n *\n * @param fver A version object to test against.\n * @returns Whether or not the given version matches this range\n */\n satisfiedBy(fver) {\n for (let i = 0; i < this.requirements.length; i += 1) {\n let matches = true;\n for (let j = 0; j < this.requirements[i].length; j += 1) {\n const comparator = this.requirements[i][j].comparator;\n const version = this.requirements[i][j].version;\n matches =\n matches && version.isStableOrCompatiblePrerelease(fver);\n if (comparator === \"\" || comparator === \"=\") {\n matches = matches && version.isEqual(fver);\n }\n else if (comparator === \">\") {\n matches = matches && fver.hasPrecedenceOver(version);\n }\n else if (comparator === \">=\") {\n matches =\n matches &&\n (fver.hasPrecedenceOver(version) ||\n version.isEqual(fver));\n }\n else if (comparator === \"<\") {\n matches = matches && version.hasPrecedenceOver(fver);\n }\n else if (comparator === \"<=\") {\n matches =\n matches &&\n (version.hasPrecedenceOver(fver) ||\n version.isEqual(fver));\n }\n else if (comparator === \"^\") {\n matches = matches && version.isCompatibleWith(fver);\n }\n }\n if (matches) {\n return true;\n }\n }\n return false;\n }\n /**\n * Parse a requirement string into a version range.\n *\n * @param requirement The version requirements, consisting of a\n * series of space-separated strings, each one being a semver version\n * optionally prefixed by a comparator or a separator.\n *\n * Valid comparators are:\n * - `\"\"` or `\"=\"`: Precisely this version\n * - `\">`\": A version newer than this one\n * - `\">`=\": A version newer or equal to this one\n * - `\"<\"`: A version older than this one\n * - `\"<=\"`: A version older or equal to this one\n * - `\"^\"`: A version that is compatible with this one\n *\n * A separator is `\"||`\" which splits the requirement string into\n * left OR right.\n * @returns A version range object.\n */\n static fromRequirementString(requirement) {\n const components = requirement.split(\" \");\n let set = [];\n const requirements = [];\n for (let i = 0; i < components.length; i += 1) {\n if (components[i] === \"||\") {\n if (set.length > 0) {\n requirements.push(set);\n set = [];\n }\n }\n else if (components[i].length > 0) {\n const match = /[0-9]/.exec(components[i]);\n if (match) {\n const comparator = components[i]\n .slice(0, match.index)\n .trim();\n const version = Version.fromSemver(components[i].slice(match.index).trim());\n set.push({ comparator, version });\n }\n }\n }\n if (set.length > 0) {\n requirements.push(set);\n }\n return new VersionRange(requirements);\n }\n}\n","import { Version } from \"./version\";\nimport { VersionRange } from \"./version-range\";\n/**\n * Represents the Ruffle public API.\n *\n * The public API exists primarily to allow multiple installs of Ruffle on a\n * page (e.g. an extension install and a local one) to cooperate. In an ideal\n * situation, all Ruffle sources on the page install themselves into a single\n * public API, and then the public API picks the newest version by default.\n *\n * This API *is* versioned, in case we need to upgrade it. However, it must be\n * backwards- and forwards-compatible with all known sources.\n */\nexport class PublicAPI {\n /**\n * Construct the Ruffle public API.\n *\n * Do not use this function to negotiate a public API. Instead, use\n * `public_api` to register your Ruffle source with an existing public API\n * if it exists.\n *\n * Constructing a Public API will also trigger it to initialize Ruffle once\n * the page loads, if the API has not already been superseded.\n *\n * @param prev What used to be in the public API slot.\n *\n * This is used to upgrade from a prior version of the public API, or from\n * a user-defined configuration object placed in the public API slot.\n * @protected\n */\n constructor(prev) {\n this.sources = {};\n this.config = {};\n this.invoked = false;\n this.newestName = null;\n this.conflict = null;\n if (prev !== undefined && prev !== null) {\n if (prev instanceof PublicAPI) {\n /// We're upgrading from a previous API to a new one.\n this.sources = prev.sources;\n this.config = prev.config;\n this.invoked = prev.invoked;\n this.conflict = prev.conflict;\n this.newestName = prev.newestName;\n prev.superseded();\n }\n else if (prev.constructor === Object &&\n prev.config instanceof Object) {\n /// We're the first, install user configuration\n this.config = prev.config;\n }\n else {\n /// We're the first, but conflicting with someone else.\n this.conflict = prev;\n }\n }\n if (document.readyState === \"loading\") {\n window.addEventListener(\"DOMContentLoaded\", this.init.bind(this));\n }\n else {\n window.setTimeout(this.init.bind(this), 0);\n }\n }\n /**\n * The version of the public API.\n *\n * This is *not* the version of Ruffle itself.\n *\n * This allows a page with an old version of the Public API to be upgraded\n * to a new version of the API. The public API is intended to be changed\n * very infrequently, if at all, but this provides an escape mechanism for\n * newer Ruffle sources to upgrade older installations.\n *\n * @returns The version of this public API.\n */\n get version() {\n return \"0.1.0\";\n }\n /**\n * Register a given source with the Ruffle Public API.\n *\n * @param name The name of the source.\n * @param api The public API object. This must conform to the shape\n * of `SourceAPI`.\n */\n registerSource(name, api) {\n this.sources[name] = api;\n }\n /**\n * Determine the name of the newest registered source in the Public API.\n *\n * @returns The name of the source, or `null` if no source\n * has yet to be registered.\n */\n newestSourceName() {\n let newestName = null, newestVersion = Version.fromSemver(\"0.0.0\");\n for (const k in this.sources) {\n if (Object.prototype.hasOwnProperty.call(this.sources, k)) {\n const kVersion = Version.fromSemver(this.sources[k].version);\n if (kVersion.hasPrecedenceOver(newestVersion)) {\n newestName = k;\n newestVersion = kVersion;\n }\n }\n }\n return newestName;\n }\n /**\n * Negotiate and start Ruffle.\n *\n * This function reads the config parameter to determine which polyfills\n * should be enabled. If the configuration parameter is missing, then we\n * use a built-in set of defaults sufficient to fool sites with static\n * content and weak plugin detection.\n */\n init() {\n if (!this.invoked) {\n this.invoked = true;\n this.newestName = this.newestSourceName();\n if (this.newestName === null) {\n throw new Error(\"No registered Ruffle source!\");\n }\n const polyfills = this.config.polyfills;\n if (polyfills !== false) {\n this.sources[this.newestName].polyfill(this.newestName === \"extension\");\n }\n }\n }\n /**\n * Look up the newest Ruffle source and return it's API.\n *\n * @returns An instance of the Source API.\n */\n newest() {\n const name = this.newestSourceName();\n return name != null ? this.sources[name] : null;\n }\n /**\n * Look up a specific Ruffle version (or any version satisfying a given set\n * of requirements) and return it's API.\n *\n * @param ver_requirement A set of semantic version requirement\n * strings that the player version must satisfy.\n * @returns An instance of the Source API, if one or more\n * sources satisfied the requirement.\n */\n satisfying(ver_requirement) {\n const requirement = VersionRange.fromRequirementString(ver_requirement);\n let valid = null;\n for (const k in this.sources) {\n if (Object.prototype.hasOwnProperty.call(this.sources, k)) {\n const version = Version.fromSemver(this.sources[k].version);\n if (requirement.satisfiedBy(version)) {\n valid = this.sources[k];\n }\n }\n }\n return valid;\n }\n /**\n * Look up the newest Ruffle version compatible with the `local` source, if\n * it's installed. Otherwise, use the latest version.\n *\n * @returns An instance of the Source API\n */\n localCompatible() {\n if (this.sources.local !== undefined) {\n return this.satisfying(\"^\" + this.sources.local.version);\n }\n else {\n return this.newest();\n }\n }\n /**\n * Look up the newest Ruffle version with the exact same version as the\n * `local` source, if it's installed. Otherwise, use the latest version.\n *\n * @returns An instance of the Source API\n */\n local() {\n if (this.sources.local !== undefined) {\n return this.satisfying(\"=\" + this.sources.local.version);\n }\n else {\n return this.newest();\n }\n }\n /**\n * Indicates that this version of the public API has been superseded by a\n * newer version.\n *\n * This should only be called by a newer version of the Public API.\n * Identical versions of the Public API should not supersede older versions\n * of that same API.\n *\n * Unfortunately, we can't disable polyfills after-the-fact, so this\n * only lets you disable the init event...\n *\n * @protected\n */\n superseded() {\n this.invoked = true;\n }\n /**\n * Join a source into the public API, if it doesn't already exist.\n *\n * @param prevRuffle The previous iteration of the Ruffle API.\n *\n * The `prevRuffle` param lists the previous object in the RufflePlayer\n * slot. We perform some checks to see if this is a Ruffle public API or a\n * conflicting object. If this is conflicting, then a new public API will\n * be constructed (see the constructor information for what happens to\n * `prevRuffle`).\n *\n * Note that Public API upgrades are deliberately not enabled in this\n * version of Ruffle, since there is no Public API to upgrade from.\n * @param sourceName The name of this particular\n * Ruffle source.\n * @param sourceAPI The Ruffle source to add.\n *\n * If both parameters are provided they will be used to define a new Ruffle\n * source to register with the public API.\n * @returns The Ruffle Public API.\n */\n static negotiate(prevRuffle, sourceName, sourceAPI) {\n let publicAPI;\n if (prevRuffle instanceof PublicAPI) {\n publicAPI = prevRuffle;\n }\n else {\n publicAPI = new PublicAPI(prevRuffle);\n }\n if (sourceName !== undefined && sourceAPI !== undefined) {\n publicAPI.registerSource(sourceName, sourceAPI);\n // Install the faux plugin detection immediately.\n // This is necessary because scripts such as SWFObject check for the\n // Flash Player immediately when they load.\n // TODO: Maybe there's a better place for this.\n const polyfills = publicAPI.config.polyfills;\n if (polyfills !== false) {\n sourceAPI.pluginPolyfill();\n }\n }\n return publicAPI;\n }\n}\n","import { PublicAPI, SourceAPI } from \"ruffle-core\";\n\nwindow.RufflePlayer = PublicAPI.negotiate(\n window.RufflePlayer,\n \"local\",\n new SourceAPI(\"local\")\n);\n","import { pluginPolyfill, polyfill } from \"./polyfills\";\nimport { registerElement } from \"./register-element\";\nimport { RufflePlayer } from \"./ruffle-player\";\n/**\n * Represents this particular version of Ruffle.\n *\n * Multiple APIs can be instantiated from different sources; e.g. an \"extension\"\n * version, versus a \"local\" version. This expresses to the Public API\n * negotiator (see [[PublicAPI]]) what this particular version of Ruffle is and\n * how to control it.\n */\nexport class SourceAPI {\n /**\n * Construct a Source API.\n *\n * @param name The name of this particular source.\n */\n constructor(name) {\n this.name = name;\n }\n /**\n * The version of this particular API.\n *\n * This is returned as a string in a semver compatible format.\n *\n * @returns The version of this Ruffle source\n */\n get version() {\n return \"0.1.0\";\n }\n /**\n * Start up the polyfills.\n *\n * Do not run polyfills for more than one Ruffle source at a time.\n *\n * @param isExt Whether or not Ruffle is running as a browser's extension.\n */\n polyfill(isExt) {\n polyfill(isExt);\n }\n /**\n * Polyfill the plugin detection.\n *\n * This needs to run before any plugin detection script does.\n */\n pluginPolyfill() {\n pluginPolyfill();\n }\n /**\n * Create a Ruffle player element using this particular version of Ruffle.\n *\n * @returns The player element. This is a DOM element that may be inserted\n * into the current page as you wish.\n */\n createPlayer() {\n const name = registerElement(\"ruffle-player\", RufflePlayer);\n return document.createElement(name);\n }\n}\n"],"names":["__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","m","g","globalThis","this","Function","e","window","o","obj","prop","Object","prototype","hasOwnProperty","call","p","b","document","baseURI","self","location","href","lAudioContext","AudioContext","webkitAudioContext","wasm","heap","Array","fill","getObject","idx","push","heap_next","length","takeObject","ret","dropObject","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","memory","Uint8Array","getStringFromWasm0","ptr","len","subarray","addHeapObject","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachegetInt32Memory0","getInt32Memory0","Int32Array","isLikeNone","x","cachegetFloat64Memory0","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","className","JSON","stringify","_","Error","message","stack","makeMutClosure","arg0","arg1","dtor","f","state","a","cnt","real","args","__wbindgen_export_2","get","original","__wbg_adapter_38","arg2","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hf2fb09d5c8a8a014","__wbg_adapter_41","_dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h3c3ce0189896ae89","__wbg_adapter_44","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h57227d77287c9d42","__wbg_adapter_47","__wbg_adapter_50","__wbg_adapter_53","__wbg_adapter_56","__wbg_adapter_59","__wbg_adapter_62","_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0017b6248e5a7e46","cachegetFloat32Memory0","getArrayF32FromWasm0","Float32Array","handleError","apply","__wbindgen_exn_store","stack_pointer","addBorrowedObject","cachegetUint32Memory0","getArrayU8FromWasm0","cachegetUint8ClampedMemory0","getClampedArrayU8FromWasm0","Uint8ClampedArray","Ruffle","static","create","__destroy_into_raw","free","__wbg_ruffle_free","constructor","parent","js_player","config","ruffle_new","stream_from","movie_url","parameters","ptr0","__wbindgen_malloc","__wbindgen_realloc","len0","ruffle_stream_from","load_data","swf_data","ruffle_load_data","play","ruffle_play","pause","ruffle_pause","is_playing","ruffle_is_playing","prepare_context_menu","ruffle_prepare_context_menu","run_context_menu_callback","index","ruffle_run_context_menu_callback","set_fullscreen","is_fullscreen","ruffle_set_fullscreen","clear_custom_menu_items","ruffle_clear_custom_menu_items","destroy","ruffle_destroy","call_exposed_callback","ptr1","array","Uint32Array","passArrayJsValueToWasm0","len1","ruffle_call_exposed_callback","set_trace_observer","observer","ruffle_set_trace_observer","audio_context","ruffle_audio_context","async","init","input","URL","imports","wbg","__wbindgen_object_drop_ref","__wbindgen_cb_drop","__wbindgen_string_new","__wbindgen_object_clone_ref","__wbg_ruffle_new","__wrap","__wbindgen_is_function","__wbindgen_json_parse","parse","__wbindgen_json_serialize","__wbg_new_df6e6ab7a65c4c4d","__wbg_panic_bbc809dd04a12c60","panic","__wbg_copyToAudioBuffer_58f244be94bac1d2","arg3","arg4","audioBuffer","leftData","rightData","getChannelData","__wbg_getAudioOutputTimestamp_a67aa6687740cd15","context","_a","_b","timestamp","getOutputTimestamp","contextTime","currentTime","baseLatency","getAudioOutputTimestamp","__wbg_setFullscreen_9819a8b20564e39b","setFullscreen","arguments","__wbindgen_string_get","__wbg_displayUnsupportedMessage_a8f81a8e054e5e91","displayUnsupportedMessage","__wbg_displayRootMovieDownloadFailedMessage_1a5c34096259685a","displayRootMovieDownloadFailedMessage","__wbg_displayMessage_c57c20204892da2b","displayMessage","__wbg_setMetadata_bbaeaee7f48274e6","setMetadata","__wbg_onCallbackAvailable_3a48fae397926c96","onCallbackAvailable","__wbg_onFSCommand_fb2f94653f71796e","onFSCommand","__wbindgen_number_get","Float64Array","__wbindgen_boolean_get","v","__wbindgen_number_new","__wbg_new_693216e109162396","__wbg_stack_0ddaca5d1abfb52f","__wbg_error_09919627ac0992f5","console","error","__wbindgen_free","__wbindgen_is_undefined","__wbg_instanceof_WebGl2RenderingContext_56ad96bfac3f5531","WebGL2RenderingContext","__wbg_bindVertexArray_52b8b2f5fd93d81d","bindVertexArray","__wbg_blitFramebuffer_d6dafd082e3b1266","arg5","arg6","arg7","arg8","arg9","arg10","blitFramebuffer","__wbg_createVertexArray_d59135c0a43c410b","createVertexArray","__wbg_renderbufferStorageMultisample_41916a754c02df64","renderbufferStorageMultisample","__wbg_texImage2D_29ea0a7f026e239b","texImage2D","__wbg_bindFramebuffer_48c4bf8ff82bf7e9","bindFramebuffer","__wbg_bindRenderbuffer_4a9ad1cf80580397","bindRenderbuffer","__wbg_bindTexture_9d8ed0fcd83eb0a9","bindTexture","__wbg_createFramebuffer_9818fc04b4a38c18","createFramebuffer","__wbg_createRenderbuffer_d1a55ec78e26295b","createRenderbuffer","__wbg_createTexture_8f31e7386e22fc37","createTexture","__wbg_deleteFramebuffer_5f58ccb548438c57","deleteFramebuffer","__wbg_deleteRenderbuffer_6372146d4689793e","deleteRenderbuffer","__wbg_deleteTexture_a0632c71429795ac","deleteTexture","__wbg_framebufferRenderbuffer_9d619e8bf8f2aeb6","framebufferRenderbuffer","__wbg_framebufferTexture2D_3da41a7f38e2c523","framebufferTexture2D","__wbg_getError_868f7c8ef6475b32","getError","__wbg_getParameter_e3aea13dd0a2904d","getParameter","__wbg_texParameteri_c54aab65b2f8cf6d","texParameteri","__wbg_instanceof_Window_c4b70662a0d2c5ec","Window","__wbg_document_1c64944725c0d81d","__wbg_location_f98ad02632f88c43","__wbg_navigator_480e592af6ad365b","navigator","__wbg_devicePixelRatio_d8c3852bb37f76bf","devicePixelRatio","__wbg_performance_947628766699c5bb","performance","__wbg_localStorage_6775414303ab5085","localStorage","__wbg_cancelAnimationFrame_5f2a1e987a6de100","cancelAnimationFrame","__wbg_focus_70ecc8fcab4bdb61","focus","__wbg_open_5416e4448a959cfa","open","__wbg_requestAnimationFrame_71638ca922068239","requestAnimationFrame","__wbg_fetch_cfe0d1dd786e9cd4","fetch","__wbg_destination_6c3ac66ee8b2fe85","destination","__wbg_sampleRate_ffa6f08191b00934","sampleRate","__wbg_currentTime_e231c76a3c011126","__wbg_new_52bbbd81ffc19dff","__wbg_suspend_5b2c4674b28d07f2","suspend","__wbg_createBuffer_79833a4052d7b42a","createBuffer","__wbg_createBufferSource_7244d810d62a0bed","createBufferSource","__wbg_createChannelMerger_542d0885aa4bdc09","createChannelMerger","__wbg_createChannelSplitter_95302cbc3f9b9f85","createChannelSplitter","__wbg_createGain_c5f114390c363029","createGain","__wbg_createScriptProcessor_ec30f8ab6ea543d1","createScriptProcessor","__wbg_decodeAudioData_66b886741a4167f4","decodeAudioData","__wbg_resume_ca50287e91c0323e","resume","__wbg_setvalue_df8236adf40ea2d3","value","__wbg_linearRampToValueAtTime_113d2920c90f1851","linearRampToValueAtTime","__wbg_setValueAtTime_9396570ff0d3cc1f","setValueAtTime","__wbg_gain_d4eaca6128dcfd90","gain","__wbg_baseURI_083fd53f8bea9af2","__wbg_appendChild_d318db34c4559916","appendChild","__wbg_instanceof_SvgsvgElement_631275f115d8f8e3","SVGSVGElement","__wbg_createSVGMatrix_037d6368ea06b02d","createSVGMatrix","__wbg_protocol_f17adabd4e662b06","protocol","__wbg_assign_26269af9ce90e6c7","assign","__wbg_new_a3422e0170c31454","Path2D","__wbg_addPath_18881cd56483fe63","addPath","__wbg_closePath_bf39ada268053aea","closePath","__wbg_lineTo_4d75fbab7308c3d2","lineTo","__wbg_moveTo_70f7a4760893f917","moveTo","__wbg_quadraticCurveTo_7724e01d766ebfe2","quadraticCurveTo","__wbg_get_f0092ad67dc97639","__wbg_set_3a236a97145dc780","__wbg_delete_881ab2d2a830b82f","__wbg_length_b398b347bd3c9cd5","__wbg_setTransform_3f9fc1784a580fff","setTransform","__wbg_setProperty_1460c660bc329763","setProperty","__wbg_offsetX_5da3ebf8a8cda8a4","offsetX","__wbg_offsetY_b0edbc16723a55cb","offsetY","__wbg_button_a02c0467d38e8338","button","__wbg_bindVertexArrayOES_7104c80fb0d31cb0","bindVertexArrayOES","__wbg_createVertexArrayOES_ced4f8a084b789b7","createVertexArrayOES","__wbg_deltaY_080604c20160c0e8","deltaY","__wbg_deltaMode_c5ec1ee518ea0a08","deltaMode","__wbg_connect_723cc4823fe3e6c0","connect","__wbg_connect_cb8dcaafd6d14fe4","__wbg_connect_eb8fcb61cab88f0b","__wbg_disconnect_661941cf5b88fa5a","disconnect","__wbg_instanceof_HtmlFormElement_aeafa27e92962efa","HTMLFormElement","__wbg_submit_7479ea6e99f76174","submit","__wbg_instanceof_Response_e1b11afbefa5b563","Response","__wbg_ok_270f6d403efe7e7b","ok","__wbg_statusText_97740db9b8bb12e3","statusText","__wbg_arrayBuffer_b8937ed04beb0d36","arrayBuffer","__wbg_seta_f5667df13832f473","__wbg_setb_51b68c87004ceb92","__wbg_setc_62d7a8abc0082fcc","c","__wbg_setd_544fd4902db40bca","d","__wbg_sete_a3575dd88c8f17a3","__wbg_setf_956eaea5b3047302","__wbg_setbuffer_c643a88bac27b2bd","__wbg_setloop_32c84ea32fabef74","loop","__wbg_setloopStart_a113b4d478da7f93","loopStart","__wbg_setloopEnd_b83c2563fe5be665","loopEnd","__wbg_setonended_6ce8715add45953e","onended","__wbg_start_551bedf1ecfdc0e2","start","__wbg_start_885262ec460f3ef3","__wbg_stop_c6532de1aeb2e765","stop","__wbg_outputBuffer_3f27dc3af0998ec9","outputBuffer","__wbg_now_559193109055ebad","now","__wbg_pointerId_9302f0e125f0b48e","pointerId","__wbg_currentTarget_65309531208d5df3","currentTarget","__wbg_preventDefault_9866c9fd51eecfb6","preventDefault","__wbg_setsrc_3eb04f553f8335c7","src","__wbg_new_265b3e027a3022bd","Image","__wbg_key_10dcaa4bb6d5449f","key","__wbg_code_1c2fd251f38b398a","__wbg_newwithstrandinit_9b0fa00478c37287","Request","__wbg_setonaudioprocess_4334efc34353560d","onaudioprocess","__wbg_body_78ae4fd43b446013","body","__wbg_createElement_86c152812a141a62","createElement","__wbg_createElementNS_ae12b8681c3957a3","createElementNS","__wbg_setid_681bb5a14c3d5850","id","__wbg_clientWidth_4d9e01af2b5b9f21","clientWidth","__wbg_clientHeight_87c209f0cacf2e97","clientHeight","__wbg_querySelector_dc71838110c91f39","querySelector","__wbg_releasePointerCapture_326599f769b49681","releasePointerCapture","__wbg_setAttribute_1b533bf07966de55","setAttribute","__wbg_setAttributeNS_92db6decf2ec8400","setAttributeNS","__wbg_setPointerCapture_bd3244d9f008798f","setPointerCapture","__wbg_remove_c63cabc94a77cacb","remove","__wbg_instanceof_WebGlRenderingContext_101b938bec1286a3","WebGLRenderingContext","__wbg_drawingBufferWidth_8b0c2b31d9d6eee7","drawingBufferWidth","__wbg_drawingBufferHeight_f62678018bab567c","drawingBufferHeight","__wbg_bufferData_2f9be23b37e5a1a4","bufferData","__wbg_texImage2D_712c56fe5a9825ed","__wbg_uniform1fv_02b26dddaa3ea984","uniform1fv","__wbg_uniform4fv_ca394beb323215c6","uniform4fv","__wbg_uniformMatrix3fv_340429fe0911bc6f","uniformMatrix3fv","__wbg_uniformMatrix4fv_a92133b68236ac68","uniformMatrix4fv","__wbg_activeTexture_b34aca0c2110966c","activeTexture","__wbg_attachShader_eaa824fd5b37a770","attachShader","__wbg_bindBuffer_2ca7e1c18819ecb2","bindBuffer","__wbg_bindFramebuffer_c9f468afa9d42a5f","__wbg_bindRenderbuffer_7b2b49f71f3eeef9","__wbg_bindTexture_edd827f3dba6038e","__wbg_blendFunc_d5ab9f0ff5a40a48","blendFunc","__wbg_clear_da26620d46f0a11a","clear","__wbg_clearColor_cbf22f8faa5a52c1","clearColor","__wbg_colorMask_035708eb94fe9af8","colorMask","__wbg_compileShader_8fb70a472f32552c","compileShader","__wbg_createBuffer_4802e2f0e1b1acdf","__wbg_createProgram_b1d94f4c7554d3a1","createProgram","__wbg_createShader_da09e167692f0dc7","createShader","__wbg_createTexture_bafc7c08393ae59d","__wbg_disable_b07faddb7d04349f","disable","__wbg_disableVertexAttribArray_c9fdabd5f12b0539","disableVertexAttribArray","__wbg_drawElements_8e8af4b6757fedce","drawElements","__wbg_enable_d3d210aeb08eff52","enable","__wbg_enableVertexAttribArray_d539e547495bea44","enableVertexAttribArray","__wbg_getAttribLocation_706a0beabcdaebcf","getAttribLocation","__wbg_getExtension_045789240c50a108","getExtension","__wbg_getParameter_6412bd2d0602696d","__wbg_getProgramInfoLog_b60e82d52c200cbd","getProgramInfoLog","__wbg_getProgramParameter_229c193895936bbe","getProgramParameter","__wbg_getShaderInfoLog_ba51160c01b98360","getShaderInfoLog","__wbg_getUniformLocation_c3b3570b4632cc5c","getUniformLocation","__wbg_linkProgram_7080c84b0233cea2","linkProgram","__wbg_pixelStorei_3cd96723ae22a5c6","pixelStorei","__wbg_shaderSource_67b991301db003d0","shaderSource","__wbg_stencilFunc_bbc24750c2db9a15","stencilFunc","__wbg_stencilMask_0ec7662710f598d4","stencilMask","__wbg_stencilOp_fd4ec71a7de6ac85","stencilOp","__wbg_texParameteri_bd724f6a5ad0cbbc","__wbg_uniform1f_b9cff1cea32def5a","uniform1f","__wbg_uniform1i_0811c29c0eebe191","uniform1i","__wbg_useProgram_b72b0bfcbc720fa9","useProgram","__wbg_vertexAttribPointer_b5cb524c6fe9eec8","vertexAttribPointer","__wbg_viewport_89af3aceb7036a2c","viewport","__wbg_debug_675b0ecb65722d2a","__wbg_error_cc38ce2b4b661e1d","__wbg_info_e0c9813e6fd3bdc1","info","__wbg_log_3445347661d4505e","log","__wbg_warn_5ec7c7c02d0b3841","warn","__wbg_style_c88e323890d3a091","style","__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae","CanvasRenderingContext2D","__wbg_setglobalAlpha_27b14e5f5b7567ec","globalAlpha","__wbg_setglobalCompositeOperation_c650e9805cc6316f","globalCompositeOperation","__wbg_setstrokeStyle_947bd4c26c94673f","strokeStyle","__wbg_setfillStyle_528a6a267c863ae7","fillStyle","__wbg_setfilter_3d48443a4a710be8","filter","__wbg_setimageSmoothingEnabled_92d14a22667eae22","imageSmoothingEnabled","__wbg_setlineWidth_3221b7818c00ed48","lineWidth","__wbg_setlineCap_5284a001e1efcecd","lineCap","__wbg_setlineJoin_a6af4e7d24a3a67e","lineJoin","__wbg_setmiterLimit_9fa0d72650341727","miterLimit","__wbg_drawImage_5e8203c5b210fce3","drawImage","__wbg_drawImage_9492b361f8b31282","__wbg_fill_75988ff43d6e3499","__wbg_stroke_d91ac76d5b1eb792","stroke","__wbg_createPattern_1d0b3c3750c8448c","createPattern","__wbg_createPattern_b824d17776fa1f1e","__wbg_getImageData_9ffc3df78ca3dbc9","getImageData","__wbg_putImageData_b9544b271e569392","putImageData","__wbg_clearRect_07caefec3496ced1","clearRect","__wbg_fillRect_10e42dc7a5e8cccd","fillRect","__wbg_resetTransform_26f86c1cc48a4fae","resetTransform","__wbg_setTransform_8ffd6a5c85396174","__wbg_newwithbuffersourcesequenceandoptions_2b60b470c130cb1a","Blob","__wbg_addEventListener_52721772cc0a7f30","addEventListener","__wbg_addEventListener_09e11fbf8b4b719b","__wbg_addEventListener_0ed522a6d9900d5d","__wbg_removeEventListener_f2adc9b2b318de99","removeEventListener","__wbg_removeEventListener_24d5a7c12c3f3c39","__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e","HTMLCanvasElement","__wbg_width_555f63ab09ba7d3f","width","__wbg_setwidth_c1a7061891b71f25","__wbg_height_7153faec70fbaf7b","height","__wbg_setheight_88894b05710ff752","__wbg_getContext_f701d0231ae22393","getContext","__wbg_getContext_3e21e21280a332fc","__wbg_width_16bd64d09cbf5661","__wbg_height_368bb86c37d51bc9","__wbg_data_1ae7496c58caf755","passArray8ToWasm0","data","__wbg_newwithu8clampedarray_45da2809f7882d12","ImageData","__wbg_userAgent_bdd46cceef222f52","userAgent","__wbg_randomFillSync_64cc7d048f228ca8","randomFillSync","__wbg_getRandomValues_98117e9a7e993920","getRandomValues","__wbg_process_2f24d6544ea7b200","process","__wbindgen_is_object","__wbg_versions_6164651e75405d4a","versions","__wbg_node_4b517d861cbcb3bc","node","__wbindgen_is_string","__wbg_modulerequire_3440a4bcf44437db","require","__wbg_crypto_98fc271021c7d2ad","crypto","__wbg_msCrypto_a2cdb043d2bfe57f","msCrypto","__wbg_get_67189fe0b323d288","__wbg_new_949bbc1147195c4e","__wbg_newnoargs_be86524d73f67598","__wbg_next_7720502039b96d00","next","__wbg_done_b06cf0578e89ff68","done","__wbg_value_e74a542443d92451","__wbg_get_4d0f21c2f823742e","Reflect","__wbg_call_888d259a5fefc347","__wbg_new_0b83d3df67ecb33e","__wbg_isArray_eb7ad55f2da67dde","__wbg_of_db9e1b8e0a7ed9bc","of","__wbg_push_284486ca27c6aa8b","__wbg_instanceof_ArrayBuffer_764b6d4119231cb3","ArrayBuffer","__wbg_new_3e02a228090b2e72","__wbg_slice_dcc477bca8fe38b1","__wbg_values_364ae56c608e6824","values","__wbg_apply_7cfa6ebf144990a5","__wbg_call_346669c262382ad7","__wbg_getTime_10d33f4f2959e5dd","getTime","__wbg_getTimezoneOffset_d3e5a22a1b7fb1d8","getTimezoneOffset","__wbg_new0_fd3a3a290b25cdac","Date","__wbg_instanceof_Object_66786225e0dbc8ba","__wbg_entries_aadf9c3f38203a12","entries","__wbg_fromEntries_164ebf0f69983a8e","fromEntries","__wbg_is_0f5efc7977a2c50b","is","__wbg_new_b1d61b5687f5e73a","state0","Promise","wasm_bindgen__convert__closures__invoke2_mut__hb98954a061226d04","__wbg_adapter_603","__wbg_resolve_d23068002f584f22","resolve","__wbg_then_2fcac196782070cc","then","__wbg_then_8c2d62e8ae5978f7","__wbg_self_c6fbdfc2918d5e58","__wbg_window_baec038b5ab35c54","__wbg_globalThis_3f735a5746d41fbd","__wbg_global_1bc0b39582740e95","global","__wbg_buffer_397eaa4d72ee94dd","__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff","__wbg_new_a7ce447f15ff496f","__wbg_set_969ad0a60e51d320","__wbg_length_1eb8fc608a0d4cdb","__wbg_newwithlength_929232475839a482","__wbg_fill_cd6951964c67ad3a","__wbg_buffer_facf0398a281c85b","__wbg_subarray_8b658422a224f479","__wbg_byteLength_3e250b41a8915757","byteLength","__wbg_byteOffset_4204ecb24a6e5df9","byteOffset","__wbg_ownKeys_f3f1916b5564918f","ownKeys","__wbg_set_82a4e8a85e31ac42","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_rethrow","__wbindgen_memory","__wbindgen_closure_wrapper413","__wbindgen_closure_wrapper415","__wbindgen_closure_wrapper417","__wbindgen_closure_wrapper419","__wbindgen_closure_wrapper421","__wbindgen_closure_wrapper423","__wbindgen_closure_wrapper425","__wbindgen_closure_wrapper427","__wbindgen_closure_wrapper1860","instance","WebAssembly","instantiateStreaming","headers","bytes","instantiate","Instance","load","__wbindgen_wasm_module","isNativeFunction","func","indexOf","currentScriptURL","currentScript","publicPath","path","endsWith","lastLoaded","loadRuffle","reduce","defineProperty","Prototype","Version","callback","TypeError","k","target","fetchRuffle","RuffleMimeTypeArray","native_mimetype_array","__mimetypes","__named_mimetypes","install","mimetype","item","namedItem","Symbol","iterator","RufflePlugin","filename","mimetypes","super","RufflePluginArray","native_plugin_array","__plugins","__named_plugins","plugin","FLASH_PLUGIN","suffixes","enabledPlugin","ruffleShadowTemplate","innerHTML","privateRegistry","registerElement","elementName","elementClass","class","tries","customElements","externalName","define","internalName","FLASH_MIMETYPE","FUTURESPLASH_MIMETYPE","FLASH7_AND_8_MIMETYPE","FLASH_MOVIE_MIMETYPE","RUFFLE_ORIGIN","DIMENSION_REGEX","isAudioContextUnmuted","sanitizeParameters","URLSearchParams","output","RufflePlayer","HTMLElement","hasContextMenu","contextMenuForceDisabled","isTouch","showSwfDownload","panicked","isExtension","shadow","attachShadow","mode","content","cloneNode","dynamicStyles","getElementById","container","playButton","unmuteOverlay","contextMenuElement","showContextMenu","bind","pointerDown","fullScreenChange","hideContextMenu","options","_readyState","_metadata","lastActivePlayingState","setupPauseOnTabHidden","readyState","metadata","hidden","connectedCallback","updateStyles","observedAttributes","attributeChangedCallback","_oldValue","_newValue","disconnectedCallback","sheet","rules","deleteRule","widthAttr","attributes","getNamedItem","htmlDimensionToCssDimension","insertRule","heightAttr","isUnusedFallbackObject","parentNode","element","lookupElement","nodeName","ruffleConstructor","catch","ruffleIndexError","String","toLowerCase","includes","audioState","visibility","setTimeout","unmuteAudioContext","autoplay","display","unmuteOverlayClicked","once","audioContext","onstatechange","optionsError","url","isConnected","isFallbackElement","allowScriptAccess","contextMenu","backgroundColor","ensureFreshInstance","swfUrl","_c","substring","err","fullscreenEnabled","webkitFullscreenEnabled","isFullscreen","fullscreenElement","webkitFullscreenElement","isFull","enterFullscreen","exitFullscreen","navigationUI","requestFullscreen","webkitRequestFullscreen","webkitRequestFullScreen","webkitExitFullscreen","webkitCancelFullScreen","event","pointerType","response","blob","blobUrl","createObjectURL","swfDownloadA","download","lastIndexOf","click","removeChild","revokeObjectURL","contextMenuItems","CHECKMARK","fromCharCode","items","forEach","separatorBefore","text","caption","checked","onClick","enabled","downloadSwf","extensionString","firstChild","lastElementChild","classList","contains","menuSeparator","hr","menuItem","textContent","add","left","top","rect","getBoundingClientRect","clientX","y","clientY","maxX","maxY","Math","floor","min","maxTouchPoints","audio","Audio","dataView","DataView","setUint32","setUint16","btoa","copyElement","elem","attrib","specified","from","children","attribute","match","out","traceObserver","errorIndex","errorArray","stackIndex","debugPlayerInfo","platform","errorText","join","pageUrl","split","errorBody","errorFooter","issueLink","encodeURIComponent","issueBody","viewDetails","onclick","panicBody","origin","div","prepend","dispatchEvent","Event","LOADED_METADATA","LOADED_DATA","setIsExtension","isScriptAccessAllowed","access","isBuiltInContextMenuVisible","menu","isSwfFilename","pathname","extension","parentElement","tagName","RuffleEmbed","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","base","salign","quality","scale","srcval","attr","createAttribute","setNamedItem","removeNamedItem","oldValue","newValue","flashvars","getAttribute","ruffleObj","findCaseInsensitive","defaultValue","paramsOf","params","param","HTMLParamElement","RuffleObject","movie","keys","getElementsByTagName","isSwf","classid","some","isInterdictable","embedElem","objectElem","globalConfig","jsScriptUrl","objects","iframes","polyfillFlashInstances","ruffleObject","fromNativeObjectElement","replaceWith","ruffleEmbed","fromNativeEmbedElement","polyfillFrames","elementsList","dataset","rufflePolyfilled","elementWindow","contentWindow","errorMessage","injectRuffle","elementDocument","documentElement","ruffleOptout","script","onload","head","major","minor","patch","prIdent","buildIdent","versionString","buildSplit","prSplit","versionSplit","parseInt","isCompatibleWith","other","hasPrecedenceOver","isNumeric","test","isEqual","isStableOrCompatiblePrerelease","VersionRange","requirements","satisfiedBy","fver","matches","j","comparator","version","requirement","components","trim","fromSemver","PublicAPI","prev","sources","invoked","newestName","conflict","superseded","registerSource","api","newestSourceName","newestVersion","kVersion","polyfills","polyfill","newest","satisfying","ver_requirement","fromRequirementString","valid","localCompatible","local","prevRuffle","sourceName","sourceAPI","publicAPI","pluginPolyfill","negotiate","isExt","MutationObserver","mutationsList","mutation","addedNodes","observe","childList","subtree","plugins","writable","mimeTypes","installPlugin","createPlayer"],"sourceRoot":""}