var Z="AGFzbQEAAAABQAtgAAF/YAAAYAF/AX9gAX8AYAJ/fwBgBH9/f38AYAN/f38AYAJ/fwF/YAV/f39/fwBgBH9/f38Bf2ADf39/AX8DQUAAAAAAAAEAAAICAAAAAAACAgICAAAAAAAAAAAAAAAAAAAAAAEAAAMDBAQFBQUEBgcBCAkGAQEECgYGBAQDAAQEBAUBcAEBAQUDAQBkBgkBfwFBgIDAAAsH/gUsBm1lbW9yeQIACmdldE1heENvbHMAAAtnZXRDZWxsU2l6ZQABDmdldERlYnVnTG9nTWF4AAIUZ2V0RGVidWdMb2dFbnRyeVNpemUAARBnZXREZWJ1Z0xvZ0NvdW50AAMOZ2V0RGVidWdMb2dQdHIABA1jbGVhclJlc3BvbnNlAAUOZ2V0UmVzcG9uc2VMZW4ABg5nZXRSZXNwb25zZVB0cgAHFGdldFNjcm9sbGJhY2tMaW5lTGVuAAgRZ2V0U2Nyb2xsYmFja0xpbmUACRtnZXRTY3JvbGxiYWNrRGlzY2FyZGVkQ291bnQAChJnZXRTY3JvbGxiYWNrQ291bnQACxlnZXRIeXBlcmxpbmtSZWplY3RlZENvdW50AAwRZ2V0SHlwZXJsaW5rQ291bnQADRRnZXRIeXBlcmxpbmtDYXBhY2l0eQAODGdldExpbmtJZExlbgAPDGdldExpbmtJZFB0cgAQDWdldExpbmtVcmlMZW4AEQ1nZXRMaW5rVXJpUHRyABIPZ2V0VGl0bGVDaGFuZ2VkABMLZ2V0VGl0bGVMZW4AFAtnZXRUaXRsZVB0cgAVH2dldFN5bmNocm9uaXplZE91dHB1dEdlbmVyYXRpb24AFhVnZXRTeW5jaHJvbml6ZWRPdXRwdXQAFw5nZXRGb2N1c0V2ZW50cwAYC2dldE1vdXNlU2dyABkQZ2V0TW91c2VUcmFja2luZwAaEWdldFVzaW5nQWx0U2NyZWVuABsRZ2V0QnJhY2tldGVkUGFzdGUAHBBnZXRDdXJzb3JLZXlzQXBwAB0HZ2V0Um93cwAeB2dldENvbHMAHxBnZXRDdXJzb3JWaXNpYmxlACAMZ2V0Q3Vyc29yQ29sACEMZ2V0Q3Vyc29yUm93ACIKY2xlYXJEaXJ0eQAjC2dldERpcnR5UHRyACQKZ2V0R3JpZFB0cgAlCndyaXRlQnl0ZXMAJg5nZXRXcml0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AzsB9rGYgQAMAQtBACADOwH2sZiBAAsgAUECaiEBDAALC+YBAQJ/I4CAgIAAQRBrIgIkgICAgABBACEDIAJBADoACyACIAE6AAkgAiAAOgAIIAJCADcDACACQQAtAKCK8IAAIgE6AAogAUEEIAFBBEkbQQF0IQECQANAIAEgA0YNASACIANqIANB/InwgABqLwEAOwEAIANBAmohAwwACwtBAC0AlMSggQAiA0EMbCIBIAIpAwA3AeaumIEAIAFB7q6YgQBqIAJBCGooAgA2AQBBACADQQFqQR9xOgCUxKCBAEEAQQAoAsyumIEAQQFqIgNBfyADGzYCzK6YgQAgAkEQaiSAgICAAAt4AQJ/AkAgAEH//wNxIgJBAC8B9ofwgABPDQAgAkGAGGxB9IfAgABqIQBBACEDAkADQCADQQAvAfSH8IAATw0BIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgAgAEEMaiEAIANBAWohAwwACwsgAkEBOgD4h/CAAAsLsAIBA38CQCAAQf//A3EiBEEALwH2h/CAAE8NACABQf//A3EiBUEALwH0h/CAACIAIAUgAEkbIQECQCAFIAJB//8DcSIGIAAgBiAASRsiBk8NACABIARBgBhsQfSHwIAAaiIFIAFBDGxqLQAJRSABQf//A3FBAEdxayEBIAJB//8DcSAATw0AAkAgBSAGQQxsai0ACQ0AIAZBAWohBgwBCyAGIAUgBkF/akH//wNxQQxsai0ACUECRmohBgtBACAGQf//A3EiACABQf//A3EiAmsiASABIABLGyEBIARBgBhsIAJBDGxqQfSHwIAAaiEAAkADQCABRQ0BIAAgAykCADcCACAAQQhqIANBCGooAgA2AgAgAEEMaiEAIAFBf2ohAQwACwsgBEEBOgD4h/CAAAsL4QEBBH8CQCACQf//A3FFDQAgAUH//wNxIABB//8DcU0NACABIABrIgQgAkH//wNxIgIgBEH//wNxIgQgAiAESRsiBWtB//8DcSEGQQAhAgNAAkAgBiACRw0AIAUgAGpB//8DcSECA0AgAEH//wNxIAJPDQMgACADEKmAgIAAIABBAWohAAwACwsgASACQX9zaiIHQf//A3EhBAJAQYAYRQ0AIARBgBhsQfSHwIAAaiAHIAVrQf//A3FBgBhsQfSHwIAAakGAGPwKAAALIARB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";function EA(i){let A=atob(i),e=new Uint8Array(A.length);for(let t=0;t<A.length;t++)e[t]=A.charCodeAt(t);return e.buffer}var _=class i{get dv(){return this._dvBuffer!==this.memory.buffer&&(this._dvBuffer=this.memory.buffer,this._dv=new DataView(this.memory.buffer)),this._dv}constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this._dvBuffer=null,this.linkCache=new Map,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let e;if(A){let s=await fetch(A);if(!s.ok)throw new Error(`[wterm] Failed to load WASM from ${A}: ${s.status} ${s.statusText}`);e=await s.arrayBuffer()}else e=EA(Z);let{instance:t}=await WebAssembly.instantiate(e);return new i(t)}init(A,e){this.exports.init(A,e),this.linkCache.clear(),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols()}writeString(A,e){let t=this.encoder.encode(A);this.writeRaw(t,e)}writeRaw(A,e){let t=0;for(;t<A.length;){let s=Math.min(A.length-t,8192);new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192).set(A.subarray(t,t+s)),this.exports.writeBytes(s),t+=s,e?.()}}getCell(A,e){let t=this.gridPtr+(A*this.maxCols+e)*this.cellSize,s=this.dv,r={char:s.getUint32(t,!0),fg:s.getUint16(t+4,!0),bg:s.getUint16(t+6,!0),flags:s.getUint8(t+8),width:s.getUint8(t+9)};return Object.assign(r,this._readLink(s.getUint16(t+10,!0))),r}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}mouseTracking(){let A=this.exports.getMouseTracking();return A===1e3||A===1002?A:0}mouseSgr(){return this.exports.getMouseSgr()!==0}focusEvents(){return this.exports.getFocusEvents()!==0}synchronizedOutput(){return this.exports.getSynchronizedOutput()!==0}synchronizedOutputGeneration(){return this.exports.getSynchronizedOutputGeneration()}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),e=this.exports.getTitleLen(),t=new Uint8Array(this.memory.buffer,A,e);return this.decoder.decode(t)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let e=this.exports.getResponsePtr(),t=new Uint8Array(this.memory.buffer,e,A),s=this.decoder.decode(t);return this.exports.clearResponse(),s}getResourceState(){let A=this.exports.getHyperlinkCapacity?.(),e=this.exports.getHyperlinkCount?.(),t=this.exports.getHyperlinkRejectedCount?.();return A===void 0||e===void 0||t===void 0?{}:{hyperlinks:{capacity:A,used:e,rejected:t,saturated:e>=A}}}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackDiscardedCount(){return this.exports.getScrollbackDiscardedCount()}getScrollbackCell(A,e){let s=this.exports.getScrollbackLine(A)+e*this.cellSize,r=this.dv,o={char:r.getUint32(s,!0),fg:r.getUint16(s+4,!0),bg:r.getUint16(s+6,!0),flags:r.getUint8(s+8),width:r.getUint8(s+9)};return Object.assign(o,this._readLink(r.getUint16(s+10,!0))),o}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}getUnhandledSequences(){let A=this.exports.getDebugLogCount();if(A===0)return[];let e=this.exports.getDebugLogPtr(),t=this.exports.getDebugLogEntrySize(),s=this.exports.getDebugLogMax(),r=Math.min(A,s),o=new DataView(this.memory.buffer),n=[],Q=A>=s?A%s:0;for(let E=0;E<r;E++){let g=(Q+E)%s,l=e+g*t,a=o.getUint8(l);if(a===0)continue;let h=o.getUint8(l+1),I=o.getUint8(l+2),x=[];for(let L=0;L<Math.min(I,4);L++)x.push(o.getUint16(l+4+L*2,!0));n.push({final:String.fromCharCode(a),private:h?String.fromCharCode(h):"",paramCount:I,params:x})}return n}resize(A,e){this.exports.resizeTerminal(A,e),this._updatePointers()}_readLink(A){if(A===0)return;let e=this.linkCache.get(A);if(e)return e;let t=this.exports.getLinkUriLen(A);if(t===0)return;let s=this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkUriPtr(A),t)),r=this.exports.getLinkIdLen(A),o=r===0?void 0:this.decoder.decode(new Uint8Array(this.memory.buffer,this.exports.getLinkIdPtr(A),r)),n={linkUri:s,linkId:o,linkKey:o?`e\0${o}\0${s}`:`b\0${A}`};return this.linkCache.set(A,n),n}};function eA(i){let A=i>>16&255,e=i>>8&255,t=i&255;return`rgb(${A},${e},${t})`}function sA(i){if(i===256)return null;if(i<16)return`var(--term-color-${i})`;if(i<232){let e=i-16,t=Math.floor(e/36)*51,s=Math.floor(e/6)%6*51,r=e%6*51;return`rgb(${t},${s},${r})`}let A=(i-232)*10+8;return`rgb(${A},${A},${A})`}function iA(i,A){return A!==void 0?eA(A):sA(i)}function K(i,A){return A!==void 0?eA(A):sA(i)}function W(i,A,e,t,s){let r=i,o=A,n=t,Q=s;if(e&32){let h=r;r=o,o=h;let I=n;n=Q,Q=I,n===void 0&&r===256&&(r=0),Q===void 0&&o===256&&(o=7)}let E=iA(r,n),g=K(o,Q),l="";E&&(l+=`color:${E};`),g&&(l+=`background:${g};`),e&1&&(l+="font-weight:bold;"),e&2&&(l+="opacity:0.5;"),e&4&&(l+="font-style:italic;");let a=[];return e&8&&a.push("underline"),e&128&&a.push("line-through"),a.length&&(l+=`text-decoration:${a.join(" ")};`),e&64&&(l+="visibility:hidden;"),l}function k(i){return i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function CA(i){if(i)try{let A=new URL(i);return A.protocol==="http:"||A.protocol==="https:"?A.href:void 0}catch{return}}function cA(i){return i.linkUri?i.linkKey??`fallback\0${i.linkId??""}\0${i.linkUri}`:""}function lA(i,A,e,t,s){let r=i,o=A,n=t,Q=s;return e&32&&([r,o]=[o,r],[n,Q]=[Q,n],n===void 0&&r===256&&(r=0),Q===void 0&&o===256&&(o=7)),{fg:iA(r,n)||"var(--term-fg)",bg:K(o,Q)||"var(--term-bg)"}}var M="round(calc(var(--term-row-height) * 0.125), 1px)",V="round(calc(var(--term-row-height) * 0.25), 1px)",X="round(calc(var(--term-row-height) * 0.375), 1px)",N="round(calc(var(--term-row-height) * 0.5), 1px)",j="round(calc(var(--term-row-height) * 0.625), 1px)",AA="round(calc(var(--term-row-height) * 0.75), 1px)",tA="round(calc(var(--term-row-height) * 0.875), 1px)";function aA(i,A,e){switch(i){case 9600:return`linear-gradient(${A} ${N},${e} ${N})`;case 9601:return`linear-gradient(${e} ${tA},${A} ${tA})`;case 9602:return`linear-gradient(${e} ${AA},${A} ${AA})`;case 9603:return`linear-gradient(${e} ${j},${A} ${j})`;case 9604:return`linear-gradient(${e} ${N},${A} ${N})`;case 9605:return`linear-gradient(${e} ${X},${A} ${X})`;case 9606:return`linear-gradient(${e} ${V},${A} ${V})`;case 9607:return`linear-gradient(${e} ${M},${A} ${M})`;case 9608:return A;case 9609:return`linear-gradient(to right,${A} 87.5%,${e} 87.5%)`;case 9610:return`linear-gradient(to right,${A} 75%,${e} 75%)`;case 9611:return`linear-gradient(to right,${A} 62.5%,${e} 62.5%)`;case 9612:return`linear-gradient(to right,${A} 50%,${e} 50%)`;case 9613:return`linear-gradient(to right,${A} 37.5%,${e} 37.5%)`;case 9614:return`linear-gradient(to right,${A} 25%,${e} 25%)`;case 9615:return`linear-gradient(to right,${A} 12.5%,${e} 12.5%)`;case 9616:return`linear-gradient(to right,${e} 50%,${A} 50%)`;case 9617:return`color-mix(in srgb,${A} 25%,${e})`;case 9618:return`color-mix(in srgb,${A} 50%,${e})`;case 9619:return`color-mix(in srgb,${A} 75%,${e})`;case 9620:return`linear-gradient(${A} ${M},${e} ${M})`;case 9621:return`linear-gradient(to right,${e} 87.5%,${A} 87.5%)`;default:{let s={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[i];if(!s)return A;let[r,o,n,Q]=s;if(r&&o&&n&&Q)return A;let E=[],g=["0 0","100% 0","0 100%","100% 100%"];return s.forEach((l,a)=>{l&&E.push(`linear-gradient(${A},${A}) ${g[a]}/50% 50% no-repeat`)}),E.push(e),E.join(",")}}}var U=class{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this.prevContainerBg="",this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1,this._scrollbackTopSpacer=null,this._scrollbackBottomSpacer=null,this.container=A}setup(A,e){this.cols=A,this.rows=e,this.container.innerHTML="",this.rowEls=[],this.prevRowBg=[],this._scrollbackRowEls=[],this._scrollbackStartKey=0,this._renderedScrollbackCount=-1,this._renderedDiscardedCount=-1;let t=document.createDocumentFragment();this._scrollbackTopSpacer=document.createElement("div"),this._scrollbackTopSpacer.className="term-scrollback-spacer",t.appendChild(this._scrollbackTopSpacer),this._scrollbackBottomSpacer=document.createElement("div"),this._scrollbackBottomSpacer.className="term-scrollback-spacer",t.appendChild(this._scrollbackBottomSpacer);for(let s=0;s<e;s++){let r=document.createElement("div");r.className="term-row",t.appendChild(r),this.rowEls.push(r)}this.container.appendChild(t),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,e,t,s,r){let o="",n="",Q="",E=[],g=0,l="",a,h="",I=(C,B,c)=>{let u=CA(c),p=u?B:"";p!==h&&(h&&(o+="</a>"),p&&(o+=`<a class="term-link" href="${k(u)}" target="_blank" rel="noopener noreferrer">`),h=p),o+=C},x=C=>{if(!Q)return;let B=k(Q),c="";if(s>=g&&s<C){let u=s-g,p=E.slice(0,u).join(""),w=E[u]||" ",d=E.slice(u+1).join("");p&&(c+=n?`<span style="${n}">${k(p)}</span>`:`<span>${k(p)}</span>`),c+=n?`<span class="term-cursor" style="${n}">${k(w)}</span>`:`<span class="term-cursor">${k(w)}</span>`,d&&(c+=n?`<span style="${n}">${k(d)}</span>`:`<span>${k(d)}</span>`)}else c+=n?`<span style="${n}">${B}</span>`:`<span>${B}</span>`;I(c,l,a),Q="",E=[]},L=(C,B,c,u,p)=>{let w=C?` class="${C}"`:"",d=B?` style="${B}"`:"";I(`<span${w}${d}>${k(c)}</span>`,u,p)};for(let C=0;C<this.cols;C++){let B=e(C),c=C<t,u=c?B.char:0,p=c?B.width??1:1,w=c?cA(B):"",d=c?B.linkUri:void 0;if(c&&p===0){x(C),C>0&&(e(C-1).width??1)===2||L(C===s?"term-cursor":"",""," ",w,d),n="",l="",a=void 0,Q="",E=[],g=C+1;continue}if(c&&p===2){if(x(C),C+1>=this.cols){L(C===s?"term-cursor":"",""," ",w,d),n="",l="",a=void 0,Q="",E=[],g=C+1;continue}let f=B.chars??(u>=32?String.fromCodePoint(u):" "),b=W(B.fg,B.bg,B.flags,B.fgRgb,B.bgRgb),R=s>=C&&s<C+2?"term-wide term-cursor":"term-wide";L(R,b,f,w,d),n="",l="",a=void 0,Q="",E=[],g=C+2;continue}if(c&&u>=9600&&u<=9631){x(C);let f=lA(B.fg,B.bg,B.flags,B.fgRgb,B.bgRgb),b=C===s?"term-block term-cursor":"term-block",R=aA(u,f.fg,f.bg),gA=B.flags&2?"opacity:0.5;":"";I(`<span class="${b}" style="background:${R};${gA}"></span>`,w,d),n="",l="",a=void 0,Q="",E=[],g=C+1}else{let f=B.chars??(c&&u>=32?String.fromCodePoint(u):" "),b=c?W(B.fg,B.bg,B.flags,B.fgRgb,B.bgRgb):"";b!==n||w!==l?(x(C),n=b,l=w,a=d,Q=f,E=[f],g=C):(Q+=f,E.push(f))}}x(this.cols),h&&(o+="</a>"),A.innerHTML=o;let D="";if(t>=this.cols&&this.cols>0){let C=e(this.cols-1),B=C.bg,c=C.bgRgb;C.flags&32&&(B=C.fg,c=C.fgRgb,c===void 0&&B===256&&(B=7)),D=K(B,c)||""}let y=D?`0 1px 0 ${D}`:"";r>=0?D!==(this.prevRowBg[r]??"")&&(A.style.background=D,A.style.boxShadow=y,this.prevRowBg[r]=D):(A.style.background=D,A.style.boxShadow=y)}_buildScrollbackRowEl(A,e){let t=document.createElement("div");t.className="term-row term-scrollback-row";let s=A.getScrollbackLineLen(e);return this._buildRowContent(t,r=>A.getScrollbackCell(e,r),s,-1,-1),t}syncScrollback(A,e){let t=A.getScrollbackCount(),s=e?.rowHeight??0,r=e!==void 0&&s>0,o=e?.overscanRows??10,n=e?.scrollbackDiscardedCount!==void 0,Q=e?.scrollbackDiscardedCount??0,E=e&&e.clientHeight>0?e.clientHeight:this.rows*s,g=r?Math.floor(e.scrollTop/s):0,l=r?Math.ceil(E/s):t,a=r?Math.max(0,Math.min(t,g-o)):0,h=r?Math.max(a,Math.min(t,g+l+o)):t,I=this.container.ownerDocument.getSelection();I!==null&&!I.isCollapsed&&(this.container.contains(I.anchorNode)||this.container.contains(I.focusNode))&&this._scrollbackRowEls.length>0&&(a=Math.min(a,Math.max(0,this._scrollbackStartKey-Q)),h=Math.max(h,Math.min(t,this._scrollbackStartKey-Q+this._scrollbackRowEls.length)));let L=Q+a;if(n&&t===this._renderedScrollbackCount&&Q===this._renderedDiscardedCount&&L===this._scrollbackStartKey&&h-a===this._scrollbackRowEls.length)return;let D=new Map;for(let c=0;c<this._scrollbackRowEls.length;c++)D.set(this._scrollbackStartKey+c,this._scrollbackRowEls[c]);let y=Q+h;for(let[c,u]of D)(c<L||c>=y)&&u.remove();let C=[],B=this._scrollbackTopSpacer?.nextSibling??null;for(let c=a;c<h;c++){let u=Q+c,p=t-1-c,w=this._buildScrollbackRowEl(A,p),d=D.get(u),f=w,b=!1;d&&d.innerHTML===w.innerHTML&&d.style.cssText===w.style.cssText?f=d:d&&(d.replaceWith(w),b=!0),!b&&f!==B&&this.container.insertBefore(f,B??this._scrollbackBottomSpacer),B=f.nextSibling,C.push(f)}this._scrollbackRowEls=C,this._scrollbackStartKey=L,this._renderedScrollbackCount=t,this._renderedDiscardedCount=Q,this._scrollbackTopSpacer&&(this._scrollbackTopSpacer.style.height=`${a*s}px`),this._scrollbackBottomSpacer&&(this._scrollbackBottomSpacer.style.height=`${(t-h)*s}px`)}render(A,e){let t=A.getRows(),s=A.getCols(),r=!1;(t!==this.rows||s!==this.cols)&&(this.setup(s,t),r=!0),this.syncScrollback(A,e);let o=A.getCursor(),n=o.visible,Q=o.row!==this.prevCursorRow||o.col!==this.prevCursorCol;for(let g=0;g<this.rows;g++){let l=r||A.isDirtyRow(g),a=g===this.prevCursorRow&&Q,h=g===o.row;if(l||a||h&&Q){let I=h&&n?o.col:-1;this._buildRowContent(this.rowEls[g],x=>A.getCell(g,x),this.cols,I,g)}}if(this.prevCursorRow=o.row,this.prevCursorCol=o.col,r||A.isDirtyRow(this.rows-1)){let g=A.getCell(this.rows-1,this.cols-1),l=g.bg,a=g.bgRgb;g.flags&32&&(l=g.fg,a=g.fgRgb,a===void 0&&l===256&&(l=7));let h=K(l,a)||"";h!==this.prevContainerBg&&(this.container.style.background=h,this.prevContainerBg=h)}A.clearDirty()}};function H(i,A){return A.platform.startsWith("Mac")?i.metaKey:i.ctrlKey}var hA={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},IA={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},uA={Enter:"\r",Backspace:"\x7F",Tab:" ",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"},v=class{constructor(A,e,t,s=()=>null){this.composing=!1,this.mouseButtons=0,this.focused=!1,this.element=A,this.onData=e,this.getBridge=t,this.getCellSize=s,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let r=this.textarea.style;r.position="absolute",r.left="-9999px",r.top="0",r.width="1px",r.height="1px",r.opacity="0",r.overflow="hidden",r.border="0",r.padding="0",r.margin="0",r.outline="none",r.resize="none",r.pointerEvents="none",r.caretColor="transparent",r.color="transparent",r.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>{this.focused||(this.focused=!0,this.element.classList.add("focused"),this.getBridge()?.focusEvents?.()&&this.onData("\x1B[I"))},this._onBlur=()=>{this.focused=!1,this.element.classList.remove("focused"),this.stopMouseCapture(),this.getBridge()?.focusEvents?.()&&this.onData("\x1B[O")},this._onMouseDown=o=>this.handleMouse(o,"press"),this._onMouseMove=o=>{this.mouseButtons!==0&&this.handleMouse(o,"move")},this._onMouseUp=o=>{this.mouseButtons!==0&&(this.handleMouse(o,"release"),this.mouseButtons=o.buttons&7,this.mouseButtons===0&&this.stopMouseCapture())},this._onWheel=o=>this.handleMouse(o,"wheel"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur),this.element.addEventListener("mousedown",this._onMouseDown),this.element.addEventListener("wheel",this._onWheel,{passive:!1})}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.removeEventListener("mousedown",this._onMouseDown),this.stopMouseCapture(),this.element.removeEventListener("wheel",this._onWheel),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let t=window.getSelection();if(t&&t.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("");else if(A.key==="a"){A.preventDefault();let t=window.getSelection();if(t){let s=document.createRange();s.selectNodeContents(this.element),t.removeAllRanges(),t.addRange(s)}}return}A.preventDefault();let e=this.keyToSequence(A);e&&this.onData(e)}handlePaste(A){A.preventDefault();let e=A.clipboardData?.getData("text");if(!e)return;let t=this.getBridge();if(t&&t.bracketedPaste()){let s=e.replace(/\x1b/g,"");this.onData("\x1B[200~"+s+"\x1B[201~")}else this.onData(e)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){this.composing=!1,A.data&&this.onData(A.data),this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;A&&(this.onData(A),this.textarea.value="")}handleMouse(A,e){let t=this.getBridge(),s=t?.mouseTracking?.()??0;if(!t||s===0||!t.mouseSgr?.()||e==="press"&&H(A,this.element.ownerDocument.defaultView?.navigator??navigator)&&A.target instanceof Element&&A.target.closest(".term-link")||e==="press"&&(A.shiftKey||A.button>2)||e==="release"&&A.button>2)return;let r=A.buttons&7;if(e==="move"&&(s!==1002||r===0))return;let o=this.element.ownerDocument.defaultView;if(!o)return;let n=this.element.querySelector(".term-row:not(.term-scrollback-row)"),Q=this.element.getBoundingClientRect(),E=n?.getBoundingClientRect(),g=this.getCellSize(),l,a,h,I;if(E&&g)l=E.left,a=E.top,h=g.charWidth,I=g.rowHeight;else{let B=o.getComputedStyle(this.element),c=parseFloat(B.borderLeftWidth)||0,u=parseFloat(B.borderRightWidth)||0,p=parseFloat(B.borderTopWidth)||0,w=parseFloat(B.borderBottomWidth)||0,d=parseFloat(B.paddingLeft)||0,f=parseFloat(B.paddingRight)||0,b=parseFloat(B.paddingTop)||0,R=parseFloat(B.paddingBottom)||0;l=E?.left??Q.left+c+d,a=E?.top??Q.top+p+b,h=(Q.width-c-u-d-f)/t.getCols(),I=(Q.height-p-w-b-R)/t.getRows()}if(h<=0||I<=0)return;e==="press"&&(this.textarea.focus({preventScroll:!0}),this.focused||this._onFocus(),this.mouseButtons=r||(A.button===1?4:A.button===2?2:1),o.addEventListener("mousemove",this._onMouseMove),o.addEventListener("mouseup",this._onMouseUp));let x=Math.max(1,Math.min(t.getCols(),Math.floor((A.clientX-l)/h)+1)),L=Math.max(1,Math.min(t.getRows(),Math.floor((A.clientY-a)/I)+1)),D=(A.shiftKey?4:0)|(A.altKey?8:0)|(A.ctrlKey?16:0),y,C="M";if(e==="wheel"){let B=A;if(Math.abs(B.deltaX)>Math.abs(B.deltaY)){if(B.deltaX===0)return;y=(B.deltaX<0?66:67)|D}else{if(B.deltaY===0)return;y=(B.deltaY<0?64:65)|D}}else y=(e==="move"?r&4?1:r&2?2:0:A.button===1?1:A.button===2?2:0)|D|(e==="move"?32:0),e==="release"&&(C="m");A.preventDefault(),this.onData(`\x1B[<${y};${x};${L}${C}`)}stopMouseCapture(){this.mouseButtons=0;let A=this.element.ownerDocument.defaultView;A?.removeEventListener("mousemove",this._onMouseMove),A?.removeEventListener("mouseup",this._onMouseUp)}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let n=A.key.toLowerCase().charCodeAt(0);if(n>=97&&n<=122)return String.fromCharCode(n-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"";if(A.key==="]")return"";if(A.key==="^")return"";if(A.key==="_")return""}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let e=uA[A.key];if(e)return A.altKey?"\x1B"+e:e;let t=this.getBridge(),o=(t&&t.cursorKeysApp()?IA:hA)[A.key];return o?A.altKey?"\x1B"+o:o:A.key.length===1&&!A.ctrlKey&&!A.metaKey?A.altKey?"\x1B"+A.key:A.key:null}};var dA={1:"bold",2:"dim",4:"italic",8:"underline",16:"blink",32:"reverse",64:"invisible",128:"strikethrough"};function wA(i){let A=[];for(let[e,t]of Object.entries(dA))i&Number(e)&&A.push(t);return A}var z=27;function fA(i){let A=[],e=Date.now(),t=0,s=0,r=()=>{if(t>s){let o=i.slice(s,t);o.length>0&&!/^[\x00-\x1f]+$/.test(o)&&A.push({ts:e,type:"text",raw:o.slice(0,60)})}};for(;t<i.length;){if(i.charCodeAt(t)!==z){t++;continue}r();let o=t;if(t++,t>=i.length)break;let n=i[t];if(n==="["){t++;let Q="";t<i.length&&(i[t]==="?"||i[t]===">"||i[t]==="!")&&(Q=i[t],t++);let E="";for(;t<i.length&&(i.charCodeAt(t)>=48&&i.charCodeAt(t)<=59||i[t]===":");)E+=i[t],t++;for(;t<i.length&&i.charCodeAt(t)>=32&&i.charCodeAt(t)<=47;)t++;let g="";t<i.length&&i.charCodeAt(t)>=64&&i.charCodeAt(t)<=126&&(g=i[t],t++);let l=i.slice(o,t),a=E?E.split(/[;:]/).map(Number).filter(I=>!isNaN(I)):[],h=g==="m"?"sgr":"csi";A.push({ts:e,type:h,raw:l,params:a.length>0?a:void 0,private:Q||void 0,final:g})}else if(n==="]"){for(t++;t<i.length&&i.charCodeAt(t)!==7&&!(i.charCodeAt(t)===z&&t+1<i.length&&i[t+1]==="\\");)t++;t<i.length&&(i.charCodeAt(t)===7?t++:i.charCodeAt(t)===z&&(t+=2));let Q=i.slice(o,t);A.push({ts:e,type:"osc",raw:Q.slice(0,80)})}else n>=" "&&n<="~"?(t++,A.push({ts:e,type:"esc",raw:i.slice(o,t),final:n})):t++;s=t}return r(),A}var rA=500,G=class{constructor(){this._traces=[],this._bridge=null,this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}get traces(){return this._traces}get perf(){return this._perf}setBridge(A){this._bridge=A}traceWrite(A){let e=typeof A=="string"?A:new TextDecoder().decode(A),t=fA(e);for(let s of t)this._traces.push(s);this._traces.length>rA&&(this._traces=this._traces.slice(-rA))}recordRender(A,e){this._perf.frameCount++,this._perf.totalRenderMs+=A,this._perf.avgRenderMs=this._perf.totalRenderMs/this._perf.frameCount,A>this._perf.maxRenderMs&&(this._perf.maxRenderMs=A),this._perf.lastDirtyRows=e}resetPerf(){this._perf={frameCount:0,totalRenderMs:0,avgRenderMs:0,maxRenderMs:0,lastDirtyRows:0}}cell(A,e){if(!this._bridge)return null;let t=this._bridge.getCell(A,e);return{...t,charStr:t.chars??(t.char>=32?String.fromCodePoint(t.char):""),flagNames:wA(t.flags)}}row(A){if(!this._bridge)return null;let e=this._bridge.getCols(),t=[];for(let s=0;s<e;s++)t.push(this.cell(A,s));return t}grid(){if(!this._bridge)return null;let A=this._bridge.getCursor();return{rows:this._bridge.getRows(),cols:this._bridge.getCols(),cursor:A,altScreen:this._bridge.usingAltScreen(),scrollbackCount:this._bridge.getScrollbackCount()}}unhandled(){return this._bridge?this._bridge.getUnhandledSequences():[]}dump(A=50){let e=this._traces.slice(-A);console.group(`%cwterm debug \u2014 last ${e.length} traces`,"color: #569cd6; font-weight: bold");for(let t of e){let s=t.type==="sgr"?"%cSGR":t.type==="csi"?"%cCSI":t.type==="osc"?"%cOSC":t.type==="esc"?"%cESC":"%cTXT",r=t.type==="sgr"?"background:#2d5a27;color:#fff;padding:1px 4px;border-radius:2px":t.type==="csi"?"background:#1e4a7a;color:#fff;padding:1px 4px;border-radius:2px":"background:#555;color:#fff;padding:1px 4px;border-radius:2px",o=[t.private?`private=${t.private}`:"",t.params?`params=[${t.params}]`:"",t.final?`final=${t.final}`:""].filter(Boolean).join(" ");console.log(`${s} ${t.raw.slice(0,40)}`,r,o?` ${o}`:"")}console.groupEnd()}dumpUnhandled(){let A=this.unhandled();if(A.length===0){console.log("%cwterm debug \u2014 no unhandled sequences","color: #6a9955");return}console.group(`%cwterm debug \u2014 ${A.length} unhandled sequences`,"color: #d7ba7d; font-weight: bold");for(let e of A)console.log(` final=${e.final} private=${e.private||"-"} params=[${e.params.slice(0,e.paramCount)}]`);console.groupEnd()}};var pA=1e3,J=class{constructor(A,e={}){this.bridge=null,this.debug=null,this.renderer=null,this.input=null,this.rafId=null,this._synchronizedOutputTimer=null,this._synchronizedOutputState="idle",this._synchronizedOutputGeneration=0,this._rendererNeedsSetup=!1,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this._scrollbackDiscardedCount=0,this._programmaticScrollTop=null,this._pendingResizeScrollTop=null,this._rowHeight=0,this._charWidth=0,this.element=A,this._coreOption=e.core,this.wasmUrl=e.wasmUrl,this.cols=e.cols||80,this.rows=e.rows||24,this.autoResize=e.autoResize!==!1,this._debugEnabled=e.debug??!1,this.onData=e.onData||null,this.onTitle=e.onTitle||null,this.onResize=e.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),e.cursorBlink&&this.element.classList.add("cursor-blink"),this._onClickFocus=t=>{let s=t.target;if(s instanceof Element&&s.closest(".term-link")){if(H(t,this.element.ownerDocument.defaultView?.navigator??navigator)||t.detail===0)return;t.preventDefault()}let r=window.getSelection();(!r||r.isCollapsed)&&this.input?.focus()},this.element.addEventListener("click",this._onClickFocus),this._onModifierChange=t=>{this.element.classList.toggle("link-modifier-active",H(t,this.element.ownerDocument.defaultView?.navigator??navigator))},this._onWindowBlur=()=>{this.element.classList.remove("link-modifier-active")},this.element.ownerDocument.addEventListener("keydown",this._onModifierChange),this.element.ownerDocument.addEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.addEventListener("blur",this._onWindowBlur),this._onScroll=()=>{if(this._pendingResizeScrollTop===null){if(this._programmaticScrollTop!==null&&this.element.scrollTop===this._programmaticScrollTop){this._programmaticScrollTop=null;return}this._programmaticScrollTop=null,this._shouldScrollToBottom=!1,this._scheduleRender()}},this.element.addEventListener("scroll",this._onScroll,{passive:!0})}async init(){try{if(this._coreOption?this.bridge=this._coreOption:this.bridge=await _.load(this.wasmUrl),this._destroyed)return this;this.bridge.init(this.cols,this.rows),this._debugEnabled&&(this.debug=new G,this.debug.setBridge(this.bridge),globalThis.__wterm=this),this._setRowHeight(),this._measureCharSize(),this.renderer=new U(this._container),this.renderer.setup(this.cols,this.rows),this.input=new v(this.element,A=>{this._scrollToBottom(),this.onData?this.onData(A):this.write(A)},()=>this.bridge,()=>this._charWidth>0&&this._rowHeight>0?{charWidth:this._charWidth,rowHeight:this._rowHeight}:null),this.autoResize?this._setupResizeObserver():this._lockHeight(),this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),new Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){let A=this.element,e=A.scrollHeight-A.clientHeight;if(e<=0){this._setScrollTop(0);return}this._setScrollTop(e)}_setScrollTop(A){this.element.scrollTop!==A&&(this._programmaticScrollTop=A,this.element.scrollTop=A)}write(A){if(!this.bridge)return;this.debug&&this.debug.traceWrite(A),this._shouldScrollToBottom=this._isScrolledToBottom();let e,t=!1,s=()=>{let n=this._drainResponses();!t&&n.hasError&&(t=!0,e=n.error)};typeof A=="string"?this.bridge.writeString(A,s):this.bridge.writeRaw(A,s);let r=this.bridge.synchronizedOutput?.()??!1,o=this.bridge.synchronizedOutputGeneration?.()??0;if(this._updateSynchronizedOutput(r,o),this._synchronizedOutputState!=="held"&&(this._setupRendererIfNeeded(),this._scheduleRender()),s(),t)throw e}resize(A,e){if(!this.bridge)return;this._shouldScrollToBottom=this._pendingResizeScrollTop===null&&this._isScrolledToBottom(),this.cols=A,this.rows=e,this.bridge.resize(A,e);let t=this.bridge.synchronizedOutput?.()??!1,s=this.bridge.synchronizedOutputGeneration?.()??0;this._updateSynchronizedOutput(t,s)?this._rendererNeedsSetup=!0:(this._setupRenderer(A,e),this._scheduleRender()),this.onResize&&this.onResize(A,e)}focus(){this.input?this.input.focus():this.element.focus()}_scheduleRender(){this.rafId==null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()}))}_cancelScheduledRender(){this.rafId!=null&&(cancelAnimationFrame(this.rafId),this.rafId=null)}_updateSynchronizedOutput(A,e){return A?this._synchronizedOutputState==="held"&&e!==this._synchronizedOutputGeneration?(this._armSynchronizedOutputFallback(e),!0):(this._synchronizedOutputState==="passthrough"&&e!==this._synchronizedOutputGeneration&&(this._synchronizedOutputState="idle"),this._synchronizedOutputState!=="idle"?this._synchronizedOutputState==="held":(this._synchronizedOutputState="held",this._cancelScheduledRender(),this._armSynchronizedOutputFallback(e),!0)):(this._synchronizedOutputState==="held"&&this._cancelSynchronizedOutputFallback(),this._synchronizedOutputState="idle",!1)}_armSynchronizedOutputFallback(A){this._cancelSynchronizedOutputFallback(),this._synchronizedOutputGeneration=A,this._synchronizedOutputTimer=setTimeout(()=>{this._synchronizedOutputState!=="held"||this._synchronizedOutputGeneration!==A||(this._synchronizedOutputTimer=null,this._synchronizedOutputState="passthrough",this._setupRendererIfNeeded(),this._cancelScheduledRender(),this._doRender())},pA)}_cancelSynchronizedOutputFallback(){this._synchronizedOutputTimer!=null&&(clearTimeout(this._synchronizedOutputTimer),this._synchronizedOutputTimer=null)}_setupRendererIfNeeded(){this._rendererNeedsSetup&&(this._setupRenderer(this.cols,this.rows),this._rendererNeedsSetup=!1)}_setupRenderer(A,e){!this._shouldScrollToBottom&&this._pendingResizeScrollTop===null&&(this._pendingResizeScrollTop=this.element.scrollTop),this.renderer?.setup(A,e)}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;let A=0,e=this.debug?performance.now():0;if(this.debug)for(let g=0;g<this.rows;g++)this.bridge.isDirtyRow(g)&&A++;let t=this._rowHeight||17,s=this.bridge.getScrollbackCount(),r=this.bridge.getScrollbackDiscardedCount?.(),o=r!==void 0&&r>=this._scrollbackDiscardedCount?r-this._scrollbackDiscardedCount:0;r!==void 0&&(this._scrollbackDiscardedCount=r);let n=this._pendingResizeScrollTop!==null?this._pendingResizeScrollTop:this.element.scrollTop;!this._shouldScrollToBottom&&o>0&&(n=Math.max(0,n-o*t),this._pendingResizeScrollTop!==null?this._pendingResizeScrollTop=n:this._setScrollTop(n)),this.renderer.render(this.bridge,{scrollTop:this._shouldScrollToBottom?Math.max(0,(s+this.rows)*t-this.element.clientHeight):n,clientHeight:this.element.clientHeight,rowHeight:t,scrollbackDiscardedCount:r}),this.debug&&this.debug.recordRender(performance.now()-e,A);let Q=s>0;if(this.element.classList.toggle("has-scrollback",Q),this._shouldScrollToBottom)this._scrollToBottom();else if(this._pendingResizeScrollTop!==null){let g=this._pendingResizeScrollTop;this._pendingResizeScrollTop=null,this._setScrollTop(g)}else!Q&&this.element.scrollTop!==0&&(this.element.scrollTop=0);let E=this.bridge.getTitle();E!==null&&this.onTitle&&this.onTitle(E),this._drainResponses()}_drainResponses(){if(!this.bridge)return{hasError:!1};let A,e,t=!1;for(;(A=this.bridge.getResponse())!==null;)try{this.onData&&this.onData(A)}catch(s){t||(t=!0,e=s)}return{hasError:t,error:e}}_lockHeight(){let A=this._rowHeight||17,e=this.rows*A,t=getComputedStyle(this.element),s=(parseFloat(t.paddingTop)||0)+(parseFloat(t.paddingBottom)||0);t.boxSizing==="border-box"&&(s+=(parseFloat(t.borderTopWidth)||0)+(parseFloat(t.borderBottomWidth)||0)),this.element.style.height=`${e+s}px`}_setRowHeight(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute",A.textContent="W",this._container.appendChild(A);let e=A.getBoundingClientRect().height;if(A.remove(),e>0){let t=Math.ceil(e);this._rowHeight=t,this.element.style.setProperty("--term-row-height",`${t}px`)}}_measureCharSize(){let A=document.createElement("div");A.className="term-row",A.style.visibility="hidden",A.style.position="absolute";let e=document.createElement("span");e.textContent="W",A.appendChild(e),this._container.appendChild(A);let t=e.getBoundingClientRect().width,s=A.getBoundingClientRect().height;return A.remove(),t===0||s===0?null:(this._charWidth=t,this._rowHeight=s,{charWidth:t,rowHeight:s})}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let{charWidth:e,rowHeight:t}=A;this.resizeObserver=new ResizeObserver(s=>{let r=this._measureCharSize();r&&(e=r.charWidth,t=r.rowHeight);for(let o of s){let{width:n,height:Q}=o.contentRect,E=Math.max(1,Math.floor(n/e)),g=Math.max(1,Math.floor(Q/t));(E!==this.cols||g!==this.rows)&&this.resize(E,g)}}),this.resizeObserver.observe(this.element)}destroy(){this._destroyed=!0,this._cancelScheduledRender(),this._cancelSynchronizedOutputFallback(),this.resizeObserver&&this.resizeObserver.disconnect(),this.input&&this.input.destroy(),this.element.removeEventListener("click",this._onClickFocus),this.element.removeEventListener("scroll",this._onScroll),this.element.ownerDocument.removeEventListener("keydown",this._onModifierChange),this.element.ownerDocument.removeEventListener("keyup",this._onModifierChange),this.element.ownerDocument.defaultView?.removeEventListener("blur",this._onWindowBlur),this.element.classList.remove("link-modifier-active"),this.element.innerHTML="",this.debug&&globalThis.__wterm===this&&delete globalThis.__wterm,this.debug=null}};var O="shellphone_refresh_token",mA=new URLSearchParams(window.location.search),nA=mA.get("token")||"",S=document.getElementById("status"),Y=document.getElementById("terminal"),T=document.getElementById("toolbar"),q="ontouchstart"in window||navigator.maxTouchPoints>0,m=null,P=null,oA=!1;function BA(){m&&m.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"resize",cols:F.cols,rows:F.rows}))}var F=new J(Y,{cursorBlink:!0,autoResize:!0,onData(i){m&&m.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"input",data:i}))},onResize(i,A){BA()}});await F.init();q&&(T.style.display="flex");var DA={Escape:"\x1B",Tab:" ",ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowLeft:"\x1B[D",ArrowRight:"\x1B[C",Enter:"\r"};T.addEventListener("pointerdown",i=>{let A=i.target.closest("button");if(!A||!A.dataset.key)return;i.preventDefault();let e=DA[A.dataset.key]||A.dataset.key;m&&m.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"input",data:e}))});function $(){let i=window.visualViewport,A=i?window.innerHeight-i.height:0,e=i?i.height:window.innerHeight,t=q?T.offsetHeight:0;q&&(T.style.bottom=A+"px"),Y.style.height=e-t+"px"}window.visualViewport&&(window.visualViewport.addEventListener("resize",$),window.visualViewport.addEventListener("scroll",$));$();if(q){let i=0,A=0,e=!1,t=6;Y.addEventListener("touchstart",s=>{i=s.touches[0].pageY,A=0,e=F.bridge&&F.bridge.usingAltScreen()},{passive:!0}),Y.addEventListener("touchmove",s=>{if(!e)return;s.preventDefault();let r=i-s.touches[0].pageY;for(i=s.touches[0].pageY,A+=r;Math.abs(A)>=t;){let o=A>0;A-=o?t:-t,Y.dispatchEvent(new WheelEvent("wheel",{deltaY:o?1:-1,deltaMode:WheelEvent.DOM_DELTA_PIXEL,bubbles:!0,cancelable:!0}))}},{passive:!1})}function SA(i){let e=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;if(i){let t=localStorage.getItem(O);return t?`${e}?refresh=${encodeURIComponent(t)}`:null}return`${e}?token=${encodeURIComponent(nA)}`}function QA(i){let A=SA(i);if(!A){S.textContent="No credentials \u2014 scan QR code again",S.className="error";return}m=new WebSocket(A),m.binaryType="arraybuffer",m.addEventListener("open",()=>{S.textContent="Connected",S.className="connected",setTimeout(()=>{S.style.display="none"},2e3),BA()}),m.addEventListener("message",e=>{if(e.data instanceof ArrayBuffer)F.write(new Uint8Array(e.data));else{let t=JSON.parse(e.data);if(t.type==="refresh_token")localStorage.setItem(O,t.token);else if(t.type==="exit"){oA=!0;let s=t.code!=null?t.code:"?";F.write(`\r
\x1B[90m[process exited with code ${s}]\x1B[0m\r
`),S.textContent="Session closed",S.className="error",S.style.display="block",localStorage.removeItem(O)}}}),m.addEventListener("close",()=>{oA||(S.textContent="Reconnecting...",S.className="reconnecting",S.style.display="block",xA())}),m.addEventListener("error",()=>{S.textContent="Connection error",S.className="error",S.style.display="block"})}function xA(){P||(P=setTimeout(()=>{P=null,QA(!0)},2e3))}window._term=F;window._ws=()=>m;var LA=localStorage.getItem(O);QA(!!LA&&!nA);