diff --git a/_headers b/_headers index beea035e..72e194c8 100644 --- a/_headers +++ b/_headers @@ -13,6 +13,9 @@ ! Content-Security-Policy Content-Security-Policy: base-uri 'self'; font-src 'self'; media-src 'self'; manifest-src 'self'; form-action 'self'; fenced-frame-src 'self'; connect-src 'self' blob:; sandbox allow-forms allow-modals allow-pointer-lock allow-popups allow-same-origin allow-scripts; upgrade-insecure-requests +/res/pay.json + Link: ; rel="payment-method-manifest" + /ext/webemu/ Content-Type: application/xhtml+xml Cross-Origin-Opener-Policy: same-origin diff --git a/auth.xht b/auth.html similarity index 100% rename from auth.xht rename to auth.html diff --git a/auth.js b/auth.js index 0fb3ce12..4a7e6857 100644 --- a/auth.js +++ b/auth.js @@ -1,17 +1,21 @@ "use strict"; (() => { - const win = window.opener; - const hash = window.location.hash; + const { opener, location } = window; + const { hash, search } = location; - if (win != null) { - win.postMessage(hash); - win.focus(); - - window.stop(); - window.close(); + if (hash.length > 0) { + if (opener != null) { + opener.postMessage(hash); + opener.focus(); + window.close(); + } else { + localStorage.setItem("_cre_", hash); + location.replace("/"); + } } else { - window.localStorage.setItem("_cre_", hash); - window.location.replace("/"); + const url = new URLSearchParams(search).get("url"); + if (url != null && url.length > 0) + location.replace(url); } })(); diff --git a/index.css b/index.css index c7490bdf..ff0a026f 100644 --- a/index.css +++ b/index.css @@ -2089,6 +2089,21 @@ div.user[vip="diamond"]::after { } @media all and (max-width: 600px) { + #banner { + width: 100%; + height: unset; + aspect-ratio: 4/1; + } +} + +@media all and (max-width: 420px) { + #game-search, #yt-search { + width: calc(100% - 20px); + margin: 20px 10px; + } +} + +@media all and (max-width: 800px) { #hamb { position: relative; display: block; @@ -2126,13 +2141,15 @@ div.user[vip="diamond"]::after { } #nav-bar { + position: absolute; display: none; width: auto; height: auto; top: 50px; right: 5px; + border: 1px solid #808080; z-index: 2; - background: #c0c0c0; + background: #d0d0d0; } #nav-bar>button { @@ -2156,40 +2173,20 @@ div.user[vip="diamond"]::after { top: 0px; transform: rotate(45deg); } - - #banner { - width: 100%; - height: unset; - aspect-ratio: 4/1; - } -} - -@media all and (max-width: 420px) { - #game-search, #yt-search { - width: calc(100% - 20px); - margin: 20px 10px; - } } -@media all and (max-width: 800px) { +@media all and (max-width: 850px) { #content>div, #bottom-widget, #footer { width: calc(100% - 40px); } - #discord { - display: none; - } -} - -@media (max-width: 800px) and (orientation: portrait) { #community-page>div, #cg-frame { width: calc(100% + 10px); margin: 10px -5px; - aspect-ratio: 9/18; } - #search-container, #console-container { - aspect-ratio: 9/18; + #discord { + display: none; } } @@ -2199,15 +2196,13 @@ div.user[vip="diamond"]::after { } } -@media (max-width: 1300px) and (orientation: landscape) { - #frame { - width: 90%; - height: unset; - aspect-ratio: 16/9; +@media (max-width: 850px) and (orientation: portrait) { + #community-page>div, #cg-frame { + aspect-ratio: 9/18; } - #game { - width: 90%; + #search-container, #console-container { + aspect-ratio: 9/18; } } @@ -2226,3 +2221,15 @@ div.user[vip="diamond"]::after { aspect-ratio: 9/16; } } + +@media (max-width: 1300px) and (orientation: landscape) { + #frame { + width: 90%; + height: unset; + aspect-ratio: 16/9; + } + + #game { + width: 90%; + } +} diff --git a/index.dark.css b/index.dark.css index 6eaf0aa9..6aa63342 100644 --- a/index.dark.css +++ b/index.dark.css @@ -153,3 +153,9 @@ option, optgroup { #game { background: #404040; } + +@media all and (max-width: 800px) { + #nav-bar { + background: #404040; + } +} diff --git a/index.html b/index.html index 81dee5c0..a3781a8b 100644 --- a/index.html +++ b/index.html @@ -560,6 +560,7 @@

Settings

diff --git a/main.js b/main.js index e0e32020..f81cf9d6 100644 --- a/main.js +++ b/main.js @@ -1,4 +1,4 @@ /*! Copyright (C) 2024 WhiteSpider Dev. All rights reserved. Source: https://whitespider.dev/ !*/ "use strict"; / Created by WhiteSpider Dev. DO NOT remove this comment!!! This will break integrity checks! /; /*! For license information please see out.js.LICENSE.txt */ -(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};e.r(t),e.d(t,{Decoder:()=>me,Encoder:()=>pe,PacketType:()=>ue,protocol:()=>he});var n={};e.r(n),e.d(n,{decode:()=>rl,encode:()=>tl});const r=Object.create(null);r.open="0",r.close="1",r.ping="2",r.pong="3",r.message="4",r.upgrade="5",r.noop="6";const i=Object.create(null);Object.keys(r).forEach((e=>{i[r[e]]=e}));const s={type:"error",data:"parser error"},o="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),a="function"==typeof ArrayBuffer,c=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,l=({type:e,data:t},n,i)=>o&&t instanceof Blob?n?i(t):d(t,i):a&&(t instanceof ArrayBuffer||c(t))?n?i(t):d(new Blob([t]),i):i(r[e]+(t||"")),d=(e,t)=>{const n=new FileReader;return n.onload=function(){const e=n.result.split(",")[1];t("b"+(e||""))},n.readAsDataURL(e)};function h(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let u;const p="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)p["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const f="function"==typeof ArrayBuffer,m=(e,t)=>{if("string"!=typeof e)return{type:"message",data:b(e,t)};const n=e.charAt(0);return"b"===n?{type:"message",data:g(e.substring(1),t)}:i[n]?e.length>1?{type:i[n],data:e.substring(1)}:{type:i[n]}:s},g=(e,t)=>{if(f){const n=(e=>{let t,n,r,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const l=new ArrayBuffer(o),d=new Uint8Array(l);for(t=0;t>4,d[c++]=(15&r)<<4|i>>2,d[c++]=(3&i)<<6|63&s;return l})(e);return b(n,t)}return{base64:!0,data:e}},b=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,w=String.fromCharCode(30);let y;function v(e){return e.reduce(((e,t)=>e+t.length),0)}function _(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;i(e.hasOwnProperty(n)&&(t[n]=e[n]),t)),{})}const A=E.setTimeout,C=E.clearTimeout;function T(e,t){t.useNativeTimers?(e.setTimeoutFn=A.bind(E),e.clearTimeoutFn=C.bind(E)):(e.setTimeoutFn=E.setTimeout.bind(E),e.clearTimeoutFn=E.clearTimeout.bind(E))}class S extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type="TransportError"}}class I extends k{constructor(e){super(),this.writable=!1,T(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,n){return super.emitReserved("error",new S(e,t,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=m(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}(e);return t.length?"?"+t:""}}const j="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),L=64,O={};let D,R=0,B=0;function z(e){let t="";do{t=j[e%L]+t,e=Math.floor(e/L)}while(e>0);return t}function N(){const e=z(+new Date);return e!==D?(R=0,D=e):e+"."+z(R++)}for(;B{var e;3===n.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(n)),4===n.readyState&&(200===n.status||1223===n.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=H.requestsCount++,H.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=F,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete H.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}function V(){for(let e in H.requests)H.requests.hasOwnProperty(e)&&H.requests[e].abort()}H.requestsCount=0,H.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",V):"function"==typeof addEventListener&&addEventListener("onpagehide"in E?"pagehide":"unload",V,!1));const q="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),W=E.WebSocket||E.MozWebSocket,Z="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),K={websocket:class extends I{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,n=Z?{}:x(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=Z?new W(e,t,n):t?new W(e,t):new W(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t{try{this.ws.send(e)}catch(e){}r&&q((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!W}},webtransport:class extends I{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){y||(y=new TextDecoder);const n=[];let r=0,i=-1,o=!1;return new TransformStream({transform(a,c){for(n.push(a);;){if(0===r){if(v(n)<1)break;const e=_(n,1);o=!(128&~e[0]),i=127&e[0],r=i<126?3:126===i?1:2}else if(1===r){if(v(n)<2)break;const e=_(n,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(2===r){if(v(n)<8)break;const e=_(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>Math.pow(2,21)-1){c.enqueue(s);break}i=o*Math.pow(2,32)+t.getUint32(4),r=3}else{if(v(n)e){c.enqueue(s);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=new TransformStream({transform(e,t){!function(e,t){o&&e.data instanceof Blob?e.data.arrayBuffer().then(h).then(t):a&&(e.data instanceof ArrayBuffer||c(e.data))?t(h(e.data)):l(e,!1,(e=>{u||(u=new TextEncoder),t(u.encode(e))}))}(e,(n=>{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(n)}))}});r.readable.pipeTo(e.writable),this.writer=r.writable.getWriter();const i=()=>{n.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const d={type:"open"};this.query.sid&&(d.data=`{"sid":"${this.query.sid}"}`),this.writer.write(d).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t{r&&q((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends I{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let n=location.port;n||(n=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||n!==e.port}const t=e&&e.forceBase64;this.supportsBinary=$&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const n=e.split(w),r=[];for(let e=0;e{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach(((e,s)=>{l(e,!1,(e=>{r[s]=e,++i===n&&t(r.join(w))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new H(this.uri(),e)}doWrite(e,t){const n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},G=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Y=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function J(e){if(e.length>2e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");-1!=n&&-1!=r&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let i=G.exec(e||""),s={},o=14;for(;o--;)s[Y[o]]=i[o]||"";return-1!=n&&-1!=r&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const n=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||n.splice(0,1),"/"==t.slice(-1)&&n.splice(n.length-1,1),n}(0,s.path),s.queryKey=function(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n}(0,s.query),s}class X extends k{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=J(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=J(t.host).host),T(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},n=e.split("&");for(let e=0,r=n.length;e{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new K[e](n)}open(){let e;if(this.opts.rememberUpgrade&&X.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),n=!1;X.priorWebsocketSuccess=!1;const r=()=>{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!n)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;X.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function i(){n||(n=!0,l(),t.close(),t=null)}const s=e=>{const n=new Error("probe error: "+e);n.transport=t.name,i(),this.emitReserved("upgradeError",n)};function o(){s("transport closed")}function a(){s("socket closed")}function c(e){t&&e.name!==t.name&&i()}const l=()=>{t.removeListener("open",r),t.removeListener("error",s),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",r),t.once("error",s),t.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{n||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",X.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}var t;return this.writeBuffer}write(e,t,n){return this.sendPacket("message",e,t,n),this}send(e,t,n){return this.sendPacket("message",e,t,n),this}sendPacket(e,t,n,r){if("function"==typeof t&&(r=t,t=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const i={type:e,data:t,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():e()})):this.upgrading?n():e()),this}onError(e){X.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let n=0;const r=e.length;for(;n"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,te=Object.prototype.toString,ne="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===te.call(Blob),re="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===te.call(File);function ie(e){return Q&&(e instanceof ArrayBuffer||ee(e))||ne&&e instanceof Blob||re&&e instanceof File}function se(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t=0&&e.num{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(i),t.apply(this,e)};s.withError=!0,this.acks[e]=s}emitWithAck(e,...t){return new Promise(((n,r)=>{const i=(e,t)=>e?r(e):n(t);i.withError=!0,t.push(i),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...r)=>{if(n===this._queue[0])return null!==e?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...r)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:ue.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((e=>{if(!this.sendBuffer.some((t=>String(t.id)===e))){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}}))}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case ue.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ue.EVENT:case ue.BINARY_EVENT:this.onevent(e);break;case ue.ACK:case ue.BINARY_ACK:this.onack(e);break;case ue.DISCONNECT:this.ondisconnect();break;case ue.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let n=!1;return function(...r){n||(n=!0,t.packet({type:ue.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ue.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}ve.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this.max)},ve.prototype.reset=function(){this.attempts=0},ve.prototype.setMin=function(e){this.ms=e},ve.prototype.setMax=function(e){this.max=e},ve.prototype.setJitter=function(e){this.jitter=e};class _e extends k{constructor(e,n){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(n=e,e=void 0),(n=n||{}).path=n.path||"/socket.io",this.opts=n,T(this,n),this.reconnection(!1!==n.reconnection),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=n.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new ve({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==n.timeout?2e4:n.timeout),this._readyState="closed",this.uri=e;const i=n.parser||t;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==n.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new X(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=be(t,"open",(function(){n.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=be(t,"error",i);if(!1!==this._timeout){const e=this._timeout,n=this.setTimeoutFn((()=>{r(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(r),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(be(e,"ping",this.onping.bind(this)),be(e,"data",this.ondata.bind(this)),be(e,"error",this.onerror.bind(this)),be(e,"close",this.onclose.bind(this)),be(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){q((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new ye(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;ne())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const ke={};function Ee(e,t){"object"==typeof e&&(t=e,e=void 0);const n=function(e,t="",n){let r=e;n=n||"undefined"!=typeof location&&location,null==e&&(e=n.protocol+"//"+n.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==n?n.protocol+"//"+e:"https://"+e),r=J(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+t,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(e,(t=t||{}).path||"/socket.io"),r=n.source,i=n.id,s=n.path,o=ke[i]&&s in ke[i].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new _e(r,t):(ke[i]||(ke[i]=new _e(r,t)),a=ke[i]),n.query&&!t.query&&(t.query=n.queryKey),a.socket(n.path,t)}Object.assign(Ee,{Manager:_e,Socket:ye,io:Ee,connect:Ee});const xe=function(e){const t=[];let n=0;for(let r=0;r>6|192,t[n++]=63&i|128):55296==(64512&i)&&r+1>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=63&i|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=63&i|128)}return t},Ae={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let t=0;t>2,d=(3&i)<<4|o>>4;let h=(15&o)<<2|c>>6,u=63&c;a||(u=64,s||(h=64)),r.push(n[l],n[d],n[h],n[u])}return r.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(xe(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n191&&i<224){const s=e[n++];t[r++]=String.fromCharCode((31&i)<<6|63&s)}else if(i>239&&i<365){const s=((7&i)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;t[r++]=String.fromCharCode(55296+(s>>10)),t[r++]=String.fromCharCode(56320+(1023&s))}else{const s=e[n++],o=e[n++];t[r++]=String.fromCharCode((15&i)<<12|(63&s)<<6|63&o)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let t=0;t>4;if(r.push(c),64!==o){const e=s<<4&240|o>>2;if(r.push(e),64!==a){const e=o<<6&192|a;r.push(e)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class Ce extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const Te=function(e){return function(e){const t=xe(e);return Ae.encodeByteArray(t,!0)}(e).replace(/\./g,"")},Se=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0})()||(()=>{if("undefined"==typeof document)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&function(e){try{return Ae.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null}(e[1]);return t&&JSON.parse(t)})()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},Ie=()=>{var e;return null===(e=Se())||void 0===e?void 0:e.config};class je{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n),"function"==typeof e&&(this.promise.catch((()=>{})),1===e.length?e(t):e(t,n))}}}function Le(){try{return"object"==typeof indexedDB}catch(e){return!1}}function Oe(){return new Promise(((e,t)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),e(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var e;t((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}}))}class De extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,De.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Re.prototype.create)}}class Re{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){const n=t[0]||{},r=`${this.service}/${e}`,i=this.errors[e],s=i?function(e,t){return e.replace(Be,((e,n)=>{const r=t[n];return null!=r?String(r):`<${n}?>`}))}(i,n):"Error",o=`${this.serviceName}: ${s} (${r}).`;return new De(r,o,n)}}const Be=/\{\$([^}]+)}/g;function ze(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const i of n){if(!r.includes(i))return!1;const n=e[i],s=t[i];if(Ne(n)&&Ne(s)){if(!ze(n,s))return!1}else if(n!==s)return!1}for(const e of r)if(!n.includes(e))return!1;return!0}function Ne(e){return null!==e&&"object"==typeof e}const Pe=1e3,Ue=2,Me=144e5,Fe=.5;function $e(e,t=Pe,n=Ue){const r=t*Math.pow(n,e),i=Math.round(Fe*r*(Math.random()-.5)*2);return Math.min(Me,r+i)}function He(e){return e&&e._delegate?e._delegate:e}class Ve{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const qe="[DEFAULT]";class We{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const e=new je;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{const n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const n=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),r=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(!this.isInitialized(n)&&!this.shouldAutoInitialize()){if(r)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:n})}catch(e){if(r)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(function(e){return"EAGER"===e.instantiationMode}(e))try{this.getOrInitializeService({instanceIdentifier:qe})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const n=this.normalizeInstanceIdentifier(e);try{const e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch(e){}}}}clearInstance(e=qe){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter((e=>"INTERNAL"in e)).map((e=>e.INTERNAL.delete())),...e.filter((e=>"_delete"in e)).map((e=>e._delete()))])}isComponentSet(){return null!=this.component}isInitialized(e=qe){return this.instances.has(e)}getOptions(e=qe){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const r=this.getOrInitializeService({instanceIdentifier:n,options:t});for(const[e,t]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(e)&&t.resolve(r);return r}onInit(e,t){var n;const r=this.normalizeInstanceIdentifier(t),i=null!==(n=this.onInitCallbacks.get(r))&&void 0!==n?n:new Set;i.add(e),this.onInitCallbacks.set(r,i);const s=this.instances.get(r);return s&&e(s,r),()=>{i.delete(e)}}invokeOnInitCallbacks(e,t){const n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(r=e,r===qe?void 0:r),options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var r;return n||null}normalizeInstanceIdentifier(e=qe){return this.component?this.component.multipleInstances?e:qe:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class Ze{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new We(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const Ke=[];var Ge;!function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"}(Ge||(Ge={}));const Ye={debug:Ge.DEBUG,verbose:Ge.VERBOSE,info:Ge.INFO,warn:Ge.WARN,error:Ge.ERROR,silent:Ge.SILENT},Je=Ge.INFO,Xe={[Ge.DEBUG]:"log",[Ge.VERBOSE]:"log",[Ge.INFO]:"info",[Ge.WARN]:"warn",[Ge.ERROR]:"error"},Qe=(e,t,...n)=>{if(tt.some((t=>e instanceof t));let nt,rt;const it=new WeakMap,st=new WeakMap,ot=new WeakMap,at=new WeakMap,ct=new WeakMap;let lt={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return st.get(e);if("objectStoreNames"===t)return e.objectStoreNames||ot.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return ht(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function dt(e){return"function"==typeof e?(t=e)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(rt||(rt=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(ut(this),e),ht(it.get(this))}:function(...e){return ht(t.apply(ut(this),e))}:function(e,...n){const r=t.call(ut(this),e,...n);return ot.set(r,e.sort?e.sort():[e]),ht(r)}:(e instanceof IDBTransaction&&function(e){if(st.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)}));st.set(e,t)}(e),tt(e,nt||(nt=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,lt):e);var t}function ht(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(ht(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)}));return t.then((t=>{t instanceof IDBCursor&&it.set(t,e)})).catch((()=>{})),ct.set(t,e),t}(e);if(at.has(e))return at.get(e);const t=dt(e);return t!==e&&(at.set(e,t),ct.set(t,e)),t}const ut=e=>ct.get(e);function pt(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=ht(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(ht(o.result),e.oldVersion,e.newVersion,ht(o.transaction),e)})),n&&o.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),a.then((e=>{s&&e.addEventListener("close",(()=>s())),i&&e.addEventListener("versionchange",(e=>i(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a}const ft=["get","getKey","getAll","getAllKeys","count"],mt=["put","add","delete","clear"],gt=new Map;function bt(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(gt.get(t))return gt.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=mt.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!ft.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&s.done]))[0]};return gt.set(t,s),s}var wt;wt=lt,lt={...wt,get:(e,t,n)=>bt(e,t)||wt.get(e,t,n),has:(e,t)=>!!bt(e,t)||wt.has(e,t)};class yt{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===(null==t?void 0:t.type)}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const vt="@firebase/app",_t="0.10.4",kt=new et("@firebase/app"),Et="@firebase/app-compat",xt="@firebase/analytics-compat",At="@firebase/analytics",Ct="@firebase/app-check-compat",Tt="@firebase/app-check",St="@firebase/auth",It="@firebase/auth-compat",jt="@firebase/database",Lt="@firebase/database-compat",Ot="@firebase/functions",Dt="@firebase/functions-compat",Rt="@firebase/installations",Bt="@firebase/installations-compat",zt="@firebase/messaging",Nt="@firebase/messaging-compat",Pt="@firebase/performance",Ut="@firebase/performance-compat",Mt="@firebase/remote-config",Ft="@firebase/remote-config-compat",$t="@firebase/storage",Ht="@firebase/storage-compat",Vt="@firebase/firestore",qt="@firebase/vertexai-preview",Wt="@firebase/firestore-compat",Zt="firebase",Kt="[DEFAULT]",Gt={[vt]:"fire-core",[Et]:"fire-core-compat",[At]:"fire-analytics",[xt]:"fire-analytics-compat",[Tt]:"fire-app-check",[Ct]:"fire-app-check-compat",[St]:"fire-auth",[It]:"fire-auth-compat",[jt]:"fire-rtdb",[Lt]:"fire-rtdb-compat",[Ot]:"fire-fn",[Dt]:"fire-fn-compat",[Rt]:"fire-iid",[Bt]:"fire-iid-compat",[zt]:"fire-fcm",[Nt]:"fire-fcm-compat",[Pt]:"fire-perf",[Ut]:"fire-perf-compat",[Mt]:"fire-rc",[Ft]:"fire-rc-compat",[$t]:"fire-gcs",[Ht]:"fire-gcs-compat",[Vt]:"fire-fst",[Wt]:"fire-fst-compat",[qt]:"fire-vertex","fire-js":"fire-js",[Zt]:"fire-js-all"},Yt=new Map,Jt=new Map,Xt=new Map;function Qt(e,t){try{e.container.addComponent(t)}catch(n){kt.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function en(e){const t=e.name;if(Xt.has(t))return kt.debug(`There were multiple attempts to register component ${t}.`),!1;Xt.set(t,e);for(const t of Yt.values())Qt(t,e);for(const t of Jt.values())Qt(t,e);return!0}function tn(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const nn=new Re("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class rn{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new Ve("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw nn.create("app-deleted",{appName:this._name})}}function sn(e,t={}){let n=e;"object"!=typeof t&&(t={name:t});const r=Object.assign({name:Kt,automaticDataCollectionEnabled:!1},t),i=r.name;if("string"!=typeof i||!i)throw nn.create("bad-app-name",{appName:String(i)});if(n||(n=Ie()),!n)throw nn.create("no-options");const s=Yt.get(i);if(s){if(ze(n,s.options)&&ze(r,s.config))return s;throw nn.create("duplicate-app",{appName:i})}const o=new Ze(i);for(const e of Xt.values())o.addComponent(e);const a=new rn(n,r,o);return Yt.set(i,a),a}function on(e,t,n){var r;let i=null!==(r=Gt[e])&&void 0!==r?r:e;n&&(i+=`-${n}`);const s=i.match(/\s|\//),o=t.match(/\s|\//);if(s||o){const e=[`Unable to register library "${i}" with version "${t}":`];return s&&e.push(`library name "${i}" contains illegal characters (whitespace or "/")`),s&&o&&e.push("and"),o&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void kt.warn(e.join(" "))}en(new Ve(`${i}-version`,(()=>({library:i,version:t})),"VERSION"))}const an="firebase-heartbeat-database",cn=1,ln="firebase-heartbeat-store";let dn=null;function hn(){return dn||(dn=pt(an,cn,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(ln)}catch(e){console.warn(e)}}}).catch((e=>{throw nn.create("idb-open",{originalErrorMessage:e.message})}))),dn}async function un(e,t){try{const n=(await hn()).transaction(ln,"readwrite"),r=n.objectStore(ln);await r.put(t,pn(e)),await n.done}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-set",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}function pn(e){return`${e.name}!${e.options.appId}`}class fn{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new gn(t),this._heartbeatsCachePromise=this._storage.read().then((e=>(this._heartbeatsCache=e,e)))}async triggerHeartbeat(){var e,t;const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=mn();if((null!=(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||(this._heartbeatsCache=await this._heartbeatsCachePromise,null!=(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)))&&this._heartbeatsCache.lastSentHeartbeatDate!==r&&!this._heartbeatsCache.heartbeats.some((e=>e.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((e=>{const t=new Date(e.date).valueOf();return Date.now()-t<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){var e;if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const t=mn(),{heartbeatsToSend:n,unsentEntries:r}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const e=n.find((e=>e.agent===i.agent));if(e){if(e.dates.push(i.date),bn(n)>t){e.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),bn(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),i=Te(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=t,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function mn(){return(new Date).toISOString().substring(0,10)}class gn{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!Le()&&Oe().then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const e=await async function(e){try{const t=(await hn()).transaction(ln),n=await t.objectStore(ln).get(pn(e));return await t.done,n}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-get",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}(this.app);return(null==e?void 0:e.heartbeats)?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function bn(e){return Te(JSON.stringify({version:2,heartbeats:e})).length}en(new Ve("platform-logger",(e=>new yt(e)),"PRIVATE")),en(new Ve("heartbeat",(e=>new fn(e)),"PRIVATE")),on(vt,_t,""),on(vt,_t,"esm2017"),on("fire-js",""),on("firebase","10.12.1","app");const wn="@firebase/installations",yn="0.6.7",vn=1e4,_n=`w:${yn}`,kn="FIS_v2",En="https://firebaseinstallations.googleapis.com/v1",xn=36e5,An=new Re("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Cn(e){return e instanceof De&&e.code.includes("request-failed")}function Tn({projectId:e}){return`${En}/projects/${e}/installations`}function Sn(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function In(e,t){const n=(await t.json()).error;return An.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function jn({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}async function Ln(e){const t=await e();return t.status>=500&&t.status<600?e():t}function On(e){return new Promise((t=>{setTimeout(t,e)}))}const Dn=/^[cdef][\w-]{21}$/,Rn="";function Bn(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function(e){var t;return(t=e,btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_")).substr(0,22)}(e);return Dn.test(t)?t:Rn}catch(e){return Rn}}function zn(e){return`${e.appName}!${e.appId}`}const Nn=new Map;function Pn(e,t){const n=zn(e);Un(n,t),function(e,t){const n=(!Mn&&"BroadcastChannel"in self&&(Mn=new BroadcastChannel("[Firebase] FID Change"),Mn.onmessage=e=>{Un(e.data.key,e.data.fid)}),Mn);n&&n.postMessage({key:e,fid:t}),0===Nn.size&&Mn&&(Mn.close(),Mn=null)}(n,t)}function Un(e,t){const n=Nn.get(e);if(n)for(const e of n)e(t)}let Mn=null;const Fn="firebase-installations-database",$n=1,Hn="firebase-installations-store";let Vn=null;function qn(){return Vn||(Vn=pt(Fn,$n,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Hn)}})),Vn}async function Wn(e,t){const n=zn(e),r=(await qn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n);return await i.put(t,n),await r.done,s&&s.fid===t.fid||Pn(e,t.fid),t}async function Zn(e){const t=zn(e),n=(await qn()).transaction(Hn,"readwrite");await n.objectStore(Hn).delete(t),await n.done}async function Kn(e,t){const n=zn(e),r=(await qn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n),o=t(s);return void 0===o?await i.delete(n):await i.put(o,n),await r.done,!o||s&&s.fid===o.fid||Pn(e,o.fid),o}async function Gn(e){let t;const n=await Kn(e.appConfig,(n=>{const r=function(e){return Xn(e||{fid:Bn(),registrationStatus:0})}(n),i=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine)return{installationEntry:t,registrationPromise:Promise.reject(An.create("app-offline"))};const n={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},r=async function(e,t){try{const n=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Tn(e),i=jn(e),s=t.getImmediate({optional:!0});if(s){const e=await s.getHeartbeatsHeader();e&&i.append("x-firebase-client",e)}const o={fid:n,authVersion:kn,appId:e.appId,sdkVersion:_n},a={method:"POST",headers:i,body:JSON.stringify(o)},c=await Ln((()=>fetch(r,a)));if(c.ok){const e=await c.json();return{fid:e.fid||n,registrationStatus:2,refreshToken:e.refreshToken,authToken:Sn(e.authToken)}}throw await In("Create Installation",c)}(e,t);return Wn(e.appConfig,n)}catch(n){throw Cn(n)&&409===n.customData.serverCode?await Zn(e.appConfig):await Wn(e.appConfig,{fid:t.fid,registrationStatus:0}),n}}(e,n);return{installationEntry:n,registrationPromise:r}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:Yn(e)}:{installationEntry:t}}(e,r);return t=i.registrationPromise,i.installationEntry}));return n.fid===Rn?{installationEntry:await t}:{installationEntry:n,registrationPromise:t}}async function Yn(e){let t=await Jn(e.appConfig);for(;1===t.registrationStatus;)await On(100),t=await Jn(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:n}=await Gn(e);return n||t}return t}function Jn(e){return Kn(e,(e=>{if(!e)throw An.create("installation-not-found");return Xn(e)}))}function Xn(e){return 1===(t=e).registrationStatus&&t.registrationTime+vnfetch(r,a)));if(c.ok)return Sn(await c.json());throw await In("Generate Auth Token",c)}async function er(e,t=!1){let n;const r=await Kn(e.appConfig,(r=>{if(!nr(r))throw An.create("not-registered");const i=r.authToken;if(!t&&(2===(s=i).requestStatus&&!function(e){const t=Date.now();return t{if(!nr(e))throw An.create("not-registered");return 1===(t=e.authToken).requestStatus&&t.requestTime+vn{const t=e.getProvider("app").getImmediate(),n=function(e){if(!e||!e.options)throw rr("App Configuration");if(!e.name)throw rr("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw rr(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:n,heartbeatServiceProvider:tn(t,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),en(new Ve("installations-internal",(e=>{const t=tn(e.getProvider("app").getImmediate(),ir).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:n,registrationPromise:r}=await Gn(t);return r?r.catch(console.error):er(t).catch(console.error),n.fid}(t),getToken:e=>async function(e,t=!1){const n=e;return await async function(e){const{registrationPromise:t}=await Gn(e);t&&await t}(n),(await er(n,t)).token}(t,e)}}),"PRIVATE")),on(wn,yn),on(wn,yn,"esm2017");const sr="analytics",or="firebase_id",ar="origin",cr=6e4,lr="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",dr="https://www.googletagmanager.com/gtag/js",hr=new et("@firebase/analytics"),ur=new Re("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function pr(e){if(!e.startsWith(dr)){const t=ur.create("invalid-gtag-resource",{gtagURL:e});return hr.warn(t.message),""}return e}function fr(e){return Promise.all(e.map((e=>e.catch((e=>e)))))}const mr=30,gr=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};function br(e){return new Headers({Accept:"application/json","x-goog-api-key":e})}async function wr(e,t=gr,n){const{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw ur.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw ur.create("no-api-key")}const o=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},a=new vr;return setTimeout((async()=>{a.abort()}),void 0!==n?n:cr),yr({appId:r,apiKey:i,measurementId:s},o,a,t)}async function yr(e,{throttleEndTimeMillis:t,backoffCount:n},r,i=gr){var s;const{appId:o,measurementId:a}=e;try{await function(e,t){return new Promise(((n,r)=>{const i=Math.max(t-Date.now(),0),s=setTimeout(n,i);e.addEventListener((()=>{clearTimeout(s),r(ur.create("fetch-throttle",{throttleEndTimeMillis:t}))}))}))}(r,t)}catch(e){if(a)return hr.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:a};throw e}try{const t=await async function(e){var t;const{appId:n,apiKey:r}=e,i={method:"GET",headers:br(r)},s=lr.replace("{app-id}",n),o=await fetch(s,i);if(200!==o.status&&304!==o.status){let e="";try{const n=await o.json();(null===(t=n.error)||void 0===t?void 0:t.message)&&(e=n.error.message)}catch(e){}throw ur.create("config-fetch-failed",{httpStatus:o.status,responseMessage:e})}return o.json()}(e);return i.deleteThrottleMetadata(o),t}catch(t){const c=t;if(!function(e){if(!(e instanceof De&&e.customData))return!1;const t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}(c)){if(i.deleteThrottleMetadata(o),a)return hr.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==c?void 0:c.message}]`),{appId:o,measurementId:a};throw t}const l=503===Number(null===(s=null==c?void 0:c.customData)||void 0===s?void 0:s.httpStatus)?$e(n,i.intervalMillis,mr):$e(n,i.intervalMillis),d={throttleEndTimeMillis:Date.now()+l,backoffCount:n+1};return i.setThrottleMetadata(o,d),hr.debug(`Calling attemptFetch again in ${l} millis`),yr(e,d,r,i)}}class vr{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach((e=>e()))}}let _r,kr;async function Er(e,t,n,r,i,s,o){var a;const c=wr(e);c.then((t=>{n[t.measurementId]=t.appId,e.options.measurementId&&t.measurementId!==e.options.measurementId&&hr.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${t.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)})).catch((e=>hr.error(e))),t.push(c);const l=async function(){if(!Le())return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await Oe()}catch(e){return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then((e=>e?r.getId():void 0)),[d,h]=await Promise.all([c,l]);(function(e){const t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(dr)&&n.src.includes(e))return n;return null})(s)||function(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy("firebase-js-sdk-policy",t)),n}(0,{createScriptURL:pr}),r=document.createElement("script"),i=`${dr}?l=${e}&id=${t}`;r.src=n?null==n?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}(s,d.measurementId),kr&&(i("consent","default",kr),kr=void 0),i("js",new Date);const u=null!==(a=null==o?void 0:o.config)&&void 0!==a?a:{};return u[ar]="firebase",u.update=!0,null!=h&&(u[or]=h),i("config",d.measurementId,u),_r&&(i("set",_r),_r=void 0),d.measurementId}class xr{constructor(e){this.app=e}_delete(){return delete Ar[this.app.options.appId],Promise.resolve()}}let Ar={},Cr=[];const Tr={};let Sr,Ir,jr="dataLayer",Lr=!1;function Or(e,t,n){!function(){const e=[];if(function(){const e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}()&&e.push("This is a browser extension environment."),"undefined"!=typeof navigator&&navigator.cookieEnabled||e.push("Cookies are not available."),e.length>0){const t=e.map(((e,t)=>`(${t+1}) ${e}`)).join(" "),n=ur.create("invalid-analytics-context",{errorInfo:t});hr.warn(n.message)}}();const r=e.options.appId;if(!r)throw ur.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw ur.create("no-api-key");hr.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId} provided in the "measurementId" field in the local Firebase config.`)}if(null!=Ar[r])throw ur.create("already-exists",{id:r});if(!Lr){!function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t}(jr);const{wrappedGtag:e,gtagCore:t}=function(e,t,n,r,i){let s=function(...e){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=function(e,t,n,r){return async function(i,...s){try{if("event"===i){const[r,i]=s;await async function(e,t,n,r,i){try{let s=[];if(i&&i.send_to){let e=i.send_to;Array.isArray(e)||(e=[e]);const r=await fr(n);for(const n of e){const e=r.find((e=>e.measurementId===n)),i=e&&t[e.appId];if(!i){s=[];break}s.push(i)}}0===s.length&&(s=Object.values(t)),await Promise.all(s),e("event",r,i||{})}catch(e){hr.error(e)}}(e,t,n,r,i)}else if("config"===i){const[i,o]=s;await async function(e,t,n,r,i,s){const o=r[i];try{if(o)await t[o];else{const e=(await fr(n)).find((e=>e.measurementId===i));e&&await t[e.appId]}}catch(e){hr.error(e)}e("config",i,s)}(e,t,n,r,i,o)}else if("consent"===i){const[t,n]=s;e("consent",t,n)}else if("get"===i){const[t,n,r]=s;e("get",t,n,r)}else if("set"===i){const[t]=s;e("set",t)}else e(i,...s)}catch(e){hr.error(e)}}}(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Ar,Cr,Tr,jr,"gtag");Ir=e,Sr=t,Lr=!0}return Ar[r]=Er(e,Cr,Tr,t,Sr,jr,n),new xr(e)}const Dr="@firebase/analytics",Rr="0.10.4";en(new Ve(sr,((e,{options:t})=>Or(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)),"PUBLIC")),en(new Ve("analytics-internal",(function(e){try{const t=e.getProvider(sr).getImmediate();return{logEvent:(e,n,r)=>function(e,t,n,r){e=He(e),async function(e,t,n,r,i){if(i&&i.global)e("event",n,r);else{const i=await t;e("event",n,Object.assign(Object.assign({},r),{send_to:i}))}}(Ir,Ar[e.app.options.appId],t,n,r).catch((e=>hr.error(e)))}(t,e,n,r)}}catch(e){throw ur.create("interop-component-reg-failed",{reason:e})}}),"PRIVATE")),on(Dr,Rr),on(Dr,Rr,"esm2017");const Br=function(){for(let e=Object.getPrototypeOf(this);null!=e;e=Object.getPrototypeOf(e))try{delete e.constructor}catch(e){}},zr=Object.freeze(Object.create(null));Object.defineProperty(Br,"prototype",{value:zr,writable:!1,enumerable:!1,configurable:!1}),Object.setPrototypeOf(Br,null),Object.freeze(Br);const Nr=Br;var Pr,Ur=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Pr=new WeakMap;const Mr=class extends Nr{constructor(){super(...arguments),Pr.set(this,Object.create(null))}get size(){return Object.keys(Ur(this,Pr,"f")).length}has(e){return e in Ur(this,Pr,"f")}get(e){return Ur(this,Pr,"f")[e]||null}set(e,t){Ur(this,Pr,"f")[e]=t}delete(e){return delete Ur(this,Pr,"f")[e]}clear(){const e=Ur(this,Pr,"f");for(const t of Object.keys(e))delete e[t]}keys(){return Object.keys(Ur(this,Pr,"f"))}values(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push(e[n]);return t}entries(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push([n,e[n]]);return t}};var Fr,$r=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Fr=new WeakMap;const Hr=class extends Nr{get size(){return $r(this,Fr,"f").length}constructor(e){super(),Fr.set(this,void 0),function(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?i.call(e,n):i?i.value=n:t.set(e,n)}(this,Fr,e,"f")}has(e){return null!=$r(this,Fr,"f").getItem(e)}get(e){return $r(this,Fr,"f").getItem(e)}set(e,t){$r(this,Fr,"f").setItem(e,t)}delete(e){return $r(this,Fr,"f").removeItem(e),!0}clear(){$r(this,Fr,"f").clear()}keys(){const e=$r(this,Fr,"f"),t=e.length,n=new Array(t);for(let r=0;r>18&63]+Jr[n>>12&63]+Jr[n>>6&63]+Jr[63&n]}const s=r%3;return 1===s?(n="==",t=t.slice(0,-2)):2===s&&(n="=",t=t.slice(0,-1)),t+n},decode:function(e){const t=.75*e.length-(e.endsWith("==")?2:e.endsWith("=")?1:0),n=new ArrayBuffer(t),r=new Uint8Array(n,0,t);let i=0;for(let t=0;t>16&255,r[i++]=n>>8&255,r[i++]=255&n}return n}};Object.setPrototypeOf(Qr,null),Object.freeze(Qr);const ei=Qr,ti={encode:function(e){const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return new Uint8Array(n).buffer},decode:function(e){const t=new Uint8Array(e);let n="",r=0;for(;re.unicode))}const wi={},yi={},vi={};function _i(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}function ki(e,t,n,r){return new Promise(((i,s)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a="string"==typeof t?o.objectStore(t):t.map((e=>o.objectStore(e)));let c;r(a,o,(e=>{c=e})),o.oncomplete=()=>i(c),o.onerror=()=>s(o.error)}))}function Ei(e){const t=wi[e],n=t&&t.result;if(n){n.close();const t=vi[e];if(t)for(const e of t)e()}delete wi[e],delete yi[e],delete vi[e]}const xi=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","!e.match(/\w/)||xi.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase())).filter(Boolean)}const Ci=2;function Ti(e){return e.filter(Boolean).map((e=>e.toLowerCase())).filter((e=>e.length>=Ci))}function Si(e,t,n,r){e[t](n).onsuccess=e=>r&&r(e.target.result)}function Ii(e,t,n){Si(e,"get",t,n)}function ji(e,t,n){Si(e,"getAll",t,n)}function Li(e){e.commit&&e.commit()}function Oi(e,t){const n=function(e,t){let n=e[0];for(let r=1;rt(i)&&(n=i)}return n}(e,(e=>e.length)),r=[];for(const i of n)e.some((e=>-1===e.findIndex((e=>t(e)===t(i)))))||r.push(i);return r}async function Di(e,t,n,r){try{const i=function(e){return e.map((({annotation:e,emoticon:t,group:n,order:r,shortcodes:i,skins:s,tags:o,emoji:a,version:c})=>{const l=[...new Set(Ti([...(i||[]).map(Ai).flat(),...o.map(Ai).flat(),...Ai(e),t]))].sort(),d={annotation:e,group:n,order:r,tags:o,tokens:l,unicode:a,version:c};if(t&&(d.emoticon=t),i&&(d.shortcodes=i),s){d.skinTones=[],d.skinUnicodes=[],d.skinVersions=[];for(const{tone:e,emoji:t,version:n}of s)d.skinTones.push(e),d.skinUnicodes.push(t),d.skinVersions.push(n)}return d}))}(t);await ki(e,[si,oi],mi,(([e,t],s)=>{let o,a,c=0;function l(){2==++c&&function(){if(o!==r||a!==n){e.clear();for(const t of i)e.put(t);t.put(r,hi),t.put(n,ui),Li(s)}}()}Ii(t,hi,(e=>{o=e,l()})),Ii(t,ui,(e=>{a=e,l()}))}))}finally{}}async function Ri(e,t){const n=Ti(Ai(t));return n.length?ki(e,si,fi,((e,t,r)=>{const i=[],s=()=>{const e=Oi(i,(e=>e.unicode));r(e.sort(((e,t)=>e.order{i.push(e),i.length===n.length&&s()}))}})):[]}function Bi(e,t,n){return ki(e,t,fi,((e,t,r)=>Ii(e,n,r)))}const zi=["name","url"];function Ni(e){!function(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||zi.some((t=>!(t in e[0]))));if(!t||n)throw new Error("Custom emojis are in the wrong format")}(e);const t=(e,t)=>e.name.toLowerCase()Ai(e))).flat())];for(const r of e){let e=n;for(let t=0;t{let r=n;for(let t=0;te[0]r(e,!0),s=e=>r(e,!1),o=new Map,a=new Map;for(const t of e){a.set(t.name.toLowerCase(),t);for(const e of t.shortcodes||[])o.set(e.toLowerCase(),t)}return{all:n,search:e=>{const n=Ai(e),r=n.map(((e,t)=>(te.name)).sort(t)},byShortcode:e=>o.get(e.toLowerCase()),byName:e=>a.get(e.toLowerCase())}}const Pi="undefined"!=typeof wrappedJSObject;function Ui(e){if(!e)return e;if(Pi&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n!(t in e[0]))))throw new Error("Emoji data is in the wrong format")}(r),[n,r]}async function Vi(e){let t=function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),i=-1;++i{const r=indexedDB.open(e,1);wi[e]=r,r.onupgradeneeded=e=>{e.oldVersion<1&&function(e){function t(t,n,r){const i=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(r)for(const[e,[t,n]]of Object.entries(r))i.createIndex(e,t,{multiEntry:n});return i}t(oi),t(si,"unicode",{[ci]:["tokens",!0],[di]:[["group","order"]],[gi]:["skinUnicodes",!0]}),t(ai,void 0,{[li]:[""]})}(r.result)},_i(t,n,r)}));return t.onclose=()=>Ei(e),t}(t)),yi[t]);var t;!function(e,t){let n=vi[e];n||(n=vi[e]=[]),n.push(t)}(this._dbName,this._clear);const n=this.dataSource,r=await async function(e){return!await Bi(e,oi,ui)}(e);r?await async function(e,t){let[n,r]=await Hi(t);n||(n=await Vi(r)),await Di(e,r,t,n)}(e,n):this._lazyUpdate=async function(e,t){let n,r=await async function(e){const t=await fetch(e,{method:"HEAD"});$i(t,e);const n=t.headers.get("etag");return Mi(n),n}(t);if(!r){const e=await Hi(t);r=e[0],n=e[1],r||(r=await Vi(n))}await async function(e,t,n){const[r,i]=await Promise.all([hi,ui].map((t=>Bi(e,oi,t))));return r===n&&i===t}(e,t,r)||(n||(n=(await Hi(t))[1]),await Di(e,n,t,r))}(e,n)}async ready(){const e=async()=>(this._ready||(this._ready=this._init()),this._ready);await e(),this._db||await e()}async getEmojiByGroup(e){return ii(e),await this.ready(),bi(await async function(e,t){return ki(e,si,fi,((e,n,r)=>{const i=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);ji(e.index(di),i,r)}))}(this._db,e)).map(Ui)}async getEmojiBySearchQuery(e){return ri(e),await this.ready(),[...this._custom.search(e),...bi(await Ri(this._db,e)).map(Ui)]}async getEmojiByShortcode(e){ri(e),await this.ready();return this._custom.byShortcode(e)||Ui(await async function(e,t){const n=await Ri(e,t);if(!n.length){const n=e=>(e.shortcodes||[]).includes(t.toLowerCase());return await async function(e,t){return ki(e,si,fi,((e,n,r)=>{let i;const s=()=>{e.getAll(i&&IDBKeyRange.lowerBound(i,!0),50).onsuccess=e=>{const n=e.target.result;for(const e of n)if(i=e.unicode,t(e))return r(e);if(n.length<50)return r();s()}};s()}))}(e,n)||null}return n.filter((e=>{const n=(e.shortcodes||[]).map((e=>e.toLowerCase()));return n.includes(t.toLowerCase())}))[0]||null}(this._db,e))}async getEmojiByUnicodeOrName(e){ri(e),await this.ready();return this._custom.byName(e)||Ui(await async function(e,t){return ki(e,si,fi,((e,n,r)=>Ii(e,t,(n=>{if(n)return r(n);Ii(e.index(gi),t,(e=>r(e||null)))}))))}(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await Bi(this._db,oi,pi)||0}async setPreferredSkinTone(e){return ii(e),await this.ready(),function(e,t,n,r){return ki(e,t,mi,((e,t)=>{e.put(r,n),Li(t)}))}(this._db,oi,pi,e)}async incrementFavoriteEmojiCount(e){return ri(e),await this.ready(),t=this._db,n=e,ki(t,ai,mi,((e,t)=>Ii(e,n,(r=>{e.put((r||0)+1,n),Li(t)}))));var t,n}async getTopFavoriteEmoji(e){return ii(e),await this.ready(),(await function(e,t,n){return 0===n?[]:ki(e,[ai,si],fi,(([e,r],i,s)=>{const o=[];e.index(li).openCursor(void 0,"prev").onsuccess=e=>{const i=e.target.result;if(!i)return s(o);function a(e){if(o.push(e),o.length===n)return s(o);i.continue()}const c=i.primaryKey,l=t.byName(c);if(l)return a(l);Ii(r,c,(e=>{if(e)return a(e);i.continue()}))}}))}(this._db,this._custom,e)).map(Ui)}set customEmoji(e){this._custom=Ni(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Ei(this._dbName)}async delete(){var e;await this._shutdown(),await(e=this._dbName,new Promise(((t,n)=>{Ei(e),_i(t,n,indexedDB.deleteDatabase(e))})))}}const Wi=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map((([e,t,n])=>({id:e,emoji:t,name:n}))),Zi=Wi.slice(1),Ki="function"==typeof requestIdleCallback?requestIdleCallback:setTimeout;function Gi(e){return e.unicode.includes("‍")}const Yi={"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},Ji=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Xi='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Qi=(e,t)=>et?1:0,es=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const r=n.getContext("2d");return r.textBaseline="top",r.font=`100px ${Xi}`,r.fillStyle=t,r.scale(.01,.01),r.fillText(e,0,0),r.getImageData(0,0,1,1).data};function ts(e){const t=es(e,"#000"),n=es(e,"#fff");return t&&n&&((e,t)=>{const n=[...e].join(",");return n===[...t].join(",")&&!n.startsWith("0,0,0,")})(t,n)}let ns;const rs=()=>(ns||(ns=new Promise((e=>Ki((()=>e(function(){const e=Object.entries(Yi);try{for(const[t,n]of e)if(ts(t))return n}catch(e){}return e[0][1]}())))))),ns),is=new Map;function ss(e){e.preventDefault(),e.stopPropagation()}function os(e,t,n){return(t+=e?-1:1)<0?t=n.length-1:t>=n.length&&(t=0),t}function as(e,t){const n=new Set,r=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),r.push(i))}return r}const cs=requestAnimationFrame;let ls,ds="function"==typeof ResizeObserver;function hs(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}function us(e,t,n){let r=e.get(t);return r||(r=n(),e.set(t,r)),r}function ps(e){return""+e}const fs=new WeakMap,ms=new WeakMap,gs=Symbol("un-keyed"),bs="replaceChildren"in Element.prototype;function ws(e,t){const{targetNode:n}=t;let{targetParentNode:r}=t,i=!1;r?i=function(e,t){let n=e.firstChild,r=0;for(;n;){if(t[r]!==n)return!0;n=n.nextSibling,r++}return r!==t.length}(r,e):(i=!0,t.targetNode=void 0,t.targetParentNode=r=n.parentNode),i&&function(e,t){bs?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}(r,e)}function ys(e){const{template:t,elementsToBindings:n}=us(fs,e,(()=>function(e){let t="",n=!1,r=!1,i=-1;const s=new Map,o=[];for(let a=0,c=e.length;a":n=!1,r=!1;break;case"=":r=!0}const d=us(s,o[o.length-1],(()=>[]));let h,u,p;if(r){const t=/(\S+)="?([^"=]*)$/.exec(l);h=t[1],u=t[2],p=/^[^">]*/.exec(e[a+1])[0]}const f={attributeName:h,attributeValuePre:u,attributeValuePost:p,expressionIndex:a};d.push(f),n||r||(t+=" ")}const a=function(e){const t=document.createElement("template");return t.innerHTML=e,t}(t);return{template:a,elementsToBindings:s}}(e))),r=t.cloneNode(!0).content.firstElementChild,i=function(e,t){const n=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let i=e,s=-1;do{const e=t.get(++s);if(e)for(let t=0;tPromise.resolve().then(e);function _s(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r{if(n)return;const e=[...i];i.clear();try{for(const t of e)t()}finally{s=!1,i.size&&(s=!0,vs(o))}},a=new Proxy({},{get(e,n){if(t){let e=r.get(n);e||(e=new Set,r.set(n,e)),e.add(t)}return e[n]},set(e,t,n){e[t]=n;const a=r.get(t);if(a){for(const e of a)i.add(e);s||(s=!0,vs(o))}return!0}});return e.addEventListener("abort",(()=>{n=!0})),{state:a,createEffect:e=>{const n=()=>{const r=t;t=n;try{return e()}finally{t=r}};return n()}}}(i);Es(s,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),Es(s,t),Es(s,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:8,isRtl:!1,scrollbarWidth:0,currentGroupIndex:0,groups:Zi,databaseLoaded:!1,activeSearchItemId:void 0}),o((()=>{s.currentGroup!==s.groups[s.currentGroupIndex]&&(s.currentGroup=s.groups[s.currentGroupIndex])}));const a=t=>{e.getElementById(t).focus()},c=t=>e.getElementById(`emo-${t.id}`),l=(e,t)=>{n.rootElement.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))},d=(e,t)=>e.id===t.id,h=(e,t)=>{const{category:n,emojis:r}=e,{category:i,emojis:s}=t;return n===i&&_s(r,s,d)},u=e=>{_s(s.currentEmojis,e,d)||(s.currentEmojis=e)},p=e=>{s.searchMode!==e&&(s.searchMode=e)},f=(e,t)=>t&&e.skins&&e.skins[t]||e.unicode,m={labelWithSkin:(e,t)=>{return(n=[e.name||f(e,t),e.annotation,...e.shortcodes||ks].filter(Boolean),as(n,(e=>e))).join(", ");var n},titleForEmoji:e=>e.annotation||(e.shortcodes||ks).join(", "),unicodeWithSkin:f},g={onClickSkinToneButton:function(e){s.skinTonePickerExpanded=!s.skinTonePickerExpanded,s.activeSkinTone=s.currentSkinTone,s.skinTonePickerExpanded&&(ss(e),cs((()=>a("skintone-list"))))},onEmojiClick:async function(e){const{target:t}=e;t.classList.contains("emoji")&&(ss(e),E(t.id.substring(4)))},onNavClick:function(e){const{target:t}=e,r=t.closest(".nav-button");if(!r)return;const i=parseInt(r.dataset.groupId,10);n.searchElement.value="",s.rawSearchText="",s.searchText="",s.activeSearchItem=-1,s.currentGroupIndex=s.groups.findIndex((e=>e.id===i))},onNavKeydown:function(e){const{target:t,key:n}=e,r=t=>{t&&(ss(e),t.focus())};switch(n){case"ArrowLeft":return r(t.previousElementSibling);case"ArrowRight":return r(t.nextElementSibling);case"Home":return r(t.parentElement.firstElementChild);case"End":return r(t.parentElement.lastElementChild)}},onSearchKeydown:function(e){if(!s.searchMode||!s.currentEmojis.length)return;const t=t=>{ss(e),s.activeSearchItem=os(t,s.activeSearchItem,s.currentEmojis)};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==s.activeSearchItem)return ss(e),E(s.currentEmojis[s.activeSearchItem].id);s.activeSearchItem=0}},onSkinToneOptionsClick:function(e){const{target:{id:t}}=e,n=t&&t.match(/^skintone-(\d)/);n&&(ss(e),x(parseInt(n[1],10)))},onSkinToneOptionsFocusOut:async function(e){const{relatedTarget:t}=e;t&&"skintone-list"===t.id||(s.skinTonePickerExpanded=!1)},onSkinToneOptionsKeydown:function(e){if(!s.skinTonePickerExpanded)return;const t=async t=>{ss(e),s.activeSkinTone=t};switch(e.key){case"ArrowUp":return t(os(!0,s.activeSkinTone,s.skinTones));case"ArrowDown":return t(os(!1,s.activeSkinTone,s.skinTones));case"Home":return t(0);case"End":return t(s.skinTones.length-1);case"Enter":return ss(e),x(s.activeSkinTone);case"Escape":return ss(e),s.skinTonePickerExpanded=!1,a("skintone-button")}},onSkinToneOptionsKeyup:function(e){if(s.skinTonePickerExpanded)return" "===e.key?(ss(e),x(s.activeSkinTone)):void 0},onSearchInput:function(e){s.rawSearchText=e.target.value}},b={calculateEmojiGridStyle:function(e){!function(e,t,n){let r;ds?(r=new ResizeObserver((e=>n(e[0].contentRect.width))),r.observe(e)):cs((()=>n(e.getBoundingClientRect().width))),t.addEventListener("abort",(()=>{r&&r.disconnect()}))}(e,i,(t=>{{const r=getComputedStyle(n.rootElement),i=parseInt(r.getPropertyValue("--num-columns"),10),o="rtl"===r.getPropertyValue("direction"),a=e.parentElement.getBoundingClientRect().width-t;s.numColumns=i,s.scrollbarWidth=a,s.isRtl=o}}))}};let w=!0;function y(){s.database.customEmoji=s.customEmoji||ks}function v(e){return!e.unicode||!Gi(e)||is.get(e.unicode)}async function _(e){const t=s.emojiVersion||await rs();return e.filter((({version:e})=>!e||e<=t))}async function k(e){return function(e,t){const n=e=>{const n={};for(const r of e)"number"==typeof r.tone&&r.version<=t&&(n[r.tone]=r.unicode);return n};return e.map((({unicode:e,skins:t,shortcodes:r,url:i,name:s,category:o,annotation:a})=>({unicode:e,name:s,shortcodes:r,url:i,category:o,annotation:a,id:e||s,skins:t&&n(t)})))}(e,s.emojiVersion||await rs())}async function E(e){const t=await s.database.getEmojiByUnicodeOrName(e),n=[...s.currentEmojis,...s.currentFavorites].find((t=>t.id===e)),r=n.unicode&&f(n,s.currentSkinTone);await s.database.incrementFavoriteEmojiCount(e),l("emoji-click",{emoji:t,skinTone:s.currentSkinTone,...r&&{unicode:r},...n.name&&{name:n.name}})}function x(e){s.currentSkinTone=e,s.skinTonePickerExpanded=!1,a("skintone-button"),l("skin-tone-change",{skinTone:e}),s.database.setPreferredSkinTone(e)}return o((()=>{(function(e,t,n,r,i,s,o,a){const{labelWithSkin:c,titleForEmoji:l,unicodeWithSkin:d}=n,{html:h,map:u}=function(e){const t=us(ms,e,(()=>new Map));let n=gs;return{map:function(e,t,r){return e.map(((e,i)=>{const s=n;n=r(e);try{return t(e,i)}finally{n=s}}))},html:function(e,...r){const i=us(t,e,(()=>new Map));return us(i,n,(()=>ys(e)))(r)}}}(t);function p(e,n,r){return u(e,((e,i)=>h``),(e=>`${r}-${e.id}`))}const f=h`
${t.i18n.searchDescription}
${t.i18n.skinToneDescription}
${u(t.skinTones,((e,n)=>h`
${e}
`),(e=>e))}
${u(t.currentEmojisWithCategories,((e,n)=>h`
${p(e.emojis,t.searchMode,"emo")}
`),(e=>e.category))}
`;if(a){e.appendChild(f);const t=(t,n)=>{for(const r of e.querySelectorAll(`[${t}]`))n(r,r.getAttribute(t))};for(const e of["click","focusout","input","keydown","keyup"])t(`data-on-${e}`,((t,n)=>{t.addEventListener(e,r[n])}));t("data-ref",((e,t)=>{s[t]=e})),t("data-action",((e,t)=>{i[t](e)})),o.addEventListener("abort",(()=>{e.removeChild(f)}))}})(e,s,m,g,b,n,i,w),w=!1})),s.emojiVersion||rs().then((e=>{e||(s.message=s.i18n.emojiUnsupportedMessage)})),o((()=>{s.database&&async function(){let e=!1;const t=setTimeout((()=>{e=!0,s.message=s.i18n.loadingMessage}),1e3);try{await s.database.ready(),s.databaseLoaded=!0}catch(e){console.error(e),s.message=s.i18n.networkErrorMessage}finally{clearTimeout(t),e&&(e=!1,s.message="")}}()})),o((()=>{s.pickerStyle=`\n --num-groups: ${s.groups.length}; \n --indicator-opacity: ${s.searchMode?0:1}; \n --num-skintones: 6;`})),o((()=>{s.customEmoji&&s.database&&y()})),o((()=>{s.customEmoji&&s.customEmoji.length?s.groups!==Wi&&(s.groups=Wi):s.groups!==Zi&&(s.currentGroupIndex&&s.currentGroupIndex--,s.groups=Zi)})),o((()=>{!async function(){s.databaseLoaded&&(s.currentSkinTone=await s.database.getPreferredSkinTone())}()})),o((()=>{s.skinTones=Array(6).fill().map(((e,t)=>function(e,t){if(0===t)return e;const n=e.indexOf("‍");return-1!==n?e.substring(0,n)+String.fromCodePoint(127995+t-1)+e.substring(n):(e.endsWith("️")&&(e=e.substring(0,e.length-1)),e+"\ud83c"+String.fromCodePoint(57339+t-1))}(s.skinToneEmoji,t)))})),o((()=>{s.skinToneButtonText=s.skinTones[s.currentSkinTone]})),o((()=>{s.skinToneButtonLabel=s.i18n.skinToneLabel.replace("{skinTone}",s.i18n.skinTones[s.currentSkinTone])})),o((()=>{s.databaseLoaded&&async function(){const{database:e}=s,t=(await Promise.all(Ji.map((t=>e.getEmojiByUnicodeOrName(t))))).filter(Boolean);s.defaultFavoriteEmojis=t}()})),o((()=>{s.databaseLoaded&&s.defaultFavoriteEmojis&&async function(){y();const{database:e,defaultFavoriteEmojis:t,numColumns:n}=s,r=await e.getTopFavoriteEmoji(n),i=await k(as([...r,...t],(e=>e.unicode||e.name)).slice(0,n));s.currentFavorites=i}()})),o((()=>{!async function(){const{searchText:e,currentGroup:t,databaseLoaded:n,customEmoji:r}=s;if(n)if(e.length>=2){const t=await async function(e){return k(await _(await s.database.getEmojiBySearchQuery(e)))}(e);s.searchText===e&&(u(t),p(!0))}else{const{id:e}=t;if(-1!==e||r&&r.length){const t=await async function(e){const t=-1===e?s.customEmoji:await s.database.getEmojiByGroup(e);return k(await _(t))}(e);s.currentGroup.id===e&&(u(t),p(!1))}}else s.currentEmojis=[],s.searchMode=!1}()})),o((()=>{const{currentEmojis:e,emojiVersion:t}=s,r=e.filter((e=>e.unicode)).filter((e=>Gi(e)&&!is.has(e.unicode)));if(!t&&r.length)u(e),cs((()=>function(e){(function(e,t,n){for(const r of e){const e=hs(n(r));void 0===ls&&(ls=hs(t));const i=e/1.8{var e;(e=n.tabpanelElement)&&(e.scrollTop=0)}))}})),o((()=>{})),o((()=>{var e;e=function(){const{searchMode:e,currentEmojis:t}=s;if(e)return[{category:"",emojis:t}];const n=new Map;for(const e of t){const t=e.category||"";let r=n.get(t);r||(r=[],n.set(t,r)),r.push(e)}return[...n.entries()].map((([e,t])=>({category:e,emojis:t}))).sort(((e,t)=>s.customCategorySorting(e.category,t.category)))}(),_s(s.currentEmojisWithCategories,e,h)||(s.currentEmojisWithCategories=e)})),o((()=>{s.activeSearchItemId=-1!==s.activeSearchItem&&s.currentEmojis[s.activeSearchItem].id})),o((()=>{const{rawSearchText:e}=s;Ki((()=>{s.searchText=(e||"").trim(),s.activeSearchItem=-1}))})),o((()=>{s.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",(()=>{s.skinTonePickerExpandedAfterAnimation=!0}),{once:!0}):s.skinTonePickerExpandedAfterAnimation=!1})),{$set(e){Es(s,e)},$destroy(){r.abort()}}}var As={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const Cs=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],Ts=`:host{--emoji-font-family:${Xi}}`;class Ss extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent=":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}"+Ts,this.shadowRoot.appendChild(t),this._ctx={locale:"en",dataSource:"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",skinToneEmoji:"🖐️",customCategorySorting:Qi,customEmoji:null,i18n:As,emojiVersion:null,...e};for(const e of Cs)"database"!==e&&Object.prototype.hasOwnProperty.call(this,e)&&(this._ctx[e]=this[e],delete this[e]);this._dbFlush()}connectedCallback(){this._cmp||(this._cmp=xs(this.shadowRoot,this._ctx))}disconnectedCallback(){vs((()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e.close().catch((e=>console.error(e)))}}))}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(e,t,n){this._set(e.replace(/-([a-z])/g,((e,t)=>t.toUpperCase())),"emoji-version"===e?parseFloat(n):n)}_set(e,t){this._ctx[e]=t,this._cmp&&this._cmp.$set({[e]:t}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:t,database:n}=this._ctx;n&&n.locale===e&&n.dataSource===t||this._set("database",new qi({locale:e,dataSource:t}))}_dbFlush(){vs((()=>this._dbCreate()))}}const Is={};for(const e of Cs)Is[e]={get(){return"database"===e&&this._dbCreate(),this._ctx[e]},set(t){if("database"===e)throw new Error("database is read-only");this._set(e,t)}};function js(e){let t=e.length;for(;--t>=0;)e[t]=0}Object.defineProperties(Ss.prototype,Is),customElements.get("emoji-picker")||customElements.define("emoji-picker",Ss);const Ls=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Os=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Ds=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Rs=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Bs=new Array(576);js(Bs);const zs=new Array(60);js(zs);const Ns=new Array(512);js(Ns);const Ps=new Array(256);js(Ps);const Us=new Array(29);js(Us);const Ms=new Array(30);function Fs(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let $s,Hs,Vs;function qs(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}js(Ms);const Ws=e=>e<256?Ns[e]:Ns[256+(e>>>7)],Zs=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},Ks=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{Ks(e,n[2*t],n[2*t+1])},Ys=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},Js=(e,t,n)=>{const r=new Array(16);let i,s,o=0;for(i=1;i<=15;i++)o=o+n[i-1]<<1,r[i]=o;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=Ys(r[t]++,t))}},Xs=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Qs=e=>{e.bi_valid>8?Zs(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},eo=(e,t,n,r)=>{const i=2*t,s=2*n;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,s,o,a=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+a++],r+=(255&e.pending_buf[e.sym_buf+a++])<<8,i=e.pending_buf[e.sym_buf+a++],0===r?Gs(e,i,t):(s=Ps[i],Gs(e,s+256+1,t),o=Ls[s],0!==o&&(i-=Us[s],Ks(e,i,o)),r--,s=Ws(r),Gs(e,s,n),o=Os[s],0!==o&&(r-=Ms[s],Ks(e,r,o)))}while(a{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,s=t.stat_desc.elems;let o,a,c,l=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)to(e,n,o);c=s;do{o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],to(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=a,n[2*c]=n[2*o]+n[2*a],e.depth[c]=(e.depth[o]>=e.depth[a]?e.depth[o]:e.depth[a])+1,n[2*o+1]=n[2*a+1]=c,e.heap[1]=c++,to(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,h,u,p,f,m=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(n[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)d=e.heap[l],u=n[2*n[2*d+1]+1]+1,u>c&&(u=c,m++),n[2*d+1]=u,d>r||(e.bl_count[u]++,p=0,d>=a&&(p=o[d-a]),f=n[2*d],e.opt_len+=f*(u+p),s&&(e.static_len+=f*(i[2*d+1]+p)));if(0!==m){do{for(u=c-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[c]--,m-=2}while(m>0);for(u=c;0!==u;u--)for(d=e.bl_count[u];0!==d;)h=e.heap[--l],h>r||(n[2*h+1]!==u&&(e.opt_len+=(u-n[2*h+1])*n[2*h],n[2*h+1]=u),d--)}})(e,t),Js(n,l,e.bl_count)},io=(e,t,n)=>{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),r=0;r<=n;r++)if(i=o,o=t[2*(r+1)+1],!(++a{Ks(e,0+(r?1:0),3),Qs(e),Zs(e,n),Zs(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var co={_tr_init:e=>{oo||((()=>{let e,t,n,r,i;const s=new Array(16);for(n=0,r=0;r<28;r++)for(Us[r]=n,e=0;e<1<>=7;r<30;r++)for(Ms[r]=i<<7,e=0;e<1<{let i,s,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),ro(e,e.l_desc),ro(e,e.d_desc),o=(e=>{let t;for(io(e,e.dyn_ltree,e.l_desc.max_code),io(e,e.dyn_dtree,e.d_desc.max_code),ro(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*Rs[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),i=e.opt_len+3+7>>>3,s=e.static_len+3+7>>>3,s<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==t?ao(e,t,n,r):4===e.strategy||s===i?(Ks(e,2+(r?1:0),3),no(e,Bs,zs)):(Ks(e,4+(r?1:0),3),((e,t,n,r)=>{let i;for(Ks(e,t-257,5),Ks(e,n-1,5),Ks(e,r-4,4),i=0;i(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(Ps[n]+256+1)]++,e.dyn_dtree[2*Ws(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{Ks(e,2,3),Gs(e,256,Bs),(e=>{16===e.bi_valid?(Zs(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},lo=(e,t,n,r)=>{let i=65535&e,s=e>>>16&65535,o=0;for(;0!==n;){o=n>2e3?2e3:n,n-=o;do{i=i+t[r++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16};const ho=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var uo=(e,t,n,r)=>{const i=ho,s=r+n;e^=-1;for(let n=r;n>>8^i[255&(e^t[n])];return~e},po={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},fo={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:mo,_tr_stored_block:go,_tr_flush_block:bo,_tr_tally:wo,_tr_align:yo}=co,{Z_NO_FLUSH:vo,Z_PARTIAL_FLUSH:_o,Z_FULL_FLUSH:ko,Z_FINISH:Eo,Z_BLOCK:xo,Z_OK:Ao,Z_STREAM_END:Co,Z_STREAM_ERROR:To,Z_DATA_ERROR:So,Z_BUF_ERROR:Io,Z_DEFAULT_COMPRESSION:jo,Z_FILTERED:Lo,Z_HUFFMAN_ONLY:Oo,Z_RLE:Do,Z_FIXED:Ro,Z_DEFAULT_STRATEGY:Bo,Z_UNKNOWN:zo,Z_DEFLATED:No}=fo,Po=258,Uo=262,Mo=42,Fo=113,$o=666,Ho=(e,t)=>(e.msg=po[t],t),Vo=e=>2*e-(e>4?9:0),qo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Wo=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do{n=e.head[--r],e.head[r]=n>=i?n-i:0}while(--t);t=i,r=t;do{n=e.prev[--r],e.prev[r]=n>=i?n-i:0}while(--t)};let Zo=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},Go=(e,t)=>{bo(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ko(e.strm)},Yo=(e,t)=>{e.pending_buf[e.pending++]=t},Jo=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Xo=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),0===i?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),1===e.state.wrap?e.adler=lo(e.adler,t,i,n):2===e.state.wrap&&(e.adler=uo(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Qo=(e,t)=>{let n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match;const c=e.strstart>e.w_size-Uo?e.strstart-(e.w_size-Uo):0,l=e.window,d=e.w_mask,h=e.prev,u=e.strstart+Po;let p=l[s+o-1],f=l[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(n=t,l[n+o]===f&&l[n+o-1]===p&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&so){if(e.match_start=t,o=r,r>=a)break;p=l[s+o-1],f=l[s+o]}}}while((t=h[t&d])>c&&0!=--i);return o<=e.lookahead?o:e.lookahead},ea=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Uo)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Wo(e),r+=t),0===e.strm.avail_in)break;if(n=Xo(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=3)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=Zo(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=Zo(e,e.ins_h,e.window[i+3-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let n,r,i,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(n=65535,i=e.bi_valid+42>>3,e.strm.avail_outr+e.strm.avail_in&&(n=r+e.strm.avail_in),n>i&&(n=i),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Ko(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(Xo(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===o);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_wateri&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,i+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),i>e.strm.avail_in&&(i=e.strm.avail_in),i&&(Xo(e.strm,e.window,e.strstart,i),e.strstart+=i,e.insert+=i>e.w_size-e.insert?e.w_size-e.insert:i),e.high_water>3,i=e.pending_buf_size-i>65535?65535:e.pending_buf_size-i,s=i>e.w_size?e.w_size:i,r=e.strstart-e.block_start,(r>=s||(r||t===Eo)&&t!==vo&&0===e.strm.avail_in&&r<=i)&&(n=r>i?i:r,o=t===Eo&&0===e.strm.avail_in&&n===r?1:0,go(e,e.block_start,n,o),e.block_start+=n,Ko(e.strm)),o?3:1)},na=(e,t)=>{let n,r;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-Uo&&(e.match_length=Qo(e,n)),e.match_length>=3)if(r=wo(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+1]);else r=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2},ra=(e,t)=>{let n,r,i;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=wo(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(Go(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=wo(e,0,e.window[e.strstart-1]),r&&Go(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=wo(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2};function ia(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const sa=[new ia(0,0,0,0,ta),new ia(4,4,8,4,na),new ia(4,5,16,8,na),new ia(4,6,32,32,na),new ia(4,4,16,16,ra),new ia(8,16,32,32,ra),new ia(8,16,128,128,ra),new ia(8,32,128,256,ra),new ia(32,128,258,1024,ra),new ia(32,258,258,4096,ra)];function oa(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=No,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),qo(this.dyn_ltree),qo(this.dyn_dtree),qo(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),qo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),qo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const aa=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Mo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==Fo&&t.status!==$o?1:0},ca=e=>{if(aa(e))return Ho(e,To);e.total_in=e.total_out=0,e.data_type=zo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?Mo:Fo,e.adler=2===t.wrap?0:1,t.last_flush=-2,mo(t),Ao},la=e=>{const t=ca(e);var n;return t===Ao&&((n=e.state).window_size=2*n.w_size,qo(n.head),n.max_lazy_match=sa[n.level].max_lazy,n.good_match=sa[n.level].good_length,n.nice_match=sa[n.level].nice_length,n.max_chain_length=sa[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t},da=(e,t,n,r,i,s)=>{if(!e)return To;let o=1;if(t===jo&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>9||n!==No||r<8||r>15||t<0||t>9||s<0||s>Ro||8===r&&1!==o)return Ho(e,To);8===r&&(r=9);const a=new oa;return e.state=a,a.strm=e,a.status=Mo,a.wrap=o,a.gzhead=null,a.w_bits=r,a.w_size=1<da(e,t,No,15,8,Bo),deflateInit2:da,deflateReset:la,deflateResetKeep:ca,deflateSetHeader:(e,t)=>aa(e)||2!==e.state.wrap?To:(e.state.gzhead=t,Ao),deflate:(e,t)=>{if(aa(e)||t>xo||t<0)return e?Ho(e,To):To;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===$o&&t!==Eo)return Ho(e,0===e.avail_out?Io:To);const r=n.last_flush;if(n.last_flush=t,0!==n.pending){if(Ko(e),0===e.avail_out)return n.last_flush=-1,Ao}else if(0===e.avail_in&&Vo(t)<=Vo(r)&&t!==Eo)return Ho(e,Io);if(n.status===$o&&0!==e.avail_in)return Ho(e,Io);if(n.status===Mo&&0===n.wrap&&(n.status=Fo),n.status===Mo){let t=No+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=Oo||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=r<<6,0!==n.strstart&&(t|=32),t+=31-t%31,Jo(n,t),0!==n.strstart&&(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),e.adler=1,n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(57===n.status)if(e.adler=0,Yo(n,31),Yo(n,139),Yo(n,8),n.gzhead)Yo(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Yo(n,255&n.gzhead.time),Yo(n,n.gzhead.time>>8&255),Yo(n,n.gzhead.time>>16&255),Yo(n,n.gzhead.time>>24&255),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Yo(n,255&n.gzhead.extra.length),Yo(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=uo(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,3),n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;if(69===n.status){if(n.gzhead.extra){let t=n.pending,r=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=i,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;t=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ko(e),0!==n.pending))return n.last_flush=-1,Ao;Yo(n,255&e.adler),Yo(n,e.adler>>8&255),e.adler=0}if(n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(0!==e.avail_in||0!==n.lookahead||t!==vo&&n.status!==$o){let r=0===n.level?ta(n,t):n.strategy===Oo?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(ea(e),0===e.lookahead)){if(t===vo)return 1;break}if(e.match_length=0,n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===Do?((e,t)=>{let n,r,i,s;const o=e.window;for(;;){if(e.lookahead<=Po){if(ea(e),e.lookahead<=Po&&t===vo)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){s=e.strstart+Po;do{}while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=wo(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):sa[n.level].func(n,t);if(3!==r&&4!==r||(n.status=$o),1===r||3===r)return 0===e.avail_out&&(n.last_flush=-1),Ao;if(2===r&&(t===_o?yo(n):t!==xo&&(go(n,0,0,!1),t===ko&&(qo(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Ko(e),0===e.avail_out))return n.last_flush=-1,Ao}return t!==Eo?Ao:n.wrap<=0?Co:(2===n.wrap?(Yo(n,255&e.adler),Yo(n,e.adler>>8&255),Yo(n,e.adler>>16&255),Yo(n,e.adler>>24&255),Yo(n,255&e.total_in),Yo(n,e.total_in>>8&255),Yo(n,e.total_in>>16&255),Yo(n,e.total_in>>24&255)):(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),Ko(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?Ao:Co)},deflateEnd:e=>{if(aa(e))return To;const t=e.state.status;return e.state=null,t===Fo?Ho(e,So):Ao},deflateSetDictionary:(e,t)=>{let n=t.length;if(aa(e))return To;const r=e.state,i=r.wrap;if(2===i||1===i&&r.status!==Mo||r.lookahead)return To;if(1===i&&(e.adler=lo(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){0===i&&(qo(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(n-r.w_size,n),0),t=e,n=r.w_size}const s=e.avail_in,o=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,ea(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=Zo(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,ea(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=a,e.avail_in=s,r.wrap=i,Ao},deflateInfo:"pako deflate (from Nodeca project)"};const ua=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var pa={assign:function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const t in n)ua(n,t)&&(e[t]=n[t])}}return e},flattenChunks:e=>{let t=0;for(let n=0,r=e.length;n=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ma[254]=ma[254]=1;var ga={string2buf:e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,r,i,s,o=e.length,a=0;for(i=0;i>>6,t[s++]=128|63&n):n<65536?(t[s++]=224|n>>>12,t[s++]=128|n>>>6&63,t[s++]=128|63&n):(t[s++]=240|n>>>18,t[s++]=128|n>>>12&63,t[s++]=128|n>>>6&63,t[s++]=128|63&n);return t},buf2string:(e,t)=>{const n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,i;const s=new Array(2*n);for(i=0,r=0;r4)s[i++]=65533,r+=o-1;else{for(t&=2===o?31:3===o?15:7;o>1&&r1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&fa)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+ma[e[n]]>t?n:t}},ba=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const wa=Object.prototype.toString,{Z_NO_FLUSH:ya,Z_SYNC_FLUSH:va,Z_FULL_FLUSH:_a,Z_FINISH:ka,Z_OK:Ea,Z_STREAM_END:xa,Z_DEFAULT_COMPRESSION:Aa,Z_DEFAULT_STRATEGY:Ca,Z_DEFLATED:Ta}=fo;function Sa(e){this.options=pa.assign({level:Aa,method:Ta,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ca},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=ha.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ea)throw new Error(po[n]);if(t.header&&ha.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wa.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=ha.deflateSetDictionary(this.strm,e),n!==Ea)throw new Error(po[n]);this._dict_set=!0}}function Ia(e,t){const n=new Sa(t);if(n.push(e,!0),n.err)throw n.msg||po[n.err];return n.result}Sa.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?ka:ya,"string"==typeof e?n.input=ga.string2buf(e):"[object ArrayBuffer]"===wa.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===va||s===_a)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(i=ha.deflate(n,s),i===xa)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=ha.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ea;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},Sa.prototype.onData=function(e){this.chunks.push(e)},Sa.prototype.onEnd=function(e){e===Ea&&(this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ja={Deflate:Sa,deflate:Ia,deflateRaw:function(e,t){return(t=t||{}).raw=!0,Ia(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,Ia(e,t)},constants:fo};const La=16209;var Oa=function(e,t){let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x,A;const C=e.state;n=e.next_in,x=e.input,r=n+(e.avail_in-5),i=e.next_out,A=e.output,s=i-(t-e.avail_out),o=i+(e.avail_out-257),a=C.dmax,c=C.wsize,l=C.whave,d=C.wnext,h=C.window,u=C.hold,p=C.bits,f=C.lencode,m=C.distcode,g=(1<>>24,u>>>=y,p-=y,y=w>>>16&255,0===y)A[i++]=65535&w;else{if(!(16&y)){if(64&y){if(32&y){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=La;break e}w=f[(65535&w)+(u&(1<>>=y,p-=y),p<15&&(u+=x[n++]<>>24,u>>>=y,p-=y,y=w>>>16&255,16&y){if(_=65535&w,y&=15,pa){e.msg="invalid distance too far back",C.mode=La;break e}if(u>>>=y,p-=y,y=i-s,_>y){if(y=_-y,y>l&&C.sane){e.msg="invalid distance too far back",C.mode=La;break e}if(k=0,E=h,0===d){if(k+=c-y,y2;)A[i++]=E[k++],A[i++]=E[k++],A[i++]=E[k++],v-=3;v&&(A[i++]=E[k++],v>1&&(A[i++]=E[k++]))}else{k=i-_;do{A[i++]=A[k++],A[i++]=A[k++],A[i++]=A[k++],v-=3}while(v>2);v&&(A[i++]=A[k++],v>1&&(A[i++]=A[k++]))}break}if(64&y){e.msg="invalid distance code",C.mode=La;break e}w=m[(65535&w)+(u&(1<>3,n-=v,p-=v<<3,u&=(1<{const c=a.bits;let l,d,h,u,p,f,m=0,g=0,b=0,w=0,y=0,v=0,_=0,k=0,E=0,x=0,A=null;const C=new Uint16Array(16),T=new Uint16Array(16);let S,I,j,L=null;for(m=0;m<=15;m++)C[m]=0;for(g=0;g=1&&0===C[w];w--);if(y>w&&(y=w),0===w)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(b=1;b0&&(0===e||1!==w))return-1;for(T[1]=0,m=1;m<15;m++)T[m+1]=T[m]+C[m];for(g=0;g852||2===e&&E>592)return 1;for(;;){S=m-_,o[g]+1=f?(I=L[o[g]-f],j=A[o[g]-f]):(I=96,j=0),l=1<>_)+d]=S<<24|I<<16|j}while(0!==d);for(l=1<>=1;if(0!==l?(x&=l-1,x+=l):x=0,g++,0==--C[m]){if(m===w)break;m=t[n+o[g]]}if(m>y&&(x&u)!==h){for(0===_&&(_=y),p+=b,v=m-_,k=1<852||2===e&&E>592)return 1;h=x&u,i[h]=y<<24|v<<16|p-s}}return 0!==x&&(i[p+x]=m-_<<24|64<<16),a.bits=y,0};const{Z_FINISH:Pa,Z_BLOCK:Ua,Z_TREES:Ma,Z_OK:Fa,Z_STREAM_END:$a,Z_NEED_DICT:Ha,Z_STREAM_ERROR:Va,Z_DATA_ERROR:qa,Z_MEM_ERROR:Wa,Z_BUF_ERROR:Za,Z_DEFLATED:Ka}=fo,Ga=16180,Ya=16190,Ja=16191,Xa=16192,Qa=16194,ec=16199,tc=16200,nc=16206,rc=16209,ic=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function sc(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const oc=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},ac=e=>{if(oc(e))return Va;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ga,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Fa},cc=e=>{if(oc(e))return Va;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,ac(e)},lc=(e,t)=>{let n;if(oc(e))return Va;const r=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Va:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,cc(e))},dc=(e,t)=>{if(!e)return Va;const n=new sc;e.state=n,n.strm=e,n.window=null,n.mode=Ga;const r=lc(e,t);return r!==Fa&&(e.state=null),r};let hc,uc,pc=!0;const fc=e=>{if(pc){hc=new Int32Array(512),uc=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Na(1,e.lens,0,288,hc,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Na(2,e.lens,0,32,uc,0,e.work,{bits:5}),pc=!1}e.lencode=hc,e.lenbits=9,e.distcode=uc,e.distbits=5},mc=(e,t,n,r)=>{let i;const s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(t.subarray(n-s.wsize,n),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),s.window.set(t.subarray(n-r,n-r+i),s.wnext),(r-=i)?(s.window.set(t.subarray(n-r,n),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whavedc(e,15),inflateInit2:dc,inflate:(e,t)=>{let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x=0;const A=new Uint8Array(4);let C,T;const S=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(oc(e)||!e.output||!e.input&&0!==e.avail_in)return Va;n=e.state,n.mode===Ja&&(n.mode=Xa),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,h=a,u=c,E=Fa;e:for(;;)switch(n.mode){case Ga:if(0===n.wrap){n.mode=Xa;break}for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0),l=0,d=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",n.mode=rc;break}if((15&l)!==Ka){e.msg="unknown compression method",n.mode=rc;break}if(l>>>=4,d-=4,k=8+(15&l),0===n.wbits&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=rc;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16182;case 16182:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>8&255,A[2]=l>>>16&255,A[3]=l>>>24&255,n.check=uo(n.check,A,4,0)),l=0,d=0,n.mode=16183;case 16183:for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>8),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16184;case 16184:if(1024&n.flags){for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(p=n.length,p>a&&(p=a),p&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(s,s+p),k)),512&n.flags&&4&n.wrap&&(n.check=uo(n.check,r,p,s)),a-=p,s+=p,n.length-=p),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===a)break e;p=0;do{k=r[s+p++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&p>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Ja;break;case 16189:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>=7&d,d-=7&d,n.mode=nc;break}for(;d<3;){if(0===a)break e;a--,l+=r[s++]<>>=1,d-=1,3&l){case 0:n.mode=16193;break;case 1:if(fc(n),n.mode=ec,t===Ma){l>>>=2,d-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=rc}l>>>=2,d-=2;break;case 16193:for(l>>>=7&d,d-=7&d;d<32;){if(0===a)break e;a--,l+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=rc;break}if(n.length=65535&l,l=0,d=0,n.mode=Qa,t===Ma)break e;case Qa:n.mode=16195;case 16195:if(p=n.length,p){if(p>a&&(p=a),p>c&&(p=c),0===p)break e;i.set(r.subarray(s,s+p),o),a-=p,s+=p,c-=p,o+=p,n.length-=p;break}n.mode=Ja;break;case 16196:for(;d<14;){if(0===a)break e;a--,l+=r[s++]<>>=5,d-=5,n.ndist=1+(31&l),l>>>=5,d-=5,n.ncode=4+(15&l),l>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=rc;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,d-=3}for(;n.have<19;)n.lens[S[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,C={bits:n.lenbits},E=Na(0,n.lens,0,19,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid code lengths set",n.mode=rc;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=g,d-=g,n.lens[n.have++]=w;else{if(16===w){for(T=g+2;d>>=g,d-=g,0===n.have){e.msg="invalid bit length repeat",n.mode=rc;break}k=n.lens[n.have-1],p=3+(3&l),l>>>=2,d-=2}else if(17===w){for(T=g+3;d>>=g,d-=g,k=0,p=3+(7&l),l>>>=3,d-=3}else{for(T=g+7;d>>=g,d-=g,k=0,p=11+(127&l),l>>>=7,d-=7}if(n.have+p>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=rc;break}for(;p--;)n.lens[n.have++]=k}}if(n.mode===rc)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=rc;break}if(n.lenbits=9,C={bits:n.lenbits},E=Na(1,n.lens,0,n.nlen,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid literal/lengths set",n.mode=rc;break}if(n.distbits=6,n.distcode=n.distdyn,C={bits:n.distbits},E=Na(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,C),n.distbits=C.bits,E){e.msg="invalid distances set",n.mode=rc;break}if(n.mode=ec,t===Ma)break e;case ec:n.mode=tc;case tc:if(a>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=s,e.avail_in=a,n.hold=l,n.bits=d,Oa(e,u),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,n.mode===Ja&&(n.back=-1);break}for(n.back=0;x=n.lencode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,n.length=w,0===b){n.mode=16205;break}if(32&b){n.back=-1,n.mode=Ja;break}if(64&b){e.msg="invalid literal/length code",n.mode=rc;break}n.extra=15&b,n.mode=16201;case 16201:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;x=n.distcode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,64&b){e.msg="invalid distance code",n.mode=rc;break}n.offset=w,n.extra=15&b,n.mode=16203;case 16203:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=rc;break}n.mode=16204;case 16204:if(0===c)break e;if(p=u-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=rc;break}p>n.wnext?(p-=n.wnext,f=n.wsize-p):f=n.wnext-p,p>n.length&&(p=n.length),m=n.window}else m=i,f=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do{i[o++]=m[f++]}while(--p);0===n.length&&(n.mode=tc);break;case 16205:if(0===c)break e;i[o++]=n.length,c--,n.mode=tc;break;case nc:if(n.wrap){for(;d<32;){if(0===a)break e;a--,l|=r[s++]<{if(oc(e))return Va;let t=e.state;return t.window&&(t.window=null),e.state=null,Fa},inflateGetHeader:(e,t)=>{if(oc(e))return Va;const n=e.state;return 2&n.wrap?(n.head=t,t.done=!1,Fa):Va},inflateSetDictionary:(e,t)=>{const n=t.length;let r,i,s;return oc(e)?Va:(r=e.state,0!==r.wrap&&r.mode!==Ya?Va:r.mode===Ya&&(i=1,i=lo(i,t,n,0),i!==r.check)?qa:(s=mc(e,t,n,n),s?(r.mode=16210,Wa):(r.havedict=1,Fa)))},inflateInfo:"pako inflate (from Nodeca project)"},bc=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const wc=Object.prototype.toString,{Z_NO_FLUSH:yc,Z_FINISH:vc,Z_OK:_c,Z_STREAM_END:kc,Z_NEED_DICT:Ec,Z_STREAM_ERROR:xc,Z_DATA_ERROR:Ac,Z_MEM_ERROR:Cc}=fo;function Tc(e){this.options=pa.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=gc.inflateInit2(this.strm,t.windowBits);if(n!==_c)throw new Error(po[n]);if(this.header=new bc,gc.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wc.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=gc.inflateSetDictionary(this.strm,t.dictionary),n!==_c)))throw new Error(po[n])}function Sc(e,t){const n=new Tc(t);if(n.push(e),n.err)throw n.msg||po[n.err];return n.result}Tc.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=t===~~t?t:!0===t?vc:yc,"[object ArrayBuffer]"===wc.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=gc.inflate(n,o),s===Ec&&i&&(s=gc.inflateSetDictionary(n,i),s===_c?s=gc.inflate(n,o):s===Ac&&(s=Ec));n.avail_in>0&&s===kc&&n.state.wrap>0&&0!==e[n.next_in];)gc.inflateReset(n),s=gc.inflate(n,o);switch(s){case xc:case Ac:case Ec:case Cc:return this.onEnd(s),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(0===n.avail_out||s===kc))if("string"===this.options.to){let e=ga.utf8border(n.output,n.next_out),t=n.next_out-e,i=ga.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==_c||0!==a){if(s===kc)return s=gc.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},Tc.prototype.onData=function(e){this.chunks.push(e)},Tc.prototype.onEnd=function(e){e===_c&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Ic={Inflate:Tc,inflate:Sc,inflateRaw:function(e,t){return(t=t||{}).raw=!0,Sc(e,t)},ungzip:Sc,constants:fo};const{Deflate:jc,deflate:Lc,deflateRaw:Oc,gzip:Dc}=ja,{Inflate:Rc,inflate:Bc,inflateRaw:zc,ungzip:Nc}=Ic;var Pc=Lc,Uc=Bc;const Mc={encode:e=>{const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return Uint8Array.from(n).buffer},decode:e=>{const t=new Uint8Array(e);let n="",r=0;for(;r=n)return new ArrayBuffer(0);const i=Vc(this,Hc,qc(this,Hc,"f")+e,"f");return i>n?t.slice(r,n):t.slice(r,i)}};var Zc,Kc=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Zc=new WeakMap;const Gc=class{constructor(){Zc.set(this,[])}write(e){const t=Kc(this,Zc,"f");switch(typeof e){case"number":t.push(e);break;case"object":Array.isArray(e)?t.push(Uint8Array.from(e).buffer):ArrayBuffer.isView(e)?t.push(e.buffer):t.push(new DataView(e,0,0).buffer);break;default:throw new Error("Invalid value: "+e)}}toArrayBuffer(e){const t=Kc(this,Zc,"f");if((e||(e=0))<=0)for(const n of t)e+="number"==typeof n?1:n.byteLength;const n=new Uint8Array(new ArrayBuffer(e),0,e);e=0;for(const r of t){if("number"==typeof r){n[e++]=r;continue}const t=r.byteLength;n.set(new Uint8Array(r,0,t),e),e+=t}return n.buffer}};function Yc(e){try{return new DataView(e,0,0),!0}catch(e){return!1}}function Jc(e){const t=e.buffer,n=e.byteOffset,r=e.byteLength;return 0===n&&r===t.byteLength?t:t.slice(n,n+r)}function Xc(e,t){const n=Fc.encode(t),r=new DataView(new ArrayBuffer(4),0,4);r.setUint32(0,n.byteLength,!0),e.write(r),e.write(n)}function Qc(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,102),n.setUint32(1,t.byteLength,!0),e.write(n),e.write(t)}function el(e,t){switch(typeof t){case"string":e.write(101),Xc(e,t);break;case"boolean":e.write([10,t?1:0]);break;case"undefined":e.write(0);break;case"number":{if(Number.isSafeInteger(t))if(t>=0){if(t<=255){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,10),n.setUint8(1,t),void e.write(n)}if(t<=65535){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,11),n.setUint16(1,t,!0),void e.write(n)}if(t<=4294967295){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,12),n.setUint32(1,t,!0),void e.write(n)}}else{if(t>=-128&&t<128){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,20),n.setInt8(1,t),void e.write(n)}if(t>=-32768&&t<32768){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,21),n.setInt16(1,t,!0),void e.write(n)}if(t>=-2147483648&&t<2147483648){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,22),n.setInt32(1,t,!0),void e.write(n)}}const n=new DataView(new ArrayBuffer(9),0,9);n.setUint8(0,33),n.setFloat64(1,t,!0),e.write(n)}break;case"bigint":{const n=new DataView(new ArrayBuffer(9),0,9);t>=0n?(n.setUint8(0,13),n.setBigUint64(1,t,!0)):(n.setUint8(0,23),n.setBigUint64(1,t,!0)),e.write(n)}break;case"object":null===t?e.write(255):Array.isArray(t)?function(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,99),n.setUint32(1,t.length,!0),e.write(n);for(const n of t)el(e,n)}(e,t):Yc(t)?Qc(e,t):ArrayBuffer.isView(t)?Qc(e,Jc(t)):function(e,t){if("function"==typeof t.toJSON)return void el(e,t.toJSON());const n=Object.keys(t);{const t=new DataView(new ArrayBuffer(5),0,5);t.setUint8(0,100),t.setUint32(1,n.length,!0),e.write(t)}for(const r of n){const n=t[r];switch(typeof n){case"boolean":case"bigint":case"number":case"object":case"string":case"undefined":Xc(e,r),el(e,n)}}}(e,t)}}function tl(e,t){if("object"!=typeof e||null==e)throw new Error("Data must be a non-null object or array.");if("object"!=typeof(t||(t={})))throw new Error("The options parameter must be an object.");{const t=new Gc;el(t,e),e=t.toArrayBuffer()}const n=t.compressMethod||0,r=t.compressLevel||5;switch(n){case 0:break;case 1:e=Pc(e,{raw:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 3:e=Pc(e,{gzip:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 2:case 4:case 5:case 6:throw new Error("Not implemented");default:throw new Error("Unknown compress method: "+n)}const i=new Uint8Array(new ArrayBuffer(e.byteLength+7));return i[0]=128,i[1]=99,i[2]=98,i[3]=106,i[4]=102,i[5]=1,i[6]=n,i.set(new Uint8Array(e),7),i.buffer}function nl(e){const t=e.read();switch(t){case 0:return;case 255:return null;case 10:return e.read();case 11:return new DataView(e.readNBytes(2),0,2).getUint16(0,!0);case 12:return new DataView(e.readNBytes(4),0,4).getUint32(0,!0);case 13:return new DataView(e.readNBytes(8),0,8).getBigUint64(0,!0);case 20:return e.read()<<8>>8;case 21:return new DataView(e.readNBytes(2),0,2).getInt16(0,!0);case 22:return new DataView(e.readNBytes(4),0,4).getInt32(0,!0);case 23:return new DataView(e.readNBytes(8),0,8).getBigInt64(0,!0);case 32:return new DataView(e.readNBytes(4),0,4).getFloat32(0,!0);case 33:return new DataView(e.readNBytes(8),0,8).getFloat64(0,!0);case 99:return function(e){const t=new DataView(e.readNBytes(4),0,4).getUint32(0,!0),n=new Array(t);for(let r=0;r{function n(e){const n=t.getElementById(e);if(null==n)throw new Error("Element does not exist: "+e);return n}function r(e){const n=t.querySelector(e);if(n instanceof HTMLElement)return n;throw new Error("Failed to query selector: "+e)}function i(e){null!=e?(p.textContent=e,p.style.display="block"):p.style.display="none"}function s(e){f.appendChild(o(e)),m.style.display="block"}function o(n){if(e.crossOriginIsolated){const r=t.createElement("iframe");return r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.onload=()=>{r.onload=null,r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\t\n\t\n\t\n\t\t\n\t\n`)))},r}const r=t.createElement("embed");return r.setAttribute("type","text/plain"),r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("src",n),r}function a(e){try{return new URL(e)}catch(e){return null}}function c(t){const n=e.open(void 0,"_blank","");if(null==n)return void i("Please allow popups in your browser settings and try again.");n.stop(),n.focus();const r=w.parseFromString(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\x3c!-- dummy --\x3e\n\t\n`,"application/xml");t.remove(),r.body.appendChild(t),n.document.documentElement.replaceWith(r.documentElement)}function l(e,t){return new Promise(((n,r)=>{const i=Date.now().toString(36),s=(e,t,a)=>{e===i&&(A.off("res",s),A.off("disconnect",o),null!=a?r(a):n(t))},o=()=>{A.off("res",s),A.off("disconnect",o),r(new Error("Server connection interrupted"))};A.on("res",s),A.on("disconnect",o),A.emit("fetch",i,e,t)}))}"complete"!==t.readyState&&await new Promise((e=>{const n=()=>{"complete"===t.readyState&&(t.removeEventListener("readystatechange",n),e())};t.addEventListener("readystatechange",n,{passive:!0})})),e.stop(),e.focus(),e.onerror=(e,t,n,r,i)=>{let s="Unhandled error at "+(t||"unknown source ");null!=n&&(s+=n),null!=r&&(s+=":"+r),null!=i&&(s+="\n\n"+i),console.error(s),p.textContent=s,p.style.display="block"},e.onkeydown=e=>{if(e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey)switch(e.key){case"q":e.preventDefault(),e.stopPropagation(),d.replace("https://www.google.com/webhp?igu=1");break;case"b":e.preventDefault(),e.stopPropagation();const{body:n}=t;n.hasAttribute("style")?n.removeAttribute("style"):n.setAttribute("style","filter: blur(15px);");break;case"h":e.preventDefault(),e.stopPropagation(),"WhiteSpider"===t.title?(t.title="Google",r("link[rel*='icon']").href="/res/google.ico"):(t.title="WhiteSpider",r("link[rel*='icon']").href="/favicon.ico")}},e.onappinstalled=e=>{e.preventDefault(),e.stopPropagation(),b.style.display="none"},e.onbeforeinstallprompt=e=>{e.preventDefault(),e.stopPropagation(),b.style.display="block",b.onclick=()=>{e.prompt()}};const d=e.location,h=e.history,u=d.pathname,p=n("error"),f=n("frame"),m=n("frame-view"),g=n("status"),b=n("install"),w=new DOMParser,y=r('link[rel="canonical"]'),v=(...t)=>e.console.log(...t);{const{_a:N,_b:P,_d:U,_e:M,_f:F,_g:$,_h:H,_i:V,_j:q,_k:W,_l:Z,_m:K,_n:G,_o:Y,_v:J,_w:X,_p:Q,_q:ee,_r:te}=ol;if((()=>{v(N,P);const e=new URL(d.href),n=e.hostname,r=e.origin;switch(e.protocol){case"http:":if("localhost"!==n)return e.protocol="https:",e.pathname="/",e.host=n,d.replace(e.href),!1;break;case"https:":break;default:return!0}switch(n){case"whitespider.cf":case"whitespider.tk":case"whitespider.gq":case"whitespider.web.app":case"whitespider.pages.dev":case"whitespider.firebaseapp.com":return e.host="whitespider.dev",e.pathname="/",d.replace(e.href),!1}{const e=t[Y](H);if(null==e||e[q](V)!==Z)return!0}for(const e of t[K](G)){switch(e[q]("type")||""){case"":case"text/javascript":case"application/javascript":break;default:return e.remove(),!0}const t=e[q]("src");if(!t||e.textContent)return e.remove(),!0;const n=new URL(t.startsWith("//")?"https:"+t:t,r);if(n.origin!==r){if("https:"===n.protocol){const e=n.host.split("."),t=e.length;if("com"===e[t-1]){const n=e[t-2];if(n.indexOf("google")>=0||n.indexOf("firebase")>=0)continue}}return e.remove(),!0}}return y[q]("href")!==F||null==t[Y](Q)||null==t[Y](ee)||t[te]!==N.slice(2,13)})()){v(M,W);const ne=w.parseFromString(J,"application/xhtml+xml");ne.title=$;const re=ne.body;re.innerHTML=U;{const ie=ne.createElement("button");ie.innerHTML=X,ie.setAttribute("type","button"),ie.addEventListener("click",(()=>{d.replace(F)}),{passive:!0}),re.appendChild(ie)}return void t.documentElement.replaceWith(ne.documentElement)}for(const se of Object.getOwnPropertyNames(ol))2===se.length&&delete ol[se]}if(e!==e.top){if("null"===d.ancestorOrigins?.item(0)){const oe=t.createElement("div");return oe.textContent="Click here to continue",oe.onclick=()=>c(o("https://whitespider.dev/")),oe.setAttribute("style","padding: 15px;"),t.body.innerHTML="",void t.body.appendChild(oe)}if("https://whitespider.dev"!==d.origin)return void d.replace("https://whitespider.dev/")}const _=t.documentElement.clientWidth<800,k=new Yr(e),{localStorage:E}=k;let x,A,C,T,S,I=null,j=null;const L=[],O=[];if(e.isSecureContext??"https:"===d.protocol){if(k.persistent)try{const ae=await async function(t,n){try{const t=await e.fetch("/manifest.json",{cache:"no-cache",method:"GET"});return t.ok?await t.text():null}catch(e){return null}}();if(null!=ae){const ce=JSON.parse(ae).version;if(ce!==E.get("__mf_version")){t.body.innerHTML="Updating contents...";const le=e.caches;for(const de of await le.keys())await le.delete(de);return E.delete("__new_read"),E.set("__mf_version",ce),void d.reload()}n("version").textContent="v"+ce}x=E.get("__secrets_")||void 0}catch(he){}else i("Warning: Cookies are blocked by your browser. Some features might not work properly, and your game data will NOT be saved.");try{const ue=e.navigator.serviceWorker;null!=ue&&(await ue.register("/sw.js",{type:"classic",scope:"/",updateViaCache:"none"}),await ue.ready)}catch(pe){}}try{const fe=await e.fetch("/d/index.json",{mode:"same-origin",cache:"no-cache",method:"GET"});if(!fe.ok)throw new Error("Remote returned error status code: "+fe.status);const me=il(await fe.arrayBuffer());for(const ge of me)L.push(ge);for(const be of me.sort(((e,t)=>t.date-e.date)).slice(0,200))O.push(be)}catch(we){return void i("Failed to initialize local game list. Message: "+String(we))}p.onclick=()=>{p.innerHTML="",p.style.display="none"},n("frame-close").onclick=()=>{f.innerHTML="",m.style.display="none",h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")},n("frame-newtab").onclick=()=>{const e=f.firstElementChild;null!=e&&(f.innerHTML="",m.style.display="none",c(e))};{const ye=r("link[rel*='icon']"),ve=n("backend-url"),_e=n("theme"),ke=n("tab-cloaking");let xe;function Ae(e){null!=A&&(A.disconnect(),A.close()),A=Ee(e||ll,{path:"/_api_/",secure:!0,upgrade:!0,timeout:1e4,forceNew:!0,multiplex:!1,transports:["polling"],autoConnect:!0,reconnection:!0,rememberUpgrade:!0,reconnectionDelay:5e3,closeOnBeforeunload:!0}),g.innerHTML="Connecting...",g.style.color="#808000",A.io.on("open",(()=>{g.innerHTML="✓Connected",g.style.color="#008000"})),A.io.on("close",(()=>{g.innerHTML="✕Disconnected",g.style.color="#ff0000"})),A.io.on("reconnect_attempt",(()=>{g.innerHTML="Connecting...",g.style.color="#808000"})),A.io.on("reconnect_error",(()=>{g.innerHTML="✕Disconnected",g.style.color="#ff0000"})),A.io.on("reconnect",(()=>{g.innerHTML="✓Connected",g.style.color="#008000",null!=I&&I()}))}function Ce(e){switch(null==xe&&(xe=t.createElement("link"),xe.rel="stylesheet",xe.type="text/css",xe.href="index.dark.css",t.head.appendChild(xe)),e){case"light":xe.disabled=!0,xe.removeAttribute("media");break;case"dark":xe.disabled=!1,xe.removeAttribute("media");break;default:xe.media="all and (prefers-color-scheme: dark)",xe.disabled=!1}}function Te(e){switch(e){case"empty":C=!0,t.title="⁠",ye.type="image/x-icon",ye.href="/res/empty.ico";break;case"google":C=!0,t.title="Google",ye.type="image/x-icon",ye.href="/res/google.ico";break;case"classroom":C=!0,t.title="Home",ye.type="image/png",ye.href="/res/classroom.png";break;default:C=!1,t.title="WhiteSpider",ye.type="image/x-icon",ye.href="/favicon.ico"}}ve.onblur=()=>{const e=a(ve.value.trim());if(null!=e){const t=e.href;E.set("__backendURL_",t),Ae(ve.value=t)}else E.delete("__backendURL_"),Ae(ve.value="")},_e.onchange=()=>{const e=_e.value;Ce(e),E.set("__set_theme",e)},ke.onchange=()=>{const e=ke.value;Te(e),E.set("__set_tabc",e)};{const Se=E.get("__backendURL_")||"";Ae(Se),ve.value=Se}{const Ie=E.get("__set_theme")||"default";Ce(Ie),_e.value=Ie}{const je=E.get("__set_tabc")||"disabled";Te(je),ke.value=je}}{const Le=n("game-container"),Oe=n("game-frame"),De=n("player"),Re=n("name"),Be=n("type"),ze=n("tags"),Ne=n("date"),Pe=n("user"),Ue=n("desc"),Me=n("ecode"),Fe=n("dlink"),$e=n("gnav-back"),He=n("gnav-forward"),Ve=n("gnav-page-no"),qe=n("gnav-page-count"),We=[],Ze=[];let Ke=0,Ge="all",Ye="";l(15).then((e=>{for(const t of Object.keys(e).map((t=>({k:parseInt(t,36),v:e[t]}))).sort(((e,t)=>t.v-e.v)).slice(0,100))for(const e of L)if(e.date===t.k){Ze.push(e);break}})).catch((e=>{i("Failed to fetch remote game data. Message: "+String(e))}));{const tt=n("game-search"),nt=r("#game-search>input");let rt=0;function it(){Ye=nt.value.toLowerCase().trim(),Xe()}tt.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),clearTimeout(rt),it()},nt.onblur=()=>{clearTimeout(rt),it()},nt.oninput=()=>{clearTimeout(rt),rt=setTimeout((()=>{it()}),1e3)}}{const st=t.querySelectorAll("#game-category>button");for(const ot of st)ot.onclick=()=>{for(const e of st)e.removeAttribute("current");ot.setAttribute("current","true"),Ge=ot.getAttribute("match")||"all",Xe()}}{const at=r('#game-category>button[match="new"]');E.has("__new_read")||(at.setAttribute("unread","true"),at.addEventListener("click",(()=>{at.removeAttribute("unread"),E.set("__new_read","1")}),{once:!0,passive:!0}))}function Je(){switch(Ge){case"all":return Ye.length>0?L.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):L;case"new":return Ye.length>0?O.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):O;case"hot":return Ye.length>0?Ze.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):Ze;case"html5":return L.filter((e=>"html5"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));case"flash":return L.filter((e=>"flash"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));case"dos":return L.filter((e=>"dos"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));default:return L.filter((e=>e.tags.split(",").indexOf(Ge)>=0&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0)))}}function Xe(){Ke=0,We.length=0;const e=Je();if(0===e.length)$e.disabled=!0,He.disabled=!0,Le.innerHTML="No results found :(";else{for(let t=0;t=We.length-1?He.disabled=!0:He.disabled=!1;for(const e of We[Ke]){const{name:n,prev:r,date:i}=e,s=t.createElement("a");s.href=i>0?"/g/"+i.toString(36):"#",s.title="Play "+n,s.target="_self",s.onclick=t=>{t.ctrlKey||(t.preventDefault(),t.stopPropagation(),T(e))},s.style.backgroundImage=null!=r?'url("'+r+'"), url("/res/preview.svg")':'url("/d/'+encodeURIComponent(n)+'.jpg"), url("/res/preview.svg")';{const e=t.createElement("div");e.textContent=n,s.appendChild(e)}switch(e.type){case"html5":{const e=t.createElement("span");e.textContent="HTML5",e.style.background="#c04000",s.appendChild(e)}break;case"flash":{const e=t.createElement("span");e.textContent="Flash",e.style.background="#008000",s.appendChild(e)}break;case"dos":{const e=t.createElement("span");e.textContent="Dos",e.style.background="#0000ff",s.appendChild(e)}break;default:s.style.backgroundImage='url("/res/preview.svg")'}Le.appendChild(s)}}function et(){De.innerHTML="",Oe.style.display="none",C||(t.title="WhiteSpider"),h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")}T=async({name:e,type:n,tags:r,date:i,path:s,desc:a,user:c})=>{De.appendChild(o("/ext/emu/?name="+e+"&type="+n+"&url="+encodeURIComponent(s))),Pe.innerHTML="",Re.textContent=e,Be.textContent=n.toUpperCase(),ze.textContent=r.replace(/\,/g,", ")||"None",Ne.textContent=new Date(i).toLocaleDateString("POSIX",{month:"2-digit",day:"2-digit",year:"numeric"}),Ue.textContent=a||"No information provided by the uploader.",Oe.style.display="block",C||(t.title=e+" - WhiteSpider");{const e=i.toString(36);{const t="/g/"+e;h.replaceState(void 0,"",t),y.setAttribute("href","https://whitespider.dev"+t)}{const t="https://whitespider.dev/g/"+e;Fe.textContent=t,Me.textContent=''}}{const e=await l(1,c||"anonymous");{const n=t.createElement("img");n.alt="Avatar",n.width=40,n.height=40,n.loading="eager",n.decoding="sync",n.draggable=!1,Pe.appendChild(n);{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));n.src=t,await n.decode(),URL.revokeObjectURL(t)}}{const n=t.createElement("div");switch(n.className="user",n.textContent=e.id,e.vip){case 3:n.setAttribute("vip","gold");break;case 4:n.setAttribute("vip","diamond")}Pe.appendChild(n)}Pe.onclick=()=>{et(),S(e.uid)}}if("localhost"!==d.hostname)try{await l(14,i)}catch(e){}},$e.onclick=()=>{Ke--,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},He.onclick=()=>{Ke++,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},Ve.onblur=()=>{const e=parseInt(Ve.value.trim(),10)||0;Ke+1!==e&&(e<1||e>We.length?(Ve.value="1",Ke=0):Ke=e-1,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"}))},Ve.onchange=()=>{Ve.blur()},n("game-close").onclick=()=>et(),n("game-newtab").onclick=()=>{const e=De.firstElementChild;null!=e&&(et(),c(e))},Xe(),Le.style.height="fit-content",Le.style.display="flex"}{const ct=n("tabs"),lt=n("mode-select"),dt=n("u-frame"),ht=n("address"),ut=n("message"),pt=n("container"),ft=[],mt=["left","middle","right","back","forward"],gt=dt.getContext("bitmaprenderer",{alpha:!1}),bt={width:t.documentElement.clientWidth,height:t.documentElement.clientHeight-120,touch:e.navigator.maxTouchPoints>0},wt=ct.children;let yt=-1;{const jt=n("prox-btn"),Lt=n("unbl-content");lt.value=E.get("__unbl_mode_")||"puppeteer",jt.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");if(z.checked=!1,jt.setAttribute("current","true"),Lt.setAttribute("current","true"),"puppeteer"===lt.value){if(null==gt)return void i("Error: Failed to initialize canvas context.");I=()=>{vt("Restoring session..."),It()},j=()=>{vt(null),I=null,j=null,yt=-1,ft.length=0,ct.innerHTML="",A.emit("end_session"),A.offAny(St)},vt("Requesting new session..."),It()}},lt.onchange=()=>{"puppeteer"===lt.value?(E.set("__unbl_mode_","puppeteer"),jt.click()):(null!=j&&j(),E.set("__unbl_mode_","raw-embed"))}}function vt(e){null!=e?(ut.textContent=e,ut.style.display="block"):ut.style.display="none"}function _t(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,x:e.offsetX,y:e.offsetY,button:mt[e.button]}),!1}function kt(e){e.preventDefault(),e.stopPropagation(),e.returnValue=!1;const{type:t,touches:n}=e;if(n.length>0){const e=dt.getBoundingClientRect();for(const r of n)A.emit("event",{type:t,x:r.clientX-e.x,y:r.clientY-e.y})}else A.emit("event",{type:t});return!1}function Et(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,deltaX:e.deltaX,deltaY:e.deltaY}),!1}function xt(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,key:e.key}),!1}function At(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,dt.focus({preventScroll:!0}),!1}function Ct(e){e=e.toLowerCase();for(let t=0;t57)&&(n<97||n>122)&&45!==n&&46!==n)return!1}return!0}function Tt(e,t){const n=a(e=e.replace(/\s+/g," ").trim());if(null!=n)return n.href;if(e.includes(" "))return t+encodeURIComponent(e);const r=e.indexOf("/");if(0===r)return t+encodeURIComponent(e);if(r>0){if(Ct(e.substring(0,r)))return"https://"+e}else if(Ct(e)&&e.includes("."))return"https://"+e;return t+encodeURIComponent(e)}function St(e,...n){switch(e){case"url":{const e=n[0];if("string"==typeof e){const n=ft[yt];null!=n&&(n.url=e),t.activeElement!==ht&&(ht.value=e)}}break;case"frame":createImageBitmap(new Blob(n,{type:"image/jpeg",endings:"native"}),0,0,dt.width,dt.height,{resizeQuality:"pixelated",imageOrientation:"none",premultiplyAlpha:"none",colorSpaceConversion:"none"}).then((e=>{gt.transferFromImageBitmap(e),e.close()}));break;case"tabinfo":{const e=(n=n[0]).id,t=wt[e],r=ft[e];r.title=t.querySelector("div").textContent=n.title||"Untitled",r.favicon=t.querySelector("img").src=n.favicon||"/res/empty.ico"}break;case"tabopen":const e=t.createElement("div");e.innerHTML='Site Icon
Untitled
',e.onclick=()=>{for(const e of wt)e.removeAttribute("current");e.setAttribute("current","true"),A.emit("focustab",yt=ft.indexOf(i))};const r=t.createElement("button");r.type="button",r.title="Close",r.onclick=()=>{A.emit("closetab",ft.indexOf(i))},e.appendChild(r);for(const e of wt)e.removeAttribute("current");e.setAttribute("current","true");const i={url:"",title:"",favicon:""};Object.setPrototypeOf(i,null),Object.preventExtensions(i),yt=ft.length,ft.push(i),ct.appendChild(e);break;case"tabclose":const s=n[0];s>=0&&s1?wt[yt=s-1].setAttribute("current","true"):wt[yt=0].setAttribute("current","true")),wt[s].remove(),ft.splice(s,1))}}async function It(){A.offAny(St),A.emit("ns",bt);{const{width:e,height:t}=await new Promise((e=>{A.once("session_ready",e)}));pt.style.width=e+"px",pt.style.height=t+"px",bt.width=e,bt.height=t,dt.width=e,dt.height=t}for(const e of ft)A.emit("newtab"),await new Promise((e=>{A.once("tabopen",e)})),A.emit("navigate",e.url),await new Promise((t=>{A.once("tabinfo",(n=>{const r=ct.children[n.id];e.title=r.querySelector("div").textContent=n.title||"Untitled",e.favicon=r.querySelector("img").src=n.favicon||"/res/empty.ico",t()}))}));A.onAny(St),-1===yt?A.emit("newtab"):A.emit("focustab",yt),vt(null),dt.autofocus=!0,dt.focus({preventScroll:!0})}n("back").onclick=()=>A.emit("goback"),n("forward").onclick=()=>A.emit("goforward"),n("refresh").onclick=()=>A.emit("refresh"),n("new-tab").onclick=()=>A.emit("newtab"),ht.onfocus=()=>{ht.select()},ht.onblur=()=>{const e=ft[yt];null!=e&&(ht.value=e.url)},ht.onkeydown=e=>{if("Enter"===e.key){e.preventDefault(),e.stopPropagation();const t=ht.value.trim();t.length>0&&("puppeteer"===lt.value?(dt.focus({preventScroll:!0}),A.emit("navigate",Tt(t,"https://www.google.com/search?q="))):s(Tt(t,"https://www.bing.com/search?q=")))}},ht.ondragstart=e=>{e.preventDefault(),e.stopPropagation(),ht.selectionEnd=ht.selectionStart||=0},dt.addEventListener("mousedown",_t,{passive:!1}),dt.addEventListener("mouseup",_t,{passive:!1}),dt.addEventListener("mousemove",_t,{passive:!1}),dt.addEventListener("touchstart",kt,{passive:!1}),dt.addEventListener("touchend",kt,{passive:!1}),dt.addEventListener("touchmove",kt,{passive:!1}),dt.addEventListener("wheel",Et,{passive:!1}),dt.addEventListener("keydown",xt,{passive:!1}),dt.addEventListener("keyup",xt,{passive:!1}),dt.addEventListener("click",At,{passive:!1}),dt.addEventListener("contextmenu",At,{passive:!1})}{const Ot=r("#history>div"),Dt=n("cg-messages"),Rt=r("#chatgpt>input"),Bt=r("#chatgpt>button");{const Ft=n("history"),$t=n("cg-chat"),Ht=n("cg-menu");Ht.onclick=()=>{Ht.style.display="none",Ft.removeAttribute("style"),$t.removeAttribute("style")},n("cg-close").onclick=()=>{Ht.style.display="block",Ft.style.display="none",$t.style.width="100%"},_&&(Ht.style.display="block",Ft.style.display="none",$t.style.width="100%")}let zt=null;const Nt=JSON.parse(E.get("__chats")||"[]");function Pt(e,n){const r=t.createElement("div");{const n=t.createElement("img");n.width=32,n.height=32,n.loading="lazy",n.decoding="async",n.draggable=!1,"u"===e?(n.src="/res/user.svg",n.alt="User"):(n.src="/res/bot.svg",n.alt="Assistant"),r.appendChild(n)}{const e=t.createElement("div");e.textContent=n,r.appendChild(e)}return Dt.appendChild(r),r}function Ut(e){const n=t.createElement("div");n.onclick=()=>{for(const e of Ot.children)e.removeAttribute("current");n.setAttribute("current","true"),Dt.innerHTML="",zt=e.msgs;for(const e of zt)Pt(e.role,e.text);Dt.scrollIntoView({behavior:"instant",block:"end",inline:"end"})};const r=t.createElement("div");r.textContent=e.title,n.appendChild(r);const i=t.createElement("button");i.type="button",i.title="Delete",i.onclick=t=>{t.preventDefault(),t.stopPropagation();const r=Nt.indexOf(e);r>=0&&(zt=null,n.remove(),Nt.splice(r,1),Dt.innerHTML="",E.set("__chats",JSON.stringify(Nt,void 0,0)))},n.appendChild(i),Ot.prepend(n)}function Mt(){Rt.disabled=!1,Bt.disabled=!1,A.removeAllListeners("gptres"),A.removeAllListeners("gptend"),A.removeAllListeners("gpterr")}for(const Vt of Nt)Ut(Vt);n("chatgpt").onsubmit=e=>{e.preventDefault(),e.stopPropagation();const t=Rt.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(!A.connected)return void i("Error: Disconnected from the backend server.");if(Rt.value="",Rt.disabled=!0,Bt.disabled=!0,Pt("u",t),null==zt){const e={title:t.slice(0,100),msgs:zt=[]};Ut(e),Nt.push(e)}zt.push({role:"u",text:t});const n=Pt("a","Processing..."),r=n.lastElementChild;let s;A.on("gptres",(e=>{r.textContent=s=e,r.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"})})),A.on("gptend",(()=>{Mt(),zt.push({role:"a",text:r.textContent=s}),E.set("__chats",JSON.stringify(Nt,void 0,0))})),A.on("gpterr",(e=>{Mt(),zt.pop(),n.remove(),i("Failed to process the request. Message: "+e)})),A.emit("gptreq",zt)},n("new-chat").onclick=()=>{for(const e of Ot.children)e.removeAttribute("current");zt=null,Dt.innerHTML=""}}{const qt=n("yt-search"),Wt=r("#yt-search>input"),Zt=r("#yt-search>button"),Kt=n("yt-api-key"),Gt=n("yt-order"),Yt=n("yt-results"),Jt=n("yt-load-more"),Xt=n("yt-max-results");let Qt;function en(n){const r=t.createElement("iframe");r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("scrolling","no"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\n\t\n`))),f.appendChild(r),m.style.display="block"}function tn(e){switch(e.host){case"youtube.com":case"youtube-nocookie.com":case"www.youtube.com":case"www.youtube-nocookie.com":const t=e.pathname;return"/watch"===t?e.searchParams.get("v")||null:t.startsWith("/embed/")&&t.substring(7)||null;case"youtu.be":return e.pathname.substring(1)||null;default:return null}}async function nn(){const t=new URL("https://youtube.googleapis.com/youtube/v3/search"),n=t.searchParams;n.set("q",Wt.value),n.set("key",Kt.value||"AIzaSyARuwknsJhvP-ysM8-DwbqqJ5e-EaTL-UY"),n.set("type","video"),n.set("part","snippet"),n.set("order",Gt.value),n.set("maxResults",Xt.value),n.set("safeSearch","none"),n.set("videoEmbeddable","true"),null!=Qt&&n.set("pageToken",Qt);const r=await e.fetch(t,{cache:"no-cache",method:"GET",headers:{Accept:"application/json"}});return"application/json"===(r.headers.get("content-type")||"").split(";",2)[0].trim()?await r.json():null}async function rn(){i(null),Zt.disabled=!0,Wt.disabled=!0,Jt.style.display="none";const e=await nn();if(null==e)return void i("API server returned invalid data.");if("error"in e){const{message:t,code:n}=e.error;return void i(t+" (Code: "+n+")")}const n=e.items;if(0==n.length)return void i("No results match your search.");for(const e of n){const n=e.id.videoId,r=e.snippet,i=t.createElement("div");i.onclick=()=>en("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white");const s=t.createElement("img");s.width=160,s.height=90,s.title="Video Preview",s.draggable=!1,s.src=r.thumbnails.medium.url,i.appendChild(s);const o=t.createElement("div");i.appendChild(o);const a=t.createElement("div");a.className="title",a.textContent=r.title,o.appendChild(a);const c=t.createElement("div");c.className="desc",c.textContent=r.description,o.appendChild(c);const l=t.createElement("div");l.className="time",l.textContent=r.publishTime,o.appendChild(l),Yt.appendChild(i)}const r=e.nextPageToken;null!=r&&(Jt.style.display="block",Jt.onclick=()=>{Qt=r,rn().then((()=>{Zt.disabled=!1,Wt.disabled=!1}))})}Kt.value=E.get("__yt_apikey")||"",qt.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),Qt=null,Yt.innerHTML="";const t=a(Wt.value);if(null==t)return void rn().then((()=>{Zt.disabled=!1,Wt.disabled=!1}));i(null),Jt.style.display="none";const n=tn(t);null!=n?en("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white"):i("Error: Failed to parse YouTube video ID from the provided URL.")},Kt.onblur=()=>{const e=Kt.value.trim();return 0===e.length?(E.delete("__yt_apikey"),void(Kt.value="")):e.length<30?(i("Invalid API key."),void(Kt.value="")):void E.set("__yt_apikey",Kt.value=e)},Xt.onblur=()=>{const e=parseInt(Xt.value.trim(),10);isNaN(e)?Xt.value="10":e<1?Xt.value="1":e>30&&(Xt.value="30")}}{const sn=n("emulator"),on=n("core"),an=n("bios"),cn=n("game-rom");sn.onchange=()=>{switch(sn.value){case"flash":on.disabled=!0,an.disabled=!0,cn.accept=".swf";break;case"dos":on.disabled=!0,an.disabled=!0,cn.accept=".jsdos, .zip";break;default:sn.value="emu",on.disabled=!1,an.disabled=!1,cn.accept="*/*"}},n("startemu").onclick=()=>{const e=cn.files?.item(0);if(null==e)return void i("Please choose a valid game ROM file.");const t=sn.value,n=new URLSearchParams("");if(n.set("name",e.name),n.set("type",t),n.set("url",URL.createObjectURL(e)),"emu"===t){n.set("core",on.value);const e=an.files?.item(0);null!=e&&n.set("bios",URL.createObjectURL(e))}s("player.html?"+n.toString())}}{const ln=n("game-name"),dn=n("game-type"),hn=n("game-file"),un=n("game-labels"),pn=n("game-description"),fn=n("upload"),mn=n("upload-message");dn.onchange=()=>{switch(dn.value){case"html5":hn.accept=".zip";break;case"flash":hn.accept=".swf";break;case"dos":hn.accept=".jsdos";break;default:hn.accept="*/*"}},mn.onclick=()=>{mn.innerHTML="",mn.style.display="none"},fn.onclick=async()=>{const e=ln.value.replace(/\s+/g," ").trim();if(0===e.length)return void i("Game name must not be empty.");if(e.length>256)return void i("Game name must be less than 256 characters.");const t=hn.files?.item(0);if(null==t)return void i("Please choose a valid game file.");if(0===t.size)return void i("Uploading empty game files is not allowed.");if(t.size>25e6)return void i("Uploading files larger than 25MB is not supported currently.");if(null==x)return void i("Invalid session. Please refresh this page and try again.");if(!A.connected)return void i("Error: Disconnected from the backend server.");fn.disabled=!0,mn.innerHTML="Processing...",mn.style.color="#808080",mn.style.display="block";const n=pn.value.replace(/\s+/g," ").trim(),r=un.value.trim().toLowerCase().split(",").map((e=>e.replace(/\s+/g," ").trim())).join(",");if(r.length>300)i("The game tags list must be less than 300 characters in total.");else if(n.length>5e3)i("The game description text must be less than 5000 characters.");else{try{await l(13,[x,e,dn.value,r,n,await t.arrayBuffer()]),mn.innerHTML="✓Success!",mn.style.color="#008000",mn.style.display="block"}catch(e){mn.innerHTML="✕Error",mn.style.color="#ff0000",mn.style.display="block",i("Failed to upload the game. Message: "+e)}ln.value="",hn.value="",un.value="",pn.value="",fn.disabled=!1}}}{const gn=n("picker"),bn=n("ufile"),wn=n("messages"),yn=t.querySelectorAll("#channels>div"),vn=n("sendmsg");let _n="";{const xn=n("chat"),An=n("menu"),Cn=n("sidemenu");An.onclick=()=>{xn.removeAttribute("style"),An.style.display="none",Cn.style.display="block"},n("close-sm").onclick=()=>{xn.style.width="100%",An.style.display="block",Cn.style.display="none"},_&&(xn.style.width="100%",An.style.display="block",Cn.style.display="none")}{const Tn=n("chat-btn"),Sn=n("community-page");Tn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Tn.setAttribute("current","true"),Sn.setAttribute("current","true"),A.on("msg",((e,t)=>{if(e===_n){const e=kn(t),n=wn.scrollHeight-wn.clientHeight;wn.appendChild(e),n===wn.scrollTop&&e.scrollIntoView({behavior:"instant",block:"end",inline:"end"})}})),A.on("msgdel",((e,t)=>{if(e===_n)for(const e of wn.children)if(e.getAttribute("_id")===t){e.remove();break}})),A.on("msgupd",((e,t,n)=>{if(e===_n)for(const e of wn.children)if(e.getAttribute("_id")===t){const r=e.querySelector("div>span");null!=r?r.textContent=n:i("Failed to update message: "+t);break}})),I=()=>{A.emit("ncs")},j=()=>{I=null,j=null,A.emit("end_session"),A.removeAllListeners("msg"),A.removeAllListeners("msgdel"),A.removeAllListeners("msgupd")},A.emit("ncs"),yn[0].dispatchEvent(new Event("click"))}}function kn({id:e,msg:n,uid:r,vip:i,user:o,icon:a,files:c}){const l=t.createElement("div");l.setAttribute("_id",e);const d=t.createElement("img");if(d.alt="Avatar",d.width=32,d.height=32,d.loading="lazy",d.decoding="async",d.draggable=!1,"string"!=typeof a){const e=URL.createObjectURL(new Blob([a],{type:"image/jpeg",endings:"native"}));d.addEventListener("load",(()=>URL.revokeObjectURL(e)),{once:!0,passive:!0}),d.src=e}else d.src=a;const h=t.createElement("div");switch(h.className="user",h.textContent=o,i){case 3:h.setAttribute("vip","gold");break;case 4:h.setAttribute("vip","diamond")}null!=r&&(d.style.cursor="pointer",h.style.cursor="pointer",d.onclick=h.onclick=()=>{S(r)});{const e=t.createElement("div"),r=t.createElement("span");r.textContent=n,e.appendChild(h),e.appendChild(r);for(const{name:n,type:r,url:i}of c)if(r.startsWith("image/")){const n=t.createElement("img");n.src=i,n.alt="Attachment",n.width=500,n.height=500,n.loading="lazy",n.decoding="async",n.draggable=!1,n.onclick=()=>s(i),e.appendChild(n)}else if(r.startsWith("audio/")){const n=t.createElement("audio");n.src=i,n.muted=!1,n.preload="metadata",n.controls=!0,e.appendChild(n)}else if(r.startsWith("video/")){const n=t.createElement("video");n.src=i,n.muted=!0,n.width=500,n.height=500,n.autoplay=!0,n.controls=!0,e.appendChild(n)}else{const r=t.createElement("a");r.rel="noopener nofollow",r.href=i,r.target="_blank",r.download="",r.textContent=n,e.appendChild(r)}l.appendChild(d),l.appendChild(e)}return l}async function En(e){const t=await l(7,[_n=e]);let n=t[t.length-1]?.id,r=!1;wn.innerHTML="",wn.onscroll=async()=>{if(0===wn.scrollTop&&!r){r=!0;try{const t=await l(7,[e,n]);if(t.length>0){const e=wn.scrollHeight;for(const e of t)wn.prepend(kn(e));n=t[t.length-1].id,wn.scrollTo({behavior:"instant",left:0,top:wn.scrollHeight-e})}}catch(e){i("Failed to fetch messages. Reason: "+e)}r=!1}};for(const e of t)wn.prepend(kn(e));wn.scrollTo({behavior:"instant",left:0,top:wn.scrollHeight})}{const In=n("channel-name");let jn=!1;for(const Ln of yn){const On=Ln.getAttribute("id")||"";Ln.onclick=async()=>{if(!jn){jn=!0;try{await En(On)}catch(e){i("Failed to initialize channel. Message: "+e)}for(const e of yn)e.removeAttribute("current");Ln.hasAttribute("q")?bn.style.display="block":bn.style.display="none",Ln.setAttribute("current","true"),In.innerHTML=Ln.innerHTML,jn=!1}}}}vn.onfocus=()=>{null==x&&(vn.blur(),D.click())},vn.onkeydown=e=>{if("Enter"===e.key){if(e.preventDefault(),e.stopPropagation(),null==x)return void D.click();const t=vn.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(t.length>1e3)return void i("The message should not be longer than 1000 characters.");if(!A.connected)return void i("Error: Disconnected from the backend server.");vn.value="",vn.disabled=!0,l(8,[x,_n,t]).then((()=>{vn.disabled=!1})).catch((e=>{i("Failed to post text message. Message: "+e),vn.disabled=!1}))}},n("emoji").onclick=()=>{if("block"!==gn.style.display){if(null==gn.firstElementChild){const e=new Ss({locale:"POSIX",emojiVersion:1e3});e.addEventListener("emoji-click",(e=>{e.preventDefault(),e.stopPropagation();const t=e.detail.unicode;null!=t&&vn.setRangeText(t,vn.selectionStart||0,vn.selectionEnd||0,"end")})),gn.appendChild(e)}gn.style.display="block"}else gn.style.display="none"},bn.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="*/*",e.multiple=!0,e.onchange=async()=>{const t=e.files;if(null!=t&&t.length>0){if(t.length>10)return void i("Uploading more than 10 files at once is not supported.");if(!A.connected)return void i("Error: Disconnected from the backend server.");const e=[];for(const n of t){if(n.size<1)return void i("Uploading empty files is not allowed.");if(n.size>1e7)return void i("Uploading files larger than 10MB is not supported.");e.push({name:n.name,attachment:await n.arrayBuffer()})}bn.disabled=!0;try{await l(12,[x,_n,e])}catch(e){i("Failed to upload file. Message: "+e)}bn.disabled=!1}},e.click()},n("discord").onclick=()=>{const t=e.open(void 0,"_blank","");null!=t?(t.stop(),t.focus(),t.location.replace("https://discord.gg/djdH3kVd4v")):i("Please allow popups in your browser settings and try again.")}}const D=n("accn-btn"),R=n("chat-profile"),B=t.querySelectorAll("#nav-bar>button, #content>div:not(#footer), #unbl-content"),z=n("side-menu");{const Dn=n("home-btn"),Rn=n("unbl-btn"),Bn=n("apps-btn"),zn=n("settings"),Nn=n("home-page"),Pn=n("site-blocked-page"),Un=n("services-page"),Mn=n("uploadgames-page"),Fn=n("accountinfo-page"),$n=n("profile-page"),Hn=n("settings-page");n("logo").onclick=Dn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Dn.setAttribute("current","true"),Nn.setAttribute("current","true")},Bn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Bn.setAttribute("current","true"),Un.setAttribute("current","true")},Rn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Rn.setAttribute("current","true"),Pn.setAttribute("current","true")},n("ug").onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Mn.setAttribute("current","true")},n("chat-login").onclick=R.onclick=D.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,D.setAttribute("current","true"),Fn.setAttribute("current","true")},zn.onclick=e=>{if(e.preventDefault(),e.stopPropagation(),null!=j&&j(),Hn.hasAttribute("current")){for(const e of B)e.removeAttribute("current");Dn.setAttribute("current","true"),Nn.setAttribute("current","true")}else{for(const e of B)e.removeAttribute("current");Hn.setAttribute("current","true")}z.checked=!1};{const Vn=n("avatar"),qn=n("userid"),Wn=n("af"),Zn=n("dm");S=async e=>{try{e=await l(1,e)}catch(t){return void i("Failed to open user profile: "+e)}{const t="/u/"+e.uid;qn.textContent=e.id,h.replaceState(void 0,"",t),y.setAttribute("href","https://whitespider.dev"+t)}switch(e.vip){case 3:qn.setAttribute("vip","gold");break;case 4:qn.setAttribute("vip","diamond");break;default:qn.removeAttribute("vip")}Wn.onclick=Zn.onclick=()=>{i("Function not yet implemented.")},null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,$n.setAttribute("current","true");{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));Vn.src=t,await Vn.decode(),URL.revokeObjectURL(t)}}}switch(u.slice(0,3)){case"/g/":case"/d/":case"/e/":{const Kn=parseInt(u.slice(3),36);if(Number.isSafeInteger(Kn)&&Kn>0)for(const Gn of L)if(Gn.date===Kn){T(Gn);break}}break;case"/u/":{const Yn=u.slice(3),Jn=Yn.length;Jn>0&&Jn<30&&S(Yn)}break;default:h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")}n("loading").remove(),n("content").style.display="block"}{const Xn=async()=>{D.innerHTML="My Account",n("ac-prof").style.display="block",n("chat-login").remove(),n("login-dialog").remove();const r=n("ac-un"),s=n("ac-edit"),o=n("ac-link"),a=n("ch-avatar"),c=a.firstElementChild,d=t.createElement("img");d.alt="Avatar",d.title="Change avatar",d.width=40,d.height=40,d.loading="eager",d.decoding="sync",d.draggable=!1,R.appendChild(d);const h=t.createElement("div");h.className="user",R.appendChild(h),R.style.display="block";const u=await l(2,x);switch(n("ac-un").textContent=h.textContent=u.id,n("ac-uid").textContent=u.uid,n("ac-name").textContent=u.name||"Not set",n("ac-email").textContent=u.email||"Not set",n("account-settings").style.display="block",u.vip){case 3:n("ac-membership").textContent="Gold 👑",r.setAttribute("vip","gold"),h.setAttribute("vip","gold");break;case 4:n("ac-membership").textContent="Diamond 💎",r.setAttribute("vip","diamond"),h.setAttribute("vip","diamond");break;default:n("ac-membership").textContent="None"}{const e=URL.createObjectURL(new Blob([u.avatar],{type:"image/jpeg",endings:"native"}));c.src=d.src=e,await c.decode(),await d.decode(),URL.revokeObjectURL(e)}a.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{const t=e.files?.item(0);if(null!=t){const e=URL.createObjectURL(t),n=new Image(512,512);n.src=e,n.loading="eager",n.decoding="sync";try{await n.decode(),URL.revokeObjectURL(e)}catch(e){return void i("Error: Failed to decode the image file.")}const r=Math.min(n.naturalWidth,n.naturalHeight),s=Math.min(r,512),o=new OffscreenCanvas(s,s),a=o.getContext("2d",{alpha:!1});if(null==a)throw new Error("Internal Error: Canvas context is null before accessing.");a.imageSmoothingEnabled=!0,a.imageSmoothingQuality="high",a.fillStyle="#ffffff",a.fillRect(0,0,s,s),a.drawImage(n,0,0,r,r,0,0,s,s);try{const e=await o.convertToBlob({type:"image/jpeg",quality:100});await l(4,[x,await e.arrayBuffer()]);const t=URL.createObjectURL(e);c.src=d.src=t,await c.decode(),await d.decode(),URL.revokeObjectURL(t)}catch(e){i("Failed to upload the image file. Message+ "+String(e))}}},e.click()},s.onclick=()=>{const e=t.createElement("div"),n=t.createElement("input");n.type="text",n.value=r.innerHTML,n.minLength=4,n.maxLength=20,n.spellcheck=!1,n.placeholder="Username",n.autocomplete="off",n.setAttribute("style","position:relative;display:inline-block;width:fit-content;height:fit-content;margin:0px 10px;padding:5px;"),e.appendChild(n);const o=t.createElement("button");o.type="button",o.title="Save",o.textContent="✓",e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Cancel",a.textContent="✕",e.appendChild(a),n.onblur=()=>{n.value=n.value.trim().toLowerCase()},o.onclick=()=>{const t=n.value.trim().toLowerCase();t.length<4||t.length>20?i("The username must have 4 to 20 characters."):/^[\-a-z0-9]+$/.test(t)?l(3,[x,t]).then((()=>{e.replaceWith(r),r.textContent=t,h.textContent=t,s.removeAttribute("style")})).catch((e=>{i("Error: Failed to change username. Message: "+e)})):i("The username must contain only hyphens, a-z, 0-9")},a.onclick=()=>{e.replaceWith(r),s.removeAttribute("style")},s.style.display="none",r.replaceWith(e),n.select()},o.onclick=()=>{const n=t.createElement("span"),r=e.origin+"/u/"+u.uid;n.textContent=r,o.replaceWith(n),navigator.clipboard.writeText(r)}};{const Qn=n("cp");Qn.onclick=()=>{const e=t.createElement("div"),n=t.createElement("div");n.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),n.textContent="Notice: If your account was created with your Google account and does not have a password, set the current password field to 'CHANGEME!'.",e.appendChild(n);const r=t.createElement("input");r.type="password",r.minLength=8,r.maxLength=30,r.spellcheck=!1,r.placeholder="Current password",r.autocomplete="off",r.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(r);const s=t.createElement("input");s.type="password",s.minLength=8,s.maxLength=30,s.spellcheck=!1,s.placeholder="New password",s.autocomplete="off",s.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(s);const o=t.createElement("input");o.type="password",o.minLength=8,o.maxLength=30,o.spellcheck=!1,o.placeholder="Confirm password",o.autocomplete="off",o.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Change",a.textContent="✓",e.appendChild(a);const c=t.createElement("button");c.type="button",c.title="Cancel",c.textContent="✕",e.appendChild(c),a.onclick=()=>{const t=r.value;if(t.length<8||t.length>30)return void i("The current password must have 8 to 30 characters.");const n=s.value;n.length<8||n.length>30?i("The new password must have 8 to 30 characters."):n===o.value?l(9,[x,t,n]).then((()=>{e.replaceWith(Qn)})).catch((e=>{i("Error: Failed to change password. Message: "+e)})):i("The new password does not match the confirm password.")},c.onclick=()=>{e.replaceWith(Qn)},Qn.replaceWith(e)}}if(n("fa").onclick=()=>{i("Function not yet implemented.")},n("so").onclick=()=>{E.delete("__secrets_"),setTimeout((()=>d.reload()),200)},n("da").onclick=()=>{i("Error: Operation not permitted.")},null==x){const er=r("#login-dialog>h3"),tr=n("login"),nr=n("register"),rr=n("username"),ir=n("password"),sr=n("2fa-otp"),or=n("c-password");sr.style.display="none",or.style.display="none",nr.onclick=()=>{"Register"===er.innerHTML?(er.innerHTML="Login",tr.innerHTML="Login",nr.innerHTML="Register",or.style.display="none"):(er.innerHTML="Register",tr.innerHTML="Register",nr.innerHTML="Login",or.style.display="block")},rr.onblur=()=>{rr.value=rr.value.trim().toLowerCase()},tr.onclick=()=>{const e=rr.value.trim().toLowerCase();if(e.length<4||e.length>20)return void i("The username must have 4 to 20 characters.");if(!/^[\-a-z0-9]+$/.test(e))return void i("The username must contain only hyphens, a-z, 0-9");const t=ir.value;if(t.length<8||t.length>30)i("The password must have 8 to 30 characters.");else if("Register"===er.innerHTML){if(t!==or.value)return void i("Confirm password does not match.");l(11,[e,t]).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Error: Failed to register. Message: "+e)}))}else l(10,[e,t]).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Error: Failed to login. Message: "+e)}))},n("login-google").onclick=()=>{const t=e.open(void 0,"_blank","width="+screen.availWidth+",height="+screen.availHeight+",left=0,top=0,popup");if(null==t)return void i("Please allow popups in your browser settings and try again.");t.stop(),t.focus();const n=new URLSearchParams;n.set("client_id","176227430389-qkdboctmfhe9jnvnk2vmarafc5p8amuf.apps.googleusercontent.com"),n.set("redirect_uri",e.origin+"/auth.xht"),n.set("response_type","token"),n.set("state","12"),n.set("scope","email profile"),n.set("include_granted_scopes","true"),n.set("enable_granular_consent","true"),t.location.replace("https://accounts.google.com/o/oauth2/v2/auth?"+n.toString())};{const ar=e=>{(e=new URLSearchParams(e).get("access_token")||"").length>0&&l(0,e).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Failed to retrieve login tokens. Message: "+String(e))}))},cr=E.get("_cre_");null==cr?e.addEventListener("message",(t=>{if(t.origin===e.origin){const e=t.data;"string"==typeof e&&e.length>0&&ar(e)}}),{once:!1,passive:!0}):(ar(cr),E.delete("_cre_"))}}else await Xn()}})(window)})(); \ No newline at end of file +(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})}};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};e.r(t),e.d(t,{Decoder:()=>me,Encoder:()=>pe,PacketType:()=>ue,protocol:()=>he});var n={};e.r(n),e.d(n,{decode:()=>rl,encode:()=>tl});const r=Object.create(null);r.open="0",r.close="1",r.ping="2",r.pong="3",r.message="4",r.upgrade="5",r.noop="6";const i=Object.create(null);Object.keys(r).forEach((e=>{i[r[e]]=e}));const s={type:"error",data:"parser error"},o="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),a="function"==typeof ArrayBuffer,c=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,l=({type:e,data:t},n,i)=>o&&t instanceof Blob?n?i(t):d(t,i):a&&(t instanceof ArrayBuffer||c(t))?n?i(t):d(new Blob([t]),i):i(r[e]+(t||"")),d=(e,t)=>{const n=new FileReader;return n.onload=function(){const e=n.result.split(",")[1];t("b"+(e||""))},n.readAsDataURL(e)};function h(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let u;const p="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)p["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const f="function"==typeof ArrayBuffer,m=(e,t)=>{if("string"!=typeof e)return{type:"message",data:b(e,t)};const n=e.charAt(0);return"b"===n?{type:"message",data:g(e.substring(1),t)}:i[n]?e.length>1?{type:i[n],data:e.substring(1)}:{type:i[n]}:s},g=(e,t)=>{if(f){const n=(e=>{let t,n,r,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const l=new ArrayBuffer(o),d=new Uint8Array(l);for(t=0;t>4,d[c++]=(15&r)<<4|i>>2,d[c++]=(3&i)<<6|63&s;return l})(e);return b(n,t)}return{base64:!0,data:e}},b=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,w=String.fromCharCode(30);let y;function v(e){return e.reduce(((e,t)=>e+t.length),0)}function _(e,t){if(e[0].length===t)return e.shift();const n=new Uint8Array(t);let r=0;for(let i=0;i(e.hasOwnProperty(n)&&(t[n]=e[n]),t)),{})}const A=E.setTimeout,C=E.clearTimeout;function T(e,t){t.useNativeTimers?(e.setTimeoutFn=A.bind(E),e.clearTimeoutFn=C.bind(E)):(e.setTimeoutFn=E.setTimeout.bind(E),e.clearTimeoutFn=E.clearTimeout.bind(E))}class S extends Error{constructor(e,t,n){super(e),this.description=t,this.context=n,this.type="TransportError"}}class I extends k{constructor(e){super(),this.writable=!1,T(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,n){return super.emitReserved("error",new S(e,t,n)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=m(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let n in e)e.hasOwnProperty(n)&&(t.length&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t}(e);return t.length?"?"+t:""}}const j="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),L=64,O={};let D,R=0,B=0;function z(e){let t="";do{t=j[e%L]+t,e=Math.floor(e/L)}while(e>0);return t}function N(){const e=z(+new Date);return e!==D?(R=0,D=e):e+"."+z(R++)}for(;B{var e;3===n.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(n)),4===n.readyState&&(200===n.status||1223===n.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof n.status?n.status:0)}),0))},n.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=H.requestsCount++,H.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=F,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete H.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}function q(){for(let e in H.requests)H.requests.hasOwnProperty(e)&&H.requests[e].abort()}H.requestsCount=0,H.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",q):"function"==typeof addEventListener&&addEventListener("onpagehide"in E?"pagehide":"unload",q,!1));const V="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),W=E.WebSocket||E.MozWebSocket,Z="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),K={websocket:class extends I{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,n=Z?{}:x(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(n.headers=this.opts.extraHeaders);try{this.ws=Z?new W(e,t,n):t?new W(e,t):new W(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t{try{this.ws.send(e)}catch(e){}r&&V((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!W}},webtransport:class extends I{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){y||(y=new TextDecoder);const n=[];let r=0,i=-1,o=!1;return new TransformStream({transform(a,c){for(n.push(a);;){if(0===r){if(v(n)<1)break;const e=_(n,1);o=!(128&~e[0]),i=127&e[0],r=i<126?3:126===i?1:2}else if(1===r){if(v(n)<2)break;const e=_(n,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),r=3}else if(2===r){if(v(n)<8)break;const e=_(n,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>Math.pow(2,21)-1){c.enqueue(s);break}i=o*Math.pow(2,32)+t.getUint32(4),r=3}else{if(v(n)e){c.enqueue(s);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),n=e.readable.pipeThrough(t).getReader(),r=new TransformStream({transform(e,t){!function(e,t){o&&e.data instanceof Blob?e.data.arrayBuffer().then(h).then(t):a&&(e.data instanceof ArrayBuffer||c(e.data))?t(h(e.data)):l(e,!1,(e=>{u||(u=new TextEncoder),t(u.encode(e))}))}(e,(n=>{const r=n.length;let i;if(r<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,r);else if(r<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,r)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(r))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(n)}))}});r.readable.pipeTo(e.writable),this.writer=r.writable.getWriter();const i=()=>{n.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const d={type:"open"};this.query.sid&&(d.data=`{"sid":"${this.query.sid}"}`),this.writer.write(d).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t{r&&V((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends I{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let n=location.port;n||(n=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||n!==e.port}const t=e&&e.forceBase64;this.supportsBinary=$&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const n=e.split(w),r=[];for(let e=0;e{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const n=e.length,r=new Array(n);let i=0;e.forEach(((e,s)=>{l(e,!1,(e=>{r[s]=e,++i===n&&t(r.join(w))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=N()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new H(this.uri(),e)}doWrite(e,t){const n=this.request({method:"POST",data:e});n.on("success",t),n.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},G=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Y=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function J(e){if(e.length>2e3)throw"URI too long";const t=e,n=e.indexOf("["),r=e.indexOf("]");-1!=n&&-1!=r&&(e=e.substring(0,n)+e.substring(n,r).replace(/:/g,";")+e.substring(r,e.length));let i=G.exec(e||""),s={},o=14;for(;o--;)s[Y[o]]=i[o]||"";return-1!=n&&-1!=r&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const n=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||n.splice(0,1),"/"==t.slice(-1)&&n.splice(n.length-1,1),n}(0,s.path),s.queryKey=function(e,t){const n={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n}(0,s.query),s}class X extends k{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=J(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=J(t.host).host),T(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},n=e.split("&");for(let e=0,r=n.length;e{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new K[e](n)}open(){let e;if(this.opts.rememberUpgrade&&X.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),n=!1;X.priorWebsocketSuccess=!1;const r=()=>{n||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!n)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;X.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function i(){n||(n=!0,l(),t.close(),t=null)}const s=e=>{const n=new Error("probe error: "+e);n.transport=t.name,i(),this.emitReserved("upgradeError",n)};function o(){s("transport closed")}function a(){s("socket closed")}function c(e){t&&e.name!==t.name&&i()}const l=()=>{t.removeListener("open",r),t.removeListener("error",s),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",r),t.once("error",s),t.once("close",o),this.once("close",a),this.once("upgrading",c),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{n||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",X.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let n=0;n=57344?n+=3:(r++,n+=4);return n}(t):Math.ceil(1.33*(t.byteLength||t.size))),n>0&&e>this.maxPayload)return this.writeBuffer.slice(0,n);e+=2}var t;return this.writeBuffer}write(e,t,n){return this.sendPacket("message",e,t,n),this}send(e,t,n){return this.sendPacket("message",e,t,n),this}sendPacket(e,t,n,r){if("function"==typeof t&&(r=t,t=void 0),"function"==typeof n&&(r=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const i={type:e,data:t,options:n};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),r&&this.once("flush",r),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():e()})):this.upgrading?n():e()),this}onError(e){X.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let n=0;const r=e.length;for(;n"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,te=Object.prototype.toString,ne="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===te.call(Blob),re="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===te.call(File);function ie(e){return Q&&(e instanceof ArrayBuffer||ee(e))||ne&&e instanceof Blob||re&&e instanceof File}function se(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,n=e.length;t=0&&e.num{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(i),t.apply(this,e)};s.withError=!0,this.acks[e]=s}emitWithAck(e,...t){return new Promise(((n,r)=>{const i=(e,t)=>e?r(e):n(t);i.withError=!0,t.push(i),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const n={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...r)=>{if(n===this._queue[0])return null!==e?n.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...r)),n.pending=!1,this._drainQueue()})),this._queue.push(n),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:ue.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach((e=>{if(!this.sendBuffer.some((t=>String(t.id)===e))){const t=this.acks[e];delete this.acks[e],t.withError&&t.call(this,new Error("socket has been disconnected"))}}))}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case ue.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ue.EVENT:case ue.BINARY_EVENT:this.onevent(e);break;case ue.ACK:case ue.BINARY_ACK:this.onack(e);break;case ue.DISCONNECT:this.ondisconnect();break;case ue.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const n of t)n.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let n=!1;return function(...r){n||(n=!0,t.packet({type:ue.ACK,id:e,data:r}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ue.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let n=0;n0&&e.jitter<=1?e.jitter:0,this.attempts=0}ve.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this.max)},ve.prototype.reset=function(){this.attempts=0},ve.prototype.setMin=function(e){this.ms=e},ve.prototype.setMax=function(e){this.max=e},ve.prototype.setJitter=function(e){this.jitter=e};class _e extends k{constructor(e,n){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(n=e,e=void 0),(n=n||{}).path=n.path||"/socket.io",this.opts=n,T(this,n),this.reconnection(!1!==n.reconnection),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=n.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new ve({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==n.timeout?2e4:n.timeout),this._readyState="closed",this.uri=e;const i=n.parser||t;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==n.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new X(this.uri,this.opts);const t=this.engine,n=this;this._readyState="opening",this.skipReconnect=!1;const r=be(t,"open",(function(){n.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=be(t,"error",i);if(!1!==this._timeout){const e=this._timeout,n=this.setTimeoutFn((()=>{r(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}return this.subs.push(r),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(be(e,"ping",this.onping.bind(this)),be(e,"data",this.ondata.bind(this)),be(e,"error",this.onerror.bind(this)),be(e,"close",this.onclose.bind(this)),be(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){V((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let n=this.nsps[e];return n?this._autoConnect&&!n.active&&n.connect():(n=new ye(this,e,t),this.nsps[e]=n),n}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let n=0;ne())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const n=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&n.unref(),this.subs.push((()=>{this.clearTimeoutFn(n)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const ke={};function Ee(e,t){"object"==typeof e&&(t=e,e=void 0);const n=function(e,t="",n){let r=e;n=n||"undefined"!=typeof location&&location,null==e&&(e=n.protocol+"//"+n.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?n.protocol+e:n.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==n?n.protocol+"//"+e:"https://"+e),r=J(e)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";const i=-1!==r.host.indexOf(":")?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+i+":"+r.port+t,r.href=r.protocol+"://"+i+(n&&n.port===r.port?"":":"+r.port),r}(e,(t=t||{}).path||"/socket.io"),r=n.source,i=n.id,s=n.path,o=ke[i]&&s in ke[i].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new _e(r,t):(ke[i]||(ke[i]=new _e(r,t)),a=ke[i]),n.query&&!t.query&&(t.query=n.queryKey),a.socket(n.path,t)}Object.assign(Ee,{Manager:_e,Socket:ye,io:Ee,connect:Ee});const xe=function(e){const t=[];let n=0;for(let r=0;r>6|192,t[n++]=63&i|128):55296==(64512&i)&&r+1>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=63&i|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=63&i|128)}return t},Ae={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:"function"==typeof atob,encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let t=0;t>2,d=(3&i)<<4|o>>4;let h=(15&o)<<2|c>>6,u=63&c;a||(u=64,s||(h=64)),r.push(n[l],n[d],n[h],n[u])}return r.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(xe(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):function(e){const t=[];let n=0,r=0;for(;n191&&i<224){const s=e[n++];t[r++]=String.fromCharCode((31&i)<<6|63&s)}else if(i>239&&i<365){const s=((7&i)<<18|(63&e[n++])<<12|(63&e[n++])<<6|63&e[n++])-65536;t[r++]=String.fromCharCode(55296+(s>>10)),t[r++]=String.fromCharCode(56320+(1023&s))}else{const s=e[n++],o=e[n++];t[r++]=String.fromCharCode((15&i)<<12|(63&s)<<6|63&o)}}return t.join("")}(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let t=0;t>4;if(r.push(c),64!==o){const e=s<<4&240|o>>2;if(r.push(e),64!==a){const e=o<<6&192|a;r.push(e)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class Ce extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const Te=function(e){return function(e){const t=xe(e);return Ae.encodeByteArray(t,!0)}(e).replace(/\./g,"")},Se=()=>{try{return function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==e.g)return e.g;throw new Error("Unable to locate global object.")}().__FIREBASE_DEFAULTS__||(()=>{if("undefined"==typeof process||void 0===process.env)return;const e=process.env.__FIREBASE_DEFAULTS__;return e?JSON.parse(e):void 0})()||(()=>{if("undefined"==typeof document)return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch(e){return}const t=e&&function(e){try{return Ae.decodeString(e,!0)}catch(e){console.error("base64Decode failed: ",e)}return null}(e[1]);return t&&JSON.parse(t)})()}catch(e){return void console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`)}},Ie=()=>{var e;return null===(e=Se())||void 0===e?void 0:e.config};class je{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}wrapCallback(e){return(t,n)=>{t?this.reject(t):this.resolve(n),"function"==typeof e&&(this.promise.catch((()=>{})),1===e.length?e(t):e(t,n))}}}function Le(){try{return"object"==typeof indexedDB}catch(e){return!1}}function Oe(){return new Promise(((e,t)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),e(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var e;t((null===(e=i.error)||void 0===e?void 0:e.message)||"")}}catch(e){t(e)}}))}class De extends Error{constructor(e,t,n){super(t),this.code=e,this.customData=n,this.name="FirebaseError",Object.setPrototypeOf(this,De.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,Re.prototype.create)}}class Re{constructor(e,t,n){this.service=e,this.serviceName=t,this.errors=n}create(e,...t){const n=t[0]||{},r=`${this.service}/${e}`,i=this.errors[e],s=i?function(e,t){return e.replace(Be,((e,n)=>{const r=t[n];return null!=r?String(r):`<${n}?>`}))}(i,n):"Error",o=`${this.serviceName}: ${s} (${r}).`;return new De(r,o,n)}}const Be=/\{\$([^}]+)}/g;function ze(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const i of n){if(!r.includes(i))return!1;const n=e[i],s=t[i];if(Ne(n)&&Ne(s)){if(!ze(n,s))return!1}else if(n!==s)return!1}for(const e of r)if(!n.includes(e))return!1;return!0}function Ne(e){return null!==e&&"object"==typeof e}const Pe=1e3,Ue=2,Me=144e5,Fe=.5;function $e(e,t=Pe,n=Ue){const r=t*Math.pow(n,e),i=Math.round(Fe*r*(Math.random()-.5)*2);return Math.min(Me,r+i)}function He(e){return e&&e._delegate?e._delegate:e}class qe{constructor(e,t,n){this.name=e,this.instanceFactory=t,this.type=n,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}const Ve="[DEFAULT]";class We{constructor(e,t){this.name=e,this.container=t,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const t=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(t)){const e=new je;if(this.instancesDeferred.set(t,e),this.isInitialized(t)||this.shouldAutoInitialize())try{const n=this.getOrInitializeService({instanceIdentifier:t});n&&e.resolve(n)}catch(e){}}return this.instancesDeferred.get(t).promise}getImmediate(e){var t;const n=this.normalizeInstanceIdentifier(null==e?void 0:e.identifier),r=null!==(t=null==e?void 0:e.optional)&&void 0!==t&&t;if(!this.isInitialized(n)&&!this.shouldAutoInitialize()){if(r)return null;throw Error(`Service ${this.name} is not available`)}try{return this.getOrInitializeService({instanceIdentifier:n})}catch(e){if(r)return null;throw e}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,this.shouldAutoInitialize()){if(function(e){return"EAGER"===e.instantiationMode}(e))try{this.getOrInitializeService({instanceIdentifier:Ve})}catch(e){}for(const[e,t]of this.instancesDeferred.entries()){const n=this.normalizeInstanceIdentifier(e);try{const e=this.getOrInitializeService({instanceIdentifier:n});t.resolve(e)}catch(e){}}}}clearInstance(e=Ve){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter((e=>"INTERNAL"in e)).map((e=>e.INTERNAL.delete())),...e.filter((e=>"_delete"in e)).map((e=>e._delete()))])}isComponentSet(){return null!=this.component}isInitialized(e=Ve){return this.instances.has(e)}getOptions(e=Ve){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:t={}}=e,n=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(n))throw Error(`${this.name}(${n}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const r=this.getOrInitializeService({instanceIdentifier:n,options:t});for(const[e,t]of this.instancesDeferred.entries())n===this.normalizeInstanceIdentifier(e)&&t.resolve(r);return r}onInit(e,t){var n;const r=this.normalizeInstanceIdentifier(t),i=null!==(n=this.onInitCallbacks.get(r))&&void 0!==n?n:new Set;i.add(e),this.onInitCallbacks.set(r,i);const s=this.instances.get(r);return s&&e(s,r),()=>{i.delete(e)}}invokeOnInitCallbacks(e,t){const n=this.onInitCallbacks.get(t);if(n)for(const r of n)try{r(e,t)}catch(e){}}getOrInitializeService({instanceIdentifier:e,options:t={}}){let n=this.instances.get(e);if(!n&&this.component&&(n=this.component.instanceFactory(this.container,{instanceIdentifier:(r=e,r===Ve?void 0:r),options:t}),this.instances.set(e,n),this.instancesOptions.set(e,t),this.invokeOnInitCallbacks(n,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,n)}catch(e){}var r;return n||null}normalizeInstanceIdentifier(e=Ve){return this.component?this.component.multipleInstances?e:Ve:e}shouldAutoInitialize(){return!!this.component&&"EXPLICIT"!==this.component.instantiationMode}}class Ze{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const t=this.getProvider(e.name);if(t.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);t.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const t=new We(e,this);return this.providers.set(e,t),t}getProviders(){return Array.from(this.providers.values())}}const Ke=[];var Ge;!function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"}(Ge||(Ge={}));const Ye={debug:Ge.DEBUG,verbose:Ge.VERBOSE,info:Ge.INFO,warn:Ge.WARN,error:Ge.ERROR,silent:Ge.SILENT},Je=Ge.INFO,Xe={[Ge.DEBUG]:"log",[Ge.VERBOSE]:"log",[Ge.INFO]:"info",[Ge.WARN]:"warn",[Ge.ERROR]:"error"},Qe=(e,t,...n)=>{if(tt.some((t=>e instanceof t));let nt,rt;const it=new WeakMap,st=new WeakMap,ot=new WeakMap,at=new WeakMap,ct=new WeakMap;let lt={get(e,t,n){if(e instanceof IDBTransaction){if("done"===t)return st.get(e);if("objectStoreNames"===t)return e.objectStoreNames||ot.get(e);if("store"===t)return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return ht(e[t])},set:(e,t,n)=>(e[t]=n,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function dt(e){return"function"==typeof e?(t=e)!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(rt||(rt=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(ut(this),e),ht(it.get(this))}:function(...e){return ht(t.apply(ut(this),e))}:function(e,...n){const r=t.call(ut(this),e,...n);return ot.set(r,e.sort?e.sort():[e]),ht(r)}:(e instanceof IDBTransaction&&function(e){if(st.has(e))return;const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{t(),r()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),r()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)}));st.set(e,t)}(e),tt(e,nt||(nt=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(e,lt):e);var t}function ht(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,n)=>{const r=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{t(ht(e.result)),r()},s=()=>{n(e.error),r()};e.addEventListener("success",i),e.addEventListener("error",s)}));return t.then((t=>{t instanceof IDBCursor&&it.set(t,e)})).catch((()=>{})),ct.set(t,e),t}(e);if(at.has(e))return at.get(e);const t=dt(e);return t!==e&&(at.set(e,t),ct.set(t,e)),t}const ut=e=>ct.get(e);function pt(e,t,{blocked:n,upgrade:r,blocking:i,terminated:s}={}){const o=indexedDB.open(e,t),a=ht(o);return r&&o.addEventListener("upgradeneeded",(e=>{r(ht(o.result),e.oldVersion,e.newVersion,ht(o.transaction),e)})),n&&o.addEventListener("blocked",(e=>n(e.oldVersion,e.newVersion,e))),a.then((e=>{s&&e.addEventListener("close",(()=>s())),i&&e.addEventListener("versionchange",(e=>i(e.oldVersion,e.newVersion,e)))})).catch((()=>{})),a}const ft=["get","getKey","getAll","getAllKeys","count"],mt=["put","add","delete","clear"],gt=new Map;function bt(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(gt.get(t))return gt.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=mt.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!i&&!ft.includes(n))return;const s=async function(e,...t){const s=this.transaction(e,i?"readwrite":"readonly");let o=s.store;return r&&(o=o.index(t.shift())),(await Promise.all([o[n](...t),i&&s.done]))[0]};return gt.set(t,s),s}var wt;wt=lt,lt={...wt,get:(e,t,n)=>bt(e,t)||wt.get(e,t,n),has:(e,t)=>!!bt(e,t)||wt.has(e,t)};class yt{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map((e=>{if(function(e){const t=e.getComponent();return"VERSION"===(null==t?void 0:t.type)}(e)){const t=e.getImmediate();return`${t.library}/${t.version}`}return null})).filter((e=>e)).join(" ")}}const vt="@firebase/app",_t="0.10.4",kt=new et("@firebase/app"),Et="@firebase/app-compat",xt="@firebase/analytics-compat",At="@firebase/analytics",Ct="@firebase/app-check-compat",Tt="@firebase/app-check",St="@firebase/auth",It="@firebase/auth-compat",jt="@firebase/database",Lt="@firebase/database-compat",Ot="@firebase/functions",Dt="@firebase/functions-compat",Rt="@firebase/installations",Bt="@firebase/installations-compat",zt="@firebase/messaging",Nt="@firebase/messaging-compat",Pt="@firebase/performance",Ut="@firebase/performance-compat",Mt="@firebase/remote-config",Ft="@firebase/remote-config-compat",$t="@firebase/storage",Ht="@firebase/storage-compat",qt="@firebase/firestore",Vt="@firebase/vertexai-preview",Wt="@firebase/firestore-compat",Zt="firebase",Kt="[DEFAULT]",Gt={[vt]:"fire-core",[Et]:"fire-core-compat",[At]:"fire-analytics",[xt]:"fire-analytics-compat",[Tt]:"fire-app-check",[Ct]:"fire-app-check-compat",[St]:"fire-auth",[It]:"fire-auth-compat",[jt]:"fire-rtdb",[Lt]:"fire-rtdb-compat",[Ot]:"fire-fn",[Dt]:"fire-fn-compat",[Rt]:"fire-iid",[Bt]:"fire-iid-compat",[zt]:"fire-fcm",[Nt]:"fire-fcm-compat",[Pt]:"fire-perf",[Ut]:"fire-perf-compat",[Mt]:"fire-rc",[Ft]:"fire-rc-compat",[$t]:"fire-gcs",[Ht]:"fire-gcs-compat",[qt]:"fire-fst",[Wt]:"fire-fst-compat",[Vt]:"fire-vertex","fire-js":"fire-js",[Zt]:"fire-js-all"},Yt=new Map,Jt=new Map,Xt=new Map;function Qt(e,t){try{e.container.addComponent(t)}catch(n){kt.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function en(e){const t=e.name;if(Xt.has(t))return kt.debug(`There were multiple attempts to register component ${t}.`),!1;Xt.set(t,e);for(const t of Yt.values())Qt(t,e);for(const t of Jt.values())Qt(t,e);return!0}function tn(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}const nn=new Re("app","Firebase",{"no-app":"No Firebase App '{$appName}' has been created - call initializeApp() first","bad-app-name":"Illegal App name: '{$appName}'","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","server-app-deleted":"Firebase Server App has been deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.","finalization-registry-not-supported":"FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.","invalid-server-app-environment":"FirebaseServerApp is not for use in browser environments."});class rn{constructor(e,t,n){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},t),this._name=t.name,this._automaticDataCollectionEnabled=t.automaticDataCollectionEnabled,this._container=n,this.container.addComponent(new qe("app",(()=>this),"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw nn.create("app-deleted",{appName:this._name})}}function sn(e,t={}){let n=e;"object"!=typeof t&&(t={name:t});const r=Object.assign({name:Kt,automaticDataCollectionEnabled:!1},t),i=r.name;if("string"!=typeof i||!i)throw nn.create("bad-app-name",{appName:String(i)});if(n||(n=Ie()),!n)throw nn.create("no-options");const s=Yt.get(i);if(s){if(ze(n,s.options)&&ze(r,s.config))return s;throw nn.create("duplicate-app",{appName:i})}const o=new Ze(i);for(const e of Xt.values())o.addComponent(e);const a=new rn(n,r,o);return Yt.set(i,a),a}function on(e,t,n){var r;let i=null!==(r=Gt[e])&&void 0!==r?r:e;n&&(i+=`-${n}`);const s=i.match(/\s|\//),o=t.match(/\s|\//);if(s||o){const e=[`Unable to register library "${i}" with version "${t}":`];return s&&e.push(`library name "${i}" contains illegal characters (whitespace or "/")`),s&&o&&e.push("and"),o&&e.push(`version name "${t}" contains illegal characters (whitespace or "/")`),void kt.warn(e.join(" "))}en(new qe(`${i}-version`,(()=>({library:i,version:t})),"VERSION"))}const an="firebase-heartbeat-database",cn=1,ln="firebase-heartbeat-store";let dn=null;function hn(){return dn||(dn=pt(an,cn,{upgrade:(e,t)=>{if(0===t)try{e.createObjectStore(ln)}catch(e){console.warn(e)}}}).catch((e=>{throw nn.create("idb-open",{originalErrorMessage:e.message})}))),dn}async function un(e,t){try{const n=(await hn()).transaction(ln,"readwrite"),r=n.objectStore(ln);await r.put(t,pn(e)),await n.done}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-set",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}function pn(e){return`${e.name}!${e.options.appId}`}class fn{constructor(e){this.container=e,this._heartbeatsCache=null;const t=this.container.getProvider("app").getImmediate();this._storage=new gn(t),this._heartbeatsCachePromise=this._storage.read().then((e=>(this._heartbeatsCache=e,e)))}async triggerHeartbeat(){var e,t;const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=mn();if((null!=(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||(this._heartbeatsCache=await this._heartbeatsCachePromise,null!=(null===(t=this._heartbeatsCache)||void 0===t?void 0:t.heartbeats)))&&this._heartbeatsCache.lastSentHeartbeatDate!==r&&!this._heartbeatsCache.heartbeats.some((e=>e.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter((e=>{const t=new Date(e.date).valueOf();return Date.now()-t<=2592e6})),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){var e;if(null===this._heartbeatsCache&&await this._heartbeatsCachePromise,null==(null===(e=this._heartbeatsCache)||void 0===e?void 0:e.heartbeats)||0===this._heartbeatsCache.heartbeats.length)return"";const t=mn(),{heartbeatsToSend:n,unsentEntries:r}=function(e,t=1024){const n=[];let r=e.slice();for(const i of e){const e=n.find((e=>e.agent===i.agent));if(e){if(e.dates.push(i.date),bn(n)>t){e.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),bn(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}(this._heartbeatsCache.heartbeats),i=Te(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=t,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function mn(){return(new Date).toISOString().substring(0,10)}class gn{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return!!Le()&&Oe().then((()=>!0)).catch((()=>!1))}async read(){if(await this._canUseIndexedDBPromise){const e=await async function(e){try{const t=(await hn()).transaction(ln),n=await t.objectStore(ln).get(pn(e));return await t.done,n}catch(e){if(e instanceof De)kt.warn(e.message);else{const t=nn.create("idb-get",{originalErrorMessage:null==e?void 0:e.message});kt.warn(t.message)}}}(this.app);return(null==e?void 0:e.heartbeats)?e:{heartbeats:[]}}return{heartbeats:[]}}async overwrite(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:e.heartbeats})}}async add(e){var t;if(await this._canUseIndexedDBPromise){const n=await this.read();return un(this.app,{lastSentHeartbeatDate:null!==(t=e.lastSentHeartbeatDate)&&void 0!==t?t:n.lastSentHeartbeatDate,heartbeats:[...n.heartbeats,...e.heartbeats]})}}}function bn(e){return Te(JSON.stringify({version:2,heartbeats:e})).length}en(new qe("platform-logger",(e=>new yt(e)),"PRIVATE")),en(new qe("heartbeat",(e=>new fn(e)),"PRIVATE")),on(vt,_t,""),on(vt,_t,"esm2017"),on("fire-js",""),on("firebase","10.12.1","app");const wn="@firebase/installations",yn="0.6.7",vn=1e4,_n=`w:${yn}`,kn="FIS_v2",En="https://firebaseinstallations.googleapis.com/v1",xn=36e5,An=new Re("installations","Installations",{"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."});function Cn(e){return e instanceof De&&e.code.includes("request-failed")}function Tn({projectId:e}){return`${En}/projects/${e}/installations`}function Sn(e){return{token:e.token,requestStatus:2,expiresIn:(t=e.expiresIn,Number(t.replace("s","000"))),creationTime:Date.now()};var t}async function In(e,t){const n=(await t.json()).error;return An.create("request-failed",{requestName:e,serverCode:n.code,serverMessage:n.message,serverStatus:n.status})}function jn({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}async function Ln(e){const t=await e();return t.status>=500&&t.status<600?e():t}function On(e){return new Promise((t=>{setTimeout(t,e)}))}const Dn=/^[cdef][\w-]{21}$/,Rn="";function Bn(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const t=function(e){var t;return(t=e,btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_")).substr(0,22)}(e);return Dn.test(t)?t:Rn}catch(e){return Rn}}function zn(e){return`${e.appName}!${e.appId}`}const Nn=new Map;function Pn(e,t){const n=zn(e);Un(n,t),function(e,t){const n=(!Mn&&"BroadcastChannel"in self&&(Mn=new BroadcastChannel("[Firebase] FID Change"),Mn.onmessage=e=>{Un(e.data.key,e.data.fid)}),Mn);n&&n.postMessage({key:e,fid:t}),0===Nn.size&&Mn&&(Mn.close(),Mn=null)}(n,t)}function Un(e,t){const n=Nn.get(e);if(n)for(const e of n)e(t)}let Mn=null;const Fn="firebase-installations-database",$n=1,Hn="firebase-installations-store";let qn=null;function Vn(){return qn||(qn=pt(Fn,$n,{upgrade:(e,t)=>{0===t&&e.createObjectStore(Hn)}})),qn}async function Wn(e,t){const n=zn(e),r=(await Vn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n);return await i.put(t,n),await r.done,s&&s.fid===t.fid||Pn(e,t.fid),t}async function Zn(e){const t=zn(e),n=(await Vn()).transaction(Hn,"readwrite");await n.objectStore(Hn).delete(t),await n.done}async function Kn(e,t){const n=zn(e),r=(await Vn()).transaction(Hn,"readwrite"),i=r.objectStore(Hn),s=await i.get(n),o=t(s);return void 0===o?await i.delete(n):await i.put(o,n),await r.done,!o||s&&s.fid===o.fid||Pn(e,o.fid),o}async function Gn(e){let t;const n=await Kn(e.appConfig,(n=>{const r=function(e){return Xn(e||{fid:Bn(),registrationStatus:0})}(n),i=function(e,t){if(0===t.registrationStatus){if(!navigator.onLine)return{installationEntry:t,registrationPromise:Promise.reject(An.create("app-offline"))};const n={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},r=async function(e,t){try{const n=await async function({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Tn(e),i=jn(e),s=t.getImmediate({optional:!0});if(s){const e=await s.getHeartbeatsHeader();e&&i.append("x-firebase-client",e)}const o={fid:n,authVersion:kn,appId:e.appId,sdkVersion:_n},a={method:"POST",headers:i,body:JSON.stringify(o)},c=await Ln((()=>fetch(r,a)));if(c.ok){const e=await c.json();return{fid:e.fid||n,registrationStatus:2,refreshToken:e.refreshToken,authToken:Sn(e.authToken)}}throw await In("Create Installation",c)}(e,t);return Wn(e.appConfig,n)}catch(n){throw Cn(n)&&409===n.customData.serverCode?await Zn(e.appConfig):await Wn(e.appConfig,{fid:t.fid,registrationStatus:0}),n}}(e,n);return{installationEntry:n,registrationPromise:r}}return 1===t.registrationStatus?{installationEntry:t,registrationPromise:Yn(e)}:{installationEntry:t}}(e,r);return t=i.registrationPromise,i.installationEntry}));return n.fid===Rn?{installationEntry:await t}:{installationEntry:n,registrationPromise:t}}async function Yn(e){let t=await Jn(e.appConfig);for(;1===t.registrationStatus;)await On(100),t=await Jn(e.appConfig);if(0===t.registrationStatus){const{installationEntry:t,registrationPromise:n}=await Gn(e);return n||t}return t}function Jn(e){return Kn(e,(e=>{if(!e)throw An.create("installation-not-found");return Xn(e)}))}function Xn(e){return 1===(t=e).registrationStatus&&t.registrationTime+vnfetch(r,a)));if(c.ok)return Sn(await c.json());throw await In("Generate Auth Token",c)}async function er(e,t=!1){let n;const r=await Kn(e.appConfig,(r=>{if(!nr(r))throw An.create("not-registered");const i=r.authToken;if(!t&&(2===(s=i).requestStatus&&!function(e){const t=Date.now();return t{if(!nr(e))throw An.create("not-registered");return 1===(t=e.authToken).requestStatus&&t.requestTime+vn{const t=e.getProvider("app").getImmediate(),n=function(e){if(!e||!e.options)throw rr("App Configuration");if(!e.name)throw rr("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw rr(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}(t);return{app:t,appConfig:n,heartbeatServiceProvider:tn(t,"heartbeat"),_delete:()=>Promise.resolve()}}),"PUBLIC")),en(new qe("installations-internal",(e=>{const t=tn(e.getProvider("app").getImmediate(),ir).getImmediate();return{getId:()=>async function(e){const t=e,{installationEntry:n,registrationPromise:r}=await Gn(t);return r?r.catch(console.error):er(t).catch(console.error),n.fid}(t),getToken:e=>async function(e,t=!1){const n=e;return await async function(e){const{registrationPromise:t}=await Gn(e);t&&await t}(n),(await er(n,t)).token}(t,e)}}),"PRIVATE")),on(wn,yn),on(wn,yn,"esm2017");const sr="analytics",or="firebase_id",ar="origin",cr=6e4,lr="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",dr="https://www.googletagmanager.com/gtag/js",hr=new et("@firebase/analytics"),ur=new Re("analytics","Analytics",{"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"no-client-id":'The "client_id" field is empty.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."});function pr(e){if(!e.startsWith(dr)){const t=ur.create("invalid-gtag-resource",{gtagURL:e});return hr.warn(t.message),""}return e}function fr(e){return Promise.all(e.map((e=>e.catch((e=>e)))))}const mr=30,gr=new class{constructor(e={},t=1e3){this.throttleMetadata=e,this.intervalMillis=t}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,t){this.throttleMetadata[e]=t}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}};function br(e){return new Headers({Accept:"application/json","x-goog-api-key":e})}async function wr(e,t=gr,n){const{appId:r,apiKey:i,measurementId:s}=e.options;if(!r)throw ur.create("no-app-id");if(!i){if(s)return{measurementId:s,appId:r};throw ur.create("no-api-key")}const o=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},a=new vr;return setTimeout((async()=>{a.abort()}),void 0!==n?n:cr),yr({appId:r,apiKey:i,measurementId:s},o,a,t)}async function yr(e,{throttleEndTimeMillis:t,backoffCount:n},r,i=gr){var s;const{appId:o,measurementId:a}=e;try{await function(e,t){return new Promise(((n,r)=>{const i=Math.max(t-Date.now(),0),s=setTimeout(n,i);e.addEventListener((()=>{clearTimeout(s),r(ur.create("fetch-throttle",{throttleEndTimeMillis:t}))}))}))}(r,t)}catch(e){if(a)return hr.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==e?void 0:e.message}]`),{appId:o,measurementId:a};throw e}try{const t=await async function(e){var t;const{appId:n,apiKey:r}=e,i={method:"GET",headers:br(r)},s=lr.replace("{app-id}",n),o=await fetch(s,i);if(200!==o.status&&304!==o.status){let e="";try{const n=await o.json();(null===(t=n.error)||void 0===t?void 0:t.message)&&(e=n.error.message)}catch(e){}throw ur.create("config-fetch-failed",{httpStatus:o.status,responseMessage:e})}return o.json()}(e);return i.deleteThrottleMetadata(o),t}catch(t){const c=t;if(!function(e){if(!(e instanceof De&&e.customData))return!1;const t=Number(e.customData.httpStatus);return 429===t||500===t||503===t||504===t}(c)){if(i.deleteThrottleMetadata(o),a)return hr.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${a} provided in the "measurementId" field in the local Firebase config. [${null==c?void 0:c.message}]`),{appId:o,measurementId:a};throw t}const l=503===Number(null===(s=null==c?void 0:c.customData)||void 0===s?void 0:s.httpStatus)?$e(n,i.intervalMillis,mr):$e(n,i.intervalMillis),d={throttleEndTimeMillis:Date.now()+l,backoffCount:n+1};return i.setThrottleMetadata(o,d),hr.debug(`Calling attemptFetch again in ${l} millis`),yr(e,d,r,i)}}class vr{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach((e=>e()))}}let _r,kr;async function Er(e,t,n,r,i,s,o){var a;const c=wr(e);c.then((t=>{n[t.measurementId]=t.appId,e.options.measurementId&&t.measurementId!==e.options.measurementId&&hr.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${t.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)})).catch((e=>hr.error(e))),t.push(c);const l=async function(){if(!Le())return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;try{await Oe()}catch(e){return hr.warn(ur.create("indexeddb-unavailable",{errorInfo:null==e?void 0:e.toString()}).message),!1}return!0}().then((e=>e?r.getId():void 0)),[d,h]=await Promise.all([c,l]);(function(e){const t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(dr)&&n.src.includes(e))return n;return null})(s)||function(e,t){const n=function(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy("firebase-js-sdk-policy",t)),n}(0,{createScriptURL:pr}),r=document.createElement("script"),i=`${dr}?l=${e}&id=${t}`;r.src=n?null==n?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}(s,d.measurementId),kr&&(i("consent","default",kr),kr=void 0),i("js",new Date);const u=null!==(a=null==o?void 0:o.config)&&void 0!==a?a:{};return u[ar]="firebase",u.update=!0,null!=h&&(u[or]=h),i("config",d.measurementId,u),_r&&(i("set",_r),_r=void 0),d.measurementId}class xr{constructor(e){this.app=e}_delete(){return delete Ar[this.app.options.appId],Promise.resolve()}}let Ar={},Cr=[];const Tr={};let Sr,Ir,jr="dataLayer",Lr=!1;function Or(e,t,n){!function(){const e=[];if(function(){const e="object"==typeof chrome?chrome.runtime:"object"==typeof browser?browser.runtime:void 0;return"object"==typeof e&&void 0!==e.id}()&&e.push("This is a browser extension environment."),"undefined"!=typeof navigator&&navigator.cookieEnabled||e.push("Cookies are not available."),e.length>0){const t=e.map(((e,t)=>`(${t+1}) ${e}`)).join(" "),n=ur.create("invalid-analytics-context",{errorInfo:t});hr.warn(n.message)}}();const r=e.options.appId;if(!r)throw ur.create("no-app-id");if(!e.options.apiKey){if(!e.options.measurementId)throw ur.create("no-api-key");hr.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId} provided in the "measurementId" field in the local Firebase config.`)}if(null!=Ar[r])throw ur.create("already-exists",{id:r});if(!Lr){!function(e){let t=[];Array.isArray(window[e])?t=window[e]:window[e]=t}(jr);const{wrappedGtag:e,gtagCore:t}=function(e,t,n,r,i){let s=function(...e){window[r].push(arguments)};return window[i]&&"function"==typeof window[i]&&(s=window[i]),window[i]=function(e,t,n,r){return async function(i,...s){try{if("event"===i){const[r,i]=s;await async function(e,t,n,r,i){try{let s=[];if(i&&i.send_to){let e=i.send_to;Array.isArray(e)||(e=[e]);const r=await fr(n);for(const n of e){const e=r.find((e=>e.measurementId===n)),i=e&&t[e.appId];if(!i){s=[];break}s.push(i)}}0===s.length&&(s=Object.values(t)),await Promise.all(s),e("event",r,i||{})}catch(e){hr.error(e)}}(e,t,n,r,i)}else if("config"===i){const[i,o]=s;await async function(e,t,n,r,i,s){const o=r[i];try{if(o)await t[o];else{const e=(await fr(n)).find((e=>e.measurementId===i));e&&await t[e.appId]}}catch(e){hr.error(e)}e("config",i,s)}(e,t,n,r,i,o)}else if("consent"===i){const[t,n]=s;e("consent",t,n)}else if("get"===i){const[t,n,r]=s;e("get",t,n,r)}else if("set"===i){const[t]=s;e("set",t)}else e(i,...s)}catch(e){hr.error(e)}}}(s,e,t,n),{gtagCore:s,wrappedGtag:window[i]}}(Ar,Cr,Tr,jr,"gtag");Ir=e,Sr=t,Lr=!0}return Ar[r]=Er(e,Cr,Tr,t,Sr,jr,n),new xr(e)}const Dr="@firebase/analytics",Rr="0.10.4";en(new qe(sr,((e,{options:t})=>Or(e.getProvider("app").getImmediate(),e.getProvider("installations-internal").getImmediate(),t)),"PUBLIC")),en(new qe("analytics-internal",(function(e){try{const t=e.getProvider(sr).getImmediate();return{logEvent:(e,n,r)=>function(e,t,n,r){e=He(e),async function(e,t,n,r,i){if(i&&i.global)e("event",n,r);else{const i=await t;e("event",n,Object.assign(Object.assign({},r),{send_to:i}))}}(Ir,Ar[e.app.options.appId],t,n,r).catch((e=>hr.error(e)))}(t,e,n,r)}}catch(e){throw ur.create("interop-component-reg-failed",{reason:e})}}),"PRIVATE")),on(Dr,Rr),on(Dr,Rr,"esm2017");const Br=function(){for(let e=Object.getPrototypeOf(this);null!=e;e=Object.getPrototypeOf(e))try{delete e.constructor}catch(e){}},zr=Object.freeze(Object.create(null));Object.defineProperty(Br,"prototype",{value:zr,writable:!1,enumerable:!1,configurable:!1}),Object.setPrototypeOf(Br,null),Object.freeze(Br);const Nr=Br;var Pr,Ur=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Pr=new WeakMap;const Mr=class extends Nr{constructor(){super(...arguments),Pr.set(this,Object.create(null))}get size(){return Object.keys(Ur(this,Pr,"f")).length}has(e){return e in Ur(this,Pr,"f")}get(e){return Ur(this,Pr,"f")[e]||null}set(e,t){Ur(this,Pr,"f")[e]=t}delete(e){return delete Ur(this,Pr,"f")[e]}clear(){const e=Ur(this,Pr,"f");for(const t of Object.keys(e))delete e[t]}keys(){return Object.keys(Ur(this,Pr,"f"))}values(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push(e[n]);return t}entries(){const e=Ur(this,Pr,"f"),t=[];for(const n of Object.keys(e))t.push([n,e[n]]);return t}};var Fr,$r=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Fr=new WeakMap;const Hr=class extends Nr{get size(){return $r(this,Fr,"f").length}constructor(e){super(),Fr.set(this,void 0),function(e,t,n,r,i){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");"a"===r?i.call(e,n):i?i.value=n:t.set(e,n)}(this,Fr,e,"f")}has(e){return null!=$r(this,Fr,"f").getItem(e)}get(e){return $r(this,Fr,"f").getItem(e)}set(e,t){$r(this,Fr,"f").setItem(e,t)}delete(e){return $r(this,Fr,"f").removeItem(e),!0}clear(){$r(this,Fr,"f").clear()}keys(){const e=$r(this,Fr,"f"),t=e.length,n=new Array(t);for(let r=0;r>18&63]+Jr[n>>12&63]+Jr[n>>6&63]+Jr[63&n]}const s=r%3;return 1===s?(n="==",t=t.slice(0,-2)):2===s&&(n="=",t=t.slice(0,-1)),t+n},decode:function(e){const t=.75*e.length-(e.endsWith("==")?2:e.endsWith("=")?1:0),n=new ArrayBuffer(t),r=new Uint8Array(n,0,t);let i=0;for(let t=0;t>16&255,r[i++]=n>>8&255,r[i++]=255&n}return n}};Object.setPrototypeOf(Qr,null),Object.freeze(Qr);const ei=Qr,ti={encode:function(e){const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return new Uint8Array(n).buffer},decode:function(e){const t=new Uint8Array(e);let n="",r=0;for(;re.unicode))}const wi={},yi={},vi={};function _i(e,t,n){n.onerror=()=>t(n.error),n.onblocked=()=>t(new Error("IDB blocked")),n.onsuccess=()=>e(n.result)}function ki(e,t,n,r){return new Promise(((i,s)=>{const o=e.transaction(t,n,{durability:"relaxed"}),a="string"==typeof t?o.objectStore(t):t.map((e=>o.objectStore(e)));let c;r(a,o,(e=>{c=e})),o.oncomplete=()=>i(c),o.onerror=()=>s(o.error)}))}function Ei(e){const t=wi[e],n=t&&t.result;if(n){n.close();const t=vi[e];if(t)for(const e of t)e()}delete wi[e],delete yi[e],delete vi[e]}const xi=new Set([":D","XD",":'D","O:)",":X",":P",";P","XP",":L",":Z",":j","8D","XO","8)",":B",":O",":S",":'o","Dx","X(","D:",":C",">0)",":3","!e.match(/\w/)||xi.has(e)?e.toLowerCase():e.replace(/[)(:,]/g,"").replace(/’/g,"'").toLowerCase())).filter(Boolean)}const Ci=2;function Ti(e){return e.filter(Boolean).map((e=>e.toLowerCase())).filter((e=>e.length>=Ci))}function Si(e,t,n,r){e[t](n).onsuccess=e=>r&&r(e.target.result)}function Ii(e,t,n){Si(e,"get",t,n)}function ji(e,t,n){Si(e,"getAll",t,n)}function Li(e){e.commit&&e.commit()}function Oi(e,t){const n=function(e,t){let n=e[0];for(let r=1;rt(i)&&(n=i)}return n}(e,(e=>e.length)),r=[];for(const i of n)e.some((e=>-1===e.findIndex((e=>t(e)===t(i)))))||r.push(i);return r}async function Di(e,t,n,r){try{const i=function(e){return e.map((({annotation:e,emoticon:t,group:n,order:r,shortcodes:i,skins:s,tags:o,emoji:a,version:c})=>{const l=[...new Set(Ti([...(i||[]).map(Ai).flat(),...o.map(Ai).flat(),...Ai(e),t]))].sort(),d={annotation:e,group:n,order:r,tags:o,tokens:l,unicode:a,version:c};if(t&&(d.emoticon=t),i&&(d.shortcodes=i),s){d.skinTones=[],d.skinUnicodes=[],d.skinVersions=[];for(const{tone:e,emoji:t,version:n}of s)d.skinTones.push(e),d.skinUnicodes.push(t),d.skinVersions.push(n)}return d}))}(t);await ki(e,[si,oi],mi,(([e,t],s)=>{let o,a,c=0;function l(){2==++c&&function(){if(o!==r||a!==n){e.clear();for(const t of i)e.put(t);t.put(r,hi),t.put(n,ui),Li(s)}}()}Ii(t,hi,(e=>{o=e,l()})),Ii(t,ui,(e=>{a=e,l()}))}))}finally{}}async function Ri(e,t){const n=Ti(Ai(t));return n.length?ki(e,si,fi,((e,t,r)=>{const i=[],s=()=>{const e=Oi(i,(e=>e.unicode));r(e.sort(((e,t)=>e.order{i.push(e),i.length===n.length&&s()}))}})):[]}function Bi(e,t,n){return ki(e,t,fi,((e,t,r)=>Ii(e,n,r)))}const zi=["name","url"];function Ni(e){!function(e){const t=e&&Array.isArray(e),n=t&&e.length&&(!e[0]||zi.some((t=>!(t in e[0]))));if(!t||n)throw new Error("Custom emojis are in the wrong format")}(e);const t=(e,t)=>e.name.toLowerCase()Ai(e))).flat())];for(const r of e){let e=n;for(let t=0;t{let r=n;for(let t=0;te[0]r(e,!0),s=e=>r(e,!1),o=new Map,a=new Map;for(const t of e){a.set(t.name.toLowerCase(),t);for(const e of t.shortcodes||[])o.set(e.toLowerCase(),t)}return{all:n,search:e=>{const n=Ai(e),r=n.map(((e,t)=>(te.name)).sort(t)},byShortcode:e=>o.get(e.toLowerCase()),byName:e=>a.get(e.toLowerCase())}}const Pi="undefined"!=typeof wrappedJSObject;function Ui(e){if(!e)return e;if(Pi&&(e=structuredClone(e)),delete e.tokens,e.skinTones){const t=e.skinTones.length;e.skins=Array(t);for(let n=0;n!(t in e[0]))))throw new Error("Emoji data is in the wrong format")}(r),[n,r]}async function qi(e){let t=function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),i=-1;++i{const r=indexedDB.open(e,1);wi[e]=r,r.onupgradeneeded=e=>{e.oldVersion<1&&function(e){function t(t,n,r){const i=n?e.createObjectStore(t,{keyPath:n}):e.createObjectStore(t);if(r)for(const[e,[t,n]]of Object.entries(r))i.createIndex(e,t,{multiEntry:n});return i}t(oi),t(si,"unicode",{[ci]:["tokens",!0],[di]:[["group","order"]],[gi]:["skinUnicodes",!0]}),t(ai,void 0,{[li]:[""]})}(r.result)},_i(t,n,r)}));return t.onclose=()=>Ei(e),t}(t)),yi[t]);var t;!function(e,t){let n=vi[e];n||(n=vi[e]=[]),n.push(t)}(this._dbName,this._clear);const n=this.dataSource,r=await async function(e){return!await Bi(e,oi,ui)}(e);r?await async function(e,t){let[n,r]=await Hi(t);n||(n=await qi(r)),await Di(e,r,t,n)}(e,n):this._lazyUpdate=async function(e,t){let n,r=await async function(e){const t=await fetch(e,{method:"HEAD"});$i(t,e);const n=t.headers.get("etag");return Mi(n),n}(t);if(!r){const e=await Hi(t);r=e[0],n=e[1],r||(r=await qi(n))}await async function(e,t,n){const[r,i]=await Promise.all([hi,ui].map((t=>Bi(e,oi,t))));return r===n&&i===t}(e,t,r)||(n||(n=(await Hi(t))[1]),await Di(e,n,t,r))}(e,n)}async ready(){const e=async()=>(this._ready||(this._ready=this._init()),this._ready);await e(),this._db||await e()}async getEmojiByGroup(e){return ii(e),await this.ready(),bi(await async function(e,t){return ki(e,si,fi,((e,n,r)=>{const i=IDBKeyRange.bound([t,0],[t+1,0],!1,!0);ji(e.index(di),i,r)}))}(this._db,e)).map(Ui)}async getEmojiBySearchQuery(e){return ri(e),await this.ready(),[...this._custom.search(e),...bi(await Ri(this._db,e)).map(Ui)]}async getEmojiByShortcode(e){ri(e),await this.ready();return this._custom.byShortcode(e)||Ui(await async function(e,t){const n=await Ri(e,t);if(!n.length){const n=e=>(e.shortcodes||[]).includes(t.toLowerCase());return await async function(e,t){return ki(e,si,fi,((e,n,r)=>{let i;const s=()=>{e.getAll(i&&IDBKeyRange.lowerBound(i,!0),50).onsuccess=e=>{const n=e.target.result;for(const e of n)if(i=e.unicode,t(e))return r(e);if(n.length<50)return r();s()}};s()}))}(e,n)||null}return n.filter((e=>{const n=(e.shortcodes||[]).map((e=>e.toLowerCase()));return n.includes(t.toLowerCase())}))[0]||null}(this._db,e))}async getEmojiByUnicodeOrName(e){ri(e),await this.ready();return this._custom.byName(e)||Ui(await async function(e,t){return ki(e,si,fi,((e,n,r)=>Ii(e,t,(n=>{if(n)return r(n);Ii(e.index(gi),t,(e=>r(e||null)))}))))}(this._db,e))}async getPreferredSkinTone(){return await this.ready(),await Bi(this._db,oi,pi)||0}async setPreferredSkinTone(e){return ii(e),await this.ready(),function(e,t,n,r){return ki(e,t,mi,((e,t)=>{e.put(r,n),Li(t)}))}(this._db,oi,pi,e)}async incrementFavoriteEmojiCount(e){return ri(e),await this.ready(),t=this._db,n=e,ki(t,ai,mi,((e,t)=>Ii(e,n,(r=>{e.put((r||0)+1,n),Li(t)}))));var t,n}async getTopFavoriteEmoji(e){return ii(e),await this.ready(),(await function(e,t,n){return 0===n?[]:ki(e,[ai,si],fi,(([e,r],i,s)=>{const o=[];e.index(li).openCursor(void 0,"prev").onsuccess=e=>{const i=e.target.result;if(!i)return s(o);function a(e){if(o.push(e),o.length===n)return s(o);i.continue()}const c=i.primaryKey,l=t.byName(c);if(l)return a(l);Ii(r,c,(e=>{if(e)return a(e);i.continue()}))}}))}(this._db,this._custom,e)).map(Ui)}set customEmoji(e){this._custom=Ni(e)}get customEmoji(){return this._custom.all}async _shutdown(){await this.ready();try{await this._lazyUpdate}catch(e){}}_clear(){this._db=this._ready=this._lazyUpdate=void 0}async close(){await this._shutdown(),await Ei(this._dbName)}async delete(){var e;await this._shutdown(),await(e=this._dbName,new Promise(((t,n)=>{Ei(e),_i(t,n,indexedDB.deleteDatabase(e))})))}}const Wi=[[-1,"✨","custom"],[0,"😀","smileys-emotion"],[1,"👋","people-body"],[3,"🐱","animals-nature"],[4,"🍎","food-drink"],[5,"🏠️","travel-places"],[6,"⚽","activities"],[7,"📝","objects"],[8,"⛔️","symbols"],[9,"🏁","flags"]].map((([e,t,n])=>({id:e,emoji:t,name:n}))),Zi=Wi.slice(1),Ki="function"==typeof requestIdleCallback?requestIdleCallback:setTimeout;function Gi(e){return e.unicode.includes("‍")}const Yi={"🫨":15.1,"🫠":14,"🥲":13.1,"🥻":12.1,"🥰":11,"🤩":5,"👱‍♀️":4,"🤣":3,"👁️‍🗨️":2,"😀":1,"😐️":.7,"😃":.6},Ji=["😊","😒","❤️","👍️","😍","😂","😭","☺️","😔","😩","😏","💕","🙌","😘"],Xi='"Twemoji Mozilla","Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif',Qi=(e,t)=>et?1:0,es=(e,t)=>{const n=document.createElement("canvas");n.width=n.height=1;const r=n.getContext("2d");return r.textBaseline="top",r.font=`100px ${Xi}`,r.fillStyle=t,r.scale(.01,.01),r.fillText(e,0,0),r.getImageData(0,0,1,1).data};function ts(e){const t=es(e,"#000"),n=es(e,"#fff");return t&&n&&((e,t)=>{const n=[...e].join(",");return n===[...t].join(",")&&!n.startsWith("0,0,0,")})(t,n)}let ns;const rs=()=>(ns||(ns=new Promise((e=>Ki((()=>e(function(){const e=Object.entries(Yi);try{for(const[t,n]of e)if(ts(t))return n}catch(e){}return e[0][1]}())))))),ns),is=new Map;function ss(e){e.preventDefault(),e.stopPropagation()}function os(e,t,n){return(t+=e?-1:1)<0?t=n.length-1:t>=n.length&&(t=0),t}function as(e,t){const n=new Set,r=[];for(const i of e){const e=t(i);n.has(e)||(n.add(e),r.push(i))}return r}const cs=requestAnimationFrame;let ls,ds="function"==typeof ResizeObserver;function hs(e){{const t=document.createRange();return t.selectNode(e.firstChild),t.getBoundingClientRect().width}}function us(e,t,n){let r=e.get(t);return r||(r=n(),e.set(t,r)),r}function ps(e){return""+e}const fs=new WeakMap,ms=new WeakMap,gs=Symbol("un-keyed"),bs="replaceChildren"in Element.prototype;function ws(e,t){const{targetNode:n}=t;let{targetParentNode:r}=t,i=!1;r?i=function(e,t){let n=e.firstChild,r=0;for(;n;){if(t[r]!==n)return!0;n=n.nextSibling,r++}return r!==t.length}(r,e):(i=!0,t.targetNode=void 0,t.targetParentNode=r=n.parentNode),i&&function(e,t){bs?e.replaceChildren(...t):(e.innerHTML="",e.append(...t))}(r,e)}function ys(e){const{template:t,elementsToBindings:n}=us(fs,e,(()=>function(e){let t="",n=!1,r=!1,i=-1;const s=new Map,o=[];for(let a=0,c=e.length;a":n=!1,r=!1;break;case"=":r=!0}const d=us(s,o[o.length-1],(()=>[]));let h,u,p;if(r){const t=/(\S+)="?([^"=]*)$/.exec(l);h=t[1],u=t[2],p=/^[^">]*/.exec(e[a+1])[0]}const f={attributeName:h,attributeValuePre:u,attributeValuePost:p,expressionIndex:a};d.push(f),n||r||(t+=" ")}const a=function(e){const t=document.createElement("template");return t.innerHTML=e,t}(t);return{template:a,elementsToBindings:s}}(e))),r=t.cloneNode(!0).content.firstElementChild,i=function(e,t){const n=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);let i=e,s=-1;do{const e=t.get(++s);if(e)for(let t=0;tPromise.resolve().then(e);function _s(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r{if(n)return;const e=[...i];i.clear();try{for(const t of e)t()}finally{s=!1,i.size&&(s=!0,vs(o))}},a=new Proxy({},{get(e,n){if(t){let e=r.get(n);e||(e=new Set,r.set(n,e)),e.add(t)}return e[n]},set(e,t,n){e[t]=n;const a=r.get(t);if(a){for(const e of a)i.add(e);s||(s=!0,vs(o))}return!0}});return e.addEventListener("abort",(()=>{n=!0})),{state:a,createEffect:e=>{const n=()=>{const r=t;t=n;try{return e()}finally{t=r}};return n()}}}(i);Es(s,{skinToneEmoji:void 0,i18n:void 0,database:void 0,customEmoji:void 0,customCategorySorting:void 0,emojiVersion:void 0}),Es(s,t),Es(s,{initialLoad:!0,currentEmojis:[],currentEmojisWithCategories:[],rawSearchText:"",searchText:"",searchMode:!1,activeSearchItem:-1,message:void 0,skinTonePickerExpanded:!1,skinTonePickerExpandedAfterAnimation:!1,currentSkinTone:0,activeSkinTone:0,skinToneButtonText:void 0,pickerStyle:void 0,skinToneButtonLabel:"",skinTones:[],currentFavorites:[],defaultFavoriteEmojis:void 0,numColumns:8,isRtl:!1,scrollbarWidth:0,currentGroupIndex:0,groups:Zi,databaseLoaded:!1,activeSearchItemId:void 0}),o((()=>{s.currentGroup!==s.groups[s.currentGroupIndex]&&(s.currentGroup=s.groups[s.currentGroupIndex])}));const a=t=>{e.getElementById(t).focus()},c=t=>e.getElementById(`emo-${t.id}`),l=(e,t)=>{n.rootElement.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0,composed:!0}))},d=(e,t)=>e.id===t.id,h=(e,t)=>{const{category:n,emojis:r}=e,{category:i,emojis:s}=t;return n===i&&_s(r,s,d)},u=e=>{_s(s.currentEmojis,e,d)||(s.currentEmojis=e)},p=e=>{s.searchMode!==e&&(s.searchMode=e)},f=(e,t)=>t&&e.skins&&e.skins[t]||e.unicode,m={labelWithSkin:(e,t)=>{return(n=[e.name||f(e,t),e.annotation,...e.shortcodes||ks].filter(Boolean),as(n,(e=>e))).join(", ");var n},titleForEmoji:e=>e.annotation||(e.shortcodes||ks).join(", "),unicodeWithSkin:f},g={onClickSkinToneButton:function(e){s.skinTonePickerExpanded=!s.skinTonePickerExpanded,s.activeSkinTone=s.currentSkinTone,s.skinTonePickerExpanded&&(ss(e),cs((()=>a("skintone-list"))))},onEmojiClick:async function(e){const{target:t}=e;t.classList.contains("emoji")&&(ss(e),E(t.id.substring(4)))},onNavClick:function(e){const{target:t}=e,r=t.closest(".nav-button");if(!r)return;const i=parseInt(r.dataset.groupId,10);n.searchElement.value="",s.rawSearchText="",s.searchText="",s.activeSearchItem=-1,s.currentGroupIndex=s.groups.findIndex((e=>e.id===i))},onNavKeydown:function(e){const{target:t,key:n}=e,r=t=>{t&&(ss(e),t.focus())};switch(n){case"ArrowLeft":return r(t.previousElementSibling);case"ArrowRight":return r(t.nextElementSibling);case"Home":return r(t.parentElement.firstElementChild);case"End":return r(t.parentElement.lastElementChild)}},onSearchKeydown:function(e){if(!s.searchMode||!s.currentEmojis.length)return;const t=t=>{ss(e),s.activeSearchItem=os(t,s.activeSearchItem,s.currentEmojis)};switch(e.key){case"ArrowDown":return t(!1);case"ArrowUp":return t(!0);case"Enter":if(-1!==s.activeSearchItem)return ss(e),E(s.currentEmojis[s.activeSearchItem].id);s.activeSearchItem=0}},onSkinToneOptionsClick:function(e){const{target:{id:t}}=e,n=t&&t.match(/^skintone-(\d)/);n&&(ss(e),x(parseInt(n[1],10)))},onSkinToneOptionsFocusOut:async function(e){const{relatedTarget:t}=e;t&&"skintone-list"===t.id||(s.skinTonePickerExpanded=!1)},onSkinToneOptionsKeydown:function(e){if(!s.skinTonePickerExpanded)return;const t=async t=>{ss(e),s.activeSkinTone=t};switch(e.key){case"ArrowUp":return t(os(!0,s.activeSkinTone,s.skinTones));case"ArrowDown":return t(os(!1,s.activeSkinTone,s.skinTones));case"Home":return t(0);case"End":return t(s.skinTones.length-1);case"Enter":return ss(e),x(s.activeSkinTone);case"Escape":return ss(e),s.skinTonePickerExpanded=!1,a("skintone-button")}},onSkinToneOptionsKeyup:function(e){if(s.skinTonePickerExpanded)return" "===e.key?(ss(e),x(s.activeSkinTone)):void 0},onSearchInput:function(e){s.rawSearchText=e.target.value}},b={calculateEmojiGridStyle:function(e){!function(e,t,n){let r;ds?(r=new ResizeObserver((e=>n(e[0].contentRect.width))),r.observe(e)):cs((()=>n(e.getBoundingClientRect().width))),t.addEventListener("abort",(()=>{r&&r.disconnect()}))}(e,i,(t=>{{const r=getComputedStyle(n.rootElement),i=parseInt(r.getPropertyValue("--num-columns"),10),o="rtl"===r.getPropertyValue("direction"),a=e.parentElement.getBoundingClientRect().width-t;s.numColumns=i,s.scrollbarWidth=a,s.isRtl=o}}))}};let w=!0;function y(){s.database.customEmoji=s.customEmoji||ks}function v(e){return!e.unicode||!Gi(e)||is.get(e.unicode)}async function _(e){const t=s.emojiVersion||await rs();return e.filter((({version:e})=>!e||e<=t))}async function k(e){return function(e,t){const n=e=>{const n={};for(const r of e)"number"==typeof r.tone&&r.version<=t&&(n[r.tone]=r.unicode);return n};return e.map((({unicode:e,skins:t,shortcodes:r,url:i,name:s,category:o,annotation:a})=>({unicode:e,name:s,shortcodes:r,url:i,category:o,annotation:a,id:e||s,skins:t&&n(t)})))}(e,s.emojiVersion||await rs())}async function E(e){const t=await s.database.getEmojiByUnicodeOrName(e),n=[...s.currentEmojis,...s.currentFavorites].find((t=>t.id===e)),r=n.unicode&&f(n,s.currentSkinTone);await s.database.incrementFavoriteEmojiCount(e),l("emoji-click",{emoji:t,skinTone:s.currentSkinTone,...r&&{unicode:r},...n.name&&{name:n.name}})}function x(e){s.currentSkinTone=e,s.skinTonePickerExpanded=!1,a("skintone-button"),l("skin-tone-change",{skinTone:e}),s.database.setPreferredSkinTone(e)}return o((()=>{(function(e,t,n,r,i,s,o,a){const{labelWithSkin:c,titleForEmoji:l,unicodeWithSkin:d}=n,{html:h,map:u}=function(e){const t=us(ms,e,(()=>new Map));let n=gs;return{map:function(e,t,r){return e.map(((e,i)=>{const s=n;n=r(e);try{return t(e,i)}finally{n=s}}))},html:function(e,...r){const i=us(t,e,(()=>new Map));return us(i,n,(()=>ys(e)))(r)}}}(t);function p(e,n,r){return u(e,((e,i)=>h``),(e=>`${r}-${e.id}`))}const f=h`
${t.i18n.searchDescription}
${t.i18n.skinToneDescription}
${u(t.skinTones,((e,n)=>h`
${e}
`),(e=>e))}
${u(t.currentEmojisWithCategories,((e,n)=>h`
${p(e.emojis,t.searchMode,"emo")}
`),(e=>e.category))}
`;if(a){e.appendChild(f);const t=(t,n)=>{for(const r of e.querySelectorAll(`[${t}]`))n(r,r.getAttribute(t))};for(const e of["click","focusout","input","keydown","keyup"])t(`data-on-${e}`,((t,n)=>{t.addEventListener(e,r[n])}));t("data-ref",((e,t)=>{s[t]=e})),t("data-action",((e,t)=>{i[t](e)})),o.addEventListener("abort",(()=>{e.removeChild(f)}))}})(e,s,m,g,b,n,i,w),w=!1})),s.emojiVersion||rs().then((e=>{e||(s.message=s.i18n.emojiUnsupportedMessage)})),o((()=>{s.database&&async function(){let e=!1;const t=setTimeout((()=>{e=!0,s.message=s.i18n.loadingMessage}),1e3);try{await s.database.ready(),s.databaseLoaded=!0}catch(e){console.error(e),s.message=s.i18n.networkErrorMessage}finally{clearTimeout(t),e&&(e=!1,s.message="")}}()})),o((()=>{s.pickerStyle=`\n --num-groups: ${s.groups.length}; \n --indicator-opacity: ${s.searchMode?0:1}; \n --num-skintones: 6;`})),o((()=>{s.customEmoji&&s.database&&y()})),o((()=>{s.customEmoji&&s.customEmoji.length?s.groups!==Wi&&(s.groups=Wi):s.groups!==Zi&&(s.currentGroupIndex&&s.currentGroupIndex--,s.groups=Zi)})),o((()=>{!async function(){s.databaseLoaded&&(s.currentSkinTone=await s.database.getPreferredSkinTone())}()})),o((()=>{s.skinTones=Array(6).fill().map(((e,t)=>function(e,t){if(0===t)return e;const n=e.indexOf("‍");return-1!==n?e.substring(0,n)+String.fromCodePoint(127995+t-1)+e.substring(n):(e.endsWith("️")&&(e=e.substring(0,e.length-1)),e+"\ud83c"+String.fromCodePoint(57339+t-1))}(s.skinToneEmoji,t)))})),o((()=>{s.skinToneButtonText=s.skinTones[s.currentSkinTone]})),o((()=>{s.skinToneButtonLabel=s.i18n.skinToneLabel.replace("{skinTone}",s.i18n.skinTones[s.currentSkinTone])})),o((()=>{s.databaseLoaded&&async function(){const{database:e}=s,t=(await Promise.all(Ji.map((t=>e.getEmojiByUnicodeOrName(t))))).filter(Boolean);s.defaultFavoriteEmojis=t}()})),o((()=>{s.databaseLoaded&&s.defaultFavoriteEmojis&&async function(){y();const{database:e,defaultFavoriteEmojis:t,numColumns:n}=s,r=await e.getTopFavoriteEmoji(n),i=await k(as([...r,...t],(e=>e.unicode||e.name)).slice(0,n));s.currentFavorites=i}()})),o((()=>{!async function(){const{searchText:e,currentGroup:t,databaseLoaded:n,customEmoji:r}=s;if(n)if(e.length>=2){const t=await async function(e){return k(await _(await s.database.getEmojiBySearchQuery(e)))}(e);s.searchText===e&&(u(t),p(!0))}else{const{id:e}=t;if(-1!==e||r&&r.length){const t=await async function(e){const t=-1===e?s.customEmoji:await s.database.getEmojiByGroup(e);return k(await _(t))}(e);s.currentGroup.id===e&&(u(t),p(!1))}}else s.currentEmojis=[],s.searchMode=!1}()})),o((()=>{const{currentEmojis:e,emojiVersion:t}=s,r=e.filter((e=>e.unicode)).filter((e=>Gi(e)&&!is.has(e.unicode)));if(!t&&r.length)u(e),cs((()=>function(e){(function(e,t,n){for(const r of e){const e=hs(n(r));void 0===ls&&(ls=hs(t));const i=e/1.8{var e;(e=n.tabpanelElement)&&(e.scrollTop=0)}))}})),o((()=>{})),o((()=>{var e;e=function(){const{searchMode:e,currentEmojis:t}=s;if(e)return[{category:"",emojis:t}];const n=new Map;for(const e of t){const t=e.category||"";let r=n.get(t);r||(r=[],n.set(t,r)),r.push(e)}return[...n.entries()].map((([e,t])=>({category:e,emojis:t}))).sort(((e,t)=>s.customCategorySorting(e.category,t.category)))}(),_s(s.currentEmojisWithCategories,e,h)||(s.currentEmojisWithCategories=e)})),o((()=>{s.activeSearchItemId=-1!==s.activeSearchItem&&s.currentEmojis[s.activeSearchItem].id})),o((()=>{const{rawSearchText:e}=s;Ki((()=>{s.searchText=(e||"").trim(),s.activeSearchItem=-1}))})),o((()=>{s.skinTonePickerExpanded?n.skinToneDropdown.addEventListener("transitionend",(()=>{s.skinTonePickerExpandedAfterAnimation=!0}),{once:!0}):s.skinTonePickerExpandedAfterAnimation=!1})),{$set(e){Es(s,e)},$destroy(){r.abort()}}}var As={categoriesLabel:"Categories",emojiUnsupportedMessage:"Your browser does not support color emoji.",favoritesLabel:"Favorites",loadingMessage:"Loading…",networkErrorMessage:"Could not load emoji.",regionLabel:"Emoji picker",searchDescription:"When search results are available, press up or down to select and enter to choose.",searchLabel:"Search",searchResultsLabel:"Search results",skinToneDescription:"When expanded, press up or down to select and enter to choose.",skinToneLabel:"Choose a skin tone (currently {skinTone})",skinTonesLabel:"Skin tones",skinTones:["Default","Light","Medium-Light","Medium","Medium-Dark","Dark"],categories:{custom:"Custom","smileys-emotion":"Smileys and emoticons","people-body":"People and body","animals-nature":"Animals and nature","food-drink":"Food and drink","travel-places":"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}};const Cs=["customEmoji","customCategorySorting","database","dataSource","i18n","locale","skinToneEmoji","emojiVersion"],Ts=`:host{--emoji-font-family:${Xi}}`;class Ss extends HTMLElement{constructor(e){super(),this.attachShadow({mode:"open"});const t=document.createElement("style");t.textContent=":host{--emoji-size:1.375rem;--emoji-padding:0.5rem;--category-emoji-size:var(--emoji-size);--category-emoji-padding:var(--emoji-padding);--indicator-height:3px;--input-border-radius:0.5rem;--input-border-size:1px;--input-font-size:1rem;--input-line-height:1.5;--input-padding:0.25rem;--num-columns:8;--outline-size:2px;--border-size:1px;--skintone-border-radius:1rem;--category-font-size:1rem;display:flex;width:min-content;height:400px}:host,:host(.light){color-scheme:light;--background:#fff;--border-color:#e0e0e0;--indicator-color:#385ac1;--input-border-color:#999;--input-font-color:#111;--input-placeholder-color:#999;--outline-color:#999;--category-font-color:#111;--button-active-background:#e6e6e6;--button-hover-background:#d9d9d9}:host(.dark){color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}@media (prefers-color-scheme:dark){:host{color-scheme:dark;--background:#222;--border-color:#444;--indicator-color:#5373ec;--input-border-color:#ccc;--input-font-color:#efefef;--input-placeholder-color:#ccc;--outline-color:#fff;--category-font-color:#efefef;--button-active-background:#555555;--button-hover-background:#484848}}:host([hidden]){display:none}button{margin:0;padding:0;border:0;background:0 0;box-shadow:none;-webkit-tap-highlight-color:transparent}button::-moz-focus-inner{border:0}input{padding:0;margin:0;line-height:1.15;font-family:inherit}input[type=search]{-webkit-appearance:none}:focus{outline:var(--outline-color) solid var(--outline-size);outline-offset:calc(-1*var(--outline-size))}:host([data-js-focus-visible]) :focus:not([data-focus-visible-added]){outline:0}:focus:not(:focus-visible){outline:0}.hide-focus{outline:0}*{box-sizing:border-box}.picker{contain:content;display:flex;flex-direction:column;background:var(--background);border:var(--border-size) solid var(--border-color);width:100%;height:100%;overflow:hidden;--total-emoji-size:calc(var(--emoji-size) + (2 * var(--emoji-padding)));--total-category-emoji-size:calc(var(--category-emoji-size) + (2 * var(--category-emoji-padding)))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.hidden{opacity:0;pointer-events:none}.abs-pos{position:absolute;left:0;top:0}.gone{display:none!important}.skintone-button-wrapper,.skintone-list{background:var(--background);z-index:3}.skintone-button-wrapper.expanded{z-index:1}.skintone-list{position:absolute;inset-inline-end:0;top:0;z-index:2;overflow:visible;border-bottom:var(--border-size) solid var(--border-color);border-radius:0 0 var(--skintone-border-radius) var(--skintone-border-radius);will-change:transform;transition:transform .2s ease-in-out;transform-origin:center 0}@media (prefers-reduced-motion:reduce){.skintone-list{transition-duration:.001s}}@supports not (inset-inline-end:0){.skintone-list{right:0}}.skintone-list.no-animate{transition:none}.tabpanel{overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform;min-height:0;flex:1;contain:content}.emoji-menu{display:grid;grid-template-columns:repeat(var(--num-columns),var(--total-emoji-size));justify-content:space-around;align-items:flex-start;width:100%}.category{padding:var(--emoji-padding);font-size:var(--category-font-size);color:var(--category-font-color)}.custom-emoji,.emoji,button.emoji{height:var(--total-emoji-size);width:var(--total-emoji-size)}.emoji,button.emoji{font-size:var(--emoji-size);display:flex;align-items:center;justify-content:center;border-radius:100%;line-height:1;overflow:hidden;font-family:var(--emoji-font-family);cursor:pointer}@media (hover:hover) and (pointer:fine){.emoji:hover,button.emoji:hover{background:var(--button-hover-background)}}.emoji.active,.emoji:active,button.emoji.active,button.emoji:active{background:var(--button-active-background)}.custom-emoji{padding:var(--emoji-padding);object-fit:contain;pointer-events:none;background-repeat:no-repeat;background-position:center center;background-size:var(--emoji-size) var(--emoji-size)}.nav,.nav-button{align-items:center}.nav{display:grid;justify-content:space-between;contain:content}.nav-button{display:flex;justify-content:center}.nav-emoji{font-size:var(--category-emoji-size);width:var(--total-category-emoji-size);height:var(--total-category-emoji-size)}.indicator-wrapper{display:flex;border-bottom:1px solid var(--border-color)}.indicator{width:calc(100%/var(--num-groups));height:var(--indicator-height);opacity:var(--indicator-opacity);background-color:var(--indicator-color);will-change:transform,opacity;transition:opacity .1s linear,transform .25s ease-in-out}@media (prefers-reduced-motion:reduce){.indicator{will-change:opacity;transition:opacity .1s linear}}.pad-top,input.search{background:var(--background);width:100%}.pad-top{height:var(--emoji-padding);z-index:3}.search-row{display:flex;align-items:center;position:relative;padding-inline-start:var(--emoji-padding);padding-bottom:var(--emoji-padding)}.search-wrapper{flex:1;min-width:0}input.search{padding:var(--input-padding);border-radius:var(--input-border-radius);border:var(--input-border-size) solid var(--input-border-color);color:var(--input-font-color);font-size:var(--input-font-size);line-height:var(--input-line-height)}input.search::placeholder{color:var(--input-placeholder-color)}.favorites{display:flex;flex-direction:row;border-top:var(--border-size) solid var(--border-color);contain:content}.message{padding:var(--emoji-padding)}"+Ts,this.shadowRoot.appendChild(t),this._ctx={locale:"en",dataSource:"https://cdn.jsdelivr.net/npm/emoji-picker-element-data@^1/en/emojibase/data.json",skinToneEmoji:"🖐️",customCategorySorting:Qi,customEmoji:null,i18n:As,emojiVersion:null,...e};for(const e of Cs)"database"!==e&&Object.prototype.hasOwnProperty.call(this,e)&&(this._ctx[e]=this[e],delete this[e]);this._dbFlush()}connectedCallback(){this._cmp||(this._cmp=xs(this.shadowRoot,this._ctx))}disconnectedCallback(){vs((()=>{if(!this.isConnected&&this._cmp){this._cmp.$destroy(),this._cmp=void 0;const{database:e}=this._ctx;e.close().catch((e=>console.error(e)))}}))}static get observedAttributes(){return["locale","data-source","skin-tone-emoji","emoji-version"]}attributeChangedCallback(e,t,n){this._set(e.replace(/-([a-z])/g,((e,t)=>t.toUpperCase())),"emoji-version"===e?parseFloat(n):n)}_set(e,t){this._ctx[e]=t,this._cmp&&this._cmp.$set({[e]:t}),["locale","dataSource"].includes(e)&&this._dbFlush()}_dbCreate(){const{locale:e,dataSource:t,database:n}=this._ctx;n&&n.locale===e&&n.dataSource===t||this._set("database",new Vi({locale:e,dataSource:t}))}_dbFlush(){vs((()=>this._dbCreate()))}}const Is={};for(const e of Cs)Is[e]={get(){return"database"===e&&this._dbCreate(),this._ctx[e]},set(t){if("database"===e)throw new Error("database is read-only");this._set(e,t)}};function js(e){let t=e.length;for(;--t>=0;)e[t]=0}Object.defineProperties(Ss.prototype,Is),customElements.get("emoji-picker")||customElements.define("emoji-picker",Ss);const Ls=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Os=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Ds=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Rs=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Bs=new Array(576);js(Bs);const zs=new Array(60);js(zs);const Ns=new Array(512);js(Ns);const Ps=new Array(256);js(Ps);const Us=new Array(29);js(Us);const Ms=new Array(30);function Fs(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}let $s,Hs,qs;function Vs(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}js(Ms);const Ws=e=>e<256?Ns[e]:Ns[256+(e>>>7)],Zs=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},Ks=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{Ks(e,n[2*t],n[2*t+1])},Ys=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},Js=(e,t,n)=>{const r=new Array(16);let i,s,o=0;for(i=1;i<=15;i++)o=o+n[i-1]<<1,r[i]=o;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=Ys(r[t]++,t))}},Xs=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Qs=e=>{e.bi_valid>8?Zs(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},eo=(e,t,n,r)=>{const i=2*t,s=2*n;return e[i]{const r=e.heap[n];let i=n<<1;for(;i<=e.heap_len&&(i{let r,i,s,o,a=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+a++],r+=(255&e.pending_buf[e.sym_buf+a++])<<8,i=e.pending_buf[e.sym_buf+a++],0===r?Gs(e,i,t):(s=Ps[i],Gs(e,s+256+1,t),o=Ls[s],0!==o&&(i-=Us[s],Ks(e,i,o)),r--,s=Ws(r),Gs(e,s,n),o=Os[s],0!==o&&(r-=Ms[s],Ks(e,r,o)))}while(a{const n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,s=t.stat_desc.elems;let o,a,c,l=-1;for(e.heap_len=0,e.heap_max=573,o=0;o>1;o>=1;o--)to(e,n,o);c=s;do{o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],to(e,n,1),a=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=a,n[2*c]=n[2*o]+n[2*a],e.depth[c]=(e.depth[o]>=e.depth[a]?e.depth[o]:e.depth[a])+1,n[2*o+1]=n[2*a+1]=c,e.heap[1]=c++,to(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,o=t.stat_desc.extra_bits,a=t.stat_desc.extra_base,c=t.stat_desc.max_length;let l,d,h,u,p,f,m=0;for(u=0;u<=15;u++)e.bl_count[u]=0;for(n[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)d=e.heap[l],u=n[2*n[2*d+1]+1]+1,u>c&&(u=c,m++),n[2*d+1]=u,d>r||(e.bl_count[u]++,p=0,d>=a&&(p=o[d-a]),f=n[2*d],e.opt_len+=f*(u+p),s&&(e.static_len+=f*(i[2*d+1]+p)));if(0!==m){do{for(u=c-1;0===e.bl_count[u];)u--;e.bl_count[u]--,e.bl_count[u+1]+=2,e.bl_count[c]--,m-=2}while(m>0);for(u=c;0!==u;u--)for(d=e.bl_count[u];0!==d;)h=e.heap[--l],h>r||(n[2*h+1]!==u&&(e.opt_len+=(u-n[2*h+1])*n[2*h],n[2*h+1]=u),d--)}})(e,t),Js(n,l,e.bl_count)},io=(e,t,n)=>{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),t[2*(n+1)+1]=65535,r=0;r<=n;r++)i=o,o=t[2*(r+1)+1],++a{let r,i,s=-1,o=t[1],a=0,c=7,l=4;for(0===o&&(c=138,l=3),r=0;r<=n;r++)if(i=o,o=t[2*(r+1)+1],!(++a{Ks(e,0+(r?1:0),3),Qs(e),Zs(e,n),Zs(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var co={_tr_init:e=>{oo||((()=>{let e,t,n,r,i;const s=new Array(16);for(n=0,r=0;r<28;r++)for(Us[r]=n,e=0;e<1<>=7;r<30;r++)for(Ms[r]=i<<7,e=0;e<1<{let i,s,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),ro(e,e.l_desc),ro(e,e.d_desc),o=(e=>{let t;for(io(e,e.dyn_ltree,e.l_desc.max_code),io(e,e.dyn_dtree,e.d_desc.max_code),ro(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*Rs[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),i=e.opt_len+3+7>>>3,s=e.static_len+3+7>>>3,s<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==t?ao(e,t,n,r):4===e.strategy||s===i?(Ks(e,2+(r?1:0),3),no(e,Bs,zs)):(Ks(e,4+(r?1:0),3),((e,t,n,r)=>{let i;for(Ks(e,t-257,5),Ks(e,n-1,5),Ks(e,r-4,4),i=0;i(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(Ps[n]+256+1)]++,e.dyn_dtree[2*Ws(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{Ks(e,2,3),Gs(e,256,Bs),(e=>{16===e.bi_valid?(Zs(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},lo=(e,t,n,r)=>{let i=65535&e,s=e>>>16&65535,o=0;for(;0!==n;){o=n>2e3?2e3:n,n-=o;do{i=i+t[r++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16};const ho=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var uo=(e,t,n,r)=>{const i=ho,s=r+n;e^=-1;for(let n=r;n>>8^i[255&(e^t[n])];return~e},po={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},fo={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:mo,_tr_stored_block:go,_tr_flush_block:bo,_tr_tally:wo,_tr_align:yo}=co,{Z_NO_FLUSH:vo,Z_PARTIAL_FLUSH:_o,Z_FULL_FLUSH:ko,Z_FINISH:Eo,Z_BLOCK:xo,Z_OK:Ao,Z_STREAM_END:Co,Z_STREAM_ERROR:To,Z_DATA_ERROR:So,Z_BUF_ERROR:Io,Z_DEFAULT_COMPRESSION:jo,Z_FILTERED:Lo,Z_HUFFMAN_ONLY:Oo,Z_RLE:Do,Z_FIXED:Ro,Z_DEFAULT_STRATEGY:Bo,Z_UNKNOWN:zo,Z_DEFLATED:No}=fo,Po=258,Uo=262,Mo=42,Fo=113,$o=666,Ho=(e,t)=>(e.msg=po[t],t),qo=e=>2*e-(e>4?9:0),Vo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Wo=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do{n=e.head[--r],e.head[r]=n>=i?n-i:0}while(--t);t=i,r=t;do{n=e.prev[--r],e.prev[r]=n>=i?n-i:0}while(--t)};let Zo=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},Go=(e,t)=>{bo(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ko(e.strm)},Yo=(e,t)=>{e.pending_buf[e.pending++]=t},Jo=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Xo=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),0===i?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),1===e.state.wrap?e.adler=lo(e.adler,t,i,n):2===e.state.wrap&&(e.adler=uo(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},Qo=(e,t)=>{let n,r,i=e.max_chain_length,s=e.strstart,o=e.prev_length,a=e.nice_match;const c=e.strstart>e.w_size-Uo?e.strstart-(e.w_size-Uo):0,l=e.window,d=e.w_mask,h=e.prev,u=e.strstart+Po;let p=l[s+o-1],f=l[s+o];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(n=t,l[n+o]===f&&l[n+o-1]===p&&l[n]===l[s]&&l[++n]===l[s+1]){s+=2,n++;do{}while(l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&l[++s]===l[++n]&&so){if(e.match_start=t,o=r,r>=a)break;p=l[s+o-1],f=l[s+o]}}}while((t=h[t&d])>c&&0!=--i);return o<=e.lookahead?o:e.lookahead},ea=e=>{const t=e.w_size;let n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Uo)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Wo(e),r+=t),0===e.strm.avail_in)break;if(n=Xo(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=3)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=Zo(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=Zo(e,e.ins_h,e.window[i+3-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let n,r,i,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,o=0,a=e.strm.avail_in;do{if(n=65535,i=e.bi_valid+42>>3,e.strm.avail_outr+e.strm.avail_in&&(n=r+e.strm.avail_in),n>i&&(n=i),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Ko(e.strm),r&&(r>n&&(r=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,n-=r),n&&(Xo(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===o);return a-=e.strm.avail_in,a&&(a>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=a&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-a,e.strm.next_in),e.strstart),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.block_start=e.strstart),e.high_wateri&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,i+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),i>e.strm.avail_in&&(i=e.strm.avail_in),i&&(Xo(e.strm,e.window,e.strstart,i),e.strstart+=i,e.insert+=i>e.w_size-e.insert?e.w_size-e.insert:i),e.high_water>3,i=e.pending_buf_size-i>65535?65535:e.pending_buf_size-i,s=i>e.w_size?e.w_size:i,r=e.strstart-e.block_start,(r>=s||(r||t===Eo)&&t!==vo&&0===e.strm.avail_in&&r<=i)&&(n=r>i?i:r,o=t===Eo&&0===e.strm.avail_in&&n===r?1:0,go(e,e.block_start,n,o),e.block_start+=n,Ko(e.strm)),o?3:1)},na=(e,t)=>{let n,r;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-Uo&&(e.match_length=Qo(e,n)),e.match_length>=3)if(r=wo(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+1]);else r=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2},ra=(e,t)=>{let n,r,i;for(;;){if(e.lookahead=3&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-3,r=wo(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=Zo(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(Go(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=wo(e,0,e.window[e.strstart-1]),r&&Go(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=wo(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2};function ia(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}const sa=[new ia(0,0,0,0,ta),new ia(4,4,8,4,na),new ia(4,5,16,8,na),new ia(4,6,32,32,na),new ia(4,4,16,16,ra),new ia(8,16,32,32,ra),new ia(8,16,128,128,ra),new ia(8,32,128,256,ra),new ia(32,128,258,1024,ra),new ia(32,258,258,4096,ra)];function oa(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=No,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Vo(this.dyn_ltree),Vo(this.dyn_dtree),Vo(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Vo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Vo(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const aa=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==Mo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==Fo&&t.status!==$o?1:0},ca=e=>{if(aa(e))return Ho(e,To);e.total_in=e.total_out=0,e.data_type=zo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?Mo:Fo,e.adler=2===t.wrap?0:1,t.last_flush=-2,mo(t),Ao},la=e=>{const t=ca(e);var n;return t===Ao&&((n=e.state).window_size=2*n.w_size,Vo(n.head),n.max_lazy_match=sa[n.level].max_lazy,n.good_match=sa[n.level].good_length,n.nice_match=sa[n.level].nice_length,n.max_chain_length=sa[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t},da=(e,t,n,r,i,s)=>{if(!e)return To;let o=1;if(t===jo&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),i<1||i>9||n!==No||r<8||r>15||t<0||t>9||s<0||s>Ro||8===r&&1!==o)return Ho(e,To);8===r&&(r=9);const a=new oa;return e.state=a,a.strm=e,a.status=Mo,a.wrap=o,a.gzhead=null,a.w_bits=r,a.w_size=1<da(e,t,No,15,8,Bo),deflateInit2:da,deflateReset:la,deflateResetKeep:ca,deflateSetHeader:(e,t)=>aa(e)||2!==e.state.wrap?To:(e.state.gzhead=t,Ao),deflate:(e,t)=>{if(aa(e)||t>xo||t<0)return e?Ho(e,To):To;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===$o&&t!==Eo)return Ho(e,0===e.avail_out?Io:To);const r=n.last_flush;if(n.last_flush=t,0!==n.pending){if(Ko(e),0===e.avail_out)return n.last_flush=-1,Ao}else if(0===e.avail_in&&qo(t)<=qo(r)&&t!==Eo)return Ho(e,Io);if(n.status===$o&&0!==e.avail_in)return Ho(e,Io);if(n.status===Mo&&0===n.wrap&&(n.status=Fo),n.status===Mo){let t=No+(n.w_bits-8<<4)<<8,r=-1;if(r=n.strategy>=Oo||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=r<<6,0!==n.strstart&&(t|=32),t+=31-t%31,Jo(n,t),0!==n.strstart&&(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),e.adler=1,n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(57===n.status)if(e.adler=0,Yo(n,31),Yo(n,139),Yo(n,8),n.gzhead)Yo(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),Yo(n,255&n.gzhead.time),Yo(n,n.gzhead.time>>8&255),Yo(n,n.gzhead.time>>16&255),Yo(n,n.gzhead.time>>24&255),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(Yo(n,255&n.gzhead.extra.length),Yo(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=uo(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,0),Yo(n,9===n.level?2:n.strategy>=Oo||n.level<2?4:0),Yo(n,3),n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;if(69===n.status){if(n.gzhead.extra){let t=n.pending,r=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+r>n.pending_buf_size;){let i=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=i,Ko(e),0!==n.pending)return n.last_flush=-1,Ao;t=0,r-=i}let i=new Uint8Array(n.gzhead.extra);n.pending_buf.set(i.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending+=r,n.gzhead.hcrc&&n.pending>t&&(e.adler=uo(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,r=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r)),Ko(e),0!==n.pending)return n.last_flush=-1,Ao;r=0}t=n.gzindexr&&(e.adler=uo(e.adler,n.pending_buf,n.pending-r,r))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ko(e),0!==n.pending))return n.last_flush=-1,Ao;Yo(n,255&e.adler),Yo(n,e.adler>>8&255),e.adler=0}if(n.status=Fo,Ko(e),0!==n.pending)return n.last_flush=-1,Ao}if(0!==e.avail_in||0!==n.lookahead||t!==vo&&n.status!==$o){let r=0===n.level?ta(n,t):n.strategy===Oo?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(ea(e),0===e.lookahead)){if(t===vo)return 1;break}if(e.match_length=0,n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===Do?((e,t)=>{let n,r,i,s;const o=e.window;for(;;){if(e.lookahead<=Po){if(ea(e),e.lookahead<=Po&&t===vo)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=e.strstart-1,r=o[i],r===o[++i]&&r===o[++i]&&r===o[++i])){s=e.strstart+Po;do{}while(r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&r===o[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=wo(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=wo(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Go(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Eo?(Go(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Go(e,!1),0===e.strm.avail_out)?1:2})(n,t):sa[n.level].func(n,t);if(3!==r&&4!==r||(n.status=$o),1===r||3===r)return 0===e.avail_out&&(n.last_flush=-1),Ao;if(2===r&&(t===_o?yo(n):t!==xo&&(go(n,0,0,!1),t===ko&&(Vo(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Ko(e),0===e.avail_out))return n.last_flush=-1,Ao}return t!==Eo?Ao:n.wrap<=0?Co:(2===n.wrap?(Yo(n,255&e.adler),Yo(n,e.adler>>8&255),Yo(n,e.adler>>16&255),Yo(n,e.adler>>24&255),Yo(n,255&e.total_in),Yo(n,e.total_in>>8&255),Yo(n,e.total_in>>16&255),Yo(n,e.total_in>>24&255)):(Jo(n,e.adler>>>16),Jo(n,65535&e.adler)),Ko(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?Ao:Co)},deflateEnd:e=>{if(aa(e))return To;const t=e.state.status;return e.state=null,t===Fo?Ho(e,So):Ao},deflateSetDictionary:(e,t)=>{let n=t.length;if(aa(e))return To;const r=e.state,i=r.wrap;if(2===i||1===i&&r.status!==Mo||r.lookahead)return To;if(1===i&&(e.adler=lo(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){0===i&&(Vo(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(n-r.w_size,n),0),t=e,n=r.w_size}const s=e.avail_in,o=e.next_in,a=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,ea(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=Zo(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,ea(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=o,e.input=a,e.avail_in=s,r.wrap=i,Ao},deflateInfo:"pako deflate (from Nodeca project)"};const ua=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var pa={assign:function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const t in n)ua(n,t)&&(e[t]=n[t])}}return e},flattenChunks:e=>{let t=0;for(let n=0,r=e.length;n=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ma[254]=ma[254]=1;var ga={string2buf:e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,r,i,s,o=e.length,a=0;for(i=0;i>>6,t[s++]=128|63&n):n<65536?(t[s++]=224|n>>>12,t[s++]=128|n>>>6&63,t[s++]=128|63&n):(t[s++]=240|n>>>18,t[s++]=128|n>>>12&63,t[s++]=128|n>>>6&63,t[s++]=128|63&n);return t},buf2string:(e,t)=>{const n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,i;const s=new Array(2*n);for(i=0,r=0;r4)s[i++]=65533,r+=o-1;else{for(t&=2===o?31:3===o?15:7;o>1&&r1?s[i++]=65533:t<65536?s[i++]=t:(t-=65536,s[i++]=55296|t>>10&1023,s[i++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&fa)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+ma[e[n]]>t?n:t}},ba=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const wa=Object.prototype.toString,{Z_NO_FLUSH:ya,Z_SYNC_FLUSH:va,Z_FULL_FLUSH:_a,Z_FINISH:ka,Z_OK:Ea,Z_STREAM_END:xa,Z_DEFAULT_COMPRESSION:Aa,Z_DEFAULT_STRATEGY:Ca,Z_DEFLATED:Ta}=fo;function Sa(e){this.options=pa.assign({level:Aa,method:Ta,chunkSize:16384,windowBits:15,memLevel:8,strategy:Ca},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=ha.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ea)throw new Error(po[n]);if(t.header&&ha.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wa.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=ha.deflateSetDictionary(this.strm,e),n!==Ea)throw new Error(po[n]);this._dict_set=!0}}function Ia(e,t){const n=new Sa(t);if(n.push(e,!0),n.err)throw n.msg||po[n.err];return n.result}Sa.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?ka:ya,"string"==typeof e?n.input=ga.string2buf(e):"[object ArrayBuffer]"===wa.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(s===va||s===_a)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(i=ha.deflate(n,s),i===xa)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=ha.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Ea;if(0!==n.avail_out){if(s>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},Sa.prototype.onData=function(e){this.chunks.push(e)},Sa.prototype.onEnd=function(e){e===Ea&&(this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ja={Deflate:Sa,deflate:Ia,deflateRaw:function(e,t){return(t=t||{}).raw=!0,Ia(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,Ia(e,t)},constants:fo};const La=16209;var Oa=function(e,t){let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x,A;const C=e.state;n=e.next_in,x=e.input,r=n+(e.avail_in-5),i=e.next_out,A=e.output,s=i-(t-e.avail_out),o=i+(e.avail_out-257),a=C.dmax,c=C.wsize,l=C.whave,d=C.wnext,h=C.window,u=C.hold,p=C.bits,f=C.lencode,m=C.distcode,g=(1<>>24,u>>>=y,p-=y,y=w>>>16&255,0===y)A[i++]=65535&w;else{if(!(16&y)){if(64&y){if(32&y){C.mode=16191;break e}e.msg="invalid literal/length code",C.mode=La;break e}w=f[(65535&w)+(u&(1<>>=y,p-=y),p<15&&(u+=x[n++]<>>24,u>>>=y,p-=y,y=w>>>16&255,16&y){if(_=65535&w,y&=15,pa){e.msg="invalid distance too far back",C.mode=La;break e}if(u>>>=y,p-=y,y=i-s,_>y){if(y=_-y,y>l&&C.sane){e.msg="invalid distance too far back",C.mode=La;break e}if(k=0,E=h,0===d){if(k+=c-y,y2;)A[i++]=E[k++],A[i++]=E[k++],A[i++]=E[k++],v-=3;v&&(A[i++]=E[k++],v>1&&(A[i++]=E[k++]))}else{k=i-_;do{A[i++]=A[k++],A[i++]=A[k++],A[i++]=A[k++],v-=3}while(v>2);v&&(A[i++]=A[k++],v>1&&(A[i++]=A[k++]))}break}if(64&y){e.msg="invalid distance code",C.mode=La;break e}w=m[(65535&w)+(u&(1<>3,n-=v,p-=v<<3,u&=(1<{const c=a.bits;let l,d,h,u,p,f,m=0,g=0,b=0,w=0,y=0,v=0,_=0,k=0,E=0,x=0,A=null;const C=new Uint16Array(16),T=new Uint16Array(16);let S,I,j,L=null;for(m=0;m<=15;m++)C[m]=0;for(g=0;g=1&&0===C[w];w--);if(y>w&&(y=w),0===w)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(b=1;b0&&(0===e||1!==w))return-1;for(T[1]=0,m=1;m<15;m++)T[m+1]=T[m]+C[m];for(g=0;g852||2===e&&E>592)return 1;for(;;){S=m-_,o[g]+1=f?(I=L[o[g]-f],j=A[o[g]-f]):(I=96,j=0),l=1<>_)+d]=S<<24|I<<16|j}while(0!==d);for(l=1<>=1;if(0!==l?(x&=l-1,x+=l):x=0,g++,0==--C[m]){if(m===w)break;m=t[n+o[g]]}if(m>y&&(x&u)!==h){for(0===_&&(_=y),p+=b,v=m-_,k=1<852||2===e&&E>592)return 1;h=x&u,i[h]=y<<24|v<<16|p-s}}return 0!==x&&(i[p+x]=m-_<<24|64<<16),a.bits=y,0};const{Z_FINISH:Pa,Z_BLOCK:Ua,Z_TREES:Ma,Z_OK:Fa,Z_STREAM_END:$a,Z_NEED_DICT:Ha,Z_STREAM_ERROR:qa,Z_DATA_ERROR:Va,Z_MEM_ERROR:Wa,Z_BUF_ERROR:Za,Z_DEFLATED:Ka}=fo,Ga=16180,Ya=16190,Ja=16191,Xa=16192,Qa=16194,ec=16199,tc=16200,nc=16206,rc=16209,ic=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function sc(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const oc=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},ac=e=>{if(oc(e))return qa;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Ga,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Fa},cc=e=>{if(oc(e))return qa;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,ac(e)},lc=(e,t)=>{let n;if(oc(e))return qa;const r=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?qa:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,cc(e))},dc=(e,t)=>{if(!e)return qa;const n=new sc;e.state=n,n.strm=e,n.window=null,n.mode=Ga;const r=lc(e,t);return r!==Fa&&(e.state=null),r};let hc,uc,pc=!0;const fc=e=>{if(pc){hc=new Int32Array(512),uc=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Na(1,e.lens,0,288,hc,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Na(2,e.lens,0,32,uc,0,e.work,{bits:5}),pc=!1}e.lencode=hc,e.lenbits=9,e.distcode=uc,e.distbits=5},mc=(e,t,n,r)=>{let i;const s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(t.subarray(n-s.wsize,n),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),s.window.set(t.subarray(n-r,n-r+i),s.wnext),(r-=i)?(s.window.set(t.subarray(n-r,n),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whavedc(e,15),inflateInit2:dc,inflate:(e,t)=>{let n,r,i,s,o,a,c,l,d,h,u,p,f,m,g,b,w,y,v,_,k,E,x=0;const A=new Uint8Array(4);let C,T;const S=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(oc(e)||!e.output||!e.input&&0!==e.avail_in)return qa;n=e.state,n.mode===Ja&&(n.mode=Xa),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,h=a,u=c,E=Fa;e:for(;;)switch(n.mode){case Ga:if(0===n.wrap){n.mode=Xa;break}for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0),l=0,d=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",n.mode=rc;break}if((15&l)!==Ka){e.msg="unknown compression method",n.mode=rc;break}if(l>>>=4,d-=4,k=8+(15&l),0===n.wbits&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=rc;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16182;case 16182:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>8&255,A[2]=l>>>16&255,A[3]=l>>>24&255,n.check=uo(n.check,A,4,0)),l=0,d=0,n.mode=16183;case 16183:for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>8),512&n.flags&&4&n.wrap&&(A[0]=255&l,A[1]=l>>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0,n.mode=16184;case 16184:if(1024&n.flags){for(;d<16;){if(0===a)break e;a--,l+=r[s++]<>>8&255,n.check=uo(n.check,A,2,0)),l=0,d=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(p=n.length,p>a&&(p=a),p&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(s,s+p),k)),512&n.flags&&4&n.wrap&&(n.check=uo(n.check,r,p,s)),a-=p,s+=p,n.length-=p),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===a)break e;p=0;do{k=r[s+p++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k))}while(k&&p>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Ja;break;case 16189:for(;d<32;){if(0===a)break e;a--,l+=r[s++]<>>=7&d,d-=7&d,n.mode=nc;break}for(;d<3;){if(0===a)break e;a--,l+=r[s++]<>>=1,d-=1,3&l){case 0:n.mode=16193;break;case 1:if(fc(n),n.mode=ec,t===Ma){l>>>=2,d-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=rc}l>>>=2,d-=2;break;case 16193:for(l>>>=7&d,d-=7&d;d<32;){if(0===a)break e;a--,l+=r[s++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=rc;break}if(n.length=65535&l,l=0,d=0,n.mode=Qa,t===Ma)break e;case Qa:n.mode=16195;case 16195:if(p=n.length,p){if(p>a&&(p=a),p>c&&(p=c),0===p)break e;i.set(r.subarray(s,s+p),o),a-=p,s+=p,c-=p,o+=p,n.length-=p;break}n.mode=Ja;break;case 16196:for(;d<14;){if(0===a)break e;a--,l+=r[s++]<>>=5,d-=5,n.ndist=1+(31&l),l>>>=5,d-=5,n.ncode=4+(15&l),l>>>=4,d-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=rc;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,d-=3}for(;n.have<19;)n.lens[S[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,C={bits:n.lenbits},E=Na(0,n.lens,0,19,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid code lengths set",n.mode=rc;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=g,d-=g,n.lens[n.have++]=w;else{if(16===w){for(T=g+2;d>>=g,d-=g,0===n.have){e.msg="invalid bit length repeat",n.mode=rc;break}k=n.lens[n.have-1],p=3+(3&l),l>>>=2,d-=2}else if(17===w){for(T=g+3;d>>=g,d-=g,k=0,p=3+(7&l),l>>>=3,d-=3}else{for(T=g+7;d>>=g,d-=g,k=0,p=11+(127&l),l>>>=7,d-=7}if(n.have+p>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=rc;break}for(;p--;)n.lens[n.have++]=k}}if(n.mode===rc)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=rc;break}if(n.lenbits=9,C={bits:n.lenbits},E=Na(1,n.lens,0,n.nlen,n.lencode,0,n.work,C),n.lenbits=C.bits,E){e.msg="invalid literal/lengths set",n.mode=rc;break}if(n.distbits=6,n.distcode=n.distdyn,C={bits:n.distbits},E=Na(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,C),n.distbits=C.bits,E){e.msg="invalid distances set",n.mode=rc;break}if(n.mode=ec,t===Ma)break e;case ec:n.mode=tc;case tc:if(a>=6&&c>=258){e.next_out=o,e.avail_out=c,e.next_in=s,e.avail_in=a,n.hold=l,n.bits=d,Oa(e,u),o=e.next_out,i=e.output,c=e.avail_out,s=e.next_in,r=e.input,a=e.avail_in,l=n.hold,d=n.bits,n.mode===Ja&&(n.back=-1);break}for(n.back=0;x=n.lencode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,n.length=w,0===b){n.mode=16205;break}if(32&b){n.back=-1,n.mode=Ja;break}if(64&b){e.msg="invalid literal/length code",n.mode=rc;break}n.extra=15&b,n.mode=16201;case 16201:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;x=n.distcode[l&(1<>>24,b=x>>>16&255,w=65535&x,!(g<=d);){if(0===a)break e;a--,l+=r[s++]<>y)],g=x>>>24,b=x>>>16&255,w=65535&x,!(y+g<=d);){if(0===a)break e;a--,l+=r[s++]<>>=y,d-=y,n.back+=y}if(l>>>=g,d-=g,n.back+=g,64&b){e.msg="invalid distance code",n.mode=rc;break}n.offset=w,n.extra=15&b,n.mode=16203;case 16203:if(n.extra){for(T=n.extra;d>>=n.extra,d-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=rc;break}n.mode=16204;case 16204:if(0===c)break e;if(p=u-c,n.offset>p){if(p=n.offset-p,p>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=rc;break}p>n.wnext?(p-=n.wnext,f=n.wsize-p):f=n.wnext-p,p>n.length&&(p=n.length),m=n.window}else m=i,f=o-n.offset,p=n.length;p>c&&(p=c),c-=p,n.length-=p;do{i[o++]=m[f++]}while(--p);0===n.length&&(n.mode=tc);break;case 16205:if(0===c)break e;i[o++]=n.length,c--,n.mode=tc;break;case nc:if(n.wrap){for(;d<32;){if(0===a)break e;a--,l|=r[s++]<{if(oc(e))return qa;let t=e.state;return t.window&&(t.window=null),e.state=null,Fa},inflateGetHeader:(e,t)=>{if(oc(e))return qa;const n=e.state;return 2&n.wrap?(n.head=t,t.done=!1,Fa):qa},inflateSetDictionary:(e,t)=>{const n=t.length;let r,i,s;return oc(e)?qa:(r=e.state,0!==r.wrap&&r.mode!==Ya?qa:r.mode===Ya&&(i=1,i=lo(i,t,n,0),i!==r.check)?Va:(s=mc(e,t,n,n),s?(r.mode=16210,Wa):(r.havedict=1,Fa)))},inflateInfo:"pako inflate (from Nodeca project)"},bc=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const wc=Object.prototype.toString,{Z_NO_FLUSH:yc,Z_FINISH:vc,Z_OK:_c,Z_STREAM_END:kc,Z_NEED_DICT:Ec,Z_STREAM_ERROR:xc,Z_DATA_ERROR:Ac,Z_MEM_ERROR:Cc}=fo;function Tc(e){this.options=pa.assign({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ba,this.strm.avail_out=0;let n=gc.inflateInit2(this.strm,t.windowBits);if(n!==_c)throw new Error(po[n]);if(this.header=new bc,gc.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=ga.string2buf(t.dictionary):"[object ArrayBuffer]"===wc.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=gc.inflateSetDictionary(this.strm,t.dictionary),n!==_c)))throw new Error(po[n])}function Sc(e,t){const n=new Tc(t);if(n.push(e),n.err)throw n.msg||po[n.err];return n.result}Tc.prototype.push=function(e,t){const n=this.strm,r=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=t===~~t?t:!0===t?vc:yc,"[object ArrayBuffer]"===wc.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),s=gc.inflate(n,o),s===Ec&&i&&(s=gc.inflateSetDictionary(n,i),s===_c?s=gc.inflate(n,o):s===Ac&&(s=Ec));n.avail_in>0&&s===kc&&n.state.wrap>0&&0!==e[n.next_in];)gc.inflateReset(n),s=gc.inflate(n,o);switch(s){case xc:case Ac:case Ec:case Cc:return this.onEnd(s),this.ended=!0,!1}if(a=n.avail_out,n.next_out&&(0===n.avail_out||s===kc))if("string"===this.options.to){let e=ga.utf8border(n.output,n.next_out),t=n.next_out-e,i=ga.buf2string(n.output,e);n.next_out=t,n.avail_out=r-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(i)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(s!==_c||0!==a){if(s===kc)return s=gc.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},Tc.prototype.onData=function(e){this.chunks.push(e)},Tc.prototype.onEnd=function(e){e===_c&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=pa.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Ic={Inflate:Tc,inflate:Sc,inflateRaw:function(e,t){return(t=t||{}).raw=!0,Sc(e,t)},ungzip:Sc,constants:fo};const{Deflate:jc,deflate:Lc,deflateRaw:Oc,gzip:Dc}=ja,{Inflate:Rc,inflate:Bc,inflateRaw:zc,ungzip:Nc}=Ic;var Pc=Lc,Uc=Bc;const Mc={encode:e=>{const t=Array.from(e).map((e=>e.codePointAt(0)||0)),n=[];for(const e of t)e<=127?n.push(e):e<=2047?(n.push(e>>6|192),n.push(63&e|128)):e<=65535?(n.push(e>>12|224),n.push(e>>6&63|128),n.push(63&e|128)):e<=1114111&&(n.push(e>>18|240),n.push(e>>12&63|128),n.push(e>>6&63|128),n.push(63&e|128));return Uint8Array.from(n).buffer},decode:e=>{const t=new Uint8Array(e);let n="",r=0;for(;r=n)return new ArrayBuffer(0);const i=qc(this,Hc,Vc(this,Hc,"f")+e,"f");return i>n?t.slice(r,n):t.slice(r,i)}};var Zc,Kc=function(e,t,n,r){if("a"===n&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?r:"a"===n?r.call(e):r?r.value:t.get(e)};Zc=new WeakMap;const Gc=class{constructor(){Zc.set(this,[])}write(e){const t=Kc(this,Zc,"f");switch(typeof e){case"number":t.push(e);break;case"object":Array.isArray(e)?t.push(Uint8Array.from(e).buffer):ArrayBuffer.isView(e)?t.push(e.buffer):t.push(new DataView(e,0,0).buffer);break;default:throw new Error("Invalid value: "+e)}}toArrayBuffer(e){const t=Kc(this,Zc,"f");if((e||(e=0))<=0)for(const n of t)e+="number"==typeof n?1:n.byteLength;const n=new Uint8Array(new ArrayBuffer(e),0,e);e=0;for(const r of t){if("number"==typeof r){n[e++]=r;continue}const t=r.byteLength;n.set(new Uint8Array(r,0,t),e),e+=t}return n.buffer}};function Yc(e){try{return new DataView(e,0,0),!0}catch(e){return!1}}function Jc(e){const t=e.buffer,n=e.byteOffset,r=e.byteLength;return 0===n&&r===t.byteLength?t:t.slice(n,n+r)}function Xc(e,t){const n=Fc.encode(t),r=new DataView(new ArrayBuffer(4),0,4);r.setUint32(0,n.byteLength,!0),e.write(r),e.write(n)}function Qc(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,102),n.setUint32(1,t.byteLength,!0),e.write(n),e.write(t)}function el(e,t){switch(typeof t){case"string":e.write(101),Xc(e,t);break;case"boolean":e.write([10,t?1:0]);break;case"undefined":e.write(0);break;case"number":{if(Number.isSafeInteger(t))if(t>=0){if(t<=255){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,10),n.setUint8(1,t),void e.write(n)}if(t<=65535){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,11),n.setUint16(1,t,!0),void e.write(n)}if(t<=4294967295){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,12),n.setUint32(1,t,!0),void e.write(n)}}else{if(t>=-128&&t<128){const n=new DataView(new ArrayBuffer(2),0,2);return n.setUint8(0,20),n.setInt8(1,t),void e.write(n)}if(t>=-32768&&t<32768){const n=new DataView(new ArrayBuffer(3),0,3);return n.setUint8(0,21),n.setInt16(1,t,!0),void e.write(n)}if(t>=-2147483648&&t<2147483648){const n=new DataView(new ArrayBuffer(5),0,5);return n.setUint8(0,22),n.setInt32(1,t,!0),void e.write(n)}}const n=new DataView(new ArrayBuffer(9),0,9);n.setUint8(0,33),n.setFloat64(1,t,!0),e.write(n)}break;case"bigint":{const n=new DataView(new ArrayBuffer(9),0,9);t>=0n?(n.setUint8(0,13),n.setBigUint64(1,t,!0)):(n.setUint8(0,23),n.setBigUint64(1,t,!0)),e.write(n)}break;case"object":null===t?e.write(255):Array.isArray(t)?function(e,t){const n=new DataView(new ArrayBuffer(5),0,5);n.setUint8(0,99),n.setUint32(1,t.length,!0),e.write(n);for(const n of t)el(e,n)}(e,t):Yc(t)?Qc(e,t):ArrayBuffer.isView(t)?Qc(e,Jc(t)):function(e,t){if("function"==typeof t.toJSON)return void el(e,t.toJSON());const n=Object.keys(t);{const t=new DataView(new ArrayBuffer(5),0,5);t.setUint8(0,100),t.setUint32(1,n.length,!0),e.write(t)}for(const r of n){const n=t[r];switch(typeof n){case"boolean":case"bigint":case"number":case"object":case"string":case"undefined":Xc(e,r),el(e,n)}}}(e,t)}}function tl(e,t){if("object"!=typeof e||null==e)throw new Error("Data must be a non-null object or array.");if("object"!=typeof(t||(t={})))throw new Error("The options parameter must be an object.");{const t=new Gc;el(t,e),e=t.toArrayBuffer()}const n=t.compressMethod||0,r=t.compressLevel||5;switch(n){case 0:break;case 1:e=Pc(e,{raw:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 3:e=Pc(e,{gzip:!0,level:r,memLevel:9,chunkSize:8192,windowBits:15});break;case 2:case 4:case 5:case 6:throw new Error("Not implemented");default:throw new Error("Unknown compress method: "+n)}const i=new Uint8Array(new ArrayBuffer(e.byteLength+7));return i[0]=128,i[1]=99,i[2]=98,i[3]=106,i[4]=102,i[5]=1,i[6]=n,i.set(new Uint8Array(e),7),i.buffer}function nl(e){const t=e.read();switch(t){case 0:return;case 255:return null;case 10:return e.read();case 11:return new DataView(e.readNBytes(2),0,2).getUint16(0,!0);case 12:return new DataView(e.readNBytes(4),0,4).getUint32(0,!0);case 13:return new DataView(e.readNBytes(8),0,8).getBigUint64(0,!0);case 20:return e.read()<<8>>8;case 21:return new DataView(e.readNBytes(2),0,2).getInt16(0,!0);case 22:return new DataView(e.readNBytes(4),0,4).getInt32(0,!0);case 23:return new DataView(e.readNBytes(8),0,8).getBigInt64(0,!0);case 32:return new DataView(e.readNBytes(4),0,4).getFloat32(0,!0);case 33:return new DataView(e.readNBytes(8),0,8).getFloat64(0,!0);case 99:return function(e){const t=new DataView(e.readNBytes(4),0,4).getUint32(0,!0),n=new Array(t);for(let r=0;r{function n(e){const n=t.getElementById(e);if(null==n)throw new Error("Element does not exist: "+e);return n}function r(e){const n=t.querySelector(e);if(n instanceof HTMLElement)return n;throw new Error("Failed to query selector: "+e)}function i(e){null!=e?(p.textContent=e,p.style.display="block"):p.style.display="none"}function s(e){f.appendChild(o(e)),m.style.display="block"}function o(n){if(e.crossOriginIsolated){const r=t.createElement("iframe");return r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.onload=()=>{r.onload=null,r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\t\n\t\n\t\n\t\t\n\t\n`)))},r}const r=t.createElement("embed");return r.setAttribute("type","text/plain"),r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("src",n),r}function a(e){try{return new URL(e)}catch(e){return null}}function c(t){const n=e.open(void 0,"_blank","");if(null==n)return void i("Please allow popups in your browser settings and try again.");n.stop(),n.focus();const r=w.parseFromString(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\x3c!-- dummy --\x3e\n\t\n`,"application/xml");t.remove(),r.body.appendChild(t),n.document.documentElement.replaceWith(r.documentElement)}function l(e,t){return new Promise(((n,r)=>{const i=Date.now().toString(36),s=(e,t,a)=>{e===i&&(A.off("res",s),A.off("disconnect",o),null!=a?r(a):n(t))},o=()=>{A.off("res",s),A.off("disconnect",o),r(new Error("Server connection interrupted"))};A.on("res",s),A.on("disconnect",o),A.emit("fetch",i,e,t)}))}"complete"!==t.readyState&&await new Promise((e=>{const n=()=>{"complete"===t.readyState&&(t.removeEventListener("readystatechange",n),e())};t.addEventListener("readystatechange",n,{passive:!0})})),e.stop(),e.focus(),e.onerror=(e,t,n,r,i)=>{let s="Unhandled error at "+(t||"unknown source ");null!=n&&(s+=n),null!=r&&(s+=":"+r),null!=i&&(s+="\n\n"+i),console.error(s),p.textContent=s,p.style.display="block"},e.onkeydown=e=>{if(e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey)switch(e.key){case"q":e.preventDefault(),e.stopPropagation(),d.replace("https://www.google.com/webhp?igu=1");break;case"b":e.preventDefault(),e.stopPropagation();const{body:n}=t;n.hasAttribute("style")?n.removeAttribute("style"):n.setAttribute("style","filter: blur(15px);");break;case"h":e.preventDefault(),e.stopPropagation(),"WhiteSpider"===t.title?(t.title="Google",r("link[rel*='icon']").href="/res/google.ico"):(t.title="WhiteSpider",r("link[rel*='icon']").href="/favicon.ico")}},e.onappinstalled=e=>{e.preventDefault(),e.stopPropagation(),b.style.display="none"},e.onbeforeinstallprompt=e=>{e.preventDefault(),e.stopPropagation(),b.style.display="block",b.onclick=()=>{e.prompt()}};const d=e.location,h=e.history,u=d.pathname,p=n("error"),f=n("frame"),m=n("frame-view"),g=n("status"),b=n("install"),w=new DOMParser,y=r('link[rel="canonical"]'),v=(...t)=>e.console.log(...t);{const{_a:N,_b:P,_d:U,_e:M,_f:F,_g:$,_h:H,_i:q,_j:V,_k:W,_l:Z,_m:K,_n:G,_o:Y,_v:J,_w:X,_p:Q,_q:ee,_r:te}=ol;if((()=>{v(N,P);const e=new URL(d.href),n=e.hostname,r=e.origin;switch(e.protocol){case"http:":if("localhost"!==n)return e.protocol="https:",e.pathname="/",e.host=n,d.replace(e.href),!1;break;case"https:":break;default:return!0}switch(n){case"whitespider.cf":case"whitespider.tk":case"whitespider.gq":case"whitespider.web.app":case"whitespider.pages.dev":case"whitespider.firebaseapp.com":return e.host="whitespider.dev",e.pathname="/",d.replace(e.href),!1}{const e=t[Y](H);if(null==e||e[V](q)!==Z)return!0}for(const e of t[K](G)){switch(e[V]("type")||""){case"":case"text/javascript":case"application/javascript":break;default:return e.remove(),!0}const t=e[V]("src");if(!t||e.textContent)return e.remove(),!0;const n=new URL(t.startsWith("//")?"https:"+t:t,r);if(n.origin!==r){if("https:"===n.protocol){const e=n.host.split("."),t=e.length;if("com"===e[t-1]){const n=e[t-2];if(n.indexOf("google")>=0||n.indexOf("firebase")>=0)continue}}return e.remove(),!0}}return y[V]("href")!==F||null==t[Y](Q)||null==t[Y](ee)||t[te]!==N.slice(2,13)})()){v(M,W);const ne=w.parseFromString(J,"application/xhtml+xml");ne.title=$;const re=ne.body;re.innerHTML=U;{const ie=ne.createElement("button");ie.innerHTML=X,ie.setAttribute("type","button"),ie.addEventListener("click",(()=>{d.replace(F)}),{passive:!0}),re.appendChild(ie)}return void t.documentElement.replaceWith(ne.documentElement)}for(const se of Object.getOwnPropertyNames(ol))2===se.length&&delete ol[se]}if(e!==e.top){if("null"===d.ancestorOrigins?.item(0)){const oe=t.createElement("div");return oe.textContent="Click here to continue",oe.onclick=()=>c(o("https://whitespider.dev/")),oe.setAttribute("style","padding: 15px;"),t.body.innerHTML="",void t.body.appendChild(oe)}if("https://whitespider.dev"!==d.origin)return void d.replace("https://whitespider.dev/")}const _=t.documentElement.clientWidth<800,k=new Yr(e),{localStorage:E}=k;let x,A,C,T,S,I=null,j=null;const L=[],O=[];if(e.isSecureContext??"https:"===d.protocol){if(k.persistent)try{const ae=await async function(t,n){try{const t=await e.fetch("/manifest.json",{cache:"no-cache",method:"GET"});return t.ok?await t.text():null}catch(e){return null}}();if(null!=ae){const ce=JSON.parse(ae).version;if(ce!==E.get("__mf_version")){t.body.innerHTML="Updating contents...";const le=e.caches;for(const de of await le.keys())await le.delete(de);return E.delete("__new_read"),E.set("__mf_version",ce),void d.reload()}n("version").textContent="v"+ce}x=E.get("__secrets_")||void 0}catch(he){}else i("Warning: Cookies are blocked by your browser. Some features might not work properly, and your game data will NOT be saved.");try{const ue=e.navigator.serviceWorker;null!=ue&&(await ue.register("/sw.js",{type:"classic",scope:"/",updateViaCache:"none"}),await ue.ready)}catch(pe){}}try{const fe=await e.fetch("/d/index.json",{mode:"same-origin",cache:"no-cache",method:"GET"});if(!fe.ok)throw new Error("Remote returned error status code: "+fe.status);const me=il(await fe.arrayBuffer());for(const ge of me)L.push(ge);for(const be of me.sort(((e,t)=>t.date-e.date)).slice(0,200))O.push(be)}catch(we){return void i("Failed to initialize local game list. Message: "+String(we))}p.onclick=()=>{p.innerHTML="",p.style.display="none"},n("frame-close").onclick=()=>{f.innerHTML="",m.style.display="none",h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")},n("frame-newtab").onclick=()=>{const e=f.firstElementChild;null!=e&&(f.innerHTML="",m.style.display="none",c(e))};{const ye=r("link[rel*='icon']"),ve=n("backend-url"),_e=n("theme"),ke=n("tab-cloaking");let xe;function Ae(e){null!=A&&(A.disconnect(),A.close()),A=Ee(e||ll,{path:"/_api_/",secure:!0,upgrade:!0,timeout:1e4,forceNew:!0,multiplex:!1,transports:["polling"],autoConnect:!0,reconnection:!0,rememberUpgrade:!0,reconnectionDelay:5e3,closeOnBeforeunload:!0}),g.innerHTML="Connecting...",g.style.color="#808000",A.io.on("open",(()=>{g.innerHTML="✓Connected",g.style.color="#008000"})),A.io.on("close",(()=>{g.innerHTML="✕Disconnected",g.style.color="#ff0000"})),A.io.on("reconnect_attempt",(()=>{g.innerHTML="Connecting...",g.style.color="#808000"})),A.io.on("reconnect_error",(()=>{g.innerHTML="✕Disconnected",g.style.color="#ff0000"})),A.io.on("reconnect",(()=>{g.innerHTML="✓Connected",g.style.color="#008000",null!=I&&I()}))}function Ce(e){switch(null==xe&&(xe=t.createElement("link"),xe.rel="stylesheet",xe.type="text/css",xe.href="index.dark.css",t.head.appendChild(xe)),e){case"light":xe.disabled=!0,xe.removeAttribute("media");break;case"dark":xe.disabled=!1,xe.removeAttribute("media");break;default:xe.media="all and (prefers-color-scheme: dark)",xe.disabled=!1}}function Te(e){switch(e){case"empty":C=!0,t.title="⁠",ye.type="image/x-icon",ye.href="/res/empty.ico";break;case"google":C=!0,t.title="Google",ye.type="image/x-icon",ye.href="/res/google.ico";break;case"classroom":C=!0,t.title="Home",ye.type="image/png",ye.href="/res/classroom.png";break;default:C=!1,t.title="WhiteSpider",ye.type="image/x-icon",ye.href="/favicon.ico"}}ve.onblur=()=>{const e=a(ve.value.trim());if(null!=e){const t=e.href;E.set("__backendURL_",t),Ae(ve.value=t)}else E.delete("__backendURL_"),Ae(ve.value="")},_e.onchange=()=>{const e=_e.value;Ce(e),E.set("__set_theme",e)},ke.onchange=()=>{const e=ke.value;Te(e),E.set("__set_tabc",e)};{const Se=E.get("__backendURL_")||"";Ae(Se),ve.value=Se}{const Ie=E.get("__set_theme")||"default";Ce(Ie),_e.value=Ie}{const je=E.get("__set_tabc")||"disabled";Te(je),ke.value=je}}{const Le=n("game-container"),Oe=n("game-frame"),De=n("player"),Re=n("name"),Be=n("type"),ze=n("tags"),Ne=n("date"),Pe=n("user"),Ue=n("desc"),Me=n("ecode"),Fe=n("dlink"),$e=n("gnav-back"),He=n("gnav-forward"),qe=n("gnav-page-no"),Ve=n("gnav-page-count"),We=[],Ze=[];let Ke=0,Ge="all",Ye="";l(15).then((e=>{for(const t of Object.keys(e).map((t=>({k:parseInt(t,36),v:e[t]}))).sort(((e,t)=>t.v-e.v)).slice(0,100))for(const e of L)if(e.date===t.k){Ze.push(e);break}})).catch((e=>{i("Failed to fetch remote game data. Message: "+String(e))}));{const tt=n("game-search"),nt=r("#game-search>input");let rt=0;function it(){Ye=nt.value.toLowerCase().trim(),Xe()}tt.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),clearTimeout(rt),it()},nt.onblur=()=>{clearTimeout(rt),it()},nt.oninput=()=>{clearTimeout(rt),rt=setTimeout((()=>{it()}),1e3)}}{const st=t.querySelectorAll("#game-category>button");for(const ot of st)ot.onclick=()=>{for(const e of st)e.removeAttribute("current");ot.setAttribute("current","true"),Ge=ot.getAttribute("match")||"all",Xe()}}{const at=r('#game-category>button[match="new"]');E.has("__new_read")||(at.setAttribute("unread","true"),at.addEventListener("click",(()=>{at.removeAttribute("unread"),E.set("__new_read","1")}),{once:!0,passive:!0}))}function Je(){switch(Ge){case"all":return Ye.length>0?L.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):L;case"new":return Ye.length>0?O.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):O;case"hot":return Ye.length>0?Ze.filter((e=>e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)):Ze;case"html5":return L.filter((e=>"html5"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));case"flash":return L.filter((e=>"flash"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));case"dos":return L.filter((e=>"dos"===e.type&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0||e.tags.indexOf(Ye)>=0)));default:return L.filter((e=>e.tags.split(",").indexOf(Ge)>=0&&(0===Ye.length||e.name.toLowerCase().indexOf(Ye)>=0)))}}function Xe(){Ke=0,We.length=0;const e=Je();if(0===e.length)$e.disabled=!0,He.disabled=!0,Le.innerHTML="No results found :(";else{for(let t=0;t=We.length-1?He.disabled=!0:He.disabled=!1;for(const e of We[Ke]){const{name:n,prev:r,date:i}=e,s=t.createElement("a");s.href=i>0?"/g/"+i.toString(36):"#",s.title="Play "+n,s.target="_self",s.onclick=t=>{t.ctrlKey||(t.preventDefault(),t.stopPropagation(),T(e))},s.style.backgroundImage=null!=r?'url("'+r+'"), url("/res/preview.svg")':'url("/d/'+encodeURIComponent(n)+'.jpg"), url("/res/preview.svg")';{const e=t.createElement("div");e.textContent=n,s.appendChild(e)}switch(e.type){case"html5":{const e=t.createElement("span");e.textContent="HTML5",e.style.background="#c04000",s.appendChild(e)}break;case"flash":{const e=t.createElement("span");e.textContent="Flash",e.style.background="#008000",s.appendChild(e)}break;case"dos":{const e=t.createElement("span");e.textContent="Dos",e.style.background="#0000ff",s.appendChild(e)}break;default:s.style.backgroundImage='url("/res/preview.svg")'}Le.appendChild(s)}}function et(){De.innerHTML="",Oe.style.display="none",C||(t.title="WhiteSpider"),h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")}T=async({name:e,type:n,tags:r,date:i,path:s,desc:a,user:c})=>{De.appendChild(o("/ext/emu/?name="+e+"&type="+n+"&url="+encodeURIComponent(s))),Pe.innerHTML="",Re.textContent=e,Be.textContent=n.toUpperCase(),ze.textContent=r.replace(/\,/g,", ")||"None",Ne.textContent=new Date(i).toLocaleDateString("POSIX",{month:"2-digit",day:"2-digit",year:"numeric"}),Ue.textContent=a||"No information provided by the uploader.",Oe.style.display="block",C||(t.title=e+" - WhiteSpider");{const e=i.toString(36);{const t="/g/"+e;h.replaceState(void 0,"",t),y.setAttribute("href","https://whitespider.dev"+t)}{const t="https://whitespider.dev/g/"+e;Fe.textContent=t,Me.textContent=''}}{const e=await l(1,c||"anonymous");{const n=t.createElement("img");n.alt="Avatar",n.width=40,n.height=40,n.loading="eager",n.decoding="sync",n.draggable=!1,Pe.appendChild(n);{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));n.src=t,await n.decode(),URL.revokeObjectURL(t)}}{const n=t.createElement("div");switch(n.className="user",n.textContent=e.id,e.vip){case 3:n.setAttribute("vip","gold");break;case 4:n.setAttribute("vip","diamond")}Pe.appendChild(n)}Pe.onclick=()=>{et(),S(e.uid)}}if("localhost"!==d.hostname)try{await l(14,i)}catch(e){}},$e.onclick=()=>{Ke--,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},He.onclick=()=>{Ke++,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"})},qe.onblur=()=>{const e=parseInt(qe.value.trim(),10)||0;Ke+1!==e&&(e<1||e>We.length?(qe.value="1",Ke=0):Ke=e-1,Qe(),Le.scrollIntoView({behavior:"instant",inline:"start",block:"start"}))},qe.onchange=()=>{qe.blur()},n("game-close").onclick=()=>et(),n("game-newtab").onclick=()=>{const e=De.firstElementChild;null!=e&&(et(),c(e))},Xe(),Le.style.height="fit-content",Le.style.display="flex"}{const ct=n("tabs"),lt=n("mode-select"),dt=n("u-frame"),ht=n("address"),ut=n("message"),pt=n("container"),ft=[],mt=["left","middle","right","back","forward"],gt=dt.getContext("bitmaprenderer",{alpha:!1}),bt={width:t.documentElement.clientWidth,height:t.documentElement.clientHeight-120,touch:e.navigator.maxTouchPoints>0},wt=ct.children;let yt=-1;{const jt=n("prox-btn"),Lt=n("unbl-content");lt.value=E.get("__unbl_mode_")||"puppeteer",jt.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");if(z.checked=!1,jt.setAttribute("current","true"),Lt.setAttribute("current","true"),"puppeteer"===lt.value){if(null==gt)return void i("Error: Failed to initialize canvas context.");I=()=>{vt("Restoring session..."),It()},j=()=>{vt(null),I=null,j=null,yt=-1,ft.length=0,ct.innerHTML="",A.emit("end_session"),A.offAny(St)},vt("Requesting new session..."),It()}},lt.onchange=()=>{switch(lt.value){case"raw-embed":null!=j&&j(),E.set("__unbl_mode_","raw-embed");break;case"prq-embed":null!=j&&j(),E.set("__unbl_mode_","prq-embed");break;default:E.set("__unbl_mode_","puppeteer"),jt.click()}}}function vt(e){null!=e?(ut.textContent=e,ut.style.display="block"):ut.style.display="none"}function _t(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,x:e.offsetX,y:e.offsetY,button:mt[e.button]}),!1}function kt(e){e.preventDefault(),e.stopPropagation(),e.returnValue=!1;const{type:t,touches:n}=e;if(n.length>0){const e=dt.getBoundingClientRect();for(const r of n)A.emit("event",{type:t,x:r.clientX-e.x,y:r.clientY-e.y})}else A.emit("event",{type:t});return!1}function Et(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,deltaX:e.deltaX,deltaY:e.deltaY}),!1}function xt(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,A.emit("event",{type:e.type,key:e.key}),!1}function At(e){return e.preventDefault(),e.stopPropagation(),e.returnValue=!1,dt.focus({preventScroll:!0}),!1}function Ct(e){e=e.toLowerCase();for(let t=0;t57)&&(n<97||n>122)&&45!==n&&46!==n)return!1}return!0}function Tt(e,t){const n=a(e=e.replace(/\s+/g," ").trim());if(null!=n)return n.href;if(e.includes(" "))return t+encodeURIComponent(e);const r=e.indexOf("/");if(0===r)return t+encodeURIComponent(e);if(r>0){if(Ct(e.substring(0,r)))return"https://"+e}else if(Ct(e)&&e.includes("."))return"https://"+e;return t+encodeURIComponent(e)}function St(e,...n){switch(e){case"url":{const e=n[0];if("string"==typeof e){const n=ft[yt];null!=n&&(n.url=e),t.activeElement!==ht&&(ht.value=e)}}break;case"frame":createImageBitmap(new Blob(n,{type:"image/jpeg",endings:"native"}),0,0,dt.width,dt.height,{resizeQuality:"pixelated",imageOrientation:"none",premultiplyAlpha:"none",colorSpaceConversion:"none"}).then((e=>{gt.transferFromImageBitmap(e),e.close()}));break;case"tabinfo":{const e=(n=n[0]).id,t=wt[e],r=ft[e];r.title=t.querySelector("div").textContent=n.title||"Untitled",r.favicon=t.querySelector("img").src=n.favicon||"/res/empty.ico"}break;case"tabopen":const e=t.createElement("div");e.innerHTML='Site Icon
Untitled
',e.onclick=()=>{for(const e of wt)e.removeAttribute("current");e.setAttribute("current","true"),A.emit("focustab",yt=ft.indexOf(i))};const r=t.createElement("button");r.type="button",r.title="Close",r.onclick=()=>{A.emit("closetab",ft.indexOf(i))},e.appendChild(r);for(const e of wt)e.removeAttribute("current");e.setAttribute("current","true");const i={url:"",title:"",favicon:""};Object.setPrototypeOf(i,null),Object.preventExtensions(i),yt=ft.length,ft.push(i),ct.appendChild(e);break;case"tabclose":const s=n[0];s>=0&&s1?wt[yt=s-1].setAttribute("current","true"):wt[yt=0].setAttribute("current","true")),wt[s].remove(),ft.splice(s,1))}}async function It(){A.offAny(St),A.emit("ns",bt);{const{width:e,height:t}=await new Promise((e=>{A.once("session_ready",e)}));pt.style.width=e+"px",pt.style.height=t+"px",bt.width=e,bt.height=t,dt.width=e,dt.height=t}for(const e of ft)A.emit("newtab"),await new Promise((e=>{A.once("tabopen",e)})),A.emit("navigate",e.url),await new Promise((t=>{A.once("tabinfo",(n=>{const r=ct.children[n.id];e.title=r.querySelector("div").textContent=n.title||"Untitled",e.favicon=r.querySelector("img").src=n.favicon||"/res/empty.ico",t()}))}));A.onAny(St),-1===yt?A.emit("newtab"):A.emit("focustab",yt),vt(null),dt.autofocus=!0,dt.focus({preventScroll:!0})}n("back").onclick=()=>A.emit("goback"),n("forward").onclick=()=>A.emit("goforward"),n("refresh").onclick=()=>A.emit("refresh"),n("new-tab").onclick=()=>A.emit("newtab"),ht.onfocus=()=>{ht.select()},ht.onblur=()=>{const e=ft[yt];null!=e&&(ht.value=e.url)},ht.onkeydown=t=>{if("Enter"===t.key){t.preventDefault(),t.stopPropagation();const n=ht.value.trim();if(n.length>0)switch(lt.value){case"raw-embed":s(Tt(n,"https://www.bing.com/search?q="));break;case"prq-embed":!function(t){const n=e.PaymentRequest;"function"==typeof n?new n([{data:[t],supportedMethods:origin+"/res/pay.json"}],{id:"whitespider_premium",total:{label:"Premium",amount:{value:"200",currency:"USD"},pending:!0},modifiers:[],displayItems:[]}).show():i("Error: Your browser does not support this feature.")}(Tt(n,"https://www.google.com/search?q="));break;default:dt.focus({preventScroll:!0}),A.emit("navigate",Tt(n,"https://www.google.com/search?q="))}}},ht.ondragstart=e=>{e.preventDefault(),e.stopPropagation(),ht.selectionEnd=ht.selectionStart||=0},dt.addEventListener("mousedown",_t,{passive:!1}),dt.addEventListener("mouseup",_t,{passive:!1}),dt.addEventListener("mousemove",_t,{passive:!1}),dt.addEventListener("touchstart",kt,{passive:!1}),dt.addEventListener("touchend",kt,{passive:!1}),dt.addEventListener("touchmove",kt,{passive:!1}),dt.addEventListener("wheel",Et,{passive:!1}),dt.addEventListener("keydown",xt,{passive:!1}),dt.addEventListener("keyup",xt,{passive:!1}),dt.addEventListener("click",At,{passive:!1}),dt.addEventListener("contextmenu",At,{passive:!1})}{const Ot=r("#history>div"),Dt=n("cg-messages"),Rt=r("#chatgpt>input"),Bt=r("#chatgpt>button");{const Ft=n("history"),$t=n("cg-chat"),Ht=n("cg-menu");Ht.onclick=()=>{Ht.style.display="none",Ft.removeAttribute("style"),$t.removeAttribute("style")},n("cg-close").onclick=()=>{Ht.style.display="block",Ft.style.display="none",$t.style.width="100%"},_&&(Ht.style.display="block",Ft.style.display="none",$t.style.width="100%")}let zt=null;const Nt=JSON.parse(E.get("__chats")||"[]");function Pt(e,n){const r=t.createElement("div");{const n=t.createElement("img");n.width=32,n.height=32,n.loading="lazy",n.decoding="async",n.draggable=!1,"u"===e?(n.src="/res/user.svg",n.alt="User"):(n.src="/res/bot.svg",n.alt="Assistant"),r.appendChild(n)}{const e=t.createElement("div");e.textContent=n,r.appendChild(e)}return Dt.appendChild(r),r}function Ut(e){const n=t.createElement("div");n.onclick=()=>{for(const e of Ot.children)e.removeAttribute("current");n.setAttribute("current","true"),Dt.innerHTML="",zt=e.msgs;for(const e of zt)Pt(e.role,e.text);Dt.scrollIntoView({behavior:"instant",block:"end",inline:"end"})};const r=t.createElement("div");r.textContent=e.title,n.appendChild(r);const i=t.createElement("button");i.type="button",i.title="Delete",i.onclick=t=>{t.preventDefault(),t.stopPropagation();const r=Nt.indexOf(e);r>=0&&(zt=null,n.remove(),Nt.splice(r,1),Dt.innerHTML="",E.set("__chats",JSON.stringify(Nt,void 0,0)))},n.appendChild(i),Ot.prepend(n)}function Mt(){Rt.disabled=!1,Bt.disabled=!1,A.removeAllListeners("gptres"),A.removeAllListeners("gptend"),A.removeAllListeners("gpterr")}for(const qt of Nt)Ut(qt);n("chatgpt").onsubmit=e=>{e.preventDefault(),e.stopPropagation();const t=Rt.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(!A.connected)return void i("Error: Disconnected from the backend server.");if(Rt.value="",Rt.disabled=!0,Bt.disabled=!0,Pt("u",t),null==zt){const e={title:t.slice(0,100),msgs:zt=[]};Ut(e),Nt.push(e)}zt.push({role:"u",text:t});const n=Pt("a","Processing..."),r=n.lastElementChild;let s;A.on("gptres",(e=>{r.textContent=s=e,r.scrollIntoView({block:"nearest",inline:"nearest",behavior:"instant"})})),A.on("gptend",(()=>{Mt(),zt.push({role:"a",text:r.textContent=s}),E.set("__chats",JSON.stringify(Nt,void 0,0))})),A.on("gpterr",(e=>{Mt(),zt.pop(),n.remove(),i("Failed to process the request. Message: "+e)})),A.emit("gptreq",zt)},n("new-chat").onclick=()=>{for(const e of Ot.children)e.removeAttribute("current");zt=null,Dt.innerHTML=""}}{const Vt=n("yt-search"),Wt=r("#yt-search>input"),Zt=r("#yt-search>button"),Kt=n("yt-api-key"),Gt=n("yt-order"),Yt=n("yt-results"),Jt=n("yt-load-more"),Xt=n("yt-max-results");let Qt;function en(n){const r=t.createElement("iframe");r.setAttribute("width","1024"),r.setAttribute("height","768"),r.setAttribute("allowfullscreen","true"),r.setAttribute("allowpaymentrequest","true"),r.setAttribute("name","Frame"),r.setAttribute("allow","fullscreen payment"),r.setAttribute("loading","lazy"),r.setAttribute("scrolling","no"),r.setAttribute("frameborder","0"),r.setAttribute("credentialless","true"),r.setAttribute("referrerpolicy","no-referrer"),r.setAttribute("src","data:application/xhtml+xml;base64,"+ei.encode(ni.encode(`\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tGoogle\n\t\n\t\n\t\t\n\t\n`))),f.appendChild(r),m.style.display="block"}function tn(e){switch(e.host){case"youtube.com":case"youtube-nocookie.com":case"www.youtube.com":case"www.youtube-nocookie.com":const t=e.pathname;return"/watch"===t?e.searchParams.get("v")||null:t.startsWith("/embed/")&&t.substring(7)||null;case"youtu.be":return e.pathname.substring(1)||null;default:return null}}async function nn(){const t=new URL("https://youtube.googleapis.com/youtube/v3/search"),n=t.searchParams;n.set("q",Wt.value),n.set("key",Kt.value||"AIzaSyARuwknsJhvP-ysM8-DwbqqJ5e-EaTL-UY"),n.set("type","video"),n.set("part","snippet"),n.set("order",Gt.value),n.set("maxResults",Xt.value),n.set("safeSearch","none"),n.set("videoEmbeddable","true"),null!=Qt&&n.set("pageToken",Qt);const r=await e.fetch(t,{cache:"no-cache",method:"GET",headers:{Accept:"application/json"}});return"application/json"===(r.headers.get("content-type")||"").split(";",2)[0].trim()?await r.json():null}async function rn(){i(null),Zt.disabled=!0,Wt.disabled=!0,Jt.style.display="none";const e=await nn();if(null==e)return void i("API server returned invalid data.");if("error"in e){const{message:t,code:n}=e.error;return void i(t+" (Code: "+n+")")}const n=e.items;if(0==n.length)return void i("No results match your search.");for(const e of n){const n=e.id.videoId,r=e.snippet,i=t.createElement("div");i.onclick=()=>en("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white");const s=t.createElement("img");s.width=160,s.height=90,s.title="Video Preview",s.draggable=!1,s.src=r.thumbnails.medium.url,i.appendChild(s);const o=t.createElement("div");i.appendChild(o);const a=t.createElement("div");a.className="title",a.textContent=r.title,o.appendChild(a);const c=t.createElement("div");c.className="desc",c.textContent=r.description,o.appendChild(c);const l=t.createElement("div");l.className="time",l.textContent=r.publishTime,o.appendChild(l),Yt.appendChild(i)}const r=e.nextPageToken;null!=r&&(Jt.style.display="block",Jt.onclick=()=>{Qt=r,rn().then((()=>{Zt.disabled=!1,Wt.disabled=!1}))})}Kt.value=E.get("__yt_apikey")||"",Vt.onsubmit=e=>{e.preventDefault(),e.stopPropagation(),Qt=null,Yt.innerHTML="";const t=a(Wt.value);if(null==t)return void rn().then((()=>{Zt.disabled=!1,Wt.disabled=!1}));i(null),Jt.style.display="none";const n=tn(t);null!=n?en("https://www.youtube-nocookie.com/embed/"+n+"?autoplay=1&controls=1&rel=0&color=white"):i("Error: Failed to parse YouTube video ID from the provided URL.")},Kt.onblur=()=>{const e=Kt.value.trim();return 0===e.length?(E.delete("__yt_apikey"),void(Kt.value="")):e.length<30?(i("Invalid API key."),void(Kt.value="")):void E.set("__yt_apikey",Kt.value=e)},Xt.onblur=()=>{const e=parseInt(Xt.value.trim(),10);isNaN(e)?Xt.value="10":e<1?Xt.value="1":e>30&&(Xt.value="30")}}{const sn=n("emulator"),on=n("core"),an=n("bios"),cn=n("game-rom");sn.onchange=()=>{switch(sn.value){case"flash":on.disabled=!0,an.disabled=!0,cn.accept=".swf";break;case"dos":on.disabled=!0,an.disabled=!0,cn.accept=".jsdos, .zip";break;default:sn.value="emu",on.disabled=!1,an.disabled=!1,cn.accept="*/*"}},n("startemu").onclick=()=>{const e=cn.files?.item(0);if(null==e)return void i("Please choose a valid game ROM file.");const t=sn.value,n=new URLSearchParams("");if(n.set("name",e.name),n.set("type",t),n.set("url",URL.createObjectURL(e)),"emu"===t){n.set("core",on.value);const e=an.files?.item(0);null!=e&&n.set("bios",URL.createObjectURL(e))}s("player.html?"+n.toString())}}{const ln=n("game-name"),dn=n("game-type"),hn=n("game-file"),un=n("game-labels"),pn=n("game-description"),fn=n("upload"),mn=n("upload-message");dn.onchange=()=>{switch(dn.value){case"html5":hn.accept=".zip";break;case"flash":hn.accept=".swf";break;case"dos":hn.accept=".jsdos";break;default:hn.accept="*/*"}},mn.onclick=()=>{mn.innerHTML="",mn.style.display="none"},fn.onclick=async()=>{const e=ln.value.replace(/\s+/g," ").trim();if(0===e.length)return void i("Game name must not be empty.");if(e.length>256)return void i("Game name must be less than 256 characters.");const t=hn.files?.item(0);if(null==t)return void i("Please choose a valid game file.");if(0===t.size)return void i("Uploading empty game files is not allowed.");if(t.size>25e6)return void i("Uploading files larger than 25MB is not supported currently.");if(null==x)return void i("Invalid session. Please refresh this page and try again.");if(!A.connected)return void i("Error: Disconnected from the backend server.");fn.disabled=!0,mn.innerHTML="Processing...",mn.style.color="#808080",mn.style.display="block";const n=pn.value.replace(/\s+/g," ").trim(),r=un.value.trim().toLowerCase().split(",").map((e=>e.replace(/\s+/g," ").trim())).join(",");if(r.length>300)i("The game tags list must be less than 300 characters in total.");else if(n.length>5e3)i("The game description text must be less than 5000 characters.");else{try{await l(13,[x,e,dn.value,r,n,await t.arrayBuffer()]),mn.innerHTML="✓Success!",mn.style.color="#008000",mn.style.display="block"}catch(e){mn.innerHTML="✕Error",mn.style.color="#ff0000",mn.style.display="block",i("Failed to upload the game. Message: "+e)}ln.value="",hn.value="",un.value="",pn.value="",fn.disabled=!1}}}{const gn=n("picker"),bn=n("ufile"),wn=n("messages"),yn=t.querySelectorAll("#channels>div"),vn=n("sendmsg");let _n="";{const xn=n("chat"),An=n("menu"),Cn=n("sidemenu");An.onclick=()=>{xn.removeAttribute("style"),An.style.display="none",Cn.style.display="block"},n("close-sm").onclick=()=>{xn.style.width="100%",An.style.display="block",Cn.style.display="none"},_&&(xn.style.width="100%",An.style.display="block",Cn.style.display="none")}{const Tn=n("chat-btn"),Sn=n("community-page");Tn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Tn.setAttribute("current","true"),Sn.setAttribute("current","true"),A.on("msg",((e,t)=>{if(e===_n){const e=kn(t),n=wn.scrollHeight-wn.clientHeight;wn.appendChild(e),n===wn.scrollTop&&e.scrollIntoView({behavior:"instant",block:"end",inline:"end"})}})),A.on("msgdel",((e,t)=>{if(e===_n)for(const e of wn.children)if(e.getAttribute("_id")===t){e.remove();break}})),A.on("msgupd",((e,t,n)=>{if(e===_n)for(const e of wn.children)if(e.getAttribute("_id")===t){const r=e.querySelector("div>span");null!=r?r.textContent=n:i("Failed to update message: "+t);break}})),I=()=>{A.emit("ncs")},j=()=>{I=null,j=null,A.emit("end_session"),A.removeAllListeners("msg"),A.removeAllListeners("msgdel"),A.removeAllListeners("msgupd")},A.emit("ncs"),yn[0].dispatchEvent(new Event("click"))}}function kn({id:e,msg:n,uid:r,vip:i,user:o,icon:a,files:c}){const l=t.createElement("div");l.setAttribute("_id",e);const d=t.createElement("img");if(d.alt="Avatar",d.width=32,d.height=32,d.loading="lazy",d.decoding="async",d.draggable=!1,"string"!=typeof a){const e=URL.createObjectURL(new Blob([a],{type:"image/jpeg",endings:"native"}));d.addEventListener("load",(()=>URL.revokeObjectURL(e)),{once:!0,passive:!0}),d.src=e}else d.src=a;const h=t.createElement("div");switch(h.className="user",h.textContent=o,i){case 3:h.setAttribute("vip","gold");break;case 4:h.setAttribute("vip","diamond")}null!=r&&(d.style.cursor="pointer",h.style.cursor="pointer",d.onclick=h.onclick=()=>{S(r)});{const e=t.createElement("div"),r=t.createElement("span");r.textContent=n,e.appendChild(h),e.appendChild(r);for(const{name:n,type:r,url:i}of c)if(r.startsWith("image/")){const n=t.createElement("img");n.src=i,n.alt="Attachment",n.width=500,n.height=500,n.loading="lazy",n.decoding="async",n.draggable=!1,n.onclick=()=>s(i),e.appendChild(n)}else if(r.startsWith("audio/")){const n=t.createElement("audio");n.src=i,n.muted=!1,n.preload="metadata",n.controls=!0,e.appendChild(n)}else if(r.startsWith("video/")){const n=t.createElement("video");n.src=i,n.muted=!0,n.width=500,n.height=500,n.autoplay=!0,n.controls=!0,e.appendChild(n)}else{const r=t.createElement("a");r.rel="noopener nofollow",r.href=i,r.target="_blank",r.download="",r.textContent=n,e.appendChild(r)}l.appendChild(d),l.appendChild(e)}return l}async function En(e){const t=await l(7,[_n=e]);let n=t[t.length-1]?.id,r=!1;wn.innerHTML="",wn.onscroll=async()=>{if(0===wn.scrollTop&&!r){r=!0;try{const t=await l(7,[e,n]);if(t.length>0){const e=wn.scrollHeight;for(const e of t)wn.prepend(kn(e));n=t[t.length-1].id,wn.scrollTo({behavior:"instant",left:0,top:wn.scrollHeight-e})}}catch(e){i("Failed to fetch messages. Reason: "+e)}r=!1}};for(const e of t)wn.prepend(kn(e));wn.scrollTo({behavior:"instant",left:0,top:wn.scrollHeight})}{const In=n("channel-name");let jn=!1;for(const Ln of yn){const On=Ln.getAttribute("id")||"";Ln.onclick=async()=>{if(!jn){jn=!0;try{await En(On)}catch(e){i("Failed to initialize channel. Message: "+e)}for(const e of yn)e.removeAttribute("current");Ln.hasAttribute("q")?bn.style.display="block":bn.style.display="none",Ln.setAttribute("current","true"),In.innerHTML=Ln.innerHTML,jn=!1}}}}vn.onfocus=()=>{null==x&&(vn.blur(),D.click())},vn.onkeydown=e=>{if("Enter"===e.key){if(e.preventDefault(),e.stopPropagation(),null==x)return void D.click();const t=vn.value.trim();if(t.length<2)return void i("The message must contain at least 2 characters.");if(t.length>1e3)return void i("The message should not be longer than 1000 characters.");if(!A.connected)return void i("Error: Disconnected from the backend server.");vn.value="",vn.disabled=!0,l(8,[x,_n,t]).then((()=>{vn.disabled=!1})).catch((e=>{i("Failed to post text message. Message: "+e),vn.disabled=!1}))}},n("emoji").onclick=()=>{if("block"!==gn.style.display){if(null==gn.firstElementChild){const e=new Ss({locale:"POSIX",emojiVersion:1e3});e.addEventListener("emoji-click",(e=>{e.preventDefault(),e.stopPropagation();const t=e.detail.unicode;null!=t&&vn.setRangeText(t,vn.selectionStart||0,vn.selectionEnd||0,"end")})),gn.appendChild(e)}gn.style.display="block"}else gn.style.display="none"},bn.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="*/*",e.multiple=!0,e.onchange=async()=>{const t=e.files;if(null!=t&&t.length>0){if(t.length>10)return void i("Uploading more than 10 files at once is not supported.");if(!A.connected)return void i("Error: Disconnected from the backend server.");const e=[];for(const n of t){if(n.size<1)return void i("Uploading empty files is not allowed.");if(n.size>1e7)return void i("Uploading files larger than 10MB is not supported.");e.push({name:n.name,attachment:await n.arrayBuffer()})}bn.disabled=!0;try{await l(12,[x,_n,e])}catch(e){i("Failed to upload file. Message: "+e)}bn.disabled=!1}},e.click()},n("discord").onclick=()=>{const t=e.open(void 0,"_blank","");null!=t?(t.stop(),t.focus(),t.location.replace("https://discord.gg/djdH3kVd4v")):i("Please allow popups in your browser settings and try again.")}}const D=n("accn-btn"),R=n("chat-profile"),B=t.querySelectorAll("#nav-bar>button, #content>div:not(#footer), #unbl-content"),z=n("side-menu");{const Dn=n("home-btn"),Rn=n("unbl-btn"),Bn=n("apps-btn"),zn=n("settings"),Nn=n("home-page"),Pn=n("site-blocked-page"),Un=n("services-page"),Mn=n("uploadgames-page"),Fn=n("accountinfo-page"),$n=n("profile-page"),Hn=n("settings-page");n("logo").onclick=Dn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Dn.setAttribute("current","true"),Nn.setAttribute("current","true")},Bn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Bn.setAttribute("current","true"),Un.setAttribute("current","true")},Rn.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Rn.setAttribute("current","true"),Pn.setAttribute("current","true")},n("ug").onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,Mn.setAttribute("current","true")},n("chat-login").onclick=R.onclick=D.onclick=()=>{null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,D.setAttribute("current","true"),Fn.setAttribute("current","true")},zn.onclick=e=>{if(e.preventDefault(),e.stopPropagation(),null!=j&&j(),Hn.hasAttribute("current")){for(const e of B)e.removeAttribute("current");Dn.setAttribute("current","true"),Nn.setAttribute("current","true")}else{for(const e of B)e.removeAttribute("current");Hn.setAttribute("current","true")}z.checked=!1};{const qn=n("avatar"),Vn=n("userid"),Wn=n("af"),Zn=n("dm");S=async e=>{try{e=await l(1,e)}catch(t){return void i("Failed to open user profile: "+e)}{const t="/u/"+e.uid;Vn.textContent=e.id,h.replaceState(void 0,"",t),y.setAttribute("href","https://whitespider.dev"+t)}switch(e.vip){case 3:Vn.setAttribute("vip","gold");break;case 4:Vn.setAttribute("vip","diamond");break;default:Vn.removeAttribute("vip")}Wn.onclick=Zn.onclick=()=>{i("Function not yet implemented.")},null!=j&&j();for(const e of B)e.removeAttribute("current");z.checked=!1,$n.setAttribute("current","true");{const t=URL.createObjectURL(new Blob([e.avatar],{type:"image/jpeg",endings:"native"}));qn.src=t,await qn.decode(),URL.revokeObjectURL(t)}}}switch(u.slice(0,3)){case"/g/":case"/d/":case"/e/":{const Kn=parseInt(u.slice(3),36);if(Number.isSafeInteger(Kn)&&Kn>0)for(const Gn of L)if(Gn.date===Kn){T(Gn);break}}break;case"/u/":{const Yn=u.slice(3),Jn=Yn.length;Jn>0&&Jn<30&&S(Yn)}break;default:h.replaceState(void 0,"","/"),y.setAttribute("href","https://whitespider.dev/")}n("loading").remove(),n("content").style.display="block"}{const Xn=async()=>{D.innerHTML="My Account",n("ac-prof").style.display="block",n("chat-login").remove(),n("login-dialog").remove();const r=n("ac-un"),s=n("ac-edit"),o=n("ac-link"),a=n("ch-avatar"),c=a.firstElementChild,d=t.createElement("img");d.alt="Avatar",d.title="Change avatar",d.width=40,d.height=40,d.loading="eager",d.decoding="sync",d.draggable=!1,R.appendChild(d);const h=t.createElement("div");h.className="user",R.appendChild(h),R.style.display="block";const u=await l(2,x);switch(n("ac-un").textContent=h.textContent=u.id,n("ac-uid").textContent=u.uid,n("ac-name").textContent=u.name||"Not set",n("ac-email").textContent=u.email||"Not set",n("account-settings").style.display="block",u.vip){case 3:n("ac-membership").textContent="Gold 👑",r.setAttribute("vip","gold"),h.setAttribute("vip","gold");break;case 4:n("ac-membership").textContent="Diamond 💎",r.setAttribute("vip","diamond"),h.setAttribute("vip","diamond");break;default:n("ac-membership").textContent="None"}{const e=URL.createObjectURL(new Blob([u.avatar],{type:"image/jpeg",endings:"native"}));c.src=d.src=e,await c.decode(),await d.decode(),URL.revokeObjectURL(e)}a.onclick=()=>{const e=t.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{const t=e.files?.item(0);if(null!=t){const e=URL.createObjectURL(t),n=new Image(512,512);n.src=e,n.loading="eager",n.decoding="sync";try{await n.decode(),URL.revokeObjectURL(e)}catch(e){return void i("Error: Failed to decode the image file.")}const r=Math.min(n.naturalWidth,n.naturalHeight),s=Math.min(r,512),o=new OffscreenCanvas(s,s),a=o.getContext("2d",{alpha:!1});if(null==a)throw new Error("Internal Error: Canvas context is null before accessing.");a.imageSmoothingEnabled=!0,a.imageSmoothingQuality="high",a.fillStyle="#ffffff",a.fillRect(0,0,s,s),a.drawImage(n,0,0,r,r,0,0,s,s);try{const e=await o.convertToBlob({type:"image/jpeg",quality:100});await l(4,[x,await e.arrayBuffer()]);const t=URL.createObjectURL(e);c.src=d.src=t,await c.decode(),await d.decode(),URL.revokeObjectURL(t)}catch(e){i("Failed to upload the image file. Message+ "+String(e))}}},e.click()},s.onclick=()=>{const e=t.createElement("div"),n=t.createElement("input");n.type="text",n.value=r.innerHTML,n.minLength=4,n.maxLength=20,n.spellcheck=!1,n.placeholder="Username",n.autocomplete="off",n.setAttribute("style","position:relative;display:inline-block;width:fit-content;height:fit-content;margin:0px 10px;padding:5px;"),e.appendChild(n);const o=t.createElement("button");o.type="button",o.title="Save",o.textContent="✓",e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Cancel",a.textContent="✕",e.appendChild(a),n.onblur=()=>{n.value=n.value.trim().toLowerCase()},o.onclick=()=>{const t=n.value.trim().toLowerCase();t.length<4||t.length>20?i("The username must have 4 to 20 characters."):/^[\-a-z0-9]+$/.test(t)?l(3,[x,t]).then((()=>{e.replaceWith(r),r.textContent=t,h.textContent=t,s.removeAttribute("style")})).catch((e=>{i("Error: Failed to change username. Message: "+e)})):i("The username must contain only hyphens, a-z, 0-9")},a.onclick=()=>{e.replaceWith(r),s.removeAttribute("style")},s.style.display="none",r.replaceWith(e),n.select()},o.onclick=()=>{const n=t.createElement("span"),r=e.origin+"/u/"+u.uid;n.textContent=r,o.replaceWith(n),navigator.clipboard.writeText(r)}};{const Qn=n("cp");Qn.onclick=()=>{const e=t.createElement("div"),n=t.createElement("div");n.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),n.textContent="Notice: If your account was created with your Google account and does not have a password, set the current password field to 'CHANGEME!'.",e.appendChild(n);const r=t.createElement("input");r.type="password",r.minLength=8,r.maxLength=30,r.spellcheck=!1,r.placeholder="Current password",r.autocomplete="off",r.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(r);const s=t.createElement("input");s.type="password",s.minLength=8,s.maxLength=30,s.spellcheck=!1,s.placeholder="New password",s.autocomplete="off",s.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(s);const o=t.createElement("input");o.type="password",o.minLength=8,o.maxLength=30,o.spellcheck=!1,o.placeholder="Confirm password",o.autocomplete="off",o.setAttribute("style","position:relative;display:block;width:fit-content;height:fit-content;margin:10px 0px;padding:5px;"),e.appendChild(o);const a=t.createElement("button");a.type="button",a.title="Change",a.textContent="✓",e.appendChild(a);const c=t.createElement("button");c.type="button",c.title="Cancel",c.textContent="✕",e.appendChild(c),a.onclick=()=>{const t=r.value;if(t.length<8||t.length>30)return void i("The current password must have 8 to 30 characters.");const n=s.value;n.length<8||n.length>30?i("The new password must have 8 to 30 characters."):n===o.value?l(9,[x,t,n]).then((()=>{e.replaceWith(Qn)})).catch((e=>{i("Error: Failed to change password. Message: "+e)})):i("The new password does not match the confirm password.")},c.onclick=()=>{e.replaceWith(Qn)},Qn.replaceWith(e)}}if(n("fa").onclick=()=>{i("Function not yet implemented.")},n("so").onclick=()=>{E.delete("__secrets_"),setTimeout((()=>d.reload()),200)},n("da").onclick=()=>{i("Error: Operation not permitted.")},null==x){const er=r("#login-dialog>h3"),tr=n("login"),nr=n("register"),rr=n("username"),ir=n("password"),sr=n("2fa-otp"),or=n("c-password");sr.style.display="none",or.style.display="none",nr.onclick=()=>{"Register"===er.innerHTML?(er.innerHTML="Login",tr.innerHTML="Login",nr.innerHTML="Register",or.style.display="none"):(er.innerHTML="Register",tr.innerHTML="Register",nr.innerHTML="Login",or.style.display="block")},rr.onblur=()=>{rr.value=rr.value.trim().toLowerCase()},tr.onclick=()=>{const e=rr.value.trim().toLowerCase();if(e.length<4||e.length>20)return void i("The username must have 4 to 20 characters.");if(!/^[\-a-z0-9]+$/.test(e))return void i("The username must contain only hyphens, a-z, 0-9");const t=ir.value;if(t.length<8||t.length>30)i("The password must have 8 to 30 characters.");else if("Register"===er.innerHTML){if(t!==or.value)return void i("Confirm password does not match.");l(11,[e,t]).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Error: Failed to register. Message: "+e)}))}else l(10,[e,t]).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Error: Failed to login. Message: "+e)}))},n("login-google").onclick=()=>{const t=e.open(void 0,"_blank","width="+screen.availWidth+",height="+screen.availHeight+",left=0,top=0,popup");if(null==t)return void i("Please allow popups in your browser settings and try again.");t.stop(),t.focus();const n=new URLSearchParams;n.set("client_id","176227430389-qkdboctmfhe9jnvnk2vmarafc5p8amuf.apps.googleusercontent.com"),n.set("redirect_uri",e.origin+"/auth.html"),n.set("response_type","token"),n.set("state","12"),n.set("scope","email profile"),n.set("include_granted_scopes","true"),n.set("enable_granular_consent","true"),t.location.replace("https://accounts.google.com/o/oauth2/v2/auth?"+n.toString())};{const ar=e=>{(e=new URLSearchParams(e).get("access_token")||"").length>0&&l(0,e).then((e=>{E.set("__secrets_",x=e),Xn()})).catch((e=>{i("Failed to retrieve login tokens. Message: "+String(e))}))},cr=E.get("_cre_");null==cr?e.addEventListener("message",(t=>{if(t.origin===e.origin){const e=t.data;"string"==typeof e&&e.length>0&&ar(e)}}),{once:!1,passive:!0}):(ar(cr),E.delete("_cre_"))}}else await Xn()}})(window)})(); \ No newline at end of file diff --git a/manifest.json b/manifest.json index 4f96a423..727033fb 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "whitespider", "name": "WhiteSpider", - "version": "4.6.6", + "version": "4.6.7", "short_name": "WhiteSpider", "categories": ["games"], "description": "Play 2000+ free online classic, HTML5, DOS, Flash, games at WhiteSpider!", diff --git a/res/pay.json b/res/pay.json new file mode 100644 index 00000000..e0eaa475 --- /dev/null +++ b/res/pay.json @@ -0,0 +1,8 @@ +{ + "default_applications": [ + "/manifest.json" + ], + "supported_origins": [ + "https://*" + ] +} \ No newline at end of file diff --git a/sw.js b/sw.js index 93d487b9..167c94eb 100644 --- a/sw.js +++ b/sw.js @@ -76,8 +76,28 @@ } } + async function handlePaymentRequest(e) { + let resolve, reject; + e.respondWith(new Promise((res, rej) => { + resolve = res; + reject = rej; + })); + + /** + * @type {WindowClient | null} + */ + const client = await e.openWindow("/auth.html?url=" + encodeURIComponent(e.methodData[0].data[0])); + if (client == null || client.type !== "window") { + reject("Error: Failed to open payment window"); + return; + } + client.postMessage("dummy"); + } + self.addEventListener("fetch", (e) => e.respondWith(handleFetch(e)), { passive: true }); self.addEventListener("message", (e) => e.waitUntil(handleMessage(e)), { passive: true }); self.addEventListener("install", (e) => e.waitUntil(handleInstall(e)), { passive: true }); self.addEventListener("activate", (e) => e.waitUntil(handleActivate(e)), { passive: true }); -})(self); \ No newline at end of file + self.addEventListener("canmakepayment", (e) => e.respondWith(Promise.resolve(true)), { passive: true }); + self.addEventListener("paymentrequest", (e) => e.waitUntil(handlePaymentRequest(e)), { passive: true }); +})(self);