!function () { function e(e) { return e && e.__esModule ? e.default : e } function t(e, t, r) { Object.defineProperty(e, t, {get: r, enumerable: !0}) } var r, n, o = !1; function a() { return o || (o = !0, n = e => { var t = ["attribute vec4 vertexPos;", "attribute vec4 texturePos;", "varying vec2 textureCoord;", "void main()", "{", "gl_Position = vertexPos;", "textureCoord = texturePos.xy;", "}"].join("\n"), r = ["precision highp float;", "varying highp vec2 textureCoord;", "uniform sampler2D ySampler;", "uniform sampler2D uSampler;", "uniform sampler2D vSampler;", "const mat4 YUV2RGB = mat4", "(", "1.1643828125, 0, 1.59602734375, -.87078515625,", "1.1643828125, -.39176171875, -.81296875, .52959375,", "1.1643828125, 2.017234375, 0, -1.081390625,", "0, 0, 0, 1", ");", "void main(void) {", "highp float y = texture2D(ySampler, textureCoord).r;", "highp float u = texture2D(uSampler, textureCoord).r;", "highp float v = texture2D(vSampler, textureCoord).r;", "gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;", "}"].join("\n"), n = e.createShader(e.VERTEX_SHADER); e.shaderSource(n, t), e.compileShader(n), e.getShaderParameter(n, e.COMPILE_STATUS) || console.log("Vertex shader failed to compile: " + e.getShaderInfoLog(n)); var o = e.createShader(e.FRAGMENT_SHADER); e.shaderSource(o, r), e.compileShader(o), e.getShaderParameter(o, e.COMPILE_STATUS) || console.log("Fragment shader failed to compile: " + e.getShaderInfoLog(o)); var a = e.createProgram(); e.attachShader(a, n), e.attachShader(a, o), e.linkProgram(a), e.getProgramParameter(a, e.LINK_STATUS) || console.log("Program failed to compile: " + e.getProgramInfoLog(a)), e.useProgram(a); var i = e.createBuffer(); e.bindBuffer(e.ARRAY_BUFFER, i), e.bufferData(e.ARRAY_BUFFER, new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]), e.STATIC_DRAW); var s = e.getAttribLocation(a, "vertexPos"); e.enableVertexAttribArray(s), e.vertexAttribPointer(s, 2, e.FLOAT, !1, 0, 0); var u = e.createBuffer(); e.bindBuffer(e.ARRAY_BUFFER, u), e.bufferData(e.ARRAY_BUFFER, new Float32Array([1, 0, 0, 0, 1, 1, 0, 1]), e.STATIC_DRAW); var c = e.getAttribLocation(a, "texturePos"); function l(t, r) { var n = e.createTexture(); return e.bindTexture(e.TEXTURE_2D, n), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MAG_FILTER, e.LINEAR), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_MIN_FILTER, e.LINEAR), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_S, e.CLAMP_TO_EDGE), e.texParameteri(e.TEXTURE_2D, e.TEXTURE_WRAP_T, e.CLAMP_TO_EDGE), e.bindTexture(e.TEXTURE_2D, null), e.uniform1i(e.getUniformLocation(a, t), r), n } e.enableVertexAttribArray(c), e.vertexAttribPointer(c, 2, e.FLOAT, !1, 0, 0); var d = l("ySampler", 0), f = l("uSampler", 1), p = l("vSampler", 2); return function (t, r, n, o, a) { e.viewport(0, 0, t, r), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, d), e.texImage2D(e.TEXTURE_2D, 0, e.LUMINANCE, t, r, 0, e.LUMINANCE, e.UNSIGNED_BYTE, n), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, f), e.texImage2D(e.TEXTURE_2D, 0, e.LUMINANCE, t / 2, r / 2, 0, e.LUMINANCE, e.UNSIGNED_BYTE, o), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, p), e.texImage2D(e.TEXTURE_2D, 0, e.LUMINANCE, t / 2, r / 2, 0, e.LUMINANCE, e.UNSIGNED_BYTE, a), e.drawArrays(e.TRIANGLE_STRIP, 0, 4) } }, t(r = {}, "default", (function () { return n }))), r } var i, s, u = !1; function c() { i = {}, a(), s = e => { const t = document.createElement("canvas"); t.style.position = "absolute", t.style.top = 0, t.style.left = 0, e.$container.appendChild(t), e.$canvasElement = t, e.$container.style.overflow = "hidden", "absolute" !== e.$container.style.position && (e.$container.style.position = "relative"); if (!e._supportOffscreen()) { const t = (() => { const t = e.$canvasElement; let r = null; const n = ["webgl", "experimental-webgl", "moz-webgl", "webkit-3d"]; let o = 0; for (; !r && o < n.length;) { const a = n[o]; try { let n = {preserveDrawingBuffer: !0}; e._opt.contextOptions && (n = Object.assign(n, e._opt.contextOptions)), r = t.getContext(a, n) } catch (e) { r = null } r && "function" == typeof r.getParameter || (r = null), ++o } return r })(); e._contextGLRender = a().default(t), e._contextGL = t } e._destroyContextGL = () => { e._contextGL && (e._contextGL = null), e._contextGLRender && (e._contextGLRender = null), e._bitmaprenderer && (e._bitmaprenderer = null) } }, t(i, "default", (function () { return s })) } function l() { return u || (u = !0, c()), i } var d, f, p, h, m, A, g = !1; function v() { return g || (g = !0, f = { videoBuffer: .5, vod: !1, isResize: !0, isFullSize: !1, debug: !1, timeout: 30, supportDblclickFullscreen: !1, showBandwidth: !1, keepScreenOn: !1, isNotMute: !1, hasAudio: !0, operateBtns: {fullscreen: !1, screenshot: !1, play: !1, audio: !1}, loadingText: "", background: "", decoder: "index.js", rotate: 0, forceNoOffscreen: !1 }, t(d = {}, "DEFAULT_OPTIONS", (function () { return f })), p = { init: "init", initSize: "initSize", render: "render", playAudio: "playAudio", print: "print", printErr: "printErr", initAudioPlanar: "initAudioPlanar", kBps: "kBps" }, t(d, "CMD_TYPE", (function () { return p })), h = { close: "close", play: "play", setVideoBuffer: "setVideoBuffer", init: "init" }, t(d, "POST_MESSAGE", (function () { return h })), m = { fullscreen: "fullscreen", play: "play", pause: "pause", mute: "mute", load: "load", videoInfo: "videoInfo", timeUpdate: "timeUpdate", audioInfo: "audioInfo", log: "log", error: "error", kBps: "kBps", timeout: "timeout", stats: "stats", performance: "performance", record: "record", buffer: "buffer", videoFrame: "videoFrame", start: "start", metadata: "metadata" }, t(d, "EVEMTS", (function () { return m })), A = {empty: "empty", buffering: "buffering", full: "full"}, t(d, "BUFFER_STATUS", (function () { return A }))), d } var E, y = !1; function w(e) { e.resume(); const t = e.createBufferSource(); t.buffer = e.createBuffer(1, 1, 22050), t.connect(e.destination), t.noteOn ? t.noteOn(0) : t.start(0) } function _(e, t) { e && (e.style.display = t ? "block" : "none") } function b(e = "") { const t = e.split(","), r = atob(t[1]), n = t[0].replace("data:", "").replace(";base64", ""); let o = r.length, a = new Uint8Array(o); for (; o--;) a[o] = r.charCodeAt(o); return new File([a], "file", {type: n}) } function k(e, t) { const r = document.createElement("a"); r.download = t, r.href = URL.createObjectURL(e), r.click(), URL.revokeObjectURL(e) } function T(e) { if (null == e || "" === e) return "0 KB/S"; let t = parseFloat(e); return t = t.toFixed(2), t + "KB/S" } function D(e) { let t = 0; return e >= 24 ? t = 2 : e >= 15 && (t = 1), t } function S(e, t) { Object.keys(t || {}).forEach((function (r) { e.style[r] = t[r] })) } function C() { let e = document.fullscreenElement || window.webkitFullscreenElement || document.msFullscreenElement; return void 0 === e && (e = !1), !!e } function O() { } function P() { return (new Date).getTime() } function x(e) { Object.keys(e || {}).forEach((t => { "bgDom" !== t && _(e[t], !1) })) } function B(e) { _(e.pauseDom, !0), _(e.screenshotsDom, !0), _(e.fullscreenDom, !0), _(e.quietAudioDom, !0), _(e.textDom, !0), _(e.speedDom, !0), _(e.recordDom, !0), _(e.loadingDom, !1), _(e.playDom, !1), _(e.playBigDom, !1), _(e.bgDom, !1) } function M(e, t) { let r = v().BUFFER_STATUS.buffering; return 0 === e ? r = v().BUFFER_STATUS.empty : e >= t && (r = v().BUFFER_STATUS.full), r } function R() { return y || (y = !0, E = {}, v(), t(E, "audioContextUnlock", (function () { return w })), t(E, "$domToggle", (function () { return _ })), t(E, "dataURLToFile", (function () { return b })), t(E, "downloadImg", (function () { return k })), t(E, "bpsSize", (function () { return T })), t(E, "fpsStatus", (function () { return D })), t(E, "setStyle", (function () { return S })), t(E, "checkFull", (function () { return C })), t(E, "noop", (function () { return O })), t(E, "now", (function () { return P })), t(E, "$hideBtns", (function () { return x })), t(E, "$initBtns", (function () { return B })), t(E, "bufferStatus", (function () { return M }))), E } var L, I, F = !1; function U() { return F || (F = !0, L = {}, R(), I = e => { e._audioContext = new (window.AudioContext || window.webkitAudioContext), e._gainNode = e._audioContext.createGain(), e._audioEnabled = t => { t ? (R().audioContextUnlock(e._audioContext), e._audioEnabled = t => { t ? e._audioContext.resume() : e._audioContext.suspend() }, e._audioContext.resume()) : e._audioContext.suspend() }, e._audioEnabled(!0), e._mute = () => { e._audioEnabled(!1), e.quieting = !0 }, e._cancelMute = () => { e._audioEnabled(!0), e.quieting = !1 }, e._audioResume = () => { e._cancelMute() }, e._initAudioPlanar = t => { const r = e._audioContext; if (!r) return !1; let n = []; const o = r.createScriptProcessor(1024, 0, 2); o.onaudioprocess = function (e) { if (n.length) { const r = n.shift(); for (let n = 0; n < t.channels; n++) { const t = r[n], o = e.outputBuffer.getChannelData(n); for (let e = 0; e < 1024; e++) o[e] = t[e] } } }, o.connect(e._gainNode), e._closeAudio = () => { o.disconnect(e._gainNode), e._gainNode.disconnect(r.destination), delete e._closeAudio, n = [] }, e._gainNode.connect(r.destination), e._playAudio = e => n.push(e) }, e._destroyAudioContext = () => { e._audioContext.close(), e._audioContext = null, e._gainNode = null } }, t(L, "default", (function () { return I }))), L } var N, j, G = !1; function z() { return G || (G = !0, N = {}, R(), j = e => { e._resize$2 = () => e.resize(), e._handleVisibilityChange$2 = () => e._handleVisibilityChange(), e._onfullscreenchange$2 = () => e._onfullscreenchange(), e._handleWakeLock$2 = () => e._handleWakeLock(), window.addEventListener("resize", e._resize$2), window.addEventListener("fullscreenchange", e._onfullscreenchange$2), document.addEventListener("visibilitychange", e._handleVisibilityChange$2), document.addEventListener("visibilitychange", e._handleWakeLock$2), window.addEventListener("fullscreenchange", e._handleWakeLock$2), e._opt.supportDblclickFullscreen && e.$canvasElement.addEventListener("dblclick", (() => { e.fullscreen = !e.fullscreen }), !1), e._removeEventListener = () => { window.removeEventListener("resize", e._resize$2), window.removeEventListener("fullscreenchange", e._onfullscreenchange$2), document.removeEventListener("visibilitychange", e._handleWakeLock$2), document.removeEventListener("visibilitychange", e._handleVisibilityChange$2), window.removeEventListener("fullscreenchange", e._handleWakeLock$2) }, e.$doms.playDom && e.$doms.playDom.addEventListener("click", (t => { t.stopPropagation(), e._play() }), !1), e.$doms.playBigDom && e.$doms.playBigDom.addEventListener("click", (t => { t.stopPropagation(), e._play() }), !1), e.$doms.pauseDom && e.$doms.pauseDom.addEventListener("click", (t => { t.stopPropagation(), e._pause() }), !1), e.$doms.screenshotsDom && e.$doms.screenshotsDom.addEventListener("click", (t => { t.stopPropagation(); const r = e._opt.text + "" + R().now(); e._screenshot(r) }), !1), e.$doms.fullscreenDom && e.$doms.fullscreenDom.addEventListener("click", (t => { t.stopPropagation(), e.fullscreen = !0 }), !1), e.$doms.minScreenDom && e.$doms.minScreenDom.addEventListener("click", (t => { t.stopPropagation(), e.fullscreen = !1 }), !1), e.$doms.recordDom && e.$doms.recordDom.addEventListener("click", (t => { t.stopPropagation(), e.recording = !0 }), !1), e.$doms.recordingDom && e.$doms.recordingDom.addEventListener("click", (t => { t.stopPropagation(), e.recording = !1 }), !1), e.$doms.quietAudioDom && e.$doms.quietAudioDom.addEventListener("click", (t => { t.stopPropagation(), e._cancelMute() }), !1), e.$doms.playAudioDom && e.$doms.playAudioDom.addEventListener("click", (t => { t.stopPropagation(), e._mute() }), !1), e._enableWakeLock() }, t(N, "default", (function () { return j }))), N } var W, Y, H = !1; function $() { return H || (H = !0, W = {}, R(), z(), Y = e => { e._showControl = () => { let t = !1, r = !1; return Object.keys(e._opt.operateBtns).forEach((t => { e._opt.operateBtns[t] && (r = !0) })), (e._opt.showBandwidth || e._opt.text || r) && (t = !0), t }; const t = {}, r = document.createDocumentFragment(), n = document.createElement("div"), o = document.createElement("div"), a = document.createElement("div"), i = document.createElement("div"), s = document.createElement("div"), u = document.createElement("div"), c = document.createElement("div"), l = document.createElement("div"), d = document.createElement("div"), f = document.createElement("div"), p = document.createElement("div"), h = document.createElement("div"), m = document.createElement("div"), A = document.createElement("div"), g = document.createElement("div"), v = document.createElement("div"), E = document.createElement("div"), y = document.createElement("div"); m.innerText = e._opt.loadingText || "", i.innerText = e._opt.text || "", s.innerText = "", u.title = "播放", l.title = "暂停", d.title = "截屏", f.title = "全屏", p.title = "退出全屏", A.title = "静音", g.title = "取消静音", v.title = "录制", E.title = "取消录制"; let w = {position: "absolute", width: "100%", height: "100%"}; e._opt.background && (w = Object.assign({}, w, { backgroundRepeat: "no-repeat", backgroundPosition: "center", backgroundSize: "100%", backgroundImage: "url('" + e._opt.background + "')" })); const _ = { position: "absolute", width: "100%", height: "100%", textAlign: "center", color: "#fff", display: "none", backgroundImage: "url('data:image/gif;base64,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')", backgroundRepeat: "no-repeat", backgroundPosition: "center", backgroundSize: "40px 40px" }, b = { position: "absolute", width: "100%", height: "100%", display: "none", background: "rgba(0,0,0,0.4)", backgroundImage: "url('data:image/png;base64,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')", backgroundRepeat: "no-repeat", backgroundPosition: "center", backgroundSize: "48px 48px", cursor: "pointer" }, k = {position: "absolute", top: 0, height: "100%", display: "flex", alignItems: "center"}, T = { display: "none", position: "relative", fontSize: "13px", color: "#fff", lineHeight: "20px", marginLeft: "5px", marginRight: "5px", userSelect: "none" }, D = { display: "none", position: "relative", width: "16px", height: "16px", marginLeft: "8px", marginRight: "8px", backgroundRepeat: "no-repeat", backgroundPosition: "center", backgroundSize: "100%", cursor: "pointer" }; R().setStyle(y, w), R().setStyle(n, { height: "38px", zIndex: 11, position: "absolute", left: 0, bottom: 0, width: "100%", background: "rgba(0,0,0)" }), R().setStyle(h, _), R().setStyle(c, b), R().setStyle(m, { position: "absolute", width: "100%", top: "60%", textAlign: "center" }), R().setStyle(o, Object.assign({}, k, {left: 0})), R().setStyle(a, Object.assign({}, k, {right: 0})), R().setStyle(i, T), R().setStyle(s, T), R().setStyle(u, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAARVJREFUSMe9laEOglAUhs+5k9lJFpsJ5QWMJoNGbEY0mEy+gr6GNo0a3SiQCegMRILzGdw4hl+Cd27KxPuXb2zA/91z2YXoGRERkX4fvN3A2QxUiv4dFM3n8jZRBLbbVfd+ubJuF4xjiCyXkksueb1uSKCIZYGLBTEx8ekEoV7PkICeVgs8HiGyXoO2bUigCDM4HoPnM7bI8wwJ6Gk0sEXbLSay30Oo2TQkoGcwgFCSQMhxDAvoETEscDiQkJC4LjMz8+XyZ4HrFYWjEQqHQ1asWGWZfmdFAsVINxuw00HhbvfpydpvxWkKTqdYaRCUfUPJCdzv4Gr1uqfli0tOIAzByUT/iCrL6+84y3Bw+D6ui5Ou+jwA8FnIO++FACgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDCKP7wnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAw+2IEmwAAAEl0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fZ2Y3MDBzN2IzZncvYm9mYW5nLnN2Z8fICi0AAAAASUVORK5CYII=')"})), R().setStyle(l, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAHVJREFUSMftkCESwCAMBEOnCtdXVMKHeC7oInkEeQJXkRoEZWraipxZc8lsQqQZBACAlIS1oqGhhTCdu3oyxyyMcdRf79c5J7SWDBky+z4173rbJvR+VF/e/qwKqIAKqMBDgZyFzAQCoZTpxq7HLDyOrw/9b07l3z4dDnI2IAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMIo/vCcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDD7YgSbAAAASnRFWHRzdmc6YmFzZS11cmkAZmlsZTovLy9ob21lL2FkbWluL2ljb24tZm9udC90bXAvaWNvbl9nZjcwMHM3YjNmdy96YW50aW5nLnN2ZxqNZJkAAAAASUVORK5CYII=')"})), R().setStyle(d, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAaxJREFUSMfNlLFOAkEQhmevAZMjR6OGRBJKsFBzdkYNpYSaWkopIOFRCBWh1ieA+ALGRgutjK0HzV2H5SX7W/zsmY3cnTEhcZovOzcz9+/s7Ir8d4OGht7fBwAgjvEri2OTl1ffSf0xAMBxRIkS1e3Se3+vcszEMe/6OqmT/aN2m1wsNu/o5YVsNHI7BgA4PCRfXzfXCwKy1RLbcXZG9nrkzc12jvT8nPU/PtatOThgAx8fuS4WyZ0de2e+T87n5OcnuVqRsxl5cpImQDnKUc7DA1fVqpimZCu+vCSjiNH9PlmpJNTQ0INBErfeafZRAakC6FWKfH9nwU7H/l6rGdqCOx3y7c3U+aOARsMMp+1vNskwTLjulB23XJL1epqA9OshIiKeJxAIoug7UyA4OuLi6Ynr52deu+NjOy4MSc9Ln8rMDpTLybBpaOjdXbJUIqdTm8a/t2fn/RSQewR24HicTLmGhnbdzcPquvYtGY3+PIR24UKBUXd35v6Sk4lN47+9NXm/FBAEedfGTjw9JYdDm76fm6+hoS8ujGAxT6L9Im7bTKeurvIEb92+AES1b6x283XSAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABJdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L2NhbWVyYS5zdmeyubWEAAAAAElFTkSuQmCC')"})), R().setStyle(f, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAALZJREFUSMftVbsORUAQVSj8DomChvh3lU5CoSVCQq2RObeYu8XG3deVoHCak81kds7Oaz3vxRcAAMwztOg6vX9d6/3XFQQC+b7iAoFhYE7Tvx9EIFAcy/ftO3MQGAQkCfM4MmeZWyajiLnvmYuCeduMAuSzvRBVYNluFHCssSgFp7Sq9ALKkjnPf9ubRtkDL27HNT3QtsY9cAjsNAVheHIKBOwD2wpxFHDbJpwmaHH2L1iWx+2BDy8RbXXtqbRBAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABTdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L3F1YW5waW5nenVpZGFodWEuc3ZnTBoI7AAAAABJRU5ErkJggg==')"})), R().setStyle(p, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAYJJREFUSMfdVbGKwkAQnQn+geAfWBixUTsVgp3YGKxSWflVNmIjARULwc5KO40ipNHWRgs/wGLniucKa+Jd5ODuuGle5u3szGRmd5bor4iIiMhuB3Sc+HXXBdp2/Lpta7v4dccRJUrUdhtNQIkSVa3C8HwG1uumg34f2OnEB+h0tF1Sv5b+YIsttpZLEhKSdhvscPi8IXFF74GJiYnHY7Cex8zMvFgkbInjmJnv98kqoO30vmhLtaRMB60WtEbDNDudgMUiKiQSzfjOMzFxoQAyCPSfw7/nQZ/PUYnpNGV6OR6BmYzJbzYIoBQCzGaRBDQvJCTdLnTLolg5HN5t6f8V1h/oUT4PrVKJWBotmEzQw+vV3J9Ow851P2/BaoX9Yfh0BrJZYKlk8uUyHOpDeLuBHwzMBJtN2PV6IPUhXK9Nf5cLMAxfluanrmGkRBggtRo03wfq66P/6CsJAnOg+f6rgfZI4BGYiYlHIx048eR6krcnq34kkj1GuVz8+jceo9+SD5A8yGh8CTq7AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABNdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L3p1aXhpYW9odWEuc3ZnoCFr0AAAAABJRU5ErkJggg==')"})), R().setStyle(A, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAR9JREFUSMfVlD0LglAYhe9VkwgNihpsjbYQf4JTS7+iuaGxpcGfJjS0NFRLk2NDi6MogafhJGRIX9yEzvJwrx/nvPd9VYh/F3LkyBuN2g3J1QoAgCQhPe/Hxq5Lo+0WlfJ9dYYAgGaTDAIyy/BUnwcwWJlhcLnZkN2ugIBAuy2kkEL2ep8F73S4kjfFcfn6cMj9KLodrWVBiXyf75tMyOOR+4MBOZ8XLXzorboA5UpnM/J0Ivd7+vX7xX2asqGpVKtFXi5sqWmypXefrfIWAACmU/JwKCoun8hu9zA0uk6u13wgirg+n7+bAcsibbt6SB3n9TQXPxwAwHJJpum7M6BcDDQa0SgMaw9QPkJNIxcLMo4ZcDz+eYDqQFLWbqxKV57EtW1WtMbmAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAwij+8JwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMS0wMS0wOFQxNjo0Mjo1MyswODowMPtiBJsAAABKdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2dmNzAwczdiM2Z3L2ppbmd5aW4uc3ZnIlMYaQAAAABJRU5ErkJggg==')"})), R().setStyle(g, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAU5JREFUSMftkzGKwlAURf9PULBQwULSCKK1bZAgNuoaFFyAC3AdZg0uQCwshWzAShEEO7Gy0soUCu9Occ3An5nMGCfdzGsO7+Xy3/03iVL/lbAAACiVIBCI77O37Vi9QCDZbEqLm03ycEBUAoHk818v7nYpul5Jz4tf8HBKYa1mcjwmbzd8rG8NFIsU7ffk8UjmcjE3XK+RtB4G2PT75GbDeblMttumfjSKMRCGLxsQCKTReE9KIJDJxDw/SmKxiOZWWh+ntrSlre2WXRAorbTSrZapip7X66kbMKtQUFBQCENznsmQ93vqBhh5r8fO85jAcsnIrcce1yV3uxgD8zl5uZgU+dGBVlrp6GbTKRPwffaDAek45Gz2/M0AAJ0OeTol+w0rFYrOZ3K1MhNJEjEAwHF4cBA8Z8B1zcXV6msv+JMR2yaHQ1LrXx/8Z+sNRxsWcwZeb6UAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDCKP7wnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAw+2IEmwAAAEt0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fZ2Y3MDBzN2IzZncvc2hlbmd5aW4uc3ZnFog1MQAAAABJRU5ErkJggg==')"})), R().setStyle(v, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAPRJREFUSMflVDEOwjAQO0e8gr2sZYVunREbD6ISfAgmkBjpC/hBEQ+AtTWD6QAI0gBlqRfLp+TiXC5n1nXgMUCS5HBoNBqj6IOMMFwuEpsNAABl6d3HihWrOJaBsuRPkGW+c929HAxuYefb6L+R0ZgkMrJYiItCnCT1sl5Y1jwXj0bNniJNJWqujfX7LyrwJh8AYDxWgulU0dPp20IFlxoODm61kpE4VnS9/puBXyPYgH7LbKY3PhwUnUw+NdC4CdW9+71UgyZspwIBB9No3O0klktxUahyx+Pz+lYG0Xzu84lXRqTqwRQAGAzns8R223gUdxZXGcAK5Hp0ClIAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6NDI6NTMrMDg6MDCKP7wnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjQyOjUzKzA4OjAw+2IEmwAAAE50RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fZ2Y3MDBzN2IzZncvbHV6aGlzaGlwaW4uc3Zn5Zd7GQAAAABJRU5ErkJggg==')"})), R().setStyle(E, Object.assign({}, D, {backgroundImage: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAahJREFUSMdjYBjpgBFd4NZK+f+soQYG//T+yzFuUFUl2cApjEWM/758UZvysPDn3127GBkZGBgY/v4l6ICb9xTWsRbp6/9f9W8N44Jz5xgCGI4wfGFiIttrR/5n/3/U3KyR8rj8t0RdHS5lcAv+//yXzzhZTY1ii2FAmsGZocna+maD3GnWY62tNzbJBbDOffLkxie5eJYwa2uYMhaigzb2/zyGguPH/y9mTGKYYGlJUIMiYxDjHCen/4oMDAxznJzg4k8Z/jP+l5LCCAFCQP30Y5dfXVZWDI7/zzIs8PNjNGJ4/7/r+XNKA4rkoNZ4/lj0V9TmzUxJv0J+F+jrM3YyvPq/acsWujmA2oBkB9y4LifLxhoa+teAzYFtwtWr/8sZxBj9fHxo7oCbprJ72MqOHWNgZGBkYFy1isGGoZahTFSU0hAgOhcQnfph4P7/df9T9u1jPMn4nyHmxIn/bAzLGe7GxTHsZyj+f+zpUwYGBmmG6bQsiMr+L/v/rqlJY9Njm9889fW4lGEUxXCHwAomUgH3vxBG8c+f1WWf9P98sns3oaJ4FAAAbtWqHTT84QYAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDEtMDhUMTY6MzU6MjMrMDg6MDBLHbvEAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTAxLTA4VDE2OjM1OjIzKzA4OjAwOkADeAAAAE50RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fcTM1YTFhNHBtY2MvbHV6aGlzaGlwaW4uc3Zn6xlv1QAAAABJRU5ErkJggg==')"})), h.appendChild(m), e._opt.text && (o.appendChild(i), t.textDom = i), e._opt.showBandwidth && (o.appendChild(s), t.speedDom = s), e._opt.operateBtns.record && (a.appendChild(E), a.appendChild(v), t.recordingDom = E, t.recordDom = v), e._opt.operateBtns.screenshot && (a.appendChild(d), t.screenshotsDom = d), e._opt.operateBtns.play && (a.appendChild(u), a.appendChild(l), t.playDom = u, t.pauseDom = l), e._opt.operateBtns.audio && (a.appendChild(g), a.appendChild(A), t.playAudioDom = g, t.quietAudioDom = A), e._opt.operateBtns.fullscreen && (a.appendChild(f), a.appendChild(p), t.fullscreenDom = f, t.minScreenDom = p), n.appendChild(o), n.appendChild(a), r.appendChild(y), t.bgDom = y, r.appendChild(h), t.loadingDom = h, e._showControl() && r.appendChild(n), e._opt.operateBtns.play && (r.appendChild(c), t.playBigDom = c), e.$container.appendChild(r), e.$doms = t, e._removeContainerChild = () => { for (; e.$container.firstChild;) e.$container.removeChild(e.$container.firstChild) }, z().default(e), R().$hideBtns(e.$doms), e._opt.isNotMute || e._mute() }, t(W, "default", (function () { return Y }))), W } var V, Q, X = !1; function q() { return X || (X = !0, V = {}, v(), R(), Q = e => { const t = new Worker(e._opt.decoder); t.onmessage = r => { const n = r.data; switch (n.cmd) { case v().CMD_TYPE.init: e.setBufferTime(e._opt.videoBuffer), t.postMessage({ cmd: v().POST_MESSAGE.init, opt: JSON.stringify(e._opt), sampleRate: e._audioContext.sampleRate }), e._hasLoaded || (e._hasLoaded = !0, e.onLoad(), e._trigger(v().EVEMTS.load)); break; case v().CMD_TYPE.initSize: e.$canvasElement.width = n.w, e.$canvasElement.height = n.h, e.onInitSize(), e._resize(), e._trigger(v().EVEMTS.videoInfo, { w: n.w, h: n.h }), e._trigger(v().EVEMTS.start), e._supportOffscreen() && (e._bitmaprenderer = e.$canvasElement.getContext("bitmaprenderer")); break; case v().CMD_TYPE.render: e.loading && (e.loading = !1, e.playing = !0, e._clearCheckLoading()), e.playing && (e._supportOffscreen() ? e._bitmaprenderer.transferFromImageBitmap(n.buffer) : e._contextGLRender(e.$canvasElement.width, e.$canvasElement.height, n.output[0], n.output[1], n.output[2])), e._trigger(v().EVEMTS.timeUpdate, n.ts), e.onTimeUpdate(n.ts), e._updateStats({ buf: n.delay, ts: n.ts }), e._checkHeart(); break; case v().CMD_TYPE.playAudio: e.playing && !e.quieting && e._playAudio(n.buffer); break; case v().CMD_TYPE.print: e.onLog(n.text), e._trigger(v().EVEMTS.log, n.text); break; case v().CMD_TYPE.printErr: e.onLog(n.text), e._trigger(v().EVEMTS.log, n.text), e.onError(n.text), e._trigger(v().EVEMTS.error, n.text); break; case v().CMD_TYPE.initAudioPlanar: e._initAudioPlanar(n), e._trigger(v().EVEMTS.audioInfo, { numOfChannels: n.channels, sampleRate: n.samplerate }); break; case v().CMD_TYPE.kBps: e.playing && (e.$doms.speedDom && (e.$doms.speedDom.innerText = R().bpsSize(n.kBps)), e._trigger(v().EVEMTS.kBps, n.kBps)); default: e[n.cmd] && e[n.cmd](n) } }, e._decoderWorker = t }, t(V, "default", (function () { return Q }))), V } var Z, K, J = !1; function ee() { return J || (J = !0, Z = {}, R(), v(), K = e => { e._loading = !0, e._recording = !1, e._playing = !1, e._audioPlaying = !1, e._quieting = !1, e._fullscreen = !1, e._stats = { buf: 0, fps: 0, abps: "", vbps: "", ts: "" }, e._hasLoaded = !1, e._playUrl = "", e._startBpsTime = "", e._bps = 0, e._checkHeartTimeout = null, e._wakeLock = null, e._contextGL = null, e._contextGLRender = null, e._checkLoadingTimeout = null, e._bitmaprenderer = null, e._isPlayingBeforePageHidden = !1, e._initCheckVariable = () => { e._startBpsTime = "", e._bps = 0, e._clearCheckHeartTimeout(), e._clearCheckLoading() }, e._clearCheckHeartTimeout = () => { e._checkHeartTimeout && (clearTimeout(e._checkHeartTimeout), e._checkHeartTimeout = null) }, e._startCheckHeartTimeout = () => { e._checkHeartTimeout = setTimeout((function () { e._trigger(v().EVEMTS.timeout), e.recording = !1, e.playing = !1, e._close() }), 1e3 * e._opt.timeout) }, e._clearCheckLoading = () => { e._checkLoadingTimeout && (clearTimeout(e._checkLoadingTimeout), e._checkLoadingTimeout = null) }, e._checkLoading = () => { e._clearCheckLoading(), e._checkLoadingTimeout = setTimeout((() => { e._trigger(v().EVEMTS.timeout), e.playing = !1, e._close(), R().$domToggle(e.$doms.loadingDom, !1) }), 1e3 * e._opt.timeout) } }, t(Z, "default", (function () { return K }))), Z } var te, re, ne = !1; function oe() { return ne || (ne = !0, te = {}, R(), re = e => { e.onPlay = R().noop, e.onPause = R().noop, e.onRecord = R().noop, e.onFullscreen = R().noop, e.onMute = R().noop, e.onLoad = R().noop, e.onLog = R().noop, e.onError = R().noop, e.onTimeUpdate = R().noop, e.onInitSize = R().noop }, t(te, "default", (function () { return re }))), te } var ae, ie, se = !1; function ue() { return se || (se = !0, ie = e => { e._on = (t, r) => { let n, o, a; if (!r) return e; for (n = e.__events || (e.__events = {}), t = t.split(/\s+/); o = t.shift();) a = n[o] || (n[o] = []), a.push(r); return e }, e._off = () => { let t; return (t = e.__events) ? (delete e.__events, e) : e }, e._trigger = (t, ...r) => { function n(e, t) { if (e) for (let r = 0, n = e.length; r < n; r += 1) e[r](...t) } let o, a, i; if (!(o = e.__events)) return e; for (t = t.split(/\s+/); a = t.shift();) (i = o[a]) && (i = i.slice()), n(i, r); return e } }, t(ae = {}, "default", (function () { return ie }))), ae } var ce, le, de = !1; function fe() { return de || (de = !0, ce = {}, R(), v(), le = e => { e._pause = () => { e._close(), e.loading && R().$domToggle(e.$doms.loadingDom, !1), e.recording = !1, e.playing = !1 }, e._play = t => { if (!e._playUrl && !t) return; let r = !1; t ? (e._playUrl && (e._close(), r = !0, e.clearView()), e.loading = !0, R().$domToggle(e.$doms.bgDom, !1), e._checkLoading(), e._playUrl = t) : e._playUrl && (e.loading ? (R().$hideBtns(e.$doms), R().$domToggle(e.$doms.fullscreenDom, !0), R().$domToggle(e.$doms.pauseDom, !0), R().$domToggle(e.$doms.loadingDom, !0), e._checkLoading()) : e.playing = !0), e._initCheckVariable(), r ? setTimeout((() => { e._decoderWorker.postMessage({cmd: v().POST_MESSAGE.play, url: e._playUrl}) }), 300) : e._decoderWorker.postMessage({cmd: v().POST_MESSAGE.play, url: e._playUrl}) }, e._screenshot = (t, r, n) => { t = t || R().now(); const o = {png: "image/png", jpeg: "image/jpeg", webp: "image/webp"}; let a = .92; void 0 !== n && (a = Number(n)); const i = e.$canvasElement.toDataURL(o[r] || o.png, a); R().downloadImg(R().dataURLToFile(i), t) }, e._close = () => { e._close$2(), e._clearView() }, e._close$2 = () => { e._opt.debug && console.log("_close$2-START"), e._closeAudio && e._closeAudio(), e._audioPlayBuffers = [], e._audioPlaying = !1, e._decoderWorker.postMessage({cmd: v().POST_MESSAGE.close}), delete e._playAudio, e._releaseWakeLock(), e._initCheckVariable(), e._opt.debug && console.log("_close$2-END") }, e._releaseWakeLock = () => { e._wakeLock && (e._wakeLock.release(), e._wakeLock = null) }, e._clearView = () => { e._contextGL && e._contextGL.clear(e._contextGL.COLOR_BUFFER_BIT) }, e._resize = () => { const t = e.$container.clientWidth; let r = e.$container.clientHeight; e._showControl() && (r -= 38); const n = e.$canvasElement.width, o = e.$canvasElement.height, a = e._opt.rotate, i = t / n, s = r / o; let u = i > s ? s : i; e._opt.isResize || i !== s && (u = i + "," + s), e._opt.isFullResize && (u = i > s ? i : s); let c = "scale(" + u + ")"; a && (c += " rotate(" + a + "deg)"), e.$canvasElement.style.transform = c, e.$canvasElement.style.left = (t - n) / 2 + "px", e.$canvasElement.style.top = (r - o) / 2 + "px" }, e._enableWakeLock = () => { e._opt.keepScreenOn && "wakeLock" in navigator && navigator.wakeLock.request("screen").then((t => { e._wakeLock = t })) }, e._supportOffscreen = () => !e._opt.forceNoOffscreen && "function" == typeof e.$canvasElement.transferControlToOffscreen, e._checkHeart = () => { e._clearCheckHeartTimeout(), e._startCheckHeartTimeout() }, e._updateStats = t => { t = t || {}, e._startBpsTime || (e._startBpsTime = R().now()); const r = R().now(); r - e._startBpsTime < 1e3 ? e._stats.fps += 1 : (e._stats.ts = t.ts, e._stats.buf = t.buf, e._trigger(v().EVEMTS.stats, e._stats), e._trigger(v().EVEMTS.performance, R().fpsStatus(e._stats.fps)), e._trigger(v().EVEMTS.buffer, R().bufferStatus(e._stats.buf, 1e3 * e._opt.videoBuffer)), e._stats.fps = 0, e._startBpsTime = r) }, e._onfullscreenchange = () => { (void 0).fullscreen = R().checkFull() }, e._handleVisibilityChange = () => { e._opt.debug && console.log(document.visibilityState, e._isPlayingBeforePageHidden), "visible" === document.visibilityState ? e._isPlayingBeforePageHidden && e._play() : (e._isPlayingBeforePageHidden = e.playing, e.playing && e._pause()) }, e._handleWakeLock = () => { null !== e._wakeLock && "visible" === document.visibilityState && e._enableWakeLock() } }, t(ce, "default", (function () { return le }))), ce } var pe, he, me = !1; function Ae() { return me || (me = !0, pe = {}, ee(), oe(), ue(), fe(), he = e => { ee().default(e), oe().default(e), ue().default(e), fe().default(e) }, t(pe, "default", (function () { return he }))), pe } var ge, ve = !1; var Ee, ye, we, _e, be, ke, Te, De, Se, Ce, Oe, Pe, xe, Be, Me, Re, Le, Ie, Fe, Ue, Ne, je, Ge, ze, We, Ye, He, $e, Ve, Qe, Xe, qe, Ze, Ke, Je, et, tt, rt, nt, ot, at, it, st, ut, ct, lt, dt, ft, pt, ht, mt, At, gt, vt, Et, yt, wt, _t, bt, kt, Tt, Dt, St, Ct, Ot, Pt, xt, Bt, Mt, Rt, Lt, It, Ft, Ut, Nt, jt, Gt, zt, Wt, Yt, Ht, $t, Vt, Qt, Xt, qt, Zt, Kt, Jt, er, tr, rr, nr, or, ar, ir, sr, ur, cr, lr, dr, fr, pr, hr, mr, Ar, gr, vr, Er, yr, wr, _r, br, kr, Tr, Dr = !1; function Sr(e) { return Ee.locateFile ? Ee.locateFile(e, Oe) : Oe + e } function Cr(e) { Cr.shown || (Cr.shown = {}), Cr.shown[e] || (Cr.shown[e] = 1, Me(e)) } function Or(e, t) { e || Yr("Assertion failed: " + t) } function Pr(e, t, r) { for (var n = t + r, o = ""; !(t >= n);) { var a = e[t++]; if (!a) return o; if (128 & a) { var i = 63 & e[t++]; if (192 != (224 & a)) { var s = 63 & e[t++]; if ((a = 224 == (240 & a) ? (15 & a) << 12 | i << 6 | s : (7 & a) << 18 | i << 12 | s << 6 | 63 & e[t++]) < 65536) o += String.fromCharCode(a); else { var u = a - 65536; o += String.fromCharCode(55296 | u >> 10, 56320 | 1023 & u) } } else o += String.fromCharCode((31 & a) << 6 | i) } else o += String.fromCharCode(a) } return o } function xr(e, t) { return e ? Pr(We, e, t) : "" } function Br(e, t, r, n) { if (!(n > 0)) return 0; for (var o = r, a = r + n - 1, i = 0; i < e.length; ++i) { var s = e.charCodeAt(i); if (s >= 55296 && s <= 57343) s = 65536 + ((1023 & s) << 10) | 1023 & e.charCodeAt(++i); if (s <= 127) { if (r >= a) break; t[r++] = s } else if (s <= 2047) { if (r + 1 >= a) break; t[r++] = 192 | s >> 6, t[r++] = 128 | 63 & s } else if (s <= 65535) { if (r + 2 >= a) break; t[r++] = 224 | s >> 12, t[r++] = 128 | s >> 6 & 63, t[r++] = 128 | 63 & s } else { if (r + 3 >= a) break; t[r++] = 240 | s >> 18, t[r++] = 128 | s >> 12 & 63, t[r++] = 128 | s >> 6 & 63, t[r++] = 128 | 63 & s } } return t[r] = 0, r - o } function Mr(e, t, r) { return Br(e, We, t, r) } function Rr(e) { for (var t = 0, r = 0; r < e.length; ++r) { var n = e.charCodeAt(r); n >= 55296 && n <= 57343 && (n = 65536 + ((1023 & n) << 10) | 1023 & e.charCodeAt(++r)), n <= 127 ? ++t : t += n <= 2047 ? 2 : n <= 65535 ? 3 : 4 } return t } function Lr(e, t) { for (var r = "", n = 0; !(n >= t / 2); ++n) { var o = Ye[e + 2 * n >> 1]; if (0 == o) break; r += String.fromCharCode(o) } return r } function Ir(e, t, r) { if (void 0 === r && (r = 2147483647), r < 2) return 0; for (var n = t, o = (r -= 2) < 2 * e.length ? r / 2 : e.length, a = 0; a < o; ++a) { var i = e.charCodeAt(a); Ye[t >> 1] = i, t += 2 } return Ye[t >> 1] = 0, t - n } function Fr(e) { return 2 * e.length } function Ur(e, t) { for (var r = 0, n = ""; !(r >= t / 4);) { var o = $e[e + 4 * r >> 2]; if (0 == o) break; if (++r, o >= 65536) { var a = o - 65536; n += String.fromCharCode(55296 | a >> 10, 56320 | 1023 & a) } else n += String.fromCharCode(o) } return n } function Nr(e, t, r) { if (void 0 === r && (r = 2147483647), r < 4) return 0; for (var n = t, o = n + r - 4, a = 0; a < e.length; ++a) { var i = e.charCodeAt(a); if (i >= 55296 && i <= 57343) i = 65536 + ((1023 & i) << 10) | 1023 & e.charCodeAt(++a); if ($e[t >> 2] = i, (t += 4) + 4 > o) break } return $e[t >> 2] = 0, t - n } function jr(e) { for (var t = 0, r = 0; r < e.length; ++r) { var n = e.charCodeAt(r); n >= 55296 && n <= 57343 && ++r, t += 4 } return t } function Gr(e) { var t = Rr(e) + 1, r = Jt(t); return r && Br(e, ze, r, t), r } function zr(e) { Or(!Se, "addRunDependency cannot be used in a pthread worker"), nt++, Ee.monitorRunDependencies && Ee.monitorRunDependencies(nt) } function Wr(e) { if (nt--, Ee.monitorRunDependencies && Ee.monitorRunDependencies(nt), 0 == nt && (null !== ot && (clearInterval(ot), ot = null), at)) { var t = at; at = null, t() } } function Yr(e) { throw Ee.onAbort && Ee.onAbort(e), Se && console.error("Pthread aborting at " + (new Error).stack), Me(e += ""), je = !0, 1, e = "abort(" + e + "). Build with -s ASSERTIONS=1 for more info.", new WebAssembly.RuntimeError(e) } function Hr(e) { return t = e, r = it, String.prototype.startsWith ? t.startsWith(r) : 0 === t.indexOf(r); var t, r } function $r(e) { try { if (e == st && Ie) return new Uint8Array(Ie); if (xe) return xe(e); throw"both async and sync fetching of the wasm failed" } catch (e) { Yr(e) } } function Vr() { var e = {a: qt}; function t(e, t) { var r = e.exports; Ee.asm = r, Ze = Ee.asm.da, Ne = t, Se || Wr() } function r(e) { t(e.instance, e.module) } function n(t) { return (Ie || !Te && !De || "function" != typeof fetch ? Promise.resolve().then((function () { return $r(st) })) : fetch(st, {credentials: "same-origin"}).then((function (e) { if (!e.ok) throw"failed to load wasm binary file at '" + st + "'"; return e.arrayBuffer() })).catch((function () { return $r(st) }))).then((function (t) { return WebAssembly.instantiate(t, e) })).then(t, (function (e) { Me("failed to asynchronously prepare wasm: " + e), Yr(e) })) } if (Se || zr(), Ee.instantiateWasm) try { return Ee.instantiateWasm(e, t) } catch (e) { return Me("Module.instantiateWasm callback failed with error: " + e), !1 } return Ie || "function" != typeof WebAssembly.instantiateStreaming || Hr(st) || "function" != typeof fetch ? n(r) : fetch(st, {credentials: "same-origin"}).then((function (t) { return WebAssembly.instantiateStreaming(t, e).then(r, (function (e) { return Me("wasm streaming compile failed: " + e), Me("falling back to ArrayBuffer instantiation"), n(r) })) })), {} } function Qr() { ft.initRuntime() } function Xr(e) { for (; e.length > 0;) { var t = e.shift(); if ("function" != typeof t) { var r = t.func; "number" == typeof r ? void 0 === t.arg ? Ze.get(r)() : Ze.get(r)(t.arg) : r(void 0 === t.arg ? null : t.arg) } else t(Ee) } } function qr(e, t) { if (e <= 0 || e > ze.length || !0 & e || t < 0) return -28; if (0 == t) return 0; t >= 2147483647 && (t = 1 / 0); var r = Atomics.load($e, br >> 2), n = 0; if (r == e && (Atomics.compareExchange($e, br >> 2, r, 0) == r && (n = 1, --t <= 0))) return 1; var o = Atomics.notify($e, e >> 2, t); if (o >= 0) return o + n; throw"Atomics.notify returned an unexpected value " + o } function Zr(e) { if (Se) throw"Internal Error! cleanupThread() can only ever be called from main application thread!"; if (!e) throw"Internal Error! Null pthread_ptr in cleanupThread!"; $e[e + 12 >> 2] = 0; var t = ft.pthreads[e]; if (t) { var r = t.worker; ft.returnWorkerToPool(r) } } function Kr(e, t) { yr(e, t), vr(e) } function Jr() { return Fe } function en(e, t) { return Ze.get(e)(t) } function tn() { var e = new Error; if (!e.stack) { try { throw new Error } catch (t) { e = t } if (!e.stack) return "(no stack trace available)" } return e.stack.toString() } function rn(e, t, r, n) { Yr("Assertion failed: " + xr(e) + ", at: " + [t ? xr(t) : "unknown filename", r, n ? xr(n) : "unknown function"]) } function nn(e) { return $e[tr() >> 2] = e, e } function on(e) { for (var t = function (e, t) { return t || (t = Re), Math.ceil(e / t) * t }(e, 16384), r = Jt(t); e < t;) ze[r + e++] = 0; return r } function an(e, t, r) { if (Se) return zo(1, 1, e, t, r); Et.varargs = r; try { var n = Et.getStreamFromFD(e); switch (t) { case 0: return (o = Et.get()) < 0 ? -28 : vt.open(n.path, n.flags, 0, o).fd; case 1: case 2: return 0; case 3: return n.flags; case 4: var o = Et.get(); return n.flags |= o, 0; case 12: o = Et.get(); return Ye[o + 0 >> 1] = 2, 0; case 13: case 14: return 0; case 16: case 8: return -28; case 9: return nn(28), -1; default: return -28 } } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), -e.errno } } function sn(e, t, r) { if (Se) return zo(2, 1, e, t, r); Et.varargs = r; try { var n = Et.getStr(e), o = r ? Et.get() : 0; return vt.open(n, t, o).fd } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), -e.errno } } function un(e) { switch (e) { case 1: return 0; case 2: return 1; case 4: return 2; case 8: return 3; default: throw new TypeError("Unknown type size: " + e) } } function cn(e) { for (var t = "", r = e; We[r];) t += yt[We[r++]]; return t } function ln(e) { if (void 0 === e) return "_unknown"; var t = (e = e.replace(/[^a-zA-Z0-9_]/g, "$")).charCodeAt(0); return t >= kt && t <= Tt ? "_" + e : e } function dn(e, t) { return e = ln(e), new Function("body", "return function " + e + '() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t) } function fn(e, t) { var r = dn(t, (function (e) { this.name = t, this.message = e; var r = new Error(e).stack; void 0 !== r && (this.stack = this.toString() + "\n" + r.replace(/^Error(:[^\n]*)?\n/, "")) })); return r.prototype = Object.create(e.prototype), r.prototype.constructor = r, r.prototype.toString = function () { return void 0 === this.message ? this.name : this.name + ": " + this.message }, r } function pn(e) { throw new Dt(e) } function hn(e) { throw new St(e) } function mn(e, t, r) { function n(t) { var n = r(t); n.length !== e.length && hn("Mismatched type converter count"); for (var o = 0; o < e.length; ++o) An(e[o], n[o]) } e.forEach((function (e) { bt[e] = t })); var o = new Array(t.length), a = [], i = 0; t.forEach((function (e, t) { _t.hasOwnProperty(e) ? o[t] = _t[e] : (a.push(e), wt.hasOwnProperty(e) || (wt[e] = []), wt[e].push((function () { o[t] = _t[e], ++i === a.length && n(o) }))) })), 0 === a.length && n(o) } function An(e, t, r) { if (r = r || {}, !("argPackAdvance" in t)) throw new TypeError("registerType registeredInstance requires argPackAdvance"); var n = t.name; if (e || pn('type "' + n + '" must have a positive integer typeid pointer'), _t.hasOwnProperty(e)) { if (r.ignoreDuplicateRegistrations) return; pn("Cannot register type '" + n + "' twice") } if (_t[e] = t, delete bt[e], wt.hasOwnProperty(e)) { var o = wt[e]; delete wt[e], o.forEach((function (e) { e() })) } } function gn(e, t, r, n, o) { var a = un(r); An(e, { name: t = cn(t), fromWireType: function (e) { return !!e }, toWireType: function (e, t) { return t ? n : o }, argPackAdvance: 8, readValueFromPointer: function (e) { var n; if (1 === r) n = ze; else if (2 === r) n = Ye; else { if (4 !== r) throw new TypeError("Unknown boolean type size: " + t); n = $e } return this.fromWireType(n[e >> a]) }, destructorFunction: null }) } function vn(e) { if (!(this instanceof Cn)) return !1; if (!(e instanceof Cn)) return !1; for (var t = this.$$.ptrType.registeredClass, r = this.$$.ptr, n = e.$$.ptrType.registeredClass, o = e.$$.ptr; t.baseClass;) r = t.upcast(r), t = t.baseClass; for (; n.baseClass;) o = n.upcast(o), n = n.baseClass; return t === n && r === o } function En(e) { pn(e.$$.ptrType.registeredClass.name + " instance already deleted") } function yn(e) { } function wn(e) { e.count.value -= 1, 0 === e.count.value && function (e) { e.smartPtr ? e.smartPtrType.rawDestructor(e.smartPtr) : e.ptrType.registeredClass.rawDestructor(e.ptr) }(e) } function _n(e) { return "undefined" == typeof FinalizationGroup ? (_n = function (e) { return e }, e) : (Ct = new FinalizationGroup((function (e) { for (var t = e.next(); !t.done; t = e.next()) { var r = t.value; r.ptr ? wn(r) : console.warn("object already deleted: " + r.ptr) } })), yn = function (e) { Ct.unregister(e.$$) }, (_n = function (e) { return Ct.register(e, e.$$, e.$$), e })(e)) } function bn() { if (this.$$.ptr || En(this), this.$$.preservePointerOnDelete) return this.$$.count.value += 1, this; var e, t = _n(Object.create(Object.getPrototypeOf(this), { $$: { value: (e = this.$$, { count: e.count, deleteScheduled: e.deleteScheduled, preservePointerOnDelete: e.preservePointerOnDelete, ptr: e.ptr, ptrType: e.ptrType, smartPtr: e.smartPtr, smartPtrType: e.smartPtrType }) } })); return t.$$.count.value += 1, t.$$.deleteScheduled = !1, t } function kn() { this.$$.ptr || En(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && pn("Object already scheduled for deletion"), yn(this), wn(this.$$), this.$$.preservePointerOnDelete || (this.$$.smartPtr = void 0, this.$$.ptr = void 0) } function Tn() { return !this.$$.ptr } function Dn() { for (; Pt.length;) { var e = Pt.pop(); e.$$.deleteScheduled = !1, e.delete() } } function Sn() { return this.$$.ptr || En(this), this.$$.deleteScheduled && !this.$$.preservePointerOnDelete && pn("Object already scheduled for deletion"), Pt.push(this), 1 === Pt.length && Ot && Ot(Dn), this.$$.deleteScheduled = !0, this } function Cn() { } function On(e, t, r) { if (void 0 === e[t].overloadTable) { var n = e[t]; e[t] = function () { return e[t].overloadTable.hasOwnProperty(arguments.length) || pn("Function '" + r + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + e[t].overloadTable + ")!"), e[t].overloadTable[arguments.length].apply(this, arguments) }, e[t].overloadTable = [], e[t].overloadTable[n.argCount] = n } } function Pn(e, t, r, n, o, a, i, s) { this.name = e, this.constructor = t, this.instancePrototype = r, this.rawDestructor = n, this.baseClass = o, this.getActualType = a, this.upcast = i, this.downcast = s, this.pureVirtualFunctions = [] } function xn(e, t, r) { for (; t !== r;) t.upcast || pn("Expected null or instance of " + r.name + ", got an instance of " + t.name), e = t.upcast(e), t = t.baseClass; return e } function Bn(e, t) { if (null === t) return this.isReference && pn("null is not a valid " + this.name), 0; t.$$ || pn('Cannot pass "' + lo(t) + '" as a ' + this.name), t.$$.ptr || pn("Cannot pass deleted object as a pointer of type " + this.name); var r = t.$$.ptrType.registeredClass; return xn(t.$$.ptr, r, this.registeredClass) } function Mn(e, t) { var r; if (null === t) return this.isReference && pn("null is not a valid " + this.name), this.isSmartPointer ? (r = this.rawConstructor(), null !== e && e.push(this.rawDestructor, r), r) : 0; t.$$ || pn('Cannot pass "' + lo(t) + '" as a ' + this.name), t.$$.ptr || pn("Cannot pass deleted object as a pointer of type " + this.name), !this.isConst && t.$$.ptrType.isConst && pn("Cannot convert argument of type " + (t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name) + " to parameter type " + this.name); var n = t.$$.ptrType.registeredClass; if (r = xn(t.$$.ptr, n, this.registeredClass), this.isSmartPointer) switch (void 0 === t.$$.smartPtr && pn("Passing raw pointer to smart pointer is illegal"), this.sharingPolicy) { case 0: t.$$.smartPtrType === this ? r = t.$$.smartPtr : pn("Cannot convert argument of type " + (t.$$.smartPtrType ? t.$$.smartPtrType.name : t.$$.ptrType.name) + " to parameter type " + this.name); break; case 1: r = t.$$.smartPtr; break; case 2: if (t.$$.smartPtrType === this) r = t.$$.smartPtr; else { var o = t.clone(); r = this.rawShare(r, uo((function () { o.delete() }))), null !== e && e.push(this.rawDestructor, r) } break; default: pn("Unsupporting sharing policy") } return r } function Rn(e, t) { if (null === t) return this.isReference && pn("null is not a valid " + this.name), 0; t.$$ || pn('Cannot pass "' + lo(t) + '" as a ' + this.name), t.$$.ptr || pn("Cannot pass deleted object as a pointer of type " + this.name), t.$$.ptrType.isConst && pn("Cannot convert argument of type " + t.$$.ptrType.name + " to parameter type " + this.name); var r = t.$$.ptrType.registeredClass; return xn(t.$$.ptr, r, this.registeredClass) } function Ln(e) { return this.fromWireType(Ve[e >> 2]) } function In(e) { return this.rawGetPointee && (e = this.rawGetPointee(e)), e } function Fn(e) { this.rawDestructor && this.rawDestructor(e) } function Un(e) { null !== e && e.delete() } function Nn(e, t, r) { if (t === r) return e; if (void 0 === r.baseClass) return null; var n = Nn(e, t, r.baseClass); return null === n ? null : r.downcast(n) } function jn() { return Object.keys(Bt).length } function Gn() { var e = []; for (var t in Bt) Bt.hasOwnProperty(t) && e.push(Bt[t]); return e } function zn(e) { Ot = e, Pt.length && Ot && Ot(Dn) } function Wn(e, t) { return t = function (e, t) { for (void 0 === t && pn("ptr should not be undefined"); e.baseClass;) t = e.upcast(t), e = e.baseClass; return t }(e, t), Bt[t] } function Yn(e, t) { return t.ptrType && t.ptr || hn("makeClassHandle requires ptr and ptrType"), !!t.smartPtrType !== !!t.smartPtr && hn("Both smartPtrType and smartPtr must be specified"), t.count = {value: 1}, _n(Object.create(e, {$$: {value: t}})) } function Hn(e) { var t = this.getPointee(e); if (!t) return this.destructor(e), null; var r = Wn(this.registeredClass, t); if (void 0 !== r) { if (0 === r.$$.count.value) return r.$$.ptr = t, r.$$.smartPtr = e, r.clone(); var n = r.clone(); return this.destructor(e), n } function o() { return this.isSmartPointer ? Yn(this.registeredClass.instancePrototype, { ptrType: this.pointeeType, ptr: t, smartPtrType: this, smartPtr: e }) : Yn(this.registeredClass.instancePrototype, {ptrType: this, ptr: e}) } var a, i = this.registeredClass.getActualType(t), s = xt[i]; if (!s) return o.call(this); a = this.isConst ? s.constPointerType : s.pointerType; var u = Nn(t, this.registeredClass, a.registeredClass); return null === u ? o.call(this) : this.isSmartPointer ? Yn(a.registeredClass.instancePrototype, { ptrType: a, ptr: u, smartPtrType: this, smartPtr: e }) : Yn(a.registeredClass.instancePrototype, {ptrType: a, ptr: u}) } function $n(e, t, r, n, o, a, i, s, u, c, l) { this.name = e, this.registeredClass = t, this.isReference = r, this.isConst = n, this.isSmartPointer = o, this.pointeeType = a, this.sharingPolicy = i, this.rawGetPointee = s, this.rawConstructor = u, this.rawShare = c, this.rawDestructor = l, o || void 0 !== t.baseClass ? this.toWireType = Mn : n ? (this.toWireType = Bn, this.destructorFunction = null) : (this.toWireType = Rn, this.destructorFunction = null) } function Vn(e, t, r) { return -1 != e.indexOf("j") ? function (e, t, r) { var n = Ee["dynCall_" + e]; return r && r.length ? n.apply(null, [t].concat(r)) : n.call(null, t) }(e, t, r) : Ze.get(t).apply(null, r) } function Qn(e, t) { var r, n, o, a = -1 != (e = cn(e)).indexOf("j") ? (r = e, n = t, o = [], function () { o.length = arguments.length; for (var e = 0; e < arguments.length; e++) o[e] = arguments[e]; return Vn(r, n, o) }) : Ze.get(t); return "function" != typeof a && pn("unknown function pointer with signature " + e + ": " + t), a } function Xn(e) { var t = rr(e), r = cn(t); return Kt(t), r } function qn(e, t) { var r = [], n = {}; throw t.forEach((function e(t) { n[t] || _t[t] || (bt[t] ? bt[t].forEach(e) : (r.push(t), n[t] = !0)) })), new Mt(e + ": " + r.map(Xn).join([", "])) } function Zn(e, t, r, n, o, a, i, s, u, c, l, d, f) { l = cn(l), a = Qn(o, a), s && (s = Qn(i, s)), c && (c = Qn(u, c)), f = Qn(d, f); var p = ln(l); !function (e, t, r) { Ee.hasOwnProperty(e) ? ((void 0 === r || void 0 !== Ee[e].overloadTable && void 0 !== Ee[e].overloadTable[r]) && pn("Cannot register public name '" + e + "' twice"), On(Ee, e, e), Ee.hasOwnProperty(r) && pn("Cannot register multiple overloads of a function with the same number of arguments (" + r + ")!"), Ee[e].overloadTable[r] = t) : (Ee[e] = t, void 0 !== r && (Ee[e].numArguments = r)) }(p, (function () { qn("Cannot construct " + l + " due to unbound types", [n]) })), mn([e, t, r], n ? [n] : [], (function (t) { var r, o; t = t[0], o = n ? (r = t.registeredClass).instancePrototype : Cn.prototype; var i = dn(p, (function () { if (Object.getPrototypeOf(this) !== u) throw new Dt("Use 'new' to construct " + l); if (void 0 === d.constructor_body) throw new Dt(l + " has no accessible constructor"); var e = d.constructor_body[arguments.length]; if (void 0 === e) throw new Dt("Tried to invoke ctor of " + l + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(d.constructor_body).toString() + ") parameters instead!"); return e.apply(this, arguments) })), u = Object.create(o, {constructor: {value: i}}); i.prototype = u; var d = new Pn(l, i, u, f, r, a, s, c), h = new $n(l, d, !0, !1, !1), m = new $n(l + "*", d, !1, !1, !1), A = new $n(l + " const*", d, !1, !0, !1); return xt[e] = {pointerType: m, constPointerType: A}, function (e, t, r) { Ee.hasOwnProperty(e) || hn("Replacing nonexistant public symbol"), void 0 !== Ee[e].overloadTable && void 0 !== r ? Ee[e].overloadTable[r] = t : (Ee[e] = t, Ee[e].argCount = r) }(p, i), [h, m, A] })) } function Kn(e, t) { for (var r = [], n = 0; n < e; n++) r.push($e[(t >> 2) + n]); return r } function Jn(e) { for (; e.length;) { var t = e.pop(); e.pop()(t) } } function eo(e, t, r, n, o, a) { Or(t > 0); var i = Kn(t, r); o = Qn(n, o); var s = [a], u = []; mn([], [e], (function (e) { var r = "constructor " + (e = e[0]).name; if (void 0 === e.registeredClass.constructor_body && (e.registeredClass.constructor_body = []), void 0 !== e.registeredClass.constructor_body[t - 1]) throw new Dt("Cannot register multiple constructors with identical number of parameters (" + (t - 1) + ") for class '" + e.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!"); return e.registeredClass.constructor_body[t - 1] = function () { qn("Cannot construct " + e.name + " due to unbound types", i) }, mn([], i, (function (n) { return e.registeredClass.constructor_body[t - 1] = function () { arguments.length !== t - 1 && pn(r + " called with " + arguments.length + " arguments, expected " + (t - 1)), u.length = 0, s.length = t; for (var e = 1; e < t; ++e) s[e] = n[e].toWireType(u, arguments[e - 1]); var a = o.apply(null, s); return Jn(u), n[0].fromWireType(a) }, [] })), [] })) } function to(e, t) { if (!(e instanceof Function)) throw new TypeError("new_ called with constructor type " + typeof e + " which is not a function"); var r = dn(e.name || "unknownFunctionName", (function () { })); r.prototype = e.prototype; var n = new r, o = e.apply(n, t); return o instanceof Object ? o : n } function ro(e, t, r, n, o, a, i, s) { var u = Kn(r, n); t = cn(t), a = Qn(o, a), mn([], [e], (function (e) { var n = (e = e[0]).name + "." + t; function o() { qn("Cannot call " + n + " due to unbound types", u) } s && e.registeredClass.pureVirtualFunctions.push(t); var c = e.registeredClass.instancePrototype, l = c[t]; return void 0 === l || void 0 === l.overloadTable && l.className !== e.name && l.argCount === r - 2 ? (o.argCount = r - 2, o.className = e.name, c[t] = o) : (On(c, t, n), c[t].overloadTable[r - 2] = o), mn([], u, (function (o) { var s = function (e, t, r, n, o) { var a = t.length; a < 2 && pn("argTypes array size mismatch! Must at least get return value and 'this' types!"); for (var i = null !== t[1] && null !== r, s = !1, u = 1; u < t.length; ++u) if (null !== t[u] && void 0 === t[u].destructorFunction) { s = !0; break } var c = "void" !== t[0].name, l = "", d = ""; for (u = 0; u < a - 2; ++u) l += (0 !== u ? ", " : "") + "arg" + u, d += (0 !== u ? ", " : "") + "arg" + u + "Wired"; var f = "return function " + ln(e) + "(" + l + ") {\nif (arguments.length !== " + (a - 2) + ") {\nthrowBindingError('function " + e + " called with ' + arguments.length + ' arguments, expected " + (a - 2) + " args!');\n}\n"; s && (f += "var destructors = [];\n"); var p = s ? "destructors" : "null", h = ["throwBindingError", "invoker", "fn", "runDestructors", "retType", "classParam"], m = [pn, n, o, Jn, t[0], t[1]]; for (i && (f += "var thisWired = classParam.toWireType(" + p + ", this);\n"), u = 0; u < a - 2; ++u) f += "var arg" + u + "Wired = argType" + u + ".toWireType(" + p + ", arg" + u + "); // " + t[u + 2].name + "\n", h.push("argType" + u), m.push(t[u + 2]); if (i && (d = "thisWired" + (d.length > 0 ? ", " : "") + d), f += (c ? "var rv = " : "") + "invoker(fn" + (d.length > 0 ? ", " : "") + d + ");\n", s) f += "runDestructors(destructors);\n"; else for (u = i ? 1 : 2; u < t.length; ++u) { var A = 1 === u ? "thisWired" : "arg" + (u - 2) + "Wired"; null !== t[u].destructorFunction && (f += A + "_dtor(" + A + "); // " + t[u].name + "\n", h.push(A + "_dtor"), m.push(t[u].destructorFunction)) } return c && (f += "var ret = retType.fromWireType(rv);\nreturn ret;\n"), f += "}\n", h.push(f), to(Function, h).apply(null, m) }(n, o, e, a, i); return void 0 === c[t].overloadTable ? (s.argCount = r - 2, c[t] = s) : c[t].overloadTable[r - 2] = s, [] })), [] })) } function no(e, t, r) { return e instanceof Object || pn(r + ' with invalid "this": ' + e), e instanceof t.registeredClass.constructor || pn(r + ' incompatible with "this" of type ' + e.constructor.name), e.$$.ptr || pn("cannot call emscripten binding method " + r + " on deleted object"), xn(e.$$.ptr, e.$$.ptrType.registeredClass, t.registeredClass) } function oo(e, t, r, n, o, a, i, s, u, c) { t = cn(t), o = Qn(n, o), mn([], [e], (function (e) { var n = (e = e[0]).name + "." + t, l = { get: function () { qn("Cannot access " + n + " due to unbound types", [r, i]) }, enumerable: !0, configurable: !0 }; return l.set = u ? function () { qn("Cannot access " + n + " due to unbound types", [r, i]) } : function (e) { pn(n + " is a read-only property") }, Object.defineProperty(e.registeredClass.instancePrototype, t, l), mn([], u ? [r, i] : [r], (function (r) { var i = r[0], l = { get: function () { var t = no(this, e, n + " getter"); return i.fromWireType(o(a, t)) }, enumerable: !0 }; if (u) { u = Qn(s, u); var d = r[1]; l.set = function (t) { var r = no(this, e, n + " setter"), o = []; u(c, r, d.toWireType(o, t)), Jn(o) } } return Object.defineProperty(e.registeredClass.instancePrototype, t, l), [] })), [] })) } function ao(e) { e > 4 && 0 == --Lt[e].refcount && (Lt[e] = void 0, Rt.push(e)) } function io() { for (var e = 0, t = 5; t < Lt.length; ++t) void 0 !== Lt[t] && ++e; return e } function so() { for (var e = 5; e < Lt.length; ++e) if (void 0 !== Lt[e]) return Lt[e]; return null } function uo(e) { switch (e) { case void 0: return 1; case null: return 2; case!0: return 3; case!1: return 4; default: var t = Rt.length ? Rt.pop() : Lt.length; return Lt[t] = {refcount: 1, value: e}, t } } function co(e, t) { An(e, { name: t = cn(t), fromWireType: function (e) { var t = Lt[e].value; return ao(e), t }, toWireType: function (e, t) { return uo(t) }, argPackAdvance: 8, readValueFromPointer: Ln, destructorFunction: null }) } function lo(e) { if (null === e) return "null"; var t = typeof e; return "object" === t || "array" === t || "function" === t ? e.toString() : "" + e } function fo(e, t) { switch (t) { case 2: return function (e) { return this.fromWireType(Qe[e >> 2]) }; case 3: return function (e) { return this.fromWireType(Xe[e >> 3]) }; default: throw new TypeError("Unknown float type: " + e) } } function po(e, t, r) { var n = un(r); An(e, { name: t = cn(t), fromWireType: function (e) { return e }, toWireType: function (e, t) { if ("number" != typeof t && "boolean" != typeof t) throw new TypeError('Cannot convert "' + lo(t) + '" to ' + this.name); return t }, argPackAdvance: 8, readValueFromPointer: fo(t, n), destructorFunction: null }) } function ho(e, t, r) { switch (t) { case 0: return r ? function (e) { return ze[e] } : function (e) { return We[e] }; case 1: return r ? function (e) { return Ye[e >> 1] } : function (e) { return He[e >> 1] }; case 2: return r ? function (e) { return $e[e >> 2] } : function (e) { return Ve[e >> 2] }; default: throw new TypeError("Unknown integer type: " + e) } } function mo(e, t, r, n, o) { t = cn(t), -1 === o && (o = 4294967295); var a = un(r), i = function (e) { return e }; if (0 === n) { var s = 32 - 8 * r; i = function (e) { return e << s >>> s } } var u = -1 != t.indexOf("unsigned"); An(e, { name: t, fromWireType: i, toWireType: function (e, r) { if ("number" != typeof r && "boolean" != typeof r) throw new TypeError('Cannot convert "' + lo(r) + '" to ' + this.name); if (r < n || r > o) throw new TypeError('Passing a number "' + lo(r) + '" from JS side to C/C++ side to an argument of type "' + t + '", which is outside the valid range [' + n + ", " + o + "]!"); return u ? r >>> 0 : 0 | r }, argPackAdvance: 8, readValueFromPointer: ho(t, a, 0 !== n), destructorFunction: null }) } function Ao(e, t, r) { var n = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][t]; function o(e) { var t = Ve, r = t[e >>= 2], o = t[e + 1]; return new n(Ge, o, r) } An(e, { name: r = cn(r), fromWireType: o, argPackAdvance: 8, readValueFromPointer: o }, {ignoreDuplicateRegistrations: !0}) } function go(e, t) { var r = "std::string" === (t = cn(t)); An(e, { name: t, fromWireType: function (e) { var t, n = Ve[e >> 2]; if (r) for (var o = e + 4, a = 0; a <= n; ++a) { var i = e + 4 + a; if (a == n || 0 == We[i]) { var s = xr(o, i - o); void 0 === t ? t = s : (t += String.fromCharCode(0), t += s), o = i + 1 } } else { var u = new Array(n); for (a = 0; a < n; ++a) u[a] = String.fromCharCode(We[e + 4 + a]); t = u.join("") } return Kt(e), t }, toWireType: function (e, t) { t instanceof ArrayBuffer && (t = new Uint8Array(t)); var n = "string" == typeof t; n || t instanceof Uint8Array || t instanceof Uint8ClampedArray || t instanceof Int8Array || pn("Cannot pass non-string to std::string"); var o = (r && n ? function () { return Rr(t) } : function () { return t.length })(), a = Jt(4 + o + 1); if (Ve[a >> 2] = o, r && n) Mr(t, a + 4, o + 1); else if (n) for (var i = 0; i < o; ++i) { var s = t.charCodeAt(i); s > 255 && (Kt(a), pn("String has UTF-16 code units that do not fit in 8 bits")), We[a + 4 + i] = s } else for (i = 0; i < o; ++i) We[a + 4 + i] = t[i]; return null !== e && e.push(Kt, a), a }, argPackAdvance: 8, readValueFromPointer: Ln, destructorFunction: function (e) { Kt(e) } }) } function vo(e, t, r) { var n, o, a, i, s; r = cn(r), 2 === t ? (n = Lr, o = Ir, i = Fr, a = function () { return He }, s = 1) : 4 === t && (n = Ur, o = Nr, i = jr, a = function () { return Ve }, s = 2), An(e, { name: r, fromWireType: function (e) { for (var r, o = Ve[e >> 2], i = a(), u = e + 4, c = 0; c <= o; ++c) { var l = e + 4 + c * t; if (c == o || 0 == i[l >> s]) { var d = n(u, l - u); void 0 === r ? r = d : (r += String.fromCharCode(0), r += d), u = l + t } } return Kt(e), r }, toWireType: function (e, n) { "string" != typeof n && pn("Cannot pass non-string to C++ string type " + r); var a = i(n), u = Jt(4 + a + t); return Ve[u >> 2] = a >> s, o(n, u + 4, a + t), null !== e && e.push(Kt, u), u }, argPackAdvance: 8, readValueFromPointer: Ln, destructorFunction: function (e) { Kt(e) } }) } function Eo(e, t) { An(e, { isVoid: !0, name: t = cn(t), argPackAdvance: 0, fromWireType: function () { }, toWireType: function (e, t) { } }) } function yo(e, t) { if (e == t) postMessage({cmd: "processQueuedMainThreadWork"}); else if (Se) postMessage({ targetThread: e, cmd: "processThreadQueue" }); else { var r = ft.pthreads[e], n = r && r.worker; if (!n) return; n.postMessage({cmd: "processThreadQueue"}) } return 1 } function wo(e) { return e || pn("Cannot use deleted val. handle = " + e), Lt[e].value } function _o(e, t) { var r = _t[e]; return void 0 === r && pn(t + " has unknown type " + Xn(e)), r } function bo(e, t, r) { e = wo(e), t = _o(t, "emval::as"); var n = [], o = uo(n); return $e[r >> 2] = o, t.toWireType(n, e) } function ko(e, t, r, n) { var o, a; (e = Ft[e])(t = wo(t), r = void 0 === (a = It[o = r]) ? cn(o) : a, null, n) } function To(e, t) { for (var r = function (e, t) { for (var r = new Array(e), n = 0; n < e; ++n) r[n] = _o($e[(t >> 2) + n], "parameter " + n); return r }(e, t), n = r[0], o = n.name + "_$" + r.slice(1).map((function (e) { return e.name })).join("_") + "$", a = ["retType"], i = [n], s = "", u = 0; u < e - 1; ++u) s += (0 !== u ? ", " : "") + "arg" + u, a.push("argType" + u), i.push(r[1 + u]); var c = "return function " + ln("methodCaller_" + o) + "(handle, name, destructors, args) {\n", l = 0; for (u = 0; u < e - 1; ++u) c += " var arg" + u + " = argType" + u + ".readValueFromPointer(args" + (l ? "+" + l : "") + ");\n", l += r[u + 1].argPackAdvance; c += " var rv = handle[name](" + s + ");\n"; for (u = 0; u < e - 1; ++u) r[u + 1].deleteObject && (c += " argType" + u + ".deleteObject(arg" + u + ");\n"); n.isVoid || (c += " return retType.toWireType(destructors, rv);\n"), c += "};\n", a.push(c); var d, f, p = to(Function, a).apply(null, i); return d = p, f = Ft.length, Ft.push(d), f } function Do(e) { e > 4 && (Lt[e].refcount += 1) } function So(e) { Jn(Lt[e].value), ao(e) } function Co(e, t) { return uo((e = _o(e, "_emval_take_value")).readValueFromPointer(t)) } function Oo() { Yr() } function Po() { return void 0 === Po.start && (Po.start = Date.now()), 1e3 * (Date.now() - Po.start) | 0 } function xo(e, t, r) { var n = function (e, t) { var r; Nt.length = 0, t >>= 2; for (; r = We[e++];) { var n = r < 105; n && 1 & t && t++, Nt.push(n ? Xe[t++ >> 1] : $e[t]), ++t } return Nt }(t, r); return lt[e].apply(null, n) } function Bo() { De || Cr("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread") } function Mo(e, t) { } function Ro(e, t, r) { if (e <= 0 || e > ze.length || !0 & e) return -28; if (Te) { if (Atomics.load($e, e >> 2) != t) return -6; var n = performance.now(), o = n + r; for (Atomics.exchange($e, br >> 2, e); ;) { if ((n = performance.now()) > o) return Atomics.exchange($e, br >> 2, 0), -73; if (0 == Atomics.exchange($e, br >> 2, 0)) break; if (lr(), Atomics.load($e, e >> 2) != t) return -6; Atomics.exchange($e, br >> 2, e) } return 0 } var a = Atomics.wait($e, e >> 2, t, r); if ("timed-out" === a) return -73; if ("not-equal" === a) return -6; if ("ok" === a) return 0; throw"Atomics.wait returned an unexpected value " + a } function Lo(e, t) { return (e >>> 0) + 4294967296 * t } function Io(e, t) { if (e <= 0) return e; var r = t <= 32 ? Math.abs(1 << t - 1) : Math.pow(2, t - 1); return e >= r && (t <= 32 || e > r) && (e = -2 * r + e), e } function Fo(e, t) { return e >= 0 ? e : t <= 32 ? 2 * Math.abs(1 << t - 1) + e : Math.pow(2, t) + e } function Uo(e) { if (!e || !e.callee || !e.callee.name) return [null, "", ""]; e.callee.toString(); var t = e.callee.name, r = "(", n = !0; for (var o in e) { var a = e[o]; n || (r += ", "), n = !1, r += "number" == typeof a || "string" == typeof a ? a : "(" + typeof a + ")" } r += ")"; var i = e.callee.caller; return n && (r = ""), [e = i ? i.arguments : [], t, r] } function No(e, t) { 24 & e && (t = t.replace(/\s+$/, ""), t += (t.length > 0 ? "\n" : "") + function (e) { var t = tn(), r = t.lastIndexOf("_emscripten_log"), n = t.lastIndexOf("_emscripten_get_callstack"), o = t.indexOf("\n", Math.max(r, n)) + 1; t = t.slice(o), 32 & e && Cr("EM_LOG_DEMANGLE is deprecated; ignoring"), 8 & e && "undefined" == typeof emscripten_source_map && (Cr('Source map information is not available, emscripten_log with EM_LOG_C_STACK will be ignored. Build with "--pre-js $EMSCRIPTEN/src/emscripten-source-map.min.js" linker flag to add source map loading to code.'), e ^= 8, e |= 16); var a = null; if (128 & e) for (a = Uo(arguments); a[1].indexOf("_emscripten_") >= 0;) a = Uo(a[0]); var i = t.split("\n"); t = ""; var s = new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"), u = new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"), c = new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)"); for (var l in i) { var d = i[l], f = "", p = "", h = 0, m = 0, A = c.exec(d); if (A && 5 == A.length) f = A[1], p = A[2], h = A[3], m = A[4]; else { if ((A = s.exec(d)) || (A = u.exec(d)), !(A && A.length >= 4)) { t += d + "\n"; continue } f = A[1], p = A[2], h = A[3], m = 0 | A[4] } var g = !1; if (8 & e) { var v = emscripten_source_map.originalPositionFor({line: h, column: m}); (g = v && v.source) && (64 & e && (v.source = v.source.substring(v.source.replace(/\\/g, "/").lastIndexOf("/") + 1)), t += " at " + f + " (" + v.source + ":" + v.line + ":" + v.column + ")\n") } (16 & e || !g) && (64 & e && (p = p.substring(p.replace(/\\/g, "/").lastIndexOf("/") + 1)), t += (g ? " = " + f : " at " + f) + " (" + p + ":" + h + ":" + m + ")\n"), 128 & e && a[0] && (a[1] == f && a[2].length > 0 && (t = t.replace(/\s+$/, ""), t += " with values: " + a[1] + a[2] + "\n"), a = Uo(a[0])) } return t.replace(/\s+$/, "") }(e)), 1 & e ? 4 & e ? console.error(t) : 2 & e ? console.warn(t) : 512 & e ? console.info(t) : 256 & e ? console.debug(t) : console.log(t) : 6 & e ? Me(t) : Be(t) } function jo(e, t, r) { No(e, Pr(function (e, t) { var r = e, n = t; function o(e) { var t; return n = function (e, t) { return "double" !== t && "i64" !== t || 7 & e && (e += 4), e }(n, e), "double" === e ? (t = Xe[n >> 3], n += 8) : "i64" == e ? (t = [$e[n >> 2], $e[n + 4 >> 2]], n += 8) : (e = "i32", t = $e[n >> 2], n += 4), t } for (var a, i, s, u, c = []; ;) { var l = r; if (0 === (a = ze[r >> 0])) break; if (i = ze[r + 1 >> 0], 37 == a) { var d = !1, f = !1, p = !1, h = !1, m = !1; e:for (; ;) { switch (i) { case 43: d = !0; break; case 45: f = !0; break; case 35: p = !0; break; case 48: if (h) break e; h = !0; break; case 32: m = !0; break; default: break e } r++, i = ze[r + 1 >> 0] } var A = 0; if (42 == i) A = o("i32"), r++, i = ze[r + 1 >> 0]; else for (; i >= 48 && i <= 57;) A = 10 * A + (i - 48), r++, i = ze[r + 1 >> 0]; var g, v = !1, E = -1; if (46 == i) { if (E = 0, v = !0, r++, 42 == (i = ze[r + 1 >> 0])) E = o("i32"), r++; else for (; ;) { var y = ze[r + 1 >> 0]; if (y < 48 || y > 57) break; E = 10 * E + (y - 48), r++ } i = ze[r + 1 >> 0] } switch (E < 0 && (E = 6, v = !1), String.fromCharCode(i)) { case"h": 104 == ze[r + 2 >> 0] ? (r++, g = 1) : g = 2; break; case"l": 108 == ze[r + 2 >> 0] ? (r++, g = 8) : g = 4; break; case"L": case"q": case"j": g = 8; break; case"z": case"t": case"I": g = 4; break; default: g = null } switch (g && r++, i = ze[r + 1 >> 0], String.fromCharCode(i)) { case"d": case"i": case"u": case"o": case"x": case"X": case"p": var w = 100 == i || 105 == i; s = o("i" + 8 * (g = g || 4)), 8 == g && (s = 117 == i ? (s[0] >>> 0) + 4294967296 * (s[1] >>> 0) : Lo(s[0], s[1])), g <= 4 && (s = (w ? Io : Fo)(s & Math.pow(256, g) - 1, 8 * g)); var _ = Math.abs(s), b = ""; if (100 == i || 105 == i) D = Io(s, 8 * g).toString(10); else if (117 == i) D = Fo(s, 8 * g).toString(10), s = Math.abs(s); else if (111 == i) D = (p ? "0" : "") + _.toString(8); else if (120 == i || 88 == i) { if (b = p && 0 != s ? "0x" : "", s < 0) { s = -s, D = (_ - 1).toString(16); for (var k = [], T = 0; T < D.length; T++) k.push((15 - parseInt(D[T], 16)).toString(16)); for (D = k.join(""); D.length < 2 * g;) D = "f" + D } else D = _.toString(16); 88 == i && (b = b.toUpperCase(), D = D.toUpperCase()) } else 112 == i && (0 === _ ? D = "(nil)" : (b = "0x", D = _.toString(16))); if (v) for (; D.length < E;) D = "0" + D; for (s >= 0 && (d ? b = "+" + b : m && (b = " " + b)), "-" == D.charAt(0) && (b = "-" + b, D = D.substr(1)); b.length + D.length < A;) f ? D += " " : h ? D = "0" + D : b = " " + b; (D = b + D).split("").forEach((function (e) { c.push(e.charCodeAt(0)) })); break; case"f": case"F": case"e": case"E": case"g": case"G": var D; if (s = o("double"), isNaN(s)) D = "nan", h = !1; else if (isFinite(s)) { var S = !1, C = Math.min(E, 20); if (103 == i || 71 == i) { S = !0, E = E || 1; var O = parseInt(s.toExponential(C).split("e")[1], 10); E > O && O >= -4 ? (i = (103 == i ? "f" : "F").charCodeAt(0), E -= O + 1) : (i = (103 == i ? "e" : "E").charCodeAt(0), E--), C = Math.min(E, 20) } 101 == i || 69 == i ? (D = s.toExponential(C), /[eE][-+]\d$/.test(D) && (D = D.slice(0, -1) + "0" + D.slice(-1))) : 102 != i && 70 != i || (D = s.toFixed(C), 0 === s && ((u = s) < 0 || 0 === u && 1 / u == -1 / 0) && (D = "-" + D)); var P = D.split("e"); if (S && !p) for (; P[0].length > 1 && -1 != P[0].indexOf(".") && ("0" == P[0].slice(-1) || "." == P[0].slice(-1));) P[0] = P[0].slice(0, -1); else for (p && -1 == D.indexOf(".") && (P[0] += "."); E > C++;) P[0] += "0"; D = P[0] + (P.length > 1 ? "e" + P[1] : ""), 69 == i && (D = D.toUpperCase()), s >= 0 && (d ? D = "+" + D : m && (D = " " + D)) } else D = (s < 0 ? "-" : "") + "inf", h = !1; for (; D.length < A;) f ? D += " " : D = !h || "-" != D[0] && "+" != D[0] ? (h ? "0" : " ") + D : D[0] + "0" + D.slice(1); i < 97 && (D = D.toUpperCase()), D.split("").forEach((function (e) { c.push(e.charCodeAt(0)) })); break; case"s": var x = o("i8*"), B = x ? er(x) : "(null)".length; if (v && (B = Math.min(B, E)), !f) for (; B < A--;) c.push(32); if (x) for (T = 0; T < B; T++) c.push(We[x++ >> 0]); else c = c.concat(ga("(null)".substr(0, B), !0)); if (f) for (; B < A--;) c.push(32); break; case"c": for (f && c.push(o("i8")); --A > 0;) c.push(32); f || c.push(o("i8")); break; case"n": var M = o("i32*"); $e[M >> 2] = c.length; break; case"%": c.push(a); break; default: for (T = l; T < r + 2; T++) c.push(ze[T >> 0]) } r += 2 } else c.push(a), r += 1 } return c }(t, r), 0)) } function Go(e, t, r) { We.copyWithin(e, t, t + r) } function zo(e, t) { for (var r = arguments.length - 2, n = gr(), o = r, a = Er(8 * o), i = a >> 3, s = 0; s < r; s++) { var u = arguments[2 + s]; Xe[i + s] = u } var c = hr(e, o, a, t); return vr(n), c } function Wo(e, t, r) { Ut.length = t; for (var n = r >> 3, o = 0; o < t; o++) Ut[o] = Xe[n + o]; return (e < 0 ? lt[-e - 1] : Xt[e]).apply(null, Ut) } function Yo(e) { Yr("OOM") } function Ho(e, t, r, n) { var o, a, i, s = gr(), u = Er(12), c = 0; t && (a = Rr(o = t) + 1, i = Jt(a), Mr(o, i, a), c = i), $e[u >> 2] = c, $e[u + 4 >> 2] = r, $e[u + 8 >> 2] = n, mr(0, e, 657457152, 0, c, u), vr(s) } function $o(e) { var t; return e = (t = e) > 2 ? xr(t) : t, Gt[e] || ("undefined" != typeof document ? document.querySelector(e) : void 0) } function Vo(e) { return $o(e) } function Qo(e, t, r) { var n = Vo(e); if (!n) return -4; if (n.canvasSharedPtr && ($e[n.canvasSharedPtr >> 2] = t, $e[n.canvasSharedPtr + 4 >> 2] = r), !n.offscreenCanvas && n.controlTransferredOffscreen) return n.canvasSharedPtr ? (function (e, t, r, n) { Ho(e, t = t ? xr(t) : "", r, n) }($e[n.canvasSharedPtr + 8 >> 2], e, t, r), 1) : -4; n.offscreenCanvas && (n = n.offscreenCanvas); var o = !1; if (n.GLctxObject && n.GLctxObject.GLctx) { var a = n.GLctxObject.GLctx.getParameter(2978); o = 0 === a[0] && 0 === a[1] && a[2] === n.width && a[3] === n.height } return n.width = t, n.height = r, o && n.GLctxObject.GLctx.viewport(0, 0, t, r), 0 } function Xo(e, t, r) { return Se ? zo(3, 1, e, t, r) : Qo(e, t, r) } function qo(e, t, r) { return Vo(e) ? Qo(e, t, r) : Xo(e, t, r) } function Zo(e) { } function Ko(e, t) { return r = e, o = $e[(n = t >> 2) + 6], a = { alpha: !!$e[n + 0], depth: !!$e[n + 1], stencil: !!$e[n + 2], antialias: !!$e[n + 3], premultipliedAlpha: !!$e[n + 4], preserveDrawingBuffer: !!$e[n + 5], powerPreference: Wt[o], failIfMajorPerformanceCaveat: !!$e[n + 7], majorVersion: $e[n + 8], minorVersion: $e[n + 9], enableExtensionsByDefault: $e[n + 10], explicitSwapControl: $e[n + 11], proxyContextToMainThread: $e[n + 12], renderViaOffscreenBackBuffer: $e[n + 13] }, (i = Vo(r)) ? a.explicitSwapControl ? 0 : zt.createContext(i, a) : 0; var r, n, o, a, i } function Jo() { if (!Jo.strings) { var e = { USER: "web_user", LOGNAME: "web_user", PATH: "/", PWD: "/", HOME: "/home/web_user", LANG: ("object" == typeof navigator && navigator.languages && navigator.languages[0] || "C").replace("-", "_") + ".UTF-8", _: be || "./this.program" }; for (var t in Yt) e[t] = Yt[t]; var r = []; for (var t in e) r.push(t + "=" + e[t]); Jo.strings = r } return Jo.strings } function ea(e, t) { if (Se) return zo(4, 1, e, t); try { var r = 0; return Jo().forEach((function (n, o) { var a = t + r; $e[e + 4 * o >> 2] = a, function (e, t, r) { for (var n = 0; n < e.length; ++n) ze[t++ >> 0] = e.charCodeAt(n); r || (ze[t >> 0] = 0) }(n, a), r += n.length + 1 })), 0 } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno } } function ta(e, t) { if (Se) return zo(5, 1, e, t); try { var r = Jo(); $e[e >> 2] = r.length; var n = 0; return r.forEach((function (e) { n += e.length + 1 })), $e[t >> 2] = n, 0 } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno } } function ra(e) { if (Se) return zo(6, 1, e); try { var t = Et.getStreamFromFD(e); return vt.close(t), 0 } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno } } function na(e, t) { if (Se) return zo(7, 1, e, t); try { var r = Et.getStreamFromFD(e), n = r.tty ? 2 : vt.isDir(r.mode) ? 3 : vt.isLink(r.mode) ? 7 : 4; return ze[t >> 0] = n, 0 } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno } } function oa(e, t, r, n) { if (Se) return zo(8, 1, e, t, r, n); try { var o = Et.getStreamFromFD(e), a = Et.doReadv(o, t, r); return $e[n >> 2] = a, 0 } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno } } function aa(e, t, r, n, o) { if (Se) return zo(9, 1, e, t, r, n, o); try { var a = Et.getStreamFromFD(e), i = 4294967296 * r + (t >>> 0), s = 9007199254740992; return i <= -s || i >= s ? -61 : (vt.llseek(a, i, n), ct = [a.position >>> 0, (ut = a.position, +Math.abs(ut) >= 1 ? ut > 0 ? (0 | Math.min(+Math.floor(ut / 4294967296), 4294967295)) >>> 0 : ~~+Math.ceil((ut - +(~~ut >>> 0)) / 4294967296) >>> 0 : 0)], $e[o >> 2] = ct[0], $e[o + 4 >> 2] = ct[1], a.getdents && 0 === i && 0 === n && (a.getdents = null), 0) } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno } } function ia(e, t, r, n) { if (Se) return zo(10, 1, e, t, r, n); try { var o = Et.getStreamFromFD(e), a = Et.doWritev(o, t, r); return $e[n >> 2] = a, 0 } catch (e) { return void 0 !== vt && e instanceof vt.ErrnoError || Yr(e), e.errno } } function sa(e) { var t = Date.now(); return $e[e >> 2] = t / 1e3 | 0, $e[e + 4 >> 2] = t % 1e3 * 1e3 | 0, 0 } function ua() { if (Se) return zo(11, 1); if (!ua.called) { ua.called = !0; var e = (new Date).getFullYear(), t = new Date(e, 0, 1), r = new Date(e, 6, 1), n = t.getTimezoneOffset(), o = r.getTimezoneOffset(), a = Math.max(n, o); $e[ir() >> 2] = 60 * a, $e[ar() >> 2] = Number(n != o); var i = l(t), s = l(r), u = Gr(i), c = Gr(s); o < n ? ($e[or() >> 2] = u, $e[or() + 4 >> 2] = c) : ($e[or() >> 2] = c, $e[or() + 4 >> 2] = u) } function l(e) { var t = e.toTimeString().match(/\(([A-Za-z ]+)\)$/); return t ? t[1] : "GMT" } } function ca(e) { var t = ft.threadExitHandlers.pop(); e && t() } function la(e, t) { ft.threadExitHandlers.push((function () { Ze.get(e)(t) })) } function da(e) { if (Se) throw"Internal Error! spawnThread() can only ever be called from main application thread!"; var t = ft.getNewWorker(); if (void 0 !== t.pthread) throw"Internal error!"; if (!e.pthread_ptr) throw"Internal error, no pthread ptr!"; ft.runningWorkers.push(t); for (var r = Jt(512), n = 0; n < 128; ++n) $e[r + 4 * n >> 2] = 0; var o = e.stackBase + e.stackSize, a = ft.pthreads[e.pthread_ptr] = { worker: t, stackBase: e.stackBase, stackSize: e.stackSize, allocatedOwnStack: e.allocatedOwnStack, threadInfoStruct: e.pthread_ptr }, i = a.threadInfoStruct >> 2; Atomics.store(Ve, i + 16, e.detached), Atomics.store(Ve, i + 25, r), Atomics.store(Ve, i + 10, a.threadInfoStruct), Atomics.store(Ve, i + 20, e.stackSize), Atomics.store(Ve, i + 19, o), Atomics.store(Ve, i + 26, e.stackSize), Atomics.store(Ve, i + 28, o), Atomics.store(Ve, i + 29, e.detached); var s = nr() + 40; Atomics.store(Ve, i + 43, s), t.pthread = a; var u = { cmd: "run", start_routine: e.startRoutine, arg: e.arg, threadInfoStruct: e.pthread_ptr, stackBase: e.stackBase, stackSize: e.stackSize }; t.runPthread = function () { u.time = performance.now(), t.postMessage(u, e.transferList) }, t.loaded && (t.runPthread(), delete t.runPthread) } function fa(e, t, r, n) { if ("undefined" == typeof SharedArrayBuffer) return Me("Current environment does not support SharedArrayBuffer, pthreads are not available!"), 6; if (!e) return Me("pthread_create called with a null thread pointer!"), 28; var o = []; if (Se && 0 === o.length) return pr(687865856, e, t, r, n); var a = 0, i = 0, s = 0; t && -1 != t ? (a = $e[t >> 2], a += 81920, i = $e[t + 8 >> 2], s = 0 !== $e[t + 12 >> 2]) : a = 2097152; var u = 0 == i; u ? i = wr(16, a) : Or((i -= a) > 0); for (var c = Jt(228), l = 0; l < 57; ++l) Ve[(c >> 2) + l] = 0; $e[e >> 2] = c, $e[c + 12 >> 2] = c; var d = c + 152; $e[d >> 2] = d; var f = { stackBase: i, stackSize: a, allocatedOwnStack: u, detached: s, startRoutine: r, pthread_ptr: c, arg: n, transferList: o }; return Se ? (f.cmd = "spawnThread", postMessage(f, o)) : da(f), 0 } function pa() { if (Se) { var e = sr(); if (e) if (!Atomics.load(Ve, e + 56 >> 2)) if (2 == Atomics.load(Ve, e + 0 >> 2)) throw"Canceled!" } } function ha(e, t) { return function (e, t, r) { if (!e) return Me("pthread_join attempted on a null thread pointer!"), dt.ESRCH; if (Se && sr() == e) return Me("PThread " + e + " is attempting to join to itself!"), dt.EDEADLK; if (!Se && ur() == e) return Me("Main thread " + e + " is attempting to join to itself!"), dt.EDEADLK; if ($e[e + 12 >> 2] !== e) return Me("pthread_join attempted on thread " + e + ", which does not point to a valid thread, or does not exist anymore!"), dt.ESRCH; if (Atomics.load(Ve, e + 64 >> 2)) return Me("Attempted to join thread " + e + ", which was already detached!"), dt.EINVAL; for (r && Bo(); ;) { var n = Atomics.load(Ve, e + 0 >> 2); if (1 == n) { var o = Atomics.load(Ve, e + 4 >> 2); return t && ($e[t >> 2] = o), Atomics.store(Ve, e + 64 >> 2, 1), Se ? postMessage({ cmd: "cleanupThread", thread: e }) : Zr(e), 0 } if (!r) return dt.EBUSY; pa(), Se || lr(), Ro(e + 0, n, Se ? 100 : 1) } }(e, t, !0) } function ma(e) { Le(0 | e) } function Aa(e) { if (Se) return zo(12, 1, e); switch (e) { case 30: return 16384; case 85: return We.length / 16384; case 132: case 133: case 12: case 137: case 138: case 15: case 235: case 16: case 17: case 18: case 19: case 20: case 149: case 13: case 10: case 236: case 153: case 9: case 21: case 22: case 159: case 154: case 14: case 77: case 78: case 139: case 82: case 68: case 67: case 164: case 11: case 29: case 47: case 48: case 95: case 52: case 51: case 46: return 200809; case 27: case 246: case 127: case 128: case 23: case 24: case 160: case 161: case 181: case 182: case 242: case 183: case 184: case 243: case 244: case 245: case 165: case 178: case 179: case 49: case 50: case 168: case 169: case 175: case 170: case 171: case 172: case 97: case 76: case 32: case 173: case 35: case 80: case 81: case 79: return -1; case 176: case 177: case 7: case 155: case 8: case 157: case 125: case 126: case 92: case 93: case 129: case 130: case 131: case 94: case 91: return 1; case 74: case 60: case 69: case 70: case 4: return 1024; case 31: case 42: case 72: return 32; case 87: case 26: case 33: return 2147483647; case 34: case 1: return 47839; case 38: case 36: return 99; case 43: case 37: return 2048; case 0: return 2097152; case 3: return 65536; case 28: return 32768; case 44: return 32767; case 75: return 16384; case 39: return 1e3; case 89: return 700; case 71: return 256; case 40: return 255; case 2: return 100; case 180: return 64; case 25: return 20; case 5: return 16; case 6: return 6; case 73: return 4; case 84: return "object" == typeof navigator && navigator.hardwareConcurrency || 1 } return nn(28), -1 } function ga(e, t, r) { var n = r > 0 ? r : Rr(e) + 1, o = new Array(n), a = Br(e, o, 0, o.length); return t && (o.length = a), o } function va(e) { this.name = "ExitStatus", this.message = "Program terminated with exit(" + e + ")", this.status = e } function Ea(e) { function t() { kr || (kr = !0, Ee.calledRun = !0, je || (!0, Ee.noFSInit || vt.init.initialized || vt.init(), At.init(), Xr(Je), Se || (vt.ignorePermissions = !1, Xr(et)), Ee.onRuntimeInitialized && Ee.onRuntimeInitialized(), function () { if (!Se) { if (Ee.postRun) for ("function" == typeof Ee.postRun && (Ee.postRun = [Ee.postRun]); Ee.postRun.length;) e = Ee.postRun.shift(), rt.unshift(e); var e; Xr(rt) } }())) } e = e || _e, nt > 0 || (Se ? postMessage({cmd: "loaded"}) : (!function () { if (!Se) { if (Ee.preRun) for ("function" == typeof Ee.preRun && (Ee.preRun = [Ee.preRun]); Ee.preRun.length;) e = Ee.preRun.shift(), Ke.unshift(e); var e; Xr(Ke) } }(), nt > 0 || (Ee.setStatus ? (Ee.setStatus("Running..."), setTimeout((function () { setTimeout((function () { Ee.setStatus("") }), 1), t() }), 1)) : t()))) } function ya(e, t) { if (!t || !Fe || 0 !== e) { if (!t && Se) throw postMessage({cmd: "exitProcess", returnCode: e}), new va(e); Fe || (ft.terminateAllThreads(), e, Se || !0, Ee.onExit && Ee.onExit(e), je = !0), ke(e, new va(e)) } } function wa() { for (we in {}, ye = {}, Ee = void 0 !== Ee ? Ee : {}) Ee.hasOwnProperty(we) && (ye[we] = Ee[we]); for (we in _e = [], be = "./this.program", ke = function (e, t) { throw t }, Te = !1, De = !0, !1, (Se = Ee.ENVIRONMENT_IS_PTHREAD || !1) && (Ge = Ee.buffer), Ce = "undefined" != typeof document && document.currentScript ? document.currentScript.src : void 0, De && (Ce = self.location.href), Oe = "", (Te || De) && (De ? Oe = self.location.href : "undefined" != typeof document && document.currentScript && (Oe = document.currentScript.src), Oe = 0 !== Oe.indexOf("blob:") ? Oe.substr(0, Oe.lastIndexOf("/") + 1) : "", Pe = function (e) { var t = new XMLHttpRequest; return t.open("GET", e, !1), t.send(null), t.responseText }, De && (xe = function (e) { var t = new XMLHttpRequest; return t.open("GET", e, !1), t.responseType = "arraybuffer", t.send(null), new Uint8Array(t.response) }), function (e, t, r) { var n = new XMLHttpRequest; n.open("GET", e, !0), n.responseType = "arraybuffer", n.onload = function () { 200 == n.status || 0 == n.status && n.response ? t(n.response) : r() }, n.onerror = r, n.send(null) }, function (e) { document.title = e }), Be = Ee.print || console.log.bind(console), Me = Ee.printErr || console.warn.bind(console), ye) ye.hasOwnProperty(we) && (Ee[we] = ye[we]); if (ye = null, Ee.arguments && (_e = Ee.arguments), Ee.thisProgram && (be = Ee.thisProgram), Ee.quit && (ke = Ee.quit), Re = 16, 0, Le = function (e) { e }, Atomics.load, Atomics.store, Atomics.compareExchange, Ee.wasmBinary && (Ie = Ee.wasmBinary), Fe = Ee.noExitRuntime || !0, "object" != typeof WebAssembly && Yr("no native wasm support detected"), je = !1, qe = Ee.INITIAL_MEMORY || 67108864, Se) Ue = Ee.wasmMemory, Ge = Ee.buffer; else if (Ee.wasmMemory) Ue = Ee.wasmMemory; else if (!((Ue = new WebAssembly.Memory({ initial: qe / 65536, maximum: qe / 65536, shared: !0 })).buffer instanceof SharedArrayBuffer)) throw Me("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"), Error("bad memory"); var t; if (Ue && (Ge = Ue.buffer), qe = Ge.byteLength, Ge = t = Ge, Ee.HEAP8 = ze = new Int8Array(t), Ee.HEAP16 = Ye = new Int16Array(t), Ee.HEAP32 = $e = new Int32Array(t), Ee.HEAPU8 = We = new Uint8Array(t), Ee.HEAPU16 = He = new Uint16Array(t), Ee.HEAPU32 = Ve = new Uint32Array(t), Ee.HEAPF32 = Qe = new Float32Array(t), Ee.HEAPF64 = Xe = new Float64Array(t), Ke = [], Je = [], et = [], tt = [], rt = [], !1, !1, Se || Je.push({ func: function () { Zt() } }), Se && !0, nt = 0, ot = null, at = null, Ee.preloadedImages = {}, Ee.preloadedAudios = {}, it = "data:application/octet-stream;base64,", Hr(st = "ff.wasm") || (st = Sr(st)), lt = { 155132: function () { throw"Canceled!" }, 155395: function (e, t) { setTimeout((function () { fr(e, t) }), 0) } }, dt = { EPERM: 63, ENOENT: 44, ESRCH: 71, EINTR: 27, EIO: 29, ENXIO: 60, E2BIG: 1, ENOEXEC: 45, EBADF: 8, ECHILD: 12, EAGAIN: 6, EWOULDBLOCK: 6, ENOMEM: 48, EACCES: 2, EFAULT: 21, ENOTBLK: 105, EBUSY: 10, EEXIST: 20, EXDEV: 75, ENODEV: 43, ENOTDIR: 54, EISDIR: 31, EINVAL: 28, ENFILE: 41, EMFILE: 33, ENOTTY: 59, ETXTBSY: 74, EFBIG: 22, ENOSPC: 51, ESPIPE: 70, EROFS: 69, EMLINK: 34, EPIPE: 64, EDOM: 18, ERANGE: 68, ENOMSG: 49, EIDRM: 24, ECHRNG: 106, EL2NSYNC: 156, EL3HLT: 107, EL3RST: 108, ELNRNG: 109, EUNATCH: 110, ENOCSI: 111, EL2HLT: 112, EDEADLK: 16, ENOLCK: 46, EBADE: 113, EBADR: 114, EXFULL: 115, ENOANO: 104, EBADRQC: 103, EBADSLT: 102, EDEADLOCK: 16, EBFONT: 101, ENOSTR: 100, ENODATA: 116, ETIME: 117, ENOSR: 118, ENONET: 119, ENOPKG: 120, EREMOTE: 121, ENOLINK: 47, EADV: 122, ESRMNT: 123, ECOMM: 124, EPROTO: 65, EMULTIHOP: 36, EDOTDOT: 125, EBADMSG: 9, ENOTUNIQ: 126, EBADFD: 127, EREMCHG: 128, ELIBACC: 129, ELIBBAD: 130, ELIBSCN: 131, ELIBMAX: 132, ELIBEXEC: 133, ENOSYS: 52, ENOTEMPTY: 55, ENAMETOOLONG: 37, ELOOP: 32, EOPNOTSUPP: 138, EPFNOSUPPORT: 139, ECONNRESET: 15, ENOBUFS: 42, EAFNOSUPPORT: 5, EPROTOTYPE: 67, ENOTSOCK: 57, ENOPROTOOPT: 50, ESHUTDOWN: 140, ECONNREFUSED: 14, EADDRINUSE: 3, ECONNABORTED: 13, ENETUNREACH: 40, ENETDOWN: 38, ETIMEDOUT: 73, EHOSTDOWN: 142, EHOSTUNREACH: 23, EINPROGRESS: 26, EALREADY: 7, EDESTADDRREQ: 17, EMSGSIZE: 35, EPROTONOSUPPORT: 66, ESOCKTNOSUPPORT: 137, EADDRNOTAVAIL: 4, ENETRESET: 39, EISCONN: 30, ENOTCONN: 53, ETOOMANYREFS: 141, EUSERS: 136, EDQUOT: 19, ESTALE: 72, ENOTSUP: 138, ENOMEDIUM: 148, EILSEQ: 25, EOVERFLOW: 61, ECANCELED: 11, ENOTRECOVERABLE: 56, EOWNERDEAD: 62, ESTRPIPE: 135 }, Ee._emscripten_futex_wake = qr, ft = { unusedWorkers: [], runningWorkers: [], initMainThreadBlock: function () { }, initRuntime: function () { for (var e = Jt(228), t = 0; t < 57; ++t) Ve[e / 4 + t] = 0; $e[e + 12 >> 2] = e; var r = e + 152; $e[r >> 2] = r; var n = Jt(512); for (t = 0; t < 128; ++t) Ve[n / 4 + t] = 0; Atomics.store(Ve, e + 100 >> 2, n), Atomics.store(Ve, e + 40 >> 2, e), Ar(e, !De, 1), dr(e) }, initWorker: function () { }, pthreads: {}, threadExitHandlers: [], setThreadStatus: function () { }, runExitHandlers: function () { for (; ft.threadExitHandlers.length > 0;) ft.threadExitHandlers.pop()(); Se && sr() && cr() }, threadExit: function (e) { var t = sr(); t && (Atomics.store(Ve, t + 4 >> 2, e), Atomics.store(Ve, t + 0 >> 2, 1), Atomics.store(Ve, t + 56 >> 2, 1), Atomics.store(Ve, t + 60 >> 2, 0), ft.runExitHandlers(), qr(t + 0, 2147483647), Ar(0, 0, 0), Se && postMessage({cmd: "exit"})) }, threadCancel: function () { ft.runExitHandlers(); var e = sr(); Atomics.store(Ve, e + 4 >> 2, -1), Atomics.store(Ve, e + 0 >> 2, 1), qr(e + 0, 2147483647), Ar(0, 0, 0), postMessage({cmd: "cancelDone"}) }, terminateAllThreads: function () { for (var e in ft.pthreads) { (n = ft.pthreads[e]) && n.worker && ft.returnWorkerToPool(n.worker) } ft.pthreads = {}; for (var t = 0; t < ft.unusedWorkers.length; ++t) { (r = ft.unusedWorkers[t]).terminate() } ft.unusedWorkers = []; for (t = 0; t < ft.runningWorkers.length; ++t) { var r, n = (r = ft.runningWorkers[t]).pthread; ft.freeThreadData(n), r.terminate() } ft.runningWorkers = [] }, freeThreadData: function (e) { if (e) { if (e.threadInfoStruct) { var t = $e[e.threadInfoStruct + 100 >> 2]; $e[e.threadInfoStruct + 100 >> 2] = 0, Kt(t), Kt(e.threadInfoStruct) } e.threadInfoStruct = 0, e.allocatedOwnStack && e.stackBase && Kt(e.stackBase), e.stackBase = 0, e.worker && (e.worker.pthread = null) } }, returnWorkerToPool: function (e) { ft.runWithoutMainThreadQueuedCalls((function () { delete ft.pthreads[e.pthread.threadInfoStruct], ft.unusedWorkers.push(e), ft.runningWorkers.splice(ft.runningWorkers.indexOf(e), 1), ft.freeThreadData(e.pthread), e.pthread = void 0 })) }, runWithoutMainThreadQueuedCalls: function (e) { $e[_r >> 2] = 0; try { e() } finally { $e[_r >> 2] = 1 } }, receiveObjectTransfer: function (e) { }, loadWasmModuleToWorker: function (e, t) { e.onmessage = function (r) { var n = r.data, o = n.cmd; if (e.pthread && (ft.currentProxiedOperationCallerThread = e.pthread.threadInfoStruct), n.targetThread && n.targetThread != sr()) { var a = ft.pthreads[n.targetThread]; return a ? a.worker.postMessage(r.data, n.transferList) : console.error('Internal error! Worker sent a message "' + o + '" to target pthread ' + n.targetThread + ", but that thread no longer exists!"), void (ft.currentProxiedOperationCallerThread = void 0) } if ("processQueuedMainThreadWork" === o) lr(); else if ("spawnThread" === o) da(r.data); else if ("cleanupThread" === o) Zr(n.thread); else if ("killThread" === o) !function (e) { if (Se) throw"Internal Error! killThread() can only ever be called from main application thread!"; if (!e) throw"Internal Error! Null pthread_ptr in killThread!"; $e[e + 12 >> 2] = 0; var t = ft.pthreads[e]; t.worker.terminate(), ft.freeThreadData(t), ft.runningWorkers.splice(ft.runningWorkers.indexOf(t.worker), 1), t.worker.pthread = void 0 }(n.thread); else if ("cancelThread" === o) !function (e) { if (Se) throw"Internal Error! cancelThread() can only ever be called from main application thread!"; if (!e) throw"Internal Error! Null pthread_ptr in cancelThread!"; ft.pthreads[e].worker.postMessage({cmd: "cancel"}) }(n.thread); else if ("loaded" === o) e.loaded = !0, t && t(e), e.runPthread && (e.runPthread(), delete e.runPthread); else if ("print" === o) Be("Thread " + n.threadId + ": " + n.text); else if ("printErr" === o) Me("Thread " + n.threadId + ": " + n.text); else if ("alert" === o) alert("Thread " + n.threadId + ": " + n.text); else if ("exit" === o) { e.pthread && Atomics.load(Ve, e.pthread.threadInfoStruct + 64 >> 2) && ft.returnWorkerToPool(e) } else if ("exitProcess" === o) try { ya(n.returnCode) } catch (r) { if (r instanceof va) return; throw r } else "cancelDone" === o ? ft.returnWorkerToPool(e) : "objectTransfer" === o ? ft.receiveObjectTransfer(r.data) : "setimmediate" === r.data.target ? e.postMessage(r.data) : Me("worker sent an unknown command " + o); ft.currentProxiedOperationCallerThread = void 0 }, e.onerror = function (e) { Me("pthread sent an error! " + e.filename + ":" + e.lineno + ": " + e.message) }, e.postMessage({cmd: "load", urlOrBlob: Ee.mainScriptUrlOrBlob || Ce, wasmMemory: Ue, wasmModule: Ne}) }, allocateUnusedWorker: function () { var e = Sr("ff.worker.js"); ft.unusedWorkers.push(new Worker(e)) }, getNewWorker: function () { return 0 == ft.unusedWorkers.length && (ft.allocateUnusedWorker(), ft.loadWasmModuleToWorker(ft.unusedWorkers[0])), ft.unusedWorkers.length > 0 ? ft.unusedWorkers.pop() : null }, busySpinWait: function (e) { for (var t = performance.now() + e; performance.now() < t;) ; } }, Ee.establishStackSpace = Kr, Ee.getNoExitRuntime = Jr, Ee.invokeEntryPoint = en, pt = Se ? function () { return performance.now() - Ee.__performance_now_clock_drift } : function () { return performance.now() }, ht = { splitPath: function (e) { return /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1) }, normalizeArray: function (e, t) { for (var r = 0, n = e.length - 1; n >= 0; n--) { var o = e[n]; "." === o ? e.splice(n, 1) : ".." === o ? (e.splice(n, 1), r++) : r && (e.splice(n, 1), r--) } if (t) for (; r; r--) e.unshift(".."); return e }, normalize: function (e) { var t = "/" === e.charAt(0), r = "/" === e.substr(-1); return (e = ht.normalizeArray(e.split("/").filter((function (e) { return !!e })), !t).join("/")) || t || (e = "."), e && r && (e += "/"), (t ? "/" : "") + e }, dirname: function (e) { var t = ht.splitPath(e), r = t[0], n = t[1]; return r || n ? (n && (n = n.substr(0, n.length - 1)), r + n) : "." }, basename: function (e) { if ("/" === e) return "/"; var t = (e = (e = ht.normalize(e)).replace(/\/$/, "")).lastIndexOf("/"); return -1 === t ? e : e.substr(t + 1) }, extname: function (e) { return ht.splitPath(e)[3] }, join: function () { var e = Array.prototype.slice.call(arguments, 0); return ht.normalize(e.join("/")) }, join2: function (e, t) { return ht.normalize(e + "/" + t) } }, mt = { resolve: function () { for (var e = "", t = !1, r = arguments.length - 1; r >= -1 && !t; r--) { var n = r >= 0 ? arguments[r] : vt.cwd(); if ("string" != typeof n) throw new TypeError("Arguments to path.resolve must be strings"); if (!n) return ""; e = n + "/" + e, t = "/" === n.charAt(0) } return (t ? "/" : "") + (e = ht.normalizeArray(e.split("/").filter((function (e) { return !!e })), !t).join("/")) || "." }, relative: function (e, t) { function r(e) { for (var t = 0; t < e.length && "" === e[t]; t++) ; for (var r = e.length - 1; r >= 0 && "" === e[r]; r--) ; return t > r ? [] : e.slice(t, r - t + 1) } e = mt.resolve(e).substr(1), t = mt.resolve(t).substr(1); for (var n = r(e.split("/")), o = r(t.split("/")), a = Math.min(n.length, o.length), i = a, s = 0; s < a; s++) if (n[s] !== o[s]) { i = s; break } var u = []; for (s = i; s < n.length; s++) u.push(".."); return (u = u.concat(o.slice(i))).join("/") } }, At = { ttys: [], init: function () { }, shutdown: function () { }, register: function (e, t) { At.ttys[e] = {input: [], output: [], ops: t}, vt.registerDevice(e, At.stream_ops) }, stream_ops: { open: function (e) { var t = At.ttys[e.node.rdev]; if (!t) throw new vt.ErrnoError(43); e.tty = t, e.seekable = !1 }, close: function (e) { e.tty.ops.flush(e.tty) }, flush: function (e) { e.tty.ops.flush(e.tty) }, read: function (e, t, r, n, o) { if (!e.tty || !e.tty.ops.get_char) throw new vt.ErrnoError(60); for (var a = 0, i = 0; i < n; i++) { var s; try { s = e.tty.ops.get_char(e.tty) } catch (e) { throw new vt.ErrnoError(29) } if (void 0 === s && 0 === a) throw new vt.ErrnoError(6); if (null == s) break; a++, t[r + i] = s } return a && (e.node.timestamp = Date.now()), a }, write: function (e, t, r, n, o) { if (!e.tty || !e.tty.ops.put_char) throw new vt.ErrnoError(60); try { for (var a = 0; a < n; a++) e.tty.ops.put_char(e.tty, t[r + a]) } catch (e) { throw new vt.ErrnoError(29) } return n && (e.node.timestamp = Date.now()), a } }, default_tty_ops: { get_char: function (e) { if (!e.input.length) { var t = null; if ("undefined" != typeof window && "function" == typeof window.prompt ? null !== (t = window.prompt("Input: ")) && (t += "\n") : "function" == typeof readline && null !== (t = readline()) && (t += "\n"), !t) return null; e.input = ga(t, !0) } return e.input.shift() }, put_char: function (e, t) { null === t || 10 === t ? (Be(Pr(e.output, 0)), e.output = []) : 0 != t && e.output.push(t) }, flush: function (e) { e.output && e.output.length > 0 && (Be(Pr(e.output, 0)), e.output = []) } }, default_tty1_ops: { put_char: function (e, t) { null === t || 10 === t ? (Me(Pr(e.output, 0)), e.output = []) : 0 != t && e.output.push(t) }, flush: function (e) { e.output && e.output.length > 0 && (Me(Pr(e.output, 0)), e.output = []) } } }, gt = { ops_table: null, mount: function (e) { return gt.createNode(null, "/", 16895, 0) }, createNode: function (e, t, r, n) { if (vt.isBlkdev(r) || vt.isFIFO(r)) throw new vt.ErrnoError(63); gt.ops_table || (gt.ops_table = { dir: { node: { getattr: gt.node_ops.getattr, setattr: gt.node_ops.setattr, lookup: gt.node_ops.lookup, mknod: gt.node_ops.mknod, rename: gt.node_ops.rename, unlink: gt.node_ops.unlink, rmdir: gt.node_ops.rmdir, readdir: gt.node_ops.readdir, symlink: gt.node_ops.symlink }, stream: {llseek: gt.stream_ops.llseek} }, file: { node: {getattr: gt.node_ops.getattr, setattr: gt.node_ops.setattr}, stream: { llseek: gt.stream_ops.llseek, read: gt.stream_ops.read, write: gt.stream_ops.write, allocate: gt.stream_ops.allocate, mmap: gt.stream_ops.mmap, msync: gt.stream_ops.msync } }, link: { node: {getattr: gt.node_ops.getattr, setattr: gt.node_ops.setattr, readlink: gt.node_ops.readlink}, stream: {} }, chrdev: {node: {getattr: gt.node_ops.getattr, setattr: gt.node_ops.setattr}, stream: vt.chrdev_stream_ops} }); var o = vt.createNode(e, t, r, n); return vt.isDir(o.mode) ? (o.node_ops = gt.ops_table.dir.node, o.stream_ops = gt.ops_table.dir.stream, o.contents = {}) : vt.isFile(o.mode) ? (o.node_ops = gt.ops_table.file.node, o.stream_ops = gt.ops_table.file.stream, o.usedBytes = 0, o.contents = null) : vt.isLink(o.mode) ? (o.node_ops = gt.ops_table.link.node, o.stream_ops = gt.ops_table.link.stream) : vt.isChrdev(o.mode) && (o.node_ops = gt.ops_table.chrdev.node, o.stream_ops = gt.ops_table.chrdev.stream), o.timestamp = Date.now(), e && (e.contents[t] = o, e.timestamp = o.timestamp), o }, getFileDataAsTypedArray: function (e) { return e.contents ? e.contents.subarray ? e.contents.subarray(0, e.usedBytes) : new Uint8Array(e.contents) : new Uint8Array(0) }, expandFileStorage: function (e, t) { var r = e.contents ? e.contents.length : 0; if (!(r >= t)) { t = Math.max(t, r * (r < 1048576 ? 2 : 1.125) >>> 0), 0 != r && (t = Math.max(t, 256)); var n = e.contents; e.contents = new Uint8Array(t), e.usedBytes > 0 && e.contents.set(n.subarray(0, e.usedBytes), 0) } }, resizeFileStorage: function (e, t) { if (e.usedBytes != t) if (0 == t) e.contents = null, e.usedBytes = 0; else { var r = e.contents; e.contents = new Uint8Array(t), r && e.contents.set(r.subarray(0, Math.min(t, e.usedBytes))), e.usedBytes = t } }, node_ops: { getattr: function (e) { var t = {}; return t.dev = vt.isChrdev(e.mode) ? e.id : 1, t.ino = e.id, t.mode = e.mode, t.nlink = 1, t.uid = 0, t.gid = 0, t.rdev = e.rdev, vt.isDir(e.mode) ? t.size = 4096 : vt.isFile(e.mode) ? t.size = e.usedBytes : vt.isLink(e.mode) ? t.size = e.link.length : t.size = 0, t.atime = new Date(e.timestamp), t.mtime = new Date(e.timestamp), t.ctime = new Date(e.timestamp), t.blksize = 4096, t.blocks = Math.ceil(t.size / t.blksize), t }, setattr: function (e, t) { void 0 !== t.mode && (e.mode = t.mode), void 0 !== t.timestamp && (e.timestamp = t.timestamp), void 0 !== t.size && gt.resizeFileStorage(e, t.size) }, lookup: function (e, t) { throw vt.genericErrors[44] }, mknod: function (e, t, r, n) { return gt.createNode(e, t, r, n) }, rename: function (e, t, r) { if (vt.isDir(e.mode)) { var n; try { n = vt.lookupNode(t, r) } catch (e) { } if (n) for (var o in n.contents) throw new vt.ErrnoError(55) } delete e.parent.contents[e.name], e.parent.timestamp = Date.now(), e.name = r, t.contents[r] = e, t.timestamp = e.parent.timestamp, e.parent = t }, unlink: function (e, t) { delete e.contents[t], e.timestamp = Date.now() }, rmdir: function (e, t) { var r = vt.lookupNode(e, t); for (var n in r.contents) throw new vt.ErrnoError(55); delete e.contents[t], e.timestamp = Date.now() }, readdir: function (e) { var t = [".", ".."]; for (var r in e.contents) e.contents.hasOwnProperty(r) && t.push(r); return t }, symlink: function (e, t, r) { var n = gt.createNode(e, t, 41471, 0); return n.link = r, n }, readlink: function (e) { if (!vt.isLink(e.mode)) throw new vt.ErrnoError(28); return e.link } }, stream_ops: { read: function (e, t, r, n, o) { var a = e.node.contents; if (o >= e.node.usedBytes) return 0; var i = Math.min(e.node.usedBytes - o, n); if (i > 8 && a.subarray) t.set(a.subarray(o, o + i), r); else for (var s = 0; s < i; s++) t[r + s] = a[o + s]; return i }, write: function (e, t, r, n, o, a) { if (!n) return 0; var i = e.node; if (i.timestamp = Date.now(), t.subarray && (!i.contents || i.contents.subarray)) { if (a) return i.contents = t.subarray(r, r + n), i.usedBytes = n, n; if (0 === i.usedBytes && 0 === o) return i.contents = t.slice(r, r + n), i.usedBytes = n, n; if (o + n <= i.usedBytes) return i.contents.set(t.subarray(r, r + n), o), n } if (gt.expandFileStorage(i, o + n), i.contents.subarray && t.subarray) i.contents.set(t.subarray(r, r + n), o); else for (var s = 0; s < n; s++) i.contents[o + s] = t[r + s]; return i.usedBytes = Math.max(i.usedBytes, o + n), n }, llseek: function (e, t, r) { var n = t; if (1 === r ? n += e.position : 2 === r && vt.isFile(e.node.mode) && (n += e.node.usedBytes), n < 0) throw new vt.ErrnoError(28); return n }, allocate: function (e, t, r) { gt.expandFileStorage(e.node, t + r), e.node.usedBytes = Math.max(e.node.usedBytes, t + r) }, mmap: function (e, t, r, n, o, a) { if (0 !== t) throw new vt.ErrnoError(28); if (!vt.isFile(e.node.mode)) throw new vt.ErrnoError(43); var i, s, u = e.node.contents; if (2 & a || u.buffer !== Ge) { if ((n > 0 || n + r < u.length) && (u = u.subarray ? u.subarray(n, n + r) : Array.prototype.slice.call(u, n, n + r)), s = !0, !(i = on(r))) throw new vt.ErrnoError(48); ze.set(u, i) } else s = !1, i = u.byteOffset; return {ptr: i, allocated: s} }, msync: function (e, t, r, n, o) { if (!vt.isFile(e.node.mode)) throw new vt.ErrnoError(43); if (2 & o) return 0; gt.stream_ops.write(e, t, 0, n, r, !1); return 0 } } }, vt = { root: null, mounts: [], devices: {}, streams: [], nextInode: 1, nameTable: null, currentPath: "/", initialized: !1, ignorePermissions: !0, trackingDelegate: {}, tracking: {openFlags: {READ: 1, WRITE: 2}}, ErrnoError: null, genericErrors: {}, filesystems: null, syncFSRequests: 0, lookupPath: function (e, t) { if (t = t || {}, !(e = mt.resolve(vt.cwd(), e))) return {path: "", node: null}; var r = {follow_mount: !0, recurse_count: 0}; for (var n in r) void 0 === t[n] && (t[n] = r[n]); if (t.recurse_count > 8) throw new vt.ErrnoError(32); for (var o = ht.normalizeArray(e.split("/").filter((function (e) { return !!e })), !1), a = vt.root, i = "/", s = 0; s < o.length; s++) { var u = s === o.length - 1; if (u && t.parent) break; if (a = vt.lookupNode(a, o[s]), i = ht.join2(i, o[s]), vt.isMountpoint(a) && (!u || u && t.follow_mount) && (a = a.mounted.root), !u || t.follow) for (var c = 0; vt.isLink(a.mode);) { var l = vt.readlink(i); if (i = mt.resolve(ht.dirname(i), l), a = vt.lookupPath(i, {recurse_count: t.recurse_count}).node, c++ > 40) throw new vt.ErrnoError(32) } } return {path: i, node: a} }, getPath: function (e) { for (var t; ;) { if (vt.isRoot(e)) { var r = e.mount.mountpoint; return t ? "/" !== r[r.length - 1] ? r + "/" + t : r + t : r } t = t ? e.name + "/" + t : e.name, e = e.parent } }, hashName: function (e, t) { for (var r = 0, n = 0; n < t.length; n++) r = (r << 5) - r + t.charCodeAt(n) | 0; return (e + r >>> 0) % vt.nameTable.length }, hashAddNode: function (e) { var t = vt.hashName(e.parent.id, e.name); e.name_next = vt.nameTable[t], vt.nameTable[t] = e }, hashRemoveNode: function (e) { var t = vt.hashName(e.parent.id, e.name); if (vt.nameTable[t] === e) vt.nameTable[t] = e.name_next; else for (var r = vt.nameTable[t]; r;) { if (r.name_next === e) { r.name_next = e.name_next; break } r = r.name_next } }, lookupNode: function (e, t) { var r = vt.mayLookup(e); if (r) throw new vt.ErrnoError(r, e); for (var n = vt.hashName(e.id, t), o = vt.nameTable[n]; o; o = o.name_next) { var a = o.name; if (o.parent.id === e.id && a === t) return o } return vt.lookup(e, t) }, createNode: function (e, t, r, n) { var o = new vt.FSNode(e, t, r, n); return vt.hashAddNode(o), o }, destroyNode: function (e) { vt.hashRemoveNode(e) }, isRoot: function (e) { return e === e.parent }, isMountpoint: function (e) { return !!e.mounted }, isFile: function (e) { return 32768 == (61440 & e) }, isDir: function (e) { return 16384 == (61440 & e) }, isLink: function (e) { return 40960 == (61440 & e) }, isChrdev: function (e) { return 8192 == (61440 & e) }, isBlkdev: function (e) { return 24576 == (61440 & e) }, isFIFO: function (e) { return 4096 == (61440 & e) }, isSocket: function (e) { return 49152 == (49152 & e) }, flagModes: {r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090}, modeStringToFlags: function (e) { var t = vt.flagModes[e]; if (void 0 === t) throw new Error("Unknown file open mode: " + e); return t }, flagsToPermissionString: function (e) { var t = ["r", "w", "rw"][3 & e]; return 512 & e && (t += "w"), t }, nodePermissions: function (e, t) { return vt.ignorePermissions || (-1 === t.indexOf("r") || 292 & e.mode) && (-1 === t.indexOf("w") || 146 & e.mode) && (-1 === t.indexOf("x") || 73 & e.mode) ? 0 : 2 }, mayLookup: function (e) { var t = vt.nodePermissions(e, "x"); return t || (e.node_ops.lookup ? 0 : 2) }, mayCreate: function (e, t) { try { vt.lookupNode(e, t); return 20 } catch (e) { } return vt.nodePermissions(e, "wx") }, mayDelete: function (e, t, r) { var n; try { n = vt.lookupNode(e, t) } catch (e) { return e.errno } var o = vt.nodePermissions(e, "wx"); if (o) return o; if (r) { if (!vt.isDir(n.mode)) return 54; if (vt.isRoot(n) || vt.getPath(n) === vt.cwd()) return 10 } else if (vt.isDir(n.mode)) return 31; return 0 }, mayOpen: function (e, t) { return e ? vt.isLink(e.mode) ? 32 : vt.isDir(e.mode) && ("r" !== vt.flagsToPermissionString(t) || 512 & t) ? 31 : vt.nodePermissions(e, vt.flagsToPermissionString(t)) : 44 }, MAX_OPEN_FDS: 4096, nextfd: function (e, t) { e = e || 0, t = t || vt.MAX_OPEN_FDS; for (var r = e; r <= t; r++) if (!vt.streams[r]) return r; throw new vt.ErrnoError(33) }, getStream: function (e) { return vt.streams[e] }, createStream: function (e, t, r) { vt.FSStream || (vt.FSStream = function () { }, vt.FSStream.prototype = { object: { get: function () { return this.node }, set: function (e) { this.node = e } }, isRead: { get: function () { return 1 != (2097155 & this.flags) } }, isWrite: { get: function () { return 0 != (2097155 & this.flags) } }, isAppend: { get: function () { return 1024 & this.flags } } }); var n = new vt.FSStream; for (var o in e) n[o] = e[o]; e = n; var a = vt.nextfd(t, r); return e.fd = a, vt.streams[a] = e, e }, closeStream: function (e) { vt.streams[e] = null }, chrdev_stream_ops: { open: function (e) { var t = vt.getDevice(e.node.rdev); e.stream_ops = t.stream_ops, e.stream_ops.open && e.stream_ops.open(e) }, llseek: function () { throw new vt.ErrnoError(70) } }, major: function (e) { return e >> 8 }, minor: function (e) { return 255 & e }, makedev: function (e, t) { return e << 8 | t }, registerDevice: function (e, t) { vt.devices[e] = {stream_ops: t} }, getDevice: function (e) { return vt.devices[e] }, getMounts: function (e) { for (var t = [], r = [e]; r.length;) { var n = r.pop(); t.push(n), r.push.apply(r, n.mounts) } return t }, syncfs: function (e, t) { "function" == typeof e && (t = e, e = !1), vt.syncFSRequests++, vt.syncFSRequests > 1 && Me("warning: " + vt.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"); var r = vt.getMounts(vt.root.mount), n = 0; function o(e) { return vt.syncFSRequests--, t(e) } function a(e) { if (e) return a.errored ? void 0 : (a.errored = !0, o(e)); ++n >= r.length && o(null) } r.forEach((function (t) { if (!t.type.syncfs) return a(null); t.type.syncfs(t, e, a) })) }, mount: function (e, t, r) { var n, o = "/" === r, a = !r; if (o && vt.root) throw new vt.ErrnoError(10); if (!o && !a) { var i = vt.lookupPath(r, {follow_mount: !1}); if (r = i.path, n = i.node, vt.isMountpoint(n)) throw new vt.ErrnoError(10); if (!vt.isDir(n.mode)) throw new vt.ErrnoError(54) } var s = {type: e, opts: t, mountpoint: r, mounts: []}, u = e.mount(s); return u.mount = s, s.root = u, o ? vt.root = u : n && (n.mounted = s, n.mount && n.mount.mounts.push(s)), u }, unmount: function (e) { var t = vt.lookupPath(e, {follow_mount: !1}); if (!vt.isMountpoint(t.node)) throw new vt.ErrnoError(28); var r = t.node, n = r.mounted, o = vt.getMounts(n); Object.keys(vt.nameTable).forEach((function (e) { for (var t = vt.nameTable[e]; t;) { var r = t.name_next; -1 !== o.indexOf(t.mount) && vt.destroyNode(t), t = r } })), r.mounted = null; var a = r.mount.mounts.indexOf(n); r.mount.mounts.splice(a, 1) }, lookup: function (e, t) { return e.node_ops.lookup(e, t) }, mknod: function (e, t, r) { var n = vt.lookupPath(e, {parent: !0}).node, o = ht.basename(e); if (!o || "." === o || ".." === o) throw new vt.ErrnoError(28); var a = vt.mayCreate(n, o); if (a) throw new vt.ErrnoError(a); if (!n.node_ops.mknod) throw new vt.ErrnoError(63); return n.node_ops.mknod(n, o, t, r) }, create: function (e, t) { return t = void 0 !== t ? t : 438, t &= 4095, t |= 32768, vt.mknod(e, t, 0) }, mkdir: function (e, t) { return t = void 0 !== t ? t : 511, t &= 1023, t |= 16384, vt.mknod(e, t, 0) }, mkdirTree: function (e, t) { for (var r = e.split("/"), n = "", o = 0; o < r.length; ++o) if (r[o]) { n += "/" + r[o]; try { vt.mkdir(n, t) } catch (e) { if (20 != e.errno) throw e } } }, mkdev: function (e, t, r) { return void 0 === r && (r = t, t = 438), t |= 8192, vt.mknod(e, t, r) }, symlink: function (e, t) { if (!mt.resolve(e)) throw new vt.ErrnoError(44); var r = vt.lookupPath(t, {parent: !0}).node; if (!r) throw new vt.ErrnoError(44); var n = ht.basename(t), o = vt.mayCreate(r, n); if (o) throw new vt.ErrnoError(o); if (!r.node_ops.symlink) throw new vt.ErrnoError(63); return r.node_ops.symlink(r, n, e) }, rename: function (e, t) { var r, n, o = ht.dirname(e), a = ht.dirname(t), i = ht.basename(e), s = ht.basename(t); if (r = vt.lookupPath(e, {parent: !0}).node, n = vt.lookupPath(t, {parent: !0}).node, !r || !n) throw new vt.ErrnoError(44); if (r.mount !== n.mount) throw new vt.ErrnoError(75); var u, c = vt.lookupNode(r, i), l = mt.relative(e, a); if ("." !== l.charAt(0)) throw new vt.ErrnoError(28); if ("." !== (l = mt.relative(t, o)).charAt(0)) throw new vt.ErrnoError(55); try { u = vt.lookupNode(n, s) } catch (e) { } if (c !== u) { var d = vt.isDir(c.mode), f = vt.mayDelete(r, i, d); if (f) throw new vt.ErrnoError(f); if (f = u ? vt.mayDelete(n, s, d) : vt.mayCreate(n, s)) throw new vt.ErrnoError(f); if (!r.node_ops.rename) throw new vt.ErrnoError(63); if (vt.isMountpoint(c) || u && vt.isMountpoint(u)) throw new vt.ErrnoError(10); if (n !== r && (f = vt.nodePermissions(r, "w"))) throw new vt.ErrnoError(f); try { vt.trackingDelegate.willMovePath && vt.trackingDelegate.willMovePath(e, t) } catch (r) { Me("FS.trackingDelegate['willMovePath']('" + e + "', '" + t + "') threw an exception: " + r.message) } vt.hashRemoveNode(c); try { r.node_ops.rename(c, n, s) } catch (e) { throw e } finally { vt.hashAddNode(c) } try { vt.trackingDelegate.onMovePath && vt.trackingDelegate.onMovePath(e, t) } catch (r) { Me("FS.trackingDelegate['onMovePath']('" + e + "', '" + t + "') threw an exception: " + r.message) } } }, rmdir: function (e) { var t = vt.lookupPath(e, {parent: !0}).node, r = ht.basename(e), n = vt.lookupNode(t, r), o = vt.mayDelete(t, r, !0); if (o) throw new vt.ErrnoError(o); if (!t.node_ops.rmdir) throw new vt.ErrnoError(63); if (vt.isMountpoint(n)) throw new vt.ErrnoError(10); try { vt.trackingDelegate.willDeletePath && vt.trackingDelegate.willDeletePath(e) } catch (t) { Me("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + t.message) } t.node_ops.rmdir(t, r), vt.destroyNode(n); try { vt.trackingDelegate.onDeletePath && vt.trackingDelegate.onDeletePath(e) } catch (t) { Me("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + t.message) } }, readdir: function (e) { var t = vt.lookupPath(e, {follow: !0}).node; if (!t.node_ops.readdir) throw new vt.ErrnoError(54); return t.node_ops.readdir(t) }, unlink: function (e) { var t = vt.lookupPath(e, {parent: !0}).node, r = ht.basename(e), n = vt.lookupNode(t, r), o = vt.mayDelete(t, r, !1); if (o) throw new vt.ErrnoError(o); if (!t.node_ops.unlink) throw new vt.ErrnoError(63); if (vt.isMountpoint(n)) throw new vt.ErrnoError(10); try { vt.trackingDelegate.willDeletePath && vt.trackingDelegate.willDeletePath(e) } catch (t) { Me("FS.trackingDelegate['willDeletePath']('" + e + "') threw an exception: " + t.message) } t.node_ops.unlink(t, r), vt.destroyNode(n); try { vt.trackingDelegate.onDeletePath && vt.trackingDelegate.onDeletePath(e) } catch (t) { Me("FS.trackingDelegate['onDeletePath']('" + e + "') threw an exception: " + t.message) } }, readlink: function (e) { var t = vt.lookupPath(e).node; if (!t) throw new vt.ErrnoError(44); if (!t.node_ops.readlink) throw new vt.ErrnoError(28); return mt.resolve(vt.getPath(t.parent), t.node_ops.readlink(t)) }, stat: function (e, t) { var r = vt.lookupPath(e, {follow: !t}).node; if (!r) throw new vt.ErrnoError(44); if (!r.node_ops.getattr) throw new vt.ErrnoError(63); return r.node_ops.getattr(r) }, lstat: function (e) { return vt.stat(e, !0) }, chmod: function (e, t, r) { var n; "string" == typeof e ? n = vt.lookupPath(e, {follow: !r}).node : n = e; if (!n.node_ops.setattr) throw new vt.ErrnoError(63); n.node_ops.setattr(n, {mode: 4095 & t | -4096 & n.mode, timestamp: Date.now()}) }, lchmod: function (e, t) { vt.chmod(e, t, !0) }, fchmod: function (e, t) { var r = vt.getStream(e); if (!r) throw new vt.ErrnoError(8); vt.chmod(r.node, t) }, chown: function (e, t, r, n) { var o; "string" == typeof e ? o = vt.lookupPath(e, {follow: !n}).node : o = e; if (!o.node_ops.setattr) throw new vt.ErrnoError(63); o.node_ops.setattr(o, {timestamp: Date.now()}) }, lchown: function (e, t, r) { vt.chown(e, t, r, !0) }, fchown: function (e, t, r) { var n = vt.getStream(e); if (!n) throw new vt.ErrnoError(8); vt.chown(n.node, t, r) }, truncate: function (e, t) { if (t < 0) throw new vt.ErrnoError(28); var r; "string" == typeof e ? r = vt.lookupPath(e, {follow: !0}).node : r = e; if (!r.node_ops.setattr) throw new vt.ErrnoError(63); if (vt.isDir(r.mode)) throw new vt.ErrnoError(31); if (!vt.isFile(r.mode)) throw new vt.ErrnoError(28); var n = vt.nodePermissions(r, "w"); if (n) throw new vt.ErrnoError(n); r.node_ops.setattr(r, {size: t, timestamp: Date.now()}) }, ftruncate: function (e, t) { var r = vt.getStream(e); if (!r) throw new vt.ErrnoError(8); if (0 == (2097155 & r.flags)) throw new vt.ErrnoError(28); vt.truncate(r.node, t) }, utime: function (e, t, r) { var n = vt.lookupPath(e, {follow: !0}).node; n.node_ops.setattr(n, {timestamp: Math.max(t, r)}) }, open: function (e, t, r, n, o) { if ("" === e) throw new vt.ErrnoError(44); var a; if (r = void 0 === r ? 438 : r, r = 64 & (t = "string" == typeof t ? vt.modeStringToFlags(t) : t) ? 4095 & r | 32768 : 0, "object" == typeof e) a = e; else { e = ht.normalize(e); try { a = vt.lookupPath(e, {follow: !(131072 & t)}).node } catch (e) { } } var i = !1; if (64 & t) if (a) { if (128 & t) throw new vt.ErrnoError(20) } else a = vt.mknod(e, r, 0), i = !0; if (!a) throw new vt.ErrnoError(44); if (vt.isChrdev(a.mode) && (t &= -513), 65536 & t && !vt.isDir(a.mode)) throw new vt.ErrnoError(54); if (!i) { var s = vt.mayOpen(a, t); if (s) throw new vt.ErrnoError(s) } 512 & t && vt.truncate(a, 0), t &= -131713; var u = vt.createStream({ node: a, path: vt.getPath(a), flags: t, seekable: !0, position: 0, stream_ops: a.stream_ops, ungotten: [], error: !1 }, n, o); u.stream_ops.open && u.stream_ops.open(u), !Ee.logReadFiles || 1 & t || (vt.readFiles || (vt.readFiles = {}), e in vt.readFiles || (vt.readFiles[e] = 1, Me("FS.trackingDelegate error on read file: " + e))); try { if (vt.trackingDelegate.onOpenFile) { var c = 0; 1 != (2097155 & t) && (c |= vt.tracking.openFlags.READ), 0 != (2097155 & t) && (c |= vt.tracking.openFlags.WRITE), vt.trackingDelegate.onOpenFile(e, c) } } catch (t) { Me("FS.trackingDelegate['onOpenFile']('" + e + "', flags) threw an exception: " + t.message) } return u }, close: function (e) { if (vt.isClosed(e)) throw new vt.ErrnoError(8); e.getdents && (e.getdents = null); try { e.stream_ops.close && e.stream_ops.close(e) } catch (e) { throw e } finally { vt.closeStream(e.fd) } e.fd = null }, isClosed: function (e) { return null === e.fd }, llseek: function (e, t, r) { if (vt.isClosed(e)) throw new vt.ErrnoError(8); if (!e.seekable || !e.stream_ops.llseek) throw new vt.ErrnoError(70); if (0 != r && 1 != r && 2 != r) throw new vt.ErrnoError(28); return e.position = e.stream_ops.llseek(e, t, r), e.ungotten = [], e.position }, read: function (e, t, r, n, o) { if (n < 0 || o < 0) throw new vt.ErrnoError(28); if (vt.isClosed(e)) throw new vt.ErrnoError(8); if (1 == (2097155 & e.flags)) throw new vt.ErrnoError(8); if (vt.isDir(e.node.mode)) throw new vt.ErrnoError(31); if (!e.stream_ops.read) throw new vt.ErrnoError(28); var a = void 0 !== o; if (a) { if (!e.seekable) throw new vt.ErrnoError(70) } else o = e.position; var i = e.stream_ops.read(e, t, r, n, o); return a || (e.position += i), i }, write: function (e, t, r, n, o, a) { if (n < 0 || o < 0) throw new vt.ErrnoError(28); if (vt.isClosed(e)) throw new vt.ErrnoError(8); if (0 == (2097155 & e.flags)) throw new vt.ErrnoError(8); if (vt.isDir(e.node.mode)) throw new vt.ErrnoError(31); if (!e.stream_ops.write) throw new vt.ErrnoError(28); e.seekable && 1024 & e.flags && vt.llseek(e, 0, 2); var i = void 0 !== o; if (i) { if (!e.seekable) throw new vt.ErrnoError(70) } else o = e.position; var s = e.stream_ops.write(e, t, r, n, o, a); i || (e.position += s); try { e.path && vt.trackingDelegate.onWriteToFile && vt.trackingDelegate.onWriteToFile(e.path) } catch (t) { Me("FS.trackingDelegate['onWriteToFile']('" + e.path + "') threw an exception: " + t.message) } return s }, allocate: function (e, t, r) { if (vt.isClosed(e)) throw new vt.ErrnoError(8); if (t < 0 || r <= 0) throw new vt.ErrnoError(28); if (0 == (2097155 & e.flags)) throw new vt.ErrnoError(8); if (!vt.isFile(e.node.mode) && !vt.isDir(e.node.mode)) throw new vt.ErrnoError(43); if (!e.stream_ops.allocate) throw new vt.ErrnoError(138); e.stream_ops.allocate(e, t, r) }, mmap: function (e, t, r, n, o, a) { if (0 != (2 & o) && 0 == (2 & a) && 2 != (2097155 & e.flags)) throw new vt.ErrnoError(2); if (1 == (2097155 & e.flags)) throw new vt.ErrnoError(2); if (!e.stream_ops.mmap) throw new vt.ErrnoError(43); return e.stream_ops.mmap(e, t, r, n, o, a) }, msync: function (e, t, r, n, o) { return e && e.stream_ops.msync ? e.stream_ops.msync(e, t, r, n, o) : 0 }, munmap: function (e) { return 0 }, ioctl: function (e, t, r) { if (!e.stream_ops.ioctl) throw new vt.ErrnoError(59); return e.stream_ops.ioctl(e, t, r) }, readFile: function (e, t) { if ((t = t || {}).flags = t.flags || 0, t.encoding = t.encoding || "binary", "utf8" !== t.encoding && "binary" !== t.encoding) throw new Error('Invalid encoding type "' + t.encoding + '"'); var r, n = vt.open(e, t.flags), o = vt.stat(e).size, a = new Uint8Array(o); return vt.read(n, a, 0, o, 0), "utf8" === t.encoding ? r = Pr(a, 0) : "binary" === t.encoding && (r = a), vt.close(n), r }, writeFile: function (e, t, r) { (r = r || {}).flags = r.flags || 577; var n = vt.open(e, r.flags, r.mode); if ("string" == typeof t) { var o = new Uint8Array(Rr(t) + 1), a = Br(t, o, 0, o.length); vt.write(n, o, 0, a, void 0, r.canOwn) } else { if (!ArrayBuffer.isView(t)) throw new Error("Unsupported data type"); vt.write(n, t, 0, t.byteLength, void 0, r.canOwn) } vt.close(n) }, cwd: function () { return vt.currentPath }, chdir: function (e) { var t = vt.lookupPath(e, {follow: !0}); if (null === t.node) throw new vt.ErrnoError(44); if (!vt.isDir(t.node.mode)) throw new vt.ErrnoError(54); var r = vt.nodePermissions(t.node, "x"); if (r) throw new vt.ErrnoError(r); vt.currentPath = t.path }, createDefaultDirectories: function () { vt.mkdir("/tmp"), vt.mkdir("/home"), vt.mkdir("/home/web_user") }, createDefaultDevices: function () { vt.mkdir("/dev"), vt.registerDevice(vt.makedev(1, 3), { read: function () { return 0 }, write: function (e, t, r, n, o) { return n } }), vt.mkdev("/dev/null", vt.makedev(1, 3)), At.register(vt.makedev(5, 0), At.default_tty_ops), At.register(vt.makedev(6, 0), At.default_tty1_ops), vt.mkdev("/dev/tty", vt.makedev(5, 0)), vt.mkdev("/dev/tty1", vt.makedev(6, 0)); var e = function () { if ("object" == typeof crypto && "function" == typeof crypto.getRandomValues) { var e = new Uint8Array(1); return function () { return crypto.getRandomValues(e), e[0] } } return function () { Yr("randomDevice") } }(); vt.createDevice("/dev", "random", e), vt.createDevice("/dev", "urandom", e), vt.mkdir("/dev/shm"), vt.mkdir("/dev/shm/tmp") }, createSpecialDirectories: function () { vt.mkdir("/proc"); var e = vt.mkdir("/proc/self"); vt.mkdir("/proc/self/fd"), vt.mount({ mount: function () { var t = vt.createNode(e, "fd", 16895, 73); return t.node_ops = { lookup: function (e, t) { var r = +t, n = vt.getStream(r); if (!n) throw new vt.ErrnoError(8); var o = { parent: null, mount: {mountpoint: "fake"}, node_ops: { readlink: function () { return n.path } } }; return o.parent = o, o } }, t } }, {}, "/proc/self/fd") }, createStandardStreams: function () { Ee.stdin ? vt.createDevice("/dev", "stdin", Ee.stdin) : vt.symlink("/dev/tty", "/dev/stdin"), Ee.stdout ? vt.createDevice("/dev", "stdout", null, Ee.stdout) : vt.symlink("/dev/tty", "/dev/stdout"), Ee.stderr ? vt.createDevice("/dev", "stderr", null, Ee.stderr) : vt.symlink("/dev/tty1", "/dev/stderr"); vt.open("/dev/stdin", 0), vt.open("/dev/stdout", 1), vt.open("/dev/stderr", 1) }, ensureErrnoError: function () { vt.ErrnoError || (vt.ErrnoError = function (e, t) { this.node = t, this.setErrno = function (e) { this.errno = e }, this.setErrno(e), this.message = "FS error" }, vt.ErrnoError.prototype = new Error, vt.ErrnoError.prototype.constructor = vt.ErrnoError, [44].forEach((function (e) { vt.genericErrors[e] = new vt.ErrnoError(e), vt.genericErrors[e].stack = "" }))) }, staticInit: function () { vt.ensureErrnoError(), vt.nameTable = new Array(4096), vt.mount(gt, {}, "/"), vt.createDefaultDirectories(), vt.createDefaultDevices(), vt.createSpecialDirectories(), vt.filesystems = {MEMFS: gt} }, init: function (e, t, r) { vt.init.initialized = !0, vt.ensureErrnoError(), Ee.stdin = e || Ee.stdin, Ee.stdout = t || Ee.stdout, Ee.stderr = r || Ee.stderr, vt.createStandardStreams() }, quit: function () { vt.init.initialized = !1; var e = Ee._fflush; e && e(0); for (var t = 0; t < vt.streams.length; t++) { var r = vt.streams[t]; r && vt.close(r) } }, getMode: function (e, t) { var r = 0; return e && (r |= 365), t && (r |= 146), r }, findObject: function (e, t) { var r = vt.analyzePath(e, t); return r.exists ? r.object : null }, analyzePath: function (e, t) { try { e = (n = vt.lookupPath(e, {follow: !t})).path } catch (e) { } var r = { isRoot: !1, exists: !1, error: 0, name: null, path: null, object: null, parentExists: !1, parentPath: null, parentObject: null }; try { var n = vt.lookupPath(e, {parent: !0}); r.parentExists = !0, r.parentPath = n.path, r.parentObject = n.node, r.name = ht.basename(e), n = vt.lookupPath(e, {follow: !t}), r.exists = !0, r.path = n.path, r.object = n.node, r.name = n.node.name, r.isRoot = "/" === n.path } catch (e) { r.error = e.errno } return r }, createPath: function (e, t, r, n) { e = "string" == typeof e ? e : vt.getPath(e); for (var o = t.split("/").reverse(); o.length;) { var a = o.pop(); if (a) { var i = ht.join2(e, a); try { vt.mkdir(i) } catch (e) { } e = i } } return i }, createFile: function (e, t, r, n, o) { var a = ht.join2("string" == typeof e ? e : vt.getPath(e), t), i = vt.getMode(n, o); return vt.create(a, i) }, createDataFile: function (e, t, r, n, o, a) { var i = t ? ht.join2("string" == typeof e ? e : vt.getPath(e), t) : e, s = vt.getMode(n, o), u = vt.create(i, s); if (r) { if ("string" == typeof r) { for (var c = new Array(r.length), l = 0, d = r.length; l < d; ++l) c[l] = r.charCodeAt(l); r = c } vt.chmod(u, 146 | s); var f = vt.open(u, 577); vt.write(f, r, 0, r.length, 0, a), vt.close(f), vt.chmod(u, s) } return u }, createDevice: function (e, t, r, n) { var o = ht.join2("string" == typeof e ? e : vt.getPath(e), t), a = vt.getMode(!!r, !!n); vt.createDevice.major || (vt.createDevice.major = 64); var i = vt.makedev(vt.createDevice.major++, 0); return vt.registerDevice(i, { open: function (e) { e.seekable = !1 }, close: function (e) { n && n.buffer && n.buffer.length && n(10) }, read: function (e, t, n, o, a) { for (var i = 0, s = 0; s < o; s++) { var u; try { u = r() } catch (e) { throw new vt.ErrnoError(29) } if (void 0 === u && 0 === i) throw new vt.ErrnoError(6); if (null == u) break; i++, t[n + s] = u } return i && (e.node.timestamp = Date.now()), i }, write: function (e, t, r, o, a) { for (var i = 0; i < o; i++) try { n(t[r + i]) } catch (e) { throw new vt.ErrnoError(29) } return o && (e.node.timestamp = Date.now()), i } }), vt.mkdev(o, a, i) }, forceLoadFile: function (e) { if (e.isDevice || e.isFolder || e.link || e.contents) return !0; if ("undefined" != typeof XMLHttpRequest) throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); if (!Pe) throw new Error("Cannot load without read() or XMLHttpRequest."); try { e.contents = ga(Pe(e.url), !0), e.usedBytes = e.contents.length } catch (e) { throw new vt.ErrnoError(29) } }, createLazyFile: function (e, t, r, n, o) { function a() { this.lengthKnown = !1, this.chunks = [] } if (a.prototype.get = function (e) { if (!(e > this.length - 1 || e < 0)) { var t = e % this.chunkSize, r = e / this.chunkSize | 0; return this.getter(r)[t] } }, a.prototype.setDataGetter = function (e) { this.getter = e }, a.prototype.cacheLength = function () { var e = new XMLHttpRequest; if (e.open("HEAD", r, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + r + ". Status: " + e.status); var t, n = Number(e.getResponseHeader("Content-length")), o = (t = e.getResponseHeader("Accept-Ranges")) && "bytes" === t, a = (t = e.getResponseHeader("Content-Encoding")) && "gzip" === t, i = 1048576; o || (i = n); var s = this; s.setDataGetter((function (e) { var t = e * i, o = (e + 1) * i - 1; if (o = Math.min(o, n - 1), void 0 === s.chunks[e] && (s.chunks[e] = function (e, t) { if (e > t) throw new Error("invalid range (" + e + ", " + t + ") or no bytes requested!"); if (t > n - 1) throw new Error("only " + n + " bytes available! programmer error!"); var o = new XMLHttpRequest; if (o.open("GET", r, !1), n !== i && o.setRequestHeader("Range", "bytes=" + e + "-" + t), "undefined" != typeof Uint8Array && (o.responseType = "arraybuffer"), o.overrideMimeType && o.overrideMimeType("text/plain; charset=x-user-defined"), o.send(null), !(o.status >= 200 && o.status < 300 || 304 === o.status)) throw new Error("Couldn't load " + r + ". Status: " + o.status); return void 0 !== o.response ? new Uint8Array(o.response || []) : ga(o.responseText || "", !0) }(t, o)), void 0 === s.chunks[e]) throw new Error("doXHR failed!"); return s.chunks[e] })), !a && n || (i = n = 1, n = this.getter(0).length, i = n, Be("LazyFiles on gzip forces download of the whole file when length is accessed")), this._length = n, this._chunkSize = i, this.lengthKnown = !0 }, "undefined" != typeof XMLHttpRequest) { if (!De) throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc"; var i = new a; Object.defineProperties(i, { length: { get: function () { return this.lengthKnown || this.cacheLength(), this._length } }, chunkSize: { get: function () { return this.lengthKnown || this.cacheLength(), this._chunkSize } } }); var s = {isDevice: !1, contents: i} } else s = {isDevice: !1, url: r}; var u = vt.createFile(e, t, s, n, o); s.contents ? u.contents = s.contents : s.url && (u.contents = null, u.url = s.url), Object.defineProperties(u, { usedBytes: { get: function () { return this.contents.length } } }); var c = {}; return Object.keys(u.stream_ops).forEach((function (e) { var t = u.stream_ops[e]; c[e] = function () { return vt.forceLoadFile(u), t.apply(null, arguments) } })), c.read = function (e, t, r, n, o) { vt.forceLoadFile(u); var a = e.node.contents; if (o >= a.length) return 0; var i = Math.min(a.length - o, n); if (a.slice) for (var s = 0; s < i; s++) t[r + s] = a[o + s]; else for (s = 0; s < i; s++) t[r + s] = a.get(o + s); return i }, u.stream_ops = c, u }, createPreloadedFile: function (e, t, r, n, o, a, i, s, u, c) { Browser.init(); var l = t ? mt.resolve(ht.join2(e, t)) : e; function d(r) { function d(r) { c && c(), s || vt.createDataFile(e, t, r, n, o, u), a && a(), Wr() } var f = !1; Ee.preloadPlugins.forEach((function (e) { f || e.canHandle(l) && (e.handle(r, l, d, (function () { i && i(), Wr() })), f = !0) })), f || d(r) } zr(), "string" == typeof r ? Browser.asyncLoad(r, (function (e) { d(e) }), i) : d(r) }, indexedDB: function () { return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB }, DB_NAME: function () { return "EM_FS_" + window.location.pathname }, DB_VERSION: 20, DB_STORE_NAME: "FILE_DATA", saveFilesToDB: function (e, t, r) { t = t || function () { }, r = r || function () { }; var n = vt.indexedDB(); try { var o = n.open(vt.DB_NAME(), vt.DB_VERSION) } catch (e) { return r(e) } o.onupgradeneeded = function () { Be("creating db"), o.result.createObjectStore(vt.DB_STORE_NAME) }, o.onsuccess = function () { var n = o.result.transaction([vt.DB_STORE_NAME], "readwrite"), a = n.objectStore(vt.DB_STORE_NAME), i = 0, s = 0, u = e.length; function c() { 0 == s ? t() : r() } e.forEach((function (e) { var t = a.put(vt.analyzePath(e).object.contents, e); t.onsuccess = function () { ++i + s == u && c() }, t.onerror = function () { s++, i + s == u && c() } })), n.onerror = r }, o.onerror = r }, loadFilesFromDB: function (e, t, r) { t = t || function () { }, r = r || function () { }; var n = vt.indexedDB(); try { var o = n.open(vt.DB_NAME(), vt.DB_VERSION) } catch (e) { return r(e) } o.onupgradeneeded = r, o.onsuccess = function () { var n = o.result; try { var a = n.transaction([vt.DB_STORE_NAME], "readonly") } catch (e) { return void r(e) } var i = a.objectStore(vt.DB_STORE_NAME), s = 0, u = 0, c = e.length; function l() { 0 == u ? t() : r() } e.forEach((function (e) { var t = i.get(e); t.onsuccess = function () { vt.analyzePath(e).exists && vt.unlink(e), vt.createDataFile(ht.dirname(e), ht.basename(e), t.result, !0, !0, !0), ++s + u == c && l() }, t.onerror = function () { u++, s + u == c && l() } })), a.onerror = r }, o.onerror = r } }, Et = { mappings: {}, DEFAULT_POLLMASK: 5, umask: 511, calculateAt: function (e, t, r) { if ("/" === t[0]) return t; var n; if (-100 === e) n = vt.cwd(); else { var o = vt.getStream(e); if (!o) throw new vt.ErrnoError(8); n = o.path } if (0 == t.length) { if (!r) throw new vt.ErrnoError(44); return n } return ht.join2(n, t) }, doStat: function (e, t, r) { try { var n = e(t) } catch (e) { if (e && e.node && ht.normalize(t) !== ht.normalize(vt.getPath(e.node))) return -54; throw e } return $e[r >> 2] = n.dev, $e[r + 4 >> 2] = 0, $e[r + 8 >> 2] = n.ino, $e[r + 12 >> 2] = n.mode, $e[r + 16 >> 2] = n.nlink, $e[r + 20 >> 2] = n.uid, $e[r + 24 >> 2] = n.gid, $e[r + 28 >> 2] = n.rdev, $e[r + 32 >> 2] = 0, ct = [n.size >>> 0, (ut = n.size, +Math.abs(ut) >= 1 ? ut > 0 ? (0 | Math.min(+Math.floor(ut / 4294967296), 4294967295)) >>> 0 : ~~+Math.ceil((ut - +(~~ut >>> 0)) / 4294967296) >>> 0 : 0)], $e[r + 40 >> 2] = ct[0], $e[r + 44 >> 2] = ct[1], $e[r + 48 >> 2] = 4096, $e[r + 52 >> 2] = n.blocks, $e[r + 56 >> 2] = n.atime.getTime() / 1e3 | 0, $e[r + 60 >> 2] = 0, $e[r + 64 >> 2] = n.mtime.getTime() / 1e3 | 0, $e[r + 68 >> 2] = 0, $e[r + 72 >> 2] = n.ctime.getTime() / 1e3 | 0, $e[r + 76 >> 2] = 0, ct = [n.ino >>> 0, (ut = n.ino, +Math.abs(ut) >= 1 ? ut > 0 ? (0 | Math.min(+Math.floor(ut / 4294967296), 4294967295)) >>> 0 : ~~+Math.ceil((ut - +(~~ut >>> 0)) / 4294967296) >>> 0 : 0)], $e[r + 80 >> 2] = ct[0], $e[r + 84 >> 2] = ct[1], 0 }, doMsync: function (e, t, r, n, o) { var a = We.slice(e, e + r); vt.msync(t, a, o, r, n) }, doMkdir: function (e, t) { return "/" === (e = ht.normalize(e))[e.length - 1] && (e = e.substr(0, e.length - 1)), vt.mkdir(e, t, 0), 0 }, doMknod: function (e, t, r) { switch (61440 & t) { case 32768: case 8192: case 24576: case 4096: case 49152: break; default: return -28 } return vt.mknod(e, t, r), 0 }, doReadlink: function (e, t, r) { if (r <= 0) return -28; var n = vt.readlink(e), o = Math.min(r, Rr(n)), a = ze[t + o]; return Mr(n, t, r + 1), ze[t + o] = a, o }, doAccess: function (e, t) { if (-8 & t) return -28; var r; if (!(r = vt.lookupPath(e, {follow: !0}).node)) return -44; var n = ""; return 4 & t && (n += "r"), 2 & t && (n += "w"), 1 & t && (n += "x"), n && vt.nodePermissions(r, n) ? -2 : 0 }, doDup: function (e, t, r) { var n = vt.getStream(r); return n && vt.close(n), vt.open(e, t, 0, r, r).fd }, doReadv: function (e, t, r, n) { for (var o = 0, a = 0; a < r; a++) { var i = $e[t + 8 * a >> 2], s = $e[t + (8 * a + 4) >> 2], u = vt.read(e, ze, i, s, n); if (u < 0) return -1; if (o += u, u < s) break } return o }, doWritev: function (e, t, r, n) { for (var o = 0, a = 0; a < r; a++) { var i = $e[t + 8 * a >> 2], s = $e[t + (8 * a + 4) >> 2], u = vt.write(e, ze, i, s, n); if (u < 0) return -1; o += u } return o }, varargs: void 0, get: function () { return Et.varargs += 4, $e[Et.varargs - 4 >> 2] }, getStr: function (e) { return xr(e) }, getStreamFromFD: function (e) { var t = vt.getStream(e); if (!t) throw new vt.ErrnoError(8); return t }, get64: function (e, t) { return e } }, yt = void 0, wt = {}, _t = {}, bt = {}, kt = 48, Tt = 57, Dt = void 0, St = void 0, Ct = !1, Ot = void 0, Pt = [], xt = {}, Bt = {}, Mt = void 0, Rt = [], Lt = [{}, {value: void 0}, {value: null}, {value: !0}, {value: !1}], It = {}, Ft = [], Ut = [], Nt = [], jt = { inEventHandler: 0, removeAllEventListeners: function () { for (var e = jt.eventHandlers.length - 1; e >= 0; --e) jt._removeHandler(e); jt.eventHandlers = [], jt.deferredCalls = [] }, registerRemoveEventListeners: function () { jt.removeEventListenersRegistered || (tt.push(jt.removeAllEventListeners), jt.removeEventListenersRegistered = !0) }, deferredCalls: [], deferCall: function (e, t, r) { function n(e, t) { if (e.length != t.length) return !1; for (var r in e) if (e[r] != t[r]) return !1; return !0 } for (var o in jt.deferredCalls) { var a = jt.deferredCalls[o]; if (a.targetFunction == e && n(a.argsList, r)) return } jt.deferredCalls.push({targetFunction: e, precedence: t, argsList: r}), jt.deferredCalls.sort((function (e, t) { return e.precedence < t.precedence })) }, removeDeferredCalls: function (e) { for (var t = 0; t < jt.deferredCalls.length; ++t) jt.deferredCalls[t].targetFunction == e && (jt.deferredCalls.splice(t, 1), --t) }, canPerformEventHandlerRequests: function () { return jt.inEventHandler && jt.currentEventHandler.allowsDeferredCalls }, runDeferredCalls: function () { if (jt.canPerformEventHandlerRequests()) for (var e = 0; e < jt.deferredCalls.length; ++e) { var t = jt.deferredCalls[e]; jt.deferredCalls.splice(e, 1), --e, t.targetFunction.apply(null, t.argsList) } }, eventHandlers: [], removeAllHandlersOnTarget: function (e, t) { for (var r = 0; r < jt.eventHandlers.length; ++r) jt.eventHandlers[r].target != e || t && t != jt.eventHandlers[r].eventTypeString || jt._removeHandler(r--) }, _removeHandler: function (e) { var t = jt.eventHandlers[e]; t.target.removeEventListener(t.eventTypeString, t.eventListenerFunc, t.useCapture), jt.eventHandlers.splice(e, 1) }, registerOrRemoveHandler: function (e) { var t = function (t) { ++jt.inEventHandler, jt.currentEventHandler = e, jt.runDeferredCalls(), e.handlerFunc(t), jt.runDeferredCalls(), --jt.inEventHandler }; if (e.callbackfunc) e.eventListenerFunc = t, e.target.addEventListener(e.eventTypeString, t, e.useCapture), jt.eventHandlers.push(e), jt.registerRemoveEventListeners(); else for (var r = 0; r < jt.eventHandlers.length; ++r) jt.eventHandlers[r].target == e.target && jt.eventHandlers[r].eventTypeString == e.eventTypeString && jt._removeHandler(r--) }, queueEventHandlerOnThread_iiii: function (e, t, r, n, o) { var a = gr(), i = Er(12); $e[i >> 2] = r, $e[i + 4 >> 2] = n, $e[i + 8 >> 2] = o, mr(0, e, 637534208, t, n, i), vr(a) }, getTargetThreadForEventCallback: function (e) { switch (e) { case 1: return 0; case 2: return ft.currentProxiedOperationCallerThread; default: return e } }, getNodeNameForTarget: function (e) { return e ? e == window ? "#window" : e == screen ? "#screen" : e && e.nodeName ? e.nodeName : "" : "" }, fullscreenEnabled: function () { return document.fullscreenEnabled || document.webkitFullscreenEnabled } }, Gt = [0, "undefined" != typeof document ? document : 0, "undefined" != typeof window ? window : 0], zt = { counter: 1, buffers: [], programs: [], framebuffers: [], renderbuffers: [], textures: [], uniforms: [], shaders: [], vaos: [], contexts: {}, offscreenCanvases: {}, timerQueriesEXT: [], programInfos: {}, stringCache: {}, unpackAlignment: 4, recordError: function (e) { zt.lastError || (zt.lastError = e) }, getNewId: function (e) { for (var t = zt.counter++, r = e.length; r < t; r++) e[r] = null; return t }, getSource: function (e, t, r, n) { for (var o = "", a = 0; a < t; ++a) { var i = n ? $e[n + 4 * a >> 2] : -1; o += xr($e[r + 4 * a >> 2], i < 0 ? void 0 : i) } return o }, createContext: function (e, t) { var r = e.getContext("webgl", t); return r ? zt.registerContext(r, t) : 0 }, registerContext: function (e, t) { var r = Jt(8); $e[r + 4 >> 2] = sr(); var n = {handle: r, attributes: t, version: t.majorVersion, GLctx: e}; return e.canvas && (e.canvas.GLctxObject = n), zt.contexts[r] = n, (void 0 === t.enableExtensionsByDefault || t.enableExtensionsByDefault) && zt.initExtensions(n), r }, makeContextCurrent: function (e) { return zt.currentContext = zt.contexts[e], Ee.ctx = Qt = zt.currentContext && zt.currentContext.GLctx, !(e && !Qt) }, getContext: function (e) { return zt.contexts[e] }, deleteContext: function (e) { zt.currentContext === zt.contexts[e] && (zt.currentContext = null), "object" == typeof jt && jt.removeAllHandlersOnTarget(zt.contexts[e].GLctx.canvas), zt.contexts[e] && zt.contexts[e].GLctx.canvas && (zt.contexts[e].GLctx.canvas.GLctxObject = void 0), Kt(zt.contexts[e].handle), zt.contexts[e] = null }, initExtensions: function (e) { if (e || (e = zt.currentContext), !e.initExtensionsDone) { e.initExtensionsDone = !0; var t, r = e.GLctx; !function (e) { var t = e.getExtension("ANGLE_instanced_arrays"); if (t) e.vertexAttribDivisor = function (e, r) { t.vertexAttribDivisorANGLE(e, r) }, e.drawArraysInstanced = function (e, r, n, o) { t.drawArraysInstancedANGLE(e, r, n, o) }, e.drawElementsInstanced = function (e, r, n, o, a) { t.drawElementsInstancedANGLE(e, r, n, o, a) } }(r), function (e) { var t = e.getExtension("OES_vertex_array_object"); if (t) e.createVertexArray = function () { return t.createVertexArrayOES() }, e.deleteVertexArray = function (e) { t.deleteVertexArrayOES(e) }, e.bindVertexArray = function (e) { t.bindVertexArrayOES(e) }, e.isVertexArray = function (e) { return t.isVertexArrayOES(e) } }(r), function (e) { var t = e.getExtension("WEBGL_draw_buffers"); if (t) e.drawBuffers = function (e, r) { t.drawBuffersWEBGL(e, r) } }(r), r.disjointTimerQueryExt = r.getExtension("EXT_disjoint_timer_query"), (t = r).multiDrawWebgl = t.getExtension("WEBGL_multi_draw"), (r.getSupportedExtensions() || []).forEach((function (e) { e.indexOf("lose_context") < 0 && e.indexOf("debug") < 0 && r.getExtension(e) })) } }, populateUniformTable: function (e) { for (var t = zt.programs[e], r = zt.programInfos[e] = { uniforms: {}, maxUniformLength: 0, maxAttributeLength: -1, maxUniformBlockNameLength: -1 }, n = r.uniforms, o = Qt.getProgramParameter(t, 35718), a = 0; a < o; ++a) { var i = Qt.getActiveUniform(t, a), s = i.name; r.maxUniformLength = Math.max(r.maxUniformLength, s.length + 1), "]" == s.slice(-1) && (s = s.slice(0, s.lastIndexOf("["))); var u = Qt.getUniformLocation(t, s); if (u) { var c = zt.getNewId(zt.uniforms); n[s] = [i.size, c], zt.uniforms[c] = u; for (var l = 1; l < i.size; ++l) { var d = s + "[" + l + "]"; u = Qt.getUniformLocation(t, d), c = zt.getNewId(zt.uniforms), zt.uniforms[c] = u } } } } }, Wt = ["default", "low-power", "high-performance"], Yt = {}, Se || ft.initMainThreadBlock(), Ht = function (e, t, r, n) { e || (e = this), this.parent = e, this.mount = e.mount, this.mounted = null, this.id = vt.nextInode++, this.name = t, this.mode = r, this.node_ops = {}, this.stream_ops = {}, this.rdev = n }, $t = 365, Vt = 146, Object.defineProperties(Ht.prototype, { read: { get: function () { return (this.mode & $t) === $t }, set: function (e) { e ? this.mode |= $t : this.mode &= -366 } }, write: { get: function () { return (this.mode & Vt) === Vt }, set: function (e) { e ? this.mode |= Vt : this.mode &= -147 } }, isFolder: { get: function () { return vt.isDir(this.mode) } }, isDevice: { get: function () { return vt.isChrdev(this.mode) } } }), vt.FSNode = Ht, vt.staticInit(), function () { for (var e = new Array(256), t = 0; t < 256; ++t) e[t] = String.fromCharCode(t); yt = e }(), Dt = Ee.BindingError = fn(Error, "BindingError"), St = Ee.InternalError = fn(Error, "InternalError"), Cn.prototype.isAliasOf = vn, Cn.prototype.clone = bn, Cn.prototype.delete = kn, Cn.prototype.isDeleted = Tn, Cn.prototype.deleteLater = Sn, $n.prototype.getPointee = In, $n.prototype.destructor = Fn, $n.prototype.argPackAdvance = 8, $n.prototype.readValueFromPointer = Ln, $n.prototype.deleteObject = Un, $n.prototype.fromWireType = Hn, Ee.getInheritedInstanceCount = jn, Ee.getLiveInheritedInstances = Gn, Ee.flushPendingDeletes = Dn, Ee.setDelayFunction = zn, Mt = Ee.UnboundTypeError = fn(Error, "UnboundTypeError"), Ee.count_emval_handles = io, Ee.get_first_emval = so, Xt = [null, an, sn, Xo, ea, ta, ra, na, oa, aa, ia, ua, Aa], qt = { e: rn, Q: an, P: sn, V: gn, y: Zn, q: eo, m: ro, $: oo, U: co, w: po, d: mo, c: Ao, x: go, o: vo, W: Eo, I: yo, J: bo, i: ko, z: ao, h: To, _: Do, C: So, R: Co, b: Oo, Y: Po, s: xo, M: Bo, t: Mo, g: Ro, f: qr, k: pt, j: jo, D: Go, F: Wo, E: Yo, G: qo, r: Zo, H: Ko, N: ea, O: ta, v: ra, S: na, T: oa, A: aa, u: ia, X: sa, B: Qr, a: Ue, K: ca, L: la, l: fa, p: ha, n: ma, Z: Aa }, Vr(), Zt = Ee.___wasm_call_ctors = function () { return (Zt = Ee.___wasm_call_ctors = Ee.asm.aa).apply(null, arguments) }, Kt = Ee._free = function () { return (Kt = Ee._free = Ee.asm.ba).apply(null, arguments) }, Jt = Ee._malloc = function () { return (Jt = Ee._malloc = Ee.asm.ca).apply(null, arguments) }, er = Ee._strlen = function () { return (er = Ee._strlen = Ee.asm.ea).apply(null, arguments) },tr = Ee.___errno_location = function () { return (tr = Ee.___errno_location = Ee.asm.fa).apply(null, arguments) },rr = Ee.___getTypeName = function () { return (rr = Ee.___getTypeName = Ee.asm.ga).apply(null, arguments) },Ee.___embind_register_native_and_builtin_types = function () { return (Ee.___embind_register_native_and_builtin_types = Ee.asm.ha).apply(null, arguments) },nr = Ee._emscripten_get_global_libc = function () { return (nr = Ee._emscripten_get_global_libc = Ee.asm.ia).apply(null, arguments) },or = Ee.__get_tzname = function () { return (or = Ee.__get_tzname = Ee.asm.ja).apply(null, arguments) },ar = Ee.__get_daylight = function () { return (ar = Ee.__get_daylight = Ee.asm.ka).apply(null, arguments) },ir = Ee.__get_timezone = function () { return (ir = Ee.__get_timezone = Ee.asm.la).apply(null, arguments) },sr = Ee._pthread_self = function () { return (sr = Ee._pthread_self = Ee.asm.ma).apply(null, arguments) },ur = Ee._emscripten_main_browser_thread_id = function () { return (ur = Ee._emscripten_main_browser_thread_id = Ee.asm.na).apply(null, arguments) },cr = Ee.___pthread_tsd_run_dtors = function () { return (cr = Ee.___pthread_tsd_run_dtors = Ee.asm.oa).apply(null, arguments) },lr = Ee._emscripten_main_thread_process_queued_calls = function () { return (lr = Ee._emscripten_main_thread_process_queued_calls = Ee.asm.pa).apply(null, arguments) },Ee._emscripten_current_thread_process_queued_calls = function () { return (Ee._emscripten_current_thread_process_queued_calls = Ee.asm.qa).apply(null, arguments) },dr = Ee._emscripten_register_main_browser_thread_id = function () { return (dr = Ee._emscripten_register_main_browser_thread_id = Ee.asm.ra).apply(null, arguments) },fr = Ee.__emscripten_do_dispatch_to_thread = function () { return (fr = Ee.__emscripten_do_dispatch_to_thread = Ee.asm.sa).apply(null, arguments) },pr = Ee._emscripten_sync_run_in_main_thread_4 = function () { return (pr = Ee._emscripten_sync_run_in_main_thread_4 = Ee.asm.ta).apply(null, arguments) },hr = Ee._emscripten_run_in_main_runtime_thread_js = function () { return (hr = Ee._emscripten_run_in_main_runtime_thread_js = Ee.asm.ua).apply(null, arguments) },mr = Ee.__emscripten_call_on_thread = function () { return (mr = Ee.__emscripten_call_on_thread = Ee.asm.va).apply(null, arguments) },Ee._emscripten_tls_init = function () { return (Ee._emscripten_tls_init = Ee.asm.wa).apply(null, arguments) },Ar = Ee.__emscripten_thread_init = function () { return (Ar = Ee.__emscripten_thread_init = Ee.asm.xa).apply(null, arguments) },gr = Ee.stackSave = function () { return (gr = Ee.stackSave = Ee.asm.ya).apply(null, arguments) },vr = Ee.stackRestore = function () { return (vr = Ee.stackRestore = Ee.asm.za).apply(null, arguments) },Er = Ee.stackAlloc = function () { return (Er = Ee.stackAlloc = Ee.asm.Aa).apply(null, arguments) },yr = Ee._emscripten_stack_set_limits = function () { return (yr = Ee._emscripten_stack_set_limits = Ee.asm.Ba).apply(null, arguments) },wr = Ee._memalign = function () { return (wr = Ee._memalign = Ee.asm.Ca).apply(null, arguments) },Ee.dynCall_ijiii = function () { return (Ee.dynCall_ijiii = Ee.asm.Da).apply(null, arguments) },Ee.dynCall_viiijj = function () { return (Ee.dynCall_viiijj = Ee.asm.Ea).apply(null, arguments) },Ee.dynCall_jij = function () { return (Ee.dynCall_jij = Ee.asm.Fa).apply(null, arguments) },Ee.dynCall_jii = function () { return (Ee.dynCall_jii = Ee.asm.Ga).apply(null, arguments) },Ee.dynCall_jiji = function () { return (Ee.dynCall_jiji = Ee.asm.Ha).apply(null, arguments) },Ee._ff_h264_cabac_tables = 77706,_r = Ee.__emscripten_allow_main_runtime_queued_calls = 241152,br = Ee.__emscripten_main_thread_futex = 1178e3,Ee.PThread = ft,Ee.PThread = ft,Ee.wasmMemory = Ue,Ee.ExitStatus = va,at = function e() { kr || Ea(), kr || (at = e) },Ee.run = Ea,Ee.preInit) for ("function" == typeof Ee.preInit && (Ee.preInit = [Ee.preInit]); Ee.preInit.length > 0;) Ee.preInit.pop()(); Se && (Fe = !1, ft.initWorker()), Ea(), Tr = e(Ee) } var _a = !1; function ba(e) { let t = e.next(), r = null; return n => { var o = new Uint8Array(n); if (r) { var a = new Uint8Array(r.length + o.length); a.set(r), a.set(o, r.length), o = a, r = null } for (; o.length >= t.value;) { var i = o.slice(t.value); t = e.next(o.slice(0, t.value)), o = i } o.length > 0 && (r = o) } } function ka() { ({}), Dr || (Dr = !0, wa()), a(), (() => { try { if ("object" == typeof WebAssembly && "function" == typeof WebAssembly.instantiate) { const e = new WebAssembly.Module(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0)); if (e instanceof WebAssembly.Module) return new WebAssembly.Instance(e) instanceof WebAssembly.Instance } } catch (e) { } return !1 })(), Date.now || (Date.now = function () { return (new Date).getTime() }), Tr.print = function (e) { postMessage({cmd: "print", text: e}) }, Tr.printErr = function (e) { postMessage({cmd: "printErr", text: e}) }, Tr.postRun = function () { var e = [], t = { _firstCheckpoint: 0, _lastCheckpoint: 0, _intervalBytes: 0, _lastSecondBytes: 0, addBytes: function (e) { 0 === t._firstCheckpoint ? (t._firstCheckpoint = Date.now(), t._lastCheckpoint = t._firstCheckpoint, t._intervalBytes += e) : Date.now() - t._lastCheckpoint < 1e3 ? t._intervalBytes += e : (t._lastSecondBytes = t._intervalBytes, t._intervalBytes = e, t._lastCheckpoint = Date.now()) }, reset: function () { t._firstCheckpoint = t._lastCheckpoint = 0, t._intervalBytes = 0, t._lastSecondBytes = 0 }, getCurrentKBps: function () { t.addBytes(0); var e = (Date.now() - t._lastCheckpoint) / 1e3; return 0 == e && (e = 1), t._intervalBytes / e / 1024 }, getLastSecondKBps: function () { return t.addBytes(0), 0 !== t._lastSecondBytes ? t._lastSecondBytes / 1024 : Date.now() - t._lastCheckpoint >= 500 ? t.getCurrentKBps() : 0 } }, r = { opt: {}, initAudioPlanar: function (e, t) { postMessage({cmd: "initAudioPlanar", samplerate: t, channels: e}); var r = [], n = [], o = 0; this.playAudioPlanar = function (t, a) { for (var i = a, s = [], u = 0, c = 0; c < 2; c++) { var l = Tr.HEAPU32[(t >> 2) + c] >> 2; s[c] = Tr.HEAPF32.subarray(l, l + i) } if (o) { if (!(i >= (a = 1024 - o))) return o += i, r[0] = Float32Array.of(...r[0], ...s[0]), void (2 == e && (r[1] = Float32Array.of(...r[1], ...s[1]))); n[0] = Float32Array.of(...r[0], ...s[0].subarray(0, a)), 2 == e && (n[1] = Float32Array.of(...r[1], ...s[1].subarray(0, a))), postMessage({ cmd: "playAudio", buffer: n }, n.map((e => e.buffer))), u = a, i -= a } for (o = i; o >= 1024; o -= 1024) n[0] = s[0].slice(u, u += 1024), 2 == e && (n[1] = s[1].slice(u - 1024, u)), postMessage({ cmd: "playAudio", buffer: n }, n.map((e => e.buffer))); o && (r[0] = s[0].slice(u), 2 == e && (r[1] = s[1].slice(u))) } }, inputFlv: function* () { yield 9; for (var t = new ArrayBuffer(4), r = new Uint8Array(t), a = new Uint32Array(t); ;) { r[3] = 0; var i = yield 15, s = i[4]; r[0] = i[7], r[1] = i[6], r[2] = i[5]; var u = a[0]; r[0] = i[10], r[1] = i[9], r[2] = i[8]; var c = a[0]; 16777215 === c && (r[3] = i[11], c = a[0]); var l = yield u; switch (s) { case 8: this.opt.hasAudio && e.push({ts: c, payload: l, decoder: n, type: 0}); break; case 9: e.push({ts: c, payload: l, decoder: o, type: l[0] >> 4}) } } }, play: function (r) { this.opt.debug && console.log("Jessibuca play", r), this.getDelay = function (e) { return e ? (this.firstTimestamp = e, this.startTimestamp = Date.now(), this.getDelay = function (e) { return this.delay = Date.now() - this.startTimestamp - (e - this.firstTimestamp), this.delay }, -1) : -1 }; var i = this.opt.vod ? () => { if (e.length) { var t = e[0]; if (-1 === this.getDelay(t.ts)) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload); else for (; e.length && (t = e[0], this.getDelay(t.ts) > this.videoBuffer);) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload) } } : () => { if (e.length) if (this.dropping) 1 == (t = e.shift()).type ? (this.dropping = !1, this.ts = t.ts, t.decoder.decode(t.payload)) : 0 == t.type && (this.ts = t.ts, t.decoder.decode(t.payload)); else { var t = e[0]; if (-1 === this.getDelay(t.ts)) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload); else if (this.delay > this.videoBuffer + 1e3) this.dropping = !0; else for (; e.length && (t = e[0], this.getDelay(t.ts) > this.videoBuffer);) e.shift(), this.ts = t.ts, t.decoder.decode(t.payload) } }; if (this.stopId = setInterval(i, 10), this.speedSamplerId = setInterval((() => { postMessage({cmd: "kBps", kBps: t.getLastSecondKBps()}) }), 1e3), 0 == r.indexOf("http")) { this.flvMode = !0; var s = this, u = new AbortController; fetch(r, {signal: u.signal}).then((function (e) { var r = e.body.getReader(), n = s.inputFlv(), o = ba(n), a = function () { r.read().then((({done: e, value: r}) => { e ? n.return(null) : (t.addBytes(r.byteLength), o(r), a()) })).catch((function (e) { n.return(null), s.opt.debug && console.error(e), -1 === e.toString().indexOf("The user aborted a request") && postMessage({ cmd: "printErr", text: e.toString() }) })) }; a() })).catch((e => { postMessage({cmd: "printErr", text: e.message}) })), this._close = function () { u.abort() } } else { if (this.flvMode = -1 != r.indexOf(".flv"), this.ws = new WebSocket(r), this.ws.binaryType = "arraybuffer", this.flvMode) { let e = this.inputFlv(); var c = ba(e); this.ws.onmessage = e => { t.addBytes(e.data.byteLength), c(e.data) }, this.ws.onerror = t => { e.return(null), postMessage({cmd: "printErr", text: t.toString()}) } } else this.ws.onmessage = r => { t.addBytes(r.data.byteLength); var a = new DataView(r.data); switch (a.getUint8(0)) { case 1: this.opt.hasAudio && e.push({ ts: a.getUint32(1, !1), payload: new Uint8Array(r.data, 5), decoder: n, type: 0 }); break; case 2: e.push({ ts: a.getUint32(1, !1), payload: new Uint8Array(r.data, 5), decoder: o, type: a.getUint8(5) >> 4 }) } }, this.ws.onerror = e => { postMessage({cmd: "printErr", text: e.toString()}) }; this._close = function () { this.ws.close(), this.ws = null } } this.setVideoSize = function (e, t) { postMessage({cmd: "initSize", w: e, h: t}); var r = e * t, n = r >> 2; if (this.opt.forceNoOffscreen || "undefined" == typeof OffscreenCanvas) this.draw = function (e, t, o, a) { var i = [Tr.HEAPU8.subarray(t, t + r), Tr.HEAPU8.subarray(o, o + n), Tr.HEAPU8.subarray(a, a + n)].map((e => Uint8Array.from(e))); postMessage({ cmd: "render", compositionTime: e, delay: this.delay, ts: this.ts, output: i }, i.map((e => e.buffer))) }; else { var o = new OffscreenCanvas(e, t), i = o.getContext("webgl"), s = a().default(i); this.draw = function (a, i, u, c) { s(e, t, Tr.HEAPU8.subarray(i, i + r), Tr.HEAPU8.subarray(u, u + n), Tr.HEAPU8.subarray(c, c + n)); let l = o.transferToImageBitmap(); postMessage({cmd: "render", compositionTime: a, delay: this.delay, ts: this.ts, buffer: l}, [l]) } } } }, close: function () { this._close && (this.opt.debug && console.log("worker close"), this._close(), clearInterval(this.stopId), this.stopId = null, clearInterval(this.speedSamplerId), this.speedSamplerId = null, t.reset(), this.ws = null, n.clear(), o.clear(), this.firstTimestamp = 0, this.startTimestamp = 0, this.delay = 0, this.ts = 0, this.flvMode = !1, e = [], delete this.playAudioPlanar, delete this.draw, delete this.getDelay) } }, n = new Tr.AudioDecoder(r), o = new Tr.VideoDecoder(r); postMessage({cmd: "init"}), self.onmessage = function (e) { var t = e.data; switch (t.cmd) { case"init": r.opt = JSON.parse(t.opt), n.sample_rate = t.sampleRate; break; case"getProp": postMessage({cmd: "getProp", value: r[t.prop]}); break; case"setProp": r[t.prop] = t.value; break; case"play": r.play(t.url); break; case"setVideoBuffer": r.videoBuffer = 1e3 * t.time | 0; break; case"close": r.close() } } } } "undefined" == typeof importScripts ? ve || (ve = !0, {}, l(), U(), $(), q(), Ae(), v(), R(), ge = class { constructor(e) { if (this._opt = Object.assign(v().DEFAULT_OPTIONS, e), this.$container = e.container, "string" == typeof e.container && (this.$container = document.querySelector(e.container)), !this.$container) throw new Error("Jessibuca need container option"); delete this._opt.container, this._opt.debug && console.log("options", this._opt), Ae().default(this), l().default(this), U().default(this), q().default(this), $().default(this) } set fullscreen(e) { e ? (R().checkFull() || this.$container.requestFullscreen(), R().$domToggle(this.$doms.minScreenDom, !0), R().$domToggle(this.$doms.fullscreenDom, !1)) : (R().checkFull() && document.exitFullscreen(), R().$domToggle(this.$doms.minScreenDom, !1), R().$domToggle(this.$doms.fullscreenDom, !0)), this._fullscreen !== e && (this.onFullscreen(e), this._trigger(v().EVEMTS.fullscreen, e)), this._fullscreen = e } get fullscreen() { return this._fullscreen } set playing(e) { e ? (R().$domToggle(this.$doms.playBigDom, !1), R().$domToggle(this.$doms.playDom, !1), R().$domToggle(this.$doms.pauseDom, !0), R().$domToggle(this.$doms.screenshotsDom, !0), R().$domToggle(this.$doms.recordDom, !0), this._quieting ? (R().$domToggle(this.$doms.quietAudioDom, !0), R().$domToggle(this.$doms.playAudioDom, !1)) : (R().$domToggle(this.$doms.quietAudioDom, !1), R().$domToggle(this.$doms.playAudioDom, !0))) : (this.$doms.speedDom && (this.$doms.speedDom.innerText = ""), this._playUrl && (R().$domToggle(this.$doms.playDom, !0), R().$domToggle(this.$doms.playBigDom, !0), R().$domToggle(this.$doms.pauseDom, !1)), R().$domToggle(this.$doms.recordDom, !1), R().$domToggle(this.$doms.recordingDom, !1), R().$domToggle(this.$doms.screenshotsDom, !1), R().$domToggle(this.$doms.quietAudioDom, !1), R().$domToggle(this.$doms.playAudioDom, !1)), this._playing !== e && (e ? (this.onPlay(), this._trigger(v().EVEMTS.play)) : (this.onPause(), this._trigger(v().EVEMTS.pause))), this._playing = e } get playing() { return this._playing } set quieting(e) { e ? (R().$domToggle(this.$doms.quietAudioDom, !0), R().$domToggle(this.$doms.playAudioDom, !1)) : (R().$domToggle(this.$doms.quietAudioDom, !1), R().$domToggle(this.$doms.playAudioDom, !0)), this._quieting !== e && (this.onMute(e), this._trigger(v().EVEMTS.mute, e)), this._quieting = e } get quieting() { return this._quieting } set loading(e) { e ? (R().$hideBtns(this.$doms), R().$domToggle(this.$doms.fullscreenDom, !0), R().$domToggle(this.$doms.pauseDom, !0), R().$domToggle(this.$doms.loadingDom, !0)) : R().$initBtns(this.$doms), this._loading = e } get loading() { return this._loading } set recording(e) { e ? (R().$domToggle(this.$doms.recordDom, !1), R().$domToggle(this.$doms.recordingDom, !0)) : (R().$domToggle(this.$doms.recordDom, !0), R().$domToggle(this.$doms.recordingDom, !1)), this._recording !== e && (this.onRecord(e), this._trigger(v().EVEMTS.record, e), this._recording = e) } get recording() { return this._recording } setDebug(e) { this._opt.isDebug = !!e } setTimeout(e) { this._opt.timeout = Number(e) } setVod(e) { this._opt.vod = !!e } setNoOffscreen(e) { this._opt.forceNoOffscreen = !!e } setScaleMode(e) { 0 === (e = Number(e)) ? (this._opt.isFullResize = !1, this._opt.isResize = !1) : 1 === e ? (this._opt.isFullResize = !1, this._opt.isResize = !0) : 2 === e && (this._opt.isFullResize = !0), this._resize() } mute() { this._mute() } cancelMute() { this._cancelMute() } audioResume() { this._cancelMute() } pause() { this._pause() } play(e) { this._play(e) } close() { this._close() } destroy() { this._close(), this._destroyAudioContext(), this._destroyContextGL(), this._decoderWorker.terminate(), this._removeEventListener(), this._initCheckVariable(), this._off(), this._removeContainerChild() } clearView() { this._clearView() } resize() { this._resize() } setBufferTime(e) { e = Number(e), this._decoderWorker.postMessage({cmd: v().POST_MESSAGE.setVideoBuffer, time: e}) } setRotate(e) { e = parseInt(e, 10), this._opt.rotate !== e && -1 !== [0, 90, 270].indexOf(e) && (this._opt.rotate = e, this.resize()) } setVolume(e) { if (this._gainNode) { if (e = parseFloat(e), isNaN(e)) return; this._gainNode.gain.setValueAtTime(e, this._audioContext.currentTime) } } setKeepScreenOn() { this._opt.keepScreenOn = !0 } setFullscreen(e) { const t = !!e; this.fullscreen !== t && (this.fullscreen = t) } hasLoaded() { return this._hasLoaded } screenshot(e, t, r) { this._screenshot(e, t, r) } on(e, t) { this._on(e, t) } }, window.Jessibuca = ge) : _a || (_a = !0, ka()) }();