openmausbot 0.1.94 → 0.1.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{DesktopViewer-bxM7NV3N.js → DesktopViewer-BwWpc4RK.js} +1 -1
- package/dist/assets/{abnfDiagram-O67JEVCF-BhMdJhRJ.js → abnfDiagram-O67JEVCF-jsQkIqTn.js} +1 -1
- package/dist/assets/{arc-B5itKDcx.js → arc-7kei4Hsu.js} +1 -1
- package/dist/assets/{architectureDiagram-NJMV4G6O-C5d7UY6U.js → architectureDiagram-NJMV4G6O-CRWDFDMq.js} +1 -1
- package/dist/assets/{blockDiagram-BEXU5L5S-BrZIhMmu.js → blockDiagram-BEXU5L5S-CTKW_IKs.js} +1 -1
- package/dist/assets/{c4Diagram-YGBWAQC7-7I0ArfbD.js → c4Diagram-YGBWAQC7-BBTW7-6M.js} +1 -1
- package/dist/assets/channel-DS2NbT5x.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-BnEsyN36.js → chunk-2Q5K7J3B-M_Ox-MkD.js} +1 -1
- package/dist/assets/{chunk-3FUC2YCW-BXATQ52s.js → chunk-3FUC2YCW-D2YiN-Ud.js} +2 -2
- package/dist/assets/{chunk-5VM5RSS4-B0BpTkEx.js → chunk-5VM5RSS4-BmVYJ0f8.js} +1 -1
- package/dist/assets/{chunk-GTNCS2PH-BtLTz6FR.js → chunk-GTNCS2PH-BtiLVVnZ.js} +1 -1
- package/dist/assets/{chunk-GWA4HPMP-D6gcZOYt.js → chunk-GWA4HPMP-DFYSb6J6.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-DCLrosvf.js → chunk-JWPE2WC7-mknKBzgV.js} +1 -1
- package/dist/assets/{chunk-NETBCI7D-B9JsknV9.js → chunk-NETBCI7D-DgSYGiOu.js} +1 -1
- package/dist/assets/{chunk-WEXAMYUT-CsoTxw7z.js → chunk-WEXAMYUT-C7ZvuguH.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-0F_frB0c.js → chunk-XXDRQBXY-CPqxINpA.js} +1 -1
- package/dist/assets/{classDiagram-v2-NBCMYWYE-DkrpnflX.js → classDiagram-v2-NBCMYWYE-Cd6xfJaC.js} +1 -1
- package/dist/assets/{cose-bilkent-JH36ORCC-BNDwYBt9.js → cose-bilkent-JH36ORCC-BSXY5qRh.js} +1 -1
- package/dist/assets/{cynefin-OW5HDTMX-JUkNr1Mk.js → cynefin-OW5HDTMX-D_lhEMj1.js} +1 -1
- package/dist/assets/{cynefinDiagram-VND7K2PF-DKeh9N4M.js → cynefinDiagram-VND7K2PF-Da9FrFwk.js} +1 -1
- package/dist/assets/{dagre-6A5THRUB-ve-6T_wX.js → dagre-6A5THRUB-T77jMOXe.js} +1 -1
- package/dist/assets/{diagram-22UHCM2B-BuJ2d8rT.js → diagram-22UHCM2B-Dkj96X5E.js} +1 -1
- package/dist/assets/{diagram-3UASUU5V-BgOs_Ni-.js → diagram-3UASUU5V-CMi9zlD_.js} +1 -1
- package/dist/assets/{diagram-ATOU4E4O-DMK6VmcP.js → diagram-ATOU4E4O-CXK6YUfS.js} +1 -1
- package/dist/assets/{diagram-CDSNMT55-DksASlcY.js → diagram-CDSNMT55-BE7B1u9Q.js} +1 -1
- package/dist/assets/{diagram-MLGK6HIB-Bgn8I5k6.js → diagram-MLGK6HIB-CCMQphKr.js} +1 -1
- package/dist/assets/{diagram-MPIPVDR6-zK0jqO8N.js → diagram-MPIPVDR6-iHJ_-tGH.js} +1 -1
- package/dist/assets/{ebnfDiagram-ZINNZB2B-vKrbzTwr.js → ebnfDiagram-ZINNZB2B-DONsCWQ7.js} +1 -1
- package/dist/assets/{elk-276RUBZZ-Bzv2mPNf.js → elk-276RUBZZ-CU_WOaXk.js} +1 -1
- package/dist/assets/{erDiagram-OPXOYQCR-CvOyYuxu.js → erDiagram-OPXOYQCR-BeYwM04G.js} +1 -1
- package/dist/assets/{flowDiagram-KWPJA3E3-CtbnDbc0.js → flowDiagram-KWPJA3E3-Bdw9DqEl.js} +1 -1
- package/dist/assets/{ganttDiagram-FUAMR5RP-c4dMRYyG.js → ganttDiagram-FUAMR5RP-C9iwq3qm.js} +1 -1
- package/dist/assets/{gitGraphDiagram-X574FWY7-B34uaQho.js → gitGraphDiagram-X574FWY7-Dx-VWzUg.js} +1 -1
- package/dist/assets/{index-CPiqc_DN.js → index-KygHRE3E.js} +1 -1
- package/dist/assets/index-NF7XCHAy.css +1 -0
- package/dist/assets/index-X_5ydXIE.js +610 -0
- package/dist/assets/{infoDiagram-VRGFBTTK-o64ma4CI.js → infoDiagram-VRGFBTTK-BG7uaEd4.js} +1 -1
- package/dist/assets/{ishikawaDiagram-OU5B5YK6-DV4C9BAm.js → ishikawaDiagram-OU5B5YK6-D72WAXnM.js} +1 -1
- package/dist/assets/{journeyDiagram-ZHPQQLJL-Bf0AHk1H.js → journeyDiagram-ZHPQQLJL-DKH1gjYT.js} +1 -1
- package/dist/assets/{kanban-definition-PNTS6WVX-B1UMSKmE.js → kanban-definition-PNTS6WVX-3upm9JUT.js} +1 -1
- package/dist/assets/{linear-BpKhuyLm.js → linear-CcR4pc0-.js} +1 -1
- package/dist/assets/{mermaid.core-B_BKNCw5.js → mermaid.core-C6yU5FSS.js} +5 -5
- package/dist/assets/{mindmap-definition-NLK3R4M7-DeARruT1.js → mindmap-definition-NLK3R4M7-DOI2xEuv.js} +1 -1
- package/dist/assets/{pegDiagram-GJSIUBJH-BOQEk_1D.js → pegDiagram-GJSIUBJH-BVWJSgLd.js} +1 -1
- package/dist/assets/{pieDiagram-5QR66LMP-EIfoiTZo.js → pieDiagram-5QR66LMP-jtbYezhq.js} +1 -1
- package/dist/assets/{quadrantDiagram-O4NWA36T-GgZwT-fi.js → quadrantDiagram-O4NWA36T-g0u8mtPX.js} +1 -1
- package/dist/assets/{railroadDiagram-XR7U4H2S-D9rDQomj.js → railroadDiagram-XR7U4H2S-k8689Wny.js} +1 -1
- package/dist/assets/{requirementDiagram-PLB6GJNP-DAh1MIeo.js → requirementDiagram-PLB6GJNP-DsJ22PDt.js} +1 -1
- package/dist/assets/{sankeyDiagram-IPEJSGJF-CPr6Uz64.js → sankeyDiagram-IPEJSGJF-CneWBRgG.js} +1 -1
- package/dist/assets/{sequenceDiagram-PO4LG4MO-BU6VIdcm.js → sequenceDiagram-PO4LG4MO-DWsFCWap.js} +1 -1
- package/dist/assets/{sizeCapture-INFHLROL-qF2HO41r.js → sizeCapture-INFHLROL-Bvf0YE3S.js} +1 -1
- package/dist/assets/{stateDiagram-v2-GCMORJYK-DlJ8G4MD.js → stateDiagram-v2-GCMORJYK-Bxb3Iei8.js} +1 -1
- package/dist/assets/{swimlanes-2SLR337P-DzYE8I54.js → swimlanes-2SLR337P-DLkk7W4A.js} +1 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-C6bZtBXk.js +8 -0
- package/dist/assets/{timeline-definition-EJHVYXUP-B7wzEQ0A.js → timeline-definition-EJHVYXUP-KR9bIHYC.js} +1 -1
- package/dist/assets/{usecaseDiagram-POWQR4AR-BvGgrxIP.js → usecaseDiagram-POWQR4AR-DfsOrj8t.js} +1 -1
- package/dist/assets/{vennDiagram-UO4OBE2U-CEECdgQg.js → vennDiagram-UO4OBE2U-DRSTzG3h.js} +1 -1
- package/dist/assets/{wardleyDiagram-VNRHLVJA-XQHA0P_P.js → wardleyDiagram-VNRHLVJA-DtEdhPgT.js} +1 -1
- package/dist/assets/{xychartDiagram-PMCCYNJV-B5mLcZI2.js → xychartDiagram-PMCCYNJV-B-XhTxjG.js} +1 -1
- package/dist/index.html +2 -2
- package/dist-server/cloud-home-start.js +2 -1
- package/dist-server/companion/src/routes.js +39 -0
- package/dist-server/container-mcp.js +2 -2
- package/dist-server/drivers/agents-proxy.js +58 -38
- package/dist-server/enterprise/server/index.js +2 -1
- package/dist-server/{browser-proxy.js → harness-mcp-proxy.js} +35 -19
- package/dist-server/index.js +3159 -2313
- package/dist-server/local-computer.js +2 -1
- package/dist-server/openmausbot.js +314 -1336
- package/dist-server/pair-cli.js +314 -1336
- package/dist-server/proxy-paths.js +2 -1
- package/dist-server/server/account-signin.js +0 -2
- package/dist-server/server/activity.js +201 -0
- package/dist-server/server/auto-approve.js +6 -0
- package/dist-server/server/automatic-recovery.js +1 -1
- package/dist-server/server/boat-create-idempotency.js +0 -7
- package/dist-server/server/boat-delete-journal.js +0 -4
- package/dist-server/server/bot-package.js +1 -19
- package/dist-server/server/browser-runtime.js +1 -2
- package/dist-server/server/chief-of-staff.js +2 -3
- package/dist-server/server/cloud-backend.js +0 -4
- package/dist-server/server/cloud-computer-tools.js +110 -0
- package/dist-server/server/cloud-home.js +0 -1
- package/dist-server/server/cloud-lending.js +0 -3
- package/dist-server/server/composio.js +31 -2
- package/dist-server/server/computer-control.js +0 -15
- package/dist-server/server/computer-observation.js +0 -74
- package/dist-server/server/config.js +29 -1
- package/dist-server/server/container-computer.js +7 -19
- package/dist-server/server/contracts.js +9 -0
- package/dist-server/server/control-client.js +4 -10
- package/dist-server/server/drivers/acp/core.js +7 -5
- package/dist-server/server/drivers/agents-call.js +42 -29
- package/dist-server/server/drivers/agents-catalog.js +24 -11
- package/dist-server/server/drivers/agents-proxy.js +8 -30
- package/dist-server/server/drivers/antigravity.js +1 -4
- package/dist-server/server/drivers/boatagent.js +23 -4
- package/dist-server/server/drivers/cerebras.js +3 -3
- package/dist-server/server/drivers/chat-mcp-tools.js +4 -7
- package/dist-server/server/drivers/claude.js +16 -14
- package/dist-server/server/drivers/openai-chat.js +3 -6
- package/dist-server/server/drivers/retry.js +8 -4
- package/dist-server/server/engine-install.js +1 -5
- package/dist-server/server/harness/registry.js +0 -1
- package/dist-server/server/{browser-proxy.js → harness-mcp-proxy.js} +40 -20
- package/dist-server/server/index.js +789 -256
- package/dist-server/server/lending-memory.js +12 -8
- package/dist-server/server/memory-entries.js +38 -8
- package/dist-server/server/memory-organize.js +1 -8
- package/dist-server/server/memory-topics.js +4 -4
- package/dist-server/server/memory-upkeep.js +13 -15
- package/dist-server/server/message-file.js +5 -9
- package/dist-server/server/outbound-counts.js +79 -0
- package/dist-server/server/outbound-requests.js +60 -0
- package/dist-server/server/package-import.js +1 -1
- package/dist-server/server/peer-delivery.js +1 -0
- package/dist-server/server/proxy-paths.js +2 -1
- package/dist-server/server/room-handoffs.js +5 -13
- package/dist-server/server/routine-requests.js +1 -1
- package/dist-server/server/routines.js +5 -1
- package/dist-server/server/setup-mode.js +0 -2
- package/dist-server/server/skill-learn.js +0 -1
- package/dist-server/server/skill-library.js +0 -15
- package/dist-server/server/store.js +9 -1
- package/dist-server/server/surface.js +65 -20
- package/dist-server/server/system-prompt.js +4 -4
- package/dist-server/server/team-memory.js +209 -0
- package/dist-server/server/thread-events.js +2 -2
- package/dist-server/server/vps-computer.js +4 -14
- package/dist-server/server/workspace.js +85 -47
- package/dist-server/shared/activity.js +3 -0
- package/dist-server/shared/bot-avatar.js +8 -0
- package/dist-server/shared/connector-scopes.js +78 -0
- package/dist-server/shared/outbound.js +128 -0
- package/dist-server/shared/tool-surface.js +3 -2
- package/dist-server/vps-container-mcp.js +2 -2
- package/enterprise/server/index.js +2 -1
- package/package.json +1 -1
- package/dist/assets/channel-CdJX6i8k.js +0 -1
- package/dist/assets/index-CPYrGsv1.js +0 -610
- package/dist/assets/index-CzT42GR8.css +0 -1
- package/dist/assets/swimlanesDiagram-TC7HE7FX-D-U4GtLQ.js +0 -8
- package/dist-server/server/drivers/chat-boat-tools.js +0 -90
- package/dist-server/server/drivers/grokagent.js +0 -4
- package/dist-server/server/openmaus-status-capsule.js +0 -329
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{e as gi,r as ee,t as j,u as Qn,i as Ln,j as B,M as Rn,k as ve,K as Bn,R as Dn,C as In,l as Pn,X as Un,S as Nn}from"./index-CPYrGsv1.js";const Hn=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]],zn=gi("clipboard",Hn);const Vn=[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]],On=gi("maximize",Vn);const Gn=[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]],Wn=gi("minimize",Gn);function jn(i){return i>>>0}function ui(i){return i|0}let Mi="warn",Q=()=>{},re=()=>{},ae=()=>{},G=()=>{};function Zn(i){if(typeof i>"u"?i=Mi:Mi=i,Q=re=ae=G=()=>{},typeof window.console<"u")switch(i){case"debug":Q=console.debug.bind(window.console);case"info":re=console.info.bind(window.console);case"warn":ae=console.warn.bind(window.console);case"error":G=console.error.bind(window.console);case"none":break;default:throw new window.Error("invalid logging type '"+i+"'")}}Zn();function Vt(i,t=!1){try{return decodeURIComponent(escape(i))}catch(e){if(e instanceof URIError&&t)return i;throw e}}function ye(i){return unescape(encodeURIComponent(i))}const bi={toBase64Table:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split(""),base64Pad:"=",encode(i){let t="";const e=i.length,s=e%3;for(let r=0;r<e-2;r+=3)t+=this.toBase64Table[i[r]>>2],t+=this.toBase64Table[((i[r]&3)<<4)+(i[r+1]>>4)],t+=this.toBase64Table[((i[r+1]&15)<<2)+(i[r+2]>>6)],t+=this.toBase64Table[i[r+2]&63];const n=e-s;return s===2?(t+=this.toBase64Table[i[n]>>2],t+=this.toBase64Table[((i[n]&3)<<4)+(i[n+1]>>4)],t+=this.toBase64Table[(i[n+1]&15)<<2],t+=this.toBase64Table[64]):s===1&&(t+=this.toBase64Table[i[n]>>2],t+=this.toBase64Table[(i[n]&3)<<4],t+=this.toBase64Table[64],t+=this.toBase64Table[64]),t},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode(i,t=0){let e=i.indexOf("=")-t;e<0&&(e=i.length-t);const s=(e>>2)*3+Math.floor(e%4/1.5),n=new Array(s);let r=0,a=0;for(let h=0,c=t;c<i.length;c++){const o=this.toBinaryTable[i.charCodeAt(c)&127],l=i.charAt(c)===this.base64Pad;if(o===-1){G("Illegal character code "+i.charCodeAt(c)+" at position "+c);continue}a=a<<6|o,r+=6,r>=8&&(r-=8,l||(n[h++]=a>>r&255),a&=(1<<r)-1)}if(r){const h=new Error("Corrupted base64 string");throw h.name="Base64-Error",h}return n}};let qs="ontouchstart"in document.documentElement||document.ontouchstart!==void 0||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;window.addEventListener("touchstart",function i(){qs=!0,window.removeEventListener("touchstart",i,!1)},!1);let xt=10*(window.devicePixelRatio||1),$s=!1;try{const i=document.createElement("canvas");i.style.cursor='url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default',i.style.cursor.indexOf("url")===0?(re("Data URI scheme cursor supported"),$s=!0):ae("Data URI scheme cursor not supported")}catch(i){G("Data URI scheme cursor test exception: "+i)}const Yn=$s;let qn=!0;try{const i=document.createElement("div");i.style.visibility="hidden",i.style.overflow="scroll",document.body.appendChild(i);const t=document.createElement("div");i.appendChild(t);const e=i.offsetWidth-t.offsetWidth;i.parentNode.removeChild(i),qn=e!=0}catch(i){G("Scrollbar test exception: "+i)}let Js=!1;async function $n(){if(!("VideoDecoder"in window))return!1;const i={codec:"avc1.42401f",codedWidth:1920,codedHeight:1080,optimizeForLatency:!0};if(!(await VideoDecoder.isConfigSupported(i)).supported)return!1;const e=new Uint8Array(bi.decode("AAAAAWdCwBTZnpuAgICgAAADACAAAAZB4oVNAAAAAWjJYyyAAAABBgX//4HcRem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5ZjkgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIzIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9NSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4MTExIG1lPWhleCBzdWJtZT04IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0yIDh4OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTAgd2VpZ2h0cD0wIGtleWludD1pbmZpbml0ZSBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NTAgcmM9YWJyIG1idHJlZT0xIGJpdHJhdGU9NDAwIHJhdGV0b2w9MS4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAABZYiEBrxmKAAPVccAAS044AA5DRJMnkycJk4TPw=="));let s=!1,n=null,r=new VideoDecoder({output:h=>{s=!0,h.close()},error:h=>{n=h}}),a=new EncodedVideoChunk({timestamp:0,type:"key",data:e});r.configure(i),r.decode(a);try{await r.flush()}catch(h){n=h}return!(!s||n!==null)}Js=await $n();function Ue(){return!!/mac/i.exec(navigator.platform)}function Ct(){return!!/win/i.exec(navigator.platform)}function We(){return!!/ipad/i.exec(navigator.platform)||!!/iphone/i.exec(navigator.platform)||!!/ipod/i.exec(navigator.platform)}function je(i,t,e){const s=e.getBoundingClientRect();let n={x:0,y:0};return i<s.left?n.x=0:i>=s.right?n.x=s.width-1:n.x=i-s.left,t<s.top?n.y=0:t>=s.bottom?n.y=s.height-1:n.y=t-s.top,n}function Be(i){i.stopPropagation(),i.preventDefault()}let Ot=!1,en=null;document.captureElement=null;function Te(i){if(Ot)return;const t=new i.constructor(i.type,i);Ot=!0,document.captureElement?document.captureElement.dispatchEvent(t):en.dispatchEvent(t),Ot=!1,i.stopPropagation(),t.defaultPrevented&&i.preventDefault(),i.type==="mouseup"&&nn()}function tn(){const i=document.getElementById("noVNC_mouse_capture_elem");i.style.cursor=window.getComputedStyle(document.captureElement).cursor}const sn=new MutationObserver(tn);function Jn(i){if(i.setCapture)i.setCapture(),document.captureElement=i;else{nn();let t=document.getElementById("noVNC_mouse_capture_elem");t===null&&(t=document.createElement("div"),t.id="noVNC_mouse_capture_elem",t.style.position="fixed",t.style.top="0px",t.style.left="0px",t.style.width="100%",t.style.height="100%",t.style.zIndex=1e4,t.style.display="none",document.body.appendChild(t),t.addEventListener("contextmenu",Te),t.addEventListener("mousemove",Te),t.addEventListener("mouseup",Te)),document.captureElement=i,sn.observe(i,{attributes:!0}),tn(),t.style.display="",window.addEventListener("mousemove",Te),window.addEventListener("mouseup",Te)}}function nn(){if(document.releaseCapture)document.releaseCapture(),document.captureElement=null;else{if(!document.captureElement)return;en=document.captureElement,document.captureElement=null,sn.disconnect();const i=document.getElementById("noVNC_mouse_capture_elem");i.style.display="none",window.removeEventListener("mousemove",Te),window.removeEventListener("mouseup",Te)}}class rn{constructor(){this._listeners=new Map}addEventListener(t,e){this._listeners.has(t)||this._listeners.set(t,new Set),this._listeners.get(t).add(e)}removeEventListener(t,e){this._listeners.has(t)&&this._listeners.get(t).delete(e)}dispatchEvent(t){return this._listeners.has(t.type)?(this._listeners.get(t.type).forEach(e=>e.call(this,t)),!t.defaultPrevented):!0}}class er{constructor(t){if(this._drawCtx=null,this._renderQ=[],this._flushPromise=null,this._fbWidth=0,this._fbHeight=0,this._prevDrawStyle="",Q(">> Display.constructor"),this._target=t,!this._target)throw new Error("Target must be set");if(typeof this._target=="string")throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");this._targetCtx=this._target.getContext("2d"),this._viewportLoc={x:0,y:0,w:this._target.width,h:this._target.height},this._backbuffer=document.createElement("canvas"),this._drawCtx=this._backbuffer.getContext("2d"),this._damageBounds={left:0,top:0,right:this._backbuffer.width,bottom:this._backbuffer.height},Q("User Agent: "+navigator.userAgent),Q("<< Display.constructor"),this._scale=1,this._clipViewport=!1}get scale(){return this._scale}set scale(t){this._rescale(t)}get clipViewport(){return this._clipViewport}set clipViewport(t){this._clipViewport=t;const e=this._viewportLoc;this.viewportChangeSize(e.w,e.h),this.viewportChangePos(0,0)}get width(){return this._fbWidth}get height(){return this._fbHeight}viewportChangePos(t,e){const s=this._viewportLoc;t=Math.floor(t),e=Math.floor(e),this._clipViewport||(t=-s.w,e=-s.h);const n=s.x+s.w-1,r=s.y+s.h-1;t<0&&s.x+t<0&&(t=-s.x),n+t>=this._fbWidth&&(t-=n+t-this._fbWidth+1),s.y+e<0&&(e=-s.y),r+e>=this._fbHeight&&(e-=r+e-this._fbHeight+1),!(t===0&&e===0)&&(Q("viewportChange deltaX: "+t+", deltaY: "+e),s.x+=t,s.y+=e,this._damage(s.x,s.y,s.w,s.h),this.flip())}viewportChangeSize(t,e){(!this._clipViewport||typeof t>"u"||typeof e>"u")&&(Q("Setting viewport to full display region"),t=this._fbWidth,e=this._fbHeight),t=Math.floor(t),e=Math.floor(e),t>this._fbWidth&&(t=this._fbWidth),e>this._fbHeight&&(e=this._fbHeight);const s=this._viewportLoc;if(s.w!==t||s.h!==e){s.w=t,s.h=e;const n=this._target;n.width=t,n.height=e,this.viewportChangePos(0,0),this._damage(s.x,s.y,s.w,s.h),this.flip(),this._rescale(this._scale)}}absX(t){return this._scale===0?0:ui(t/this._scale+this._viewportLoc.x)}absY(t){return this._scale===0?0:ui(t/this._scale+this._viewportLoc.y)}resize(t,e){this._prevDrawStyle="",this._fbWidth=t,this._fbHeight=e;const s=this._backbuffer;if(s.width!==t||s.height!==e){let r=null;s.width>0&&s.height>0&&(r=this._drawCtx.getImageData(0,0,s.width,s.height)),s.width!==t&&(s.width=t),s.height!==e&&(s.height=e),r&&this._drawCtx.putImageData(r,0,0)}const n=this._viewportLoc;this.viewportChangeSize(n.w,n.h),this.viewportChangePos(0,0)}getImageData(){return this._drawCtx.getImageData(0,0,this.width,this.height)}toDataURL(t,e){return this._backbuffer.toDataURL(t,e)}toBlob(t,e,s){return this._backbuffer.toBlob(t,e,s)}_damage(t,e,s,n){t<this._damageBounds.left&&(this._damageBounds.left=t),e<this._damageBounds.top&&(this._damageBounds.top=e),t+s>this._damageBounds.right&&(this._damageBounds.right=t+s),e+n>this._damageBounds.bottom&&(this._damageBounds.bottom=e+n)}flip(t){if(this._renderQ.length!==0&&!t)this._renderQPush({type:"flip"});else{let e=this._damageBounds.left,s=this._damageBounds.top,n=this._damageBounds.right-e,r=this._damageBounds.bottom-s,a=e-this._viewportLoc.x,h=s-this._viewportLoc.y;a<0&&(n+=a,e-=a,a=0),h<0&&(r+=h,s-=h,h=0),a+n>this._viewportLoc.w&&(n=this._viewportLoc.w-a),h+r>this._viewportLoc.h&&(r=this._viewportLoc.h-h),n>0&&r>0&&this._targetCtx.drawImage(this._backbuffer,e,s,n,r,a,h,n,r),this._damageBounds.left=this._damageBounds.top=65535,this._damageBounds.right=this._damageBounds.bottom=0}}pending(){return this._renderQ.length>0}flush(){return this._renderQ.length===0?Promise.resolve():(this._flushPromise===null&&(this._flushPromise=new Promise(t=>{this._flushResolve=t})),this._flushPromise)}fillRect(t,e,s,n,r,a){this._renderQ.length!==0&&!a?this._renderQPush({type:"fill",x:t,y:e,width:s,height:n,color:r}):(this._setFillColor(r),this._drawCtx.fillRect(t,e,s,n),this._damage(t,e,s,n))}copyImage(t,e,s,n,r,a,h){this._renderQ.length!==0&&!h?this._renderQPush({type:"copy",oldX:t,oldY:e,x:s,y:n,width:r,height:a}):(this._drawCtx.mozImageSmoothingEnabled=!1,this._drawCtx.webkitImageSmoothingEnabled=!1,this._drawCtx.msImageSmoothingEnabled=!1,this._drawCtx.imageSmoothingEnabled=!1,this._drawCtx.drawImage(this._backbuffer,t,e,r,a,s,n,r,a),this._damage(s,n,r,a))}imageRect(t,e,s,n,r,a){if(s===0||n===0)return;const h=new Image;h.src="data: "+r+";base64,"+bi.encode(a),this._renderQPush({type:"img",img:h,x:t,y:e,width:s,height:n})}videoFrame(t,e,s,n,r){this._renderQPush({type:"frame",frame:r,x:t,y:e,width:s,height:n})}blitImage(t,e,s,n,r,a,h){if(this._renderQ.length!==0&&!h){const c=new Uint8Array(s*n*4);c.set(new Uint8Array(r.buffer,0,c.length)),this._renderQPush({type:"blit",data:c,x:t,y:e,width:s,height:n})}else{let c=new Uint8ClampedArray(r.buffer,r.byteOffset+a,s*n*4),o=new ImageData(c,s,n);this._drawCtx.putImageData(o,t,e),this._damage(t,e,s,n)}}drawImage(t,...e){if(this._drawCtx.drawImage(t,...e),e.length<=4){const[s,n]=e;this._damage(s,n,t.width,t.height)}else{const[,,s,n,r,a]=e;this._damage(r,a,s,n)}}autoscale(t,e){let s;if(t===0||e===0)s=0;else{const n=this._viewportLoc,r=t/e;n.w/n.h>=r?s=t/n.w:s=e/n.h}this._rescale(s)}_rescale(t){this._scale=t;const e=this._viewportLoc,s=t*e.w+"px",n=t*e.h+"px";(this._target.style.width!==s||this._target.style.height!==n)&&(this._target.style.width=s,this._target.style.height=n)}_setFillColor(t){const e="rgb("+t[0]+","+t[1]+","+t[2]+")";e!==this._prevDrawStyle&&(this._drawCtx.fillStyle=e,this._prevDrawStyle=e)}_renderQPush(t){this._renderQ.push(t),this._renderQ.length===1&&this._scanRenderQ()}_resumeRenderQ(){this.removeEventListener("load",this._noVNCDisplay._resumeRenderQ),this._noVNCDisplay._scanRenderQ()}_scanRenderQ(){let t=!0;for(;t&&this._renderQ.length>0;){const e=this._renderQ[0];switch(e.type){case"flip":this.flip(!0);break;case"copy":this.copyImage(e.oldX,e.oldY,e.x,e.y,e.width,e.height,!0);break;case"fill":this.fillRect(e.x,e.y,e.width,e.height,e.color,!0);break;case"blit":this.blitImage(e.x,e.y,e.width,e.height,e.data,0,!0);break;case"img":if(e.img.complete){if(e.img.width!==e.width||e.img.height!==e.height){G("Decoded image has incorrect dimensions. Got "+e.img.width+"x"+e.img.height+". Expected "+e.width+"x"+e.height+".");return}this.drawImage(e.img,e.x,e.y),e.img.src=""}else e.img._noVNCDisplay=this,e.img.addEventListener("load",this._resumeRenderQ),t=!1;break;case"frame":if(e.frame.ready){let s=e.frame.frame;(s.codedWidth<e.width||s.codedHeight<e.height)&&ae("Decoded video frame does not cover its full rectangle area. Expecting at least "+e.width+"x"+e.height+" but got "+s.codedWidth+"x"+s.codedHeight);const n=0,r=0,a=e.width,h=e.height,c=e.x,o=e.y,l=a,_=h;this.drawImage(s,n,r,a,h,c,o,l,_),s.close()}else{let s=this;e.frame.promise.then(()=>{s._scanRenderQ()}),t=!1}break}t&&this._renderQ.shift()}this._renderQ.length===0&&this._flushPromise!==null&&(this._flushResolve(),this._flushPromise=null,this._flushResolve=null)}}function Se(i,t,e,s,n){if(t.subarray&&i.subarray){i.set(t.subarray(e,e+s),n);return}for(var r=0;r<s;r++)i[n+r]=t[e+r]}var Ft=Uint8Array,de=Uint16Array,Mt=Int32Array;function fi(i,t,e,s){for(var n=i&65535|0,r=i>>>16&65535|0,a=0;e!==0;){a=e>2e3?2e3:e,e-=a;do n=n+t[s++]|0,r=r+n|0;while(--a);n%=65521,r%=65521}return n|r<<16|0}function q(){for(var i,t=[],e=0;e<256;e++){i=e;for(var s=0;s<8;s++)i=i&1?3988292384^i>>>1:i>>>1;t[e]=i}return t}q();var pt=30,tr=12;function ir(i,t){var e,s,n,r,a,h,c,o,l,_,f,x,k,E,F,C,M,A,S,T,I,K,P,R,X;e=i.state,s=i.next_in,R=i.input,n=s+(i.avail_in-5),r=i.next_out,X=i.output,a=r-(t-i.avail_out),h=r+(i.avail_out-257),c=e.dmax,o=e.wsize,l=e.whave,_=e.wnext,f=e.window,x=e.hold,k=e.bits,E=e.lencode,F=e.distcode,C=(1<<e.lenbits)-1,M=(1<<e.distbits)-1;e:do{k<15&&(x+=R[s++]<<k,k+=8,x+=R[s++]<<k,k+=8),A=E[x&C];t:for(;;){if(S=A>>>24,x>>>=S,k-=S,S=A>>>16&255,S===0)X[r++]=A&65535;else if(S&16){T=A&65535,S&=15,S&&(k<S&&(x+=R[s++]<<k,k+=8),T+=x&(1<<S)-1,x>>>=S,k-=S),k<15&&(x+=R[s++]<<k,k+=8,x+=R[s++]<<k,k+=8),A=F[x&M];i:for(;;){if(S=A>>>24,x>>>=S,k-=S,S=A>>>16&255,S&16){if(I=A&65535,S&=15,k<S&&(x+=R[s++]<<k,k+=8,k<S&&(x+=R[s++]<<k,k+=8)),I+=x&(1<<S)-1,I>c){i.msg="invalid distance too far back",e.mode=pt;break e}if(x>>>=S,k-=S,S=r-a,I>S){if(S=I-S,S>l&&e.sane){i.msg="invalid distance too far back",e.mode=pt;break e}if(K=0,P=f,_===0){if(K+=o-S,S<T){T-=S;do X[r++]=f[K++];while(--S);K=r-I,P=X}}else if(_<S){if(K+=o+_-S,S-=_,S<T){T-=S;do X[r++]=f[K++];while(--S);if(K=0,_<T){S=_,T-=S;do X[r++]=f[K++];while(--S);K=r-I,P=X}}}else if(K+=_-S,S<T){T-=S;do X[r++]=f[K++];while(--S);K=r-I,P=X}for(;T>2;)X[r++]=P[K++],X[r++]=P[K++],X[r++]=P[K++],T-=3;T&&(X[r++]=P[K++],T>1&&(X[r++]=P[K++]))}else{K=r-I;do X[r++]=X[K++],X[r++]=X[K++],X[r++]=X[K++],T-=3;while(T>2);T&&(X[r++]=X[K++],T>1&&(X[r++]=X[K++]))}}else if((S&64)===0){A=F[(A&65535)+(x&(1<<S)-1)];continue i}else{i.msg="invalid distance code",e.mode=pt;break e}break}}else if((S&64)===0){A=E[(A&65535)+(x&(1<<S)-1)];continue t}else if(S&32){e.mode=tr;break e}else{i.msg="invalid literal/length code",e.mode=pt;break e}break}}while(s<n&&r<h);T=k>>3,s-=T,k-=T<<3,x&=(1<<k)-1,i.next_in=s,i.next_out=r,i.avail_in=s<n?5+(n-s):5-(s-n),i.avail_out=r<h?257+(h-r):257-(r-h),e.hold=x,e.bits=k}var De=15,Ti=852,Qi=592,Li=0,Gt=1,Ri=2,sr=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],nr=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],rr=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],ar=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function tt(i,t,e,s,n,r,a,h){var c=h.bits,o=0,l=0,_=0,f=0,x=0,k=0,E=0,F=0,C=0,M=0,A,S,T,I,K,P=null,R=0,X,H=new de(De+1),$=new de(De+1),we=null,he=0,_e,le,W;for(o=0;o<=De;o++)H[o]=0;for(l=0;l<s;l++)H[t[e+l]]++;for(x=c,f=De;f>=1&&H[f]===0;f--);if(x>f&&(x=f),f===0)return n[r++]=1<<24|64<<16|0,n[r++]=1<<24|64<<16|0,h.bits=1,0;for(_=1;_<f&&H[_]===0;_++);for(x<_&&(x=_),F=1,o=1;o<=De;o++)if(F<<=1,F-=H[o],F<0)return-1;if(F>0&&(i===Li||f!==1))return-1;for($[1]=0,o=1;o<De;o++)$[o+1]=$[o]+H[o];for(l=0;l<s;l++)t[e+l]!==0&&(a[$[t[e+l]]++]=l);if(i===Li?(P=we=a,X=19):i===Gt?(P=sr,R-=257,we=nr,he-=257,X=256):(P=rr,we=ar,X=-1),M=0,l=0,o=_,K=r,k=x,E=0,T=-1,C=1<<x,I=C-1,i===Gt&&C>Ti||i===Ri&&C>Qi)return 1;for(;;){_e=o-E,a[l]<X?(le=0,W=a[l]):a[l]>X?(le=we[he+a[l]],W=P[R+a[l]]):(le=96,W=0),A=1<<o-E,S=1<<k,_=S;do S-=A,n[K+(M>>E)+S]=_e<<24|le<<16|W|0;while(S!==0);for(A=1<<o-1;M&A;)A>>=1;if(A!==0?(M&=A-1,M+=A):M=0,l++,--H[o]===0){if(o===f)break;o=t[e+a[l]]}if(o>x&&(M&I)!==T){for(E===0&&(E=x),K+=_,k=o-E,F=1<<k;k+E<f&&(F-=H[k+E],!(F<=0));)k++,F<<=1;if(C+=1<<k,i===Gt&&C>Ti||i===Ri&&C>Qi)return 1;T=M&I,n[T]=x<<24|k<<16|K-r|0}}return M!==0&&(n[K+M]=o-E<<24|64<<16|0),h.bits=x,0}var or=0,an=1,on=2;const Bi=4,Tt=0,hr=1,lr=2,Re=-2,cr=-3,dr=-4,ur=-5,Di=8;var hn=1,Ii=2,Pi=3,Ui=4,Ni=5,Hi=6,zi=7,Vi=8,Oi=9,Gi=10,Wi=11,me=12,Wt=13,ji=14,jt=15,Zi=16,Yi=17,qi=18,$i=19,gt=20,bt=21,Ji=22,es=23,ts=24,is=25,ss=26,Zt=27,ns=28,rs=29,V=30,fr=31,_r=32,xr=852,pr=592,gr=15,br=gr;function as(i){return(i>>>24&255)+(i>>>8&65280)+((i&65280)<<8)+((i&255)<<24)}function wr(){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 de(320),this.work=new de(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function mr(i){var t;return!i||!i.state?Re:(t=i.state,i.total_in=i.total_out=t.total=0,i.msg="",t.wrap&&(i.adler=t.wrap&1),t.mode=hn,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Mt(xr),t.distcode=t.distdyn=new Mt(pr),t.sane=1,t.back=-1,Tt)}function ln(i){var t;return!i||!i.state?Re:(t=i.state,t.wsize=0,t.whave=0,t.wnext=0,mr(i))}function vr(i,t){var e,s;return!i||!i.state||(s=i.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Re:(s.window!==null&&s.wbits!==t&&(s.window=null),s.wrap=e,s.wbits=t,ln(i))}function yr(i,t){var e,s;return i?(s=new wr,i.state=s,s.window=null,e=vr(i,t),e!==Tt&&(i.state=null),e):Re}function kr(i){return yr(i,br)}var os=!0,Yt,qt;function Sr(i){if(os){var t;for(Yt=new Mt(512),qt=new Mt(32),t=0;t<144;)i.lens[t++]=8;for(;t<256;)i.lens[t++]=9;for(;t<280;)i.lens[t++]=7;for(;t<288;)i.lens[t++]=8;for(tt(an,i.lens,0,288,Yt,0,i.work,{bits:9}),t=0;t<32;)i.lens[t++]=5;tt(on,i.lens,0,32,qt,0,i.work,{bits:5}),os=!1}i.lencode=Yt,i.lenbits=9,i.distcode=qt,i.distbits=5}function Er(i,t,e,s){var n,r=i.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Ft(r.wsize)),s>=r.wsize?(Se(r.window,t,e-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n=r.wsize-r.wnext,n>s&&(n=s),Se(r.window,t,e-s,n,r.wnext),s-=n,s?(Se(r.window,t,e-s,s,0),r.wnext=s,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=n))),0}function Cr(i,t){var e,s,n,r,a,h,c,o,l,_,f,x,k,E,F=0,C,M,A,S,T,I,K,P,R=new Ft(4),X,H,$=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!i||!i.state||!i.output||!i.input&&i.avail_in!==0)return Re;e=i.state,e.mode===me&&(e.mode=Wt),a=i.next_out,n=i.output,c=i.avail_out,r=i.next_in,s=i.input,h=i.avail_in,o=e.hold,l=e.bits,_=h,f=c,P=Tt;e:for(;;)switch(e.mode){case hn:if(e.wrap===0){e.mode=Wt;break}for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(e.wrap&2&&o===35615){e.check=0,R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check),o=0,l=0,e.mode=Ii;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((o&255)<<8)+(o>>8))%31){i.msg="incorrect header check",e.mode=V;break}if((o&15)!==Di){i.msg="unknown compression method",e.mode=V;break}if(o>>>=4,l-=4,K=(o&15)+8,e.wbits===0)e.wbits=K;else if(K>e.wbits){i.msg="invalid window size",e.mode=V;break}e.dmax=1<<K,i.adler=e.check=1,e.mode=o&512?Gi:me,o=0,l=0;break;case Ii:for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(e.flags=o,(e.flags&255)!==Di){i.msg="unknown compression method",e.mode=V;break}if(e.flags&57344){i.msg="unknown header flags set",e.mode=V;break}e.head&&(e.head.text=o>>8&1),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check)),o=0,l=0,e.mode=Pi;case Pi:for(;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.head&&(e.head.time=o),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,R[2]=o>>>16&255,R[3]=o>>>24&255,e.check=q(e.check)),o=0,l=0,e.mode=Ui;case Ui:for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.head&&(e.head.xflags=o&255,e.head.os=o>>8),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check)),o=0,l=0,e.mode=Ni;case Ni:if(e.flags&1024){for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.length=o,e.head&&(e.head.extra_len=o),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check)),o=0,l=0}else e.head&&(e.head.extra=null);e.mode=Hi;case Hi:if(e.flags&1024&&(x=e.length,x>h&&(x=h),x&&(e.head&&(K=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),Se(e.head.extra,s,r,x,K)),e.flags&512&&(e.check=q(e.check)),h-=x,r+=x,e.length-=x),e.length))break e;e.length=0,e.mode=zi;case zi:if(e.flags&2048){if(h===0)break e;x=0;do K=s[r+x++],e.head&&K&&e.length<65536&&(e.head.name+=String.fromCharCode(K));while(K&&x<h);if(e.flags&512&&(e.check=q(e.check)),h-=x,r+=x,K)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=Vi;case Vi:if(e.flags&4096){if(h===0)break e;x=0;do K=s[r+x++],e.head&&K&&e.length<65536&&(e.head.comment+=String.fromCharCode(K));while(K&&x<h);if(e.flags&512&&(e.check=q(e.check)),h-=x,r+=x,K)break e}else e.head&&(e.head.comment=null);e.mode=Oi;case Oi:if(e.flags&512){for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(o!==(e.check&65535)){i.msg="header crc mismatch",e.mode=V;break}o=0,l=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),i.adler=e.check=0,e.mode=me;break;case Gi:for(;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}i.adler=e.check=as(o),o=0,l=0,e.mode=Wi;case Wi:if(e.havedict===0)return i.next_out=a,i.avail_out=c,i.next_in=r,i.avail_in=h,e.hold=o,e.bits=l,lr;i.adler=e.check=1,e.mode=me;case me:case Wt:if(e.last){o>>>=l&7,l-=l&7,e.mode=Zt;break}for(;l<3;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}switch(e.last=o&1,o>>>=1,l-=1,o&3){case 0:e.mode=ji;break;case 1:Sr(e),e.mode=gt;break;case 2:e.mode=Yi;break;case 3:i.msg="invalid block type",e.mode=V}o>>>=2,l-=2;break;case ji:for(o>>>=l&7,l-=l&7;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if((o&65535)!==(o>>>16^65535)){i.msg="invalid stored block lengths",e.mode=V;break}e.length=o&65535,o=0,l=0,e.mode=jt;case jt:e.mode=Zi;case Zi:if(x=e.length,x){if(x>h&&(x=h),x>c&&(x=c),x===0)break e;Se(n,s,r,x,a),h-=x,r+=x,c-=x,a+=x,e.length-=x;break}e.mode=me;break;case Yi:for(;l<14;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(e.nlen=(o&31)+257,o>>>=5,l-=5,e.ndist=(o&31)+1,o>>>=5,l-=5,e.ncode=(o&15)+4,o>>>=4,l-=4,e.nlen>286||e.ndist>30){i.msg="too many length or distance symbols",e.mode=V;break}e.have=0,e.mode=qi;case qi:for(;e.have<e.ncode;){for(;l<3;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.lens[$[e.have++]]=o&7,o>>>=3,l-=3}for(;e.have<19;)e.lens[$[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,X={bits:e.lenbits},P=tt(or,e.lens,0,19,e.lencode,0,e.work,X),e.lenbits=X.bits,P){i.msg="invalid code lengths set",e.mode=V;break}e.have=0,e.mode=$i;case $i:for(;e.have<e.nlen+e.ndist;){for(;F=e.lencode[o&(1<<e.lenbits)-1],C=F>>>24,M=F>>>16&255,A=F&65535,!(C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(A<16)o>>>=C,l-=C,e.lens[e.have++]=A;else{if(A===16){for(H=C+2;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(o>>>=C,l-=C,e.have===0){i.msg="invalid bit length repeat",e.mode=V;break}K=e.lens[e.have-1],x=3+(o&3),o>>>=2,l-=2}else if(A===17){for(H=C+3;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=C,l-=C,K=0,x=3+(o&7),o>>>=3,l-=3}else{for(H=C+7;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=C,l-=C,K=0,x=11+(o&127),o>>>=7,l-=7}if(e.have+x>e.nlen+e.ndist){i.msg="invalid bit length repeat",e.mode=V;break}for(;x--;)e.lens[e.have++]=K}}if(e.mode===V)break;if(e.lens[256]===0){i.msg="invalid code -- missing end-of-block",e.mode=V;break}if(e.lenbits=9,X={bits:e.lenbits},P=tt(an,e.lens,0,e.nlen,e.lencode,0,e.work,X),e.lenbits=X.bits,P){i.msg="invalid literal/lengths set",e.mode=V;break}if(e.distbits=6,e.distcode=e.distdyn,X={bits:e.distbits},P=tt(on,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,X),e.distbits=X.bits,P){i.msg="invalid distances set",e.mode=V;break}e.mode=gt;case gt:e.mode=bt;case bt:if(h>=6&&c>=258){i.next_out=a,i.avail_out=c,i.next_in=r,i.avail_in=h,e.hold=o,e.bits=l,ir(i,f),a=i.next_out,n=i.output,c=i.avail_out,r=i.next_in,s=i.input,h=i.avail_in,o=e.hold,l=e.bits,e.mode===me&&(e.back=-1);break}for(e.back=0;F=e.lencode[o&(1<<e.lenbits)-1],C=F>>>24,M=F>>>16&255,A=F&65535,!(C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(M&&(M&240)===0){for(S=C,T=M,I=A;F=e.lencode[I+((o&(1<<S+T)-1)>>S)],C=F>>>24,M=F>>>16&255,A=F&65535,!(S+C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=S,l-=S,e.back+=S}if(o>>>=C,l-=C,e.back+=C,e.length=A,M===0){e.mode=ss;break}if(M&32){e.back=-1,e.mode=me;break}if(M&64){i.msg="invalid literal/length code",e.mode=V;break}e.extra=M&15,e.mode=Ji;case Ji:if(e.extra){for(H=e.extra;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.length+=o&(1<<e.extra)-1,o>>>=e.extra,l-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=es;case es:for(;F=e.distcode[o&(1<<e.distbits)-1],C=F>>>24,M=F>>>16&255,A=F&65535,!(C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if((M&240)===0){for(S=C,T=M,I=A;F=e.distcode[I+((o&(1<<S+T)-1)>>S)],C=F>>>24,M=F>>>16&255,A=F&65535,!(S+C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=S,l-=S,e.back+=S}if(o>>>=C,l-=C,e.back+=C,M&64){i.msg="invalid distance code",e.mode=V;break}e.offset=A,e.extra=M&15,e.mode=ts;case ts:if(e.extra){for(H=e.extra;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.offset+=o&(1<<e.extra)-1,o>>>=e.extra,l-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){i.msg="invalid distance too far back",e.mode=V;break}e.mode=is;case is:if(c===0)break e;if(x=f-c,e.offset>x){if(x=e.offset-x,x>e.whave&&e.sane){i.msg="invalid distance too far back",e.mode=V;break}x>e.wnext?(x-=e.wnext,k=e.wsize-x):k=e.wnext-x,x>e.length&&(x=e.length),E=e.window}else E=n,k=a-e.offset,x=e.length;x>c&&(x=c),c-=x,e.length-=x;do n[a++]=E[k++];while(--x);e.length===0&&(e.mode=bt);break;case ss:if(c===0)break e;n[a++]=e.length,c--,e.mode=bt;break;case Zt:if(e.wrap){for(;l<32;){if(h===0)break e;h--,o|=s[r++]<<l,l+=8}if(f-=c,i.total_out+=f,e.total+=f,f&&(i.adler=e.check=e.flags?q(e.check):fi(e.check,n,f,a-f)),f=c,(e.flags?o:as(o))!==e.check){i.msg="incorrect data check",e.mode=V;break}o=0,l=0}e.mode=ns;case ns:if(e.wrap&&e.flags){for(;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(o!==(e.total&4294967295)){i.msg="incorrect length check",e.mode=V;break}o=0,l=0}e.mode=rs;case rs:P=hr;break e;case V:P=cr;break e;case fr:return dr;case _r:default:return Re}return i.next_out=a,i.avail_out=c,i.next_in=r,i.avail_in=h,e.hold=o,e.bits=l,(e.wsize||f!==i.avail_out&&e.mode<V&&(e.mode<Zt||t!==Bi))&&Er(i,i.output,i.next_out,f-i.avail_out),_-=i.avail_in,f-=i.avail_out,i.total_in+=_,i.total_out+=f,e.total+=f,e.wrap&&f&&(i.adler=e.check=e.flags?q(e.check,n,f,i.next_out-f):fi(e.check,n,f,i.next_out-f)),i.data_type=e.bits+(e.last?64:0)+(e.mode===me?128:0)+(e.mode===gt||e.mode===jt?256:0),(_===0&&f===0||t===Bi)&&P===Tt&&(P=ur),P}function cn(){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}class It{constructor(){this.strm=new cn,this.chunkSize=1024*10*10,this.strm.output=new Uint8Array(this.chunkSize),kr(this.strm)}setInput(t){t?(this.strm.input=t,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0):(this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0)}inflate(t){if(t>this.chunkSize&&(this.chunkSize=t,this.strm.output=new Uint8Array(this.chunkSize)),this.strm.next_out=0,this.strm.avail_out=t,Cr(this.strm,0)<0)throw new Error("zlib inflate failed");if(this.strm.next_out!=t)throw new Error("Incomplete zlib block");return new Uint8Array(this.strm.output.buffer,0,this.strm.next_out)}reset(){ln(this.strm)}}var Kr=4,hs=0,ls=1,Ar=2;function Ge(i){for(var t=i.length;--t>=0;)i[t]=0}var Xr=0,Fr=1,Mr=2,Tr=3,Qr=258,wi=29,lt=256,nt=lt+1+wi,Ve=30,mi=19,dn=2*nt+1,Le=15,$t=16,Lr=7,un=256,fn=16,_n=17,xn=18,_i=[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],Kt=[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],Rr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],pn=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Br=512,Ce=new Array((nt+2)*2);Ge(Ce);var it=new Array(Ve*2);Ge(it);var rt=new Array(Br);Ge(rt);var at=new Array(Qr-Tr+1);Ge(at);var vi=new Array(wi);Ge(vi);var Qt=new Array(Ve);Ge(Qt);function Jt(i,t,e,s,n){this.static_tree=i,this.extra_bits=t,this.extra_base=e,this.elems=s,this.max_length=n,this.has_stree=i&&i.length}var gn,bn,wn;function ei(i,t){this.dyn_tree=i,this.max_code=0,this.stat_desc=t}function mn(i){return i<256?rt[i]:rt[256+(i>>>7)]}function Lt(i,t){i.pending_buf[i.pending++]=t&255,i.pending_buf[i.pending++]=t>>>8&255}function ce(i,t,e){i.bi_valid>$t-e?(i.bi_buf|=t<<i.bi_valid&65535,Lt(i,i.bi_buf),i.bi_buf=t>>$t-i.bi_valid,i.bi_valid+=e-$t):(i.bi_buf|=t<<i.bi_valid&65535,i.bi_valid+=e)}function ke(i,t,e){ce(i,e[t*2],e[t*2+1])}function vn(i,t){var e=0;do e|=i&1,i>>>=1,e<<=1;while(--t>0);return e>>>1}function Dr(i,t){var e=t.dyn_tree,s=t.max_code,n=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,h=t.stat_desc.extra_base,c=t.stat_desc.max_length,o,l,_,f,x,k,E=0;for(f=0;f<=Le;f++)i.bl_count[f]=0;for(e[i.heap[i.heap_max]*2+1]=0,o=i.heap_max+1;o<dn;o++)l=i.heap[o],f=e[e[l*2+1]*2+1]+1,f>c&&(f=c,E++),e[l*2+1]=f,!(l>s)&&(i.bl_count[f]++,x=0,l>=h&&(x=a[l-h]),k=e[l*2],i.opt_len+=k*(f+x),r&&(i.static_len+=k*(n[l*2+1]+x)));if(E!==0){do{for(f=c-1;i.bl_count[f]===0;)f--;i.bl_count[f]--,i.bl_count[f+1]+=2,i.bl_count[c]--,E-=2}while(E>0);for(f=c;f!==0;f--)for(l=i.bl_count[f];l!==0;)_=i.heap[--o],!(_>s)&&(e[_*2+1]!==f&&(i.opt_len+=(f-e[_*2+1])*e[_*2],e[_*2+1]=f),l--)}}function yn(i,t,e){var s=new Array(Le+1),n=0,r,a;for(r=1;r<=Le;r++)s[r]=n=n+e[r-1]<<1;for(a=0;a<=t;a++){var h=i[a*2+1];h!==0&&(i[a*2]=vn(s[h]++,h))}}function Ir(){var i,t,e,s,n,r=new Array(Le+1);for(e=0,s=0;s<wi-1;s++)for(vi[s]=e,i=0;i<1<<_i[s];i++)at[e++]=s;for(at[e-1]=s,n=0,s=0;s<16;s++)for(Qt[s]=n,i=0;i<1<<Kt[s];i++)rt[n++]=s;for(n>>=7;s<Ve;s++)for(Qt[s]=n<<7,i=0;i<1<<Kt[s]-7;i++)rt[256+n++]=s;for(t=0;t<=Le;t++)r[t]=0;for(i=0;i<=143;)Ce[i*2+1]=8,i++,r[8]++;for(;i<=255;)Ce[i*2+1]=9,i++,r[9]++;for(;i<=279;)Ce[i*2+1]=7,i++,r[7]++;for(;i<=287;)Ce[i*2+1]=8,i++,r[8]++;for(yn(Ce,nt+1,r),i=0;i<Ve;i++)it[i*2+1]=5,it[i*2]=vn(i,5);gn=new Jt(Ce,_i,lt+1,nt,Le),bn=new Jt(it,Kt,0,Ve,Le),wn=new Jt(new Array(0),Rr,0,mi,Lr)}function kn(i){var t;for(t=0;t<nt;t++)i.dyn_ltree[t*2]=0;for(t=0;t<Ve;t++)i.dyn_dtree[t*2]=0;for(t=0;t<mi;t++)i.bl_tree[t*2]=0;i.dyn_ltree[un*2]=1,i.opt_len=i.static_len=0,i.last_lit=i.matches=0}function Sn(i){i.bi_valid>8?Lt(i,i.bi_buf):i.bi_valid>0&&(i.pending_buf[i.pending++]=i.bi_buf),i.bi_buf=0,i.bi_valid=0}function Pr(i,t,e,s){Sn(i),Lt(i,e),Lt(i,~e),Se(i.pending_buf,i.window,t,e,i.pending),i.pending+=e}function cs(i,t,e,s){var n=t*2,r=e*2;return i[n]<i[r]||i[n]===i[r]&&s[t]<=s[e]}function ti(i,t,e){for(var s=i.heap[e],n=e<<1;n<=i.heap_len&&(n<i.heap_len&&cs(t,i.heap[n+1],i.heap[n],i.depth)&&n++,!cs(t,s,i.heap[n],i.depth));)i.heap[e]=i.heap[n],e=n,n<<=1;i.heap[e]=s}function ds(i,t,e){var s,n,r=0,a,h;if(i.last_lit!==0)do s=i.pending_buf[i.d_buf+r*2]<<8|i.pending_buf[i.d_buf+r*2+1],n=i.pending_buf[i.l_buf+r],r++,s===0?ke(i,n,t):(a=at[n],ke(i,a+lt+1,t),h=_i[a],h!==0&&(n-=vi[a],ce(i,n,h)),s--,a=mn(s),ke(i,a,e),h=Kt[a],h!==0&&(s-=Qt[a],ce(i,s,h)));while(r<i.last_lit);ke(i,un,t)}function xi(i,t){var e=t.dyn_tree,s=t.stat_desc.static_tree,n=t.stat_desc.has_stree,r=t.stat_desc.elems,a,h,c=-1,o;for(i.heap_len=0,i.heap_max=dn,a=0;a<r;a++)e[a*2]!==0?(i.heap[++i.heap_len]=c=a,i.depth[a]=0):e[a*2+1]=0;for(;i.heap_len<2;)o=i.heap[++i.heap_len]=c<2?++c:0,e[o*2]=1,i.depth[o]=0,i.opt_len--,n&&(i.static_len-=s[o*2+1]);for(t.max_code=c,a=i.heap_len>>1;a>=1;a--)ti(i,e,a);o=r;do a=i.heap[1],i.heap[1]=i.heap[i.heap_len--],ti(i,e,1),h=i.heap[1],i.heap[--i.heap_max]=a,i.heap[--i.heap_max]=h,e[o*2]=e[a*2]+e[h*2],i.depth[o]=(i.depth[a]>=i.depth[h]?i.depth[a]:i.depth[h])+1,e[a*2+1]=e[h*2+1]=o,i.heap[1]=o++,ti(i,e,1);while(i.heap_len>=2);i.heap[--i.heap_max]=i.heap[1],Dr(i,t),yn(e,c,i.bl_count)}function us(i,t,e){var s,n=-1,r,a=t[1],h=0,c=7,o=4;for(a===0&&(c=138,o=3),t[(e+1)*2+1]=65535,s=0;s<=e;s++)r=a,a=t[(s+1)*2+1],!(++h<c&&r===a)&&(h<o?i.bl_tree[r*2]+=h:r!==0?(r!==n&&i.bl_tree[r*2]++,i.bl_tree[fn*2]++):h<=10?i.bl_tree[_n*2]++:i.bl_tree[xn*2]++,h=0,n=r,a===0?(c=138,o=3):r===a?(c=6,o=3):(c=7,o=4))}function fs(i,t,e){var s,n=-1,r,a=t[1],h=0,c=7,o=4;for(a===0&&(c=138,o=3),s=0;s<=e;s++)if(r=a,a=t[(s+1)*2+1],!(++h<c&&r===a)){if(h<o)do ke(i,r,i.bl_tree);while(--h!==0);else r!==0?(r!==n&&(ke(i,r,i.bl_tree),h--),ke(i,fn,i.bl_tree),ce(i,h-3,2)):h<=10?(ke(i,_n,i.bl_tree),ce(i,h-3,3)):(ke(i,xn,i.bl_tree),ce(i,h-11,7));h=0,n=r,a===0?(c=138,o=3):r===a?(c=6,o=3):(c=7,o=4)}}function Ur(i){var t;for(us(i,i.dyn_ltree,i.l_desc.max_code),us(i,i.dyn_dtree,i.d_desc.max_code),xi(i,i.bl_desc),t=mi-1;t>=3&&i.bl_tree[pn[t]*2+1]===0;t--);return i.opt_len+=3*(t+1)+5+5+4,t}function Nr(i,t,e,s){var n;for(ce(i,t-257,5),ce(i,e-1,5),ce(i,s-4,4),n=0;n<s;n++)ce(i,i.bl_tree[pn[n]*2+1],3);fs(i,i.dyn_ltree,t-1),fs(i,i.dyn_dtree,e-1)}function Hr(i){var t=4093624447,e;for(e=0;e<=31;e++,t>>>=1)if(t&1&&i.dyn_ltree[e*2]!==0)return hs;if(i.dyn_ltree[18]!==0||i.dyn_ltree[20]!==0||i.dyn_ltree[26]!==0)return ls;for(e=32;e<lt;e++)if(i.dyn_ltree[e*2]!==0)return ls;return hs}var _s=!1;function zr(i){_s||(Ir(),_s=!0),i.l_desc=new ei(i.dyn_ltree,gn),i.d_desc=new ei(i.dyn_dtree,bn),i.bl_desc=new ei(i.bl_tree,wn),i.bi_buf=0,i.bi_valid=0,kn(i)}function En(i,t,e,s){ce(i,(Xr<<1)+(s?1:0),3),Pr(i,t,e)}function Vr(i,t,e,s){var n,r,a=0;i.level>0?(i.strm.data_type===Ar&&(i.strm.data_type=Hr(i)),xi(i,i.l_desc),xi(i,i.d_desc),a=Ur(i),n=i.opt_len+3+7>>>3,r=i.static_len+3+7>>>3,r<=n&&(n=r)):n=r=e+5,e+4<=n&&t!==-1?En(i,t,e,s):i.strategy===Kr||r===n?(ce(i,(Fr<<1)+(s?1:0),3),ds(i,Ce,it)):(ce(i,(Mr<<1)+(s?1:0),3),Nr(i,i.l_desc.max_code+1,i.d_desc.max_code+1,a+1),ds(i,i.dyn_ltree,i.dyn_dtree)),kn(i),s&&Sn(i)}function Xe(i,t,e){return i.pending_buf[i.d_buf+i.last_lit*2]=t>>>8&255,i.pending_buf[i.d_buf+i.last_lit*2+1]=t&255,i.pending_buf[i.l_buf+i.last_lit]=e&255,i.last_lit++,t===0?i.dyn_ltree[e*2]++:(i.matches++,t--,i.dyn_ltree[(at[e]+lt+1)*2]++,i.dyn_dtree[mn(t)*2]++),i.last_lit===i.lit_bufsize-1}const Or={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"},ct=0,xs=3,ot=4,Gr=5,Ne=0,Oe=-2,ii=-5,Cn=-1,Wr=1,wt=2,jr=3,Zr=4,Yr=0,qr=2,yi=8;var $r=15,Jr=8,ea=29,ta=256,pi=ta+1+ea,ia=30,sa=19,na=2*pi+1,ra=15,U=3,Ke=258,fe=Ke+U+1,aa=32,Kn=42,ps=69,si=73,ni=91,ri=103,Je=113,mt=666,J=1,dt=2,ht=3,Pt=4,oa=3;function He(i,t){return i.msg=Or[t],t}function gs(i){return(i<<1)-(i>4?9:0)}function Qe(i){for(var t=i.length;--t>=0;)i[t]=0}function Me(i){var t=i.state,e=t.pending;e>i.avail_out&&(e=i.avail_out),e!==0&&(Se(i.output,t.pending_buf,t.pending_out,e,i.next_out),i.next_out+=e,t.pending_out+=e,i.total_out+=e,i.avail_out-=e,t.pending-=e,t.pending===0&&(t.pending_out=0))}function oe(i,t){Vr(i,i.block_start>=0?i.block_start:-1,i.strstart-i.block_start,t),i.block_start=i.strstart,Me(i.strm)}function O(i,t){i.pending_buf[i.pending++]=t}function ai(i,t){i.pending_buf[i.pending++]=t>>>8&255,i.pending_buf[i.pending++]=t&255}function ha(i,t,e,s){var n=i.avail_in;return n>s&&(n=s),n===0?0:(i.avail_in-=n,Se(t,i.input,i.next_in,n,e),i.state.wrap===1?i.adler=fi(i.adler,t,n,e):i.state.wrap===2&&(i.adler=q(i.adler)),i.next_in+=n,i.total_in+=n,n)}function An(i,t){var e=i.max_chain_length,s=i.strstart,n,r,a=i.prev_length,h=i.nice_match,c=i.strstart>i.w_size-fe?i.strstart-(i.w_size-fe):0,o=i.window,l=i.w_mask,_=i.prev,f=i.strstart+Ke,x=o[s+a-1],k=o[s+a];i.prev_length>=i.good_match&&(e>>=2),h>i.lookahead&&(h=i.lookahead);do if(n=t,!(o[n+a]!==k||o[n+a-1]!==x||o[n]!==o[s]||o[++n]!==o[s+1])){s+=2,n++;do;while(o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&s<f);if(r=Ke-(f-s),s=f-Ke,r>a){if(i.match_start=t,a=r,r>=h)break;x=o[s+a-1],k=o[s+a]}}while((t=_[t&l])>c&&--e!==0);return a<=i.lookahead?a:i.lookahead}function ut(i){var t=i.w_size,e,s,n,r,a;do{if(r=i.window_size-i.lookahead-i.strstart,i.strstart>=t+(t-fe)){Se(i.window,i.window,t,t,0),i.match_start-=t,i.strstart-=t,i.block_start-=t,s=i.hash_size,e=s;do n=i.head[--e],i.head[e]=n>=t?n-t:0;while(--s);s=t,e=s;do n=i.prev[--e],i.prev[e]=n>=t?n-t:0;while(--s);r+=t}if(i.strm.avail_in===0)break;if(s=ha(i.strm,i.window,i.strstart+i.lookahead,r),i.lookahead+=s,i.lookahead+i.insert>=U)for(a=i.strstart-i.insert,i.ins_h=i.window[a],i.ins_h=(i.ins_h<<i.hash_shift^i.window[a+1])&i.hash_mask;i.insert&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[a+U-1])&i.hash_mask,i.prev[a&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=a,a++,i.insert--,!(i.lookahead+i.insert<U)););}while(i.lookahead<fe&&i.strm.avail_in!==0)}function la(i,t){var e=65535;for(e>i.pending_buf_size-5&&(e=i.pending_buf_size-5);;){if(i.lookahead<=1){if(ut(i),i.lookahead===0&&t===ct)return J;if(i.lookahead===0)break}i.strstart+=i.lookahead,i.lookahead=0;var s=i.block_start+e;if((i.strstart===0||i.strstart>=s)&&(i.lookahead=i.strstart-s,i.strstart=s,oe(i,!1),i.strm.avail_out===0)||i.strstart-i.block_start>=i.w_size-fe&&(oe(i,!1),i.strm.avail_out===0))return J}return i.insert=0,t===ot?(oe(i,!0),i.strm.avail_out===0?ht:Pt):(i.strstart>i.block_start&&(oe(i,!1),i.strm.avail_out===0),J)}function oi(i,t){for(var e,s;;){if(i.lookahead<fe){if(ut(i),i.lookahead<fe&&t===ct)return J;if(i.lookahead===0)break}if(e=0,i.lookahead>=U&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),e!==0&&i.strstart-e<=i.w_size-fe&&(i.match_length=An(i,e)),i.match_length>=U)if(s=Xe(i,i.strstart-i.match_start,i.match_length-U),i.lookahead-=i.match_length,i.match_length<=i.max_lazy_match&&i.lookahead>=U){i.match_length--;do i.strstart++,i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart;while(--i.match_length!==0);i.strstart++}else i.strstart+=i.match_length,i.match_length=0,i.ins_h=i.window[i.strstart],i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+1])&i.hash_mask;else s=Xe(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++;if(s&&(oe(i,!1),i.strm.avail_out===0))return J}return i.insert=i.strstart<U-1?i.strstart:U-1,t===ot?(oe(i,!0),i.strm.avail_out===0?ht:Pt):i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function Ie(i,t){for(var e,s,n;;){if(i.lookahead<fe){if(ut(i),i.lookahead<fe&&t===ct)return J;if(i.lookahead===0)break}if(e=0,i.lookahead>=U&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),i.prev_length=i.match_length,i.prev_match=i.match_start,i.match_length=U-1,e!==0&&i.prev_length<i.max_lazy_match&&i.strstart-e<=i.w_size-fe&&(i.match_length=An(i,e),i.match_length<=5&&(i.strategy===Wr||i.match_length===U&&i.strstart-i.match_start>4096)&&(i.match_length=U-1)),i.prev_length>=U&&i.match_length<=i.prev_length){n=i.strstart+i.lookahead-U,s=Xe(i,i.strstart-1-i.prev_match,i.prev_length-U),i.lookahead-=i.prev_length-1,i.prev_length-=2;do++i.strstart<=n&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart);while(--i.prev_length!==0);if(i.match_available=0,i.match_length=U-1,i.strstart++,s&&(oe(i,!1),i.strm.avail_out===0))return J}else if(i.match_available){if(s=Xe(i,0,i.window[i.strstart-1]),s&&oe(i,!1),i.strstart++,i.lookahead--,i.strm.avail_out===0)return J}else i.match_available=1,i.strstart++,i.lookahead--}return i.match_available&&(s=Xe(i,0,i.window[i.strstart-1]),i.match_available=0),i.insert=i.strstart<U-1?i.strstart:U-1,t===ot?(oe(i,!0),i.strm.avail_out===0?ht:Pt):i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function ca(i,t){for(var e,s,n,r,a=i.window;!(i.lookahead<=Ke&&(ut(i),i.lookahead<=Ke,i.lookahead===0));){if(i.match_length=0,i.lookahead>=U&&i.strstart>0&&(n=i.strstart-1,s=a[n],s===a[++n]&&s===a[++n]&&s===a[++n])){r=i.strstart+Ke;do;while(s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&n<r);i.match_length=Ke-(r-n),i.match_length>i.lookahead&&(i.match_length=i.lookahead)}if(i.match_length>=U?(e=Xe(i,1,i.match_length-U),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(e=Xe(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),e&&(oe(i,!1),i.strm.avail_out===0))return J}return i.insert=0,i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function da(i,t){for(var e;!(i.lookahead===0&&(ut(i),i.lookahead===0));)if(i.match_length=0,e=Xe(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,e&&(oe(i,!1),i.strm.avail_out===0))return J;return i.insert=0,i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function pe(i,t,e,s,n){this.good_length=i,this.max_lazy=t,this.nice_length=e,this.max_chain=s,this.func=n}var ze;ze=[new pe(0,0,0,0,la),new pe(4,4,8,4,oi),new pe(4,5,16,8,oi),new pe(4,6,32,32,oi),new pe(4,4,16,16,Ie),new pe(8,16,32,32,Ie),new pe(8,16,128,128,Ie),new pe(8,32,128,256,Ie),new pe(32,128,258,1024,Ie),new pe(32,258,258,4096,Ie)];function ua(i){i.window_size=2*i.w_size,Qe(i.head),i.max_lazy_match=ze[i.level].max_lazy,i.good_match=ze[i.level].good_length,i.nice_match=ze[i.level].nice_length,i.max_chain_length=ze[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=U-1,i.match_available=0,i.ins_h=0}function fa(){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=yi,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 de(na*2),this.dyn_dtree=new de((2*ia+1)*2),this.bl_tree=new de((2*sa+1)*2),Qe(this.dyn_ltree),Qe(this.dyn_dtree),Qe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new de(ra+1),this.heap=new de(2*pi+1),Qe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new de(2*pi+1),Qe(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function _a(i){var t;return!i||!i.state?He(i,Oe):(i.total_in=i.total_out=0,i.data_type=qr,t=i.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?Kn:Je,i.adler=t.wrap===2?0:1,t.last_flush=ct,zr(t),Ne)}function xa(i){var t=_a(i);return t===Ne&&ua(i.state),t}function pa(i,t,e,s,n,r){if(!i)return Oe;var a=1;if(t===Cn&&(t=6),t<0||t>9||r<0||r>Zr)return He(i,Oe);var h=new fa;return i.state=h,h.strm=i,h.wrap=a,h.gzhead=null,h.w_bits=s,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=n+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+U-1)/U),h.window=new Ft(h.w_size*2),h.head=new de(h.hash_size),h.prev=new de(h.w_size),h.lit_bufsize=1<<n+6,h.pending_buf_size=h.lit_bufsize*4,h.pending_buf=new Ft(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=t,h.strategy=r,h.method=e,xa(i)}function ga(i,t){return pa(i,t,yi,$r,Jr,Yr)}function bs(i,t){var e,s,n,r;if(!i||!i.state||t>Gr||t<0)return i?He(i,Oe):Oe;if(s=i.state,!i.output||!i.input&&i.avail_in!==0||s.status===mt&&t!==ot)return He(i,i.avail_out===0?ii:Oe);if(s.strm=i,e=s.last_flush,s.last_flush=t,s.status===Kn)if(s.wrap===2)i.adler=0,O(s,31),O(s,139),O(s,8),s.gzhead?(O(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),O(s,s.gzhead.time&255),O(s,s.gzhead.time>>8&255),O(s,s.gzhead.time>>16&255),O(s,s.gzhead.time>>24&255),O(s,s.level===9?2:s.strategy>=wt||s.level<2?4:0),O(s,s.gzhead.os&255),s.gzhead.extra&&s.gzhead.extra.length&&(O(s,s.gzhead.extra.length&255),O(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(i.adler=q(i.adler,s.pending_buf,s.pending)),s.gzindex=0,s.status=ps):(O(s,0),O(s,0),O(s,0),O(s,0),O(s,0),O(s,s.level===9?2:s.strategy>=wt||s.level<2?4:0),O(s,oa),s.status=Je);else{var a=yi+(s.w_bits-8<<4)<<8,h=-1;s.strategy>=wt||s.level<2?h=0:s.level<6?h=1:s.level===6?h=2:h=3,a|=h<<6,s.strstart!==0&&(a|=aa),a+=31-a%31,s.status=Je,ai(s,a),s.strstart!==0&&(ai(s,i.adler>>>16),ai(s,i.adler&65535)),i.adler=1}if(s.status===ps)if(s.gzhead.extra){for(n=s.pending;s.gzindex<(s.gzhead.extra.length&65535)&&!(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),Me(i),n=s.pending,s.pending===s.pending_buf_size));)O(s,s.gzhead.extra[s.gzindex]&255),s.gzindex++;s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=si)}else s.status=si;if(s.status===si)if(s.gzhead.name){n=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),Me(i),n=s.pending,s.pending===s.pending_buf_size)){r=1;break}s.gzindex<s.gzhead.name.length?r=s.gzhead.name.charCodeAt(s.gzindex++)&255:r=0,O(s,r)}while(r!==0);s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),r===0&&(s.gzindex=0,s.status=ni)}else s.status=ni;if(s.status===ni)if(s.gzhead.comment){n=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),Me(i),n=s.pending,s.pending===s.pending_buf_size)){r=1;break}s.gzindex<s.gzhead.comment.length?r=s.gzhead.comment.charCodeAt(s.gzindex++)&255:r=0,O(s,r)}while(r!==0);s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),r===0&&(s.status=ri)}else s.status=ri;if(s.status===ri&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&Me(i),s.pending+2<=s.pending_buf_size&&(O(s,i.adler&255),O(s,i.adler>>8&255),i.adler=0,s.status=Je)):s.status=Je),s.pending!==0){if(Me(i),i.avail_out===0)return s.last_flush=-1,Ne}else if(i.avail_in===0&&gs(t)<=gs(e)&&t!==ot)return He(i,ii);if(s.status===mt&&i.avail_in!==0)return He(i,ii);if(i.avail_in!==0||s.lookahead!==0||s.status!==mt){var c=s.strategy===wt?da(s):s.strategy===jr?ca(s,t):ze[s.level].func(s,t);if((c===ht||c===Pt)&&(s.status=mt),c===J||c===ht)return i.avail_out===0&&(s.last_flush=-1),Ne;if(c===dt&&(En(s,0,0,!1),Qe(s.head),s.lookahead===0&&(s.strstart=0,s.block_start=0,s.insert=0),Me(i),i.avail_out===0))return s.last_flush=-1,Ne}return Ne}class ba{constructor(){this.strm=new cn,this.chunkSize=1024*10*10,this.outputBuffer=new Uint8Array(this.chunkSize),ga(this.strm,Cn)}deflate(t){this.strm.input=t,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0,this.strm.output=this.outputBuffer,this.strm.avail_out=this.chunkSize,this.strm.next_out=0;let e=bs(this.strm,xs),s=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);if(e<0)throw new Error("zlib deflate failed");if(this.strm.avail_in>0){let n=[s],r=s.length;do{if(this.strm.output=new Uint8Array(this.chunkSize),this.strm.next_out=0,this.strm.avail_out=this.chunkSize,e=bs(this.strm,xs),e<0)throw new Error("zlib deflate failed");let c=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);r+=c.length,n.push(c)}while(this.strm.avail_in>0);let a=new Uint8Array(r),h=0;for(let c=0;c<n.length;c++)a.set(n[c],h),h+=n[c].length;s=a}return this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0,s}}const u={XK_BackSpace:65288,XK_Tab:65289,XK_Clear:65291,XK_Return:65293,XK_Pause:65299,XK_Scroll_Lock:65300,XK_Escape:65307,XK_Delete:65535,XK_Multi_key:65312,XK_Codeinput:65335,XK_SingleCandidate:65340,XK_MultipleCandidate:65341,XK_PreviousCandidate:65342,XK_Kanji:65313,XK_Muhenkan:65314,XK_Henkan:65315,XK_Romaji:65316,XK_Hiragana:65317,XK_Katakana:65318,XK_Hiragana_Katakana:65319,XK_Zenkaku:65320,XK_Hankaku:65321,XK_Zenkaku_Hankaku:65322,XK_Kana_Shift:65326,XK_Eisu_toggle:65328,XK_Home:65360,XK_Left:65361,XK_Up:65362,XK_Right:65363,XK_Down:65364,XK_Prior:65365,XK_Next:65366,XK_End:65367,XK_Select:65376,XK_Print:65377,XK_Execute:65378,XK_Insert:65379,XK_Undo:65381,XK_Redo:65382,XK_Menu:65383,XK_Find:65384,XK_Cancel:65385,XK_Help:65386,XK_Mode_switch:65406,XK_Num_Lock:65407,XK_KP_Space:65408,XK_KP_Enter:65421,XK_KP_Home:65429,XK_KP_Left:65430,XK_KP_Up:65431,XK_KP_Right:65432,XK_KP_Down:65433,XK_KP_Prior:65434,XK_KP_Next:65435,XK_KP_End:65436,XK_KP_Begin:65437,XK_KP_Insert:65438,XK_KP_Delete:65439,XK_KP_Equal:65469,XK_KP_Multiply:65450,XK_KP_Add:65451,XK_KP_Separator:65452,XK_KP_Subtract:65453,XK_KP_Decimal:65454,XK_KP_Divide:65455,XK_KP_0:65456,XK_KP_1:65457,XK_KP_2:65458,XK_KP_3:65459,XK_KP_4:65460,XK_KP_5:65461,XK_KP_6:65462,XK_KP_7:65463,XK_KP_8:65464,XK_KP_9:65465,XK_F1:65470,XK_F2:65471,XK_F3:65472,XK_F4:65473,XK_F5:65474,XK_F6:65475,XK_F7:65476,XK_F8:65477,XK_F9:65478,XK_F10:65479,XK_F11:65480,XK_F12:65481,XK_F13:65482,XK_F14:65483,XK_F15:65484,XK_F16:65485,XK_F17:65486,XK_F18:65487,XK_F19:65488,XK_F20:65489,XK_F21:65490,XK_F22:65491,XK_F23:65492,XK_F24:65493,XK_F25:65494,XK_F26:65495,XK_F27:65496,XK_F28:65497,XK_F29:65498,XK_F30:65499,XK_F31:65500,XK_F32:65501,XK_F33:65502,XK_F34:65503,XK_F35:65504,XK_Shift_L:65505,XK_Shift_R:65506,XK_Control_L:65507,XK_Control_R:65508,XK_Caps_Lock:65509,XK_Meta_L:65511,XK_Meta_R:65512,XK_Alt_L:65513,XK_Alt_R:65514,XK_Super_L:65515,XK_Super_R:65516,XK_ISO_Level3_Shift:65027,XK_ISO_Next_Group:65032,XK_ISO_Prev_Group:65034,XK_ISO_First_Group:65036,XK_ISO_Last_Group:65038,XK_space:32,XK_asterisk:42,XK_plus:43,XK_comma:44,XK_minus:45,XK_period:46,XK_slash:47,XK_0:48,XK_1:49,XK_2:50,XK_3:51,XK_4:52,XK_5:53,XK_6:54,XK_7:55,XK_8:56,XK_9:57,XK_equal:61,XK_Hangul:65329,XK_Hangul_Hanja:65332,XK_Hangul_Jeonja:65336,XF86XK_MonBrightnessUp:269025026,XF86XK_MonBrightnessDown:269025027,XF86XK_Standby:269025040,XF86XK_AudioLowerVolume:269025041,XF86XK_AudioMute:269025042,XF86XK_AudioRaiseVolume:269025043,XF86XK_AudioPlay:269025044,XF86XK_AudioStop:269025045,XF86XK_AudioPrev:269025046,XF86XK_AudioNext:269025047,XF86XK_HomePage:269025048,XF86XK_Mail:269025049,XF86XK_Search:269025051,XF86XK_AudioRecord:269025052,XF86XK_Calculator:269025053,XF86XK_Calendar:269025056,XF86XK_PowerDown:269025057,XF86XK_Back:269025062,XF86XK_Forward:269025063,XF86XK_Stop:269025064,XF86XK_Refresh:269025065,XF86XK_PowerOff:269025066,XF86XK_WakeUp:269025067,XF86XK_Eject:269025068,XF86XK_ScreenSaver:269025069,XF86XK_WWW:269025070,XF86XK_Favorites:269025072,XF86XK_AudioPause:269025073,XF86XK_AudioMedia:269025074,XF86XK_MyComputer:269025075,XF86XK_BrightnessAdjust:269025083,XF86XK_AudioRewind:269025086,XF86XK_Close:269025110,XF86XK_Copy:269025111,XF86XK_Cut:269025112,XF86XK_Excel:269025116,XF86XK_LogOff:269025121,XF86XK_New:269025128,XF86XK_Open:269025131,XF86XK_Paste:269025133,XF86XK_Phone:269025134,XF86XK_Reply:269025138,XF86XK_Save:269025143,XF86XK_Send:269025147,XF86XK_Spell:269025148,XF86XK_SplitScreen:269025149,XF86XK_Word:269025161,XF86XK_ZoomIn:269025163,XF86XK_ZoomOut:269025164,XF86XK_WebCam:269025167,XF86XK_MailForward:269025168,XF86XK_Music:269025170,XF86XK_AudioForward:269025175,XF86XK_AudioRandomPlay:269025177,XF86XK_Subtitle:269025178,XF86XK_AudioCycleTrack:269025179,XF86XK_Hibernate:269025192,XF86XK_AudioMicMute:269025202,XF86XK_Next_VMode:269024802},wa={256:960,257:992,258:451,259:483,260:417,261:433,262:454,263:486,264:710,265:742,266:709,267:741,268:456,269:488,270:463,271:495,272:464,273:496,274:938,275:954,278:972,279:1004,280:458,281:490,282:460,283:492,284:728,285:760,286:683,287:699,288:725,289:757,290:939,291:955,292:678,293:694,294:673,295:689,296:933,297:949,298:975,299:1007,302:967,303:999,304:681,305:697,308:684,309:700,310:979,311:1011,312:930,313:453,314:485,315:934,316:950,317:421,318:437,321:419,322:435,323:465,324:497,325:977,326:1009,327:466,328:498,330:957,331:959,332:978,333:1010,336:469,337:501,338:5052,339:5053,340:448,341:480,342:931,343:947,344:472,345:504,346:422,347:438,348:734,349:766,350:426,351:442,352:425,353:441,354:478,355:510,356:427,357:443,358:940,359:956,360:989,361:1021,362:990,363:1022,364:733,365:765,366:473,367:505,368:475,369:507,370:985,371:1017,376:5054,377:428,378:444,379:431,380:447,381:430,382:446,402:2294,466:16777681,711:439,728:418,729:511,731:434,733:445,901:1966,902:1953,904:1954,905:1955,906:1956,908:1959,910:1960,911:1963,912:1974,913:1985,914:1986,915:1987,916:1988,917:1989,918:1990,919:1991,920:1992,921:1993,922:1994,923:1995,924:1996,925:1997,926:1998,927:1999,928:2e3,929:2001,931:2002,932:2004,933:2005,934:2006,935:2007,936:2008,937:2009,938:1957,939:1961,940:1969,941:1970,942:1971,943:1972,944:1978,945:2017,946:2018,947:2019,948:2020,949:2021,950:2022,951:2023,952:2024,953:2025,954:2026,955:2027,956:2028,957:2029,958:2030,959:2031,960:2032,961:2033,962:2035,963:2034,964:2036,965:2037,966:2038,967:2039,968:2040,969:2041,970:1973,971:1977,972:1975,973:1976,974:1979,1025:1715,1026:1713,1027:1714,1028:1716,1029:1717,1030:1718,1031:1719,1032:1720,1033:1721,1034:1722,1035:1723,1036:1724,1038:1726,1039:1727,1040:1761,1041:1762,1042:1783,1043:1767,1044:1764,1045:1765,1046:1782,1047:1786,1048:1769,1049:1770,1050:1771,1051:1772,1052:1773,1053:1774,1054:1775,1055:1776,1056:1778,1057:1779,1058:1780,1059:1781,1060:1766,1061:1768,1062:1763,1063:1790,1064:1787,1065:1789,1066:1791,1067:1785,1068:1784,1069:1788,1070:1760,1071:1777,1072:1729,1073:1730,1074:1751,1075:1735,1076:1732,1077:1733,1078:1750,1079:1754,1080:1737,1081:1738,1082:1739,1083:1740,1084:1741,1085:1742,1086:1743,1087:1744,1088:1746,1089:1747,1090:1748,1091:1749,1092:1734,1093:1736,1094:1731,1095:1758,1096:1755,1097:1757,1098:1759,1099:1753,1100:1752,1101:1756,1102:1728,1103:1745,1105:1699,1106:1697,1107:1698,1108:1700,1109:1701,1110:1702,1111:1703,1112:1704,1113:1705,1114:1706,1115:1707,1116:1708,1118:1710,1119:1711,1168:1725,1169:1709,1488:3296,1489:3297,1490:3298,1491:3299,1492:3300,1493:3301,1494:3302,1495:3303,1496:3304,1497:3305,1498:3306,1499:3307,1500:3308,1501:3309,1502:3310,1503:3311,1504:3312,1505:3313,1506:3314,1507:3315,1508:3316,1509:3317,1510:3318,1511:3319,1512:3320,1513:3321,1514:3322,1548:1452,1563:1467,1567:1471,1569:1473,1570:1474,1571:1475,1572:1476,1573:1477,1574:1478,1575:1479,1576:1480,1577:1481,1578:1482,1579:1483,1580:1484,1581:1485,1582:1486,1583:1487,1584:1488,1585:1489,1586:1490,1587:1491,1588:1492,1589:1493,1590:1494,1591:1495,1592:1496,1593:1497,1594:1498,1600:1504,1601:1505,1602:1506,1603:1507,1604:1508,1605:1509,1606:1510,1607:1511,1608:1512,1609:1513,1610:1514,1611:1515,1612:1516,1613:1517,1614:1518,1615:1519,1616:1520,1617:1521,1618:1522,3585:3489,3586:3490,3587:3491,3588:3492,3589:3493,3590:3494,3591:3495,3592:3496,3593:3497,3594:3498,3595:3499,3596:3500,3597:3501,3598:3502,3599:3503,3600:3504,3601:3505,3602:3506,3603:3507,3604:3508,3605:3509,3606:3510,3607:3511,3608:3512,3609:3513,3610:3514,3611:3515,3612:3516,3613:3517,3614:3518,3615:3519,3616:3520,3617:3521,3618:3522,3619:3523,3620:3524,3621:3525,3622:3526,3623:3527,3624:3528,3625:3529,3626:3530,3627:3531,3628:3532,3629:3533,3630:3534,3631:3535,3632:3536,3633:3537,3634:3538,3635:3539,3636:3540,3637:3541,3638:3542,3639:3543,3640:3544,3641:3545,3642:3546,3647:3551,3648:3552,3649:3553,3650:3554,3651:3555,3652:3556,3653:3557,3654:3558,3655:3559,3656:3560,3657:3561,3658:3562,3659:3563,3660:3564,3661:3565,3664:3568,3665:3569,3666:3570,3667:3571,3668:3572,3669:3573,3670:3574,3671:3575,3672:3576,3673:3577,8194:2722,8195:2721,8196:2723,8197:2724,8199:2725,8200:2726,8201:2727,8202:2728,8210:2747,8211:2730,8212:2729,8213:1967,8215:3295,8216:2768,8217:2769,8218:2813,8220:2770,8221:2771,8222:2814,8224:2801,8225:2802,8226:2790,8229:2735,8230:2734,8240:2773,8242:2774,8243:2775,8248:2812,8254:1150,8361:3839,8364:8364,8453:2744,8470:1712,8471:2811,8478:2772,8482:2761,8531:2736,8532:2737,8533:2738,8534:2739,8535:2740,8536:2741,8537:2742,8538:2743,8539:2755,8540:2756,8541:2757,8542:2758,8592:2299,8593:2300,8594:2301,8595:2302,8658:2254,8660:2253,8706:2287,8711:2245,8728:3018,8730:2262,8733:2241,8734:2242,8743:2270,8744:2271,8745:2268,8746:2269,8747:2239,8756:2240,8764:2248,8771:2249,8773:16785992,8800:2237,8801:2255,8804:2236,8805:2238,8834:2266,8835:2267,8866:3068,8867:3036,8868:3010,8869:3022,8968:3027,8970:3012,8981:2810,8992:2212,8993:2213,9109:3020,9115:2219,9117:2220,9118:2221,9120:2222,9121:2215,9123:2216,9124:2217,9126:2218,9128:2223,9132:2224,9143:2209,9146:2543,9147:2544,9148:2546,9149:2547,9225:2530,9226:2533,9227:2537,9228:2531,9229:2532,9251:2732,9252:2536,9472:2211,9474:2214,9484:2210,9488:2539,9492:2541,9496:2538,9500:2548,9508:2549,9516:2551,9524:2550,9532:2542,9618:2529,9642:2791,9643:2785,9644:2779,9645:2786,9646:2783,9647:2767,9650:2792,9651:2787,9654:2781,9655:2765,9660:2793,9661:2788,9664:2780,9665:2764,9670:2528,9675:2766,9679:2782,9702:2784,9734:2789,9742:2809,9747:2762,9756:2794,9758:2795,9792:2808,9794:2807,9827:2796,9829:2798,9830:2797,9837:2806,9839:2805,10003:2803,10007:2804,10013:2777,10016:2800,10216:2748,10217:2750,12289:1188,12290:1185,12300:1186,12301:1187,12443:1246,12444:1247,12449:1191,12450:1201,12451:1192,12452:1202,12453:1193,12454:1203,12455:1194,12456:1204,12457:1195,12458:1205,12459:1206,12461:1207,12463:1208,12465:1209,12467:1210,12469:1211,12471:1212,12473:1213,12475:1214,12477:1215,12479:1216,12481:1217,12483:1199,12484:1218,12486:1219,12488:1220,12490:1221,12491:1222,12492:1223,12493:1224,12494:1225,12495:1226,12498:1227,12501:1228,12504:1229,12507:1230,12510:1231,12511:1232,12512:1233,12513:1234,12514:1235,12515:1196,12516:1236,12517:1197,12518:1237,12519:1198,12520:1238,12521:1239,12522:1240,12523:1241,12524:1242,12525:1243,12527:1244,12530:1190,12531:1245,12539:1189,12540:1200},ma={lookup(i){if(i>=32&&i<=255)return i;const t=wa[i];return t!==void 0?t:16777216|i}},ws={8:"Backspace",9:"Tab",10:"NumpadClear",13:"Enter",16:"ShiftLeft",17:"ControlLeft",18:"AltLeft",19:"Pause",20:"CapsLock",21:"Lang1",25:"Lang2",27:"Escape",28:"Convert",29:"NonConvert",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",44:"PrintScreen",45:"Insert",46:"Delete",47:"Help",48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",91:"MetaLeft",92:"MetaRight",93:"ContextMenu",95:"Sleep",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",106:"NumpadMultiply",107:"NumpadAdd",108:"NumpadDecimal",109:"NumpadSubtract",110:"NumpadDecimal",111:"NumpadDivide",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",124:"F13",125:"F14",126:"F15",127:"F16",128:"F17",129:"F18",130:"F19",131:"F20",132:"F21",133:"F22",134:"F23",135:"F24",144:"NumLock",145:"ScrollLock",166:"BrowserBack",167:"BrowserForward",168:"BrowserRefresh",169:"BrowserStop",170:"BrowserSearch",171:"BrowserFavorites",172:"BrowserHome",173:"AudioVolumeMute",174:"AudioVolumeDown",175:"AudioVolumeUp",176:"MediaTrackNext",177:"MediaTrackPrevious",178:"MediaStop",179:"MediaPlayPause",180:"LaunchMail",181:"MediaSelect",182:"LaunchApp1",183:"LaunchApp2",225:"AltRight"},ms={Backspace:"Backspace",AltLeft:"Alt",AltRight:"Alt",CapsLock:"CapsLock",ContextMenu:"ContextMenu",ControlLeft:"Control",ControlRight:"Control",Enter:"Enter",MetaLeft:"Meta",MetaRight:"Meta",ShiftLeft:"Shift",ShiftRight:"Shift",Tab:"Tab",Delete:"Delete",End:"End",Help:"Help",Home:"Home",Insert:"Insert",PageDown:"PageDown",PageUp:"PageUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",ArrowUp:"ArrowUp",NumLock:"NumLock",NumpadBackspace:"Backspace",NumpadClear:"Clear",Escape:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",F13:"F13",F14:"F14",F15:"F15",F16:"F16",F17:"F17",F18:"F18",F19:"F19",F20:"F20",F21:"F21",F22:"F22",F23:"F23",F24:"F24",F25:"F25",F26:"F26",F27:"F27",F28:"F28",F29:"F29",F30:"F30",F31:"F31",F32:"F32",F33:"F33",F34:"F34",F35:"F35",PrintScreen:"PrintScreen",ScrollLock:"ScrollLock",Pause:"Pause",BrowserBack:"BrowserBack",BrowserFavorites:"BrowserFavorites",BrowserForward:"BrowserForward",BrowserHome:"BrowserHome",BrowserRefresh:"BrowserRefresh",BrowserSearch:"BrowserSearch",BrowserStop:"BrowserStop",Eject:"Eject",LaunchApp1:"LaunchMyComputer",LaunchApp2:"LaunchCalendar",LaunchMail:"LaunchMail",MediaPlayPause:"MediaPlay",MediaStop:"MediaStop",MediaTrackNext:"MediaTrackNext",MediaTrackPrevious:"MediaTrackPrevious",Power:"Power",Sleep:"Sleep",AudioVolumeDown:"AudioVolumeDown",AudioVolumeMute:"AudioVolumeMute",AudioVolumeUp:"AudioVolumeUp",WakeUp:"WakeUp"},Fe={};function m(i,t){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in Fe)throw new Error('Duplicate entry for key "'+i+'"');Fe[i]=[t,t,t,t]}function Ut(i,t,e){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(e===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in Fe)throw new Error('Duplicate entry for key "'+i+'"');Fe[i]=[t,t,e,t]}function N(i,t,e){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(e===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in Fe)throw new Error('Duplicate entry for key "'+i+'"');Fe[i]=[t,t,t,e]}Ut("Alt",u.XK_Alt_L,u.XK_Alt_R);m("AltGraph",u.XK_ISO_Level3_Shift);m("CapsLock",u.XK_Caps_Lock);Ut("Control",u.XK_Control_L,u.XK_Control_R);Ut("Meta",u.XK_Super_L,u.XK_Super_R);m("NumLock",u.XK_Num_Lock);m("ScrollLock",u.XK_Scroll_Lock);Ut("Shift",u.XK_Shift_L,u.XK_Shift_R);N("Enter",u.XK_Return,u.XK_KP_Enter);m("Tab",u.XK_Tab);N(" ",u.XK_space,u.XK_KP_Space);N("ArrowDown",u.XK_Down,u.XK_KP_Down);N("ArrowLeft",u.XK_Left,u.XK_KP_Left);N("ArrowRight",u.XK_Right,u.XK_KP_Right);N("ArrowUp",u.XK_Up,u.XK_KP_Up);N("End",u.XK_End,u.XK_KP_End);N("Home",u.XK_Home,u.XK_KP_Home);N("PageDown",u.XK_Next,u.XK_KP_Next);N("PageUp",u.XK_Prior,u.XK_KP_Prior);m("Backspace",u.XK_BackSpace);N("Clear",u.XK_Clear,u.XK_KP_Begin);m("Copy",u.XF86XK_Copy);m("Cut",u.XF86XK_Cut);N("Delete",u.XK_Delete,u.XK_KP_Delete);N("Insert",u.XK_Insert,u.XK_KP_Insert);m("Paste",u.XF86XK_Paste);m("Redo",u.XK_Redo);m("Undo",u.XK_Undo);m("Cancel",u.XK_Cancel);m("ContextMenu",u.XK_Menu);m("Escape",u.XK_Escape);m("Execute",u.XK_Execute);m("Find",u.XK_Find);m("Help",u.XK_Help);m("Pause",u.XK_Pause);m("Select",u.XK_Select);m("ZoomIn",u.XF86XK_ZoomIn);m("ZoomOut",u.XF86XK_ZoomOut);m("BrightnessDown",u.XF86XK_MonBrightnessDown);m("BrightnessUp",u.XF86XK_MonBrightnessUp);m("Eject",u.XF86XK_Eject);m("LogOff",u.XF86XK_LogOff);m("Power",u.XF86XK_PowerOff);m("PowerOff",u.XF86XK_PowerDown);m("PrintScreen",u.XK_Print);m("Hibernate",u.XF86XK_Hibernate);m("Standby",u.XF86XK_Standby);m("WakeUp",u.XF86XK_WakeUp);m("AllCandidates",u.XK_MultipleCandidate);m("Alphanumeric",u.XK_Eisu_toggle);m("CodeInput",u.XK_Codeinput);m("Compose",u.XK_Multi_key);m("Convert",u.XK_Henkan);m("GroupFirst",u.XK_ISO_First_Group);m("GroupLast",u.XK_ISO_Last_Group);m("GroupNext",u.XK_ISO_Next_Group);m("GroupPrevious",u.XK_ISO_Prev_Group);m("NonConvert",u.XK_Muhenkan);m("PreviousCandidate",u.XK_PreviousCandidate);m("SingleCandidate",u.XK_SingleCandidate);m("HangulMode",u.XK_Hangul);m("HanjaMode",u.XK_Hangul_Hanja);m("JunjaMode",u.XK_Hangul_Jeonja);m("Eisu",u.XK_Eisu_toggle);m("Hankaku",u.XK_Hankaku);m("Hiragana",u.XK_Hiragana);m("HiraganaKatakana",u.XK_Hiragana_Katakana);m("KanaMode",u.XK_Kana_Shift);m("KanjiMode",u.XK_Kanji);m("Katakana",u.XK_Katakana);m("Romaji",u.XK_Romaji);m("Zenkaku",u.XK_Zenkaku);m("ZenkakuHankaku",u.XK_Zenkaku_Hankaku);m("F1",u.XK_F1);m("F2",u.XK_F2);m("F3",u.XK_F3);m("F4",u.XK_F4);m("F5",u.XK_F5);m("F6",u.XK_F6);m("F7",u.XK_F7);m("F8",u.XK_F8);m("F9",u.XK_F9);m("F10",u.XK_F10);m("F11",u.XK_F11);m("F12",u.XK_F12);m("F13",u.XK_F13);m("F14",u.XK_F14);m("F15",u.XK_F15);m("F16",u.XK_F16);m("F17",u.XK_F17);m("F18",u.XK_F18);m("F19",u.XK_F19);m("F20",u.XK_F20);m("F21",u.XK_F21);m("F22",u.XK_F22);m("F23",u.XK_F23);m("F24",u.XK_F24);m("F25",u.XK_F25);m("F26",u.XK_F26);m("F27",u.XK_F27);m("F28",u.XK_F28);m("F29",u.XK_F29);m("F30",u.XK_F30);m("F31",u.XK_F31);m("F32",u.XK_F32);m("F33",u.XK_F33);m("F34",u.XK_F34);m("F35",u.XK_F35);m("Close",u.XF86XK_Close);m("MailForward",u.XF86XK_MailForward);m("MailReply",u.XF86XK_Reply);m("MailSend",u.XF86XK_Send);m("MediaFastForward",u.XF86XK_AudioForward);m("MediaPause",u.XF86XK_AudioPause);m("MediaPlay",u.XF86XK_AudioPlay);m("MediaRecord",u.XF86XK_AudioRecord);m("MediaRewind",u.XF86XK_AudioRewind);m("MediaStop",u.XF86XK_AudioStop);m("MediaTrackNext",u.XF86XK_AudioNext);m("MediaTrackPrevious",u.XF86XK_AudioPrev);m("New",u.XF86XK_New);m("Open",u.XF86XK_Open);m("Print",u.XK_Print);m("Save",u.XF86XK_Save);m("SpellCheck",u.XF86XK_Spell);m("AudioVolumeDown",u.XF86XK_AudioLowerVolume);m("AudioVolumeUp",u.XF86XK_AudioRaiseVolume);m("AudioVolumeMute",u.XF86XK_AudioMute);m("MicrophoneVolumeMute",u.XF86XK_AudioMicMute);m("LaunchApplication1",u.XF86XK_MyComputer);m("LaunchApplication2",u.XF86XK_Calculator);m("LaunchCalendar",u.XF86XK_Calendar);m("LaunchMail",u.XF86XK_Mail);m("LaunchMediaPlayer",u.XF86XK_AudioMedia);m("LaunchMusicPlayer",u.XF86XK_Music);m("LaunchPhone",u.XF86XK_Phone);m("LaunchScreenSaver",u.XF86XK_ScreenSaver);m("LaunchSpreadsheet",u.XF86XK_Excel);m("LaunchWebBrowser",u.XF86XK_WWW);m("LaunchWebCam",u.XF86XK_WebCam);m("LaunchWordProcessor",u.XF86XK_Word);m("BrowserBack",u.XF86XK_Back);m("BrowserFavorites",u.XF86XK_Favorites);m("BrowserForward",u.XF86XK_Forward);m("BrowserHome",u.XF86XK_HomePage);m("BrowserRefresh",u.XF86XK_Refresh);m("BrowserSearch",u.XF86XK_Search);m("BrowserStop",u.XF86XK_Stop);m("Dimmer",u.XF86XK_BrightnessAdjust);m("MediaAudioTrack",u.XF86XK_AudioCycleTrack);m("RandomToggle",u.XF86XK_AudioRandomPlay);m("SplitScreenToggle",u.XF86XK_SplitScreen);m("Subtitle",u.XF86XK_Subtitle);m("VideoModeNext",u.XF86XK_Next_VMode);N("=",u.XK_equal,u.XK_KP_Equal);N("+",u.XK_plus,u.XK_KP_Add);N("-",u.XK_minus,u.XK_KP_Subtract);N("*",u.XK_asterisk,u.XK_KP_Multiply);N("/",u.XK_slash,u.XK_KP_Divide);N(".",u.XK_period,u.XK_KP_Decimal);N(",",u.XK_comma,u.XK_KP_Separator);N("0",u.XK_0,u.XK_KP_0);N("1",u.XK_1,u.XK_KP_1);N("2",u.XK_2,u.XK_KP_2);N("3",u.XK_3,u.XK_KP_3);N("4",u.XK_4,u.XK_KP_4);N("5",u.XK_5,u.XK_KP_5);N("6",u.XK_6,u.XK_KP_6);N("7",u.XK_7,u.XK_KP_7);N("8",u.XK_8,u.XK_KP_8);N("9",u.XK_9,u.XK_KP_9);function st(i){if(i.code){switch(i.code){case"OSLeft":return"MetaLeft";case"OSRight":return"MetaRight"}return i.code}if(i.keyCode in ws){let t=ws[i.keyCode];if(Ue()&&t==="ContextMenu"&&(t="MetaRight"),i.location===2)switch(t){case"ShiftLeft":return"ShiftRight";case"ControlLeft":return"ControlRight";case"AltLeft":return"AltRight"}if(i.location===3)switch(t){case"Delete":return"NumpadDecimal";case"Insert":return"Numpad0";case"End":return"Numpad1";case"ArrowDown":return"Numpad2";case"PageDown":return"Numpad3";case"ArrowLeft":return"Numpad4";case"ArrowRight":return"Numpad6";case"Home":return"Numpad7";case"ArrowUp":return"Numpad8";case"PageUp":return"Numpad9";case"Enter":return"NumpadEnter"}return t}return"Unidentified"}function va(i){if(i.key!==void 0&&i.key!=="Unidentified"){switch(i.key){case"OS":return"Meta";case"LaunchMyComputer":return"LaunchApplication1";case"LaunchCalculator":return"LaunchApplication2"}switch(i.key){case"UIKeyInputUpArrow":return"ArrowUp";case"UIKeyInputDownArrow":return"ArrowDown";case"UIKeyInputLeftArrow":return"ArrowLeft";case"UIKeyInputRightArrow":return"ArrowRight";case"UIKeyInputEscape":return"Escape"}return i.key==="\0"&&i.code==="NumpadDecimal"?"Delete":i.key}const t=st(i);return t in ms?ms[t]:i.charCode?String.fromCharCode(i.charCode):"Unidentified"}function ya(i){const t=va(i);if(t==="Unidentified")return null;if(t in Fe){let s=i.location;if(t==="Meta"&&s===0&&(s=2),t==="Clear"&&s===3&&st(i)==="NumLock"&&(s=0),(s===void 0||s>3)&&(s=0),t==="Meta"){let n=st(i);if(n==="AltLeft")return u.XK_Meta_L;if(n==="AltRight")return u.XK_Meta_R}if(t==="Clear"&&st(i)==="NumLock")return u.XK_Num_Lock;if(Ct())switch(t){case"Zenkaku":case"Hankaku":return u.XK_Zenkaku_Hankaku;case"Romaji":case"KanaMode":return u.XK_Romaji}return Fe[t][s]}if(t.length!==1)return null;const e=t.charCodeAt();return e?ma.lookup(e):null}class ka{constructor(t){this._target=t||null,this._keyDownList={},this._altGrArmed=!1,this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),blur:this._allKeysUp.bind(this)},this.onkeyevent=()=>{}}_sendKeyEvent(t,e,s,n=null,r=null){if(s)this._keyDownList[e]=t;else{if(!(e in this._keyDownList))return;delete this._keyDownList[e]}Q("onkeyevent "+(s?"down":"up")+", keysym: "+t,", code: "+e+", numlock: "+n+", capslock: "+r),this.onkeyevent(t,e,s,n,r)}_getKeyCode(t){const e=st(t);if(e!=="Unidentified")return e;if(t.keyCode&&t.keyCode!==229)return"Platform"+t.keyCode;if(t.keyIdentifier){if(t.keyIdentifier.substr(0,2)!=="U+")return t.keyIdentifier;const s=parseInt(t.keyIdentifier.substr(2),16);return"Platform"+String.fromCharCode(s).toUpperCase().charCodeAt()}return"Unidentified"}_handleKeyDown(t){const e=this._getKeyCode(t);let s=ya(t),n=t.getModifierState("NumLock"),r=t.getModifierState("CapsLock");if((Ue()||We())&&(n=null),this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),e==="AltRight"&&t.timeStamp-this._altGrCtrlTime<50?s=u.XK_ISO_Level3_Shift:this._sendKeyEvent(u.XK_Control_L,"ControlLeft",!0,n,r)),e==="Unidentified"){s&&(this._sendKeyEvent(s,e,!0,n,r),this._sendKeyEvent(s,e,!1,n,r)),Be(t);return}if(Ue()||We())switch(s){case u.XK_Super_L:s=u.XK_Alt_L;break;case u.XK_Super_R:s=u.XK_Super_L;break;case u.XK_Alt_L:s=u.XK_Mode_switch;break;case u.XK_Alt_R:s=u.XK_ISO_Level3_Shift;break}if(e in this._keyDownList&&(s=this._keyDownList[e]),(Ue()||We())&&t.metaKey&&e!=="MetaLeft"&&e!=="MetaRight"){this._sendKeyEvent(s,e,!0,n,r),this._sendKeyEvent(s,e,!1,n,r),Be(t);return}if((Ue()||We())&&e==="CapsLock"){this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!0,n,r),this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!1,n,r),Be(t);return}const a=[u.XK_Zenkaku_Hankaku,u.XK_Eisu_toggle,u.XK_Katakana,u.XK_Hiragana,u.XK_Romaji];if(Ct()&&a.includes(s)){this._sendKeyEvent(s,e,!0,n,r),this._sendKeyEvent(s,e,!1,n,r),Be(t);return}if(Be(t),e==="ControlLeft"&&Ct()&&!("ControlLeft"in this._keyDownList)){this._altGrArmed=!0,this._altGrTimeout=setTimeout(this._interruptAltGrSequence.bind(this),100),this._altGrCtrlTime=t.timeStamp;return}this._sendKeyEvent(s,e,!0,n,r)}_handleKeyUp(t){Be(t);const e=this._getKeyCode(t);if(this._interruptAltGrSequence(),(Ue()||We())&&e==="CapsLock"){this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!0),this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!1);return}this._sendKeyEvent(this._keyDownList[e],e,!1),Ct()&&(e==="ShiftLeft"||e==="ShiftRight")&&("ShiftRight"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftRight,"ShiftRight",!1),"ShiftLeft"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftLeft,"ShiftLeft",!1))}_interruptAltGrSequence(){this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),this._sendKeyEvent(u.XK_Control_L,"ControlLeft",!0))}_allKeysUp(){Q(">> Keyboard.allKeysUp"),this._interruptAltGrSequence();for(let t in this._keyDownList)this._sendKeyEvent(this._keyDownList[t],t,!1);Q("<< Keyboard.allKeysUp")}grab(){this._target.addEventListener("keydown",this._eventHandlers.keydown),this._target.addEventListener("keyup",this._eventHandlers.keyup),window.addEventListener("blur",this._eventHandlers.blur)}ungrab(){this._target.removeEventListener("keydown",this._eventHandlers.keydown),this._target.removeEventListener("keyup",this._eventHandlers.keyup),window.removeEventListener("blur",this._eventHandlers.blur),this._allKeysUp()}}const ge=0,vs=1,ys=2,ks=4,Ss=8,hi=16,Ze=32,Ye=64,li=127,Es=50,Sa=90,Cs=250,Ea=1e3,Ca=1e3,Ka=50;class Aa{constructor(){this._target=null,this._state=li,this._tracked=[],this._ignored=[],this._waitingRelease=!1,this._releaseStart=0,this._longpressTimeoutId=null,this._twoTouchTimeoutId=null,this._boundEventHandler=this._eventHandler.bind(this)}attach(t){this.detach(),this._target=t,this._target.addEventListener("touchstart",this._boundEventHandler),this._target.addEventListener("touchmove",this._boundEventHandler),this._target.addEventListener("touchend",this._boundEventHandler),this._target.addEventListener("touchcancel",this._boundEventHandler)}detach(){this._target&&(this._stopLongpressTimeout(),this._stopTwoTouchTimeout(),this._target.removeEventListener("touchstart",this._boundEventHandler),this._target.removeEventListener("touchmove",this._boundEventHandler),this._target.removeEventListener("touchend",this._boundEventHandler),this._target.removeEventListener("touchcancel",this._boundEventHandler),this._target=null)}_eventHandler(t){let e;switch(t.stopPropagation(),t.preventDefault(),t.type){case"touchstart":e=this._touchStart;break;case"touchmove":e=this._touchMove;break;case"touchend":case"touchcancel":e=this._touchEnd;break}for(let s=0;s<t.changedTouches.length;s++){let n=t.changedTouches[s];e.call(this,n.identifier,n.clientX,n.clientY)}}_touchStart(t,e,s){if(this._hasDetectedGesture()||this._state===ge){this._ignored.push(t);return}if(this._tracked.length>0&&Date.now()-this._tracked[0].started>Cs){this._state=ge,this._ignored.push(t);return}if(this._waitingRelease){this._state=ge,this._ignored.push(t);return}switch(this._tracked.push({id:t,started:Date.now(),active:!0,firstX:e,firstY:s,lastX:e,lastY:s,angle:0}),this._tracked.length){case 1:this._startLongpressTimeout();break;case 2:this._state&=-26,this._stopLongpressTimeout();break;case 3:this._state&=-99;break;default:this._state=ge}}_touchMove(t,e,s){let n=this._tracked.find(h=>h.id===t);if(n===void 0)return;n.lastX=e,n.lastY=s;let r=e-n.firstX,a=s-n.firstY;if((n.firstX!==n.lastX||n.firstY!==n.lastY)&&(n.angle=Math.atan2(a,r)*180/Math.PI),!this._hasDetectedGesture()){if(Math.hypot(r,a)<Es)return;if(this._state&=-24,this._stopLongpressTimeout(),this._tracked.length!==1&&(this._state&=~Ss),this._tracked.length!==2&&(this._state&=-97),this._tracked.length===2){let h=this._tracked.find(o=>o.id!==t);if(Math.hypot(h.firstX-h.lastX,h.firstY-h.lastY)>Es){let o=Math.abs(n.angle-h.angle);o=Math.abs((o+180)%360-180),o>Sa?this._state&=~Ze:this._state&=~Ye,this._isTwoTouchTimeoutRunning()&&this._stopTwoTouchTimeout()}else this._isTwoTouchTimeoutRunning()||this._startTwoTouchTimeout()}if(!this._hasDetectedGesture())return;this._pushEvent("gesturestart")}this._pushEvent("gesturemove")}_touchEnd(t,e,s){if(this._ignored.indexOf(t)!==-1){this._ignored.splice(this._ignored.indexOf(t),1),this._ignored.length===0&&this._tracked.length===0&&(this._state=li,this._waitingRelease=!1);return}if(!this._hasDetectedGesture()&&this._isTwoTouchTimeoutRunning()&&(this._stopTwoTouchTimeout(),this._state=ge),!this._hasDetectedGesture()&&(this._state&=-105,this._state&=~hi,this._stopLongpressTimeout(),!this._waitingRelease))switch(this._releaseStart=Date.now(),this._waitingRelease=!0,this._tracked.length){case 1:this._state&=-7;break;case 2:this._state&=-6;break}if(this._waitingRelease){Date.now()-this._releaseStart>Cs&&(this._state=ge),this._tracked.some(r=>Date.now()-r.started>Ea)&&(this._state=ge);let n=this._tracked.find(r=>r.id===t);if(n.active=!1,this._hasDetectedGesture())this._pushEvent("gesturestart");else if(this._state!==ge)return}this._hasDetectedGesture()&&this._pushEvent("gestureend");for(let n=0;n<this._tracked.length;n++)this._tracked[n].active&&this._ignored.push(this._tracked[n].id);this._tracked=[],this._state=ge,this._ignored.indexOf(t)!==-1&&this._ignored.splice(this._ignored.indexOf(t),1),this._ignored.length===0&&(this._state=li,this._waitingRelease=!1)}_hasDetectedGesture(){return!(this._state===ge||this._state&this._state-1||this._state&(vs|ys|ks)&&this._tracked.some(t=>t.active))}_startLongpressTimeout(){this._stopLongpressTimeout(),this._longpressTimeoutId=setTimeout(()=>this._longpressTimeout(),Ca)}_stopLongpressTimeout(){clearTimeout(this._longpressTimeoutId),this._longpressTimeoutId=null}_longpressTimeout(){if(this._hasDetectedGesture())throw new Error("A longpress gesture failed, conflict with a different gesture");this._state=hi,this._pushEvent("gesturestart")}_startTwoTouchTimeout(){this._stopTwoTouchTimeout(),this._twoTouchTimeoutId=setTimeout(()=>this._twoTouchTimeout(),Ka)}_stopTwoTouchTimeout(){clearTimeout(this._twoTouchTimeoutId),this._twoTouchTimeoutId=null}_isTwoTouchTimeoutRunning(){return this._twoTouchTimeoutId!==null}_twoTouchTimeout(){if(this._tracked.length===0)throw new Error("A pinch or two drag gesture failed, no tracked touches");let t=this._getAverageMovement(),e=Math.abs(t.x),s=Math.abs(t.y),n=this._getAverageDistance(),r=Math.abs(Math.hypot(n.first.x,n.first.y)-Math.hypot(n.last.x,n.last.y));s<r&&e<r?this._state=Ye:this._state=Ze,this._pushEvent("gesturestart"),this._pushEvent("gesturemove")}_pushEvent(t){let e={type:this._stateToGesture(this._state)},s=this._getPosition(),n=s.last;switch(t==="gesturestart"&&(n=s.first),this._state){case Ze:case Ye:n=s.first;break}if(e.clientX=n.x,e.clientY=n.y,this._state===Ye){let a=this._getAverageDistance();t==="gesturestart"?(e.magnitudeX=a.first.x,e.magnitudeY=a.first.y):(e.magnitudeX=a.last.x,e.magnitudeY=a.last.y)}else if(this._state===Ze)if(t==="gesturestart")e.magnitudeX=0,e.magnitudeY=0;else{let a=this._getAverageMovement();e.magnitudeX=a.x,e.magnitudeY=a.y}let r=new CustomEvent(t,{detail:e});this._target.dispatchEvent(r)}_stateToGesture(t){switch(t){case vs:return"onetap";case ys:return"twotap";case ks:return"threetap";case Ss:return"drag";case hi:return"longpress";case Ze:return"twodrag";case Ye:return"pinch"}throw new Error("Unknown gesture state: "+t)}_getPosition(){if(this._tracked.length===0)throw new Error("Failed to get gesture position, no tracked touches");let t=this._tracked.length,e=0,s=0,n=0,r=0;for(let a=0;a<this._tracked.length;a++)e+=this._tracked[a].firstX,s+=this._tracked[a].firstY,n+=this._tracked[a].lastX,r+=this._tracked[a].lastY;return{first:{x:e/t,y:s/t},last:{x:n/t,y:r/t}}}_getAverageMovement(){if(this._tracked.length===0)throw new Error("Failed to get gesture movement, no tracked touches");let t,e;t=e=0;let s=this._tracked.length;for(let n=0;n<this._tracked.length;n++)t+=this._tracked[n].lastX-this._tracked[n].firstX,e+=this._tracked[n].lastY-this._tracked[n].firstY;return{x:t/s,y:e/s}}_getAverageDistance(){if(this._tracked.length===0)throw new Error("Failed to get gesture distance, no tracked touches");let t=this._tracked[0],e=this._tracked[this._tracked.length-1],s=Math.abs(e.firstX-t.firstX),n=Math.abs(e.firstY-t.firstY),r=Math.abs(e.lastX-t.lastX),a=Math.abs(e.lastY-t.lastY);return{first:{x:s,y:n},last:{x:r,y:a}}}}const qe=!Yn||qs;class Xa{constructor(){this._target=null,this._canvas=document.createElement("canvas"),qe&&(this._canvas.style.position="fixed",this._canvas.style.zIndex="65535",this._canvas.style.pointerEvents="none",this._canvas.style.userSelect="none",this._canvas.style.WebkitUserSelect="none",this._canvas.style.visibility="hidden"),this._position={x:0,y:0},this._hotSpot={x:0,y:0},this._eventHandlers={mouseover:this._handleMouseOver.bind(this),mouseleave:this._handleMouseLeave.bind(this),mousemove:this._handleMouseMove.bind(this),mouseup:this._handleMouseUp.bind(this)}}attach(t){if(this._target&&this.detach(),this._target=t,qe){document.body.appendChild(this._canvas);const e={capture:!0,passive:!0};this._target.addEventListener("mouseover",this._eventHandlers.mouseover,e),this._target.addEventListener("mouseleave",this._eventHandlers.mouseleave,e),this._target.addEventListener("mousemove",this._eventHandlers.mousemove,e),this._target.addEventListener("mouseup",this._eventHandlers.mouseup,e)}this.clear()}detach(){if(this._target){if(qe){const t={capture:!0,passive:!0};this._target.removeEventListener("mouseover",this._eventHandlers.mouseover,t),this._target.removeEventListener("mouseleave",this._eventHandlers.mouseleave,t),this._target.removeEventListener("mousemove",this._eventHandlers.mousemove,t),this._target.removeEventListener("mouseup",this._eventHandlers.mouseup,t),document.contains(this._canvas)&&document.body.removeChild(this._canvas)}this._target=null}}change(t,e,s,n,r){if(n===0||r===0){this.clear();return}this._position.x=this._position.x+this._hotSpot.x-e,this._position.y=this._position.y+this._hotSpot.y-s,this._hotSpot.x=e,this._hotSpot.y=s;let a=this._canvas.getContext("2d");this._canvas.width=n,this._canvas.height=r;let h=new ImageData(new Uint8ClampedArray(t),n,r);if(a.clearRect(0,0,n,r),a.putImageData(h,0,0),qe)this._updatePosition();else{let c=this._canvas.toDataURL();this._target.style.cursor="url("+c+")"+e+" "+s+", default"}}clear(){this._target.style.cursor="none",this._canvas.width=0,this._canvas.height=0,this._position.x=this._position.x+this._hotSpot.x,this._position.y=this._position.y+this._hotSpot.y,this._hotSpot.x=0,this._hotSpot.y=0}move(t,e){if(!qe)return;window.visualViewport?(this._position.x=t+window.visualViewport.offsetLeft,this._position.y=e+window.visualViewport.offsetTop):(this._position.x=t,this._position.y=e),this._updatePosition();let s=document.elementFromPoint(t,e);this._updateVisibility(s)}_handleMouseOver(t){this._handleMouseMove(t)}_handleMouseLeave(t){this._updateVisibility(t.relatedTarget)}_handleMouseMove(t){this._updateVisibility(t.target),this._position.x=t.clientX-this._hotSpot.x,this._position.y=t.clientY-this._hotSpot.y,this._updatePosition()}_handleMouseUp(t){let e=document.elementFromPoint(t.clientX,t.clientY);this._updateVisibility(e),this._captureIsActive()&&window.setTimeout(()=>{this._target&&(e=document.elementFromPoint(t.clientX,t.clientY),this._updateVisibility(e))},0)}_showCursor(){this._canvas.style.visibility==="hidden"&&(this._canvas.style.visibility="")}_hideCursor(){this._canvas.style.visibility!=="hidden"&&(this._canvas.style.visibility="hidden")}_shouldShowCursor(t){return t?t===this._target?!0:!(!this._target.contains(t)||window.getComputedStyle(t).cursor!=="none"):!1}_updateVisibility(t){this._captureIsActive()&&(t=document.captureElement),this._shouldShowCursor(t)?this._showCursor():this._hideCursor()}_updatePosition(){this._canvas.style.left=this._position.x+"px",this._canvas.style.top=this._position.y+"px"}_captureIsActive(){return document.captureElement&&document.documentElement.contains(document.captureElement)}}const ci=40*1024*1024,vt={CONNECTING:"connecting",OPEN:"open",CLOSING:"closing",CLOSED:"closed"},yt={CONNECTING:[WebSocket.CONNECTING,vt.CONNECTING],OPEN:[WebSocket.OPEN,vt.OPEN],CLOSING:[WebSocket.CLOSING,vt.CLOSING],CLOSED:[WebSocket.CLOSED,vt.CLOSED]},Ks=["send","close","binaryType","onerror","onmessage","onopen","protocol","readyState"];class Fa{constructor(){this._websocket=null,this._rQi=0,this._rQlen=0,this._rQbufferSize=1024*1024*4,this._rQ=null,this._sQbufferSize=1024*10,this._sQlen=0,this._sQ=null,this._eventHandlers={message:()=>{},open:()=>{},close:()=>{},error:()=>{}}}get readyState(){let t;return this._websocket===null?"unused":(t=this._websocket.readyState,yt.CONNECTING.includes(t)?"connecting":yt.OPEN.includes(t)?"open":yt.CLOSING.includes(t)?"closing":yt.CLOSED.includes(t)?"closed":"unknown")}rQpeek8(){return this._rQ[this._rQi]}rQskipBytes(t){this._rQi+=t}rQshift8(){return this._rQshift(1)}rQshift16(){return this._rQshift(2)}rQshift32(){return this._rQshift(4)}_rQshift(t){let e=0;for(let s=t-1;s>=0;s--)e+=this._rQ[this._rQi++]<<s*8;return e>>>0}rQlen(){return this._rQlen-this._rQi}rQshiftStr(t){let e="";for(let s=0;s<t;s+=4096){let n=this.rQshiftBytes(Math.min(4096,t-s),!1);e+=String.fromCharCode.apply(null,n)}return e}rQshiftBytes(t,e=!0){return this._rQi+=t,e?this._rQ.slice(this._rQi-t,this._rQi):this._rQ.subarray(this._rQi-t,this._rQi)}rQshiftTo(t,e){t.set(new Uint8Array(this._rQ.buffer,this._rQi,e)),this._rQi+=e}rQpeekBytes(t,e=!0){return e?this._rQ.slice(this._rQi,this._rQi+t):this._rQ.subarray(this._rQi,this._rQi+t)}rQwait(t,e,s){if(this._rQlen-this._rQi<e){if(s){if(this._rQi<s)throw new Error("rQwait cannot backup "+s+" bytes");this._rQi-=s}return!0}return!1}sQpush8(t){this._sQensureSpace(1),this._sQ[this._sQlen++]=t}sQpush16(t){this._sQensureSpace(2),this._sQ[this._sQlen++]=t>>8&255,this._sQ[this._sQlen++]=t>>0&255}sQpush32(t){this._sQensureSpace(4),this._sQ[this._sQlen++]=t>>24&255,this._sQ[this._sQlen++]=t>>16&255,this._sQ[this._sQlen++]=t>>8&255,this._sQ[this._sQlen++]=t>>0&255}sQpushString(t){let e=t.split("").map(s=>s.charCodeAt(0));this.sQpushBytes(new Uint8Array(e))}sQpushBytes(t){for(let e=0;e<t.length;){this._sQensureSpace(1);let s=this._sQbufferSize-this._sQlen;s>t.length-e&&(s=t.length-e),this._sQ.set(t.subarray(e,e+s),this._sQlen),this._sQlen+=s,e+=s}}flush(){this._sQlen>0&&this.readyState==="open"&&(this._websocket.send(new Uint8Array(this._sQ.buffer,0,this._sQlen)),this._sQlen=0)}_sQensureSpace(t){this._sQbufferSize-this._sQlen<t&&this.flush()}off(t){this._eventHandlers[t]=()=>{}}on(t,e){this._eventHandlers[t]=e}_allocateBuffers(){this._rQ=new Uint8Array(this._rQbufferSize),this._sQ=new Uint8Array(this._sQbufferSize)}init(){this._allocateBuffers(),this._rQi=0,this._websocket=null}open(t,e){this.attach(new WebSocket(t,e))}attach(t){this.init();const e=[...Object.keys(t),...Object.getOwnPropertyNames(Object.getPrototypeOf(t))];for(let s=0;s<Ks.length;s++){const n=Ks[s];if(e.indexOf(n)<0)throw new Error("Raw channel missing property: "+n)}this._websocket=t,this._websocket.binaryType="arraybuffer",this._websocket.onmessage=this._recvMessage.bind(this),this._websocket.onopen=()=>{Q(">> WebSock.onopen"),this._websocket.protocol&&re("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),Q("<< WebSock.onopen")},this._websocket.onclose=s=>{Q(">> WebSock.onclose"),this._eventHandlers.close(s),Q("<< WebSock.onclose")},this._websocket.onerror=s=>{Q(">> WebSock.onerror: "+s),this._eventHandlers.error(s),Q("<< WebSock.onerror: "+s)}}close(){this._websocket&&((this.readyState==="connecting"||this.readyState==="open")&&(re("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_expandCompactRQ(t){const e=(this._rQlen-this._rQi+t)*8,s=this._rQbufferSize<e;if(s&&(this._rQbufferSize=Math.max(this._rQbufferSize*2,e)),this._rQbufferSize>ci&&(this._rQbufferSize=ci,this._rQbufferSize-(this._rQlen-this._rQi)<t))throw new Error("Receive queue buffer exceeded "+ci+" bytes, and the new message could not fit");if(s){const n=this._rQ.buffer;this._rQ=new Uint8Array(this._rQbufferSize),this._rQ.set(new Uint8Array(n,this._rQi,this._rQlen-this._rQi))}else this._rQ.copyWithin(0,this._rQi,this._rQlen);this._rQlen=this._rQlen-this._rQi,this._rQi=0}_recvMessage(t){this._rQlen==this._rQi&&(this._rQlen=0,this._rQi=0);const e=new Uint8Array(t.data);e.length>this._rQbufferSize-this._rQlen&&this._expandCompactRQ(e.length),this._rQ.set(e,this._rQlen),this._rQlen+=e.length,this._rQlen-this._rQi>0?this._eventHandlers.message():Q("Ignoring empty message")}}const Ma={Again:57349,AltLeft:56,AltRight:57400,ArrowDown:57424,ArrowLeft:57419,ArrowRight:57421,ArrowUp:57416,AudioVolumeDown:57390,AudioVolumeMute:57376,AudioVolumeUp:57392,Backquote:41,Backslash:43,Backspace:14,BracketLeft:26,BracketRight:27,BrowserBack:57450,BrowserFavorites:57446,BrowserForward:57449,BrowserHome:57394,BrowserRefresh:57447,BrowserSearch:57445,BrowserStop:57448,CapsLock:58,Comma:51,ContextMenu:57437,ControlLeft:29,ControlRight:57373,Convert:121,Copy:57464,Cut:57404,Delete:57427,Digit0:11,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Eject:57469,End:57423,Enter:28,Equal:13,Escape:1,F1:59,F10:68,F11:87,F12:88,F13:93,F14:94,F15:95,F16:85,F17:57347,F18:57463,F19:57348,F2:60,F20:90,F21:116,F22:57465,F23:109,F24:111,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,Find:57409,Help:57461,Hiragana:119,Home:57415,Insert:57426,IntlBackslash:86,IntlRo:115,IntlYen:125,KanaMode:112,Katakana:120,KeyA:30,KeyB:48,KeyC:46,KeyD:32,KeyE:18,KeyF:33,KeyG:34,KeyH:35,KeyI:23,KeyJ:36,KeyK:37,KeyL:38,KeyM:50,KeyN:49,KeyO:24,KeyP:25,KeyQ:16,KeyR:19,KeyS:31,KeyT:20,KeyU:22,KeyV:47,KeyW:17,KeyX:45,KeyY:21,KeyZ:44,Lang1:114,Lang2:113,Lang3:120,Lang4:119,Lang5:118,LaunchApp1:57451,LaunchApp2:57377,LaunchMail:57452,MediaPlayPause:57378,MediaSelect:57453,MediaStop:57380,MediaTrackNext:57369,MediaTrackPrevious:57360,MetaLeft:57435,MetaRight:57436,Minus:12,NonConvert:123,NumLock:69,Numpad0:82,Numpad1:79,Numpad2:80,Numpad3:81,Numpad4:75,Numpad5:76,Numpad6:77,Numpad7:71,Numpad8:72,Numpad9:73,NumpadAdd:78,NumpadComma:126,NumpadDecimal:83,NumpadDivide:57397,NumpadEnter:57372,NumpadEqual:89,NumpadMultiply:55,NumpadParenLeft:57462,NumpadParenRight:57467,NumpadSubtract:74,Open:100,PageDown:57425,PageUp:57417,Paste:101,Pause:57414,Period:52,Power:57438,PrintScreen:84,Props:57350,Quote:40,ScrollLock:70,Semicolon:39,ShiftLeft:42,ShiftRight:54,Slash:53,Sleep:57439,Space:57,Suspend:57381,Tab:15,Undo:57351,WakeUp:57443},L={encodingRaw:0,encodingCopyRect:1,encodingRRE:2,encodingHextile:5,encodingZlib:6,encodingTight:7,encodingZRLE:16,encodingTightPNG:-260,encodingJPEG:21,encodingH264:50,pseudoEncodingQualityLevel0:-32,pseudoEncodingDesktopSize:-223,pseudoEncodingLastRect:-224,pseudoEncodingCursor:-239,pseudoEncodingQEMUExtendedKeyEvent:-258,pseudoEncodingQEMULedEvent:-261,pseudoEncodingDesktopName:-307,pseudoEncodingExtendedDesktopSize:-308,pseudoEncodingXvp:-309,pseudoEncodingFence:-312,pseudoEncodingContinuousUpdates:-313,pseudoEncodingExtendedMouseButtons:-316,pseudoEncodingCompressLevel0:-256,pseudoEncodingVMwareCursor:1464686180,pseudoEncodingExtendedClipboard:3231835598};class ki{constructor(){this._key=null}get algorithm(){return{name:"AES-ECB"}}static async importKey(t,e,s,n){const r=new ki;return await r._importKey(t,s,n),r}async _importKey(t,e,s){this._key=await window.crypto.subtle.importKey("raw",t,{name:"AES-CBC"},e,s)}async encrypt(t,e){const s=new Uint8Array(e);if(s.length%16!==0||this._key===null)return null;const n=s.length/16;for(let r=0;r<n;r++){const a=new Uint8Array(await window.crypto.subtle.encrypt({name:"AES-CBC",iv:new Uint8Array(16)},this._key,s.slice(r*16,r*16+16))).slice(0,16);s.set(a,r*16)}return s}}class Si{constructor(){this._rawKey=null,this._ctrKey=null,this._cbcKey=null,this._zeroBlock=new Uint8Array(16),this._prefixBlock0=this._zeroBlock,this._prefixBlock1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),this._prefixBlock2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2])}get algorithm(){return{name:"AES-EAX"}}async _encryptBlock(t){const e=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,t);return new Uint8Array(e).slice(0,16)}async _initCMAC(){const t=await this._encryptBlock(this._zeroBlock),e=new Uint8Array(16),s=t[0]>>>6;for(let r=0;r<15;r++)e[r]=t[r+1]>>6|t[r]<<2,t[r]=t[r+1]>>7|t[r]<<1;const n=[0,135,14,137];e[14]^=s>>>1,e[15]=t[15]<<2^n[s],t[15]=t[15]<<1^n[s>>1],this._k1=t,this._k2=e}async _encryptCTR(t,e){const s=await window.crypto.subtle.encrypt({name:"AES-CTR",counter:e,length:128},this._ctrKey,t);return new Uint8Array(s)}async _decryptCTR(t,e){const s=await window.crypto.subtle.decrypt({name:"AES-CTR",counter:e,length:128},this._ctrKey,t);return new Uint8Array(s)}async _computeCMAC(t,e){if(e.length!==16)return null;const s=Math.floor(t.length/16),n=Math.ceil(t.length/16),r=t.length-s*16,a=new Uint8Array((n+1)*16);if(a.set(e),a.set(t,16),r===0)for(let o=0;o<16;o++)a[s*16+o]^=this._k1[o];else{a[(s+1)*16+r]=128;for(let o=0;o<16;o++)a[(s+1)*16+o]^=this._k2[o]}let h=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,a);return h=new Uint8Array(h),h.slice(h.length-32,h.length-16)}static async importKey(t,e,s,n){const r=new Si;return await r._importKey(t),r}async _importKey(t){this._rawKey=t,this._ctrKey=await window.crypto.subtle.importKey("raw",t,{name:"AES-CTR"},!1,["encrypt","decrypt"]),this._cbcKey=await window.crypto.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt"]),await this._initCMAC()}async encrypt(t,e){const s=t.additionalData,n=t.iv,r=await this._computeCMAC(n,this._prefixBlock0),a=await this._encryptCTR(e,r),h=await this._computeCMAC(s,this._prefixBlock1),c=await this._computeCMAC(a,this._prefixBlock2);for(let l=0;l<16;l++)c[l]^=r[l]^h[l];const o=new Uint8Array(16+a.length);return o.set(a),o.set(c,a.length),o}async decrypt(t,e){const s=e.slice(0,e.length-16),n=t.additionalData,r=t.iv,a=e.slice(e.length-16),h=await this._computeCMAC(r,this._prefixBlock0),c=await this._computeCMAC(n,this._prefixBlock1),o=await this._computeCMAC(s,this._prefixBlock2);for(let _=0;_<16;_++)o[_]^=h[_]^c[_];if(o.length!==a.length)return null;for(let _=0;_<a.length;_++)if(o[_]!==a[_])return null;return await this._decryptCTR(s,h)}}const As=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],Ta=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=0;let p,g,v,b,w,y;p=65536;g=1<<24;v=p|g;b=4;w=1024;y=b|w;const Xs=[v|w,d|d,p|d,v|y,v|b,p|y,d|b,p|d,d|w,v|w,v|y,d|w,g|y,v|b,g|d,d|b,d|y,g|w,g|w,p|w,p|w,v|d,v|d,g|y,p|b,g|b,g|b,p|b,d|d,d|y,p|y,g|d,p|d,v|y,d|b,v|d,v|w,g|d,g|d,d|w,v|b,p|d,p|w,g|b,d|w,d|b,g|y,p|y,v|y,p|b,v|d,g|y,g|b,d|y,p|y,v|w,d|y,g|w,g|w,d|d,p|b,p|w,d|d,v|b];p=1<<20;g=1<<31;v=p|g;b=32;w=32768;y=b|w;const Fs=[v|y,g|w,d|w,p|y,p|d,d|b,v|b,g|y,g|b,v|y,v|w,g|d,g|w,p|d,d|b,v|b,p|w,p|b,g|y,d|d,g|d,d|w,p|y,v|d,p|b,g|b,d|d,p|w,d|y,v|w,v|d,d|y,d|d,p|y,v|b,p|d,g|y,v|d,v|w,d|w,v|d,g|w,d|b,v|y,p|y,d|b,d|w,g|d,d|y,v|w,p|d,g|b,p|b,g|y,g|b,p|b,p|w,d|d,g|w,d|y,g|d,v|b,v|y,p|w];p=1<<17;g=1<<27;v=p|g;b=8;w=512;y=b|w;const Ms=[d|y,v|w,d|d,v|b,g|w,d|d,p|y,g|w,p|b,g|b,g|b,p|d,v|y,p|b,v|d,d|y,g|d,d|b,v|w,d|w,p|w,v|d,v|b,p|y,g|y,p|w,p|d,g|y,d|b,v|y,d|w,g|d,v|w,g|d,p|b,d|y,p|d,v|w,g|w,d|d,d|w,p|b,v|y,g|w,g|b,d|w,d|d,v|b,g|y,p|d,g|d,v|y,d|b,p|y,p|w,g|b,v|d,g|y,d|y,v|d,p|y,d|b,v|b,p|w];p=8192;g=1<<23;v=p|g;b=1;w=128;y=b|w;const Ts=[v|b,p|y,p|y,d|w,v|w,g|y,g|b,p|b,d|d,v|d,v|d,v|y,d|y,d|d,g|w,g|b,d|b,p|d,g|d,v|b,d|w,g|d,p|b,p|w,g|y,d|b,p|w,g|w,p|d,v|w,v|y,d|y,g|w,g|b,v|d,v|y,d|y,d|d,d|d,v|d,p|w,g|w,g|y,d|b,v|b,p|y,p|y,d|w,v|y,d|y,d|b,p|d,g|b,p|b,v|w,g|y,p|b,p|w,g|d,v|b,d|w,g|d,p|d,v|w];p=1<<25;g=1<<30;v=p|g;b=256;w=1<<19;y=b|w;const Qs=[d|b,p|y,p|w,v|b,d|w,d|b,g|d,p|w,g|y,d|w,p|b,g|y,v|b,v|w,d|y,g|d,p|d,g|w,g|w,d|d,g|b,v|y,v|y,p|b,v|w,g|b,d|d,v|d,p|y,p|d,v|d,d|y,d|w,v|b,d|b,p|d,g|d,p|w,v|b,g|y,p|b,g|d,v|w,p|y,g|y,d|b,p|d,v|w,v|y,d|y,v|d,v|y,p|w,d|d,g|w,v|d,d|y,p|b,g|b,d|w,d|d,g|w,p|y,g|b];p=1<<22;g=1<<29;v=p|g;b=16;w=16384;y=b|w;const Ls=[g|b,v|d,d|w,v|y,v|d,d|b,v|y,p|d,g|w,p|y,p|d,g|b,p|b,g|w,g|d,d|y,d|d,p|b,g|y,d|w,p|w,g|y,d|b,v|b,v|b,d|d,p|y,v|w,d|y,p|w,v|w,g|d,g|w,d|b,v|b,p|w,v|y,p|d,d|y,g|b,p|d,g|w,g|d,d|y,g|b,v|y,p|w,v|d,p|y,v|w,d|d,v|b,d|b,d|w,v|d,p|y,d|w,p|b,g|y,d|d,v|w,g|d,p|b,g|y];p=1<<21;g=1<<26;v=p|g;b=2;w=2048;y=b|w;const Rs=[p|d,v|b,g|y,d|d,d|w,g|y,p|y,v|w,v|y,p|d,d|d,g|b,d|b,g|d,v|b,d|y,g|w,p|y,p|b,g|w,g|b,v|d,v|w,p|b,v|d,d|w,d|y,v|y,p|w,d|b,g|d,p|w,g|d,p|w,p|d,g|y,g|y,v|b,v|b,d|b,p|b,g|d,g|w,p|d,v|w,d|y,p|y,v|w,d|y,g|b,v|y,v|d,p|w,d|d,d|b,v|y,d|d,p|y,v|d,d|w,g|b,g|w,d|w,p|b];p=1<<18;g=1<<28;v=p|g;b=64;w=4096;y=b|w;const Bs=[g|y,d|w,p|d,v|y,g|d,g|y,d|b,g|d,p|b,v|d,v|y,p|w,v|w,p|y,d|w,d|b,v|d,g|b,g|w,d|y,p|w,p|b,v|b,v|w,d|y,d|d,d|d,v|b,g|b,g|w,p|y,p|d,p|y,p|d,v|w,d|w,d|b,v|b,d|w,p|y,g|w,d|b,g|b,v|d,v|b,g|d,p|d,g|y,d|d,v|y,p|b,g|b,v|d,g|w,g|y,d|d,v|y,p|w,p|w,d|y,d|y,p|b,g|d,v|w];class Xn{constructor(t){this.keys=[];const e=[],s=[],n=[];for(let r=0,a=56;r<56;++r,a-=8){a+=a<-5?65:a<-3?31:a<-1?63:a===27?35:0;const h=a&7;e[r]=(t[a>>>3]&1<<h)!==0?1:0}for(let r=0;r<16;++r){const a=r<<1,h=a+1;n[a]=n[h]=0;for(let c=28;c<59;c+=28)for(let o=c-28;o<c;++o){const l=o+Ta[r];s[o]=l<c?e[l]:e[l-28]}for(let c=0;c<24;++c)s[As[c]]!==0&&(n[a]|=1<<23-c),s[As[c+24]]!==0&&(n[h]|=1<<23-c)}for(let r=0,a=0,h=0;r<16;++r){const c=n[a++],o=n[a++];this.keys[h]=(c&16515072)<<6,this.keys[h]|=(c&4032)<<10,this.keys[h]|=(o&16515072)>>>10,this.keys[h]|=(o&4032)>>>6,++h,this.keys[h]=(c&258048)<<12,this.keys[h]|=(c&63)<<16,this.keys[h]|=(o&258048)>>>4,this.keys[h]|=o&63,++h}}enc8(t){const e=t.slice();let s=0,n,r,a;n=e[s++]<<24|e[s++]<<16|e[s++]<<8|e[s++],r=e[s++]<<24|e[s++]<<16|e[s++]<<8|e[s++],a=(n>>>4^r)&252645135,r^=a,n^=a<<4,a=(n>>>16^r)&65535,r^=a,n^=a<<16,a=(r>>>2^n)&858993459,n^=a,r^=a<<2,a=(r>>>8^n)&16711935,n^=a,r^=a<<8,r=r<<1|r>>>31&1,a=(n^r)&2863311530,n^=a,r^=a,n=n<<1|n>>>31&1;for(let h=0,c=0;h<8;++h){a=r<<28|r>>>4,a^=this.keys[c++];let o=Rs[a&63];o|=Qs[a>>>8&63],o|=Ms[a>>>16&63],o|=Xs[a>>>24&63],a=r^this.keys[c++],o|=Bs[a&63],o|=Ls[a>>>8&63],o|=Ts[a>>>16&63],o|=Fs[a>>>24&63],n^=o,a=n<<28|n>>>4,a^=this.keys[c++],o=Rs[a&63],o|=Qs[a>>>8&63],o|=Ms[a>>>16&63],o|=Xs[a>>>24&63],a=n^this.keys[c++],o|=Bs[a&63],o|=Ls[a>>>8&63],o|=Ts[a>>>16&63],o|=Fs[a>>>24&63],r^=o}for(r=r<<31|r>>>1,a=(n^r)&2863311530,n^=a,r^=a,n=n<<31|n>>>1,a=(n>>>8^r)&16711935,r^=a,n^=a<<8,a=(n>>>2^r)&858993459,r^=a,n^=a<<2,a=(r>>>16^n)&65535,n^=a,r^=a<<16,a=(r>>>4^n)&252645135,n^=a,r^=a<<4,a=[r,n],s=0;s<8;s++)e[s]=(a[s>>>2]>>>8*(3-s%4))%256,e[s]<0&&(e[s]+=256);return e}}class Ei{constructor(){this._cipher=null}get algorithm(){return{name:"DES-ECB"}}static importKey(t,e,s,n){const r=new Ei;return r._importKey(t),r}_importKey(t,e,s){this._cipher=new Xn(t)}encrypt(t,e){const s=new Uint8Array(e);if(s.length%8!==0||this._cipher===null)return null;const n=s.length/8;for(let r=0;r<n;r++)s.set(this._cipher.enc8(s.slice(r*8,r*8+8)),r*8);return s}}class Ci{constructor(){this._cipher=null}get algorithm(){return{name:"DES-CBC"}}static importKey(t,e,s,n){const r=new Ci;return r._importKey(t),r}_importKey(t){this._cipher=new Xn(t)}encrypt(t,e){const s=new Uint8Array(e);let n=new Uint8Array(t.iv);if(s.length%8!==0||this._cipher===null)return null;const r=s.length/8;for(let a=0;a<r;a++){for(let h=0;h<8;h++)n[h]^=e[a*8+h];n=this._cipher.enc8(n),s.set(n,a*8)}return s}}function Rt(i,t,e){let s=1n;for(i=i%e;t>0n;)(t&1n)===1n&&(s=s*i%e),t=t>>1n,i=i*i%e;return s}function Bt(i,t=0){let e=i.toString(16);t===0&&(t=Math.ceil(e.length/2)),e=e.padStart(t*2,"0");const s=e.length/2,n=new Uint8Array(s);for(let r=0;r<s;r++)n[r]=parseInt(e.slice(r*2,r*2+2),16);return n}function ue(i){let t="0x";for(let e=0;e<i.length;e++)t+=i[e].toString(16).padStart(2,"0");return BigInt(t)}class Dt{constructor(){this._keyLength=0,this._keyBytes=0,this._n=null,this._e=null,this._d=null,this._nBigInt=null,this._eBigInt=null,this._dBigInt=null,this._extractable=!1}get algorithm(){return{name:"RSA-PKCS1-v1_5"}}_base64urlDecode(t){return t=t.replace(/-/g,"+").replace(/_/g,"/"),t=t.padEnd(Math.ceil(t.length/4)*4,"="),bi.decode(t)}_padArray(t,e){const s=new Uint8Array(e);return s.set(t,e-t.length),s}static async generateKey(t,e,s){const n=new Dt;return await n._generateKey(t,e),{privateKey:n}}async _generateKey(t,e){this._keyLength=t.modulusLength,this._keyBytes=Math.ceil(this._keyLength/8);const s=await window.crypto.subtle.generateKey({name:"RSA-OAEP",modulusLength:t.modulusLength,publicExponent:t.publicExponent,hash:{name:"SHA-256"}},!0,["encrypt","decrypt"]),n=await window.crypto.subtle.exportKey("jwk",s.privateKey);this._n=this._padArray(this._base64urlDecode(n.n),this._keyBytes),this._nBigInt=ue(this._n),this._e=this._padArray(this._base64urlDecode(n.e),this._keyBytes),this._eBigInt=ue(this._e),this._d=this._padArray(this._base64urlDecode(n.d),this._keyBytes),this._dBigInt=ue(this._d),this._extractable=e}static async importKey(t,e,s,n){if(n.length!==1||n[0]!=="encrypt")throw new Error("only support importing RSA public key");const r=new Dt;return await r._importKey(t,s),r}async _importKey(t,e){const s=t.n,n=t.e;if(s.length!==n.length)throw new Error("the sizes of modulus and public exponent do not match");this._keyBytes=s.length,this._keyLength=this._keyBytes*8,this._n=new Uint8Array(this._keyBytes),this._e=new Uint8Array(this._keyBytes),this._n.set(s),this._e.set(n),this._nBigInt=ue(this._n),this._eBigInt=ue(this._e),this._extractable=e}async encrypt(t,e){if(e.length>this._keyBytes-11)return null;const s=new Uint8Array(this._keyBytes-e.length-3);window.crypto.getRandomValues(s);for(let h=0;h<s.length;h++)s[h]=Math.floor(s[h]*254/255+1);const n=new Uint8Array(this._keyBytes);n[1]=2,n.set(s,2),n.set(e,s.length+3);const r=ue(n),a=Rt(r,this._eBigInt,this._nBigInt);return Bt(a,this._keyBytes)}async decrypt(t,e){if(e.length!==this._keyBytes)return null;const s=ue(e),n=Rt(s,this._dBigInt,this._nBigInt),r=Bt(n,this._keyBytes);if(r[0]!==0||r[1]!==2)return null;let a=2;for(;a<r.length&&r[a]!==0;a++);return a===r.length?null:r.slice(a+1,r.length)}async exportKey(){if(!this._extractable)throw new Error("key is not extractable");return{n:this._n,e:this._e,d:this._d}}}class Qa{constructor(t){this._key=t}get algorithm(){return{name:"DH"}}exportKey(){return this._key}}class Ki{constructor(){this._g=null,this._p=null,this._gBigInt=null,this._pBigInt=null,this._privateKey=null}get algorithm(){return{name:"DH"}}static generateKey(t,e){const s=new Ki;return s._generateKey(t),{privateKey:s,publicKey:new Qa(s._publicKey)}}_generateKey(t){const e=t.g,s=t.p;this._keyBytes=s.length,this._gBigInt=ue(e),this._pBigInt=ue(s),this._privateKey=window.crypto.getRandomValues(new Uint8Array(this._keyBytes)),this._privateKeyBigInt=ue(this._privateKey),this._publicKey=Bt(Rt(this._gBigInt,this._privateKeyBigInt,this._pBigInt),this._keyBytes)}deriveBits(t,e){const s=Math.ceil(e/8),n=new Uint8Array(t.public),r=s>this._keyBytes?s:this._keyBytes,a=Rt(ue(n),this._privateKeyBigInt,this._pBigInt);return Bt(a,r).slice(0,r)}}async function La(i){let t="";for(let e=0;e<i.length;e++)t+=String.fromCharCode(i[e]);return Ra(Da(Ia(Ba(t),8*t.length)))}function Ra(i){let t=new Uint8Array(i.length);for(let e=0;e<i.length;e++)t[e]=i.charCodeAt(e);return t}function Ba(i){let t=Array(i.length>>2);for(let e=0;e<t.length;e++)t[e]=0;for(let e=0;e<8*i.length;e+=8)t[e>>5]|=(255&i.charCodeAt(e/8))<<e%32;return t}function Da(i){let t="";for(let e=0;e<32*i.length;e+=8)t+=String.fromCharCode(i[e>>5]>>>e%32&255);return t}function Ia(i,t){i[t>>5]|=128<<t%32,i[14+(t+64>>>9<<4)]=t;let e=1732584193,s=-271733879,n=-1732584194,r=271733878;for(let a=0;a<i.length;a+=16){let h=e,c=s,o=n,l=r;s=ne(s=ne(s=ne(s=ne(s=se(s=se(s=se(s=se(s=ie(s=ie(s=ie(s=ie(s=te(s=te(s=te(s=te(s,n=te(n,r=te(r,e=te(e,s,n,r,i[a+0],7,-680876936),s,n,i[a+1],12,-389564586),e,s,i[a+2],17,606105819),r,e,i[a+3],22,-1044525330),n=te(n,r=te(r,e=te(e,s,n,r,i[a+4],7,-176418897),s,n,i[a+5],12,1200080426),e,s,i[a+6],17,-1473231341),r,e,i[a+7],22,-45705983),n=te(n,r=te(r,e=te(e,s,n,r,i[a+8],7,1770035416),s,n,i[a+9],12,-1958414417),e,s,i[a+10],17,-42063),r,e,i[a+11],22,-1990404162),n=te(n,r=te(r,e=te(e,s,n,r,i[a+12],7,1804603682),s,n,i[a+13],12,-40341101),e,s,i[a+14],17,-1502002290),r,e,i[a+15],22,1236535329),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+1],5,-165796510),s,n,i[a+6],9,-1069501632),e,s,i[a+11],14,643717713),r,e,i[a+0],20,-373897302),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+5],5,-701558691),s,n,i[a+10],9,38016083),e,s,i[a+15],14,-660478335),r,e,i[a+4],20,-405537848),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+9],5,568446438),s,n,i[a+14],9,-1019803690),e,s,i[a+3],14,-187363961),r,e,i[a+8],20,1163531501),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+13],5,-1444681467),s,n,i[a+2],9,-51403784),e,s,i[a+7],14,1735328473),r,e,i[a+12],20,-1926607734),n=se(n,r=se(r,e=se(e,s,n,r,i[a+5],4,-378558),s,n,i[a+8],11,-2022574463),e,s,i[a+11],16,1839030562),r,e,i[a+14],23,-35309556),n=se(n,r=se(r,e=se(e,s,n,r,i[a+1],4,-1530992060),s,n,i[a+4],11,1272893353),e,s,i[a+7],16,-155497632),r,e,i[a+10],23,-1094730640),n=se(n,r=se(r,e=se(e,s,n,r,i[a+13],4,681279174),s,n,i[a+0],11,-358537222),e,s,i[a+3],16,-722521979),r,e,i[a+6],23,76029189),n=se(n,r=se(r,e=se(e,s,n,r,i[a+9],4,-640364487),s,n,i[a+12],11,-421815835),e,s,i[a+15],16,530742520),r,e,i[a+2],23,-995338651),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+0],6,-198630844),s,n,i[a+7],10,1126891415),e,s,i[a+14],15,-1416354905),r,e,i[a+5],21,-57434055),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+12],6,1700485571),s,n,i[a+3],10,-1894986606),e,s,i[a+10],15,-1051523),r,e,i[a+1],21,-2054922799),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+8],6,1873313359),s,n,i[a+15],10,-30611744),e,s,i[a+6],15,-1560198380),r,e,i[a+13],21,1309151649),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+4],6,-145523070),s,n,i[a+11],10,-1120210379),e,s,i[a+2],15,718787259),r,e,i[a+9],21,-343485551),e=Ae(e,h),s=Ae(s,c),n=Ae(n,o),r=Ae(r,l)}return Array(e,s,n,r)}function Nt(i,t,e,s,n,r){return Ae(Pa(Ae(Ae(t,i),Ae(s,r)),n),e)}function te(i,t,e,s,n,r,a){return Nt(t&e|~t&s,i,t,n,r,a)}function ie(i,t,e,s,n,r,a){return Nt(t&s|e&~s,i,t,n,r,a)}function se(i,t,e,s,n,r,a){return Nt(t^e^s,i,t,n,r,a)}function ne(i,t,e,s,n,r,a){return Nt(e^(t|~s),i,t,n,r,a)}function Ae(i,t){let e=(65535&i)+(65535&t);return(i>>16)+(t>>16)+(e>>16)<<16|65535&e}function Pa(i,t){return i<<t|i>>>32-t}class Ua{constructor(){this._algorithms={"AES-ECB":ki,"AES-EAX":Si,"DES-ECB":Ei,"DES-CBC":Ci,"RSA-PKCS1-v1_5":Dt,DH:Ki,MD5:La}}encrypt(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.encrypt!="function")throw new Error("key does not support encryption");return e.encrypt(t,s)}decrypt(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.decrypt!="function")throw new Error("key does not support encryption");return e.decrypt(t,s)}importKey(t,e,s,n,r){if(t!=="raw")throw new Error("key format is not supported");const a=this._algorithms[s.name];if(typeof a>"u"||typeof a.importKey!="function")throw new Error("algorithm is not supported");return a.importKey(e,s,n,r)}generateKey(t,e,s){const n=this._algorithms[t.name];if(typeof n>"u"||typeof n.generateKey!="function")throw new Error("algorithm is not supported");return n.generateKey(t,e,s)}exportKey(t,e){if(t!=="raw")throw new Error("key format is not supported");if(typeof e.exportKey!="function")throw new Error("key does not support exportKey");return e.exportKey()}digest(t,e){const s=this._algorithms[t];if(typeof s!="function")throw new Error("algorithm is not supported");return s(e)}deriveBits(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.deriveBits!="function")throw new Error("key does not support deriveBits");return e.deriveBits(t,s)}}const Z=new Ua;class Ds{constructor(){this._cipher=null,this._counter=new Uint8Array(16)}async setKey(t){this._cipher=await Z.importKey("raw",t,{name:"AES-EAX"},!1,["encrypt, decrypt"])}async makeMessage(t){const e=new Uint8Array([(t.length&65280)>>>8,t.length&255]),s=await Z.encrypt({name:"AES-EAX",iv:this._counter,additionalData:e},this._cipher,t);for(let r=0;r<16&&this._counter[r]++===255;r++);const n=new Uint8Array(t.length+2+16);return n.set(e),n.set(s,2),n}async receiveMessage(t,e){const s=new Uint8Array([(t&65280)>>>8,t&255]),n=await Z.decrypt({name:"AES-EAX",iv:this._counter,additionalData:s},this._cipher,e);for(let r=0;r<16&&this._counter[r]++===255;r++);return n}}class Na extends rn{constructor(t,e){super(),this._hasStarted=!1,this._checkSock=null,this._checkCredentials=null,this._approveServerResolve=null,this._sockReject=null,this._credentialsReject=null,this._approveServerReject=null,this._sock=t,this._getCredentials=e}_waitSockAsync(t){return new Promise((e,s)=>{const n=()=>!this._sock.rQwait("RA2",t);n()?e():(this._checkSock=()=>{n()&&(e(),this._checkSock=null,this._sockReject=null)},this._sockReject=s)})}_waitApproveKeyAsync(){return new Promise((t,e)=>{this._approveServerResolve=t,this._approveServerReject=e})}_waitCredentialsAsync(t){const e=()=>t===1&&this._getCredentials().username!==void 0&&this._getCredentials().password!==void 0?!0:t===2&&this._getCredentials().password!==void 0;return new Promise((s,n)=>{e()?s():(this._checkCredentials=()=>{e()&&(s(),this._checkCredentials=null,this._credentialsReject=null)},this._credentialsReject=n)})}checkInternalEvents(){this._checkSock!==null&&this._checkSock(),this._checkCredentials!==null&&this._checkCredentials()}approveServer(){this._approveServerResolve!==null&&(this._approveServerResolve(),this._approveServerResolve=null)}disconnect(){this._sockReject!==null&&(this._sockReject(new Error("disconnect normally")),this._sockReject=null),this._credentialsReject!==null&&(this._credentialsReject(new Error("disconnect normally")),this._credentialsReject=null),this._approveServerReject!==null&&(this._approveServerReject(new Error("disconnect normally")),this._approveServerReject=null)}async negotiateRA2neAuthAsync(){this._hasStarted=!0,await this._waitSockAsync(4);const t=this._sock.rQpeekBytes(4),e=this._sock.rQshift32();if(e<1024)throw new Error("RA2: server public key is too short: "+e);if(e>8192)throw new Error("RA2: server public key is too long: "+e);const s=Math.ceil(e/8);await this._waitSockAsync(s*2);const n=this._sock.rQshiftBytes(s),r=this._sock.rQshiftBytes(s),a=await Z.importKey("raw",{n,e:r},{name:"RSA-PKCS1-v1_5"},!1,["encrypt"]),h=new Uint8Array(4+s*2);h.set(t),h.set(n,4),h.set(r,4+s);let c=this._waitApproveKeyAsync();this.dispatchEvent(new CustomEvent("serververification",{detail:{type:"RSA",publickey:h}})),await c;const o=2048,l=Math.ceil(o/8),_=(await Z.generateKey({name:"RSA-PKCS1-v1_5",modulusLength:o,publicExponent:new Uint8Array([1,0,1])},!0,["encrypt"])).privateKey,f=await Z.exportKey("raw",_),x=f.n,k=f.e,E=new Uint8Array(4+l*2);E[0]=(o&4278190080)>>>24,E[1]=(o&16711680)>>>16,E[2]=(o&65280)>>>8,E[3]=o&255,E.set(x,4),E.set(k,4+l),this._sock.sQpushBytes(E),this._sock.flush();const F=new Uint8Array(16);window.crypto.getRandomValues(F);const C=await Z.encrypt({name:"RSA-PKCS1-v1_5"},a,F),M=new Uint8Array(2+s);if(M[0]=(s&65280)>>>8,M[1]=s&255,M.set(C,2),this._sock.sQpushBytes(M),this._sock.flush(),await this._waitSockAsync(2),this._sock.rQshift16()!==l)throw new Error("RA2: wrong encrypted message length");const A=this._sock.rQshiftBytes(l),S=await Z.decrypt({name:"RSA-PKCS1-v1_5"},_,A);if(S===null||S.length!==16)throw new Error("RA2: corrupted server encrypted random");let T=new Uint8Array(32),I=new Uint8Array(32);T.set(S),T.set(F,16),I.set(F),I.set(S,16),T=await window.crypto.subtle.digest("SHA-1",T),T=new Uint8Array(T).slice(0,16),I=await window.crypto.subtle.digest("SHA-1",I),I=new Uint8Array(I).slice(0,16);const K=new Ds;await K.setKey(T);const P=new Ds;await P.setKey(I);let R=new Uint8Array(8+s*2+l*2),X=new Uint8Array(8+s*2+l*2);if(R.set(h),R.set(E,4+s*2),X.set(E),X.set(h,4+l*2),R=await window.crypto.subtle.digest("SHA-1",R),X=await window.crypto.subtle.digest("SHA-1",X),R=new Uint8Array(R),X=new Uint8Array(X),this._sock.sQpushBytes(await K.makeMessage(X)),this._sock.flush(),await this._waitSockAsync(38),this._sock.rQshift16()!==20)throw new Error("RA2: wrong server hash");const H=await P.receiveMessage(20,this._sock.rQshiftBytes(36));if(H===null)throw new Error("RA2: failed to authenticate the message");for(let W=0;W<20;W++)if(H[W]!==R[W])throw new Error("RA2: wrong server hash");if(await this._waitSockAsync(19),this._sock.rQshift16()!==1)throw new Error("RA2: wrong subtype");let $=await P.receiveMessage(1,this._sock.rQshiftBytes(17));if($===null)throw new Error("RA2: failed to authenticate the message");$=$[0];let we=this._waitCredentialsAsync($);if($===1)(this._getCredentials().username===void 0||this._getCredentials().password===void 0)&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}}));else if($===2)this._getCredentials().password===void 0&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}}));else throw new Error("RA2: wrong subtype");await we;let he;$===1?he=ye(this._getCredentials().username).slice(0,255):he="";const _e=ye(this._getCredentials().password).slice(0,255),le=new Uint8Array(he.length+_e.length+2);le[0]=he.length,le[he.length+1]=_e.length;for(let W=0;W<he.length;W++)le[W+1]=he.charCodeAt(W);for(let W=0;W<_e.length;W++)le[he.length+2+W]=_e.charCodeAt(W);this._sock.sQpushBytes(await K.makeMessage(le)),this._sock.flush()}get hasStarted(){return this._hasStarted}set hasStarted(t){this._hasStarted=t}}class Ha{constructor(){this._lines=0}decodeRect(t,e,s,n,r,a,h){if(s===0||n===0)return!0;this._lines===0&&(this._lines=n);const c=h==8?1:4,o=s*c;for(;this._lines>0;){if(r.rQwait("RAW",o))return!1;const l=e+(n-this._lines);let _=r.rQshiftBytes(o,!1);if(h==8){const f=new Uint8Array(s*4);for(let x=0;x<s;x++)f[x*4+0]=(_[x]>>0&3)*255/3,f[x*4+1]=(_[x]>>2&3)*255/3,f[x*4+2]=(_[x]>>4&3)*255/3,f[x*4+3]=255;_=f}for(let f=0;f<s;f++)_[f*4+3]=255;a.blitImage(t,l,s,1,_,0),this._lines--}return!0}}class za{decodeRect(t,e,s,n,r,a,h){if(r.rQwait("COPYRECT",4))return!1;let c=r.rQshift16(),o=r.rQshift16();return s===0||n===0||a.copyImage(c,o,t,e,s,n),!0}}class Va{constructor(){this._subrects=0}decodeRect(t,e,s,n,r,a,h){if(this._subrects===0){if(r.rQwait("RRE",8))return!1;this._subrects=r.rQshift32();let c=r.rQshiftBytes(4);a.fillRect(t,e,s,n,c)}for(;this._subrects>0;){if(r.rQwait("RRE",12))return!1;let c=r.rQshiftBytes(4),o=r.rQshift16(),l=r.rQshift16(),_=r.rQshift16(),f=r.rQshift16();a.fillRect(t+o,e+l,_,f,c),this._subrects--}return!0}}class Oa{constructor(){this._tiles=0,this._lastsubencoding=0,this._tileBuffer=new Uint8Array(256*4)}decodeRect(t,e,s,n,r,a,h){for(this._tiles===0&&(this._tilesX=Math.ceil(s/16),this._tilesY=Math.ceil(n/16),this._totalTiles=this._tilesX*this._tilesY,this._tiles=this._totalTiles);this._tiles>0;){let c=1;if(r.rQwait("HEXTILE",c))return!1;let o=r.rQpeek8();if(o>30)throw new Error("Illegal hextile subencoding (subencoding: "+o+")");const l=this._totalTiles-this._tiles,_=l%this._tilesX,f=Math.floor(l/this._tilesX),x=t+_*16,k=e+f*16,E=Math.min(16,t+s-x),F=Math.min(16,e+n-k);if(o&1)c+=E*F*4;else if(o&2&&(c+=4),o&4&&(c+=4),o&8){if(c++,r.rQwait("HEXTILE",c))return!1;let C=r.rQpeekBytes(c).at(-1);o&16?c+=C*6:c+=C*2}if(r.rQwait("HEXTILE",c))return!1;if(r.rQshift8(),o===0)this._lastsubencoding&1?Q(" Ignoring blank after RAW"):a.fillRect(x,k,E,F,this._background);else if(o&1){let C=E*F,M=r.rQshiftBytes(C*4,!1);for(let A=0;A<C;A++)M[A*4+3]=255;a.blitImage(x,k,E,F,M,0)}else{if(o&2&&(this._background=new Uint8Array(r.rQshiftBytes(4))),o&4&&(this._foreground=new Uint8Array(r.rQshiftBytes(4))),this._startTile(x,k,E,F,this._background),o&8){let C=r.rQshift8();for(let M=0;M<C;M++){let A;o&16?A=r.rQshiftBytes(4):A=this._foreground;const S=r.rQshift8(),T=S>>4,I=S&15,K=r.rQshift8(),P=(K>>4)+1,R=(K&15)+1;this._subTile(T,I,P,R,A)}}this._finishTile(a)}this._lastsubencoding=o,this._tiles--}return!0}_startTile(t,e,s,n,r){this._tileX=t,this._tileY=e,this._tileW=s,this._tileH=n;const a=r[0],h=r[1],c=r[2],o=this._tileBuffer;for(let l=0;l<s*n*4;l+=4)o[l]=a,o[l+1]=h,o[l+2]=c,o[l+3]=255}_subTile(t,e,s,n,r){const a=r[0],h=r[1],c=r[2],o=t+s,l=e+n,_=this._tileBuffer,f=this._tileW;for(let x=e;x<l;x++)for(let k=t;k<o;k++){const E=(k+x*f)*4;_[E]=a,_[E+1]=h,_[E+2]=c,_[E+3]=255}}_finishTile(t){t.blitImage(this._tileX,this._tileY,this._tileW,this._tileH,this._tileBuffer,0)}}class Ga{constructor(){this._zlib=new It,this._length=0}decodeRect(t,e,s,n,r,a,h){if(s===0||n===0)return!0;if(this._length===0){if(r.rQwait("ZLIB",4))return!1;this._length=r.rQshift32()}if(r.rQwait("ZLIB",this._length))return!1;let c=new Uint8Array(r.rQshiftBytes(this._length,!1));this._length=0,this._zlib.setInput(c),c=this._zlib.inflate(s*n*4),this._zlib.setInput(null);for(let o=0;o<s*n;o++)c[o*4+3]=255;return a.blitImage(t,e,s,n,c,0),!0}}class Fn{constructor(){this._ctl=null,this._filter=null,this._numColors=0,this._palette=new Uint8Array(1024),this._len=0,this._zlibs=[];for(let t=0;t<4;t++)this._zlibs[t]=new It}decodeRect(t,e,s,n,r,a,h){if(this._ctl===null){if(r.rQwait("TIGHT compression-control",1))return!1;this._ctl=r.rQshift8();for(let o=0;o<4;o++)this._ctl>>o&1&&(this._zlibs[o].reset(),re("Reset zlib stream "+o));this._ctl=this._ctl>>4}let c;if(this._ctl===8)c=this._fillRect(t,e,s,n,r,a,h);else if(this._ctl===9)c=this._jpegRect(t,e,s,n,r,a,h);else if(this._ctl===10)c=this._pngRect(t,e,s,n,r,a,h);else if((this._ctl&8)==0)c=this._basicRect(this._ctl,t,e,s,n,r,a,h);else throw new Error("Illegal tight compression received (ctl: "+this._ctl+")");return c&&(this._ctl=null),c}_fillRect(t,e,s,n,r,a,h){if(r.rQwait("TIGHT",3))return!1;let c=r.rQshiftBytes(3);return a.fillRect(t,e,s,n,c,!1),!0}_jpegRect(t,e,s,n,r,a,h){let c=this._readData(r);return c===null?!1:(a.imageRect(t,e,s,n,"image/jpeg",c),!0)}_pngRect(t,e,s,n,r,a,h){throw new Error("PNG received in standard Tight rect")}_basicRect(t,e,s,n,r,a,h,c){if(this._filter===null)if(t&4){if(a.rQwait("TIGHT",1))return!1;this._filter=a.rQshift8()}else this._filter=0;let o=t&3,l;switch(this._filter){case 0:l=this._copyFilter(o,e,s,n,r,a,h,c);break;case 1:l=this._paletteFilter(o,e,s,n,r,a,h,c);break;case 2:l=this._gradientFilter(o,e,s,n,r,a,h,c);break;default:throw new Error("Illegal tight filter received (ctl: "+this._filter+")")}return l&&(this._filter=null),l}_copyFilter(t,e,s,n,r,a,h,c){const o=n*r*3;let l;if(o===0)return!0;if(o<12){if(a.rQwait("TIGHT",o))return!1;l=a.rQshiftBytes(o)}else{if(l=this._readData(a),l===null)return!1;this._zlibs[t].setInput(l),l=this._zlibs[t].inflate(o),this._zlibs[t].setInput(null)}let _=new Uint8Array(n*r*4);for(let f=0,x=0;f<n*r*4;f+=4,x+=3)_[f]=l[x],_[f+1]=l[x+1],_[f+2]=l[x+2],_[f+3]=255;return h.blitImage(e,s,n,r,_,0,!1),!0}_paletteFilter(t,e,s,n,r,a,h,c){if(this._numColors===0){if(a.rQwait("TIGHT palette",1))return!1;const x=a.rQpeek8()+1,k=x*3;if(a.rQwait("TIGHT palette",1+k))return!1;this._numColors=x,a.rQskipBytes(1),a.rQshiftTo(this._palette,k)}const o=this._numColors<=2?1:8,_=Math.floor((n*o+7)/8)*r;let f;if(_===0)return!0;if(_<12){if(a.rQwait("TIGHT",_))return!1;f=a.rQshiftBytes(_)}else{if(f=this._readData(a),f===null)return!1;this._zlibs[t].setInput(f),f=this._zlibs[t].inflate(_),this._zlibs[t].setInput(null)}return this._numColors==2?this._monoRect(e,s,n,r,f,this._palette,h):this._paletteRect(e,s,n,r,f,this._palette,h),this._numColors=0,!0}_monoRect(t,e,s,n,r,a,h){const c=this._getScratchBuffer(s*n*4),o=Math.floor((s+7)/8),l=Math.floor(s/8);for(let _=0;_<n;_++){let f,x,k;for(k=0;k<l;k++)for(let E=7;E>=0;E--)f=(_*s+k*8+7-E)*4,x=(r[_*o+k]>>E&1)*3,c[f]=a[x],c[f+1]=a[x+1],c[f+2]=a[x+2],c[f+3]=255;for(let E=7;E>=8-s%8;E--)f=(_*s+k*8+7-E)*4,x=(r[_*o+k]>>E&1)*3,c[f]=a[x],c[f+1]=a[x+1],c[f+2]=a[x+2],c[f+3]=255}h.blitImage(t,e,s,n,c,0,!1)}_paletteRect(t,e,s,n,r,a,h){const c=this._getScratchBuffer(s*n*4),o=s*n*4;for(let l=0,_=0;l<o;l+=4,_++){const f=r[_]*3;c[l]=a[f],c[l+1]=a[f+1],c[l+2]=a[f+2],c[l+3]=255}h.blitImage(t,e,s,n,c,0,!1)}_gradientFilter(t,e,s,n,r,a,h,c){const o=n*r*3;let l;if(o===0)return!0;if(o<12){if(a.rQwait("TIGHT",o))return!1;l=a.rQshiftBytes(o)}else{if(l=this._readData(a),l===null)return!1;this._zlibs[t].setInput(l),l=this._zlibs[t].inflate(o),this._zlibs[t].setInput(null)}let _=new Uint8Array(4*n*r),f=0,x=0,k=new Uint8Array(3);for(let M=0;M<n;M++){for(let A=0;A<3;A++){const S=k[A],T=l[x++]+S;_[f++]=T,k[A]=T}_[f++]=255}let E=0,F=new Uint8Array(3),C=new Uint8Array(3);for(let M=1;M<r;M++){k.fill(0),C.fill(0);for(let A=0;A<n;A++){for(let S=0;S<3;S++){F[S]=_[E++];let T=k[S]+F[S]-C[S];T<0?T=0:T>255&&(T=255);const I=l[x++]+T;_[f++]=I,C[S]=F[S],k[S]=I}_[f++]=255,E++}}return h.blitImage(e,s,n,r,_,0,!1),!0}_readData(t){if(this._len===0){if(t.rQwait("TIGHT",3))return null;let s;s=t.rQshift8(),this._len=s&127,s&128&&(s=t.rQshift8(),this._len|=(s&127)<<7,s&128&&(s=t.rQshift8(),this._len|=s<<14))}if(t.rQwait("TIGHT",this._len))return null;let e=t.rQshiftBytes(this._len,!1);return this._len=0,e}_getScratchBuffer(t){return(!this._scratchBuffer||this._scratchBuffer.length<t)&&(this._scratchBuffer=new Uint8Array(t)),this._scratchBuffer}}class Wa extends Fn{_pngRect(t,e,s,n,r,a,h){let c=this._readData(r);return c===null?!1:(a.imageRect(t,e,s,n,"image/png",c),!0)}_basicRect(t,e,s,n,r,a,h,c){throw new Error("BasicCompression received in TightPNG rect")}}const kt=64,St=64;class ja{constructor(){this._length=0,this._inflator=new It,this._pixelBuffer=new Uint8Array(kt*St*4),this._tileBuffer=new Uint8Array(kt*St*4)}decodeRect(t,e,s,n,r,a,h){if(this._length===0){if(r.rQwait("ZLib data length",4))return!1;this._length=r.rQshift32()}if(r.rQwait("Zlib data",this._length))return!1;const c=r.rQshiftBytes(this._length,!1);this._inflator.setInput(c);for(let o=e;o<e+n;o+=St){let l=Math.min(St,e+n-o);for(let _=t;_<t+s;_+=kt){let f=Math.min(kt,t+s-_);const x=f*l,k=this._inflator.inflate(1)[0];if(k===0){const E=this._readPixels(x);a.blitImage(_,o,f,l,E,0,!1)}else if(k===1){const E=this._readPixels(1);a.fillRect(_,o,f,l,[E[0],E[1],E[2]])}else if(k>=2&&k<=16){const E=this._decodePaletteTile(k,x,f,l);a.blitImage(_,o,f,l,E,0,!1)}else if(k===128){const E=this._decodeRLETile(x);a.blitImage(_,o,f,l,E,0,!1)}else if(k>=130&&k<=255){const E=this._decodeRLEPaletteTile(k-128,x);a.blitImage(_,o,f,l,E,0,!1)}else throw new Error("Unknown subencoding: "+k)}}return this._length=0,!0}_getBitsPerPixelInPalette(t){if(t<=2)return 1;if(t<=4)return 2;if(t<=16)return 4}_readPixels(t){let e=this._pixelBuffer;const s=this._inflator.inflate(3*t);for(let n=0,r=0;n<t*4;n+=4,r+=3)e[n]=s[r],e[n+1]=s[r+1],e[n+2]=s[r+2],e[n+3]=255;return e}_decodePaletteTile(t,e,s,n){const r=this._tileBuffer,a=this._readPixels(t),h=this._getBitsPerPixelInPalette(t),c=(1<<h)-1;let o=0,l=this._inflator.inflate(1)[0];for(let _=0;_<n;_++){let f=8-h;for(let x=0;x<s;x++){f<0&&(f=8-h,l=this._inflator.inflate(1)[0]);let k=l>>f&c;r[o]=a[k*4],r[o+1]=a[k*4+1],r[o+2]=a[k*4+2],r[o+3]=a[k*4+3],o+=4,f-=h}f<8-h&&_<n-1&&(l=this._inflator.inflate(1)[0])}return r}_decodeRLETile(t){const e=this._tileBuffer;let s=0;for(;s<t;){const n=this._readPixels(1),r=this._readRLELength();for(let a=0;a<r;a++)e[s*4]=n[0],e[s*4+1]=n[1],e[s*4+2]=n[2],e[s*4+3]=n[3],s++}return e}_decodeRLEPaletteTile(t,e){const s=this._tileBuffer,n=this._readPixels(t);let r=0;for(;r<e;){let a=this._inflator.inflate(1)[0],h=1;if(a>=128&&(a-=128,h=this._readRLELength()),a>t)throw new Error("Too big index in palette: "+a+", palette size: "+t);if(r+h>e)throw new Error("Too big rle length in palette mode: "+h+", allowed length is: "+(e-r));for(let c=0;c<h;c++)s[r*4]=n[a*4],s[r*4+1]=n[a*4+1],s[r*4+2]=n[a*4+2],s[r*4+3]=n[a*4+3],r++}return s}_readRLELength(){let t=0,e=0;do e=this._inflator.inflate(1)[0],t+=e;while(e===255);return t+1}}class Za{constructor(){this._cachedQuantTables=[],this._cachedHuffmanTables=[],this._segments=[]}decodeRect(t,e,s,n,r,a,h){for(;;){let x=this._readSegment(r);if(x===null)return!1;if(this._segments.push(x),x[1]===217)break}let c=[],o=[];for(let x of this._segments){let k=x[1];k===196?c.push(x):k===219&&o.push(x)}const l=this._segments.findIndex(x=>x[1]==192||x[1]==194);if(l==-1)throw new Error("Illegal JPEG image without SOF");o.length===0&&this._segments.splice(l+1,0,...this._cachedQuantTables),c.length===0&&this._segments.splice(l+1,0,...this._cachedHuffmanTables);let _=0;for(let x of this._segments)_+=x.length;let f=new Uint8Array(_);_=0;for(let x of this._segments)f.set(x,_),_+=x.length;return a.imageRect(t,e,s,n,"image/jpeg",f),c.length!==0&&(this._cachedHuffmanTables=c),o.length!==0&&(this._cachedQuantTables=o),this._segments=[],!0}_readSegment(t){if(t.rQwait("JPEG",2))return null;let e=t.rQshift8();if(e!=255)throw new Error("Illegal JPEG marker received (byte: "+e+")");let s=t.rQshift8();if(s>=208&&s<=217||s==1)return new Uint8Array([e,s]);if(t.rQwait("JPEG",2,2))return null;let n=t.rQshift16();if(n<2)throw new Error("Illegal JPEG length received (length: "+n+")");if(t.rQwait("JPEG",n-2,4))return null;let r=0;if(s===218){if(t.rQwait("JPEG",n-2+2,4))return null;let h=t.rQlen(),c=t.rQpeekBytes(h,!1);for(;;){let o=c.indexOf(255,n-2+r);if(o===-1||o===h-1)return t.rQwait("JPEG",1/0,4),null;if(c.at(o+1)===0||c.at(o+1)>=208&&c.at(o+1)<=215){r=o+2-(n-2);continue}r=o-(n-2);break}}let a=new Uint8Array(2+n+r);return a[0]=e,a[1]=s,a[2]=n>>8,a[3]=n,a.set(t.rQshiftBytes(n-2+r,!1),4),a}}class Ya{constructor(t){this._data=t,this._index=0,this.profileIdc=null,this.constraintSet=null,this.levelIdc=null}_getStartSequenceLen(t){let e=this._data;return e[t+0]==0&&e[t+1]==0&&e[t+2]==0&&e[t+3]==1?4:e[t+0]==0&&e[t+1]==0&&e[t+2]==1?3:0}_indexOfNextNalUnit(t){let e=this._data;for(let s=t;s<e.length;++s)if(this._getStartSequenceLen(s)!=0)return s;return-1}_parseSps(t){this.profileIdc=this._data[t],this.constraintSet=this._data[t+1],this.levelIdc=this._data[t+2]}_parseNalUnit(t){const e=this._data[t];if(e&128)throw new Error("H264 parsing sanity check failed, forbidden zero bit is set");const s=e&31;switch(s){case 1:return{slice:!0};case 5:return{slice:!0,key:!0};case 6:return{};case 7:return this._parseSps(t+1),{};case 8:return{};default:ae("Unhandled unit type: ",s);break}return{}}parse(){const t=this._index;let e=!1;for(;this._index<this._data.length;){const s=this._getStartSequenceLen(this._index);if(s==0)throw new Error("Invalid start sequence in bit stream");const{slice:n,key:r}=this._parseNalUnit(this._index+s);let a=this._indexOfNextNalUnit(this._index+s);if(a==-1?this._index=this._data.length:this._index=a,r&&(e=!0),n)break}return t===this._index?null:{frame:this._data.subarray(t,this._index),key:e}}}class qa{constructor(t,e){this.lastUsed=0,this._width=t,this._height=e,this._profileIdc=null,this._constraintSet=null,this._levelIdc=null,this._decoder=null,this._pendingFrames=[]}_handleFrame(t){let e=this._pendingFrames.shift();if(e===void 0)throw new Error("Pending frame queue empty when receiving frame from decoder");if(e.timestamp!=t.timestamp)throw new Error("Video frame timestamp mismatch. Expected "+t.timestamp+" but but got "+e.timestamp);e.frame=t,e.ready=!0,e.resolve(),e.keep||t.close()}_handleError(t){throw new Error("Failed to decode frame: "+t.message)}_configureDecoder(t,e,s){(this._decoder===null||this._decoder.state==="closed")&&(this._decoder=new VideoDecoder({output:r=>this._handleFrame(r),error:r=>this._handleError(r)}));const n="avc1."+t.toString(16).padStart(2,"0")+e.toString(16).padStart(2,"0")+s.toString(16).padStart(2,"0");this._decoder.configure({codec:n,codedWidth:this._width,codedHeight:this._height,optimizeForLatency:!0})}_preparePendingFrame(t){let e={timestamp:t,promise:null,resolve:null,frame:null,ready:!1,keep:!1};return e.promise=new Promise(s=>{e.resolve=s}),this._pendingFrames.push(e),e}decode(t){let e=new Ya(t),s=null,n=Math.round(window.performance.now()*1e3);for(;;){let r=e.parse();if(r===null)break;if(e.profileIdc!==null&&(self._profileIdc=e.profileIdc,self._constraintSet=e.constraintSet,self._levelIdc=e.levelIdc),this._decoder===null||this._decoder.state!=="configured"){if(!r.key){ae("Missing key frame. Can't decode until one arrives");continue}if(self._profileIdc===null){ae("Cannot config decoder. Have not received SPS and PPS yet.");continue}this._configureDecoder(self._profileIdc,self._constraintSet,self._levelIdc)}s=this._preparePendingFrame(n);const a=new EncodedVideoChunk({timestamp:n,type:r.key?"key":"delta",data:r.frame});try{this._decoder.decode(a)}catch(h){ae("Failed to decode:",h)}}return s!==null&&(s.keep=!0),s}}class $a{constructor(){this._tick=0,this._contexts={}}_contextId(t,e,s,n){return[t,e,s,n].join(",")}_findOldestContextId(){let t=Number.MAX_VALUE,e;for(const[s,n]of Object.entries(this._contexts))n.lastUsed<t&&(t=n.lastUsed,e=s);return e}_createContext(t,e,s,n){if(Object.keys(this._contexts).length>=64){let h=this._findOldestContextId();delete this._contexts[h]}let a=new qa(s,n);return this._contexts[this._contextId(t,e,s,n)]=a,a}_getContext(t,e,s,n){let r=this._contexts[this._contextId(t,e,s,n)];return r!==void 0?r:this._createContext(t,e,s,n)}_resetContext(t,e,s,n){delete this._contexts[this._contextId(t,e,s,n)]}_resetAllContexts(){this._contexts={}}decodeRect(t,e,s,n,r,a,h){if(r.rQwait("h264 header",8))return!1;const l=r.rQshift32(),_=r.rQshift32();if(r.rQwait("h264 payload",l,8))return!1;_&2?this._resetAllContexts():_&1&&this._resetContext(t,e,s,n);let f=this._getContext(t,e,s,n);if(f.lastUsed=this._tick++,l!==0){let x=r.rQshiftBytes(l,!1),k=f.decode(x);k!==null&&a.videoFrame(t,e,s,n,k)}return!0}}const Ja=3,eo="rgb(40, 40, 40)",Is=17,Ps=50,Us=19,$e=75,Ee=50,to=1e3,io=50,Ns=1,Et=2,Hs=6,zs=16,di=19,Vs=22,Os=30,Gs=113,Ws=129,js=256,be=1,Zs=1<<24,At=1<<25,Ys=1<<26,et=1<<27,Xt=1<<28;class D extends rn{constructor(t,e,s){if(!t)throw new Error("Must specify target");if(!e)throw new Error("Must specify URL, WebSocket or RTCDataChannel");window.isSecureContext||G("noVNC requires a secure context (TLS). Expect crashes!"),super(),this._target=t,typeof e=="string"?this._url=e:(this._url=null,this._rawChannel=e),s=s||{},this._rfbCredentials=s.credentials||{},this._shared="shared"in s?!!s.shared:!0,this._repeaterID=s.repeaterID||"",this._wsProtocols=s.wsProtocols||[],this._rfbConnectionState="",this._rfbInitState="",this._rfbAuthScheme=-1,this._rfbCleanDisconnect=!0,this._rfbRSAAESAuthenticationState=null,this._rfbVersion=0,this._rfbMaxVersion=3.8,this._rfbTightVNC=!1,this._rfbVeNCryptState=0,this._rfbXvpVer=0,this._fbWidth=0,this._fbHeight=0,this._fbName="",this._capabilities={power:!1},this._supportsFence=!1,this._supportsContinuousUpdates=!1,this._enabledContinuousUpdates=!1,this._supportsSetDesktopSize=!1,this._screenID=0,this._screenFlags=0,this._pendingRemoteResize=!1,this._lastResize=0,this._qemuExtKeyEventSupported=!1,this._extendedPointerEventSupported=!1,this._clipboardText=null,this._clipboardServerCapabilitiesActions={},this._clipboardServerCapabilitiesFormats={},this._sock=null,this._display=null,this._flushing=!1,this._keyboard=null,this._gestures=null,this._resizeObserver=null,this._disconnTimer=null,this._resizeTimeout=null,this._mouseMoveTimer=null,this._decoders={},this._FBU={rects:0,x:0,y:0,width:0,height:0,encoding:null},this._mousePos={},this._mouseButtonMask=0,this._mouseLastMoveTime=0,this._viewportDragging=!1,this._viewportDragPos={},this._viewportHasMoved=!1,this._accumulatedWheelDeltaX=0,this._accumulatedWheelDeltaY=0,this._gestureLastTapTime=null,this._gestureFirstDoubleTapEv=null,this._gestureLastMagnitudeX=0,this._gestureLastMagnitudeY=0,this._eventHandlers={focusCanvas:this._focusCanvas.bind(this),handleResize:this._handleResize.bind(this),handleMouse:this._handleMouse.bind(this),handleWheel:this._handleWheel.bind(this),handleGesture:this._handleGesture.bind(this),handleRSAAESCredentialsRequired:this._handleRSAAESCredentialsRequired.bind(this),handleRSAAESServerVerification:this._handleRSAAESServerVerification.bind(this)},Q(">> RFB.constructor"),this._screen=document.createElement("div"),this._screen.style.display="flex",this._screen.style.width="100%",this._screen.style.height="100%",this._screen.style.overflow="auto",this._screen.style.background=eo,this._canvas=document.createElement("canvas"),this._canvas.style.margin="auto",this._canvas.style.outline="none",this._canvas.width=0,this._canvas.height=0,this._canvas.tabIndex=-1,this._screen.appendChild(this._canvas),this._cursor=new Xa,this._cursorImage=D.cursors.none,this._decoders[L.encodingRaw]=new Ha,this._decoders[L.encodingCopyRect]=new za,this._decoders[L.encodingRRE]=new Va,this._decoders[L.encodingHextile]=new Oa,this._decoders[L.encodingZlib]=new Ga,this._decoders[L.encodingTight]=new Fn,this._decoders[L.encodingTightPNG]=new Wa,this._decoders[L.encodingZRLE]=new ja,this._decoders[L.encodingJPEG]=new Za,this._decoders[L.encodingH264]=new $a;try{this._display=new er(this._canvas)}catch(n){throw G("Display exception: "+n),n}this._keyboard=new ka(this._canvas),this._keyboard.onkeyevent=this._handleKeyEvent.bind(this),this._remoteCapsLock=null,this._remoteNumLock=null,this._gestures=new Aa,this._sock=new Fa,this._sock.on("open",this._socketOpen.bind(this)),this._sock.on("close",this._socketClose.bind(this)),this._sock.on("message",this._handleMessage.bind(this)),this._sock.on("error",this._socketError.bind(this)),this._expectedClientWidth=null,this._expectedClientHeight=null,this._resizeObserver=new ResizeObserver(this._eventHandlers.handleResize),this._updateConnectionState("connecting"),Q("<< RFB.constructor"),this.dragViewport=!1,this.focusOnClick=!0,this._viewOnly=!1,this._clipViewport=!1,this._clippingViewport=!1,this._scaleViewport=!1,this._resizeSession=!1,this._showDotCursor=!1,this._qualityLevel=6,this._compressionLevel=2}get viewOnly(){return this._viewOnly}set viewOnly(t){this._viewOnly=t,(this._rfbConnectionState==="connecting"||this._rfbConnectionState==="connected")&&(t?this._keyboard.ungrab():this._keyboard.grab())}get capabilities(){return this._capabilities}get clippingViewport(){return this._clippingViewport}_setClippingViewport(t){t!==this._clippingViewport&&(this._clippingViewport=t,this.dispatchEvent(new CustomEvent("clippingviewport",{detail:this._clippingViewport})))}get touchButton(){return 0}set touchButton(t){ae("Using old API!")}get clipViewport(){return this._clipViewport}set clipViewport(t){this._clipViewport=t,this._updateClip()}get scaleViewport(){return this._scaleViewport}set scaleViewport(t){this._scaleViewport=t,t&&this._clipViewport&&this._updateClip(),this._updateScale(),!t&&this._clipViewport&&this._updateClip()}get resizeSession(){return this._resizeSession}set resizeSession(t){this._resizeSession=t,t&&this._requestRemoteResize()}get showDotCursor(){return this._showDotCursor}set showDotCursor(t){this._showDotCursor=t,this._refreshCursor()}get background(){return this._screen.style.background}set background(t){this._screen.style.background=t}get qualityLevel(){return this._qualityLevel}set qualityLevel(t){if(!Number.isInteger(t)||t<0||t>9){G("qualityLevel must be an integer between 0 and 9");return}this._qualityLevel!==t&&(this._qualityLevel=t,this._rfbConnectionState==="connected"&&this._sendEncodings())}get compressionLevel(){return this._compressionLevel}set compressionLevel(t){if(!Number.isInteger(t)||t<0||t>9){G("compressionLevel must be an integer between 0 and 9");return}this._compressionLevel!==t&&(this._compressionLevel=t,this._rfbConnectionState==="connected"&&this._sendEncodings())}disconnect(){this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.disconnect()}approveServer(){this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.approveServer()}sendCredentials(t){this._rfbCredentials=t,this._resumeAuthentication()}sendCtrlAltDel(){this._rfbConnectionState!=="connected"||this._viewOnly||(re("Sending Ctrl-Alt-Del"),this.sendKey(u.XK_Control_L,"ControlLeft",!0),this.sendKey(u.XK_Alt_L,"AltLeft",!0),this.sendKey(u.XK_Delete,"Delete",!0),this.sendKey(u.XK_Delete,"Delete",!1),this.sendKey(u.XK_Alt_L,"AltLeft",!1),this.sendKey(u.XK_Control_L,"ControlLeft",!1))}machineShutdown(){this._xvpOp(1,2)}machineReboot(){this._xvpOp(1,3)}machineReset(){this._xvpOp(1,4)}sendKey(t,e,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s===void 0){this.sendKey(t,e,!0),this.sendKey(t,e,!1);return}const n=Ma[e];if(this._qemuExtKeyEventSupported&&n)t=t||0,re("Sending key ("+(s?"down":"up")+"): keysym "+t+", scancode "+n),D.messages.QEMUExtendedKeyEvent(this._sock,t,s,n);else{if(!t)return;re("Sending keysym ("+(s?"down":"up")+"): "+t),D.messages.keyEvent(this._sock,t,s?1:0)}}focus(t){this._canvas.focus(t)}blur(){this._canvas.blur()}clipboardPasteFrom(t){if(!(this._rfbConnectionState!=="connected"||this._viewOnly))if(this._clipboardServerCapabilitiesFormats[be]&&this._clipboardServerCapabilitiesActions[et])this._clipboardText=t,D.messages.extendedClipboardNotify(this._sock,[be]);else{let e,s,n;e=0;for(let r of t)e++;n=new Uint8Array(e),s=0;for(let r of t){let a=r.codePointAt(0);a>255&&(a=63),n[s++]=a}D.messages.clientCutText(this._sock,n)}}getImageData(){return this._display.getImageData()}toDataURL(t,e){return this._display.toDataURL(t,e)}toBlob(t,e,s){return this._display.toBlob(t,e,s)}_connect(){if(Q(">> RFB.connect"),this._url)re(`connecting to ${this._url}`),this._sock.open(this._url,this._wsProtocols);else{if(re(`attaching ${this._rawChannel} to Websock`),this._sock.attach(this._rawChannel),this._sock.readyState==="closed")throw Error("Cannot use already closed WebSocket/RTCDataChannel");this._sock.readyState==="open"&&this._socketOpen()}this._target.appendChild(this._screen),this._gestures.attach(this._canvas),this._cursor.attach(this._canvas),this._refreshCursor(),this._resizeObserver.observe(this._screen),this._canvas.addEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.addEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.addEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.addEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.addEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.addEventListener("click",this._eventHandlers.handleMouse),this._canvas.addEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.addEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.addEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.addEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.addEventListener("gestureend",this._eventHandlers.handleGesture),Q("<< RFB.connect")}_disconnect(){Q(">> RFB.disconnect"),this._cursor.detach(),this._canvas.removeEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gestureend",this._eventHandlers.handleGesture),this._canvas.removeEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.removeEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.removeEventListener("click",this._eventHandlers.handleMouse),this._canvas.removeEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("touchstart",this._eventHandlers.focusCanvas),this._resizeObserver.disconnect(),this._keyboard.ungrab(),this._gestures.detach(),this._sock.close();try{this._target.removeChild(this._screen)}catch(t){if(t.name!=="NotFoundError")throw t}clearTimeout(this._resizeTimeout),clearTimeout(this._mouseMoveTimer),Q("<< RFB.disconnect")}_socketOpen(){this._rfbConnectionState==="connecting"&&this._rfbInitState===""?(this._rfbInitState="ProtocolVersion",Q("Starting VNC handshake")):this._fail("Unexpected server connection while "+this._rfbConnectionState)}_socketClose(t){Q("WebSocket on-close event");let e="";switch(t.code&&(e="(code: "+t.code,t.reason&&(e+=", reason: "+t.reason),e+=")"),this._rfbConnectionState){case"connecting":this._fail("Connection closed "+e);break;case"connected":this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected");break;case"disconnecting":this._updateConnectionState("disconnected");break;case"disconnected":this._fail("Unexpected server disconnect when already disconnected "+e);break;default:this._fail("Unexpected server disconnect before connecting "+e);break}this._sock.off("close"),this._rawChannel=null}_socketError(t){ae("WebSocket on-error event")}_focusCanvas(t){this.focusOnClick&&this.focus({preventScroll:!0})}_setDesktopName(t){this._fbName=t,this.dispatchEvent(new CustomEvent("desktopname",{detail:{name:this._fbName}}))}_saveExpectedClientSize(){this._expectedClientWidth=this._screen.clientWidth,this._expectedClientHeight=this._screen.clientHeight}_currentClientSize(){return[this._screen.clientWidth,this._screen.clientHeight]}_clientHasExpectedSize(){const[t,e]=this._currentClientSize();return t==this._expectedClientWidth&&e==this._expectedClientHeight}_handleResize(){this._clientHasExpectedSize()||(window.requestAnimationFrame(()=>{this._updateClip(),this._updateScale(),this._saveExpectedClientSize()}),this._requestRemoteResize())}_updateClip(){const t=this._display.clipViewport;let e=this._clipViewport;if(this._scaleViewport&&(e=!1),t!==e&&(this._display.clipViewport=e),e){const s=this._screenSize();this._display.viewportChangeSize(s.w,s.h),this._fixScrollbars(),this._setClippingViewport(s.w<this._display.width||s.h<this._display.height)}else this._setClippingViewport(!1);t!==e&&this._saveExpectedClientSize()}_updateScale(){if(!this._scaleViewport)this._display.scale=1;else{const t=this._screenSize();this._display.autoscale(t.w,t.h)}this._fixScrollbars()}_requestRemoteResize(){if(!this._resizeSession||this._viewOnly||!this._supportsSetDesktopSize||this._pendingRemoteResize)return;if(Date.now()-this._lastResize<100){clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),100-(Date.now()-this._lastResize));return}this._resizeTimeout=null;const t=this._screenSize();t.w===this._fbWidth&&t.h===this._fbHeight||(this._pendingRemoteResize=!0,this._lastResize=Date.now(),D.messages.setDesktopSize(this._sock,Math.floor(t.w),Math.floor(t.h),this._screenID,this._screenFlags),Q("Requested new desktop size: "+t.w+"x"+t.h))}_screenSize(){let t=this._screen.getBoundingClientRect();return{w:t.width,h:t.height}}_fixScrollbars(){const t=this._screen.style.overflow;this._screen.style.overflow="hidden",this._screen.getBoundingClientRect(),this._screen.style.overflow=t}_updateConnectionState(t){const e=this._rfbConnectionState;if(t===e){Q("Already in state '"+t+"', ignoring");return}if(e==="disconnected"){G("Tried changing state of a disconnected RFB object");return}switch(t){case"connected":if(e!=="connecting"){G("Bad transition to connected state, previous connection state: "+e);return}break;case"disconnected":if(e!=="disconnecting"){G("Bad transition to disconnected state, previous connection state: "+e);return}break;case"connecting":if(e!==""){G("Bad transition to connecting state, previous connection state: "+e);return}break;case"disconnecting":if(e!=="connected"&&e!=="connecting"){G("Bad transition to disconnecting state, previous connection state: "+e);return}break;default:G("Unknown connection state: "+t);return}switch(this._rfbConnectionState=t,Q("New state '"+t+"', was '"+e+"'."),this._disconnTimer&&t!=="disconnecting"&&(Q("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null,this._sock.off("close")),t){case"connecting":this._connect();break;case"connected":this.dispatchEvent(new CustomEvent("connect",{detail:{}}));break;case"disconnecting":this._disconnect(),this._disconnTimer=setTimeout(()=>{G("Disconnection timed out."),this._updateConnectionState("disconnected")},Ja*1e3);break;case"disconnected":this.dispatchEvent(new CustomEvent("disconnect",{detail:{clean:this._rfbCleanDisconnect}}));break}}_fail(t){switch(this._rfbConnectionState){case"disconnecting":G("Failed when disconnecting: "+t);break;case"connected":G("Failed while connected: "+t);break;case"connecting":G("Failed when connecting: "+t);break;default:G("RFB failure: "+t);break}return this._rfbCleanDisconnect=!1,this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected"),!1}_setCapability(t,e){this._capabilities[t]=e,this.dispatchEvent(new CustomEvent("capabilities",{detail:{capabilities:this._capabilities}}))}_handleMessage(){if(this._sock.rQwait("message",1)){ae("handleMessage called on an empty receive queue");return}switch(this._rfbConnectionState){case"disconnected":G("Got data while disconnected");break;case"connected":for(;!(this._flushing||!this._normalMsg()||this._sock.rQwait("message",1)););break;case"connecting":for(;this._rfbConnectionState==="connecting"&&this._initMsg(););break;default:G("Got data while in an invalid state");break}}_handleKeyEvent(t,e,s,n,r){e=="CapsLock"&&s&&(this._remoteCapsLock=null),this._remoteCapsLock!==null&&r!==null&&this._remoteCapsLock!==r&&s&&(Q("Fixing remote caps lock"),this.sendKey(u.XK_Caps_Lock,"CapsLock",!0),this.sendKey(u.XK_Caps_Lock,"CapsLock",!1),this._remoteCapsLock=null),e=="NumLock"&&s&&(this._remoteNumLock=null),this._remoteNumLock!==null&&n!==null&&this._remoteNumLock!==n&&s&&(Q("Fixing remote num lock"),this.sendKey(u.XK_Num_Lock,"NumLock",!0),this.sendKey(u.XK_Num_Lock,"NumLock",!1),this._remoteNumLock=null),this.sendKey(t,e,s)}static _convertButtonMask(t){const e={0:1,1:4,2:2,3:128,4:256};let s=0;for(let n=0;n<5;n++)t&1<<n&&(s|=e[n]);return s}_handleMouse(t){if(t.type==="click"&&t.target!==this._canvas||(t.stopPropagation(),t.preventDefault(),t.type==="click"||t.type==="contextmenu"))return;let e=je(t.clientX,t.clientY,this._canvas),s=D._convertButtonMask(t.buttons),n=t.type=="mousedown";switch(t.type){case"mousedown":case"mouseup":if(this.dragViewport)if(n&&!this._viewportDragging){this._viewportDragging=!0,this._viewportDragPos={x:e.x,y:e.y},this._viewportHasMoved=!1,this._flushMouseMoveTimer(e.x,e.y),this._mouseButtonMask=s;break}else{if(this._viewportDragging=!1,this._viewportHasMoved){this._mouseButtonMask=s;break}this._sendMouse(e.x,e.y,this._mouseButtonMask)}n&&Jn(this._canvas),this._handleMouseButton(e.x,e.y,s);break;case"mousemove":if(this._viewportDragging){const r=this._viewportDragPos.x-e.x,a=this._viewportDragPos.y-e.y;(this._viewportHasMoved||Math.abs(r)>xt||Math.abs(a)>xt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:e.x,y:e.y},this._display.viewportChangePos(r,a));break}this._handleMouseMove(e.x,e.y);break}}_handleMouseButton(t,e,s){this._flushMouseMoveTimer(t,e),this._mouseButtonMask=s,this._sendMouse(t,e,this._mouseButtonMask)}_handleMouseMove(t,e){if(this._mousePos={x:t,y:e},this._mouseMoveTimer==null){const s=Date.now()-this._mouseLastMoveTime;s>Is?(this._sendMouse(t,e,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()):this._mouseMoveTimer=setTimeout(()=>{this._handleDelayedMouseMove()},Is-s)}}_handleDelayedMouseMove(){this._mouseMoveTimer=null,this._sendMouse(this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()}_sendMouse(t,e,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s&32768)throw new Error("Illegal mouse button mask (mask: "+s+")");let n=s&32640;this._extendedPointerEventSupported&&n?D.messages.extendedPointerEvent(this._sock,this._display.absX(t),this._display.absY(e),s):D.messages.pointerEvent(this._sock,this._display.absX(t),this._display.absY(e),s)}_handleWheel(t){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;t.stopPropagation(),t.preventDefault();let e=je(t.clientX,t.clientY,this._canvas),s=D._convertButtonMask(t.buttons),n=t.deltaX,r=t.deltaY;t.deltaMode!==0&&(n*=Us,r*=Us),this._accumulatedWheelDeltaX+=n,this._accumulatedWheelDeltaY+=r,Math.abs(this._accumulatedWheelDeltaX)>=Ps&&(this._accumulatedWheelDeltaX<0?(this._handleMouseButton(e.x,e.y,s|32),this._handleMouseButton(e.x,e.y,s)):this._accumulatedWheelDeltaX>0&&(this._handleMouseButton(e.x,e.y,s|64),this._handleMouseButton(e.x,e.y,s)),this._accumulatedWheelDeltaX=0),Math.abs(this._accumulatedWheelDeltaY)>=Ps&&(this._accumulatedWheelDeltaY<0?(this._handleMouseButton(e.x,e.y,s|8),this._handleMouseButton(e.x,e.y,s)):this._accumulatedWheelDeltaY>0&&(this._handleMouseButton(e.x,e.y,s|16),this._handleMouseButton(e.x,e.y,s)),this._accumulatedWheelDeltaY=0)}_fakeMouseMove(t,e,s){this._handleMouseMove(e,s),this._cursor.move(t.detail.clientX,t.detail.clientY)}_handleTapEvent(t,e){let s=je(t.detail.clientX,t.detail.clientY,this._canvas);if(this._gestureLastTapTime!==null&&Date.now()-this._gestureLastTapTime<to&&this._gestureFirstDoubleTapEv.detail.type===t.detail.type){let n=this._gestureFirstDoubleTapEv.detail.clientX-t.detail.clientX,r=this._gestureFirstDoubleTapEv.detail.clientY-t.detail.clientY;Math.hypot(n,r)<io?s=je(this._gestureFirstDoubleTapEv.detail.clientX,this._gestureFirstDoubleTapEv.detail.clientY,this._canvas):this._gestureFirstDoubleTapEv=t}else this._gestureFirstDoubleTapEv=t;this._gestureLastTapTime=Date.now(),this._fakeMouseMove(this._gestureFirstDoubleTapEv,s.x,s.y),this._handleMouseButton(s.x,s.y,e),this._handleMouseButton(s.x,s.y,0)}_handleGesture(t){let e,s=je(t.detail.clientX,t.detail.clientY,this._canvas);switch(t.type){case"gesturestart":switch(t.detail.type){case"onetap":this._handleTapEvent(t,1);break;case"twotap":this._handleTapEvent(t,4);break;case"threetap":this._handleTapEvent(t,2);break;case"drag":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragging=!0,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,1));break;case"longpress":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,4));break;case"twodrag":this._gestureLastMagnitudeX=t.detail.magnitudeX,this._gestureLastMagnitudeY=t.detail.magnitudeY,this._fakeMouseMove(t,s.x,s.y);break;case"pinch":this._gestureLastMagnitudeX=Math.hypot(t.detail.magnitudeX,t.detail.magnitudeY),this._fakeMouseMove(t,s.x,s.y);break}break;case"gesturemove":switch(t.detail.type){case"onetap":case"twotap":case"threetap":break;case"drag":case"longpress":if(this.dragViewport){this._viewportDragging=!0;const n=this._viewportDragPos.x-s.x,r=this._viewportDragPos.y-s.y;(this._viewportHasMoved||Math.abs(n)>xt||Math.abs(r)>xt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:s.x,y:s.y},this._display.viewportChangePos(n,r))}else this._fakeMouseMove(t,s.x,s.y);break;case"twodrag":for(this._fakeMouseMove(t,s.x,s.y);t.detail.magnitudeY-this._gestureLastMagnitudeY>Ee;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY+=Ee;for(;t.detail.magnitudeY-this._gestureLastMagnitudeY<-Ee;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY-=Ee;for(;t.detail.magnitudeX-this._gestureLastMagnitudeX>Ee;)this._handleMouseButton(s.x,s.y,32),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=Ee;for(;t.detail.magnitudeX-this._gestureLastMagnitudeX<-Ee;)this._handleMouseButton(s.x,s.y,64),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=Ee;break;case"pinch":if(this._fakeMouseMove(t,s.x,s.y),e=Math.hypot(t.detail.magnitudeX,t.detail.magnitudeY),Math.abs(e-this._gestureLastMagnitudeX)>$e){for(this._handleKeyEvent(u.XK_Control_L,"ControlLeft",!0);e-this._gestureLastMagnitudeX>$e;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=$e;for(;e-this._gestureLastMagnitudeX<-$e;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=$e}this._handleKeyEvent(u.XK_Control_L,"ControlLeft",!1);break}break;case"gestureend":switch(t.detail.type){case"onetap":case"twotap":case"threetap":case"pinch":case"twodrag":break;case"drag":this.dragViewport?this._viewportDragging=!1:(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break;case"longpress":if(this._viewportHasMoved)break;this.dragViewport&&!this._viewportHasMoved?(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,4),this._handleMouseButton(s.x,s.y,0),this._viewportDragging=!1):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break}break}}_flushMouseMoveTimer(t,e){this._mouseMoveTimer!==null&&(clearTimeout(this._mouseMoveTimer),this._mouseMoveTimer=null,this._sendMouse(t,e,this._mouseButtonMask))}_negotiateProtocolVersion(){if(this._sock.rQwait("version",12))return!1;const t=this._sock.rQshiftStr(12).substr(4,7);re("Server ProtocolVersion: "+t);let e=0;switch(t){case"000.000":e=1;break;case"003.003":case"003.006":this._rfbVersion=3.3;break;case"003.007":this._rfbVersion=3.7;break;case"003.008":case"003.889":case"004.000":case"004.001":case"005.000":this._rfbVersion=3.8;break;default:return this._fail("Invalid server version "+t)}if(e){let n="ID:"+this._repeaterID;for(;n.length<250;)n+="\0";return this._sock.sQpushString(n),this._sock.flush(),!0}this._rfbVersion>this._rfbMaxVersion&&(this._rfbVersion=this._rfbMaxVersion);const s="00"+parseInt(this._rfbVersion,10)+".00"+this._rfbVersion*10%10;this._sock.sQpushString("RFB "+s+`
|
|
1
|
+
import{e as gi,r as ee,t as j,u as Qn,i as Ln,j as B,M as Rn,k as ve,K as Bn,R as Dn,C as In,l as Pn,X as Un,S as Nn}from"./index-X_5ydXIE.js";const Hn=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]],zn=gi("clipboard",Hn);const Vn=[["path",{d:"M8 3H5a2 2 0 0 0-2 2v3",key:"1dcmit"}],["path",{d:"M21 8V5a2 2 0 0 0-2-2h-3",key:"1e4gt3"}],["path",{d:"M3 16v3a2 2 0 0 0 2 2h3",key:"wsl5sc"}],["path",{d:"M16 21h3a2 2 0 0 0 2-2v-3",key:"18trek"}]],On=gi("maximize",Vn);const Gn=[["path",{d:"M8 3v3a2 2 0 0 1-2 2H3",key:"hohbtr"}],["path",{d:"M21 8h-3a2 2 0 0 1-2-2V3",key:"5jw1f3"}],["path",{d:"M3 16h3a2 2 0 0 1 2 2v3",key:"198tvr"}],["path",{d:"M16 21v-3a2 2 0 0 1 2-2h3",key:"ph8mxp"}]],Wn=gi("minimize",Gn);function jn(i){return i>>>0}function ui(i){return i|0}let Mi="warn",Q=()=>{},re=()=>{},ae=()=>{},G=()=>{};function Zn(i){if(typeof i>"u"?i=Mi:Mi=i,Q=re=ae=G=()=>{},typeof window.console<"u")switch(i){case"debug":Q=console.debug.bind(window.console);case"info":re=console.info.bind(window.console);case"warn":ae=console.warn.bind(window.console);case"error":G=console.error.bind(window.console);case"none":break;default:throw new window.Error("invalid logging type '"+i+"'")}}Zn();function Vt(i,t=!1){try{return decodeURIComponent(escape(i))}catch(e){if(e instanceof URIError&&t)return i;throw e}}function ye(i){return unescape(encodeURIComponent(i))}const bi={toBase64Table:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".split(""),base64Pad:"=",encode(i){let t="";const e=i.length,s=e%3;for(let r=0;r<e-2;r+=3)t+=this.toBase64Table[i[r]>>2],t+=this.toBase64Table[((i[r]&3)<<4)+(i[r+1]>>4)],t+=this.toBase64Table[((i[r+1]&15)<<2)+(i[r+2]>>6)],t+=this.toBase64Table[i[r+2]&63];const n=e-s;return s===2?(t+=this.toBase64Table[i[n]>>2],t+=this.toBase64Table[((i[n]&3)<<4)+(i[n+1]>>4)],t+=this.toBase64Table[(i[n+1]&15)<<2],t+=this.toBase64Table[64]):s===1&&(t+=this.toBase64Table[i[n]>>2],t+=this.toBase64Table[(i[n]&3)<<4],t+=this.toBase64Table[64],t+=this.toBase64Table[64]),t},toBinaryTable:[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1],decode(i,t=0){let e=i.indexOf("=")-t;e<0&&(e=i.length-t);const s=(e>>2)*3+Math.floor(e%4/1.5),n=new Array(s);let r=0,a=0;for(let h=0,c=t;c<i.length;c++){const o=this.toBinaryTable[i.charCodeAt(c)&127],l=i.charAt(c)===this.base64Pad;if(o===-1){G("Illegal character code "+i.charCodeAt(c)+" at position "+c);continue}a=a<<6|o,r+=6,r>=8&&(r-=8,l||(n[h++]=a>>r&255),a&=(1<<r)-1)}if(r){const h=new Error("Corrupted base64 string");throw h.name="Base64-Error",h}return n}};let qs="ontouchstart"in document.documentElement||document.ontouchstart!==void 0||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;window.addEventListener("touchstart",function i(){qs=!0,window.removeEventListener("touchstart",i,!1)},!1);let xt=10*(window.devicePixelRatio||1),$s=!1;try{const i=document.createElement("canvas");i.style.cursor='url("data:image/x-icon;base64,AAACAAEACAgAAAIAAgA4AQAAFgAAACgAAAAIAAAAEAAAAAEAIAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAAAAAAAA==") 2 2, default',i.style.cursor.indexOf("url")===0?(re("Data URI scheme cursor supported"),$s=!0):ae("Data URI scheme cursor not supported")}catch(i){G("Data URI scheme cursor test exception: "+i)}const Yn=$s;let qn=!0;try{const i=document.createElement("div");i.style.visibility="hidden",i.style.overflow="scroll",document.body.appendChild(i);const t=document.createElement("div");i.appendChild(t);const e=i.offsetWidth-t.offsetWidth;i.parentNode.removeChild(i),qn=e!=0}catch(i){G("Scrollbar test exception: "+i)}let Js=!1;async function $n(){if(!("VideoDecoder"in window))return!1;const i={codec:"avc1.42401f",codedWidth:1920,codedHeight:1080,optimizeForLatency:!0};if(!(await VideoDecoder.isConfigSupported(i)).supported)return!1;const e=new Uint8Array(bi.decode("AAAAAWdCwBTZnpuAgICgAAADACAAAAZB4oVNAAAAAWjJYyyAAAABBgX//4HcRem95tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTY0IHIzMTA4IDMxZTE5ZjkgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDIzIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9NSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjB4MTExIG1lPWhleCBzdWJtZT04IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVmPTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0yIDh4OGRjdD0wIGNxbT0wIGRlYWR6b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9MSBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTAgd2VpZ2h0cD0wIGtleWludD1pbmZpbml0ZSBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NTAgcmM9YWJyIG1idHJlZT0xIGJpdHJhdGU9NDAwIHJhdGV0b2w9MS4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAABZYiEBrxmKAAPVccAAS044AA5DRJMnkycJk4TPw=="));let s=!1,n=null,r=new VideoDecoder({output:h=>{s=!0,h.close()},error:h=>{n=h}}),a=new EncodedVideoChunk({timestamp:0,type:"key",data:e});r.configure(i),r.decode(a);try{await r.flush()}catch(h){n=h}return!(!s||n!==null)}Js=await $n();function Ue(){return!!/mac/i.exec(navigator.platform)}function Ct(){return!!/win/i.exec(navigator.platform)}function We(){return!!/ipad/i.exec(navigator.platform)||!!/iphone/i.exec(navigator.platform)||!!/ipod/i.exec(navigator.platform)}function je(i,t,e){const s=e.getBoundingClientRect();let n={x:0,y:0};return i<s.left?n.x=0:i>=s.right?n.x=s.width-1:n.x=i-s.left,t<s.top?n.y=0:t>=s.bottom?n.y=s.height-1:n.y=t-s.top,n}function Be(i){i.stopPropagation(),i.preventDefault()}let Ot=!1,en=null;document.captureElement=null;function Te(i){if(Ot)return;const t=new i.constructor(i.type,i);Ot=!0,document.captureElement?document.captureElement.dispatchEvent(t):en.dispatchEvent(t),Ot=!1,i.stopPropagation(),t.defaultPrevented&&i.preventDefault(),i.type==="mouseup"&&nn()}function tn(){const i=document.getElementById("noVNC_mouse_capture_elem");i.style.cursor=window.getComputedStyle(document.captureElement).cursor}const sn=new MutationObserver(tn);function Jn(i){if(i.setCapture)i.setCapture(),document.captureElement=i;else{nn();let t=document.getElementById("noVNC_mouse_capture_elem");t===null&&(t=document.createElement("div"),t.id="noVNC_mouse_capture_elem",t.style.position="fixed",t.style.top="0px",t.style.left="0px",t.style.width="100%",t.style.height="100%",t.style.zIndex=1e4,t.style.display="none",document.body.appendChild(t),t.addEventListener("contextmenu",Te),t.addEventListener("mousemove",Te),t.addEventListener("mouseup",Te)),document.captureElement=i,sn.observe(i,{attributes:!0}),tn(),t.style.display="",window.addEventListener("mousemove",Te),window.addEventListener("mouseup",Te)}}function nn(){if(document.releaseCapture)document.releaseCapture(),document.captureElement=null;else{if(!document.captureElement)return;en=document.captureElement,document.captureElement=null,sn.disconnect();const i=document.getElementById("noVNC_mouse_capture_elem");i.style.display="none",window.removeEventListener("mousemove",Te),window.removeEventListener("mouseup",Te)}}class rn{constructor(){this._listeners=new Map}addEventListener(t,e){this._listeners.has(t)||this._listeners.set(t,new Set),this._listeners.get(t).add(e)}removeEventListener(t,e){this._listeners.has(t)&&this._listeners.get(t).delete(e)}dispatchEvent(t){return this._listeners.has(t.type)?(this._listeners.get(t.type).forEach(e=>e.call(this,t)),!t.defaultPrevented):!0}}class er{constructor(t){if(this._drawCtx=null,this._renderQ=[],this._flushPromise=null,this._fbWidth=0,this._fbHeight=0,this._prevDrawStyle="",Q(">> Display.constructor"),this._target=t,!this._target)throw new Error("Target must be set");if(typeof this._target=="string")throw new Error("target must be a DOM element");if(!this._target.getContext)throw new Error("no getContext method");this._targetCtx=this._target.getContext("2d"),this._viewportLoc={x:0,y:0,w:this._target.width,h:this._target.height},this._backbuffer=document.createElement("canvas"),this._drawCtx=this._backbuffer.getContext("2d"),this._damageBounds={left:0,top:0,right:this._backbuffer.width,bottom:this._backbuffer.height},Q("User Agent: "+navigator.userAgent),Q("<< Display.constructor"),this._scale=1,this._clipViewport=!1}get scale(){return this._scale}set scale(t){this._rescale(t)}get clipViewport(){return this._clipViewport}set clipViewport(t){this._clipViewport=t;const e=this._viewportLoc;this.viewportChangeSize(e.w,e.h),this.viewportChangePos(0,0)}get width(){return this._fbWidth}get height(){return this._fbHeight}viewportChangePos(t,e){const s=this._viewportLoc;t=Math.floor(t),e=Math.floor(e),this._clipViewport||(t=-s.w,e=-s.h);const n=s.x+s.w-1,r=s.y+s.h-1;t<0&&s.x+t<0&&(t=-s.x),n+t>=this._fbWidth&&(t-=n+t-this._fbWidth+1),s.y+e<0&&(e=-s.y),r+e>=this._fbHeight&&(e-=r+e-this._fbHeight+1),!(t===0&&e===0)&&(Q("viewportChange deltaX: "+t+", deltaY: "+e),s.x+=t,s.y+=e,this._damage(s.x,s.y,s.w,s.h),this.flip())}viewportChangeSize(t,e){(!this._clipViewport||typeof t>"u"||typeof e>"u")&&(Q("Setting viewport to full display region"),t=this._fbWidth,e=this._fbHeight),t=Math.floor(t),e=Math.floor(e),t>this._fbWidth&&(t=this._fbWidth),e>this._fbHeight&&(e=this._fbHeight);const s=this._viewportLoc;if(s.w!==t||s.h!==e){s.w=t,s.h=e;const n=this._target;n.width=t,n.height=e,this.viewportChangePos(0,0),this._damage(s.x,s.y,s.w,s.h),this.flip(),this._rescale(this._scale)}}absX(t){return this._scale===0?0:ui(t/this._scale+this._viewportLoc.x)}absY(t){return this._scale===0?0:ui(t/this._scale+this._viewportLoc.y)}resize(t,e){this._prevDrawStyle="",this._fbWidth=t,this._fbHeight=e;const s=this._backbuffer;if(s.width!==t||s.height!==e){let r=null;s.width>0&&s.height>0&&(r=this._drawCtx.getImageData(0,0,s.width,s.height)),s.width!==t&&(s.width=t),s.height!==e&&(s.height=e),r&&this._drawCtx.putImageData(r,0,0)}const n=this._viewportLoc;this.viewportChangeSize(n.w,n.h),this.viewportChangePos(0,0)}getImageData(){return this._drawCtx.getImageData(0,0,this.width,this.height)}toDataURL(t,e){return this._backbuffer.toDataURL(t,e)}toBlob(t,e,s){return this._backbuffer.toBlob(t,e,s)}_damage(t,e,s,n){t<this._damageBounds.left&&(this._damageBounds.left=t),e<this._damageBounds.top&&(this._damageBounds.top=e),t+s>this._damageBounds.right&&(this._damageBounds.right=t+s),e+n>this._damageBounds.bottom&&(this._damageBounds.bottom=e+n)}flip(t){if(this._renderQ.length!==0&&!t)this._renderQPush({type:"flip"});else{let e=this._damageBounds.left,s=this._damageBounds.top,n=this._damageBounds.right-e,r=this._damageBounds.bottom-s,a=e-this._viewportLoc.x,h=s-this._viewportLoc.y;a<0&&(n+=a,e-=a,a=0),h<0&&(r+=h,s-=h,h=0),a+n>this._viewportLoc.w&&(n=this._viewportLoc.w-a),h+r>this._viewportLoc.h&&(r=this._viewportLoc.h-h),n>0&&r>0&&this._targetCtx.drawImage(this._backbuffer,e,s,n,r,a,h,n,r),this._damageBounds.left=this._damageBounds.top=65535,this._damageBounds.right=this._damageBounds.bottom=0}}pending(){return this._renderQ.length>0}flush(){return this._renderQ.length===0?Promise.resolve():(this._flushPromise===null&&(this._flushPromise=new Promise(t=>{this._flushResolve=t})),this._flushPromise)}fillRect(t,e,s,n,r,a){this._renderQ.length!==0&&!a?this._renderQPush({type:"fill",x:t,y:e,width:s,height:n,color:r}):(this._setFillColor(r),this._drawCtx.fillRect(t,e,s,n),this._damage(t,e,s,n))}copyImage(t,e,s,n,r,a,h){this._renderQ.length!==0&&!h?this._renderQPush({type:"copy",oldX:t,oldY:e,x:s,y:n,width:r,height:a}):(this._drawCtx.mozImageSmoothingEnabled=!1,this._drawCtx.webkitImageSmoothingEnabled=!1,this._drawCtx.msImageSmoothingEnabled=!1,this._drawCtx.imageSmoothingEnabled=!1,this._drawCtx.drawImage(this._backbuffer,t,e,r,a,s,n,r,a),this._damage(s,n,r,a))}imageRect(t,e,s,n,r,a){if(s===0||n===0)return;const h=new Image;h.src="data: "+r+";base64,"+bi.encode(a),this._renderQPush({type:"img",img:h,x:t,y:e,width:s,height:n})}videoFrame(t,e,s,n,r){this._renderQPush({type:"frame",frame:r,x:t,y:e,width:s,height:n})}blitImage(t,e,s,n,r,a,h){if(this._renderQ.length!==0&&!h){const c=new Uint8Array(s*n*4);c.set(new Uint8Array(r.buffer,0,c.length)),this._renderQPush({type:"blit",data:c,x:t,y:e,width:s,height:n})}else{let c=new Uint8ClampedArray(r.buffer,r.byteOffset+a,s*n*4),o=new ImageData(c,s,n);this._drawCtx.putImageData(o,t,e),this._damage(t,e,s,n)}}drawImage(t,...e){if(this._drawCtx.drawImage(t,...e),e.length<=4){const[s,n]=e;this._damage(s,n,t.width,t.height)}else{const[,,s,n,r,a]=e;this._damage(r,a,s,n)}}autoscale(t,e){let s;if(t===0||e===0)s=0;else{const n=this._viewportLoc,r=t/e;n.w/n.h>=r?s=t/n.w:s=e/n.h}this._rescale(s)}_rescale(t){this._scale=t;const e=this._viewportLoc,s=t*e.w+"px",n=t*e.h+"px";(this._target.style.width!==s||this._target.style.height!==n)&&(this._target.style.width=s,this._target.style.height=n)}_setFillColor(t){const e="rgb("+t[0]+","+t[1]+","+t[2]+")";e!==this._prevDrawStyle&&(this._drawCtx.fillStyle=e,this._prevDrawStyle=e)}_renderQPush(t){this._renderQ.push(t),this._renderQ.length===1&&this._scanRenderQ()}_resumeRenderQ(){this.removeEventListener("load",this._noVNCDisplay._resumeRenderQ),this._noVNCDisplay._scanRenderQ()}_scanRenderQ(){let t=!0;for(;t&&this._renderQ.length>0;){const e=this._renderQ[0];switch(e.type){case"flip":this.flip(!0);break;case"copy":this.copyImage(e.oldX,e.oldY,e.x,e.y,e.width,e.height,!0);break;case"fill":this.fillRect(e.x,e.y,e.width,e.height,e.color,!0);break;case"blit":this.blitImage(e.x,e.y,e.width,e.height,e.data,0,!0);break;case"img":if(e.img.complete){if(e.img.width!==e.width||e.img.height!==e.height){G("Decoded image has incorrect dimensions. Got "+e.img.width+"x"+e.img.height+". Expected "+e.width+"x"+e.height+".");return}this.drawImage(e.img,e.x,e.y),e.img.src=""}else e.img._noVNCDisplay=this,e.img.addEventListener("load",this._resumeRenderQ),t=!1;break;case"frame":if(e.frame.ready){let s=e.frame.frame;(s.codedWidth<e.width||s.codedHeight<e.height)&&ae("Decoded video frame does not cover its full rectangle area. Expecting at least "+e.width+"x"+e.height+" but got "+s.codedWidth+"x"+s.codedHeight);const n=0,r=0,a=e.width,h=e.height,c=e.x,o=e.y,l=a,_=h;this.drawImage(s,n,r,a,h,c,o,l,_),s.close()}else{let s=this;e.frame.promise.then(()=>{s._scanRenderQ()}),t=!1}break}t&&this._renderQ.shift()}this._renderQ.length===0&&this._flushPromise!==null&&(this._flushResolve(),this._flushPromise=null,this._flushResolve=null)}}function Se(i,t,e,s,n){if(t.subarray&&i.subarray){i.set(t.subarray(e,e+s),n);return}for(var r=0;r<s;r++)i[n+r]=t[e+r]}var Ft=Uint8Array,de=Uint16Array,Mt=Int32Array;function fi(i,t,e,s){for(var n=i&65535|0,r=i>>>16&65535|0,a=0;e!==0;){a=e>2e3?2e3:e,e-=a;do n=n+t[s++]|0,r=r+n|0;while(--a);n%=65521,r%=65521}return n|r<<16|0}function q(){for(var i,t=[],e=0;e<256;e++){i=e;for(var s=0;s<8;s++)i=i&1?3988292384^i>>>1:i>>>1;t[e]=i}return t}q();var pt=30,tr=12;function ir(i,t){var e,s,n,r,a,h,c,o,l,_,f,x,k,E,F,C,M,A,S,T,I,K,P,R,X;e=i.state,s=i.next_in,R=i.input,n=s+(i.avail_in-5),r=i.next_out,X=i.output,a=r-(t-i.avail_out),h=r+(i.avail_out-257),c=e.dmax,o=e.wsize,l=e.whave,_=e.wnext,f=e.window,x=e.hold,k=e.bits,E=e.lencode,F=e.distcode,C=(1<<e.lenbits)-1,M=(1<<e.distbits)-1;e:do{k<15&&(x+=R[s++]<<k,k+=8,x+=R[s++]<<k,k+=8),A=E[x&C];t:for(;;){if(S=A>>>24,x>>>=S,k-=S,S=A>>>16&255,S===0)X[r++]=A&65535;else if(S&16){T=A&65535,S&=15,S&&(k<S&&(x+=R[s++]<<k,k+=8),T+=x&(1<<S)-1,x>>>=S,k-=S),k<15&&(x+=R[s++]<<k,k+=8,x+=R[s++]<<k,k+=8),A=F[x&M];i:for(;;){if(S=A>>>24,x>>>=S,k-=S,S=A>>>16&255,S&16){if(I=A&65535,S&=15,k<S&&(x+=R[s++]<<k,k+=8,k<S&&(x+=R[s++]<<k,k+=8)),I+=x&(1<<S)-1,I>c){i.msg="invalid distance too far back",e.mode=pt;break e}if(x>>>=S,k-=S,S=r-a,I>S){if(S=I-S,S>l&&e.sane){i.msg="invalid distance too far back",e.mode=pt;break e}if(K=0,P=f,_===0){if(K+=o-S,S<T){T-=S;do X[r++]=f[K++];while(--S);K=r-I,P=X}}else if(_<S){if(K+=o+_-S,S-=_,S<T){T-=S;do X[r++]=f[K++];while(--S);if(K=0,_<T){S=_,T-=S;do X[r++]=f[K++];while(--S);K=r-I,P=X}}}else if(K+=_-S,S<T){T-=S;do X[r++]=f[K++];while(--S);K=r-I,P=X}for(;T>2;)X[r++]=P[K++],X[r++]=P[K++],X[r++]=P[K++],T-=3;T&&(X[r++]=P[K++],T>1&&(X[r++]=P[K++]))}else{K=r-I;do X[r++]=X[K++],X[r++]=X[K++],X[r++]=X[K++],T-=3;while(T>2);T&&(X[r++]=X[K++],T>1&&(X[r++]=X[K++]))}}else if((S&64)===0){A=F[(A&65535)+(x&(1<<S)-1)];continue i}else{i.msg="invalid distance code",e.mode=pt;break e}break}}else if((S&64)===0){A=E[(A&65535)+(x&(1<<S)-1)];continue t}else if(S&32){e.mode=tr;break e}else{i.msg="invalid literal/length code",e.mode=pt;break e}break}}while(s<n&&r<h);T=k>>3,s-=T,k-=T<<3,x&=(1<<k)-1,i.next_in=s,i.next_out=r,i.avail_in=s<n?5+(n-s):5-(s-n),i.avail_out=r<h?257+(h-r):257-(r-h),e.hold=x,e.bits=k}var De=15,Ti=852,Qi=592,Li=0,Gt=1,Ri=2,sr=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],nr=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],rr=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],ar=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function tt(i,t,e,s,n,r,a,h){var c=h.bits,o=0,l=0,_=0,f=0,x=0,k=0,E=0,F=0,C=0,M=0,A,S,T,I,K,P=null,R=0,X,H=new de(De+1),$=new de(De+1),we=null,he=0,_e,le,W;for(o=0;o<=De;o++)H[o]=0;for(l=0;l<s;l++)H[t[e+l]]++;for(x=c,f=De;f>=1&&H[f]===0;f--);if(x>f&&(x=f),f===0)return n[r++]=1<<24|64<<16|0,n[r++]=1<<24|64<<16|0,h.bits=1,0;for(_=1;_<f&&H[_]===0;_++);for(x<_&&(x=_),F=1,o=1;o<=De;o++)if(F<<=1,F-=H[o],F<0)return-1;if(F>0&&(i===Li||f!==1))return-1;for($[1]=0,o=1;o<De;o++)$[o+1]=$[o]+H[o];for(l=0;l<s;l++)t[e+l]!==0&&(a[$[t[e+l]]++]=l);if(i===Li?(P=we=a,X=19):i===Gt?(P=sr,R-=257,we=nr,he-=257,X=256):(P=rr,we=ar,X=-1),M=0,l=0,o=_,K=r,k=x,E=0,T=-1,C=1<<x,I=C-1,i===Gt&&C>Ti||i===Ri&&C>Qi)return 1;for(;;){_e=o-E,a[l]<X?(le=0,W=a[l]):a[l]>X?(le=we[he+a[l]],W=P[R+a[l]]):(le=96,W=0),A=1<<o-E,S=1<<k,_=S;do S-=A,n[K+(M>>E)+S]=_e<<24|le<<16|W|0;while(S!==0);for(A=1<<o-1;M&A;)A>>=1;if(A!==0?(M&=A-1,M+=A):M=0,l++,--H[o]===0){if(o===f)break;o=t[e+a[l]]}if(o>x&&(M&I)!==T){for(E===0&&(E=x),K+=_,k=o-E,F=1<<k;k+E<f&&(F-=H[k+E],!(F<=0));)k++,F<<=1;if(C+=1<<k,i===Gt&&C>Ti||i===Ri&&C>Qi)return 1;T=M&I,n[T]=x<<24|k<<16|K-r|0}}return M!==0&&(n[K+M]=o-E<<24|64<<16|0),h.bits=x,0}var or=0,an=1,on=2;const Bi=4,Tt=0,hr=1,lr=2,Re=-2,cr=-3,dr=-4,ur=-5,Di=8;var hn=1,Ii=2,Pi=3,Ui=4,Ni=5,Hi=6,zi=7,Vi=8,Oi=9,Gi=10,Wi=11,me=12,Wt=13,ji=14,jt=15,Zi=16,Yi=17,qi=18,$i=19,gt=20,bt=21,Ji=22,es=23,ts=24,is=25,ss=26,Zt=27,ns=28,rs=29,V=30,fr=31,_r=32,xr=852,pr=592,gr=15,br=gr;function as(i){return(i>>>24&255)+(i>>>8&65280)+((i&65280)<<8)+((i&255)<<24)}function wr(){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 de(320),this.work=new de(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function mr(i){var t;return!i||!i.state?Re:(t=i.state,i.total_in=i.total_out=t.total=0,i.msg="",t.wrap&&(i.adler=t.wrap&1),t.mode=hn,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Mt(xr),t.distcode=t.distdyn=new Mt(pr),t.sane=1,t.back=-1,Tt)}function ln(i){var t;return!i||!i.state?Re:(t=i.state,t.wsize=0,t.whave=0,t.wnext=0,mr(i))}function vr(i,t){var e,s;return!i||!i.state||(s=i.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Re:(s.window!==null&&s.wbits!==t&&(s.window=null),s.wrap=e,s.wbits=t,ln(i))}function yr(i,t){var e,s;return i?(s=new wr,i.state=s,s.window=null,e=vr(i,t),e!==Tt&&(i.state=null),e):Re}function kr(i){return yr(i,br)}var os=!0,Yt,qt;function Sr(i){if(os){var t;for(Yt=new Mt(512),qt=new Mt(32),t=0;t<144;)i.lens[t++]=8;for(;t<256;)i.lens[t++]=9;for(;t<280;)i.lens[t++]=7;for(;t<288;)i.lens[t++]=8;for(tt(an,i.lens,0,288,Yt,0,i.work,{bits:9}),t=0;t<32;)i.lens[t++]=5;tt(on,i.lens,0,32,qt,0,i.work,{bits:5}),os=!1}i.lencode=Yt,i.lenbits=9,i.distcode=qt,i.distbits=5}function Er(i,t,e,s){var n,r=i.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Ft(r.wsize)),s>=r.wsize?(Se(r.window,t,e-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(n=r.wsize-r.wnext,n>s&&(n=s),Se(r.window,t,e-s,n,r.wnext),s-=n,s?(Se(r.window,t,e-s,s,0),r.wnext=s,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=n))),0}function Cr(i,t){var e,s,n,r,a,h,c,o,l,_,f,x,k,E,F=0,C,M,A,S,T,I,K,P,R=new Ft(4),X,H,$=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!i||!i.state||!i.output||!i.input&&i.avail_in!==0)return Re;e=i.state,e.mode===me&&(e.mode=Wt),a=i.next_out,n=i.output,c=i.avail_out,r=i.next_in,s=i.input,h=i.avail_in,o=e.hold,l=e.bits,_=h,f=c,P=Tt;e:for(;;)switch(e.mode){case hn:if(e.wrap===0){e.mode=Wt;break}for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(e.wrap&2&&o===35615){e.check=0,R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check),o=0,l=0,e.mode=Ii;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((o&255)<<8)+(o>>8))%31){i.msg="incorrect header check",e.mode=V;break}if((o&15)!==Di){i.msg="unknown compression method",e.mode=V;break}if(o>>>=4,l-=4,K=(o&15)+8,e.wbits===0)e.wbits=K;else if(K>e.wbits){i.msg="invalid window size",e.mode=V;break}e.dmax=1<<K,i.adler=e.check=1,e.mode=o&512?Gi:me,o=0,l=0;break;case Ii:for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(e.flags=o,(e.flags&255)!==Di){i.msg="unknown compression method",e.mode=V;break}if(e.flags&57344){i.msg="unknown header flags set",e.mode=V;break}e.head&&(e.head.text=o>>8&1),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check)),o=0,l=0,e.mode=Pi;case Pi:for(;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.head&&(e.head.time=o),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,R[2]=o>>>16&255,R[3]=o>>>24&255,e.check=q(e.check)),o=0,l=0,e.mode=Ui;case Ui:for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.head&&(e.head.xflags=o&255,e.head.os=o>>8),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check)),o=0,l=0,e.mode=Ni;case Ni:if(e.flags&1024){for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.length=o,e.head&&(e.head.extra_len=o),e.flags&512&&(R[0]=o&255,R[1]=o>>>8&255,e.check=q(e.check)),o=0,l=0}else e.head&&(e.head.extra=null);e.mode=Hi;case Hi:if(e.flags&1024&&(x=e.length,x>h&&(x=h),x&&(e.head&&(K=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),Se(e.head.extra,s,r,x,K)),e.flags&512&&(e.check=q(e.check)),h-=x,r+=x,e.length-=x),e.length))break e;e.length=0,e.mode=zi;case zi:if(e.flags&2048){if(h===0)break e;x=0;do K=s[r+x++],e.head&&K&&e.length<65536&&(e.head.name+=String.fromCharCode(K));while(K&&x<h);if(e.flags&512&&(e.check=q(e.check)),h-=x,r+=x,K)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=Vi;case Vi:if(e.flags&4096){if(h===0)break e;x=0;do K=s[r+x++],e.head&&K&&e.length<65536&&(e.head.comment+=String.fromCharCode(K));while(K&&x<h);if(e.flags&512&&(e.check=q(e.check)),h-=x,r+=x,K)break e}else e.head&&(e.head.comment=null);e.mode=Oi;case Oi:if(e.flags&512){for(;l<16;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(o!==(e.check&65535)){i.msg="header crc mismatch",e.mode=V;break}o=0,l=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),i.adler=e.check=0,e.mode=me;break;case Gi:for(;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}i.adler=e.check=as(o),o=0,l=0,e.mode=Wi;case Wi:if(e.havedict===0)return i.next_out=a,i.avail_out=c,i.next_in=r,i.avail_in=h,e.hold=o,e.bits=l,lr;i.adler=e.check=1,e.mode=me;case me:case Wt:if(e.last){o>>>=l&7,l-=l&7,e.mode=Zt;break}for(;l<3;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}switch(e.last=o&1,o>>>=1,l-=1,o&3){case 0:e.mode=ji;break;case 1:Sr(e),e.mode=gt;break;case 2:e.mode=Yi;break;case 3:i.msg="invalid block type",e.mode=V}o>>>=2,l-=2;break;case ji:for(o>>>=l&7,l-=l&7;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if((o&65535)!==(o>>>16^65535)){i.msg="invalid stored block lengths",e.mode=V;break}e.length=o&65535,o=0,l=0,e.mode=jt;case jt:e.mode=Zi;case Zi:if(x=e.length,x){if(x>h&&(x=h),x>c&&(x=c),x===0)break e;Se(n,s,r,x,a),h-=x,r+=x,c-=x,a+=x,e.length-=x;break}e.mode=me;break;case Yi:for(;l<14;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(e.nlen=(o&31)+257,o>>>=5,l-=5,e.ndist=(o&31)+1,o>>>=5,l-=5,e.ncode=(o&15)+4,o>>>=4,l-=4,e.nlen>286||e.ndist>30){i.msg="too many length or distance symbols",e.mode=V;break}e.have=0,e.mode=qi;case qi:for(;e.have<e.ncode;){for(;l<3;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.lens[$[e.have++]]=o&7,o>>>=3,l-=3}for(;e.have<19;)e.lens[$[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,X={bits:e.lenbits},P=tt(or,e.lens,0,19,e.lencode,0,e.work,X),e.lenbits=X.bits,P){i.msg="invalid code lengths set",e.mode=V;break}e.have=0,e.mode=$i;case $i:for(;e.have<e.nlen+e.ndist;){for(;F=e.lencode[o&(1<<e.lenbits)-1],C=F>>>24,M=F>>>16&255,A=F&65535,!(C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(A<16)o>>>=C,l-=C,e.lens[e.have++]=A;else{if(A===16){for(H=C+2;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(o>>>=C,l-=C,e.have===0){i.msg="invalid bit length repeat",e.mode=V;break}K=e.lens[e.have-1],x=3+(o&3),o>>>=2,l-=2}else if(A===17){for(H=C+3;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=C,l-=C,K=0,x=3+(o&7),o>>>=3,l-=3}else{for(H=C+7;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=C,l-=C,K=0,x=11+(o&127),o>>>=7,l-=7}if(e.have+x>e.nlen+e.ndist){i.msg="invalid bit length repeat",e.mode=V;break}for(;x--;)e.lens[e.have++]=K}}if(e.mode===V)break;if(e.lens[256]===0){i.msg="invalid code -- missing end-of-block",e.mode=V;break}if(e.lenbits=9,X={bits:e.lenbits},P=tt(an,e.lens,0,e.nlen,e.lencode,0,e.work,X),e.lenbits=X.bits,P){i.msg="invalid literal/lengths set",e.mode=V;break}if(e.distbits=6,e.distcode=e.distdyn,X={bits:e.distbits},P=tt(on,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,X),e.distbits=X.bits,P){i.msg="invalid distances set",e.mode=V;break}e.mode=gt;case gt:e.mode=bt;case bt:if(h>=6&&c>=258){i.next_out=a,i.avail_out=c,i.next_in=r,i.avail_in=h,e.hold=o,e.bits=l,ir(i,f),a=i.next_out,n=i.output,c=i.avail_out,r=i.next_in,s=i.input,h=i.avail_in,o=e.hold,l=e.bits,e.mode===me&&(e.back=-1);break}for(e.back=0;F=e.lencode[o&(1<<e.lenbits)-1],C=F>>>24,M=F>>>16&255,A=F&65535,!(C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(M&&(M&240)===0){for(S=C,T=M,I=A;F=e.lencode[I+((o&(1<<S+T)-1)>>S)],C=F>>>24,M=F>>>16&255,A=F&65535,!(S+C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=S,l-=S,e.back+=S}if(o>>>=C,l-=C,e.back+=C,e.length=A,M===0){e.mode=ss;break}if(M&32){e.back=-1,e.mode=me;break}if(M&64){i.msg="invalid literal/length code",e.mode=V;break}e.extra=M&15,e.mode=Ji;case Ji:if(e.extra){for(H=e.extra;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.length+=o&(1<<e.extra)-1,o>>>=e.extra,l-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=es;case es:for(;F=e.distcode[o&(1<<e.distbits)-1],C=F>>>24,M=F>>>16&255,A=F&65535,!(C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if((M&240)===0){for(S=C,T=M,I=A;F=e.distcode[I+((o&(1<<S+T)-1)>>S)],C=F>>>24,M=F>>>16&255,A=F&65535,!(S+C<=l);){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}o>>>=S,l-=S,e.back+=S}if(o>>>=C,l-=C,e.back+=C,M&64){i.msg="invalid distance code",e.mode=V;break}e.offset=A,e.extra=M&15,e.mode=ts;case ts:if(e.extra){for(H=e.extra;l<H;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}e.offset+=o&(1<<e.extra)-1,o>>>=e.extra,l-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){i.msg="invalid distance too far back",e.mode=V;break}e.mode=is;case is:if(c===0)break e;if(x=f-c,e.offset>x){if(x=e.offset-x,x>e.whave&&e.sane){i.msg="invalid distance too far back",e.mode=V;break}x>e.wnext?(x-=e.wnext,k=e.wsize-x):k=e.wnext-x,x>e.length&&(x=e.length),E=e.window}else E=n,k=a-e.offset,x=e.length;x>c&&(x=c),c-=x,e.length-=x;do n[a++]=E[k++];while(--x);e.length===0&&(e.mode=bt);break;case ss:if(c===0)break e;n[a++]=e.length,c--,e.mode=bt;break;case Zt:if(e.wrap){for(;l<32;){if(h===0)break e;h--,o|=s[r++]<<l,l+=8}if(f-=c,i.total_out+=f,e.total+=f,f&&(i.adler=e.check=e.flags?q(e.check):fi(e.check,n,f,a-f)),f=c,(e.flags?o:as(o))!==e.check){i.msg="incorrect data check",e.mode=V;break}o=0,l=0}e.mode=ns;case ns:if(e.wrap&&e.flags){for(;l<32;){if(h===0)break e;h--,o+=s[r++]<<l,l+=8}if(o!==(e.total&4294967295)){i.msg="incorrect length check",e.mode=V;break}o=0,l=0}e.mode=rs;case rs:P=hr;break e;case V:P=cr;break e;case fr:return dr;case _r:default:return Re}return i.next_out=a,i.avail_out=c,i.next_in=r,i.avail_in=h,e.hold=o,e.bits=l,(e.wsize||f!==i.avail_out&&e.mode<V&&(e.mode<Zt||t!==Bi))&&Er(i,i.output,i.next_out,f-i.avail_out),_-=i.avail_in,f-=i.avail_out,i.total_in+=_,i.total_out+=f,e.total+=f,e.wrap&&f&&(i.adler=e.check=e.flags?q(e.check,n,f,i.next_out-f):fi(e.check,n,f,i.next_out-f)),i.data_type=e.bits+(e.last?64:0)+(e.mode===me?128:0)+(e.mode===gt||e.mode===jt?256:0),(_===0&&f===0||t===Bi)&&P===Tt&&(P=ur),P}function cn(){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}class It{constructor(){this.strm=new cn,this.chunkSize=1024*10*10,this.strm.output=new Uint8Array(this.chunkSize),kr(this.strm)}setInput(t){t?(this.strm.input=t,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0):(this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0)}inflate(t){if(t>this.chunkSize&&(this.chunkSize=t,this.strm.output=new Uint8Array(this.chunkSize)),this.strm.next_out=0,this.strm.avail_out=t,Cr(this.strm,0)<0)throw new Error("zlib inflate failed");if(this.strm.next_out!=t)throw new Error("Incomplete zlib block");return new Uint8Array(this.strm.output.buffer,0,this.strm.next_out)}reset(){ln(this.strm)}}var Kr=4,hs=0,ls=1,Ar=2;function Ge(i){for(var t=i.length;--t>=0;)i[t]=0}var Xr=0,Fr=1,Mr=2,Tr=3,Qr=258,wi=29,lt=256,nt=lt+1+wi,Ve=30,mi=19,dn=2*nt+1,Le=15,$t=16,Lr=7,un=256,fn=16,_n=17,xn=18,_i=[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],Kt=[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],Rr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],pn=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Br=512,Ce=new Array((nt+2)*2);Ge(Ce);var it=new Array(Ve*2);Ge(it);var rt=new Array(Br);Ge(rt);var at=new Array(Qr-Tr+1);Ge(at);var vi=new Array(wi);Ge(vi);var Qt=new Array(Ve);Ge(Qt);function Jt(i,t,e,s,n){this.static_tree=i,this.extra_bits=t,this.extra_base=e,this.elems=s,this.max_length=n,this.has_stree=i&&i.length}var gn,bn,wn;function ei(i,t){this.dyn_tree=i,this.max_code=0,this.stat_desc=t}function mn(i){return i<256?rt[i]:rt[256+(i>>>7)]}function Lt(i,t){i.pending_buf[i.pending++]=t&255,i.pending_buf[i.pending++]=t>>>8&255}function ce(i,t,e){i.bi_valid>$t-e?(i.bi_buf|=t<<i.bi_valid&65535,Lt(i,i.bi_buf),i.bi_buf=t>>$t-i.bi_valid,i.bi_valid+=e-$t):(i.bi_buf|=t<<i.bi_valid&65535,i.bi_valid+=e)}function ke(i,t,e){ce(i,e[t*2],e[t*2+1])}function vn(i,t){var e=0;do e|=i&1,i>>>=1,e<<=1;while(--t>0);return e>>>1}function Dr(i,t){var e=t.dyn_tree,s=t.max_code,n=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,h=t.stat_desc.extra_base,c=t.stat_desc.max_length,o,l,_,f,x,k,E=0;for(f=0;f<=Le;f++)i.bl_count[f]=0;for(e[i.heap[i.heap_max]*2+1]=0,o=i.heap_max+1;o<dn;o++)l=i.heap[o],f=e[e[l*2+1]*2+1]+1,f>c&&(f=c,E++),e[l*2+1]=f,!(l>s)&&(i.bl_count[f]++,x=0,l>=h&&(x=a[l-h]),k=e[l*2],i.opt_len+=k*(f+x),r&&(i.static_len+=k*(n[l*2+1]+x)));if(E!==0){do{for(f=c-1;i.bl_count[f]===0;)f--;i.bl_count[f]--,i.bl_count[f+1]+=2,i.bl_count[c]--,E-=2}while(E>0);for(f=c;f!==0;f--)for(l=i.bl_count[f];l!==0;)_=i.heap[--o],!(_>s)&&(e[_*2+1]!==f&&(i.opt_len+=(f-e[_*2+1])*e[_*2],e[_*2+1]=f),l--)}}function yn(i,t,e){var s=new Array(Le+1),n=0,r,a;for(r=1;r<=Le;r++)s[r]=n=n+e[r-1]<<1;for(a=0;a<=t;a++){var h=i[a*2+1];h!==0&&(i[a*2]=vn(s[h]++,h))}}function Ir(){var i,t,e,s,n,r=new Array(Le+1);for(e=0,s=0;s<wi-1;s++)for(vi[s]=e,i=0;i<1<<_i[s];i++)at[e++]=s;for(at[e-1]=s,n=0,s=0;s<16;s++)for(Qt[s]=n,i=0;i<1<<Kt[s];i++)rt[n++]=s;for(n>>=7;s<Ve;s++)for(Qt[s]=n<<7,i=0;i<1<<Kt[s]-7;i++)rt[256+n++]=s;for(t=0;t<=Le;t++)r[t]=0;for(i=0;i<=143;)Ce[i*2+1]=8,i++,r[8]++;for(;i<=255;)Ce[i*2+1]=9,i++,r[9]++;for(;i<=279;)Ce[i*2+1]=7,i++,r[7]++;for(;i<=287;)Ce[i*2+1]=8,i++,r[8]++;for(yn(Ce,nt+1,r),i=0;i<Ve;i++)it[i*2+1]=5,it[i*2]=vn(i,5);gn=new Jt(Ce,_i,lt+1,nt,Le),bn=new Jt(it,Kt,0,Ve,Le),wn=new Jt(new Array(0),Rr,0,mi,Lr)}function kn(i){var t;for(t=0;t<nt;t++)i.dyn_ltree[t*2]=0;for(t=0;t<Ve;t++)i.dyn_dtree[t*2]=0;for(t=0;t<mi;t++)i.bl_tree[t*2]=0;i.dyn_ltree[un*2]=1,i.opt_len=i.static_len=0,i.last_lit=i.matches=0}function Sn(i){i.bi_valid>8?Lt(i,i.bi_buf):i.bi_valid>0&&(i.pending_buf[i.pending++]=i.bi_buf),i.bi_buf=0,i.bi_valid=0}function Pr(i,t,e,s){Sn(i),Lt(i,e),Lt(i,~e),Se(i.pending_buf,i.window,t,e,i.pending),i.pending+=e}function cs(i,t,e,s){var n=t*2,r=e*2;return i[n]<i[r]||i[n]===i[r]&&s[t]<=s[e]}function ti(i,t,e){for(var s=i.heap[e],n=e<<1;n<=i.heap_len&&(n<i.heap_len&&cs(t,i.heap[n+1],i.heap[n],i.depth)&&n++,!cs(t,s,i.heap[n],i.depth));)i.heap[e]=i.heap[n],e=n,n<<=1;i.heap[e]=s}function ds(i,t,e){var s,n,r=0,a,h;if(i.last_lit!==0)do s=i.pending_buf[i.d_buf+r*2]<<8|i.pending_buf[i.d_buf+r*2+1],n=i.pending_buf[i.l_buf+r],r++,s===0?ke(i,n,t):(a=at[n],ke(i,a+lt+1,t),h=_i[a],h!==0&&(n-=vi[a],ce(i,n,h)),s--,a=mn(s),ke(i,a,e),h=Kt[a],h!==0&&(s-=Qt[a],ce(i,s,h)));while(r<i.last_lit);ke(i,un,t)}function xi(i,t){var e=t.dyn_tree,s=t.stat_desc.static_tree,n=t.stat_desc.has_stree,r=t.stat_desc.elems,a,h,c=-1,o;for(i.heap_len=0,i.heap_max=dn,a=0;a<r;a++)e[a*2]!==0?(i.heap[++i.heap_len]=c=a,i.depth[a]=0):e[a*2+1]=0;for(;i.heap_len<2;)o=i.heap[++i.heap_len]=c<2?++c:0,e[o*2]=1,i.depth[o]=0,i.opt_len--,n&&(i.static_len-=s[o*2+1]);for(t.max_code=c,a=i.heap_len>>1;a>=1;a--)ti(i,e,a);o=r;do a=i.heap[1],i.heap[1]=i.heap[i.heap_len--],ti(i,e,1),h=i.heap[1],i.heap[--i.heap_max]=a,i.heap[--i.heap_max]=h,e[o*2]=e[a*2]+e[h*2],i.depth[o]=(i.depth[a]>=i.depth[h]?i.depth[a]:i.depth[h])+1,e[a*2+1]=e[h*2+1]=o,i.heap[1]=o++,ti(i,e,1);while(i.heap_len>=2);i.heap[--i.heap_max]=i.heap[1],Dr(i,t),yn(e,c,i.bl_count)}function us(i,t,e){var s,n=-1,r,a=t[1],h=0,c=7,o=4;for(a===0&&(c=138,o=3),t[(e+1)*2+1]=65535,s=0;s<=e;s++)r=a,a=t[(s+1)*2+1],!(++h<c&&r===a)&&(h<o?i.bl_tree[r*2]+=h:r!==0?(r!==n&&i.bl_tree[r*2]++,i.bl_tree[fn*2]++):h<=10?i.bl_tree[_n*2]++:i.bl_tree[xn*2]++,h=0,n=r,a===0?(c=138,o=3):r===a?(c=6,o=3):(c=7,o=4))}function fs(i,t,e){var s,n=-1,r,a=t[1],h=0,c=7,o=4;for(a===0&&(c=138,o=3),s=0;s<=e;s++)if(r=a,a=t[(s+1)*2+1],!(++h<c&&r===a)){if(h<o)do ke(i,r,i.bl_tree);while(--h!==0);else r!==0?(r!==n&&(ke(i,r,i.bl_tree),h--),ke(i,fn,i.bl_tree),ce(i,h-3,2)):h<=10?(ke(i,_n,i.bl_tree),ce(i,h-3,3)):(ke(i,xn,i.bl_tree),ce(i,h-11,7));h=0,n=r,a===0?(c=138,o=3):r===a?(c=6,o=3):(c=7,o=4)}}function Ur(i){var t;for(us(i,i.dyn_ltree,i.l_desc.max_code),us(i,i.dyn_dtree,i.d_desc.max_code),xi(i,i.bl_desc),t=mi-1;t>=3&&i.bl_tree[pn[t]*2+1]===0;t--);return i.opt_len+=3*(t+1)+5+5+4,t}function Nr(i,t,e,s){var n;for(ce(i,t-257,5),ce(i,e-1,5),ce(i,s-4,4),n=0;n<s;n++)ce(i,i.bl_tree[pn[n]*2+1],3);fs(i,i.dyn_ltree,t-1),fs(i,i.dyn_dtree,e-1)}function Hr(i){var t=4093624447,e;for(e=0;e<=31;e++,t>>>=1)if(t&1&&i.dyn_ltree[e*2]!==0)return hs;if(i.dyn_ltree[18]!==0||i.dyn_ltree[20]!==0||i.dyn_ltree[26]!==0)return ls;for(e=32;e<lt;e++)if(i.dyn_ltree[e*2]!==0)return ls;return hs}var _s=!1;function zr(i){_s||(Ir(),_s=!0),i.l_desc=new ei(i.dyn_ltree,gn),i.d_desc=new ei(i.dyn_dtree,bn),i.bl_desc=new ei(i.bl_tree,wn),i.bi_buf=0,i.bi_valid=0,kn(i)}function En(i,t,e,s){ce(i,(Xr<<1)+(s?1:0),3),Pr(i,t,e)}function Vr(i,t,e,s){var n,r,a=0;i.level>0?(i.strm.data_type===Ar&&(i.strm.data_type=Hr(i)),xi(i,i.l_desc),xi(i,i.d_desc),a=Ur(i),n=i.opt_len+3+7>>>3,r=i.static_len+3+7>>>3,r<=n&&(n=r)):n=r=e+5,e+4<=n&&t!==-1?En(i,t,e,s):i.strategy===Kr||r===n?(ce(i,(Fr<<1)+(s?1:0),3),ds(i,Ce,it)):(ce(i,(Mr<<1)+(s?1:0),3),Nr(i,i.l_desc.max_code+1,i.d_desc.max_code+1,a+1),ds(i,i.dyn_ltree,i.dyn_dtree)),kn(i),s&&Sn(i)}function Xe(i,t,e){return i.pending_buf[i.d_buf+i.last_lit*2]=t>>>8&255,i.pending_buf[i.d_buf+i.last_lit*2+1]=t&255,i.pending_buf[i.l_buf+i.last_lit]=e&255,i.last_lit++,t===0?i.dyn_ltree[e*2]++:(i.matches++,t--,i.dyn_ltree[(at[e]+lt+1)*2]++,i.dyn_dtree[mn(t)*2]++),i.last_lit===i.lit_bufsize-1}const Or={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"},ct=0,xs=3,ot=4,Gr=5,Ne=0,Oe=-2,ii=-5,Cn=-1,Wr=1,wt=2,jr=3,Zr=4,Yr=0,qr=2,yi=8;var $r=15,Jr=8,ea=29,ta=256,pi=ta+1+ea,ia=30,sa=19,na=2*pi+1,ra=15,U=3,Ke=258,fe=Ke+U+1,aa=32,Kn=42,ps=69,si=73,ni=91,ri=103,Je=113,mt=666,J=1,dt=2,ht=3,Pt=4,oa=3;function He(i,t){return i.msg=Or[t],t}function gs(i){return(i<<1)-(i>4?9:0)}function Qe(i){for(var t=i.length;--t>=0;)i[t]=0}function Me(i){var t=i.state,e=t.pending;e>i.avail_out&&(e=i.avail_out),e!==0&&(Se(i.output,t.pending_buf,t.pending_out,e,i.next_out),i.next_out+=e,t.pending_out+=e,i.total_out+=e,i.avail_out-=e,t.pending-=e,t.pending===0&&(t.pending_out=0))}function oe(i,t){Vr(i,i.block_start>=0?i.block_start:-1,i.strstart-i.block_start,t),i.block_start=i.strstart,Me(i.strm)}function O(i,t){i.pending_buf[i.pending++]=t}function ai(i,t){i.pending_buf[i.pending++]=t>>>8&255,i.pending_buf[i.pending++]=t&255}function ha(i,t,e,s){var n=i.avail_in;return n>s&&(n=s),n===0?0:(i.avail_in-=n,Se(t,i.input,i.next_in,n,e),i.state.wrap===1?i.adler=fi(i.adler,t,n,e):i.state.wrap===2&&(i.adler=q(i.adler)),i.next_in+=n,i.total_in+=n,n)}function An(i,t){var e=i.max_chain_length,s=i.strstart,n,r,a=i.prev_length,h=i.nice_match,c=i.strstart>i.w_size-fe?i.strstart-(i.w_size-fe):0,o=i.window,l=i.w_mask,_=i.prev,f=i.strstart+Ke,x=o[s+a-1],k=o[s+a];i.prev_length>=i.good_match&&(e>>=2),h>i.lookahead&&(h=i.lookahead);do if(n=t,!(o[n+a]!==k||o[n+a-1]!==x||o[n]!==o[s]||o[++n]!==o[s+1])){s+=2,n++;do;while(o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&o[++s]===o[++n]&&s<f);if(r=Ke-(f-s),s=f-Ke,r>a){if(i.match_start=t,a=r,r>=h)break;x=o[s+a-1],k=o[s+a]}}while((t=_[t&l])>c&&--e!==0);return a<=i.lookahead?a:i.lookahead}function ut(i){var t=i.w_size,e,s,n,r,a;do{if(r=i.window_size-i.lookahead-i.strstart,i.strstart>=t+(t-fe)){Se(i.window,i.window,t,t,0),i.match_start-=t,i.strstart-=t,i.block_start-=t,s=i.hash_size,e=s;do n=i.head[--e],i.head[e]=n>=t?n-t:0;while(--s);s=t,e=s;do n=i.prev[--e],i.prev[e]=n>=t?n-t:0;while(--s);r+=t}if(i.strm.avail_in===0)break;if(s=ha(i.strm,i.window,i.strstart+i.lookahead,r),i.lookahead+=s,i.lookahead+i.insert>=U)for(a=i.strstart-i.insert,i.ins_h=i.window[a],i.ins_h=(i.ins_h<<i.hash_shift^i.window[a+1])&i.hash_mask;i.insert&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[a+U-1])&i.hash_mask,i.prev[a&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=a,a++,i.insert--,!(i.lookahead+i.insert<U)););}while(i.lookahead<fe&&i.strm.avail_in!==0)}function la(i,t){var e=65535;for(e>i.pending_buf_size-5&&(e=i.pending_buf_size-5);;){if(i.lookahead<=1){if(ut(i),i.lookahead===0&&t===ct)return J;if(i.lookahead===0)break}i.strstart+=i.lookahead,i.lookahead=0;var s=i.block_start+e;if((i.strstart===0||i.strstart>=s)&&(i.lookahead=i.strstart-s,i.strstart=s,oe(i,!1),i.strm.avail_out===0)||i.strstart-i.block_start>=i.w_size-fe&&(oe(i,!1),i.strm.avail_out===0))return J}return i.insert=0,t===ot?(oe(i,!0),i.strm.avail_out===0?ht:Pt):(i.strstart>i.block_start&&(oe(i,!1),i.strm.avail_out===0),J)}function oi(i,t){for(var e,s;;){if(i.lookahead<fe){if(ut(i),i.lookahead<fe&&t===ct)return J;if(i.lookahead===0)break}if(e=0,i.lookahead>=U&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),e!==0&&i.strstart-e<=i.w_size-fe&&(i.match_length=An(i,e)),i.match_length>=U)if(s=Xe(i,i.strstart-i.match_start,i.match_length-U),i.lookahead-=i.match_length,i.match_length<=i.max_lazy_match&&i.lookahead>=U){i.match_length--;do i.strstart++,i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart;while(--i.match_length!==0);i.strstart++}else i.strstart+=i.match_length,i.match_length=0,i.ins_h=i.window[i.strstart],i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+1])&i.hash_mask;else s=Xe(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++;if(s&&(oe(i,!1),i.strm.avail_out===0))return J}return i.insert=i.strstart<U-1?i.strstart:U-1,t===ot?(oe(i,!0),i.strm.avail_out===0?ht:Pt):i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function Ie(i,t){for(var e,s,n;;){if(i.lookahead<fe){if(ut(i),i.lookahead<fe&&t===ct)return J;if(i.lookahead===0)break}if(e=0,i.lookahead>=U&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),i.prev_length=i.match_length,i.prev_match=i.match_start,i.match_length=U-1,e!==0&&i.prev_length<i.max_lazy_match&&i.strstart-e<=i.w_size-fe&&(i.match_length=An(i,e),i.match_length<=5&&(i.strategy===Wr||i.match_length===U&&i.strstart-i.match_start>4096)&&(i.match_length=U-1)),i.prev_length>=U&&i.match_length<=i.prev_length){n=i.strstart+i.lookahead-U,s=Xe(i,i.strstart-1-i.prev_match,i.prev_length-U),i.lookahead-=i.prev_length-1,i.prev_length-=2;do++i.strstart<=n&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+U-1])&i.hash_mask,e=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart);while(--i.prev_length!==0);if(i.match_available=0,i.match_length=U-1,i.strstart++,s&&(oe(i,!1),i.strm.avail_out===0))return J}else if(i.match_available){if(s=Xe(i,0,i.window[i.strstart-1]),s&&oe(i,!1),i.strstart++,i.lookahead--,i.strm.avail_out===0)return J}else i.match_available=1,i.strstart++,i.lookahead--}return i.match_available&&(s=Xe(i,0,i.window[i.strstart-1]),i.match_available=0),i.insert=i.strstart<U-1?i.strstart:U-1,t===ot?(oe(i,!0),i.strm.avail_out===0?ht:Pt):i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function ca(i,t){for(var e,s,n,r,a=i.window;!(i.lookahead<=Ke&&(ut(i),i.lookahead<=Ke,i.lookahead===0));){if(i.match_length=0,i.lookahead>=U&&i.strstart>0&&(n=i.strstart-1,s=a[n],s===a[++n]&&s===a[++n]&&s===a[++n])){r=i.strstart+Ke;do;while(s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&s===a[++n]&&n<r);i.match_length=Ke-(r-n),i.match_length>i.lookahead&&(i.match_length=i.lookahead)}if(i.match_length>=U?(e=Xe(i,1,i.match_length-U),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(e=Xe(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),e&&(oe(i,!1),i.strm.avail_out===0))return J}return i.insert=0,i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function da(i,t){for(var e;!(i.lookahead===0&&(ut(i),i.lookahead===0));)if(i.match_length=0,e=Xe(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,e&&(oe(i,!1),i.strm.avail_out===0))return J;return i.insert=0,i.last_lit&&(oe(i,!1),i.strm.avail_out===0)?J:dt}function pe(i,t,e,s,n){this.good_length=i,this.max_lazy=t,this.nice_length=e,this.max_chain=s,this.func=n}var ze;ze=[new pe(0,0,0,0,la),new pe(4,4,8,4,oi),new pe(4,5,16,8,oi),new pe(4,6,32,32,oi),new pe(4,4,16,16,Ie),new pe(8,16,32,32,Ie),new pe(8,16,128,128,Ie),new pe(8,32,128,256,Ie),new pe(32,128,258,1024,Ie),new pe(32,258,258,4096,Ie)];function ua(i){i.window_size=2*i.w_size,Qe(i.head),i.max_lazy_match=ze[i.level].max_lazy,i.good_match=ze[i.level].good_length,i.nice_match=ze[i.level].nice_length,i.max_chain_length=ze[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=U-1,i.match_available=0,i.ins_h=0}function fa(){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=yi,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 de(na*2),this.dyn_dtree=new de((2*ia+1)*2),this.bl_tree=new de((2*sa+1)*2),Qe(this.dyn_ltree),Qe(this.dyn_dtree),Qe(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new de(ra+1),this.heap=new de(2*pi+1),Qe(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new de(2*pi+1),Qe(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function _a(i){var t;return!i||!i.state?He(i,Oe):(i.total_in=i.total_out=0,i.data_type=qr,t=i.state,t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?Kn:Je,i.adler=t.wrap===2?0:1,t.last_flush=ct,zr(t),Ne)}function xa(i){var t=_a(i);return t===Ne&&ua(i.state),t}function pa(i,t,e,s,n,r){if(!i)return Oe;var a=1;if(t===Cn&&(t=6),t<0||t>9||r<0||r>Zr)return He(i,Oe);var h=new fa;return i.state=h,h.strm=i,h.wrap=a,h.gzhead=null,h.w_bits=s,h.w_size=1<<h.w_bits,h.w_mask=h.w_size-1,h.hash_bits=n+7,h.hash_size=1<<h.hash_bits,h.hash_mask=h.hash_size-1,h.hash_shift=~~((h.hash_bits+U-1)/U),h.window=new Ft(h.w_size*2),h.head=new de(h.hash_size),h.prev=new de(h.w_size),h.lit_bufsize=1<<n+6,h.pending_buf_size=h.lit_bufsize*4,h.pending_buf=new Ft(h.pending_buf_size),h.d_buf=1*h.lit_bufsize,h.l_buf=3*h.lit_bufsize,h.level=t,h.strategy=r,h.method=e,xa(i)}function ga(i,t){return pa(i,t,yi,$r,Jr,Yr)}function bs(i,t){var e,s,n,r;if(!i||!i.state||t>Gr||t<0)return i?He(i,Oe):Oe;if(s=i.state,!i.output||!i.input&&i.avail_in!==0||s.status===mt&&t!==ot)return He(i,i.avail_out===0?ii:Oe);if(s.strm=i,e=s.last_flush,s.last_flush=t,s.status===Kn)if(s.wrap===2)i.adler=0,O(s,31),O(s,139),O(s,8),s.gzhead?(O(s,(s.gzhead.text?1:0)+(s.gzhead.hcrc?2:0)+(s.gzhead.extra?4:0)+(s.gzhead.name?8:0)+(s.gzhead.comment?16:0)),O(s,s.gzhead.time&255),O(s,s.gzhead.time>>8&255),O(s,s.gzhead.time>>16&255),O(s,s.gzhead.time>>24&255),O(s,s.level===9?2:s.strategy>=wt||s.level<2?4:0),O(s,s.gzhead.os&255),s.gzhead.extra&&s.gzhead.extra.length&&(O(s,s.gzhead.extra.length&255),O(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(i.adler=q(i.adler,s.pending_buf,s.pending)),s.gzindex=0,s.status=ps):(O(s,0),O(s,0),O(s,0),O(s,0),O(s,0),O(s,s.level===9?2:s.strategy>=wt||s.level<2?4:0),O(s,oa),s.status=Je);else{var a=yi+(s.w_bits-8<<4)<<8,h=-1;s.strategy>=wt||s.level<2?h=0:s.level<6?h=1:s.level===6?h=2:h=3,a|=h<<6,s.strstart!==0&&(a|=aa),a+=31-a%31,s.status=Je,ai(s,a),s.strstart!==0&&(ai(s,i.adler>>>16),ai(s,i.adler&65535)),i.adler=1}if(s.status===ps)if(s.gzhead.extra){for(n=s.pending;s.gzindex<(s.gzhead.extra.length&65535)&&!(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),Me(i),n=s.pending,s.pending===s.pending_buf_size));)O(s,s.gzhead.extra[s.gzindex]&255),s.gzindex++;s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=si)}else s.status=si;if(s.status===si)if(s.gzhead.name){n=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),Me(i),n=s.pending,s.pending===s.pending_buf_size)){r=1;break}s.gzindex<s.gzhead.name.length?r=s.gzhead.name.charCodeAt(s.gzindex++)&255:r=0,O(s,r)}while(r!==0);s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),r===0&&(s.gzindex=0,s.status=ni)}else s.status=ni;if(s.status===ni)if(s.gzhead.comment){n=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),Me(i),n=s.pending,s.pending===s.pending_buf_size)){r=1;break}s.gzindex<s.gzhead.comment.length?r=s.gzhead.comment.charCodeAt(s.gzindex++)&255:r=0,O(s,r)}while(r!==0);s.gzhead.hcrc&&s.pending>n&&(i.adler=q(i.adler,s.pending_buf,s.pending-n)),r===0&&(s.status=ri)}else s.status=ri;if(s.status===ri&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&Me(i),s.pending+2<=s.pending_buf_size&&(O(s,i.adler&255),O(s,i.adler>>8&255),i.adler=0,s.status=Je)):s.status=Je),s.pending!==0){if(Me(i),i.avail_out===0)return s.last_flush=-1,Ne}else if(i.avail_in===0&&gs(t)<=gs(e)&&t!==ot)return He(i,ii);if(s.status===mt&&i.avail_in!==0)return He(i,ii);if(i.avail_in!==0||s.lookahead!==0||s.status!==mt){var c=s.strategy===wt?da(s):s.strategy===jr?ca(s,t):ze[s.level].func(s,t);if((c===ht||c===Pt)&&(s.status=mt),c===J||c===ht)return i.avail_out===0&&(s.last_flush=-1),Ne;if(c===dt&&(En(s,0,0,!1),Qe(s.head),s.lookahead===0&&(s.strstart=0,s.block_start=0,s.insert=0),Me(i),i.avail_out===0))return s.last_flush=-1,Ne}return Ne}class ba{constructor(){this.strm=new cn,this.chunkSize=1024*10*10,this.outputBuffer=new Uint8Array(this.chunkSize),ga(this.strm,Cn)}deflate(t){this.strm.input=t,this.strm.avail_in=this.strm.input.length,this.strm.next_in=0,this.strm.output=this.outputBuffer,this.strm.avail_out=this.chunkSize,this.strm.next_out=0;let e=bs(this.strm,xs),s=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);if(e<0)throw new Error("zlib deflate failed");if(this.strm.avail_in>0){let n=[s],r=s.length;do{if(this.strm.output=new Uint8Array(this.chunkSize),this.strm.next_out=0,this.strm.avail_out=this.chunkSize,e=bs(this.strm,xs),e<0)throw new Error("zlib deflate failed");let c=new Uint8Array(this.strm.output.buffer,0,this.strm.next_out);r+=c.length,n.push(c)}while(this.strm.avail_in>0);let a=new Uint8Array(r),h=0;for(let c=0;c<n.length;c++)a.set(n[c],h),h+=n[c].length;s=a}return this.strm.input=null,this.strm.avail_in=0,this.strm.next_in=0,s}}const u={XK_BackSpace:65288,XK_Tab:65289,XK_Clear:65291,XK_Return:65293,XK_Pause:65299,XK_Scroll_Lock:65300,XK_Escape:65307,XK_Delete:65535,XK_Multi_key:65312,XK_Codeinput:65335,XK_SingleCandidate:65340,XK_MultipleCandidate:65341,XK_PreviousCandidate:65342,XK_Kanji:65313,XK_Muhenkan:65314,XK_Henkan:65315,XK_Romaji:65316,XK_Hiragana:65317,XK_Katakana:65318,XK_Hiragana_Katakana:65319,XK_Zenkaku:65320,XK_Hankaku:65321,XK_Zenkaku_Hankaku:65322,XK_Kana_Shift:65326,XK_Eisu_toggle:65328,XK_Home:65360,XK_Left:65361,XK_Up:65362,XK_Right:65363,XK_Down:65364,XK_Prior:65365,XK_Next:65366,XK_End:65367,XK_Select:65376,XK_Print:65377,XK_Execute:65378,XK_Insert:65379,XK_Undo:65381,XK_Redo:65382,XK_Menu:65383,XK_Find:65384,XK_Cancel:65385,XK_Help:65386,XK_Mode_switch:65406,XK_Num_Lock:65407,XK_KP_Space:65408,XK_KP_Enter:65421,XK_KP_Home:65429,XK_KP_Left:65430,XK_KP_Up:65431,XK_KP_Right:65432,XK_KP_Down:65433,XK_KP_Prior:65434,XK_KP_Next:65435,XK_KP_End:65436,XK_KP_Begin:65437,XK_KP_Insert:65438,XK_KP_Delete:65439,XK_KP_Equal:65469,XK_KP_Multiply:65450,XK_KP_Add:65451,XK_KP_Separator:65452,XK_KP_Subtract:65453,XK_KP_Decimal:65454,XK_KP_Divide:65455,XK_KP_0:65456,XK_KP_1:65457,XK_KP_2:65458,XK_KP_3:65459,XK_KP_4:65460,XK_KP_5:65461,XK_KP_6:65462,XK_KP_7:65463,XK_KP_8:65464,XK_KP_9:65465,XK_F1:65470,XK_F2:65471,XK_F3:65472,XK_F4:65473,XK_F5:65474,XK_F6:65475,XK_F7:65476,XK_F8:65477,XK_F9:65478,XK_F10:65479,XK_F11:65480,XK_F12:65481,XK_F13:65482,XK_F14:65483,XK_F15:65484,XK_F16:65485,XK_F17:65486,XK_F18:65487,XK_F19:65488,XK_F20:65489,XK_F21:65490,XK_F22:65491,XK_F23:65492,XK_F24:65493,XK_F25:65494,XK_F26:65495,XK_F27:65496,XK_F28:65497,XK_F29:65498,XK_F30:65499,XK_F31:65500,XK_F32:65501,XK_F33:65502,XK_F34:65503,XK_F35:65504,XK_Shift_L:65505,XK_Shift_R:65506,XK_Control_L:65507,XK_Control_R:65508,XK_Caps_Lock:65509,XK_Meta_L:65511,XK_Meta_R:65512,XK_Alt_L:65513,XK_Alt_R:65514,XK_Super_L:65515,XK_Super_R:65516,XK_ISO_Level3_Shift:65027,XK_ISO_Next_Group:65032,XK_ISO_Prev_Group:65034,XK_ISO_First_Group:65036,XK_ISO_Last_Group:65038,XK_space:32,XK_asterisk:42,XK_plus:43,XK_comma:44,XK_minus:45,XK_period:46,XK_slash:47,XK_0:48,XK_1:49,XK_2:50,XK_3:51,XK_4:52,XK_5:53,XK_6:54,XK_7:55,XK_8:56,XK_9:57,XK_equal:61,XK_Hangul:65329,XK_Hangul_Hanja:65332,XK_Hangul_Jeonja:65336,XF86XK_MonBrightnessUp:269025026,XF86XK_MonBrightnessDown:269025027,XF86XK_Standby:269025040,XF86XK_AudioLowerVolume:269025041,XF86XK_AudioMute:269025042,XF86XK_AudioRaiseVolume:269025043,XF86XK_AudioPlay:269025044,XF86XK_AudioStop:269025045,XF86XK_AudioPrev:269025046,XF86XK_AudioNext:269025047,XF86XK_HomePage:269025048,XF86XK_Mail:269025049,XF86XK_Search:269025051,XF86XK_AudioRecord:269025052,XF86XK_Calculator:269025053,XF86XK_Calendar:269025056,XF86XK_PowerDown:269025057,XF86XK_Back:269025062,XF86XK_Forward:269025063,XF86XK_Stop:269025064,XF86XK_Refresh:269025065,XF86XK_PowerOff:269025066,XF86XK_WakeUp:269025067,XF86XK_Eject:269025068,XF86XK_ScreenSaver:269025069,XF86XK_WWW:269025070,XF86XK_Favorites:269025072,XF86XK_AudioPause:269025073,XF86XK_AudioMedia:269025074,XF86XK_MyComputer:269025075,XF86XK_BrightnessAdjust:269025083,XF86XK_AudioRewind:269025086,XF86XK_Close:269025110,XF86XK_Copy:269025111,XF86XK_Cut:269025112,XF86XK_Excel:269025116,XF86XK_LogOff:269025121,XF86XK_New:269025128,XF86XK_Open:269025131,XF86XK_Paste:269025133,XF86XK_Phone:269025134,XF86XK_Reply:269025138,XF86XK_Save:269025143,XF86XK_Send:269025147,XF86XK_Spell:269025148,XF86XK_SplitScreen:269025149,XF86XK_Word:269025161,XF86XK_ZoomIn:269025163,XF86XK_ZoomOut:269025164,XF86XK_WebCam:269025167,XF86XK_MailForward:269025168,XF86XK_Music:269025170,XF86XK_AudioForward:269025175,XF86XK_AudioRandomPlay:269025177,XF86XK_Subtitle:269025178,XF86XK_AudioCycleTrack:269025179,XF86XK_Hibernate:269025192,XF86XK_AudioMicMute:269025202,XF86XK_Next_VMode:269024802},wa={256:960,257:992,258:451,259:483,260:417,261:433,262:454,263:486,264:710,265:742,266:709,267:741,268:456,269:488,270:463,271:495,272:464,273:496,274:938,275:954,278:972,279:1004,280:458,281:490,282:460,283:492,284:728,285:760,286:683,287:699,288:725,289:757,290:939,291:955,292:678,293:694,294:673,295:689,296:933,297:949,298:975,299:1007,302:967,303:999,304:681,305:697,308:684,309:700,310:979,311:1011,312:930,313:453,314:485,315:934,316:950,317:421,318:437,321:419,322:435,323:465,324:497,325:977,326:1009,327:466,328:498,330:957,331:959,332:978,333:1010,336:469,337:501,338:5052,339:5053,340:448,341:480,342:931,343:947,344:472,345:504,346:422,347:438,348:734,349:766,350:426,351:442,352:425,353:441,354:478,355:510,356:427,357:443,358:940,359:956,360:989,361:1021,362:990,363:1022,364:733,365:765,366:473,367:505,368:475,369:507,370:985,371:1017,376:5054,377:428,378:444,379:431,380:447,381:430,382:446,402:2294,466:16777681,711:439,728:418,729:511,731:434,733:445,901:1966,902:1953,904:1954,905:1955,906:1956,908:1959,910:1960,911:1963,912:1974,913:1985,914:1986,915:1987,916:1988,917:1989,918:1990,919:1991,920:1992,921:1993,922:1994,923:1995,924:1996,925:1997,926:1998,927:1999,928:2e3,929:2001,931:2002,932:2004,933:2005,934:2006,935:2007,936:2008,937:2009,938:1957,939:1961,940:1969,941:1970,942:1971,943:1972,944:1978,945:2017,946:2018,947:2019,948:2020,949:2021,950:2022,951:2023,952:2024,953:2025,954:2026,955:2027,956:2028,957:2029,958:2030,959:2031,960:2032,961:2033,962:2035,963:2034,964:2036,965:2037,966:2038,967:2039,968:2040,969:2041,970:1973,971:1977,972:1975,973:1976,974:1979,1025:1715,1026:1713,1027:1714,1028:1716,1029:1717,1030:1718,1031:1719,1032:1720,1033:1721,1034:1722,1035:1723,1036:1724,1038:1726,1039:1727,1040:1761,1041:1762,1042:1783,1043:1767,1044:1764,1045:1765,1046:1782,1047:1786,1048:1769,1049:1770,1050:1771,1051:1772,1052:1773,1053:1774,1054:1775,1055:1776,1056:1778,1057:1779,1058:1780,1059:1781,1060:1766,1061:1768,1062:1763,1063:1790,1064:1787,1065:1789,1066:1791,1067:1785,1068:1784,1069:1788,1070:1760,1071:1777,1072:1729,1073:1730,1074:1751,1075:1735,1076:1732,1077:1733,1078:1750,1079:1754,1080:1737,1081:1738,1082:1739,1083:1740,1084:1741,1085:1742,1086:1743,1087:1744,1088:1746,1089:1747,1090:1748,1091:1749,1092:1734,1093:1736,1094:1731,1095:1758,1096:1755,1097:1757,1098:1759,1099:1753,1100:1752,1101:1756,1102:1728,1103:1745,1105:1699,1106:1697,1107:1698,1108:1700,1109:1701,1110:1702,1111:1703,1112:1704,1113:1705,1114:1706,1115:1707,1116:1708,1118:1710,1119:1711,1168:1725,1169:1709,1488:3296,1489:3297,1490:3298,1491:3299,1492:3300,1493:3301,1494:3302,1495:3303,1496:3304,1497:3305,1498:3306,1499:3307,1500:3308,1501:3309,1502:3310,1503:3311,1504:3312,1505:3313,1506:3314,1507:3315,1508:3316,1509:3317,1510:3318,1511:3319,1512:3320,1513:3321,1514:3322,1548:1452,1563:1467,1567:1471,1569:1473,1570:1474,1571:1475,1572:1476,1573:1477,1574:1478,1575:1479,1576:1480,1577:1481,1578:1482,1579:1483,1580:1484,1581:1485,1582:1486,1583:1487,1584:1488,1585:1489,1586:1490,1587:1491,1588:1492,1589:1493,1590:1494,1591:1495,1592:1496,1593:1497,1594:1498,1600:1504,1601:1505,1602:1506,1603:1507,1604:1508,1605:1509,1606:1510,1607:1511,1608:1512,1609:1513,1610:1514,1611:1515,1612:1516,1613:1517,1614:1518,1615:1519,1616:1520,1617:1521,1618:1522,3585:3489,3586:3490,3587:3491,3588:3492,3589:3493,3590:3494,3591:3495,3592:3496,3593:3497,3594:3498,3595:3499,3596:3500,3597:3501,3598:3502,3599:3503,3600:3504,3601:3505,3602:3506,3603:3507,3604:3508,3605:3509,3606:3510,3607:3511,3608:3512,3609:3513,3610:3514,3611:3515,3612:3516,3613:3517,3614:3518,3615:3519,3616:3520,3617:3521,3618:3522,3619:3523,3620:3524,3621:3525,3622:3526,3623:3527,3624:3528,3625:3529,3626:3530,3627:3531,3628:3532,3629:3533,3630:3534,3631:3535,3632:3536,3633:3537,3634:3538,3635:3539,3636:3540,3637:3541,3638:3542,3639:3543,3640:3544,3641:3545,3642:3546,3647:3551,3648:3552,3649:3553,3650:3554,3651:3555,3652:3556,3653:3557,3654:3558,3655:3559,3656:3560,3657:3561,3658:3562,3659:3563,3660:3564,3661:3565,3664:3568,3665:3569,3666:3570,3667:3571,3668:3572,3669:3573,3670:3574,3671:3575,3672:3576,3673:3577,8194:2722,8195:2721,8196:2723,8197:2724,8199:2725,8200:2726,8201:2727,8202:2728,8210:2747,8211:2730,8212:2729,8213:1967,8215:3295,8216:2768,8217:2769,8218:2813,8220:2770,8221:2771,8222:2814,8224:2801,8225:2802,8226:2790,8229:2735,8230:2734,8240:2773,8242:2774,8243:2775,8248:2812,8254:1150,8361:3839,8364:8364,8453:2744,8470:1712,8471:2811,8478:2772,8482:2761,8531:2736,8532:2737,8533:2738,8534:2739,8535:2740,8536:2741,8537:2742,8538:2743,8539:2755,8540:2756,8541:2757,8542:2758,8592:2299,8593:2300,8594:2301,8595:2302,8658:2254,8660:2253,8706:2287,8711:2245,8728:3018,8730:2262,8733:2241,8734:2242,8743:2270,8744:2271,8745:2268,8746:2269,8747:2239,8756:2240,8764:2248,8771:2249,8773:16785992,8800:2237,8801:2255,8804:2236,8805:2238,8834:2266,8835:2267,8866:3068,8867:3036,8868:3010,8869:3022,8968:3027,8970:3012,8981:2810,8992:2212,8993:2213,9109:3020,9115:2219,9117:2220,9118:2221,9120:2222,9121:2215,9123:2216,9124:2217,9126:2218,9128:2223,9132:2224,9143:2209,9146:2543,9147:2544,9148:2546,9149:2547,9225:2530,9226:2533,9227:2537,9228:2531,9229:2532,9251:2732,9252:2536,9472:2211,9474:2214,9484:2210,9488:2539,9492:2541,9496:2538,9500:2548,9508:2549,9516:2551,9524:2550,9532:2542,9618:2529,9642:2791,9643:2785,9644:2779,9645:2786,9646:2783,9647:2767,9650:2792,9651:2787,9654:2781,9655:2765,9660:2793,9661:2788,9664:2780,9665:2764,9670:2528,9675:2766,9679:2782,9702:2784,9734:2789,9742:2809,9747:2762,9756:2794,9758:2795,9792:2808,9794:2807,9827:2796,9829:2798,9830:2797,9837:2806,9839:2805,10003:2803,10007:2804,10013:2777,10016:2800,10216:2748,10217:2750,12289:1188,12290:1185,12300:1186,12301:1187,12443:1246,12444:1247,12449:1191,12450:1201,12451:1192,12452:1202,12453:1193,12454:1203,12455:1194,12456:1204,12457:1195,12458:1205,12459:1206,12461:1207,12463:1208,12465:1209,12467:1210,12469:1211,12471:1212,12473:1213,12475:1214,12477:1215,12479:1216,12481:1217,12483:1199,12484:1218,12486:1219,12488:1220,12490:1221,12491:1222,12492:1223,12493:1224,12494:1225,12495:1226,12498:1227,12501:1228,12504:1229,12507:1230,12510:1231,12511:1232,12512:1233,12513:1234,12514:1235,12515:1196,12516:1236,12517:1197,12518:1237,12519:1198,12520:1238,12521:1239,12522:1240,12523:1241,12524:1242,12525:1243,12527:1244,12530:1190,12531:1245,12539:1189,12540:1200},ma={lookup(i){if(i>=32&&i<=255)return i;const t=wa[i];return t!==void 0?t:16777216|i}},ws={8:"Backspace",9:"Tab",10:"NumpadClear",13:"Enter",16:"ShiftLeft",17:"ControlLeft",18:"AltLeft",19:"Pause",20:"CapsLock",21:"Lang1",25:"Lang2",27:"Escape",28:"Convert",29:"NonConvert",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",41:"Select",44:"PrintScreen",45:"Insert",46:"Delete",47:"Help",48:"Digit0",49:"Digit1",50:"Digit2",51:"Digit3",52:"Digit4",53:"Digit5",54:"Digit6",55:"Digit7",56:"Digit8",57:"Digit9",91:"MetaLeft",92:"MetaRight",93:"ContextMenu",95:"Sleep",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9",106:"NumpadMultiply",107:"NumpadAdd",108:"NumpadDecimal",109:"NumpadSubtract",110:"NumpadDecimal",111:"NumpadDivide",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",124:"F13",125:"F14",126:"F15",127:"F16",128:"F17",129:"F18",130:"F19",131:"F20",132:"F21",133:"F22",134:"F23",135:"F24",144:"NumLock",145:"ScrollLock",166:"BrowserBack",167:"BrowserForward",168:"BrowserRefresh",169:"BrowserStop",170:"BrowserSearch",171:"BrowserFavorites",172:"BrowserHome",173:"AudioVolumeMute",174:"AudioVolumeDown",175:"AudioVolumeUp",176:"MediaTrackNext",177:"MediaTrackPrevious",178:"MediaStop",179:"MediaPlayPause",180:"LaunchMail",181:"MediaSelect",182:"LaunchApp1",183:"LaunchApp2",225:"AltRight"},ms={Backspace:"Backspace",AltLeft:"Alt",AltRight:"Alt",CapsLock:"CapsLock",ContextMenu:"ContextMenu",ControlLeft:"Control",ControlRight:"Control",Enter:"Enter",MetaLeft:"Meta",MetaRight:"Meta",ShiftLeft:"Shift",ShiftRight:"Shift",Tab:"Tab",Delete:"Delete",End:"End",Help:"Help",Home:"Home",Insert:"Insert",PageDown:"PageDown",PageUp:"PageUp",ArrowDown:"ArrowDown",ArrowLeft:"ArrowLeft",ArrowRight:"ArrowRight",ArrowUp:"ArrowUp",NumLock:"NumLock",NumpadBackspace:"Backspace",NumpadClear:"Clear",Escape:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",F13:"F13",F14:"F14",F15:"F15",F16:"F16",F17:"F17",F18:"F18",F19:"F19",F20:"F20",F21:"F21",F22:"F22",F23:"F23",F24:"F24",F25:"F25",F26:"F26",F27:"F27",F28:"F28",F29:"F29",F30:"F30",F31:"F31",F32:"F32",F33:"F33",F34:"F34",F35:"F35",PrintScreen:"PrintScreen",ScrollLock:"ScrollLock",Pause:"Pause",BrowserBack:"BrowserBack",BrowserFavorites:"BrowserFavorites",BrowserForward:"BrowserForward",BrowserHome:"BrowserHome",BrowserRefresh:"BrowserRefresh",BrowserSearch:"BrowserSearch",BrowserStop:"BrowserStop",Eject:"Eject",LaunchApp1:"LaunchMyComputer",LaunchApp2:"LaunchCalendar",LaunchMail:"LaunchMail",MediaPlayPause:"MediaPlay",MediaStop:"MediaStop",MediaTrackNext:"MediaTrackNext",MediaTrackPrevious:"MediaTrackPrevious",Power:"Power",Sleep:"Sleep",AudioVolumeDown:"AudioVolumeDown",AudioVolumeMute:"AudioVolumeMute",AudioVolumeUp:"AudioVolumeUp",WakeUp:"WakeUp"},Fe={};function m(i,t){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in Fe)throw new Error('Duplicate entry for key "'+i+'"');Fe[i]=[t,t,t,t]}function Ut(i,t,e){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(e===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in Fe)throw new Error('Duplicate entry for key "'+i+'"');Fe[i]=[t,t,e,t]}function N(i,t,e){if(t===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(e===void 0)throw new Error('Undefined keysym for key "'+i+'"');if(i in Fe)throw new Error('Duplicate entry for key "'+i+'"');Fe[i]=[t,t,t,e]}Ut("Alt",u.XK_Alt_L,u.XK_Alt_R);m("AltGraph",u.XK_ISO_Level3_Shift);m("CapsLock",u.XK_Caps_Lock);Ut("Control",u.XK_Control_L,u.XK_Control_R);Ut("Meta",u.XK_Super_L,u.XK_Super_R);m("NumLock",u.XK_Num_Lock);m("ScrollLock",u.XK_Scroll_Lock);Ut("Shift",u.XK_Shift_L,u.XK_Shift_R);N("Enter",u.XK_Return,u.XK_KP_Enter);m("Tab",u.XK_Tab);N(" ",u.XK_space,u.XK_KP_Space);N("ArrowDown",u.XK_Down,u.XK_KP_Down);N("ArrowLeft",u.XK_Left,u.XK_KP_Left);N("ArrowRight",u.XK_Right,u.XK_KP_Right);N("ArrowUp",u.XK_Up,u.XK_KP_Up);N("End",u.XK_End,u.XK_KP_End);N("Home",u.XK_Home,u.XK_KP_Home);N("PageDown",u.XK_Next,u.XK_KP_Next);N("PageUp",u.XK_Prior,u.XK_KP_Prior);m("Backspace",u.XK_BackSpace);N("Clear",u.XK_Clear,u.XK_KP_Begin);m("Copy",u.XF86XK_Copy);m("Cut",u.XF86XK_Cut);N("Delete",u.XK_Delete,u.XK_KP_Delete);N("Insert",u.XK_Insert,u.XK_KP_Insert);m("Paste",u.XF86XK_Paste);m("Redo",u.XK_Redo);m("Undo",u.XK_Undo);m("Cancel",u.XK_Cancel);m("ContextMenu",u.XK_Menu);m("Escape",u.XK_Escape);m("Execute",u.XK_Execute);m("Find",u.XK_Find);m("Help",u.XK_Help);m("Pause",u.XK_Pause);m("Select",u.XK_Select);m("ZoomIn",u.XF86XK_ZoomIn);m("ZoomOut",u.XF86XK_ZoomOut);m("BrightnessDown",u.XF86XK_MonBrightnessDown);m("BrightnessUp",u.XF86XK_MonBrightnessUp);m("Eject",u.XF86XK_Eject);m("LogOff",u.XF86XK_LogOff);m("Power",u.XF86XK_PowerOff);m("PowerOff",u.XF86XK_PowerDown);m("PrintScreen",u.XK_Print);m("Hibernate",u.XF86XK_Hibernate);m("Standby",u.XF86XK_Standby);m("WakeUp",u.XF86XK_WakeUp);m("AllCandidates",u.XK_MultipleCandidate);m("Alphanumeric",u.XK_Eisu_toggle);m("CodeInput",u.XK_Codeinput);m("Compose",u.XK_Multi_key);m("Convert",u.XK_Henkan);m("GroupFirst",u.XK_ISO_First_Group);m("GroupLast",u.XK_ISO_Last_Group);m("GroupNext",u.XK_ISO_Next_Group);m("GroupPrevious",u.XK_ISO_Prev_Group);m("NonConvert",u.XK_Muhenkan);m("PreviousCandidate",u.XK_PreviousCandidate);m("SingleCandidate",u.XK_SingleCandidate);m("HangulMode",u.XK_Hangul);m("HanjaMode",u.XK_Hangul_Hanja);m("JunjaMode",u.XK_Hangul_Jeonja);m("Eisu",u.XK_Eisu_toggle);m("Hankaku",u.XK_Hankaku);m("Hiragana",u.XK_Hiragana);m("HiraganaKatakana",u.XK_Hiragana_Katakana);m("KanaMode",u.XK_Kana_Shift);m("KanjiMode",u.XK_Kanji);m("Katakana",u.XK_Katakana);m("Romaji",u.XK_Romaji);m("Zenkaku",u.XK_Zenkaku);m("ZenkakuHankaku",u.XK_Zenkaku_Hankaku);m("F1",u.XK_F1);m("F2",u.XK_F2);m("F3",u.XK_F3);m("F4",u.XK_F4);m("F5",u.XK_F5);m("F6",u.XK_F6);m("F7",u.XK_F7);m("F8",u.XK_F8);m("F9",u.XK_F9);m("F10",u.XK_F10);m("F11",u.XK_F11);m("F12",u.XK_F12);m("F13",u.XK_F13);m("F14",u.XK_F14);m("F15",u.XK_F15);m("F16",u.XK_F16);m("F17",u.XK_F17);m("F18",u.XK_F18);m("F19",u.XK_F19);m("F20",u.XK_F20);m("F21",u.XK_F21);m("F22",u.XK_F22);m("F23",u.XK_F23);m("F24",u.XK_F24);m("F25",u.XK_F25);m("F26",u.XK_F26);m("F27",u.XK_F27);m("F28",u.XK_F28);m("F29",u.XK_F29);m("F30",u.XK_F30);m("F31",u.XK_F31);m("F32",u.XK_F32);m("F33",u.XK_F33);m("F34",u.XK_F34);m("F35",u.XK_F35);m("Close",u.XF86XK_Close);m("MailForward",u.XF86XK_MailForward);m("MailReply",u.XF86XK_Reply);m("MailSend",u.XF86XK_Send);m("MediaFastForward",u.XF86XK_AudioForward);m("MediaPause",u.XF86XK_AudioPause);m("MediaPlay",u.XF86XK_AudioPlay);m("MediaRecord",u.XF86XK_AudioRecord);m("MediaRewind",u.XF86XK_AudioRewind);m("MediaStop",u.XF86XK_AudioStop);m("MediaTrackNext",u.XF86XK_AudioNext);m("MediaTrackPrevious",u.XF86XK_AudioPrev);m("New",u.XF86XK_New);m("Open",u.XF86XK_Open);m("Print",u.XK_Print);m("Save",u.XF86XK_Save);m("SpellCheck",u.XF86XK_Spell);m("AudioVolumeDown",u.XF86XK_AudioLowerVolume);m("AudioVolumeUp",u.XF86XK_AudioRaiseVolume);m("AudioVolumeMute",u.XF86XK_AudioMute);m("MicrophoneVolumeMute",u.XF86XK_AudioMicMute);m("LaunchApplication1",u.XF86XK_MyComputer);m("LaunchApplication2",u.XF86XK_Calculator);m("LaunchCalendar",u.XF86XK_Calendar);m("LaunchMail",u.XF86XK_Mail);m("LaunchMediaPlayer",u.XF86XK_AudioMedia);m("LaunchMusicPlayer",u.XF86XK_Music);m("LaunchPhone",u.XF86XK_Phone);m("LaunchScreenSaver",u.XF86XK_ScreenSaver);m("LaunchSpreadsheet",u.XF86XK_Excel);m("LaunchWebBrowser",u.XF86XK_WWW);m("LaunchWebCam",u.XF86XK_WebCam);m("LaunchWordProcessor",u.XF86XK_Word);m("BrowserBack",u.XF86XK_Back);m("BrowserFavorites",u.XF86XK_Favorites);m("BrowserForward",u.XF86XK_Forward);m("BrowserHome",u.XF86XK_HomePage);m("BrowserRefresh",u.XF86XK_Refresh);m("BrowserSearch",u.XF86XK_Search);m("BrowserStop",u.XF86XK_Stop);m("Dimmer",u.XF86XK_BrightnessAdjust);m("MediaAudioTrack",u.XF86XK_AudioCycleTrack);m("RandomToggle",u.XF86XK_AudioRandomPlay);m("SplitScreenToggle",u.XF86XK_SplitScreen);m("Subtitle",u.XF86XK_Subtitle);m("VideoModeNext",u.XF86XK_Next_VMode);N("=",u.XK_equal,u.XK_KP_Equal);N("+",u.XK_plus,u.XK_KP_Add);N("-",u.XK_minus,u.XK_KP_Subtract);N("*",u.XK_asterisk,u.XK_KP_Multiply);N("/",u.XK_slash,u.XK_KP_Divide);N(".",u.XK_period,u.XK_KP_Decimal);N(",",u.XK_comma,u.XK_KP_Separator);N("0",u.XK_0,u.XK_KP_0);N("1",u.XK_1,u.XK_KP_1);N("2",u.XK_2,u.XK_KP_2);N("3",u.XK_3,u.XK_KP_3);N("4",u.XK_4,u.XK_KP_4);N("5",u.XK_5,u.XK_KP_5);N("6",u.XK_6,u.XK_KP_6);N("7",u.XK_7,u.XK_KP_7);N("8",u.XK_8,u.XK_KP_8);N("9",u.XK_9,u.XK_KP_9);function st(i){if(i.code){switch(i.code){case"OSLeft":return"MetaLeft";case"OSRight":return"MetaRight"}return i.code}if(i.keyCode in ws){let t=ws[i.keyCode];if(Ue()&&t==="ContextMenu"&&(t="MetaRight"),i.location===2)switch(t){case"ShiftLeft":return"ShiftRight";case"ControlLeft":return"ControlRight";case"AltLeft":return"AltRight"}if(i.location===3)switch(t){case"Delete":return"NumpadDecimal";case"Insert":return"Numpad0";case"End":return"Numpad1";case"ArrowDown":return"Numpad2";case"PageDown":return"Numpad3";case"ArrowLeft":return"Numpad4";case"ArrowRight":return"Numpad6";case"Home":return"Numpad7";case"ArrowUp":return"Numpad8";case"PageUp":return"Numpad9";case"Enter":return"NumpadEnter"}return t}return"Unidentified"}function va(i){if(i.key!==void 0&&i.key!=="Unidentified"){switch(i.key){case"OS":return"Meta";case"LaunchMyComputer":return"LaunchApplication1";case"LaunchCalculator":return"LaunchApplication2"}switch(i.key){case"UIKeyInputUpArrow":return"ArrowUp";case"UIKeyInputDownArrow":return"ArrowDown";case"UIKeyInputLeftArrow":return"ArrowLeft";case"UIKeyInputRightArrow":return"ArrowRight";case"UIKeyInputEscape":return"Escape"}return i.key==="\0"&&i.code==="NumpadDecimal"?"Delete":i.key}const t=st(i);return t in ms?ms[t]:i.charCode?String.fromCharCode(i.charCode):"Unidentified"}function ya(i){const t=va(i);if(t==="Unidentified")return null;if(t in Fe){let s=i.location;if(t==="Meta"&&s===0&&(s=2),t==="Clear"&&s===3&&st(i)==="NumLock"&&(s=0),(s===void 0||s>3)&&(s=0),t==="Meta"){let n=st(i);if(n==="AltLeft")return u.XK_Meta_L;if(n==="AltRight")return u.XK_Meta_R}if(t==="Clear"&&st(i)==="NumLock")return u.XK_Num_Lock;if(Ct())switch(t){case"Zenkaku":case"Hankaku":return u.XK_Zenkaku_Hankaku;case"Romaji":case"KanaMode":return u.XK_Romaji}return Fe[t][s]}if(t.length!==1)return null;const e=t.charCodeAt();return e?ma.lookup(e):null}class ka{constructor(t){this._target=t||null,this._keyDownList={},this._altGrArmed=!1,this._eventHandlers={keyup:this._handleKeyUp.bind(this),keydown:this._handleKeyDown.bind(this),blur:this._allKeysUp.bind(this)},this.onkeyevent=()=>{}}_sendKeyEvent(t,e,s,n=null,r=null){if(s)this._keyDownList[e]=t;else{if(!(e in this._keyDownList))return;delete this._keyDownList[e]}Q("onkeyevent "+(s?"down":"up")+", keysym: "+t,", code: "+e+", numlock: "+n+", capslock: "+r),this.onkeyevent(t,e,s,n,r)}_getKeyCode(t){const e=st(t);if(e!=="Unidentified")return e;if(t.keyCode&&t.keyCode!==229)return"Platform"+t.keyCode;if(t.keyIdentifier){if(t.keyIdentifier.substr(0,2)!=="U+")return t.keyIdentifier;const s=parseInt(t.keyIdentifier.substr(2),16);return"Platform"+String.fromCharCode(s).toUpperCase().charCodeAt()}return"Unidentified"}_handleKeyDown(t){const e=this._getKeyCode(t);let s=ya(t),n=t.getModifierState("NumLock"),r=t.getModifierState("CapsLock");if((Ue()||We())&&(n=null),this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),e==="AltRight"&&t.timeStamp-this._altGrCtrlTime<50?s=u.XK_ISO_Level3_Shift:this._sendKeyEvent(u.XK_Control_L,"ControlLeft",!0,n,r)),e==="Unidentified"){s&&(this._sendKeyEvent(s,e,!0,n,r),this._sendKeyEvent(s,e,!1,n,r)),Be(t);return}if(Ue()||We())switch(s){case u.XK_Super_L:s=u.XK_Alt_L;break;case u.XK_Super_R:s=u.XK_Super_L;break;case u.XK_Alt_L:s=u.XK_Mode_switch;break;case u.XK_Alt_R:s=u.XK_ISO_Level3_Shift;break}if(e in this._keyDownList&&(s=this._keyDownList[e]),(Ue()||We())&&t.metaKey&&e!=="MetaLeft"&&e!=="MetaRight"){this._sendKeyEvent(s,e,!0,n,r),this._sendKeyEvent(s,e,!1,n,r),Be(t);return}if((Ue()||We())&&e==="CapsLock"){this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!0,n,r),this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!1,n,r),Be(t);return}const a=[u.XK_Zenkaku_Hankaku,u.XK_Eisu_toggle,u.XK_Katakana,u.XK_Hiragana,u.XK_Romaji];if(Ct()&&a.includes(s)){this._sendKeyEvent(s,e,!0,n,r),this._sendKeyEvent(s,e,!1,n,r),Be(t);return}if(Be(t),e==="ControlLeft"&&Ct()&&!("ControlLeft"in this._keyDownList)){this._altGrArmed=!0,this._altGrTimeout=setTimeout(this._interruptAltGrSequence.bind(this),100),this._altGrCtrlTime=t.timeStamp;return}this._sendKeyEvent(s,e,!0,n,r)}_handleKeyUp(t){Be(t);const e=this._getKeyCode(t);if(this._interruptAltGrSequence(),(Ue()||We())&&e==="CapsLock"){this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!0),this._sendKeyEvent(u.XK_Caps_Lock,"CapsLock",!1);return}this._sendKeyEvent(this._keyDownList[e],e,!1),Ct()&&(e==="ShiftLeft"||e==="ShiftRight")&&("ShiftRight"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftRight,"ShiftRight",!1),"ShiftLeft"in this._keyDownList&&this._sendKeyEvent(this._keyDownList.ShiftLeft,"ShiftLeft",!1))}_interruptAltGrSequence(){this._altGrArmed&&(this._altGrArmed=!1,clearTimeout(this._altGrTimeout),this._sendKeyEvent(u.XK_Control_L,"ControlLeft",!0))}_allKeysUp(){Q(">> Keyboard.allKeysUp"),this._interruptAltGrSequence();for(let t in this._keyDownList)this._sendKeyEvent(this._keyDownList[t],t,!1);Q("<< Keyboard.allKeysUp")}grab(){this._target.addEventListener("keydown",this._eventHandlers.keydown),this._target.addEventListener("keyup",this._eventHandlers.keyup),window.addEventListener("blur",this._eventHandlers.blur)}ungrab(){this._target.removeEventListener("keydown",this._eventHandlers.keydown),this._target.removeEventListener("keyup",this._eventHandlers.keyup),window.removeEventListener("blur",this._eventHandlers.blur),this._allKeysUp()}}const ge=0,vs=1,ys=2,ks=4,Ss=8,hi=16,Ze=32,Ye=64,li=127,Es=50,Sa=90,Cs=250,Ea=1e3,Ca=1e3,Ka=50;class Aa{constructor(){this._target=null,this._state=li,this._tracked=[],this._ignored=[],this._waitingRelease=!1,this._releaseStart=0,this._longpressTimeoutId=null,this._twoTouchTimeoutId=null,this._boundEventHandler=this._eventHandler.bind(this)}attach(t){this.detach(),this._target=t,this._target.addEventListener("touchstart",this._boundEventHandler),this._target.addEventListener("touchmove",this._boundEventHandler),this._target.addEventListener("touchend",this._boundEventHandler),this._target.addEventListener("touchcancel",this._boundEventHandler)}detach(){this._target&&(this._stopLongpressTimeout(),this._stopTwoTouchTimeout(),this._target.removeEventListener("touchstart",this._boundEventHandler),this._target.removeEventListener("touchmove",this._boundEventHandler),this._target.removeEventListener("touchend",this._boundEventHandler),this._target.removeEventListener("touchcancel",this._boundEventHandler),this._target=null)}_eventHandler(t){let e;switch(t.stopPropagation(),t.preventDefault(),t.type){case"touchstart":e=this._touchStart;break;case"touchmove":e=this._touchMove;break;case"touchend":case"touchcancel":e=this._touchEnd;break}for(let s=0;s<t.changedTouches.length;s++){let n=t.changedTouches[s];e.call(this,n.identifier,n.clientX,n.clientY)}}_touchStart(t,e,s){if(this._hasDetectedGesture()||this._state===ge){this._ignored.push(t);return}if(this._tracked.length>0&&Date.now()-this._tracked[0].started>Cs){this._state=ge,this._ignored.push(t);return}if(this._waitingRelease){this._state=ge,this._ignored.push(t);return}switch(this._tracked.push({id:t,started:Date.now(),active:!0,firstX:e,firstY:s,lastX:e,lastY:s,angle:0}),this._tracked.length){case 1:this._startLongpressTimeout();break;case 2:this._state&=-26,this._stopLongpressTimeout();break;case 3:this._state&=-99;break;default:this._state=ge}}_touchMove(t,e,s){let n=this._tracked.find(h=>h.id===t);if(n===void 0)return;n.lastX=e,n.lastY=s;let r=e-n.firstX,a=s-n.firstY;if((n.firstX!==n.lastX||n.firstY!==n.lastY)&&(n.angle=Math.atan2(a,r)*180/Math.PI),!this._hasDetectedGesture()){if(Math.hypot(r,a)<Es)return;if(this._state&=-24,this._stopLongpressTimeout(),this._tracked.length!==1&&(this._state&=~Ss),this._tracked.length!==2&&(this._state&=-97),this._tracked.length===2){let h=this._tracked.find(o=>o.id!==t);if(Math.hypot(h.firstX-h.lastX,h.firstY-h.lastY)>Es){let o=Math.abs(n.angle-h.angle);o=Math.abs((o+180)%360-180),o>Sa?this._state&=~Ze:this._state&=~Ye,this._isTwoTouchTimeoutRunning()&&this._stopTwoTouchTimeout()}else this._isTwoTouchTimeoutRunning()||this._startTwoTouchTimeout()}if(!this._hasDetectedGesture())return;this._pushEvent("gesturestart")}this._pushEvent("gesturemove")}_touchEnd(t,e,s){if(this._ignored.indexOf(t)!==-1){this._ignored.splice(this._ignored.indexOf(t),1),this._ignored.length===0&&this._tracked.length===0&&(this._state=li,this._waitingRelease=!1);return}if(!this._hasDetectedGesture()&&this._isTwoTouchTimeoutRunning()&&(this._stopTwoTouchTimeout(),this._state=ge),!this._hasDetectedGesture()&&(this._state&=-105,this._state&=~hi,this._stopLongpressTimeout(),!this._waitingRelease))switch(this._releaseStart=Date.now(),this._waitingRelease=!0,this._tracked.length){case 1:this._state&=-7;break;case 2:this._state&=-6;break}if(this._waitingRelease){Date.now()-this._releaseStart>Cs&&(this._state=ge),this._tracked.some(r=>Date.now()-r.started>Ea)&&(this._state=ge);let n=this._tracked.find(r=>r.id===t);if(n.active=!1,this._hasDetectedGesture())this._pushEvent("gesturestart");else if(this._state!==ge)return}this._hasDetectedGesture()&&this._pushEvent("gestureend");for(let n=0;n<this._tracked.length;n++)this._tracked[n].active&&this._ignored.push(this._tracked[n].id);this._tracked=[],this._state=ge,this._ignored.indexOf(t)!==-1&&this._ignored.splice(this._ignored.indexOf(t),1),this._ignored.length===0&&(this._state=li,this._waitingRelease=!1)}_hasDetectedGesture(){return!(this._state===ge||this._state&this._state-1||this._state&(vs|ys|ks)&&this._tracked.some(t=>t.active))}_startLongpressTimeout(){this._stopLongpressTimeout(),this._longpressTimeoutId=setTimeout(()=>this._longpressTimeout(),Ca)}_stopLongpressTimeout(){clearTimeout(this._longpressTimeoutId),this._longpressTimeoutId=null}_longpressTimeout(){if(this._hasDetectedGesture())throw new Error("A longpress gesture failed, conflict with a different gesture");this._state=hi,this._pushEvent("gesturestart")}_startTwoTouchTimeout(){this._stopTwoTouchTimeout(),this._twoTouchTimeoutId=setTimeout(()=>this._twoTouchTimeout(),Ka)}_stopTwoTouchTimeout(){clearTimeout(this._twoTouchTimeoutId),this._twoTouchTimeoutId=null}_isTwoTouchTimeoutRunning(){return this._twoTouchTimeoutId!==null}_twoTouchTimeout(){if(this._tracked.length===0)throw new Error("A pinch or two drag gesture failed, no tracked touches");let t=this._getAverageMovement(),e=Math.abs(t.x),s=Math.abs(t.y),n=this._getAverageDistance(),r=Math.abs(Math.hypot(n.first.x,n.first.y)-Math.hypot(n.last.x,n.last.y));s<r&&e<r?this._state=Ye:this._state=Ze,this._pushEvent("gesturestart"),this._pushEvent("gesturemove")}_pushEvent(t){let e={type:this._stateToGesture(this._state)},s=this._getPosition(),n=s.last;switch(t==="gesturestart"&&(n=s.first),this._state){case Ze:case Ye:n=s.first;break}if(e.clientX=n.x,e.clientY=n.y,this._state===Ye){let a=this._getAverageDistance();t==="gesturestart"?(e.magnitudeX=a.first.x,e.magnitudeY=a.first.y):(e.magnitudeX=a.last.x,e.magnitudeY=a.last.y)}else if(this._state===Ze)if(t==="gesturestart")e.magnitudeX=0,e.magnitudeY=0;else{let a=this._getAverageMovement();e.magnitudeX=a.x,e.magnitudeY=a.y}let r=new CustomEvent(t,{detail:e});this._target.dispatchEvent(r)}_stateToGesture(t){switch(t){case vs:return"onetap";case ys:return"twotap";case ks:return"threetap";case Ss:return"drag";case hi:return"longpress";case Ze:return"twodrag";case Ye:return"pinch"}throw new Error("Unknown gesture state: "+t)}_getPosition(){if(this._tracked.length===0)throw new Error("Failed to get gesture position, no tracked touches");let t=this._tracked.length,e=0,s=0,n=0,r=0;for(let a=0;a<this._tracked.length;a++)e+=this._tracked[a].firstX,s+=this._tracked[a].firstY,n+=this._tracked[a].lastX,r+=this._tracked[a].lastY;return{first:{x:e/t,y:s/t},last:{x:n/t,y:r/t}}}_getAverageMovement(){if(this._tracked.length===0)throw new Error("Failed to get gesture movement, no tracked touches");let t,e;t=e=0;let s=this._tracked.length;for(let n=0;n<this._tracked.length;n++)t+=this._tracked[n].lastX-this._tracked[n].firstX,e+=this._tracked[n].lastY-this._tracked[n].firstY;return{x:t/s,y:e/s}}_getAverageDistance(){if(this._tracked.length===0)throw new Error("Failed to get gesture distance, no tracked touches");let t=this._tracked[0],e=this._tracked[this._tracked.length-1],s=Math.abs(e.firstX-t.firstX),n=Math.abs(e.firstY-t.firstY),r=Math.abs(e.lastX-t.lastX),a=Math.abs(e.lastY-t.lastY);return{first:{x:s,y:n},last:{x:r,y:a}}}}const qe=!Yn||qs;class Xa{constructor(){this._target=null,this._canvas=document.createElement("canvas"),qe&&(this._canvas.style.position="fixed",this._canvas.style.zIndex="65535",this._canvas.style.pointerEvents="none",this._canvas.style.userSelect="none",this._canvas.style.WebkitUserSelect="none",this._canvas.style.visibility="hidden"),this._position={x:0,y:0},this._hotSpot={x:0,y:0},this._eventHandlers={mouseover:this._handleMouseOver.bind(this),mouseleave:this._handleMouseLeave.bind(this),mousemove:this._handleMouseMove.bind(this),mouseup:this._handleMouseUp.bind(this)}}attach(t){if(this._target&&this.detach(),this._target=t,qe){document.body.appendChild(this._canvas);const e={capture:!0,passive:!0};this._target.addEventListener("mouseover",this._eventHandlers.mouseover,e),this._target.addEventListener("mouseleave",this._eventHandlers.mouseleave,e),this._target.addEventListener("mousemove",this._eventHandlers.mousemove,e),this._target.addEventListener("mouseup",this._eventHandlers.mouseup,e)}this.clear()}detach(){if(this._target){if(qe){const t={capture:!0,passive:!0};this._target.removeEventListener("mouseover",this._eventHandlers.mouseover,t),this._target.removeEventListener("mouseleave",this._eventHandlers.mouseleave,t),this._target.removeEventListener("mousemove",this._eventHandlers.mousemove,t),this._target.removeEventListener("mouseup",this._eventHandlers.mouseup,t),document.contains(this._canvas)&&document.body.removeChild(this._canvas)}this._target=null}}change(t,e,s,n,r){if(n===0||r===0){this.clear();return}this._position.x=this._position.x+this._hotSpot.x-e,this._position.y=this._position.y+this._hotSpot.y-s,this._hotSpot.x=e,this._hotSpot.y=s;let a=this._canvas.getContext("2d");this._canvas.width=n,this._canvas.height=r;let h=new ImageData(new Uint8ClampedArray(t),n,r);if(a.clearRect(0,0,n,r),a.putImageData(h,0,0),qe)this._updatePosition();else{let c=this._canvas.toDataURL();this._target.style.cursor="url("+c+")"+e+" "+s+", default"}}clear(){this._target.style.cursor="none",this._canvas.width=0,this._canvas.height=0,this._position.x=this._position.x+this._hotSpot.x,this._position.y=this._position.y+this._hotSpot.y,this._hotSpot.x=0,this._hotSpot.y=0}move(t,e){if(!qe)return;window.visualViewport?(this._position.x=t+window.visualViewport.offsetLeft,this._position.y=e+window.visualViewport.offsetTop):(this._position.x=t,this._position.y=e),this._updatePosition();let s=document.elementFromPoint(t,e);this._updateVisibility(s)}_handleMouseOver(t){this._handleMouseMove(t)}_handleMouseLeave(t){this._updateVisibility(t.relatedTarget)}_handleMouseMove(t){this._updateVisibility(t.target),this._position.x=t.clientX-this._hotSpot.x,this._position.y=t.clientY-this._hotSpot.y,this._updatePosition()}_handleMouseUp(t){let e=document.elementFromPoint(t.clientX,t.clientY);this._updateVisibility(e),this._captureIsActive()&&window.setTimeout(()=>{this._target&&(e=document.elementFromPoint(t.clientX,t.clientY),this._updateVisibility(e))},0)}_showCursor(){this._canvas.style.visibility==="hidden"&&(this._canvas.style.visibility="")}_hideCursor(){this._canvas.style.visibility!=="hidden"&&(this._canvas.style.visibility="hidden")}_shouldShowCursor(t){return t?t===this._target?!0:!(!this._target.contains(t)||window.getComputedStyle(t).cursor!=="none"):!1}_updateVisibility(t){this._captureIsActive()&&(t=document.captureElement),this._shouldShowCursor(t)?this._showCursor():this._hideCursor()}_updatePosition(){this._canvas.style.left=this._position.x+"px",this._canvas.style.top=this._position.y+"px"}_captureIsActive(){return document.captureElement&&document.documentElement.contains(document.captureElement)}}const ci=40*1024*1024,vt={CONNECTING:"connecting",OPEN:"open",CLOSING:"closing",CLOSED:"closed"},yt={CONNECTING:[WebSocket.CONNECTING,vt.CONNECTING],OPEN:[WebSocket.OPEN,vt.OPEN],CLOSING:[WebSocket.CLOSING,vt.CLOSING],CLOSED:[WebSocket.CLOSED,vt.CLOSED]},Ks=["send","close","binaryType","onerror","onmessage","onopen","protocol","readyState"];class Fa{constructor(){this._websocket=null,this._rQi=0,this._rQlen=0,this._rQbufferSize=1024*1024*4,this._rQ=null,this._sQbufferSize=1024*10,this._sQlen=0,this._sQ=null,this._eventHandlers={message:()=>{},open:()=>{},close:()=>{},error:()=>{}}}get readyState(){let t;return this._websocket===null?"unused":(t=this._websocket.readyState,yt.CONNECTING.includes(t)?"connecting":yt.OPEN.includes(t)?"open":yt.CLOSING.includes(t)?"closing":yt.CLOSED.includes(t)?"closed":"unknown")}rQpeek8(){return this._rQ[this._rQi]}rQskipBytes(t){this._rQi+=t}rQshift8(){return this._rQshift(1)}rQshift16(){return this._rQshift(2)}rQshift32(){return this._rQshift(4)}_rQshift(t){let e=0;for(let s=t-1;s>=0;s--)e+=this._rQ[this._rQi++]<<s*8;return e>>>0}rQlen(){return this._rQlen-this._rQi}rQshiftStr(t){let e="";for(let s=0;s<t;s+=4096){let n=this.rQshiftBytes(Math.min(4096,t-s),!1);e+=String.fromCharCode.apply(null,n)}return e}rQshiftBytes(t,e=!0){return this._rQi+=t,e?this._rQ.slice(this._rQi-t,this._rQi):this._rQ.subarray(this._rQi-t,this._rQi)}rQshiftTo(t,e){t.set(new Uint8Array(this._rQ.buffer,this._rQi,e)),this._rQi+=e}rQpeekBytes(t,e=!0){return e?this._rQ.slice(this._rQi,this._rQi+t):this._rQ.subarray(this._rQi,this._rQi+t)}rQwait(t,e,s){if(this._rQlen-this._rQi<e){if(s){if(this._rQi<s)throw new Error("rQwait cannot backup "+s+" bytes");this._rQi-=s}return!0}return!1}sQpush8(t){this._sQensureSpace(1),this._sQ[this._sQlen++]=t}sQpush16(t){this._sQensureSpace(2),this._sQ[this._sQlen++]=t>>8&255,this._sQ[this._sQlen++]=t>>0&255}sQpush32(t){this._sQensureSpace(4),this._sQ[this._sQlen++]=t>>24&255,this._sQ[this._sQlen++]=t>>16&255,this._sQ[this._sQlen++]=t>>8&255,this._sQ[this._sQlen++]=t>>0&255}sQpushString(t){let e=t.split("").map(s=>s.charCodeAt(0));this.sQpushBytes(new Uint8Array(e))}sQpushBytes(t){for(let e=0;e<t.length;){this._sQensureSpace(1);let s=this._sQbufferSize-this._sQlen;s>t.length-e&&(s=t.length-e),this._sQ.set(t.subarray(e,e+s),this._sQlen),this._sQlen+=s,e+=s}}flush(){this._sQlen>0&&this.readyState==="open"&&(this._websocket.send(new Uint8Array(this._sQ.buffer,0,this._sQlen)),this._sQlen=0)}_sQensureSpace(t){this._sQbufferSize-this._sQlen<t&&this.flush()}off(t){this._eventHandlers[t]=()=>{}}on(t,e){this._eventHandlers[t]=e}_allocateBuffers(){this._rQ=new Uint8Array(this._rQbufferSize),this._sQ=new Uint8Array(this._sQbufferSize)}init(){this._allocateBuffers(),this._rQi=0,this._websocket=null}open(t,e){this.attach(new WebSocket(t,e))}attach(t){this.init();const e=[...Object.keys(t),...Object.getOwnPropertyNames(Object.getPrototypeOf(t))];for(let s=0;s<Ks.length;s++){const n=Ks[s];if(e.indexOf(n)<0)throw new Error("Raw channel missing property: "+n)}this._websocket=t,this._websocket.binaryType="arraybuffer",this._websocket.onmessage=this._recvMessage.bind(this),this._websocket.onopen=()=>{Q(">> WebSock.onopen"),this._websocket.protocol&&re("Server choose sub-protocol: "+this._websocket.protocol),this._eventHandlers.open(),Q("<< WebSock.onopen")},this._websocket.onclose=s=>{Q(">> WebSock.onclose"),this._eventHandlers.close(s),Q("<< WebSock.onclose")},this._websocket.onerror=s=>{Q(">> WebSock.onerror: "+s),this._eventHandlers.error(s),Q("<< WebSock.onerror: "+s)}}close(){this._websocket&&((this.readyState==="connecting"||this.readyState==="open")&&(re("Closing WebSocket connection"),this._websocket.close()),this._websocket.onmessage=()=>{})}_expandCompactRQ(t){const e=(this._rQlen-this._rQi+t)*8,s=this._rQbufferSize<e;if(s&&(this._rQbufferSize=Math.max(this._rQbufferSize*2,e)),this._rQbufferSize>ci&&(this._rQbufferSize=ci,this._rQbufferSize-(this._rQlen-this._rQi)<t))throw new Error("Receive queue buffer exceeded "+ci+" bytes, and the new message could not fit");if(s){const n=this._rQ.buffer;this._rQ=new Uint8Array(this._rQbufferSize),this._rQ.set(new Uint8Array(n,this._rQi,this._rQlen-this._rQi))}else this._rQ.copyWithin(0,this._rQi,this._rQlen);this._rQlen=this._rQlen-this._rQi,this._rQi=0}_recvMessage(t){this._rQlen==this._rQi&&(this._rQlen=0,this._rQi=0);const e=new Uint8Array(t.data);e.length>this._rQbufferSize-this._rQlen&&this._expandCompactRQ(e.length),this._rQ.set(e,this._rQlen),this._rQlen+=e.length,this._rQlen-this._rQi>0?this._eventHandlers.message():Q("Ignoring empty message")}}const Ma={Again:57349,AltLeft:56,AltRight:57400,ArrowDown:57424,ArrowLeft:57419,ArrowRight:57421,ArrowUp:57416,AudioVolumeDown:57390,AudioVolumeMute:57376,AudioVolumeUp:57392,Backquote:41,Backslash:43,Backspace:14,BracketLeft:26,BracketRight:27,BrowserBack:57450,BrowserFavorites:57446,BrowserForward:57449,BrowserHome:57394,BrowserRefresh:57447,BrowserSearch:57445,BrowserStop:57448,CapsLock:58,Comma:51,ContextMenu:57437,ControlLeft:29,ControlRight:57373,Convert:121,Copy:57464,Cut:57404,Delete:57427,Digit0:11,Digit1:2,Digit2:3,Digit3:4,Digit4:5,Digit5:6,Digit6:7,Digit7:8,Digit8:9,Digit9:10,Eject:57469,End:57423,Enter:28,Equal:13,Escape:1,F1:59,F10:68,F11:87,F12:88,F13:93,F14:94,F15:95,F16:85,F17:57347,F18:57463,F19:57348,F2:60,F20:90,F21:116,F22:57465,F23:109,F24:111,F3:61,F4:62,F5:63,F6:64,F7:65,F8:66,F9:67,Find:57409,Help:57461,Hiragana:119,Home:57415,Insert:57426,IntlBackslash:86,IntlRo:115,IntlYen:125,KanaMode:112,Katakana:120,KeyA:30,KeyB:48,KeyC:46,KeyD:32,KeyE:18,KeyF:33,KeyG:34,KeyH:35,KeyI:23,KeyJ:36,KeyK:37,KeyL:38,KeyM:50,KeyN:49,KeyO:24,KeyP:25,KeyQ:16,KeyR:19,KeyS:31,KeyT:20,KeyU:22,KeyV:47,KeyW:17,KeyX:45,KeyY:21,KeyZ:44,Lang1:114,Lang2:113,Lang3:120,Lang4:119,Lang5:118,LaunchApp1:57451,LaunchApp2:57377,LaunchMail:57452,MediaPlayPause:57378,MediaSelect:57453,MediaStop:57380,MediaTrackNext:57369,MediaTrackPrevious:57360,MetaLeft:57435,MetaRight:57436,Minus:12,NonConvert:123,NumLock:69,Numpad0:82,Numpad1:79,Numpad2:80,Numpad3:81,Numpad4:75,Numpad5:76,Numpad6:77,Numpad7:71,Numpad8:72,Numpad9:73,NumpadAdd:78,NumpadComma:126,NumpadDecimal:83,NumpadDivide:57397,NumpadEnter:57372,NumpadEqual:89,NumpadMultiply:55,NumpadParenLeft:57462,NumpadParenRight:57467,NumpadSubtract:74,Open:100,PageDown:57425,PageUp:57417,Paste:101,Pause:57414,Period:52,Power:57438,PrintScreen:84,Props:57350,Quote:40,ScrollLock:70,Semicolon:39,ShiftLeft:42,ShiftRight:54,Slash:53,Sleep:57439,Space:57,Suspend:57381,Tab:15,Undo:57351,WakeUp:57443},L={encodingRaw:0,encodingCopyRect:1,encodingRRE:2,encodingHextile:5,encodingZlib:6,encodingTight:7,encodingZRLE:16,encodingTightPNG:-260,encodingJPEG:21,encodingH264:50,pseudoEncodingQualityLevel0:-32,pseudoEncodingDesktopSize:-223,pseudoEncodingLastRect:-224,pseudoEncodingCursor:-239,pseudoEncodingQEMUExtendedKeyEvent:-258,pseudoEncodingQEMULedEvent:-261,pseudoEncodingDesktopName:-307,pseudoEncodingExtendedDesktopSize:-308,pseudoEncodingXvp:-309,pseudoEncodingFence:-312,pseudoEncodingContinuousUpdates:-313,pseudoEncodingExtendedMouseButtons:-316,pseudoEncodingCompressLevel0:-256,pseudoEncodingVMwareCursor:1464686180,pseudoEncodingExtendedClipboard:3231835598};class ki{constructor(){this._key=null}get algorithm(){return{name:"AES-ECB"}}static async importKey(t,e,s,n){const r=new ki;return await r._importKey(t,s,n),r}async _importKey(t,e,s){this._key=await window.crypto.subtle.importKey("raw",t,{name:"AES-CBC"},e,s)}async encrypt(t,e){const s=new Uint8Array(e);if(s.length%16!==0||this._key===null)return null;const n=s.length/16;for(let r=0;r<n;r++){const a=new Uint8Array(await window.crypto.subtle.encrypt({name:"AES-CBC",iv:new Uint8Array(16)},this._key,s.slice(r*16,r*16+16))).slice(0,16);s.set(a,r*16)}return s}}class Si{constructor(){this._rawKey=null,this._ctrKey=null,this._cbcKey=null,this._zeroBlock=new Uint8Array(16),this._prefixBlock0=this._zeroBlock,this._prefixBlock1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]),this._prefixBlock2=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2])}get algorithm(){return{name:"AES-EAX"}}async _encryptBlock(t){const e=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,t);return new Uint8Array(e).slice(0,16)}async _initCMAC(){const t=await this._encryptBlock(this._zeroBlock),e=new Uint8Array(16),s=t[0]>>>6;for(let r=0;r<15;r++)e[r]=t[r+1]>>6|t[r]<<2,t[r]=t[r+1]>>7|t[r]<<1;const n=[0,135,14,137];e[14]^=s>>>1,e[15]=t[15]<<2^n[s],t[15]=t[15]<<1^n[s>>1],this._k1=t,this._k2=e}async _encryptCTR(t,e){const s=await window.crypto.subtle.encrypt({name:"AES-CTR",counter:e,length:128},this._ctrKey,t);return new Uint8Array(s)}async _decryptCTR(t,e){const s=await window.crypto.subtle.decrypt({name:"AES-CTR",counter:e,length:128},this._ctrKey,t);return new Uint8Array(s)}async _computeCMAC(t,e){if(e.length!==16)return null;const s=Math.floor(t.length/16),n=Math.ceil(t.length/16),r=t.length-s*16,a=new Uint8Array((n+1)*16);if(a.set(e),a.set(t,16),r===0)for(let o=0;o<16;o++)a[s*16+o]^=this._k1[o];else{a[(s+1)*16+r]=128;for(let o=0;o<16;o++)a[(s+1)*16+o]^=this._k2[o]}let h=await window.crypto.subtle.encrypt({name:"AES-CBC",iv:this._zeroBlock},this._cbcKey,a);return h=new Uint8Array(h),h.slice(h.length-32,h.length-16)}static async importKey(t,e,s,n){const r=new Si;return await r._importKey(t),r}async _importKey(t){this._rawKey=t,this._ctrKey=await window.crypto.subtle.importKey("raw",t,{name:"AES-CTR"},!1,["encrypt","decrypt"]),this._cbcKey=await window.crypto.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt"]),await this._initCMAC()}async encrypt(t,e){const s=t.additionalData,n=t.iv,r=await this._computeCMAC(n,this._prefixBlock0),a=await this._encryptCTR(e,r),h=await this._computeCMAC(s,this._prefixBlock1),c=await this._computeCMAC(a,this._prefixBlock2);for(let l=0;l<16;l++)c[l]^=r[l]^h[l];const o=new Uint8Array(16+a.length);return o.set(a),o.set(c,a.length),o}async decrypt(t,e){const s=e.slice(0,e.length-16),n=t.additionalData,r=t.iv,a=e.slice(e.length-16),h=await this._computeCMAC(r,this._prefixBlock0),c=await this._computeCMAC(n,this._prefixBlock1),o=await this._computeCMAC(s,this._prefixBlock2);for(let _=0;_<16;_++)o[_]^=h[_]^c[_];if(o.length!==a.length)return null;for(let _=0;_<a.length;_++)if(o[_]!==a[_])return null;return await this._decryptCTR(s,h)}}const As=[13,16,10,23,0,4,2,27,14,5,20,9,22,18,11,3,25,7,15,6,26,19,12,1,40,51,30,36,46,54,29,39,50,44,32,47,43,48,38,55,33,52,45,41,49,35,28,31],Ta=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=0;let p,g,v,b,w,y;p=65536;g=1<<24;v=p|g;b=4;w=1024;y=b|w;const Xs=[v|w,d|d,p|d,v|y,v|b,p|y,d|b,p|d,d|w,v|w,v|y,d|w,g|y,v|b,g|d,d|b,d|y,g|w,g|w,p|w,p|w,v|d,v|d,g|y,p|b,g|b,g|b,p|b,d|d,d|y,p|y,g|d,p|d,v|y,d|b,v|d,v|w,g|d,g|d,d|w,v|b,p|d,p|w,g|b,d|w,d|b,g|y,p|y,v|y,p|b,v|d,g|y,g|b,d|y,p|y,v|w,d|y,g|w,g|w,d|d,p|b,p|w,d|d,v|b];p=1<<20;g=1<<31;v=p|g;b=32;w=32768;y=b|w;const Fs=[v|y,g|w,d|w,p|y,p|d,d|b,v|b,g|y,g|b,v|y,v|w,g|d,g|w,p|d,d|b,v|b,p|w,p|b,g|y,d|d,g|d,d|w,p|y,v|d,p|b,g|b,d|d,p|w,d|y,v|w,v|d,d|y,d|d,p|y,v|b,p|d,g|y,v|d,v|w,d|w,v|d,g|w,d|b,v|y,p|y,d|b,d|w,g|d,d|y,v|w,p|d,g|b,p|b,g|y,g|b,p|b,p|w,d|d,g|w,d|y,g|d,v|b,v|y,p|w];p=1<<17;g=1<<27;v=p|g;b=8;w=512;y=b|w;const Ms=[d|y,v|w,d|d,v|b,g|w,d|d,p|y,g|w,p|b,g|b,g|b,p|d,v|y,p|b,v|d,d|y,g|d,d|b,v|w,d|w,p|w,v|d,v|b,p|y,g|y,p|w,p|d,g|y,d|b,v|y,d|w,g|d,v|w,g|d,p|b,d|y,p|d,v|w,g|w,d|d,d|w,p|b,v|y,g|w,g|b,d|w,d|d,v|b,g|y,p|d,g|d,v|y,d|b,p|y,p|w,g|b,v|d,g|y,d|y,v|d,p|y,d|b,v|b,p|w];p=8192;g=1<<23;v=p|g;b=1;w=128;y=b|w;const Ts=[v|b,p|y,p|y,d|w,v|w,g|y,g|b,p|b,d|d,v|d,v|d,v|y,d|y,d|d,g|w,g|b,d|b,p|d,g|d,v|b,d|w,g|d,p|b,p|w,g|y,d|b,p|w,g|w,p|d,v|w,v|y,d|y,g|w,g|b,v|d,v|y,d|y,d|d,d|d,v|d,p|w,g|w,g|y,d|b,v|b,p|y,p|y,d|w,v|y,d|y,d|b,p|d,g|b,p|b,v|w,g|y,p|b,p|w,g|d,v|b,d|w,g|d,p|d,v|w];p=1<<25;g=1<<30;v=p|g;b=256;w=1<<19;y=b|w;const Qs=[d|b,p|y,p|w,v|b,d|w,d|b,g|d,p|w,g|y,d|w,p|b,g|y,v|b,v|w,d|y,g|d,p|d,g|w,g|w,d|d,g|b,v|y,v|y,p|b,v|w,g|b,d|d,v|d,p|y,p|d,v|d,d|y,d|w,v|b,d|b,p|d,g|d,p|w,v|b,g|y,p|b,g|d,v|w,p|y,g|y,d|b,p|d,v|w,v|y,d|y,v|d,v|y,p|w,d|d,g|w,v|d,d|y,p|b,g|b,d|w,d|d,g|w,p|y,g|b];p=1<<22;g=1<<29;v=p|g;b=16;w=16384;y=b|w;const Ls=[g|b,v|d,d|w,v|y,v|d,d|b,v|y,p|d,g|w,p|y,p|d,g|b,p|b,g|w,g|d,d|y,d|d,p|b,g|y,d|w,p|w,g|y,d|b,v|b,v|b,d|d,p|y,v|w,d|y,p|w,v|w,g|d,g|w,d|b,v|b,p|w,v|y,p|d,d|y,g|b,p|d,g|w,g|d,d|y,g|b,v|y,p|w,v|d,p|y,v|w,d|d,v|b,d|b,d|w,v|d,p|y,d|w,p|b,g|y,d|d,v|w,g|d,p|b,g|y];p=1<<21;g=1<<26;v=p|g;b=2;w=2048;y=b|w;const Rs=[p|d,v|b,g|y,d|d,d|w,g|y,p|y,v|w,v|y,p|d,d|d,g|b,d|b,g|d,v|b,d|y,g|w,p|y,p|b,g|w,g|b,v|d,v|w,p|b,v|d,d|w,d|y,v|y,p|w,d|b,g|d,p|w,g|d,p|w,p|d,g|y,g|y,v|b,v|b,d|b,p|b,g|d,g|w,p|d,v|w,d|y,p|y,v|w,d|y,g|b,v|y,v|d,p|w,d|d,d|b,v|y,d|d,p|y,v|d,d|w,g|b,g|w,d|w,p|b];p=1<<18;g=1<<28;v=p|g;b=64;w=4096;y=b|w;const Bs=[g|y,d|w,p|d,v|y,g|d,g|y,d|b,g|d,p|b,v|d,v|y,p|w,v|w,p|y,d|w,d|b,v|d,g|b,g|w,d|y,p|w,p|b,v|b,v|w,d|y,d|d,d|d,v|b,g|b,g|w,p|y,p|d,p|y,p|d,v|w,d|w,d|b,v|b,d|w,p|y,g|w,d|b,g|b,v|d,v|b,g|d,p|d,g|y,d|d,v|y,p|b,g|b,v|d,g|w,g|y,d|d,v|y,p|w,p|w,d|y,d|y,p|b,g|d,v|w];class Xn{constructor(t){this.keys=[];const e=[],s=[],n=[];for(let r=0,a=56;r<56;++r,a-=8){a+=a<-5?65:a<-3?31:a<-1?63:a===27?35:0;const h=a&7;e[r]=(t[a>>>3]&1<<h)!==0?1:0}for(let r=0;r<16;++r){const a=r<<1,h=a+1;n[a]=n[h]=0;for(let c=28;c<59;c+=28)for(let o=c-28;o<c;++o){const l=o+Ta[r];s[o]=l<c?e[l]:e[l-28]}for(let c=0;c<24;++c)s[As[c]]!==0&&(n[a]|=1<<23-c),s[As[c+24]]!==0&&(n[h]|=1<<23-c)}for(let r=0,a=0,h=0;r<16;++r){const c=n[a++],o=n[a++];this.keys[h]=(c&16515072)<<6,this.keys[h]|=(c&4032)<<10,this.keys[h]|=(o&16515072)>>>10,this.keys[h]|=(o&4032)>>>6,++h,this.keys[h]=(c&258048)<<12,this.keys[h]|=(c&63)<<16,this.keys[h]|=(o&258048)>>>4,this.keys[h]|=o&63,++h}}enc8(t){const e=t.slice();let s=0,n,r,a;n=e[s++]<<24|e[s++]<<16|e[s++]<<8|e[s++],r=e[s++]<<24|e[s++]<<16|e[s++]<<8|e[s++],a=(n>>>4^r)&252645135,r^=a,n^=a<<4,a=(n>>>16^r)&65535,r^=a,n^=a<<16,a=(r>>>2^n)&858993459,n^=a,r^=a<<2,a=(r>>>8^n)&16711935,n^=a,r^=a<<8,r=r<<1|r>>>31&1,a=(n^r)&2863311530,n^=a,r^=a,n=n<<1|n>>>31&1;for(let h=0,c=0;h<8;++h){a=r<<28|r>>>4,a^=this.keys[c++];let o=Rs[a&63];o|=Qs[a>>>8&63],o|=Ms[a>>>16&63],o|=Xs[a>>>24&63],a=r^this.keys[c++],o|=Bs[a&63],o|=Ls[a>>>8&63],o|=Ts[a>>>16&63],o|=Fs[a>>>24&63],n^=o,a=n<<28|n>>>4,a^=this.keys[c++],o=Rs[a&63],o|=Qs[a>>>8&63],o|=Ms[a>>>16&63],o|=Xs[a>>>24&63],a=n^this.keys[c++],o|=Bs[a&63],o|=Ls[a>>>8&63],o|=Ts[a>>>16&63],o|=Fs[a>>>24&63],r^=o}for(r=r<<31|r>>>1,a=(n^r)&2863311530,n^=a,r^=a,n=n<<31|n>>>1,a=(n>>>8^r)&16711935,r^=a,n^=a<<8,a=(n>>>2^r)&858993459,r^=a,n^=a<<2,a=(r>>>16^n)&65535,n^=a,r^=a<<16,a=(r>>>4^n)&252645135,n^=a,r^=a<<4,a=[r,n],s=0;s<8;s++)e[s]=(a[s>>>2]>>>8*(3-s%4))%256,e[s]<0&&(e[s]+=256);return e}}class Ei{constructor(){this._cipher=null}get algorithm(){return{name:"DES-ECB"}}static importKey(t,e,s,n){const r=new Ei;return r._importKey(t),r}_importKey(t,e,s){this._cipher=new Xn(t)}encrypt(t,e){const s=new Uint8Array(e);if(s.length%8!==0||this._cipher===null)return null;const n=s.length/8;for(let r=0;r<n;r++)s.set(this._cipher.enc8(s.slice(r*8,r*8+8)),r*8);return s}}class Ci{constructor(){this._cipher=null}get algorithm(){return{name:"DES-CBC"}}static importKey(t,e,s,n){const r=new Ci;return r._importKey(t),r}_importKey(t){this._cipher=new Xn(t)}encrypt(t,e){const s=new Uint8Array(e);let n=new Uint8Array(t.iv);if(s.length%8!==0||this._cipher===null)return null;const r=s.length/8;for(let a=0;a<r;a++){for(let h=0;h<8;h++)n[h]^=e[a*8+h];n=this._cipher.enc8(n),s.set(n,a*8)}return s}}function Rt(i,t,e){let s=1n;for(i=i%e;t>0n;)(t&1n)===1n&&(s=s*i%e),t=t>>1n,i=i*i%e;return s}function Bt(i,t=0){let e=i.toString(16);t===0&&(t=Math.ceil(e.length/2)),e=e.padStart(t*2,"0");const s=e.length/2,n=new Uint8Array(s);for(let r=0;r<s;r++)n[r]=parseInt(e.slice(r*2,r*2+2),16);return n}function ue(i){let t="0x";for(let e=0;e<i.length;e++)t+=i[e].toString(16).padStart(2,"0");return BigInt(t)}class Dt{constructor(){this._keyLength=0,this._keyBytes=0,this._n=null,this._e=null,this._d=null,this._nBigInt=null,this._eBigInt=null,this._dBigInt=null,this._extractable=!1}get algorithm(){return{name:"RSA-PKCS1-v1_5"}}_base64urlDecode(t){return t=t.replace(/-/g,"+").replace(/_/g,"/"),t=t.padEnd(Math.ceil(t.length/4)*4,"="),bi.decode(t)}_padArray(t,e){const s=new Uint8Array(e);return s.set(t,e-t.length),s}static async generateKey(t,e,s){const n=new Dt;return await n._generateKey(t,e),{privateKey:n}}async _generateKey(t,e){this._keyLength=t.modulusLength,this._keyBytes=Math.ceil(this._keyLength/8);const s=await window.crypto.subtle.generateKey({name:"RSA-OAEP",modulusLength:t.modulusLength,publicExponent:t.publicExponent,hash:{name:"SHA-256"}},!0,["encrypt","decrypt"]),n=await window.crypto.subtle.exportKey("jwk",s.privateKey);this._n=this._padArray(this._base64urlDecode(n.n),this._keyBytes),this._nBigInt=ue(this._n),this._e=this._padArray(this._base64urlDecode(n.e),this._keyBytes),this._eBigInt=ue(this._e),this._d=this._padArray(this._base64urlDecode(n.d),this._keyBytes),this._dBigInt=ue(this._d),this._extractable=e}static async importKey(t,e,s,n){if(n.length!==1||n[0]!=="encrypt")throw new Error("only support importing RSA public key");const r=new Dt;return await r._importKey(t,s),r}async _importKey(t,e){const s=t.n,n=t.e;if(s.length!==n.length)throw new Error("the sizes of modulus and public exponent do not match");this._keyBytes=s.length,this._keyLength=this._keyBytes*8,this._n=new Uint8Array(this._keyBytes),this._e=new Uint8Array(this._keyBytes),this._n.set(s),this._e.set(n),this._nBigInt=ue(this._n),this._eBigInt=ue(this._e),this._extractable=e}async encrypt(t,e){if(e.length>this._keyBytes-11)return null;const s=new Uint8Array(this._keyBytes-e.length-3);window.crypto.getRandomValues(s);for(let h=0;h<s.length;h++)s[h]=Math.floor(s[h]*254/255+1);const n=new Uint8Array(this._keyBytes);n[1]=2,n.set(s,2),n.set(e,s.length+3);const r=ue(n),a=Rt(r,this._eBigInt,this._nBigInt);return Bt(a,this._keyBytes)}async decrypt(t,e){if(e.length!==this._keyBytes)return null;const s=ue(e),n=Rt(s,this._dBigInt,this._nBigInt),r=Bt(n,this._keyBytes);if(r[0]!==0||r[1]!==2)return null;let a=2;for(;a<r.length&&r[a]!==0;a++);return a===r.length?null:r.slice(a+1,r.length)}async exportKey(){if(!this._extractable)throw new Error("key is not extractable");return{n:this._n,e:this._e,d:this._d}}}class Qa{constructor(t){this._key=t}get algorithm(){return{name:"DH"}}exportKey(){return this._key}}class Ki{constructor(){this._g=null,this._p=null,this._gBigInt=null,this._pBigInt=null,this._privateKey=null}get algorithm(){return{name:"DH"}}static generateKey(t,e){const s=new Ki;return s._generateKey(t),{privateKey:s,publicKey:new Qa(s._publicKey)}}_generateKey(t){const e=t.g,s=t.p;this._keyBytes=s.length,this._gBigInt=ue(e),this._pBigInt=ue(s),this._privateKey=window.crypto.getRandomValues(new Uint8Array(this._keyBytes)),this._privateKeyBigInt=ue(this._privateKey),this._publicKey=Bt(Rt(this._gBigInt,this._privateKeyBigInt,this._pBigInt),this._keyBytes)}deriveBits(t,e){const s=Math.ceil(e/8),n=new Uint8Array(t.public),r=s>this._keyBytes?s:this._keyBytes,a=Rt(ue(n),this._privateKeyBigInt,this._pBigInt);return Bt(a,r).slice(0,r)}}async function La(i){let t="";for(let e=0;e<i.length;e++)t+=String.fromCharCode(i[e]);return Ra(Da(Ia(Ba(t),8*t.length)))}function Ra(i){let t=new Uint8Array(i.length);for(let e=0;e<i.length;e++)t[e]=i.charCodeAt(e);return t}function Ba(i){let t=Array(i.length>>2);for(let e=0;e<t.length;e++)t[e]=0;for(let e=0;e<8*i.length;e+=8)t[e>>5]|=(255&i.charCodeAt(e/8))<<e%32;return t}function Da(i){let t="";for(let e=0;e<32*i.length;e+=8)t+=String.fromCharCode(i[e>>5]>>>e%32&255);return t}function Ia(i,t){i[t>>5]|=128<<t%32,i[14+(t+64>>>9<<4)]=t;let e=1732584193,s=-271733879,n=-1732584194,r=271733878;for(let a=0;a<i.length;a+=16){let h=e,c=s,o=n,l=r;s=ne(s=ne(s=ne(s=ne(s=se(s=se(s=se(s=se(s=ie(s=ie(s=ie(s=ie(s=te(s=te(s=te(s=te(s,n=te(n,r=te(r,e=te(e,s,n,r,i[a+0],7,-680876936),s,n,i[a+1],12,-389564586),e,s,i[a+2],17,606105819),r,e,i[a+3],22,-1044525330),n=te(n,r=te(r,e=te(e,s,n,r,i[a+4],7,-176418897),s,n,i[a+5],12,1200080426),e,s,i[a+6],17,-1473231341),r,e,i[a+7],22,-45705983),n=te(n,r=te(r,e=te(e,s,n,r,i[a+8],7,1770035416),s,n,i[a+9],12,-1958414417),e,s,i[a+10],17,-42063),r,e,i[a+11],22,-1990404162),n=te(n,r=te(r,e=te(e,s,n,r,i[a+12],7,1804603682),s,n,i[a+13],12,-40341101),e,s,i[a+14],17,-1502002290),r,e,i[a+15],22,1236535329),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+1],5,-165796510),s,n,i[a+6],9,-1069501632),e,s,i[a+11],14,643717713),r,e,i[a+0],20,-373897302),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+5],5,-701558691),s,n,i[a+10],9,38016083),e,s,i[a+15],14,-660478335),r,e,i[a+4],20,-405537848),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+9],5,568446438),s,n,i[a+14],9,-1019803690),e,s,i[a+3],14,-187363961),r,e,i[a+8],20,1163531501),n=ie(n,r=ie(r,e=ie(e,s,n,r,i[a+13],5,-1444681467),s,n,i[a+2],9,-51403784),e,s,i[a+7],14,1735328473),r,e,i[a+12],20,-1926607734),n=se(n,r=se(r,e=se(e,s,n,r,i[a+5],4,-378558),s,n,i[a+8],11,-2022574463),e,s,i[a+11],16,1839030562),r,e,i[a+14],23,-35309556),n=se(n,r=se(r,e=se(e,s,n,r,i[a+1],4,-1530992060),s,n,i[a+4],11,1272893353),e,s,i[a+7],16,-155497632),r,e,i[a+10],23,-1094730640),n=se(n,r=se(r,e=se(e,s,n,r,i[a+13],4,681279174),s,n,i[a+0],11,-358537222),e,s,i[a+3],16,-722521979),r,e,i[a+6],23,76029189),n=se(n,r=se(r,e=se(e,s,n,r,i[a+9],4,-640364487),s,n,i[a+12],11,-421815835),e,s,i[a+15],16,530742520),r,e,i[a+2],23,-995338651),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+0],6,-198630844),s,n,i[a+7],10,1126891415),e,s,i[a+14],15,-1416354905),r,e,i[a+5],21,-57434055),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+12],6,1700485571),s,n,i[a+3],10,-1894986606),e,s,i[a+10],15,-1051523),r,e,i[a+1],21,-2054922799),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+8],6,1873313359),s,n,i[a+15],10,-30611744),e,s,i[a+6],15,-1560198380),r,e,i[a+13],21,1309151649),n=ne(n,r=ne(r,e=ne(e,s,n,r,i[a+4],6,-145523070),s,n,i[a+11],10,-1120210379),e,s,i[a+2],15,718787259),r,e,i[a+9],21,-343485551),e=Ae(e,h),s=Ae(s,c),n=Ae(n,o),r=Ae(r,l)}return Array(e,s,n,r)}function Nt(i,t,e,s,n,r){return Ae(Pa(Ae(Ae(t,i),Ae(s,r)),n),e)}function te(i,t,e,s,n,r,a){return Nt(t&e|~t&s,i,t,n,r,a)}function ie(i,t,e,s,n,r,a){return Nt(t&s|e&~s,i,t,n,r,a)}function se(i,t,e,s,n,r,a){return Nt(t^e^s,i,t,n,r,a)}function ne(i,t,e,s,n,r,a){return Nt(e^(t|~s),i,t,n,r,a)}function Ae(i,t){let e=(65535&i)+(65535&t);return(i>>16)+(t>>16)+(e>>16)<<16|65535&e}function Pa(i,t){return i<<t|i>>>32-t}class Ua{constructor(){this._algorithms={"AES-ECB":ki,"AES-EAX":Si,"DES-ECB":Ei,"DES-CBC":Ci,"RSA-PKCS1-v1_5":Dt,DH:Ki,MD5:La}}encrypt(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.encrypt!="function")throw new Error("key does not support encryption");return e.encrypt(t,s)}decrypt(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.decrypt!="function")throw new Error("key does not support encryption");return e.decrypt(t,s)}importKey(t,e,s,n,r){if(t!=="raw")throw new Error("key format is not supported");const a=this._algorithms[s.name];if(typeof a>"u"||typeof a.importKey!="function")throw new Error("algorithm is not supported");return a.importKey(e,s,n,r)}generateKey(t,e,s){const n=this._algorithms[t.name];if(typeof n>"u"||typeof n.generateKey!="function")throw new Error("algorithm is not supported");return n.generateKey(t,e,s)}exportKey(t,e){if(t!=="raw")throw new Error("key format is not supported");if(typeof e.exportKey!="function")throw new Error("key does not support exportKey");return e.exportKey()}digest(t,e){const s=this._algorithms[t];if(typeof s!="function")throw new Error("algorithm is not supported");return s(e)}deriveBits(t,e,s){if(e.algorithm.name!==t.name)throw new Error("algorithm does not match");if(typeof e.deriveBits!="function")throw new Error("key does not support deriveBits");return e.deriveBits(t,s)}}const Z=new Ua;class Ds{constructor(){this._cipher=null,this._counter=new Uint8Array(16)}async setKey(t){this._cipher=await Z.importKey("raw",t,{name:"AES-EAX"},!1,["encrypt, decrypt"])}async makeMessage(t){const e=new Uint8Array([(t.length&65280)>>>8,t.length&255]),s=await Z.encrypt({name:"AES-EAX",iv:this._counter,additionalData:e},this._cipher,t);for(let r=0;r<16&&this._counter[r]++===255;r++);const n=new Uint8Array(t.length+2+16);return n.set(e),n.set(s,2),n}async receiveMessage(t,e){const s=new Uint8Array([(t&65280)>>>8,t&255]),n=await Z.decrypt({name:"AES-EAX",iv:this._counter,additionalData:s},this._cipher,e);for(let r=0;r<16&&this._counter[r]++===255;r++);return n}}class Na extends rn{constructor(t,e){super(),this._hasStarted=!1,this._checkSock=null,this._checkCredentials=null,this._approveServerResolve=null,this._sockReject=null,this._credentialsReject=null,this._approveServerReject=null,this._sock=t,this._getCredentials=e}_waitSockAsync(t){return new Promise((e,s)=>{const n=()=>!this._sock.rQwait("RA2",t);n()?e():(this._checkSock=()=>{n()&&(e(),this._checkSock=null,this._sockReject=null)},this._sockReject=s)})}_waitApproveKeyAsync(){return new Promise((t,e)=>{this._approveServerResolve=t,this._approveServerReject=e})}_waitCredentialsAsync(t){const e=()=>t===1&&this._getCredentials().username!==void 0&&this._getCredentials().password!==void 0?!0:t===2&&this._getCredentials().password!==void 0;return new Promise((s,n)=>{e()?s():(this._checkCredentials=()=>{e()&&(s(),this._checkCredentials=null,this._credentialsReject=null)},this._credentialsReject=n)})}checkInternalEvents(){this._checkSock!==null&&this._checkSock(),this._checkCredentials!==null&&this._checkCredentials()}approveServer(){this._approveServerResolve!==null&&(this._approveServerResolve(),this._approveServerResolve=null)}disconnect(){this._sockReject!==null&&(this._sockReject(new Error("disconnect normally")),this._sockReject=null),this._credentialsReject!==null&&(this._credentialsReject(new Error("disconnect normally")),this._credentialsReject=null),this._approveServerReject!==null&&(this._approveServerReject(new Error("disconnect normally")),this._approveServerReject=null)}async negotiateRA2neAuthAsync(){this._hasStarted=!0,await this._waitSockAsync(4);const t=this._sock.rQpeekBytes(4),e=this._sock.rQshift32();if(e<1024)throw new Error("RA2: server public key is too short: "+e);if(e>8192)throw new Error("RA2: server public key is too long: "+e);const s=Math.ceil(e/8);await this._waitSockAsync(s*2);const n=this._sock.rQshiftBytes(s),r=this._sock.rQshiftBytes(s),a=await Z.importKey("raw",{n,e:r},{name:"RSA-PKCS1-v1_5"},!1,["encrypt"]),h=new Uint8Array(4+s*2);h.set(t),h.set(n,4),h.set(r,4+s);let c=this._waitApproveKeyAsync();this.dispatchEvent(new CustomEvent("serververification",{detail:{type:"RSA",publickey:h}})),await c;const o=2048,l=Math.ceil(o/8),_=(await Z.generateKey({name:"RSA-PKCS1-v1_5",modulusLength:o,publicExponent:new Uint8Array([1,0,1])},!0,["encrypt"])).privateKey,f=await Z.exportKey("raw",_),x=f.n,k=f.e,E=new Uint8Array(4+l*2);E[0]=(o&4278190080)>>>24,E[1]=(o&16711680)>>>16,E[2]=(o&65280)>>>8,E[3]=o&255,E.set(x,4),E.set(k,4+l),this._sock.sQpushBytes(E),this._sock.flush();const F=new Uint8Array(16);window.crypto.getRandomValues(F);const C=await Z.encrypt({name:"RSA-PKCS1-v1_5"},a,F),M=new Uint8Array(2+s);if(M[0]=(s&65280)>>>8,M[1]=s&255,M.set(C,2),this._sock.sQpushBytes(M),this._sock.flush(),await this._waitSockAsync(2),this._sock.rQshift16()!==l)throw new Error("RA2: wrong encrypted message length");const A=this._sock.rQshiftBytes(l),S=await Z.decrypt({name:"RSA-PKCS1-v1_5"},_,A);if(S===null||S.length!==16)throw new Error("RA2: corrupted server encrypted random");let T=new Uint8Array(32),I=new Uint8Array(32);T.set(S),T.set(F,16),I.set(F),I.set(S,16),T=await window.crypto.subtle.digest("SHA-1",T),T=new Uint8Array(T).slice(0,16),I=await window.crypto.subtle.digest("SHA-1",I),I=new Uint8Array(I).slice(0,16);const K=new Ds;await K.setKey(T);const P=new Ds;await P.setKey(I);let R=new Uint8Array(8+s*2+l*2),X=new Uint8Array(8+s*2+l*2);if(R.set(h),R.set(E,4+s*2),X.set(E),X.set(h,4+l*2),R=await window.crypto.subtle.digest("SHA-1",R),X=await window.crypto.subtle.digest("SHA-1",X),R=new Uint8Array(R),X=new Uint8Array(X),this._sock.sQpushBytes(await K.makeMessage(X)),this._sock.flush(),await this._waitSockAsync(38),this._sock.rQshift16()!==20)throw new Error("RA2: wrong server hash");const H=await P.receiveMessage(20,this._sock.rQshiftBytes(36));if(H===null)throw new Error("RA2: failed to authenticate the message");for(let W=0;W<20;W++)if(H[W]!==R[W])throw new Error("RA2: wrong server hash");if(await this._waitSockAsync(19),this._sock.rQshift16()!==1)throw new Error("RA2: wrong subtype");let $=await P.receiveMessage(1,this._sock.rQshiftBytes(17));if($===null)throw new Error("RA2: failed to authenticate the message");$=$[0];let we=this._waitCredentialsAsync($);if($===1)(this._getCredentials().username===void 0||this._getCredentials().password===void 0)&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}}));else if($===2)this._getCredentials().password===void 0&&this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}}));else throw new Error("RA2: wrong subtype");await we;let he;$===1?he=ye(this._getCredentials().username).slice(0,255):he="";const _e=ye(this._getCredentials().password).slice(0,255),le=new Uint8Array(he.length+_e.length+2);le[0]=he.length,le[he.length+1]=_e.length;for(let W=0;W<he.length;W++)le[W+1]=he.charCodeAt(W);for(let W=0;W<_e.length;W++)le[he.length+2+W]=_e.charCodeAt(W);this._sock.sQpushBytes(await K.makeMessage(le)),this._sock.flush()}get hasStarted(){return this._hasStarted}set hasStarted(t){this._hasStarted=t}}class Ha{constructor(){this._lines=0}decodeRect(t,e,s,n,r,a,h){if(s===0||n===0)return!0;this._lines===0&&(this._lines=n);const c=h==8?1:4,o=s*c;for(;this._lines>0;){if(r.rQwait("RAW",o))return!1;const l=e+(n-this._lines);let _=r.rQshiftBytes(o,!1);if(h==8){const f=new Uint8Array(s*4);for(let x=0;x<s;x++)f[x*4+0]=(_[x]>>0&3)*255/3,f[x*4+1]=(_[x]>>2&3)*255/3,f[x*4+2]=(_[x]>>4&3)*255/3,f[x*4+3]=255;_=f}for(let f=0;f<s;f++)_[f*4+3]=255;a.blitImage(t,l,s,1,_,0),this._lines--}return!0}}class za{decodeRect(t,e,s,n,r,a,h){if(r.rQwait("COPYRECT",4))return!1;let c=r.rQshift16(),o=r.rQshift16();return s===0||n===0||a.copyImage(c,o,t,e,s,n),!0}}class Va{constructor(){this._subrects=0}decodeRect(t,e,s,n,r,a,h){if(this._subrects===0){if(r.rQwait("RRE",8))return!1;this._subrects=r.rQshift32();let c=r.rQshiftBytes(4);a.fillRect(t,e,s,n,c)}for(;this._subrects>0;){if(r.rQwait("RRE",12))return!1;let c=r.rQshiftBytes(4),o=r.rQshift16(),l=r.rQshift16(),_=r.rQshift16(),f=r.rQshift16();a.fillRect(t+o,e+l,_,f,c),this._subrects--}return!0}}class Oa{constructor(){this._tiles=0,this._lastsubencoding=0,this._tileBuffer=new Uint8Array(256*4)}decodeRect(t,e,s,n,r,a,h){for(this._tiles===0&&(this._tilesX=Math.ceil(s/16),this._tilesY=Math.ceil(n/16),this._totalTiles=this._tilesX*this._tilesY,this._tiles=this._totalTiles);this._tiles>0;){let c=1;if(r.rQwait("HEXTILE",c))return!1;let o=r.rQpeek8();if(o>30)throw new Error("Illegal hextile subencoding (subencoding: "+o+")");const l=this._totalTiles-this._tiles,_=l%this._tilesX,f=Math.floor(l/this._tilesX),x=t+_*16,k=e+f*16,E=Math.min(16,t+s-x),F=Math.min(16,e+n-k);if(o&1)c+=E*F*4;else if(o&2&&(c+=4),o&4&&(c+=4),o&8){if(c++,r.rQwait("HEXTILE",c))return!1;let C=r.rQpeekBytes(c).at(-1);o&16?c+=C*6:c+=C*2}if(r.rQwait("HEXTILE",c))return!1;if(r.rQshift8(),o===0)this._lastsubencoding&1?Q(" Ignoring blank after RAW"):a.fillRect(x,k,E,F,this._background);else if(o&1){let C=E*F,M=r.rQshiftBytes(C*4,!1);for(let A=0;A<C;A++)M[A*4+3]=255;a.blitImage(x,k,E,F,M,0)}else{if(o&2&&(this._background=new Uint8Array(r.rQshiftBytes(4))),o&4&&(this._foreground=new Uint8Array(r.rQshiftBytes(4))),this._startTile(x,k,E,F,this._background),o&8){let C=r.rQshift8();for(let M=0;M<C;M++){let A;o&16?A=r.rQshiftBytes(4):A=this._foreground;const S=r.rQshift8(),T=S>>4,I=S&15,K=r.rQshift8(),P=(K>>4)+1,R=(K&15)+1;this._subTile(T,I,P,R,A)}}this._finishTile(a)}this._lastsubencoding=o,this._tiles--}return!0}_startTile(t,e,s,n,r){this._tileX=t,this._tileY=e,this._tileW=s,this._tileH=n;const a=r[0],h=r[1],c=r[2],o=this._tileBuffer;for(let l=0;l<s*n*4;l+=4)o[l]=a,o[l+1]=h,o[l+2]=c,o[l+3]=255}_subTile(t,e,s,n,r){const a=r[0],h=r[1],c=r[2],o=t+s,l=e+n,_=this._tileBuffer,f=this._tileW;for(let x=e;x<l;x++)for(let k=t;k<o;k++){const E=(k+x*f)*4;_[E]=a,_[E+1]=h,_[E+2]=c,_[E+3]=255}}_finishTile(t){t.blitImage(this._tileX,this._tileY,this._tileW,this._tileH,this._tileBuffer,0)}}class Ga{constructor(){this._zlib=new It,this._length=0}decodeRect(t,e,s,n,r,a,h){if(s===0||n===0)return!0;if(this._length===0){if(r.rQwait("ZLIB",4))return!1;this._length=r.rQshift32()}if(r.rQwait("ZLIB",this._length))return!1;let c=new Uint8Array(r.rQshiftBytes(this._length,!1));this._length=0,this._zlib.setInput(c),c=this._zlib.inflate(s*n*4),this._zlib.setInput(null);for(let o=0;o<s*n;o++)c[o*4+3]=255;return a.blitImage(t,e,s,n,c,0),!0}}class Fn{constructor(){this._ctl=null,this._filter=null,this._numColors=0,this._palette=new Uint8Array(1024),this._len=0,this._zlibs=[];for(let t=0;t<4;t++)this._zlibs[t]=new It}decodeRect(t,e,s,n,r,a,h){if(this._ctl===null){if(r.rQwait("TIGHT compression-control",1))return!1;this._ctl=r.rQshift8();for(let o=0;o<4;o++)this._ctl>>o&1&&(this._zlibs[o].reset(),re("Reset zlib stream "+o));this._ctl=this._ctl>>4}let c;if(this._ctl===8)c=this._fillRect(t,e,s,n,r,a,h);else if(this._ctl===9)c=this._jpegRect(t,e,s,n,r,a,h);else if(this._ctl===10)c=this._pngRect(t,e,s,n,r,a,h);else if((this._ctl&8)==0)c=this._basicRect(this._ctl,t,e,s,n,r,a,h);else throw new Error("Illegal tight compression received (ctl: "+this._ctl+")");return c&&(this._ctl=null),c}_fillRect(t,e,s,n,r,a,h){if(r.rQwait("TIGHT",3))return!1;let c=r.rQshiftBytes(3);return a.fillRect(t,e,s,n,c,!1),!0}_jpegRect(t,e,s,n,r,a,h){let c=this._readData(r);return c===null?!1:(a.imageRect(t,e,s,n,"image/jpeg",c),!0)}_pngRect(t,e,s,n,r,a,h){throw new Error("PNG received in standard Tight rect")}_basicRect(t,e,s,n,r,a,h,c){if(this._filter===null)if(t&4){if(a.rQwait("TIGHT",1))return!1;this._filter=a.rQshift8()}else this._filter=0;let o=t&3,l;switch(this._filter){case 0:l=this._copyFilter(o,e,s,n,r,a,h,c);break;case 1:l=this._paletteFilter(o,e,s,n,r,a,h,c);break;case 2:l=this._gradientFilter(o,e,s,n,r,a,h,c);break;default:throw new Error("Illegal tight filter received (ctl: "+this._filter+")")}return l&&(this._filter=null),l}_copyFilter(t,e,s,n,r,a,h,c){const o=n*r*3;let l;if(o===0)return!0;if(o<12){if(a.rQwait("TIGHT",o))return!1;l=a.rQshiftBytes(o)}else{if(l=this._readData(a),l===null)return!1;this._zlibs[t].setInput(l),l=this._zlibs[t].inflate(o),this._zlibs[t].setInput(null)}let _=new Uint8Array(n*r*4);for(let f=0,x=0;f<n*r*4;f+=4,x+=3)_[f]=l[x],_[f+1]=l[x+1],_[f+2]=l[x+2],_[f+3]=255;return h.blitImage(e,s,n,r,_,0,!1),!0}_paletteFilter(t,e,s,n,r,a,h,c){if(this._numColors===0){if(a.rQwait("TIGHT palette",1))return!1;const x=a.rQpeek8()+1,k=x*3;if(a.rQwait("TIGHT palette",1+k))return!1;this._numColors=x,a.rQskipBytes(1),a.rQshiftTo(this._palette,k)}const o=this._numColors<=2?1:8,_=Math.floor((n*o+7)/8)*r;let f;if(_===0)return!0;if(_<12){if(a.rQwait("TIGHT",_))return!1;f=a.rQshiftBytes(_)}else{if(f=this._readData(a),f===null)return!1;this._zlibs[t].setInput(f),f=this._zlibs[t].inflate(_),this._zlibs[t].setInput(null)}return this._numColors==2?this._monoRect(e,s,n,r,f,this._palette,h):this._paletteRect(e,s,n,r,f,this._palette,h),this._numColors=0,!0}_monoRect(t,e,s,n,r,a,h){const c=this._getScratchBuffer(s*n*4),o=Math.floor((s+7)/8),l=Math.floor(s/8);for(let _=0;_<n;_++){let f,x,k;for(k=0;k<l;k++)for(let E=7;E>=0;E--)f=(_*s+k*8+7-E)*4,x=(r[_*o+k]>>E&1)*3,c[f]=a[x],c[f+1]=a[x+1],c[f+2]=a[x+2],c[f+3]=255;for(let E=7;E>=8-s%8;E--)f=(_*s+k*8+7-E)*4,x=(r[_*o+k]>>E&1)*3,c[f]=a[x],c[f+1]=a[x+1],c[f+2]=a[x+2],c[f+3]=255}h.blitImage(t,e,s,n,c,0,!1)}_paletteRect(t,e,s,n,r,a,h){const c=this._getScratchBuffer(s*n*4),o=s*n*4;for(let l=0,_=0;l<o;l+=4,_++){const f=r[_]*3;c[l]=a[f],c[l+1]=a[f+1],c[l+2]=a[f+2],c[l+3]=255}h.blitImage(t,e,s,n,c,0,!1)}_gradientFilter(t,e,s,n,r,a,h,c){const o=n*r*3;let l;if(o===0)return!0;if(o<12){if(a.rQwait("TIGHT",o))return!1;l=a.rQshiftBytes(o)}else{if(l=this._readData(a),l===null)return!1;this._zlibs[t].setInput(l),l=this._zlibs[t].inflate(o),this._zlibs[t].setInput(null)}let _=new Uint8Array(4*n*r),f=0,x=0,k=new Uint8Array(3);for(let M=0;M<n;M++){for(let A=0;A<3;A++){const S=k[A],T=l[x++]+S;_[f++]=T,k[A]=T}_[f++]=255}let E=0,F=new Uint8Array(3),C=new Uint8Array(3);for(let M=1;M<r;M++){k.fill(0),C.fill(0);for(let A=0;A<n;A++){for(let S=0;S<3;S++){F[S]=_[E++];let T=k[S]+F[S]-C[S];T<0?T=0:T>255&&(T=255);const I=l[x++]+T;_[f++]=I,C[S]=F[S],k[S]=I}_[f++]=255,E++}}return h.blitImage(e,s,n,r,_,0,!1),!0}_readData(t){if(this._len===0){if(t.rQwait("TIGHT",3))return null;let s;s=t.rQshift8(),this._len=s&127,s&128&&(s=t.rQshift8(),this._len|=(s&127)<<7,s&128&&(s=t.rQshift8(),this._len|=s<<14))}if(t.rQwait("TIGHT",this._len))return null;let e=t.rQshiftBytes(this._len,!1);return this._len=0,e}_getScratchBuffer(t){return(!this._scratchBuffer||this._scratchBuffer.length<t)&&(this._scratchBuffer=new Uint8Array(t)),this._scratchBuffer}}class Wa extends Fn{_pngRect(t,e,s,n,r,a,h){let c=this._readData(r);return c===null?!1:(a.imageRect(t,e,s,n,"image/png",c),!0)}_basicRect(t,e,s,n,r,a,h,c){throw new Error("BasicCompression received in TightPNG rect")}}const kt=64,St=64;class ja{constructor(){this._length=0,this._inflator=new It,this._pixelBuffer=new Uint8Array(kt*St*4),this._tileBuffer=new Uint8Array(kt*St*4)}decodeRect(t,e,s,n,r,a,h){if(this._length===0){if(r.rQwait("ZLib data length",4))return!1;this._length=r.rQshift32()}if(r.rQwait("Zlib data",this._length))return!1;const c=r.rQshiftBytes(this._length,!1);this._inflator.setInput(c);for(let o=e;o<e+n;o+=St){let l=Math.min(St,e+n-o);for(let _=t;_<t+s;_+=kt){let f=Math.min(kt,t+s-_);const x=f*l,k=this._inflator.inflate(1)[0];if(k===0){const E=this._readPixels(x);a.blitImage(_,o,f,l,E,0,!1)}else if(k===1){const E=this._readPixels(1);a.fillRect(_,o,f,l,[E[0],E[1],E[2]])}else if(k>=2&&k<=16){const E=this._decodePaletteTile(k,x,f,l);a.blitImage(_,o,f,l,E,0,!1)}else if(k===128){const E=this._decodeRLETile(x);a.blitImage(_,o,f,l,E,0,!1)}else if(k>=130&&k<=255){const E=this._decodeRLEPaletteTile(k-128,x);a.blitImage(_,o,f,l,E,0,!1)}else throw new Error("Unknown subencoding: "+k)}}return this._length=0,!0}_getBitsPerPixelInPalette(t){if(t<=2)return 1;if(t<=4)return 2;if(t<=16)return 4}_readPixels(t){let e=this._pixelBuffer;const s=this._inflator.inflate(3*t);for(let n=0,r=0;n<t*4;n+=4,r+=3)e[n]=s[r],e[n+1]=s[r+1],e[n+2]=s[r+2],e[n+3]=255;return e}_decodePaletteTile(t,e,s,n){const r=this._tileBuffer,a=this._readPixels(t),h=this._getBitsPerPixelInPalette(t),c=(1<<h)-1;let o=0,l=this._inflator.inflate(1)[0];for(let _=0;_<n;_++){let f=8-h;for(let x=0;x<s;x++){f<0&&(f=8-h,l=this._inflator.inflate(1)[0]);let k=l>>f&c;r[o]=a[k*4],r[o+1]=a[k*4+1],r[o+2]=a[k*4+2],r[o+3]=a[k*4+3],o+=4,f-=h}f<8-h&&_<n-1&&(l=this._inflator.inflate(1)[0])}return r}_decodeRLETile(t){const e=this._tileBuffer;let s=0;for(;s<t;){const n=this._readPixels(1),r=this._readRLELength();for(let a=0;a<r;a++)e[s*4]=n[0],e[s*4+1]=n[1],e[s*4+2]=n[2],e[s*4+3]=n[3],s++}return e}_decodeRLEPaletteTile(t,e){const s=this._tileBuffer,n=this._readPixels(t);let r=0;for(;r<e;){let a=this._inflator.inflate(1)[0],h=1;if(a>=128&&(a-=128,h=this._readRLELength()),a>t)throw new Error("Too big index in palette: "+a+", palette size: "+t);if(r+h>e)throw new Error("Too big rle length in palette mode: "+h+", allowed length is: "+(e-r));for(let c=0;c<h;c++)s[r*4]=n[a*4],s[r*4+1]=n[a*4+1],s[r*4+2]=n[a*4+2],s[r*4+3]=n[a*4+3],r++}return s}_readRLELength(){let t=0,e=0;do e=this._inflator.inflate(1)[0],t+=e;while(e===255);return t+1}}class Za{constructor(){this._cachedQuantTables=[],this._cachedHuffmanTables=[],this._segments=[]}decodeRect(t,e,s,n,r,a,h){for(;;){let x=this._readSegment(r);if(x===null)return!1;if(this._segments.push(x),x[1]===217)break}let c=[],o=[];for(let x of this._segments){let k=x[1];k===196?c.push(x):k===219&&o.push(x)}const l=this._segments.findIndex(x=>x[1]==192||x[1]==194);if(l==-1)throw new Error("Illegal JPEG image without SOF");o.length===0&&this._segments.splice(l+1,0,...this._cachedQuantTables),c.length===0&&this._segments.splice(l+1,0,...this._cachedHuffmanTables);let _=0;for(let x of this._segments)_+=x.length;let f=new Uint8Array(_);_=0;for(let x of this._segments)f.set(x,_),_+=x.length;return a.imageRect(t,e,s,n,"image/jpeg",f),c.length!==0&&(this._cachedHuffmanTables=c),o.length!==0&&(this._cachedQuantTables=o),this._segments=[],!0}_readSegment(t){if(t.rQwait("JPEG",2))return null;let e=t.rQshift8();if(e!=255)throw new Error("Illegal JPEG marker received (byte: "+e+")");let s=t.rQshift8();if(s>=208&&s<=217||s==1)return new Uint8Array([e,s]);if(t.rQwait("JPEG",2,2))return null;let n=t.rQshift16();if(n<2)throw new Error("Illegal JPEG length received (length: "+n+")");if(t.rQwait("JPEG",n-2,4))return null;let r=0;if(s===218){if(t.rQwait("JPEG",n-2+2,4))return null;let h=t.rQlen(),c=t.rQpeekBytes(h,!1);for(;;){let o=c.indexOf(255,n-2+r);if(o===-1||o===h-1)return t.rQwait("JPEG",1/0,4),null;if(c.at(o+1)===0||c.at(o+1)>=208&&c.at(o+1)<=215){r=o+2-(n-2);continue}r=o-(n-2);break}}let a=new Uint8Array(2+n+r);return a[0]=e,a[1]=s,a[2]=n>>8,a[3]=n,a.set(t.rQshiftBytes(n-2+r,!1),4),a}}class Ya{constructor(t){this._data=t,this._index=0,this.profileIdc=null,this.constraintSet=null,this.levelIdc=null}_getStartSequenceLen(t){let e=this._data;return e[t+0]==0&&e[t+1]==0&&e[t+2]==0&&e[t+3]==1?4:e[t+0]==0&&e[t+1]==0&&e[t+2]==1?3:0}_indexOfNextNalUnit(t){let e=this._data;for(let s=t;s<e.length;++s)if(this._getStartSequenceLen(s)!=0)return s;return-1}_parseSps(t){this.profileIdc=this._data[t],this.constraintSet=this._data[t+1],this.levelIdc=this._data[t+2]}_parseNalUnit(t){const e=this._data[t];if(e&128)throw new Error("H264 parsing sanity check failed, forbidden zero bit is set");const s=e&31;switch(s){case 1:return{slice:!0};case 5:return{slice:!0,key:!0};case 6:return{};case 7:return this._parseSps(t+1),{};case 8:return{};default:ae("Unhandled unit type: ",s);break}return{}}parse(){const t=this._index;let e=!1;for(;this._index<this._data.length;){const s=this._getStartSequenceLen(this._index);if(s==0)throw new Error("Invalid start sequence in bit stream");const{slice:n,key:r}=this._parseNalUnit(this._index+s);let a=this._indexOfNextNalUnit(this._index+s);if(a==-1?this._index=this._data.length:this._index=a,r&&(e=!0),n)break}return t===this._index?null:{frame:this._data.subarray(t,this._index),key:e}}}class qa{constructor(t,e){this.lastUsed=0,this._width=t,this._height=e,this._profileIdc=null,this._constraintSet=null,this._levelIdc=null,this._decoder=null,this._pendingFrames=[]}_handleFrame(t){let e=this._pendingFrames.shift();if(e===void 0)throw new Error("Pending frame queue empty when receiving frame from decoder");if(e.timestamp!=t.timestamp)throw new Error("Video frame timestamp mismatch. Expected "+t.timestamp+" but but got "+e.timestamp);e.frame=t,e.ready=!0,e.resolve(),e.keep||t.close()}_handleError(t){throw new Error("Failed to decode frame: "+t.message)}_configureDecoder(t,e,s){(this._decoder===null||this._decoder.state==="closed")&&(this._decoder=new VideoDecoder({output:r=>this._handleFrame(r),error:r=>this._handleError(r)}));const n="avc1."+t.toString(16).padStart(2,"0")+e.toString(16).padStart(2,"0")+s.toString(16).padStart(2,"0");this._decoder.configure({codec:n,codedWidth:this._width,codedHeight:this._height,optimizeForLatency:!0})}_preparePendingFrame(t){let e={timestamp:t,promise:null,resolve:null,frame:null,ready:!1,keep:!1};return e.promise=new Promise(s=>{e.resolve=s}),this._pendingFrames.push(e),e}decode(t){let e=new Ya(t),s=null,n=Math.round(window.performance.now()*1e3);for(;;){let r=e.parse();if(r===null)break;if(e.profileIdc!==null&&(self._profileIdc=e.profileIdc,self._constraintSet=e.constraintSet,self._levelIdc=e.levelIdc),this._decoder===null||this._decoder.state!=="configured"){if(!r.key){ae("Missing key frame. Can't decode until one arrives");continue}if(self._profileIdc===null){ae("Cannot config decoder. Have not received SPS and PPS yet.");continue}this._configureDecoder(self._profileIdc,self._constraintSet,self._levelIdc)}s=this._preparePendingFrame(n);const a=new EncodedVideoChunk({timestamp:n,type:r.key?"key":"delta",data:r.frame});try{this._decoder.decode(a)}catch(h){ae("Failed to decode:",h)}}return s!==null&&(s.keep=!0),s}}class $a{constructor(){this._tick=0,this._contexts={}}_contextId(t,e,s,n){return[t,e,s,n].join(",")}_findOldestContextId(){let t=Number.MAX_VALUE,e;for(const[s,n]of Object.entries(this._contexts))n.lastUsed<t&&(t=n.lastUsed,e=s);return e}_createContext(t,e,s,n){if(Object.keys(this._contexts).length>=64){let h=this._findOldestContextId();delete this._contexts[h]}let a=new qa(s,n);return this._contexts[this._contextId(t,e,s,n)]=a,a}_getContext(t,e,s,n){let r=this._contexts[this._contextId(t,e,s,n)];return r!==void 0?r:this._createContext(t,e,s,n)}_resetContext(t,e,s,n){delete this._contexts[this._contextId(t,e,s,n)]}_resetAllContexts(){this._contexts={}}decodeRect(t,e,s,n,r,a,h){if(r.rQwait("h264 header",8))return!1;const l=r.rQshift32(),_=r.rQshift32();if(r.rQwait("h264 payload",l,8))return!1;_&2?this._resetAllContexts():_&1&&this._resetContext(t,e,s,n);let f=this._getContext(t,e,s,n);if(f.lastUsed=this._tick++,l!==0){let x=r.rQshiftBytes(l,!1),k=f.decode(x);k!==null&&a.videoFrame(t,e,s,n,k)}return!0}}const Ja=3,eo="rgb(40, 40, 40)",Is=17,Ps=50,Us=19,$e=75,Ee=50,to=1e3,io=50,Ns=1,Et=2,Hs=6,zs=16,di=19,Vs=22,Os=30,Gs=113,Ws=129,js=256,be=1,Zs=1<<24,At=1<<25,Ys=1<<26,et=1<<27,Xt=1<<28;class D extends rn{constructor(t,e,s){if(!t)throw new Error("Must specify target");if(!e)throw new Error("Must specify URL, WebSocket or RTCDataChannel");window.isSecureContext||G("noVNC requires a secure context (TLS). Expect crashes!"),super(),this._target=t,typeof e=="string"?this._url=e:(this._url=null,this._rawChannel=e),s=s||{},this._rfbCredentials=s.credentials||{},this._shared="shared"in s?!!s.shared:!0,this._repeaterID=s.repeaterID||"",this._wsProtocols=s.wsProtocols||[],this._rfbConnectionState="",this._rfbInitState="",this._rfbAuthScheme=-1,this._rfbCleanDisconnect=!0,this._rfbRSAAESAuthenticationState=null,this._rfbVersion=0,this._rfbMaxVersion=3.8,this._rfbTightVNC=!1,this._rfbVeNCryptState=0,this._rfbXvpVer=0,this._fbWidth=0,this._fbHeight=0,this._fbName="",this._capabilities={power:!1},this._supportsFence=!1,this._supportsContinuousUpdates=!1,this._enabledContinuousUpdates=!1,this._supportsSetDesktopSize=!1,this._screenID=0,this._screenFlags=0,this._pendingRemoteResize=!1,this._lastResize=0,this._qemuExtKeyEventSupported=!1,this._extendedPointerEventSupported=!1,this._clipboardText=null,this._clipboardServerCapabilitiesActions={},this._clipboardServerCapabilitiesFormats={},this._sock=null,this._display=null,this._flushing=!1,this._keyboard=null,this._gestures=null,this._resizeObserver=null,this._disconnTimer=null,this._resizeTimeout=null,this._mouseMoveTimer=null,this._decoders={},this._FBU={rects:0,x:0,y:0,width:0,height:0,encoding:null},this._mousePos={},this._mouseButtonMask=0,this._mouseLastMoveTime=0,this._viewportDragging=!1,this._viewportDragPos={},this._viewportHasMoved=!1,this._accumulatedWheelDeltaX=0,this._accumulatedWheelDeltaY=0,this._gestureLastTapTime=null,this._gestureFirstDoubleTapEv=null,this._gestureLastMagnitudeX=0,this._gestureLastMagnitudeY=0,this._eventHandlers={focusCanvas:this._focusCanvas.bind(this),handleResize:this._handleResize.bind(this),handleMouse:this._handleMouse.bind(this),handleWheel:this._handleWheel.bind(this),handleGesture:this._handleGesture.bind(this),handleRSAAESCredentialsRequired:this._handleRSAAESCredentialsRequired.bind(this),handleRSAAESServerVerification:this._handleRSAAESServerVerification.bind(this)},Q(">> RFB.constructor"),this._screen=document.createElement("div"),this._screen.style.display="flex",this._screen.style.width="100%",this._screen.style.height="100%",this._screen.style.overflow="auto",this._screen.style.background=eo,this._canvas=document.createElement("canvas"),this._canvas.style.margin="auto",this._canvas.style.outline="none",this._canvas.width=0,this._canvas.height=0,this._canvas.tabIndex=-1,this._screen.appendChild(this._canvas),this._cursor=new Xa,this._cursorImage=D.cursors.none,this._decoders[L.encodingRaw]=new Ha,this._decoders[L.encodingCopyRect]=new za,this._decoders[L.encodingRRE]=new Va,this._decoders[L.encodingHextile]=new Oa,this._decoders[L.encodingZlib]=new Ga,this._decoders[L.encodingTight]=new Fn,this._decoders[L.encodingTightPNG]=new Wa,this._decoders[L.encodingZRLE]=new ja,this._decoders[L.encodingJPEG]=new Za,this._decoders[L.encodingH264]=new $a;try{this._display=new er(this._canvas)}catch(n){throw G("Display exception: "+n),n}this._keyboard=new ka(this._canvas),this._keyboard.onkeyevent=this._handleKeyEvent.bind(this),this._remoteCapsLock=null,this._remoteNumLock=null,this._gestures=new Aa,this._sock=new Fa,this._sock.on("open",this._socketOpen.bind(this)),this._sock.on("close",this._socketClose.bind(this)),this._sock.on("message",this._handleMessage.bind(this)),this._sock.on("error",this._socketError.bind(this)),this._expectedClientWidth=null,this._expectedClientHeight=null,this._resizeObserver=new ResizeObserver(this._eventHandlers.handleResize),this._updateConnectionState("connecting"),Q("<< RFB.constructor"),this.dragViewport=!1,this.focusOnClick=!0,this._viewOnly=!1,this._clipViewport=!1,this._clippingViewport=!1,this._scaleViewport=!1,this._resizeSession=!1,this._showDotCursor=!1,this._qualityLevel=6,this._compressionLevel=2}get viewOnly(){return this._viewOnly}set viewOnly(t){this._viewOnly=t,(this._rfbConnectionState==="connecting"||this._rfbConnectionState==="connected")&&(t?this._keyboard.ungrab():this._keyboard.grab())}get capabilities(){return this._capabilities}get clippingViewport(){return this._clippingViewport}_setClippingViewport(t){t!==this._clippingViewport&&(this._clippingViewport=t,this.dispatchEvent(new CustomEvent("clippingviewport",{detail:this._clippingViewport})))}get touchButton(){return 0}set touchButton(t){ae("Using old API!")}get clipViewport(){return this._clipViewport}set clipViewport(t){this._clipViewport=t,this._updateClip()}get scaleViewport(){return this._scaleViewport}set scaleViewport(t){this._scaleViewport=t,t&&this._clipViewport&&this._updateClip(),this._updateScale(),!t&&this._clipViewport&&this._updateClip()}get resizeSession(){return this._resizeSession}set resizeSession(t){this._resizeSession=t,t&&this._requestRemoteResize()}get showDotCursor(){return this._showDotCursor}set showDotCursor(t){this._showDotCursor=t,this._refreshCursor()}get background(){return this._screen.style.background}set background(t){this._screen.style.background=t}get qualityLevel(){return this._qualityLevel}set qualityLevel(t){if(!Number.isInteger(t)||t<0||t>9){G("qualityLevel must be an integer between 0 and 9");return}this._qualityLevel!==t&&(this._qualityLevel=t,this._rfbConnectionState==="connected"&&this._sendEncodings())}get compressionLevel(){return this._compressionLevel}set compressionLevel(t){if(!Number.isInteger(t)||t<0||t>9){G("compressionLevel must be an integer between 0 and 9");return}this._compressionLevel!==t&&(this._compressionLevel=t,this._rfbConnectionState==="connected"&&this._sendEncodings())}disconnect(){this._updateConnectionState("disconnecting"),this._sock.off("error"),this._sock.off("message"),this._sock.off("open"),this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.disconnect()}approveServer(){this._rfbRSAAESAuthenticationState!==null&&this._rfbRSAAESAuthenticationState.approveServer()}sendCredentials(t){this._rfbCredentials=t,this._resumeAuthentication()}sendCtrlAltDel(){this._rfbConnectionState!=="connected"||this._viewOnly||(re("Sending Ctrl-Alt-Del"),this.sendKey(u.XK_Control_L,"ControlLeft",!0),this.sendKey(u.XK_Alt_L,"AltLeft",!0),this.sendKey(u.XK_Delete,"Delete",!0),this.sendKey(u.XK_Delete,"Delete",!1),this.sendKey(u.XK_Alt_L,"AltLeft",!1),this.sendKey(u.XK_Control_L,"ControlLeft",!1))}machineShutdown(){this._xvpOp(1,2)}machineReboot(){this._xvpOp(1,3)}machineReset(){this._xvpOp(1,4)}sendKey(t,e,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s===void 0){this.sendKey(t,e,!0),this.sendKey(t,e,!1);return}const n=Ma[e];if(this._qemuExtKeyEventSupported&&n)t=t||0,re("Sending key ("+(s?"down":"up")+"): keysym "+t+", scancode "+n),D.messages.QEMUExtendedKeyEvent(this._sock,t,s,n);else{if(!t)return;re("Sending keysym ("+(s?"down":"up")+"): "+t),D.messages.keyEvent(this._sock,t,s?1:0)}}focus(t){this._canvas.focus(t)}blur(){this._canvas.blur()}clipboardPasteFrom(t){if(!(this._rfbConnectionState!=="connected"||this._viewOnly))if(this._clipboardServerCapabilitiesFormats[be]&&this._clipboardServerCapabilitiesActions[et])this._clipboardText=t,D.messages.extendedClipboardNotify(this._sock,[be]);else{let e,s,n;e=0;for(let r of t)e++;n=new Uint8Array(e),s=0;for(let r of t){let a=r.codePointAt(0);a>255&&(a=63),n[s++]=a}D.messages.clientCutText(this._sock,n)}}getImageData(){return this._display.getImageData()}toDataURL(t,e){return this._display.toDataURL(t,e)}toBlob(t,e,s){return this._display.toBlob(t,e,s)}_connect(){if(Q(">> RFB.connect"),this._url)re(`connecting to ${this._url}`),this._sock.open(this._url,this._wsProtocols);else{if(re(`attaching ${this._rawChannel} to Websock`),this._sock.attach(this._rawChannel),this._sock.readyState==="closed")throw Error("Cannot use already closed WebSocket/RTCDataChannel");this._sock.readyState==="open"&&this._socketOpen()}this._target.appendChild(this._screen),this._gestures.attach(this._canvas),this._cursor.attach(this._canvas),this._refreshCursor(),this._resizeObserver.observe(this._screen),this._canvas.addEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.addEventListener("touchstart",this._eventHandlers.focusCanvas),this._canvas.addEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.addEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.addEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.addEventListener("click",this._eventHandlers.handleMouse),this._canvas.addEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.addEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.addEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.addEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.addEventListener("gestureend",this._eventHandlers.handleGesture),Q("<< RFB.connect")}_disconnect(){Q(">> RFB.disconnect"),this._cursor.detach(),this._canvas.removeEventListener("gesturestart",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gesturemove",this._eventHandlers.handleGesture),this._canvas.removeEventListener("gestureend",this._eventHandlers.handleGesture),this._canvas.removeEventListener("wheel",this._eventHandlers.handleWheel),this._canvas.removeEventListener("mousedown",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mouseup",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousemove",this._eventHandlers.handleMouse),this._canvas.removeEventListener("click",this._eventHandlers.handleMouse),this._canvas.removeEventListener("contextmenu",this._eventHandlers.handleMouse),this._canvas.removeEventListener("mousedown",this._eventHandlers.focusCanvas),this._canvas.removeEventListener("touchstart",this._eventHandlers.focusCanvas),this._resizeObserver.disconnect(),this._keyboard.ungrab(),this._gestures.detach(),this._sock.close();try{this._target.removeChild(this._screen)}catch(t){if(t.name!=="NotFoundError")throw t}clearTimeout(this._resizeTimeout),clearTimeout(this._mouseMoveTimer),Q("<< RFB.disconnect")}_socketOpen(){this._rfbConnectionState==="connecting"&&this._rfbInitState===""?(this._rfbInitState="ProtocolVersion",Q("Starting VNC handshake")):this._fail("Unexpected server connection while "+this._rfbConnectionState)}_socketClose(t){Q("WebSocket on-close event");let e="";switch(t.code&&(e="(code: "+t.code,t.reason&&(e+=", reason: "+t.reason),e+=")"),this._rfbConnectionState){case"connecting":this._fail("Connection closed "+e);break;case"connected":this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected");break;case"disconnecting":this._updateConnectionState("disconnected");break;case"disconnected":this._fail("Unexpected server disconnect when already disconnected "+e);break;default:this._fail("Unexpected server disconnect before connecting "+e);break}this._sock.off("close"),this._rawChannel=null}_socketError(t){ae("WebSocket on-error event")}_focusCanvas(t){this.focusOnClick&&this.focus({preventScroll:!0})}_setDesktopName(t){this._fbName=t,this.dispatchEvent(new CustomEvent("desktopname",{detail:{name:this._fbName}}))}_saveExpectedClientSize(){this._expectedClientWidth=this._screen.clientWidth,this._expectedClientHeight=this._screen.clientHeight}_currentClientSize(){return[this._screen.clientWidth,this._screen.clientHeight]}_clientHasExpectedSize(){const[t,e]=this._currentClientSize();return t==this._expectedClientWidth&&e==this._expectedClientHeight}_handleResize(){this._clientHasExpectedSize()||(window.requestAnimationFrame(()=>{this._updateClip(),this._updateScale(),this._saveExpectedClientSize()}),this._requestRemoteResize())}_updateClip(){const t=this._display.clipViewport;let e=this._clipViewport;if(this._scaleViewport&&(e=!1),t!==e&&(this._display.clipViewport=e),e){const s=this._screenSize();this._display.viewportChangeSize(s.w,s.h),this._fixScrollbars(),this._setClippingViewport(s.w<this._display.width||s.h<this._display.height)}else this._setClippingViewport(!1);t!==e&&this._saveExpectedClientSize()}_updateScale(){if(!this._scaleViewport)this._display.scale=1;else{const t=this._screenSize();this._display.autoscale(t.w,t.h)}this._fixScrollbars()}_requestRemoteResize(){if(!this._resizeSession||this._viewOnly||!this._supportsSetDesktopSize||this._pendingRemoteResize)return;if(Date.now()-this._lastResize<100){clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(this._requestRemoteResize.bind(this),100-(Date.now()-this._lastResize));return}this._resizeTimeout=null;const t=this._screenSize();t.w===this._fbWidth&&t.h===this._fbHeight||(this._pendingRemoteResize=!0,this._lastResize=Date.now(),D.messages.setDesktopSize(this._sock,Math.floor(t.w),Math.floor(t.h),this._screenID,this._screenFlags),Q("Requested new desktop size: "+t.w+"x"+t.h))}_screenSize(){let t=this._screen.getBoundingClientRect();return{w:t.width,h:t.height}}_fixScrollbars(){const t=this._screen.style.overflow;this._screen.style.overflow="hidden",this._screen.getBoundingClientRect(),this._screen.style.overflow=t}_updateConnectionState(t){const e=this._rfbConnectionState;if(t===e){Q("Already in state '"+t+"', ignoring");return}if(e==="disconnected"){G("Tried changing state of a disconnected RFB object");return}switch(t){case"connected":if(e!=="connecting"){G("Bad transition to connected state, previous connection state: "+e);return}break;case"disconnected":if(e!=="disconnecting"){G("Bad transition to disconnected state, previous connection state: "+e);return}break;case"connecting":if(e!==""){G("Bad transition to connecting state, previous connection state: "+e);return}break;case"disconnecting":if(e!=="connected"&&e!=="connecting"){G("Bad transition to disconnecting state, previous connection state: "+e);return}break;default:G("Unknown connection state: "+t);return}switch(this._rfbConnectionState=t,Q("New state '"+t+"', was '"+e+"'."),this._disconnTimer&&t!=="disconnecting"&&(Q("Clearing disconnect timer"),clearTimeout(this._disconnTimer),this._disconnTimer=null,this._sock.off("close")),t){case"connecting":this._connect();break;case"connected":this.dispatchEvent(new CustomEvent("connect",{detail:{}}));break;case"disconnecting":this._disconnect(),this._disconnTimer=setTimeout(()=>{G("Disconnection timed out."),this._updateConnectionState("disconnected")},Ja*1e3);break;case"disconnected":this.dispatchEvent(new CustomEvent("disconnect",{detail:{clean:this._rfbCleanDisconnect}}));break}}_fail(t){switch(this._rfbConnectionState){case"disconnecting":G("Failed when disconnecting: "+t);break;case"connected":G("Failed while connected: "+t);break;case"connecting":G("Failed when connecting: "+t);break;default:G("RFB failure: "+t);break}return this._rfbCleanDisconnect=!1,this._updateConnectionState("disconnecting"),this._updateConnectionState("disconnected"),!1}_setCapability(t,e){this._capabilities[t]=e,this.dispatchEvent(new CustomEvent("capabilities",{detail:{capabilities:this._capabilities}}))}_handleMessage(){if(this._sock.rQwait("message",1)){ae("handleMessage called on an empty receive queue");return}switch(this._rfbConnectionState){case"disconnected":G("Got data while disconnected");break;case"connected":for(;!(this._flushing||!this._normalMsg()||this._sock.rQwait("message",1)););break;case"connecting":for(;this._rfbConnectionState==="connecting"&&this._initMsg(););break;default:G("Got data while in an invalid state");break}}_handleKeyEvent(t,e,s,n,r){e=="CapsLock"&&s&&(this._remoteCapsLock=null),this._remoteCapsLock!==null&&r!==null&&this._remoteCapsLock!==r&&s&&(Q("Fixing remote caps lock"),this.sendKey(u.XK_Caps_Lock,"CapsLock",!0),this.sendKey(u.XK_Caps_Lock,"CapsLock",!1),this._remoteCapsLock=null),e=="NumLock"&&s&&(this._remoteNumLock=null),this._remoteNumLock!==null&&n!==null&&this._remoteNumLock!==n&&s&&(Q("Fixing remote num lock"),this.sendKey(u.XK_Num_Lock,"NumLock",!0),this.sendKey(u.XK_Num_Lock,"NumLock",!1),this._remoteNumLock=null),this.sendKey(t,e,s)}static _convertButtonMask(t){const e={0:1,1:4,2:2,3:128,4:256};let s=0;for(let n=0;n<5;n++)t&1<<n&&(s|=e[n]);return s}_handleMouse(t){if(t.type==="click"&&t.target!==this._canvas||(t.stopPropagation(),t.preventDefault(),t.type==="click"||t.type==="contextmenu"))return;let e=je(t.clientX,t.clientY,this._canvas),s=D._convertButtonMask(t.buttons),n=t.type=="mousedown";switch(t.type){case"mousedown":case"mouseup":if(this.dragViewport)if(n&&!this._viewportDragging){this._viewportDragging=!0,this._viewportDragPos={x:e.x,y:e.y},this._viewportHasMoved=!1,this._flushMouseMoveTimer(e.x,e.y),this._mouseButtonMask=s;break}else{if(this._viewportDragging=!1,this._viewportHasMoved){this._mouseButtonMask=s;break}this._sendMouse(e.x,e.y,this._mouseButtonMask)}n&&Jn(this._canvas),this._handleMouseButton(e.x,e.y,s);break;case"mousemove":if(this._viewportDragging){const r=this._viewportDragPos.x-e.x,a=this._viewportDragPos.y-e.y;(this._viewportHasMoved||Math.abs(r)>xt||Math.abs(a)>xt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:e.x,y:e.y},this._display.viewportChangePos(r,a));break}this._handleMouseMove(e.x,e.y);break}}_handleMouseButton(t,e,s){this._flushMouseMoveTimer(t,e),this._mouseButtonMask=s,this._sendMouse(t,e,this._mouseButtonMask)}_handleMouseMove(t,e){if(this._mousePos={x:t,y:e},this._mouseMoveTimer==null){const s=Date.now()-this._mouseLastMoveTime;s>Is?(this._sendMouse(t,e,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()):this._mouseMoveTimer=setTimeout(()=>{this._handleDelayedMouseMove()},Is-s)}}_handleDelayedMouseMove(){this._mouseMoveTimer=null,this._sendMouse(this._mousePos.x,this._mousePos.y,this._mouseButtonMask),this._mouseLastMoveTime=Date.now()}_sendMouse(t,e,s){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;if(s&32768)throw new Error("Illegal mouse button mask (mask: "+s+")");let n=s&32640;this._extendedPointerEventSupported&&n?D.messages.extendedPointerEvent(this._sock,this._display.absX(t),this._display.absY(e),s):D.messages.pointerEvent(this._sock,this._display.absX(t),this._display.absY(e),s)}_handleWheel(t){if(this._rfbConnectionState!=="connected"||this._viewOnly)return;t.stopPropagation(),t.preventDefault();let e=je(t.clientX,t.clientY,this._canvas),s=D._convertButtonMask(t.buttons),n=t.deltaX,r=t.deltaY;t.deltaMode!==0&&(n*=Us,r*=Us),this._accumulatedWheelDeltaX+=n,this._accumulatedWheelDeltaY+=r,Math.abs(this._accumulatedWheelDeltaX)>=Ps&&(this._accumulatedWheelDeltaX<0?(this._handleMouseButton(e.x,e.y,s|32),this._handleMouseButton(e.x,e.y,s)):this._accumulatedWheelDeltaX>0&&(this._handleMouseButton(e.x,e.y,s|64),this._handleMouseButton(e.x,e.y,s)),this._accumulatedWheelDeltaX=0),Math.abs(this._accumulatedWheelDeltaY)>=Ps&&(this._accumulatedWheelDeltaY<0?(this._handleMouseButton(e.x,e.y,s|8),this._handleMouseButton(e.x,e.y,s)):this._accumulatedWheelDeltaY>0&&(this._handleMouseButton(e.x,e.y,s|16),this._handleMouseButton(e.x,e.y,s)),this._accumulatedWheelDeltaY=0)}_fakeMouseMove(t,e,s){this._handleMouseMove(e,s),this._cursor.move(t.detail.clientX,t.detail.clientY)}_handleTapEvent(t,e){let s=je(t.detail.clientX,t.detail.clientY,this._canvas);if(this._gestureLastTapTime!==null&&Date.now()-this._gestureLastTapTime<to&&this._gestureFirstDoubleTapEv.detail.type===t.detail.type){let n=this._gestureFirstDoubleTapEv.detail.clientX-t.detail.clientX,r=this._gestureFirstDoubleTapEv.detail.clientY-t.detail.clientY;Math.hypot(n,r)<io?s=je(this._gestureFirstDoubleTapEv.detail.clientX,this._gestureFirstDoubleTapEv.detail.clientY,this._canvas):this._gestureFirstDoubleTapEv=t}else this._gestureFirstDoubleTapEv=t;this._gestureLastTapTime=Date.now(),this._fakeMouseMove(this._gestureFirstDoubleTapEv,s.x,s.y),this._handleMouseButton(s.x,s.y,e),this._handleMouseButton(s.x,s.y,0)}_handleGesture(t){let e,s=je(t.detail.clientX,t.detail.clientY,this._canvas);switch(t.type){case"gesturestart":switch(t.detail.type){case"onetap":this._handleTapEvent(t,1);break;case"twotap":this._handleTapEvent(t,4);break;case"threetap":this._handleTapEvent(t,2);break;case"drag":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragging=!0,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,1));break;case"longpress":this.dragViewport?(this._viewportHasMoved=!1,this._viewportDragPos={x:s.x,y:s.y}):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,4));break;case"twodrag":this._gestureLastMagnitudeX=t.detail.magnitudeX,this._gestureLastMagnitudeY=t.detail.magnitudeY,this._fakeMouseMove(t,s.x,s.y);break;case"pinch":this._gestureLastMagnitudeX=Math.hypot(t.detail.magnitudeX,t.detail.magnitudeY),this._fakeMouseMove(t,s.x,s.y);break}break;case"gesturemove":switch(t.detail.type){case"onetap":case"twotap":case"threetap":break;case"drag":case"longpress":if(this.dragViewport){this._viewportDragging=!0;const n=this._viewportDragPos.x-s.x,r=this._viewportDragPos.y-s.y;(this._viewportHasMoved||Math.abs(n)>xt||Math.abs(r)>xt)&&(this._viewportHasMoved=!0,this._viewportDragPos={x:s.x,y:s.y},this._display.viewportChangePos(n,r))}else this._fakeMouseMove(t,s.x,s.y);break;case"twodrag":for(this._fakeMouseMove(t,s.x,s.y);t.detail.magnitudeY-this._gestureLastMagnitudeY>Ee;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY+=Ee;for(;t.detail.magnitudeY-this._gestureLastMagnitudeY<-Ee;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeY-=Ee;for(;t.detail.magnitudeX-this._gestureLastMagnitudeX>Ee;)this._handleMouseButton(s.x,s.y,32),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=Ee;for(;t.detail.magnitudeX-this._gestureLastMagnitudeX<-Ee;)this._handleMouseButton(s.x,s.y,64),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=Ee;break;case"pinch":if(this._fakeMouseMove(t,s.x,s.y),e=Math.hypot(t.detail.magnitudeX,t.detail.magnitudeY),Math.abs(e-this._gestureLastMagnitudeX)>$e){for(this._handleKeyEvent(u.XK_Control_L,"ControlLeft",!0);e-this._gestureLastMagnitudeX>$e;)this._handleMouseButton(s.x,s.y,8),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX+=$e;for(;e-this._gestureLastMagnitudeX<-$e;)this._handleMouseButton(s.x,s.y,16),this._handleMouseButton(s.x,s.y,0),this._gestureLastMagnitudeX-=$e}this._handleKeyEvent(u.XK_Control_L,"ControlLeft",!1);break}break;case"gestureend":switch(t.detail.type){case"onetap":case"twotap":case"threetap":case"pinch":case"twodrag":break;case"drag":this.dragViewport?this._viewportDragging=!1:(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break;case"longpress":if(this._viewportHasMoved)break;this.dragViewport&&!this._viewportHasMoved?(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,4),this._handleMouseButton(s.x,s.y,0),this._viewportDragging=!1):(this._fakeMouseMove(t,s.x,s.y),this._handleMouseButton(s.x,s.y,0));break}break}}_flushMouseMoveTimer(t,e){this._mouseMoveTimer!==null&&(clearTimeout(this._mouseMoveTimer),this._mouseMoveTimer=null,this._sendMouse(t,e,this._mouseButtonMask))}_negotiateProtocolVersion(){if(this._sock.rQwait("version",12))return!1;const t=this._sock.rQshiftStr(12).substr(4,7);re("Server ProtocolVersion: "+t);let e=0;switch(t){case"000.000":e=1;break;case"003.003":case"003.006":this._rfbVersion=3.3;break;case"003.007":this._rfbVersion=3.7;break;case"003.008":case"003.889":case"004.000":case"004.001":case"005.000":this._rfbVersion=3.8;break;default:return this._fail("Invalid server version "+t)}if(e){let n="ID:"+this._repeaterID;for(;n.length<250;)n+="\0";return this._sock.sQpushString(n),this._sock.flush(),!0}this._rfbVersion>this._rfbMaxVersion&&(this._rfbVersion=this._rfbMaxVersion);const s="00"+parseInt(this._rfbVersion,10)+".00"+this._rfbVersion*10%10;this._sock.sQpushString("RFB "+s+`
|
|
2
2
|
`),this._sock.flush(),Q("Sent ProtocolVersion: "+s),this._rfbInitState="Security"}_isSupportedSecurityType(t){return[Ns,Et,Hs,zs,di,Vs,Os,Gs,js].includes(t)}_negotiateSecurity(){if(this._rfbVersion>=3.7){const t=this._sock.rQshift8();if(this._sock.rQwait("security type",t,1))return!1;if(t===0)return this._rfbInitState="SecurityReason",this._securityContext="no security types",this._securityStatus=1,!0;const e=this._sock.rQshiftBytes(t);Q("Server security types: "+e),this._rfbAuthScheme=-1;for(let s of e)if(this._isSupportedSecurityType(s)){this._rfbAuthScheme=s;break}if(this._rfbAuthScheme===-1)return this._fail("Unsupported security types (types: "+e+")");this._sock.sQpush8(this._rfbAuthScheme),this._sock.flush()}else{if(this._sock.rQwait("security scheme",4))return!1;if(this._rfbAuthScheme=this._sock.rQshift32(),this._rfbAuthScheme==0)return this._rfbInitState="SecurityReason",this._securityContext="authentication scheme",this._securityStatus=1,!0}return this._rfbInitState="Authentication",Q("Authenticating using scheme: "+this._rfbAuthScheme),!0}_handleSecurityReason(){if(this._sock.rQwait("reason length",4))return!1;const t=this._sock.rQshift32();let e="";if(t>0){if(this._sock.rQwait("reason",t,4))return!1;e=this._sock.rQshiftStr(t)}return e!==""?(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus,reason:e}})),this._fail("Security negotiation failed on "+this._securityContext+" (reason: "+e+")")):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:this._securityStatus}})),this._fail("Security negotiation failed on "+this._securityContext))}_negotiateXvpAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0||this._rfbCredentials.target===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password","target"]}})),!1):(this._sock.sQpush8(this._rfbCredentials.username.length),this._sock.sQpush8(this._rfbCredentials.target.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.target),this._sock.flush(),this._rfbAuthScheme=Et,this._negotiateAuthentication())}_negotiateVeNCryptAuth(){if(this._rfbVeNCryptState==0){if(this._sock.rQwait("vencrypt version",2))return!1;const t=this._sock.rQshift8(),e=this._sock.rQshift8();if(!(t==0&&e==2))return this._fail("Unsupported VeNCrypt version "+t+"."+e);this._sock.sQpush8(0),this._sock.sQpush8(2),this._sock.flush(),this._rfbVeNCryptState=1}if(this._rfbVeNCryptState==1){if(this._sock.rQwait("vencrypt ack",1))return!1;const t=this._sock.rQshift8();if(t!=0)return this._fail("VeNCrypt failure "+t);this._rfbVeNCryptState=2}if(this._rfbVeNCryptState==2){if(this._sock.rQwait("vencrypt subtypes length",1))return!1;const t=this._sock.rQshift8();if(t<1)return this._fail("VeNCrypt subtypes empty");this._rfbVeNCryptSubtypesLength=t,this._rfbVeNCryptState=3}if(this._rfbVeNCryptState==3){if(this._sock.rQwait("vencrypt subtypes",4*this._rfbVeNCryptSubtypesLength))return!1;const t=[];for(let e=0;e<this._rfbVeNCryptSubtypesLength;e++)t.push(this._sock.rQshift32());this._rfbAuthScheme=-1;for(let e of t)if(e!==di&&this._isSupportedSecurityType(e)){this._rfbAuthScheme=e;break}return this._rfbAuthScheme===-1?this._fail("Unsupported security types (types: "+t+")"):(this._sock.sQpush32(this._rfbAuthScheme),this._sock.flush(),this._rfbVeNCryptState=4,!0)}}_negotiatePlainAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;const t=ye(this._rfbCredentials.username),e=ye(this._rfbCredentials.password);return this._sock.sQpush32(t.length),this._sock.sQpush32(e.length),this._sock.sQpushString(t),this._sock.sQpushString(e),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateStdVNCAuth(){if(this._sock.rQwait("auth challenge",16))return!1;if(this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["password"]}})),!1;const t=Array.prototype.slice.call(this._sock.rQshiftBytes(16)),e=D.genDES(this._rfbCredentials.password,t);return this._sock.sQpushBytes(e),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateARDAuth(){if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;if(this._rfbCredentials.ardPublicKey!=null&&this._rfbCredentials.ardCredentials!=null)return this._sock.sQpushBytes(this._rfbCredentials.ardCredentials),this._sock.sQpushBytes(this._rfbCredentials.ardPublicKey),this._sock.flush(),this._rfbCredentials.ardCredentials=null,this._rfbCredentials.ardPublicKey=null,this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("read ard",4))return!1;let t=this._sock.rQshiftBytes(2),e=this._sock.rQshift16();if(this._sock.rQwait("read ard keylength",e*2,4))return!1;let s=this._sock.rQshiftBytes(e),n=this._sock.rQshiftBytes(e),r=Z.generateKey({name:"DH",g:t,p:s},!1,["deriveBits"]);return this._negotiateARDAuthAsync(e,n,r),!1}async _negotiateARDAuthAsync(t,e,s){const n=Z.exportKey("raw",s.publicKey),r=Z.deriveBits({name:"DH",public:e},s.privateKey,t*8),a=ye(this._rfbCredentials.username).substring(0,63),h=ye(this._rfbCredentials.password).substring(0,63),c=window.crypto.getRandomValues(new Uint8Array(128));for(let f=0;f<a.length;f++)c[f]=a.charCodeAt(f);c[a.length]=0;for(let f=0;f<h.length;f++)c[64+f]=h.charCodeAt(f);c[64+h.length]=0;const o=await Z.digest("MD5",r),l=await Z.importKey("raw",o,{name:"AES-ECB"},!1,["encrypt"]),_=await Z.encrypt({name:"AES-ECB"},l,c);this._rfbCredentials.ardCredentials=_,this._rfbCredentials.ardPublicKey=n,this._resumeAuthentication()}_negotiateTightUnixAuth(){return this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0?(this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1):(this._sock.sQpush32(this._rfbCredentials.username.length),this._sock.sQpush32(this._rfbCredentials.password.length),this._sock.sQpushString(this._rfbCredentials.username),this._sock.sQpushString(this._rfbCredentials.password),this._sock.flush(),this._rfbInitState="SecurityResult",!0)}_negotiateTightTunnels(t){const e={0:{vendor:"TGHT",signature:"NOTUNNEL"}},s={};for(let n=0;n<t;n++){const r=this._sock.rQshift32(),a=this._sock.rQshiftStr(4),h=this._sock.rQshiftStr(8);s[r]={vendor:a,signature:h}}return Q("Server Tight tunnel types: "+s),s[1]&&s[1].vendor==="SICR"&&s[1].signature==="SCHANNEL"&&(Q("Detected Siemens server. Assuming NOTUNNEL support."),s[0]={vendor:"TGHT",signature:"NOTUNNEL"}),s[0]?s[0].vendor!=e[0].vendor||s[0].signature!=e[0].signature?this._fail("Client's tunnel type had the incorrect vendor or signature"):(Q("Selected tunnel type: "+e[0]),this._sock.sQpush32(0),this._sock.flush(),!1):this._fail("Server wanted tunnels, but doesn't support the notunnel type")}_negotiateTightAuth(){if(!this._rfbTightVNC){if(this._sock.rQwait("num tunnels",4))return!1;const n=this._sock.rQshift32();if(n>0&&this._sock.rQwait("tunnel capabilities",16*n,4))return!1;if(this._rfbTightVNC=!0,n>0)return this._negotiateTightTunnels(n),!1}if(this._sock.rQwait("sub auth count",4))return!1;const t=this._sock.rQshift32();if(t===0)return this._rfbInitState="SecurityResult",!0;if(this._sock.rQwait("sub auth capabilities",16*t,4))return!1;const e={STDVNOAUTH__:1,STDVVNCAUTH_:2,TGHTULGNAUTH:129},s=[];for(let n=0;n<t;n++){this._sock.rQshift32();const r=this._sock.rQshiftStr(12);s.push(r)}Q("Server Tight authentication types: "+s);for(let n in e)if(s.indexOf(n)!=-1)switch(this._sock.sQpush32(e[n]),this._sock.flush(),Q("Selected authentication type: "+n),n){case"STDVNOAUTH__":return this._rfbInitState="SecurityResult",!0;case"STDVVNCAUTH_":return this._rfbAuthScheme=Et,!0;case"TGHTULGNAUTH":return this._rfbAuthScheme=Ws,!0;default:return this._fail("Unsupported tiny auth scheme (scheme: "+n+")")}return this._fail("No supported sub-auth types!")}_handleRSAAESCredentialsRequired(t){this.dispatchEvent(t)}_handleRSAAESServerVerification(t){this.dispatchEvent(t)}_negotiateRA2neAuth(){return this._rfbRSAAESAuthenticationState===null&&(this._rfbRSAAESAuthenticationState=new Na(this._sock,()=>this._rfbCredentials),this._rfbRSAAESAuthenticationState.addEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.addEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired)),this._rfbRSAAESAuthenticationState.checkInternalEvents(),this._rfbRSAAESAuthenticationState.hasStarted||this._rfbRSAAESAuthenticationState.negotiateRA2neAuthAsync().catch(t=>{t.message!=="disconnect normally"&&this._fail(t.message)}).then(()=>(this._rfbInitState="SecurityResult",!0)).finally(()=>{this._rfbRSAAESAuthenticationState.removeEventListener("serververification",this._eventHandlers.handleRSAAESServerVerification),this._rfbRSAAESAuthenticationState.removeEventListener("credentialsrequired",this._eventHandlers.handleRSAAESCredentialsRequired),this._rfbRSAAESAuthenticationState=null}),!1}_negotiateMSLogonIIAuth(){if(this._sock.rQwait("mslogonii dh param",24))return!1;if(this._rfbCredentials.username===void 0||this._rfbCredentials.password===void 0)return this.dispatchEvent(new CustomEvent("credentialsrequired",{detail:{types:["username","password"]}})),!1;const t=this._sock.rQshiftBytes(8),e=this._sock.rQshiftBytes(8),s=this._sock.rQshiftBytes(8),n=Z.generateKey({name:"DH",g:t,p:e},!0,["deriveBits"]),r=Z.exportKey("raw",n.publicKey),a=Z.deriveBits({name:"DH",public:s},n.privateKey,64),h=Z.importKey("raw",a,{name:"DES-CBC"},!1,["encrypt"]),c=ye(this._rfbCredentials.username).substring(0,255),o=ye(this._rfbCredentials.password).substring(0,63);let l=new Uint8Array(256),_=new Uint8Array(64);window.crypto.getRandomValues(l),window.crypto.getRandomValues(_);for(let f=0;f<c.length;f++)l[f]=c.charCodeAt(f);l[c.length]=0;for(let f=0;f<o.length;f++)_[f]=o.charCodeAt(f);return _[o.length]=0,l=Z.encrypt({name:"DES-CBC",iv:a},h,l),_=Z.encrypt({name:"DES-CBC",iv:a},h,_),this._sock.sQpushBytes(r),this._sock.sQpushBytes(l),this._sock.sQpushBytes(_),this._sock.flush(),this._rfbInitState="SecurityResult",!0}_negotiateAuthentication(){switch(this._rfbAuthScheme){case Ns:return this._rfbVersion>=3.8?this._rfbInitState="SecurityResult":this._rfbInitState="ClientInitialisation",!0;case Vs:return this._negotiateXvpAuth();case Os:return this._negotiateARDAuth();case Et:return this._negotiateStdVNCAuth();case zs:return this._negotiateTightAuth();case di:return this._negotiateVeNCryptAuth();case js:return this._negotiatePlainAuth();case Ws:return this._negotiateTightUnixAuth();case Hs:return this._negotiateRA2neAuth();case Gs:return this._negotiateMSLogonIIAuth();default:return this._fail("Unsupported auth scheme (scheme: "+this._rfbAuthScheme+")")}}_handleSecurityResult(){if(this._sock.rQwait("VNC auth response ",4))return!1;const t=this._sock.rQshift32();return t===0?(this._rfbInitState="ClientInitialisation",Q("Authentication OK"),!0):this._rfbVersion>=3.8?(this._rfbInitState="SecurityReason",this._securityContext="security result",this._securityStatus=t,!0):(this.dispatchEvent(new CustomEvent("securityfailure",{detail:{status:t}})),this._fail("Security handshake failed"))}_negotiateServerInit(){if(this._sock.rQwait("server initialization",24))return!1;const t=this._sock.rQshift16(),e=this._sock.rQshift16(),s=this._sock.rQshift8(),n=this._sock.rQshift8(),r=this._sock.rQshift8(),a=this._sock.rQshift8(),h=this._sock.rQshift16(),c=this._sock.rQshift16(),o=this._sock.rQshift16(),l=this._sock.rQshift8(),_=this._sock.rQshift8(),f=this._sock.rQshift8();this._sock.rQskipBytes(3);const x=this._sock.rQshift32();if(this._sock.rQwait("server init name",x,24))return!1;let k=this._sock.rQshiftStr(x);if(k=Vt(k,!0),this._rfbTightVNC){if(this._sock.rQwait("TightVNC extended server init header",8,24+x))return!1;const E=this._sock.rQshift16(),F=this._sock.rQshift16(),C=this._sock.rQshift16();this._sock.rQskipBytes(2);const M=(E+F+C)*16;if(this._sock.rQwait("TightVNC extended server init header",M,32+x))return!1;this._sock.rQskipBytes(16*E),this._sock.rQskipBytes(16*F),this._sock.rQskipBytes(16*C)}return re("Screen: "+t+"x"+e+", bpp: "+s+", depth: "+n+", bigEndian: "+r+", trueColor: "+a+", redMax: "+h+", greenMax: "+c+", blueMax: "+o+", redShift: "+l+", greenShift: "+_+", blueShift: "+f),this._setDesktopName(k),this._resize(t,e),this._viewOnly||this._keyboard.grab(),this._fbDepth=24,this._fbName==="Intel(r) AMT KVM"&&(ae("Intel AMT KVM only supports 8/16 bit depths. Using low color mode."),this._fbDepth=8),D.messages.pixelFormat(this._sock,this._fbDepth,!0),this._sendEncodings(),D.messages.fbUpdateRequest(this._sock,!1,0,0,this._fbWidth,this._fbHeight),this._updateConnectionState("connected"),!0}_sendEncodings(){const t=[];t.push(L.encodingCopyRect),this._fbDepth==24&&(Js&&t.push(L.encodingH264),t.push(L.encodingTight),t.push(L.encodingTightPNG),t.push(L.encodingZRLE),t.push(L.encodingJPEG),t.push(L.encodingHextile),t.push(L.encodingRRE),t.push(L.encodingZlib)),t.push(L.encodingRaw),t.push(L.pseudoEncodingQualityLevel0+this._qualityLevel),t.push(L.pseudoEncodingCompressLevel0+this._compressionLevel),t.push(L.pseudoEncodingDesktopSize),t.push(L.pseudoEncodingLastRect),t.push(L.pseudoEncodingQEMUExtendedKeyEvent),t.push(L.pseudoEncodingQEMULedEvent),t.push(L.pseudoEncodingExtendedDesktopSize),t.push(L.pseudoEncodingXvp),t.push(L.pseudoEncodingFence),t.push(L.pseudoEncodingContinuousUpdates),t.push(L.pseudoEncodingDesktopName),t.push(L.pseudoEncodingExtendedClipboard),t.push(L.pseudoEncodingExtendedMouseButtons),this._fbDepth==24&&(t.push(L.pseudoEncodingVMwareCursor),t.push(L.pseudoEncodingCursor)),D.messages.clientEncodings(this._sock,t)}_initMsg(){switch(this._rfbInitState){case"ProtocolVersion":return this._negotiateProtocolVersion();case"Security":return this._negotiateSecurity();case"Authentication":return this._negotiateAuthentication();case"SecurityResult":return this._handleSecurityResult();case"SecurityReason":return this._handleSecurityReason();case"ClientInitialisation":return this._sock.sQpush8(this._shared?1:0),this._sock.flush(),this._rfbInitState="ServerInitialisation",!0;case"ServerInitialisation":return this._negotiateServerInit();default:return this._fail("Unknown init state (state: "+this._rfbInitState+")")}}_resumeAuthentication(){setTimeout(this._initMsg.bind(this),0)}_handleSetColourMapMsg(){return Q("SetColorMapEntries"),this._fail("Unexpected SetColorMapEntries message")}_handleServerCutText(){if(Q("ServerCutText"),this._sock.rQwait("ServerCutText header",7,1))return!1;this._sock.rQskipBytes(3);let t=this._sock.rQshift32();if(t=ui(t),this._sock.rQwait("ServerCutText content",Math.abs(t),8))return!1;if(t>=0){const e=this._sock.rQshiftStr(t);if(this._viewOnly)return!0;this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:e}}))}else{t=Math.abs(t);const e=this._sock.rQshift32();let s=e&65535,n=e&4278190080;if(!!(n&Zs)){this._clipboardServerCapabilitiesFormats={},this._clipboardServerCapabilitiesActions={};for(let h=0;h<=15;h++){let c=1<<h;s&c&&(this._clipboardServerCapabilitiesFormats[c]=!0,this._sock.rQshift32())}for(let h=24;h<=31;h++){let c=1<<h;this._clipboardServerCapabilitiesActions[c]=!!(n&c)}let a=[Zs,At,Ys,et,Xt];D.messages.extendedClipboardCaps(this._sock,a,{extendedClipboardFormatText:0})}else if(n===At){if(this._viewOnly)return!0;this._clipboardText!=null&&this._clipboardServerCapabilitiesActions[Xt]&&s&be&&D.messages.extendedClipboardProvide(this._sock,[be],[this._clipboardText])}else if(n===Ys){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[et]&&(this._clipboardText!=null?D.messages.extendedClipboardNotify(this._sock,[be]):D.messages.extendedClipboardNotify(this._sock,[]))}else if(n===et){if(this._viewOnly)return!0;this._clipboardServerCapabilitiesActions[At]&&s&be&&D.messages.extendedClipboardRequest(this._sock,[be])}else if(n===Xt){if(this._viewOnly||!(s&be))return!0;this._clipboardText=null;let a=this._sock.rQshiftBytes(t-4),h=new It,c=null;h.setInput(a);for(let o=0;o<=15;o++){let l=1<<o;if(s&l){let _=0,f=h.inflate(4);_|=f[0]<<24,_|=f[1]<<16,_|=f[2]<<8,_|=f[3];let x=h.inflate(_);l===be&&(c=x)}}if(h.setInput(null),c!==null){let o="";for(let l=0;l<c.length;l++)o+=String.fromCharCode(c[l]);c=o,c=Vt(c),c.length>0&&c.charAt(c.length-1)==="\0"&&(c=c.slice(0,-1)),c=c.replaceAll(`\r
|
|
3
3
|
`,`
|
|
4
4
|
`),this.dispatchEvent(new CustomEvent("clipboard",{detail:{text:c}}))}}else return this._fail("Unexpected action in extended clipboard message: "+n)}return!0}_handleServerFenceMsg(){if(this._sock.rQwait("ServerFence header",8,1))return!1;this._sock.rQskipBytes(3);let t=this._sock.rQshift32(),e=this._sock.rQshift8();if(this._sock.rQwait("ServerFence payload",e,9))return!1;e>64&&(ae("Bad payload length ("+e+") in fence response"),e=64);const s=this._sock.rQshiftStr(e);return this._supportsFence=!0,t&1<<31?(t&=3,D.messages.clientFence(this._sock,t,s),!0):this._fail("Unexpected fence response")}_handleXvpMsg(){if(this._sock.rQwait("XVP version and message",3,1))return!1;this._sock.rQskipBytes(1);const t=this._sock.rQshift8(),e=this._sock.rQshift8();switch(e){case 0:G("XVP operation failed");break;case 1:this._rfbXvpVer=t,re("XVP extensions enabled (version "+this._rfbXvpVer+")"),this._setCapability("power",!0);break;default:this._fail("Illegal server XVP message (msg: "+e+")");break}return!0}_normalMsg(){let t;this._FBU.rects>0?t=0:t=this._sock.rQshift8();let e,s;switch(t){case 0:return s=this._framebufferUpdate(),s&&!this._enabledContinuousUpdates&&D.messages.fbUpdateRequest(this._sock,!0,0,0,this._fbWidth,this._fbHeight),s;case 1:return this._handleSetColourMapMsg();case 2:return Q("Bell"),this.dispatchEvent(new CustomEvent("bell",{detail:{}})),!0;case 3:return this._handleServerCutText();case 150:return e=!this._supportsContinuousUpdates,this._supportsContinuousUpdates=!0,this._enabledContinuousUpdates=!1,e&&(this._enabledContinuousUpdates=!0,this._updateContinuousUpdates(),re("Enabling continuous updates.")),!0;case 248:return this._handleServerFenceMsg();case 250:return this._handleXvpMsg();default:return this._fail("Unexpected server message (type "+t+")"),Q("sock.rQpeekBytes(30): "+this._sock.rQpeekBytes(30)),!0}}_framebufferUpdate(){if(this._FBU.rects===0){if(this._sock.rQwait("FBU header",3,1))return!1;if(this._sock.rQskipBytes(1),this._FBU.rects=this._sock.rQshift16(),this._display.pending())return this._flushing=!0,this._display.flush().then(()=>{this._flushing=!1,this._sock.rQwait("message",1)||this._handleMessage()}),!1}for(;this._FBU.rects>0;){if(this._FBU.encoding===null){if(this._sock.rQwait("rect header",12))return!1;this._FBU.x=this._sock.rQshift16(),this._FBU.y=this._sock.rQshift16(),this._FBU.width=this._sock.rQshift16(),this._FBU.height=this._sock.rQshift16(),this._FBU.encoding=this._sock.rQshift32(),this._FBU.encoding>>=0}if(!this._handleRect())return!1;this._FBU.rects--,this._FBU.encoding=null}return this._display.flip(),!0}_handleRect(){switch(this._FBU.encoding){case L.pseudoEncodingLastRect:return this._FBU.rects=1,!0;case L.pseudoEncodingVMwareCursor:return this._handleVMwareCursor();case L.pseudoEncodingCursor:return this._handleCursor();case L.pseudoEncodingQEMUExtendedKeyEvent:return this._qemuExtKeyEventSupported=!0,!0;case L.pseudoEncodingDesktopName:return this._handleDesktopName();case L.pseudoEncodingDesktopSize:return this._resize(this._FBU.width,this._FBU.height),!0;case L.pseudoEncodingExtendedDesktopSize:return this._handleExtendedDesktopSize();case L.pseudoEncodingExtendedMouseButtons:return this._extendedPointerEventSupported=!0,!0;case L.pseudoEncodingQEMULedEvent:return this._handleLedEvent();default:return this._handleDataRect()}}_handleVMwareCursor(){const t=this._FBU.x,e=this._FBU.y,s=this._FBU.width,n=this._FBU.height;if(this._sock.rQwait("VMware cursor encoding",1))return!1;const r=this._sock.rQshift8();this._sock.rQshift8();let a;const h=4;if(r==0){if(a=new Array(s*n*h),this._sock.rQwait("VMware cursor classic encoding",s*n*h*2,2))return!1;let o=new Array(s*n);for(let _=0;_<s*n;_++)o[_]=this._sock.rQshift32();let l=new Array(s*n);for(let _=0;_<s*n;_++)l[_]=this._sock.rQshift32();for(let _=0;_<s*n;_++)if(o[_]==0){let f=l[_],x=f>>8&255,k=f>>16&255,E=f>>24&255;a[_*h]=x,a[_*h+1]=k,a[_*h+2]=E,a[_*h+3]=255}else(o[_]&-256)==-256?l[_]==0?(a[_*h]=0,a[_*h+1]=0,a[_*h+2]=0,a[_*h+3]=0):(l[_]&-256,a[_*h]=0,a[_*h+1]=0,a[_*h+2]=0,a[_*h+3]=255):(a[_*h]=0,a[_*h+1]=0,a[_*h+2]=0,a[_*h+3]=255)}else if(r==1){if(this._sock.rQwait("VMware cursor alpha encoding",s*n*4,2))return!1;a=new Array(s*n*h);for(let c=0;c<s*n;c++){let o=this._sock.rQshift32();a[c*4]=o>>24&255,a[c*4+1]=o>>16&255,a[c*4+2]=o>>8&255,a[c*4+3]=o&255}}else return ae("The given cursor type is not supported: "+r+" given."),!1;return this._updateCursor(a,t,e,s,n),!0}_handleCursor(){const t=this._FBU.x,e=this._FBU.y,s=this._FBU.width,n=this._FBU.height,r=s*n*4,a=Math.ceil(s/8)*n;let h=r+a;if(this._sock.rQwait("cursor encoding",h))return!1;const c=this._sock.rQshiftBytes(r),o=this._sock.rQshiftBytes(a);let l=new Uint8Array(s*n*4),_=0;for(let f=0;f<n;f++)for(let x=0;x<s;x++){let k=f*Math.ceil(s/8)+Math.floor(x/8),E=o[k]<<x%8&128?255:0;l[_]=c[_+2],l[_+1]=c[_+1],l[_+2]=c[_],l[_+3]=E,_+=4}return this._updateCursor(l,t,e,s,n),!0}_handleDesktopName(){if(this._sock.rQwait("DesktopName",4))return!1;let t=this._sock.rQshift32();if(this._sock.rQwait("DesktopName",t,4))return!1;let e=this._sock.rQshiftStr(t);return e=Vt(e,!0),this._setDesktopName(e),!0}_handleLedEvent(){if(this._sock.rQwait("LED status",1))return!1;let t=this._sock.rQshift8(),e=!!(t&2),s=!!(t&4);return this._remoteCapsLock=s,this._remoteNumLock=e,!0}_handleExtendedDesktopSize(){if(this._sock.rQwait("ExtendedDesktopSize",4))return!1;const t=this._sock.rQpeek8();let e=4+t*16;if(this._sock.rQwait("ExtendedDesktopSize",e))return!1;const s=!this._supportsSetDesktopSize;this._supportsSetDesktopSize=!0,this._sock.rQskipBytes(1),this._sock.rQskipBytes(3);for(let n=0;n<t;n+=1)n===0?(this._screenID=this._sock.rQshift32(),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._sock.rQskipBytes(2),this._screenFlags=this._sock.rQshift32()):this._sock.rQskipBytes(16);if(this._FBU.x===1&&(this._pendingRemoteResize=!1),this._FBU.x===1&&this._FBU.y!==0){let n="";switch(this._FBU.y){case 1:n="Resize is administratively prohibited";break;case 2:n="Out of resources";break;case 3:n="Invalid screen layout";break;default:n="Unknown reason";break}ae("Server did not accept the resize request: "+n)}else this._resize(this._FBU.width,this._FBU.height);return s&&this._requestRemoteResize(),this._FBU.x===1&&this._FBU.y===0&&this._requestRemoteResize(),!0}_handleDataRect(){let t=this._decoders[this._FBU.encoding];if(!t)return this._fail("Unsupported encoding (encoding: "+this._FBU.encoding+")"),!1;try{return t.decodeRect(this._FBU.x,this._FBU.y,this._FBU.width,this._FBU.height,this._sock,this._display,this._fbDepth)}catch(e){return this._fail("Error decoding rect: "+e),!1}}_updateContinuousUpdates(){this._enabledContinuousUpdates&&D.messages.enableContinuousUpdates(this._sock,!0,0,0,this._fbWidth,this._fbHeight)}_resize(t,e){this._fbWidth=t,this._fbHeight=e,this._display.resize(this._fbWidth,this._fbHeight),this._updateClip(),this._updateScale(),this._updateContinuousUpdates(),this._saveExpectedClientSize()}_xvpOp(t,e){this._rfbXvpVer<t||(re("Sending XVP operation "+e+" (version "+t+")"),D.messages.xvpOp(this._sock,t,e))}_updateCursor(t,e,s,n,r){this._cursorImage={rgbaPixels:t,hotx:e,hoty:s,w:n,h:r},this._refreshCursor()}_shouldShowDotCursor(){if(!this._showDotCursor)return!1;for(let t=3;t<this._cursorImage.rgbaPixels.length;t+=4)if(this._cursorImage.rgbaPixels[t])return!1;return!0}_refreshCursor(){if(this._rfbConnectionState!=="connecting"&&this._rfbConnectionState!=="connected")return;const t=this._shouldShowDotCursor()?D.cursors.dot:this._cursorImage;this._cursor.change(t.rgbaPixels,t.hotx,t.hoty,t.w,t.h)}static genDES(t,e){const s=t.split("").map(r=>r.charCodeAt(0)),n=Z.importKey("raw",s,{name:"DES-ECB"},!1,["encrypt"]);return Z.encrypt({name:"DES-ECB"},n,e)}}D.messages={keyEvent(i,t,e){i.sQpush8(4),i.sQpush8(e),i.sQpush16(0),i.sQpush32(t),i.flush()},QEMUExtendedKeyEvent(i,t,e,s){function n(a){const h=s>>8,c=s&255;return h===224&&c<127?c|128:a}i.sQpush8(255),i.sQpush8(0),i.sQpush16(e),i.sQpush32(t);const r=n(s);i.sQpush32(r),i.flush()},pointerEvent(i,t,e,s){i.sQpush8(5),s=s&127,i.sQpush8(s),i.sQpush16(t),i.sQpush16(e),i.flush()},extendedPointerEvent(i,t,e,s){i.sQpush8(5);let n=s>>7&255;if(n&252)throw new Error("Invalid mouse button mask: "+s);let r=s&127;r|=128,i.sQpush8(r),i.sQpush16(t),i.sQpush16(e),i.sQpush8(n),i.flush()},_buildExtendedClipboardFlags(i,t){let e=new Uint8Array(4),s=0,n=0;for(let r=0;r<i.length;r++)n|=i[r];for(let r=0;r<t.length;r++)s|=t[r];return e[0]=n>>24,e[1]=0,e[2]=0,e[3]=s,e},extendedClipboardProvide(i,t,e){let s=new ba,n=[];for(let h=0;h<t.length;h++){if(t[h]!=be)throw new Error("Unsupported extended clipboard format for Provide message.");e[h]=e[h].replace(/\r\n|\r|\n/gm,`\r
|