9remote 2.0.22 → 2.0.26

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/cli.cjs CHANGED
@@ -1,74 +1,105 @@
1
1
  #!/usr/bin/env node
2
2
  const __importMetaUrl = require('url').pathToFileURL(__filename).href;
3
- var ts=Object.create;var jn=Object.defineProperty;var ns=Object.getOwnPropertyDescriptor;var rs=Object.getOwnPropertyNames;var os=Object.getPrototypeOf,is=Object.prototype.hasOwnProperty;var ss=(e,r)=>()=>(e&&(r=e(e=0)),r);var z=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),as=(e,r)=>{for(var n in r)jn(e,n,{get:r[n],enumerable:!0})},cs=(e,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of rs(r))!is.call(e,t)&&t!==n&&jn(e,t,{get:()=>r[t],enumerable:!(o=ns(r,t))||o.enumerable});return e};var A=(e,r,n)=>(n=e!=null?ts(os(e)):{},cs(r||!e||!e.__esModule?jn(n,"default",{value:e,enumerable:!0}):n,e));var si={};as(si,{initTray:()=>Tr,killTray:()=>Nn,openBrowser:()=>Zt,showTrayNotification:()=>Sr,updateTrayTooltip:()=>$n});function pa(){if(process.platform==="win32"){for(let e of fa)try{if(Xt.default.existsSync(e))return Xt.default.readFileSync(e).toString("base64")}catch{}return ti}return ti}function da(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function ma(){let{port:e,tunnelUrl:r,running:n}=qt,o=n?r?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
3
+ var ls=Object.create;var Gn=Object.defineProperty;var us=Object.getOwnPropertyDescriptor;var fs=Object.getOwnPropertyNames;var ps=Object.getPrototypeOf,ds=Object.prototype.hasOwnProperty;var ms=(e,r)=>()=>(e&&(r=e(e=0)),r);var ne=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),hs=(e,r)=>{for(var n in r)Gn(e,n,{get:r[n],enumerable:!0})},gs=(e,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of fs(r))!ds.call(e,t)&&t!==n&&Gn(e,t,{get:()=>r[t],enumerable:!(o=us(r,t))||o.enumerable});return e};var A=(e,r,n)=>(n=e!=null?ls(ps(e)):{},gs(r||!e||!e.__esModule?Gn(n,"default",{value:e,enumerable:!0}):n,e));var ui={};hs(ui,{initTray:()=>Tr,killTray:()=>Dn,openBrowser:()=>en,showTrayNotification:()=>Er,updateTrayTooltip:()=>Nn});function Sa(){if(process.platform==="win32"){for(let e of va)try{if(Zt.default.existsSync(e))return Zt.default.readFileSync(e).toString("base64")}catch{}return ii}return ii}function Ta(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function Ea(){let{port:e,tunnelUrl:r,running:n}=zt,o=n?r?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
4
4
  Local: ${t}
5
- Right-click to open / quit`}function ii(){let{port:e,tunnelUrl:r}=qt,n=process.platform==="win32",o=r?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:pa(),title:n?`9Remote - Port ${e}`:"",tooltip:ma(),items:[{title:o,tooltip:r||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function ha(){let e=[Be.default.join(oi,"systray2"),"systray2"];for(let r of e)try{let n=require(r);return n.default?.default||n.default||n}catch{}return null}async function Tr({port:e,onQuit:r,onOpenUI:n}){if(!da())return null;try{let o=ha();if(!o)return null;let t=process.platform==="darwin"?"tray_darwin_release":"tray_linux_release",i=Be.default.join(oi,"systray2","traybin",t);try{Xt.default.existsSync(i)&&Xt.default.chmodSync(i,493)}catch{}return qt={port:e,tunnelUrl:"",running:!0},fe=new o({menu:ii(),debug:!1,copyDir:!0}),fe.onClick(s=>{let a=s.item?.title||s.item;a==="Open Web UI"?n?.():a==="Shutdown"&&(r?.(),Nn(),setTimeout(()=>process.exit(0),500))}),typeof fe.ready=="function"?fe.ready().catch(()=>{}):(fe.onReady(()=>{}),fe.onError(()=>{})),fe}catch{return null}}function $n({tunnelUrl:e,running:r}={}){if(e!==void 0&&(qt.tunnelUrl=e),r!==void 0&&(qt.running=r),!!fe)try{fe.sendAction({type:"update-menu",menu:ii(),seq_id:-1})}catch{}}function Nn(){let e=fe;if(fe=null,e)try{e.kill(!0)}catch{}}function Sr({title:e="9Remote",message:r}){let n=process.platform;if(r){if(n==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(r)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(r)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,De.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(r)}" with title "${o(e)}"`;(0,De.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,De.spawn)("notify-send",[e,r],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Zt(e){let r=process.platform;if(r==="win32"){try{(0,De.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,De.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{(0,De.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let n=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of n)try{(0,De.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var De,Xt,Be,ni,ri,oi,fe,qt,ei,ti,fa,wt=ss(()=>{De=require("child_process"),Xt=A(require("fs"),1),Be=A(require("path"),1),ni=A(require("os"),1),ri=require("url"),oi=(0,Be.join)(ni.default.homedir(),".9remote","runtime","node_modules"),fe=null,qt={port:0,tunnelUrl:"",running:!1},ei=Be.default.dirname((0,ri.fileURLToPath)(__importMetaUrl)),ti="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",fa=[Be.default.join(ei,"assets","trayIcon.ico"),Be.default.join(ei,"..","assets","trayIcon.ico")]});var fi=z((tn,xr)=>{(function(e,r){typeof tn=="object"&&typeof xr=="object"?xr.exports=r(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],r):typeof tn=="object"?tn["electron-machine-id"]=r(require("child_process"),require("crypto")):e["electron-machine-id"]=r(e.child_process,e.crypto)})(tn,function(e,r){return(function(n){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return n[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=n,o.c=t,o.p="",o(0)})([function(n,o,t){n.exports=t(34)},function(n,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=n.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(n,o){var t=n.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(n,o,t){var i=t(9);n.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(n,o,t){n.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(n,o,t){var i=t(12),s=t(17);n.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(n,o){var t=n.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(n,o,t){var i=t(14);n.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(n,o){var t={}.hasOwnProperty;n.exports=function(i,s){return t.call(i,s)}},function(n,o){n.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(n,o){n.exports={}},function(n,o){var t={}.toString;n.exports=function(i){return t.call(i).slice(8,-1)}},function(n,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(n,o,t){var i=t(42),s=t(15);n.exports=function(a){return i(s(a))}},function(n,o){n.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(n,o){n.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(n,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);n.exports=function(c){return a?s.createElement(c):{}}},function(n,o){n.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(n,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");n.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(n,o,t){var i=t(29)("keys"),s=t(33);n.exports=function(a){return i[a]||(i[a]=s(a))}},function(n,o){var t=Math.ceil,i=Math.floor;n.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(n,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};n.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(n,o){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(n,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var m,v,E,k=f&u.F,x=f&u.G,b=f&u.S,_=f&u.P,T=f&u.B,h=f&u.W,I=x?s:s[p]||(s[p]={}),O=I[l],N=x?i:b?i[p]:(i[p]||{})[l];x&&(d=p);for(m in d)v=!k&&N&&N[m]!==void 0,v&&m in I||(E=v?N[m]:d[m],I[m]=x&&typeof N[m]!="function"?d[m]:T&&v?a(E,i):h&&N[m]==E?(function(H){var se=function(ae,Q,Se){if(this instanceof H){switch(arguments.length){case 0:return new H;case 1:return new H(ae);case 2:return new H(ae,Q)}return new H(ae,Q,Se)}return H.apply(this,arguments)};return se[l]=H[l],se})(E):_&&typeof E=="function"?a(Function.call,E):E,_&&((I.virtual||(I.virtual={}))[m]=E,f&u.R&&O&&!O[m]&&c(O,m,E)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,n.exports=u},function(n,o){n.exports=function(t){try{return!!t()}catch{return!0}}},function(n,o,t){n.exports=t(2).document&&document.documentElement},function(n,o,t){n.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(n,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),u=t(10),f=t(45),p=t(18),d=t(52),m=t(1)("iterator"),v=!([].keys&&"next"in[].keys()),E="@@iterator",k="keys",x="values",b=function(){return this};n.exports=function(_,T,h,I,O,N,H){f(h,T,I);var se,ae,Q,Se=function(w){if(!v&&w in J)return J[w];switch(w){case k:return function(){return new h(this,w)};case x:return function(){return new h(this,w)}}return function(){return new h(this,w)}},it=T+" Iterator",Ve=O==x,bt=!1,J=_.prototype,_e=J[m]||J[E]||O&&J[O],q=_e||Se(O),At=O?Ve?Se("entries"):q:void 0,g=T=="Array"&&J.entries||_e;if(g&&(Q=d(g.call(new _)),Q!==Object.prototype&&(p(Q,it,!0),i||l(Q,m)||c(Q,m,b))),Ve&&_e&&_e.name!==x&&(bt=!0,q=function(){return _e.call(this)}),i&&!H||!v&&!bt&&J[m]||c(J,m,q),u[T]=q,u[it]=b,O)if(se={values:Ve?q:Se(x),keys:N?q:Se(k),entries:At},H)for(ae in se)ae in J||a(J,ae,se[ae]);else s(s.P+s.F*(v||bt),T,se);return se}},function(n,o){n.exports=!0},function(n,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});n.exports=function(c){return a[c]||(a[c]={})}},function(n,o,t){var i,s,a,c=t(7),l=t(41),u=t(25),f=t(16),p=t(2),d=p.process,m=p.setImmediate,v=p.clearImmediate,E=p.MessageChannel,k=0,x={},b="onreadystatechange",_=function(){var h=+this;if(x.hasOwnProperty(h)){var I=x[h];delete x[h],I()}},T=function(h){_.call(h.data)};m&&v||(m=function(h){for(var I=[],O=1;arguments.length>O;)I.push(arguments[O++]);return x[++k]=function(){l(typeof h=="function"?h:Function(h),I)},i(k),k},v=function(h){delete x[h]},t(11)(d)=="process"?i=function(h){d.nextTick(c(_,h,1))}:E?(s=new E,a=s.port2,s.port1.onmessage=T,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(h){p.postMessage(h+"","*")},p.addEventListener("message",T,!1)):i=b in f("script")?function(h){u.appendChild(f("script"))[b]=function(){u.removeChild(this),_.call(h)}}:function(h){setTimeout(c(_,h,1),0)}),n.exports={set:m,clear:v}},function(n,o,t){var i=t(20),s=Math.min;n.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(n,o,t){var i=t(9);n.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(n,o){var t=0,i=Math.random();n.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(n,o,t){"use strict";function i(b){return b&&b.__esModule?b:{default:b}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(b){return(0,m.createHash)("sha256").update(b).digest("hex")}function c(b){switch(E){case"darwin":return b.split("IOPlatformUUID")[1].split(`
6
- `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return b.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(b){var _=c((0,d.execSync)(x[E]).toString());return b?_:a(_)}function u(b){return new p.default(function(_,T){return(0,d.exec)(x[E],{},function(h,I,O){if(h)return T(new Error("Error while obtaining machine id: "+h.stack));var N=c(I.toString());return _(b?N:a(N))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),m=t(71),v=process,E=v.platform,k={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},x={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:k[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(n,o,t){n.exports={default:t(36),__esModule:!0}},function(n,o,t){t(66),t(68),t(69),t(67),n.exports=t(6).Promise},function(n,o){n.exports=function(){}},function(n,o){n.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(n,o,t){var i=t(13),s=t(31),a=t(62);n.exports=function(c){return function(l,u,f){var p,d=i(l),m=s(d.length),v=a(f,m);if(c&&u!=u){for(;m>v;)if(p=d[v++],p!=p)return!0}else for(;m>v;v++)if((c||v in d)&&d[v]===u)return c||v||0;return!c&&-1}}},function(n,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=n.exports=function(m,v,E,k,x){var b,_,T,h,I=x?function(){return m}:u(m),O=i(E,k,v?2:1),N=0;if(typeof I!="function")throw TypeError(m+" is not iterable!");if(a(I)){for(b=l(m.length);b>N;N++)if(h=v?O(c(_=m[N])[0],_[1]):O(m[N]),h===f||h===p)return h}else for(T=I.call(m);!(_=T.next()).done;)if(h=s(T,O,_.value,v),h===f||h===p)return h};d.BREAK=f,d.RETURN=p},function(n,o){n.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(n,o,t){var i=t(11);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(n,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;n.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(n,o,t){var i=t(3);n.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(n,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),n.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(n,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}n.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(n,o){n.exports=function(t,i){return{value:i,done:!!t}}},function(n,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";n.exports=function(){var f,p,d,m=function(){var x,b;for(u&&(x=c.domain)&&x.exit();f;){b=f.fn,f=f.next;try{b()}catch(_){throw f?d():p=void 0,_}}p=void 0,x&&x.enter()};if(u)d=function(){c.nextTick(m)};else if(a){var v=!0,E=document.createTextNode("");new a(m).observe(E,{characterData:!0}),d=function(){E.data=v=!v}}else if(l&&l.resolve){var k=l.resolve();d=function(){k.then(m)}}else d=function(){s.call(i,m)};return function(x){var b={fn:x,next:void 0};p&&(p.next=b),f||(f=b,d()),p=b}}},function(n,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),m=a.length,v=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+v),p.close(),f=p.F;m--;)delete f[u][a[m]];return f()};n.exports=Object.create||function(p,d){var m;return p!==null?(l[u]=i(p),m=new l,l[u]=null,m[c]=p):m=f(),d===void 0?m:s(m,d)}},function(n,o,t){var i=t(12),s=t(3),a=t(54);n.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(n,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(n,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;n.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(n,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");n.exports=function(l,u){var f,p=s(l),d=0,m=[];for(f in p)f!=c&&i(p,f)&&m.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(m,f)||m.push(f));return m}},function(n,o,t){var i=t(53),s=t(22);n.exports=Object.keys||function(a){return i(a,s)}},function(n,o){o.f={}.propertyIsEnumerable},function(n,o,t){var i=t(5);n.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(n,o,t){n.exports=t(5)},function(n,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};n.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(n,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");n.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(n,o,t){var i=t(3),s=t(14),a=t(1)("species");n.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(n,o,t){var i=t(20),s=t(15);n.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),m=p.length;return d<0||d>=m?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===m||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(n,o,t){var i=t(20),s=Math.max,a=Math.min;n.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(n,o,t){var i=t(15);n.exports=function(s){return Object(i(s))}},function(n,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);n.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(n,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);n.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(n,o){},function(n,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),m=(t(3),t(14)),v=t(38),E=t(40),k=(t(58).set,t(60)),x=t(30).set,b=t(48)(),_="Promise",T=l.TypeError,I=l.process,h=l[_],I=l.process,O=f(I)=="process",N=function(){},H=!!(function(){try{var g=h.resolve(1),w=(g.constructor={})[t(1)("species")]=function(R){R(N,N)};return(O||typeof PromiseRejectionEvent=="function")&&g.then(N)instanceof w}catch{}})(),se=function(g,w){return g===w||g===h&&w===a},ae=function(g){var w;return!(!d(g)||typeof(w=g.then)!="function")&&w},Q=function(g){return se(h,g)?new Se(g):new s(g)},Se=s=function(g){var w,R;this.promise=new g(function(M,G){if(w!==void 0||R!==void 0)throw T("Bad Promise constructor");w=M,R=G}),this.resolve=m(w),this.reject=m(R)},it=function(g){try{g()}catch(w){return{error:w}}},Ve=function(g,w){if(!g._n){g._n=!0;var R=g._c;b(function(){for(var M=g._v,G=g._s==1,Qe=0,st=function(Ie){var de,sn,_t=G?Ie.ok:Ie.fail,It=Ie.resolve,at=Ie.reject,an=Ie.domain;try{_t?(G||(g._h==2&&_e(g),g._h=1),_t===!0?de=M:(an&&an.enter(),de=_t(M),an&&an.exit()),de===Ie.promise?at(T("Promise-chain cycle")):(sn=ae(de))?sn.call(de,It,at):It(de)):at(M)}catch(es){at(es)}};R.length>Qe;)st(R[Qe++]);g._c=[],g._n=!1,w&&!g._h&&bt(g)})}},bt=function(g){x.call(l,function(){var w,R,M,G=g._v;if(J(g)&&(w=it(function(){O?I.emit("unhandledRejection",G,g):(R=l.onunhandledrejection)?R({promise:g,reason:G}):(M=l.console)&&M.error&&M.error("Unhandled promise rejection",G)}),g._h=O||J(g)?2:1),g._a=void 0,w)throw w.error})},J=function(g){if(g._h==1)return!1;for(var w,R=g._a||g._c,M=0;R.length>M;)if(w=R[M++],w.fail||!J(w.promise))return!1;return!0},_e=function(g){x.call(l,function(){var w;O?I.emit("rejectionHandled",g):(w=l.onrejectionhandled)&&w({promise:g,reason:g._v})})},q=function(g){var w=this;w._d||(w._d=!0,w=w._w||w,w._v=g,w._s=2,w._a||(w._a=w._c.slice()),Ve(w,!0))},At=function(g){var w,R=this;if(!R._d){R._d=!0,R=R._w||R;try{if(R===g)throw T("Promise can't be resolved itself");(w=ae(g))?b(function(){var M={_w:R,_d:!1};try{w.call(g,u(At,M,1),u(q,M,1))}catch(G){q.call(M,G)}}):(R._v=g,R._s=1,Ve(R,!1))}catch(M){q.call({_w:R,_d:!1},M)}}};H||(h=function(g){v(this,h,_,"_h"),m(g),i.call(this);try{g(u(At,this,1),u(q,this,1))}catch(w){q.call(this,w)}},i=function(g){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(h.prototype,{then:function(g,w){var R=Q(k(this,h));return R.ok=typeof g!="function"||g,R.fail=typeof w=="function"&&w,R.domain=O?I.domain:void 0,this._c.push(R),this._a&&this._a.push(R),this._s&&Ve(this,!1),R.promise},catch:function(g){return this.then(void 0,g)}}),Se=function(){var g=new i;this.promise=g,this.resolve=u(At,g,1),this.reject=u(q,g,1)}),p(p.G+p.W+p.F*!H,{Promise:h}),t(18)(h,_),t(59)(_),a=t(6)[_],p(p.S+p.F*!H,_,{reject:function(g){var w=Q(this),R=w.reject;return R(g),w.promise}}),p(p.S+p.F*(c||!H),_,{resolve:function(g){if(g instanceof h&&se(g.constructor,this))return g;var w=Q(this),R=w.resolve;return R(g),w.promise}}),p(p.S+p.F*!(H&&t(46)(function(g){h.all(g).catch(N)})),_,{all:function(g){var w=this,R=Q(w),M=R.resolve,G=R.reject,Qe=it(function(){var st=[],Ie=0,de=1;E(g,!1,function(sn){var _t=Ie++,It=!1;st.push(void 0),de++,w.resolve(sn).then(function(at){It||(It=!0,st[_t]=at,--de||M(st))},G)}),--de||M(st)});return Qe&&G(Qe.error),R.promise},race:function(g){var w=this,R=Q(w),M=R.reject,G=it(function(){E(g,!1,function(Qe){w.resolve(Qe).then(R.resolve,M)})});return G&&M(G.error),R.promise}})},function(n,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(n,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(n,o){n.exports=require("child_process")},function(n,o){n.exports=require("crypto")}])})});var _r=z((wl,gi)=>{gi.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var vi=z((vl,wi)=>{var Ea=_r();function yi(e){this.mode=Ea.MODE_8BIT_BYTE,this.data=e}yi.prototype={getLength:function(){return this.data.length},write:function(e){for(var r=0;r<this.data.length;r++)e.put(this.data.charCodeAt(r),8)}};wi.exports=yi});var Ir=z((Tl,Ti)=>{var pe={glog:function(e){if(e<1)throw new Error("glog("+e+")");return pe.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return pe.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(U=0;U<8;U++)pe.EXP_TABLE[U]=1<<U;var U;for(U=8;U<256;U++)pe.EXP_TABLE[U]=pe.EXP_TABLE[U-4]^pe.EXP_TABLE[U-5]^pe.EXP_TABLE[U-6]^pe.EXP_TABLE[U-8];var U;for(U=0;U<255;U++)pe.LOG_TABLE[pe.EXP_TABLE[U]]=U;var U;Ti.exports=pe});var kr=z((Sl,Si)=>{var rt=Ir();function Fn(e,r){if(e.length===void 0)throw new Error(e.length+"/"+r);for(var n=0;n<e.length&&e[n]===0;)n++;this.num=new Array(e.length-n+r);for(var o=0;o<e.length-n;o++)this.num[o]=e[o+n]}Fn.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var r=new Array(this.getLength()+e.getLength()-1),n=0;n<this.getLength();n++)for(var o=0;o<e.getLength();o++)r[n+o]^=rt.gexp(rt.glog(this.get(n))+rt.glog(e.get(o)));return new Fn(r,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var r=rt.glog(this.get(0))-rt.glog(e.get(0)),n=new Array(this.getLength()),o=0;o<this.getLength();o++)n[o]=this.get(o);for(var t=0;t<e.getLength();t++)n[t]^=rt.gexp(rt.glog(e.get(t))+r);return new Fn(n,0).mod(e)}};Si.exports=Fn});var xi=z((El,Ei)=>{Ei.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ai=z((xl,bi)=>{var ie=_r(),Ri=kr(),xa=Ir(),Ke=xi(),j={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var r=e<<10;j.getBCHDigit(r)-j.getBCHDigit(j.G15)>=0;)r^=j.G15<<j.getBCHDigit(r)-j.getBCHDigit(j.G15);return(e<<10|r)^j.G15_MASK},getBCHTypeNumber:function(e){for(var r=e<<12;j.getBCHDigit(r)-j.getBCHDigit(j.G18)>=0;)r^=j.G18<<j.getBCHDigit(r)-j.getBCHDigit(j.G18);return e<<12|r},getBCHDigit:function(e){for(var r=0;e!==0;)r++,e>>>=1;return r},getPatternPosition:function(e){return j.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,r,n){switch(e){case Ke.PATTERN000:return(r+n)%2===0;case Ke.PATTERN001:return r%2===0;case Ke.PATTERN010:return n%3===0;case Ke.PATTERN011:return(r+n)%3===0;case Ke.PATTERN100:return(Math.floor(r/2)+Math.floor(n/3))%2===0;case Ke.PATTERN101:return r*n%2+r*n%3===0;case Ke.PATTERN110:return(r*n%2+r*n%3)%2===0;case Ke.PATTERN111:return(r*n%3+(r+n)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var r=new Ri([1],0),n=0;n<e;n++)r=r.multiply(new Ri([1,xa.gexp(n)],0));return r},getLengthInBits:function(e,r){if(1<=r&&r<10)switch(e){case ie.MODE_NUMBER:return 10;case ie.MODE_ALPHA_NUM:return 9;case ie.MODE_8BIT_BYTE:return 8;case ie.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(r<27)switch(e){case ie.MODE_NUMBER:return 12;case ie.MODE_ALPHA_NUM:return 11;case ie.MODE_8BIT_BYTE:return 16;case ie.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(r<41)switch(e){case ie.MODE_NUMBER:return 14;case ie.MODE_ALPHA_NUM:return 13;case ie.MODE_8BIT_BYTE:return 16;case ie.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+r)},getLostPoint:function(e){var r=e.getModuleCount(),n=0,o=0,t=0;for(o=0;o<r;o++)for(t=0;t<r;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||r<=o+a))for(var c=-1;c<=1;c++)t+c<0||r<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(n+=3+i-5)}for(o=0;o<r-1;o++)for(t=0;t<r-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(n+=3)}for(o=0;o<r;o++)for(t=0;t<r-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(n+=40);for(t=0;t<r;t++)for(o=0;o<r-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(n+=40);var u=0;for(t=0;t<r;t++)for(o=0;o<r;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/r/r-50)/5;return n+=f*10,n}};bi.exports=j});var Or=z((Rl,_i)=>{_i.exports={L:1,M:0,Q:3,H:2}});var ki=z((bl,Ii)=>{var Un=Or();function ve(e,r){this.totalCount=e,this.dataCount=r}ve.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];ve.getRSBlocks=function(e,r){var n=ve.getRsBlockTable(e,r);if(n===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+r);for(var o=n.length/3,t=[],i=0;i<o;i++)for(var s=n[i*3+0],a=n[i*3+1],c=n[i*3+2],l=0;l<s;l++)t.push(new ve(a,c));return t};ve.getRsBlockTable=function(e,r){switch(r){case Un.L:return ve.RS_BLOCK_TABLE[(e-1)*4+0];case Un.M:return ve.RS_BLOCK_TABLE[(e-1)*4+1];case Un.Q:return ve.RS_BLOCK_TABLE[(e-1)*4+2];case Un.H:return ve.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Ii.exports=ve});var Ci=z((Al,Pi)=>{function Oi(){this.buffer=[],this.length=0}Oi.prototype={get:function(e){var r=Math.floor(e/8);return(this.buffer[r]>>>7-e%8&1)==1},put:function(e,r){for(var n=0;n<r;n++)this.putBit((e>>>r-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),e&&(this.buffer[r]|=128>>>this.length%8),this.length++}};Pi.exports=Oi});var Ni=z((_l,$i)=>{var Ra=vi(),je=Ai(),ba=kr(),Mi=ki(),Li=Ci();function Te(e,r){this.typeNumber=e,this.errorCorrectLevel=r,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Te.prototype={addData:function(e){var r=new Ra(e);this.dataList.push(r),this.dataCache=null},isDark:function(e,r){if(e<0||this.moduleCount<=e||r<0||this.moduleCount<=r)throw new Error(e+","+r);return this.modules[e][r]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var r=Mi.getRSBlocks(e,this.errorCorrectLevel),n=new Li,o=0,t=0;t<r.length;t++)o+=r[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];n.put(s.mode,4),n.put(s.getLength(),je.getLengthInBits(s.mode,e)),s.write(n)}if(n.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,r){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var n=0;n<this.moduleCount;n++){this.modules[n]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[n][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,r),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Te.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,r)},setupPositionProbePattern:function(e,r){for(var n=-1;n<=7;n++)if(!(e+n<=-1||this.moduleCount<=e+n))for(var o=-1;o<=7;o++)r+o<=-1||this.moduleCount<=r+o||(0<=n&&n<=6&&(o===0||o===6)||0<=o&&o<=6&&(n===0||n===6)||2<=n&&n<=4&&2<=o&&o<=4?this.modules[e+n][r+o]=!0:this.modules[e+n][r+o]=!1)},getBestMaskPattern:function(){for(var e=0,r=0,n=0;n<8;n++){this.makeImpl(!0,n);var o=je.getLostPoint(this);(n===0||e>o)&&(e=o,r=n)}return r},createMovieClip:function(e,r,n){var o=e.createEmptyMovieClip(r,n),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var r=8;r<this.moduleCount-8;r++)this.modules[6][r]===null&&(this.modules[6][r]=r%2===0)},setupPositionAdjustPattern:function(){for(var e=je.getPatternPosition(this.typeNumber),r=0;r<e.length;r++)for(var n=0;n<e.length;n++){var o=e[r],t=e[n];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var r=je.getBCHTypeNumber(this.typeNumber),n,o=0;o<18;o++)n=!e&&(r>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=n;for(var t=0;t<18;t++)n=!e&&(r>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=n},setupTypeInfo:function(e,r){for(var n=this.errorCorrectLevel<<3|r,o=je.getBCHTypeInfo(n),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,r){for(var n=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=je.getMask(r,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=n,o<0||this.moduleCount<=o){o-=n,n=-n;break}}}};Te.PAD0=236;Te.PAD1=17;Te.createData=function(e,r,n){for(var o=Mi.getRSBlocks(e,r),t=new Li,i=0;i<n.length;i++){var s=n[i];t.put(s.mode,4),t.put(s.getLength(),je.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Te.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Te.PAD1,8);return Te.createBytes(t,o)};Te.createBytes=function(e,r){for(var n=0,o=0,t=0,i=new Array(r.length),s=new Array(r.length),a=0;a<r.length;a++){var c=r[a].dataCount,l=r[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+n];n+=c;var f=je.getErrorCorrectPolynomial(l),p=new ba(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var m=0;m<s[a].length;m++){var v=m+d.getLength()-s[a].length;s[a][m]=v>=0?d.get(v):0}}for(var E=0,k=0;k<r.length;k++)E+=r[k].totalCount;for(var x=new Array(E),b=0,_=0;_<o;_++)for(var T=0;T<r.length;T++)_<i[T].length&&(x[b++]=i[T][_]);for(var h=0;h<t;h++)for(var I=0;I<r.length;I++)h<s[I].length&&(x[b++]=s[I][h]);return x};$i.exports=Te});var Fi=z((Il,Bi)=>{var Aa=Ni(),Di=Or(),_a="\x1B[40m \x1B[0m",Hn="\x1B[47m \x1B[0m",Ia=function(e){return e?_a:Hn},Pr=function(e){return{times:function(r){return new Array(r).join(e)}}},ka=function(e,r){for(var n=new Array(e),o=0;o<e;o++)n[o]=r;return n};Bi.exports={error:Di.L,generate:function(e,r,n){typeof r=="function"&&(n=r,r={});var o=new Aa(-1,this.error);o.addData(e),o.make();var t="";if(r&&r.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(ka(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=Pr(u.BLACK_WHITE).times(a+3),p=Pr(u.WHITE_BLACK).times(a+3);t+=f+`
7
- `;for(var d=0;d<a;d+=2){t+=u.WHITE_ALL;for(var m=0;m<a;m++)c[d][m]===s&&c[d+1][m]===s?t+=u.WHITE_ALL:c[d][m]===s&&c[d+1][m]===i?t+=u.WHITE_BLACK:c[d][m]===i&&c[d+1][m]===s?t+=u.BLACK_WHITE:t+=u.BLACK_ALL;t+=u.WHITE_ALL+`
8
- `}l||(t+=p)}else{var v=Pr(Hn).times(o.getModuleCount()+3);t+=v+`
9
- `,o.modules.forEach(function(E){t+=Hn,t+=E.map(Ia).join(""),t+=Hn+`
10
- `}),t+=v}n?n(t):console.log(t)},setErrorLevel:function(e){this.error=Di[e]||this.error}}});var cn=require("fs"),kt=require("path"),Nr=require("url"),Dr=A(require("os"),1),ls=(0,kt.dirname)((0,Nr.fileURLToPath)(__importMetaUrl)),us=[(0,kt.join)(Dr.default.homedir(),".9remote",".env"),(0,kt.join)(ls,"..",".env")];function fs(e){for(let r of e.split(`
11
- `)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of us)if((0,cn.existsSync)(e))try{fs((0,cn.readFileSync)(e,"utf8"))}catch{}var he=A(require("fs"),1),Yn=A(require("path"),1);var ln=A(require("dns"),1),Ee=A(require("path"),1),Br=A(require("os"),1),ke=Ee.default.join(Br.default.homedir(),".9remote"),me={ROOT:ke,LOGS:Ee.default.join(ke,"logs"),STATE:Ee.default.join(ke,"state"),CONFIG:Ee.default.join(ke,"config"),BIN:Ee.default.join(ke,"bin"),PIDS:Ee.default.join(ke,"pids"),BUFFERS:Ee.default.join(ke,"buffers"),DAEMON:Ee.default.join(ke,"daemon")},Fr=new ln.default.promises.Resolver;Fr.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var Gn=ln.default.lookup,ps=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;ln.default.lookup=(e,r,n)=>{if(typeof r=="function"&&(n=r,r={}),e==="localhost"||ps.test(e))return Gn(e,r,n);Fr.resolve4(e).then(o=>{if(!o?.length)return Gn(e,r,n);r.all?n(null,o.map(t=>({address:t,family:4}))):n(null,o[0],4)}).catch(()=>Gn(e,r,n))};var P=2208,Ot={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},Ur=60,C={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},Hr={showTunnelUrlInMenu:!1};var Kr={checkIntervalMs:3e4,requestTimeoutMs:5e3},ee={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},ds={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function W(e,r={}){return fetch(e,{...r,headers:{...ds,...r.headers}})}var un=me.LOGS,Ct=Yn.default.join(un,Ot.fileName),fn=Yn.default.join(un,Ot.rotatedName),jr=!1,Gr=null;function ms(){he.default.existsSync(un)||he.default.mkdirSync(un,{recursive:!0})}function hs(){try{if(he.default.statSync(Ct).size<Ot.maxBytes)return;try{he.default.rmSync(fn,{force:!0})}catch{}he.default.renameSync(Ct,fn)}catch{}}function gs(){try{let e=he.default.statSync(fn);Date.now()-e.mtimeMs>Ot.cleanupAfterDays*864e5&&he.default.rmSync(fn,{force:!0})}catch{}}function Vn(e){try{hs(),he.default.appendFileSync(Ct,e+`
12
- `)}catch{}}function Wn(e){return e.map(r=>{if(r instanceof Error)return r.stack||r.message;if(typeof r=="object")try{return JSON.stringify(r)}catch{return String(r)}return String(r)}).join(" ")}function Wr(){let e=new Date,r=(n,o=2)=>String(n).padStart(o,"0");return`${r(e.getHours())}:${r(e.getMinutes())}:${r(e.getSeconds())}.${r(e.getMilliseconds(),3)}`}var ys=/\x1b\[[0-9;]*m/g,ws=/https?:\/\/[^\s]+/g;function vs(e){return String(e).replace(ys,"").replace(ws,"").replace(/\s+$/g,"")}function Pt(e,r,n){let o=vs(n);if(!o)return;let t=r==="info"?e:`${e}:${r}`,i=`${Wr()} [${t}] ${o}`;if(Vn(i),Gr)try{Gr(i)}catch{}}function Ts(){process.on("uncaughtException",e=>Pt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let r=e instanceof Error?e.stack||e.message:String(e);Pt("crash","error",`unhandledRejection: ${r}`)}),process.on("exit",e=>Vn(`${Wr()} [exit] code=${e} pid=${process.pid}`))}function Yr(){jr||(jr=!0,ms(),gs(),Vn(`
13
- === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),Ts())}function Vr(e=60){try{return he.default.readFileSync(Ct,"utf8").split(`
14
- `).filter(Boolean).slice(-e)}catch{return[]}}function Y(e){return{info:(...r)=>Pt(e,"info",Wn(r)),warn:(...r)=>Pt(e,"warn",Wn(r)),error:(...r)=>Pt(e,"error",Wn(r))}}var Mt=Ct;var Qr=(e=0)=>r=>`\x1B[${r+e}m`,Jr=(e=0)=>r=>`\x1B[${38+e};5;${r}m`,Xr=(e=0)=>(r,n,o)=>`\x1B[${38+e};2;${r};${n};${o}m`,L={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},qa=Object.keys(L.modifier),Ss=Object.keys(L.color),Es=Object.keys(L.bgColor),Za=[...Ss,...Es];function xs(){let e=new Map;for(let[r,n]of Object.entries(L)){for(let[o,t]of Object.entries(n))L[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},n[o]=L[o],e.set(t[0],t[1]);Object.defineProperty(L,r,{value:n,enumerable:!1})}return Object.defineProperty(L,"codes",{value:e,enumerable:!1}),L.color.close="\x1B[39m",L.bgColor.close="\x1B[49m",L.color.ansi=Qr(),L.color.ansi256=Jr(),L.color.ansi16m=Xr(),L.bgColor.ansi=Qr(10),L.bgColor.ansi256=Jr(10),L.bgColor.ansi16m=Xr(10),Object.defineProperties(L,{rgbToAnsi256:{value(r,n,o){return r===n&&n===o?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(r){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(r.toString(16));if(!n)return[0,0,0];let[o]=n;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:r=>L.rgbToAnsi256(...L.hexToRgb(r)),enumerable:!1},ansi256ToAnsi:{value(r){if(r<8)return 30+r;if(r<16)return 90+(r-8);let n,o,t;if(r>=232)n=((r-232)*10+8)/255,o=n,t=n;else{r-=16;let a=r%36;n=Math.floor(r/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(n,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(n));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(r,n,o)=>L.ansi256ToAnsi(L.rgbToAnsi256(r,n,o)),enumerable:!1},hexToAnsi:{value:r=>L.ansi256ToAnsi(L.hexToAnsi256(r)),enumerable:!1}}),L}var Rs=xs(),ce=Rs;var dn=A(require("node:process"),1),Zr=A(require("node:os"),1),Qn=A(require("node:tty"),1);function te(e,r=globalThis.Deno?globalThis.Deno.args:dn.default.argv){let n=e.startsWith("-")?"":e.length===1?"-":"--",o=r.indexOf(n+e),t=r.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:$}=dn.default,pn;te("no-color")||te("no-colors")||te("color=false")||te("color=never")?pn=0:(te("color")||te("colors")||te("color=true")||te("color=always"))&&(pn=1);function bs(){if("FORCE_COLOR"in $)return $.FORCE_COLOR==="true"?1:$.FORCE_COLOR==="false"?0:$.FORCE_COLOR.length===0?1:Math.min(Number.parseInt($.FORCE_COLOR,10),3)}function As(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function _s(e,{streamIsTTY:r,sniffFlags:n=!0}={}){let o=bs();o!==void 0&&(pn=o);let t=n?pn:o;if(t===0)return 0;if(n){if(te("color=16m")||te("color=full")||te("color=truecolor"))return 3;if(te("color=256"))return 2}if("TF_BUILD"in $&&"AGENT_NAME"in $)return 1;if(e&&!r&&t===void 0)return 0;let i=t||0;if($.TERM==="dumb")return i;if(dn.default.platform==="win32"){let s=Zr.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in $)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in $)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in $)||$.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in $)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test($.TEAMCITY_VERSION)?1:0;if($.COLORTERM==="truecolor"||$.TERM==="xterm-kitty"||$.TERM==="xterm-ghostty"||$.TERM==="wezterm")return 3;if("TERM_PROGRAM"in $){let s=Number.parseInt(($.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch($.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test($.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test($.TERM)||"COLORTERM"in $?1:i}function qr(e,r={}){let n=_s(e,{streamIsTTY:e&&e.isTTY,...r});return As(n)}var Is={stdout:qr({isTTY:Qn.default.isatty(1)}),stderr:qr({isTTY:Qn.default.isatty(2)})},zr=Is;function eo(e,r,n){let o=e.indexOf(r);if(o===-1)return e;let t=r.length,i=0,s="";do s+=e.slice(i,o)+r+n,i=o+t,o=e.indexOf(r,i);while(o!==-1);return s+=e.slice(i),s}function to(e,r,n,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+r+(s?`\r
5
+ Right-click to open / quit`}function li(){let{port:e,tunnelUrl:r}=zt,n=process.platform==="win32",o=r?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:Sa(),title:n?`9Remote - Port ${e}`:"",tooltip:Ea(),items:[{title:o,tooltip:r||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function Ra(){let e=[Ue.default.join(ci,"systray2"),"systray2"];for(let r of e)try{let n=require(r);return n.default?.default||n.default||n}catch{}return null}async function Tr({port:e,onQuit:r,onOpenUI:n}){if(!Ta())return null;try{let o=Ra();if(!o)return null;let t=process.platform==="darwin"?"tray_darwin_release":"tray_linux_release",i=Ue.default.join(ci,"systray2","traybin",t);try{Zt.default.existsSync(i)&&Zt.default.chmodSync(i,493)}catch{}return zt={port:e,tunnelUrl:"",running:!0},pe=new o({menu:li(),debug:!1,copyDir:!0}),pe.onClick(s=>{let a=s.item?.title||s.item;a==="Open Web UI"?n?.():a==="Shutdown"&&(r?.(),Dn(),setTimeout(()=>process.exit(0),500))}),typeof pe.ready=="function"?pe.ready().catch(()=>{}):(pe.onReady(()=>{}),pe.onError(()=>{})),pe}catch{return null}}function Nn({tunnelUrl:e,running:r}={}){if(e!==void 0&&(zt.tunnelUrl=e),r!==void 0&&(zt.running=r),!!pe)try{pe.sendAction({type:"update-menu",menu:li(),seq_id:-1})}catch{}}function Dn(){let e=pe;if(pe=null,e)try{e.kill(!0)}catch{}}function Er({title:e="9Remote",message:r}){let n=process.platform;if(r){if(n==="win32"){let o=c=>String(c).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/'/g,"&apos;").replace(/"/g,"&quot;"),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(r)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(r)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,De.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(r)}" with title "${o(e)}"`;(0,De.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,De.spawn)("notify-send",[e,r],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function en(e){let r=process.platform;if(r==="win32"){try{(0,De.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,De.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{(0,De.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let n=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of n)try{(0,De.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var De,Zt,Ue,si,ai,ci,pe,zt,oi,ii,va,Tt=ms(()=>{De=require("child_process"),Zt=A(require("fs"),1),Ue=A(require("path"),1),si=A(require("os"),1),ai=require("url"),ci=(0,Ue.join)(si.default.homedir(),".9remote","runtime","node_modules"),pe=null,zt={port:0,tunnelUrl:"",running:!1},oi=Ue.default.dirname((0,ai.fileURLToPath)(__importMetaUrl)),ii="iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAFw0lEQVR4nOWbaWwUVQDHf2+2tXRbCqmoKGgAuRIJoBwKkSAoDVKamDYLxUYUBSJHNCD30RhAbVWQqKCgXFGodKUfqGLljERsRaNQQoKoCKGFRhBp6XZ7sPv8MF0o7NTO7hzb4/dt5/9m3v/9d/fNO2YEOpEZiQnUeZMRYjQwAOgGdASi9V7DIuqAq8BZBMeQ8iDeuK/F7svX9JwsmiogJ8b0RjgWIkkHnAbN2kUVkIPDly121Pz+fwUbDUC6iEWJXQniVSDKbIc2UQdyLbHeTLGVaq0CmgHIZ2N64XPkAf0stWcfRUSTKj6vuni7EBSATHc+jORb4C5brNmFpASHSBY5nuKGh28JoP6bP0Jra3wASQlSDBFuT1ngkHJDe4F2+BxuWmvjAQRdccivpIvYwKEbAeCNXYV6e2vdSAahOBcFPgqov9XhOEnL7e1DpRK/6CXcnjL1FyAcC2k7jQeIR5GZAEJmJCZwvfoiLWeQYxYevM57Feq8ybS9xgPE4fSMU+rH9m0TKUZHEUrPH9cBnp4F9/SA4/vg+53WmbOH/lFAd11FHVGwvAC69Vc/j5gEPQfD1vnW2bMaSQ8FSNBVuO/wm40PMHYmpC7SLt8SEHRQgDsMXWTCchgz1RxD9hOjNF2mnlM/wNlibW3KGngs1SRP9qI/AN91eDsNLp3TuIoDZm+CAU+ZaM0e9AcAcOUCvJEC5X8Ha1F3wNwc6P2oSdbsIbQAAMr+hOw08FYGazFOmO+GLn1MsGYPoQcAcOYXeNcFdTXBWvs7YWk+dHrAoDV7CC8AgJOH4f3nwe8L1hK7wLJ8SGj+SwvhBwDwUz5snqOtde4JC76EdvGGqrAaYwEA7N8EuSu1tZ6DYd5OiI4xXI1VGA8AIC8L9nygrfV7AmZsAGFOVWZjnqvPFsN327W14S6Ystq0qszEvACkhI2z4NhebT1perOcN5j7u/TVwXsZ8Fuhtj5huTqdbkaY/8esqVKHzOdOaOuTs2BYmunVhos1PZOnXB0tXj4frAkFZn4SPLWOENZ1zVdK4c0UqLgcrEXHwJMvWlZ1KDTPe5ONWBdAYhdYkg8JnYK1uho4sNmyqkPBmgDaJ8KS3dDp/mBN+mH9tMYXV2zG/ABinDAvF7r21da3LYTCXaZXGy7mBuCIhjnboc8wbT13BRSsN7VKo5gXgBAwfR0MTNLW926EvGzTqjML8wJ4LgtGZmhrR3Jhy2umVWUm5gSQthjGzdbWThyCj19WO79miPEAxkwF1zJt7Y+fYXW69tJZM8FYAENS1D0BLUpOQdYzUK2xeNqMCD+Ah0bCK9vUPYHbuVKqNr7yXwPW7CG8AB4cpN7rtZa6rv0Dq8ZrT4SaIaEHEFjsjNVY7KypgndccOG0CdbsIbTnghLvU5e7O9wdrF2vhTWT4PSPobt4fCIMSIJoA/u0UkLpKfhmnTod14n+ABxRsGCX9oaH3wcfvgTH9+u+3A1SF6krRWYxOAWWjlD3MnWg/y+g9XxAgC1zoShP96VuYeyM8M5rjG79Va86UYBaQxXmroR9nxq6RASpUYAKXUW1ng8oWK/uCRih4CNj59/O2WLVqx4k5UJOdB4Fhug6waqHpCLXCRYJme7ciGRa+DW3aDYoSHkw0i4ihzwgpIt4FGcZEBdpOzbjwV/VWRFuKoEvIu3GdgQ7hJtKdRzg8GWjvn7WVqhF8WdB/UBIfbVMro2sJzuRa8SO6jPQcCQY680EiiJlyTYEhVR4X7/5sQHSFdcZRR4FNBb0WwUX8Muhwu0tDRy4ZS4g3J4yFDEeSYn93iznPH4xtmHjQWMyJHI8xUjlERCH7fNmMYJC/GKocHuC9uw1Z4PCXXmJCk8SsALwWO3PQmoRvEV51aiG7wo2pOmXp9V+IROYTMsZLHmA7Tj82YHevjGaDCCAdBGPIzYZKUYBA5F0R9ARo4/bG6cWyVUEfyH4Fb88hPTuqR/gNcl/yU6WmseVCn8AAAAASUVORK5CYII=",va=[Ue.default.join(oi,"assets","trayIcon.ico"),Ue.default.join(oi,"..","assets","trayIcon.ico")]});var hi=ne((rn,xr)=>{(function(e,r){typeof rn=="object"&&typeof xr=="object"?xr.exports=r(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],r):typeof rn=="object"?rn["electron-machine-id"]=r(require("child_process"),require("crypto")):e["electron-machine-id"]=r(e.child_process,e.crypto)})(rn,function(e,r){return(function(n){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return n[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=n,o.c=t,o.p="",o(0)})([function(n,o,t){n.exports=t(34)},function(n,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=n.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(n,o){var t=n.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(n,o,t){var i=t(9);n.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(n,o,t){n.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(n,o,t){var i=t(12),s=t(17);n.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(n,o){var t=n.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(n,o,t){var i=t(14);n.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(n,o){var t={}.hasOwnProperty;n.exports=function(i,s){return t.call(i,s)}},function(n,o){n.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(n,o){n.exports={}},function(n,o){var t={}.toString;n.exports=function(i){return t.call(i).slice(8,-1)}},function(n,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(n,o,t){var i=t(42),s=t(15);n.exports=function(a){return i(s(a))}},function(n,o){n.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(n,o){n.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(n,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);n.exports=function(c){return a?s.createElement(c):{}}},function(n,o){n.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(n,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");n.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(n,o,t){var i=t(29)("keys"),s=t(33);n.exports=function(a){return i[a]||(i[a]=s(a))}},function(n,o){var t=Math.ceil,i=Math.floor;n.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(n,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};n.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(n,o){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(n,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var h,v,E,O=f&u.F,R=f&u.G,b=f&u.S,_=f&u.P,S=f&u.B,g=f&u.W,k=R?s:s[p]||(s[p]={}),P=k[l],D=R?i:b?i[p]:(i[p]||{})[l];R&&(d=p);for(h in d)v=!O&&D&&D[h]!==void 0,v&&h in k||(E=v?D[h]:d[h],k[h]=R&&typeof D[h]!="function"?d[h]:S&&v?a(E,i):g&&D[h]==E?(function(H){var ae=function(ce,X,Te){if(this instanceof H){switch(arguments.length){case 0:return new H;case 1:return new H(ce);case 2:return new H(ce,X)}return new H(ce,X,Te)}return H.apply(this,arguments)};return ae[l]=H[l],ae})(E):_&&typeof E=="function"?a(Function.call,E):E,_&&((k.virtual||(k.virtual={}))[h]=E,f&u.R&&P&&!P[h]&&c(P,h,E)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,n.exports=u},function(n,o){n.exports=function(t){try{return!!t()}catch{return!0}}},function(n,o,t){n.exports=t(2).document&&document.documentElement},function(n,o,t){n.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(n,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),u=t(10),f=t(45),p=t(18),d=t(52),h=t(1)("iterator"),v=!([].keys&&"next"in[].keys()),E="@@iterator",O="keys",R="values",b=function(){return this};n.exports=function(_,S,g,k,P,D,H){f(g,S,k);var ae,ce,X,Te=function(w){if(!v&&w in q)return q[w];switch(w){case O:return function(){return new g(this,w)};case R:return function(){return new g(this,w)}}return function(){return new g(this,w)}},st=S+" Iterator",Qe=P==R,_t=!1,q=_.prototype,_e=q[h]||q[E]||P&&q[P],ee=_e||Te(P),kt=P?Qe?Te("entries"):ee:void 0,y=S=="Array"&&q.entries||_e;if(y&&(X=d(y.call(new _)),X!==Object.prototype&&(p(X,st,!0),i||l(X,h)||c(X,h,b))),Qe&&_e&&_e.name!==R&&(_t=!0,ee=function(){return _e.call(this)}),i&&!H||!v&&!_t&&q[h]||c(q,h,ee),u[S]=ee,u[st]=b,P)if(ae={values:Qe?ee:Te(R),keys:D?ee:Te(O),entries:kt},H)for(ce in ae)ce in q||a(q,ce,ae[ce]);else s(s.P+s.F*(v||_t),S,ae);return ae}},function(n,o){n.exports=!0},function(n,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});n.exports=function(c){return a[c]||(a[c]={})}},function(n,o,t){var i,s,a,c=t(7),l=t(41),u=t(25),f=t(16),p=t(2),d=p.process,h=p.setImmediate,v=p.clearImmediate,E=p.MessageChannel,O=0,R={},b="onreadystatechange",_=function(){var g=+this;if(R.hasOwnProperty(g)){var k=R[g];delete R[g],k()}},S=function(g){_.call(g.data)};h&&v||(h=function(g){for(var k=[],P=1;arguments.length>P;)k.push(arguments[P++]);return R[++O]=function(){l(typeof g=="function"?g:Function(g),k)},i(O),O},v=function(g){delete R[g]},t(11)(d)=="process"?i=function(g){d.nextTick(c(_,g,1))}:E?(s=new E,a=s.port2,s.port1.onmessage=S,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(g){p.postMessage(g+"","*")},p.addEventListener("message",S,!1)):i=b in f("script")?function(g){u.appendChild(f("script"))[b]=function(){u.removeChild(this),_.call(g)}}:function(g){setTimeout(c(_,g,1),0)}),n.exports={set:h,clear:v}},function(n,o,t){var i=t(20),s=Math.min;n.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(n,o,t){var i=t(9);n.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(n,o){var t=0,i=Math.random();n.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(n,o,t){"use strict";function i(b){return b&&b.__esModule?b:{default:b}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(b){return(0,h.createHash)("sha256").update(b).digest("hex")}function c(b){switch(E){case"darwin":return b.split("IOPlatformUUID")[1].split(`
6
+ `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return b.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return b.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(b){var _=c((0,d.execSync)(R[E]).toString());return b?_:a(_)}function u(b){return new p.default(function(_,S){return(0,d.exec)(R[E],{},function(g,k,P){if(g)return S(new Error("Error while obtaining machine id: "+g.stack));var D=c(k.toString());return _(b?D:a(D))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=t(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=t(70),h=t(71),v=process,E=v.platform,O={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},R={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:O[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(n,o,t){n.exports={default:t(36),__esModule:!0}},function(n,o,t){t(66),t(68),t(69),t(67),n.exports=t(6).Promise},function(n,o){n.exports=function(){}},function(n,o){n.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(n,o,t){var i=t(13),s=t(31),a=t(62);n.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),v=a(f,h);if(c&&u!=u){for(;h>v;)if(p=d[v++],p!=p)return!0}else for(;h>v;v++)if((c||v in d)&&d[v]===u)return c||v||0;return!c&&-1}}},function(n,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=n.exports=function(h,v,E,O,R){var b,_,S,g,k=R?function(){return h}:u(h),P=i(E,O,v?2:1),D=0;if(typeof k!="function")throw TypeError(h+" is not iterable!");if(a(k)){for(b=l(h.length);b>D;D++)if(g=v?P(c(_=h[D])[0],_[1]):P(h[D]),g===f||g===p)return g}else for(S=k.call(h);!(_=S.next()).done;)if(g=s(S,P,_.value,v),g===f||g===p)return g};d.BREAK=f,d.RETURN=p},function(n,o){n.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(n,o,t){var i=t(11);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(n,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;n.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(n,o,t){var i=t(3);n.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(n,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),n.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(n,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}n.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(n,o){n.exports=function(t,i){return{value:i,done:!!t}}},function(n,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=t(11)(c)=="process";n.exports=function(){var f,p,d,h=function(){var R,b;for(u&&(R=c.domain)&&R.exit();f;){b=f.fn,f=f.next;try{b()}catch(_){throw f?d():p=void 0,_}}p=void 0,R&&R.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var v=!0,E=document.createTextNode("");new a(h).observe(E,{characterData:!0}),d=function(){E.data=v=!v}}else if(l&&l.resolve){var O=l.resolve();d=function(){O.then(h)}}else d=function(){s.call(i,h)};return function(R){var b={fn:R,next:void 0};p&&(p.next=b),f||(f=b,d()),p=b}}},function(n,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=t(16)("iframe"),h=a.length,v=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+v),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};n.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(n,o,t){var i=t(12),s=t(3),a=t(54);n.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(n,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),u=t(26),f=Object.getOwnPropertyDescriptor;o.f=t(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(n,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;n.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(n,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");n.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(n,o,t){var i=t(53),s=t(22);n.exports=Object.keys||function(a){return i(a,s)}},function(n,o){o.f={}.propertyIsEnumerable},function(n,o,t){var i=t(5);n.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(n,o,t){n.exports=t(5)},function(n,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};n.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(n,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");n.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(n,o,t){var i=t(3),s=t(14),a=t(1)("species");n.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(n,o,t){var i=t(20),s=t(15);n.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(n,o,t){var i=t(20),s=Math.max,a=Math.min;n.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(n,o,t){var i=t(15);n.exports=function(s){return Object(i(s))}},function(n,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);n.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(n,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);n.exports=t(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(n,o){},function(n,o,t){"use strict";var i,s,a,c=t(28),l=t(2),u=t(7),f=t(21),p=t(23),d=t(9),h=(t(3),t(14)),v=t(38),E=t(40),O=(t(58).set,t(60)),R=t(30).set,b=t(48)(),_="Promise",S=l.TypeError,k=l.process,g=l[_],k=l.process,P=f(k)=="process",D=function(){},H=!!(function(){try{var y=g.resolve(1),w=(y.constructor={})[t(1)("species")]=function(x){x(D,D)};return(P||typeof PromiseRejectionEvent=="function")&&y.then(D)instanceof w}catch{}})(),ae=function(y,w){return y===w||y===g&&w===a},ce=function(y){var w;return!(!d(y)||typeof(w=y.then)!="function")&&w},X=function(y){return ae(g,y)?new Te(y):new s(y)},Te=s=function(y){var w,x;this.promise=new y(function(L,W){if(w!==void 0||x!==void 0)throw S("Bad Promise constructor");w=L,x=W}),this.resolve=h(w),this.reject=h(x)},st=function(y){try{y()}catch(w){return{error:w}}},Qe=function(y,w){if(!y._n){y._n=!0;var x=y._c;b(function(){for(var L=y._v,W=y._s==1,Je=0,at=function(ke){var me,ln,Ot=W?ke.ok:ke.fail,It=ke.resolve,ct=ke.reject,un=ke.domain;try{Ot?(W||(y._h==2&&_e(y),y._h=1),Ot===!0?me=L:(un&&un.enter(),me=Ot(L),un&&un.exit()),me===ke.promise?ct(S("Promise-chain cycle")):(ln=ce(me))?ln.call(me,It,ct):It(me)):ct(L)}catch(cs){ct(cs)}};x.length>Je;)at(x[Je++]);y._c=[],y._n=!1,w&&!y._h&&_t(y)})}},_t=function(y){R.call(l,function(){var w,x,L,W=y._v;if(q(y)&&(w=st(function(){P?k.emit("unhandledRejection",W,y):(x=l.onunhandledrejection)?x({promise:y,reason:W}):(L=l.console)&&L.error&&L.error("Unhandled promise rejection",W)}),y._h=P||q(y)?2:1),y._a=void 0,w)throw w.error})},q=function(y){if(y._h==1)return!1;for(var w,x=y._a||y._c,L=0;x.length>L;)if(w=x[L++],w.fail||!q(w.promise))return!1;return!0},_e=function(y){R.call(l,function(){var w;P?k.emit("rejectionHandled",y):(w=l.onrejectionhandled)&&w({promise:y,reason:y._v})})},ee=function(y){var w=this;w._d||(w._d=!0,w=w._w||w,w._v=y,w._s=2,w._a||(w._a=w._c.slice()),Qe(w,!0))},kt=function(y){var w,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw S("Promise can't be resolved itself");(w=ce(y))?b(function(){var L={_w:x,_d:!1};try{w.call(y,u(kt,L,1),u(ee,L,1))}catch(W){ee.call(L,W)}}):(x._v=y,x._s=1,Qe(x,!1))}catch(L){ee.call({_w:x,_d:!1},L)}}};H||(g=function(y){v(this,g,_,"_h"),h(y),i.call(this);try{y(u(kt,this,1),u(ee,this,1))}catch(w){ee.call(this,w)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(g.prototype,{then:function(y,w){var x=X(O(this,g));return x.ok=typeof y!="function"||y,x.fail=typeof w=="function"&&w,x.domain=P?k.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&Qe(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),Te=function(){var y=new i;this.promise=y,this.resolve=u(kt,y,1),this.reject=u(ee,y,1)}),p(p.G+p.W+p.F*!H,{Promise:g}),t(18)(g,_),t(59)(_),a=t(6)[_],p(p.S+p.F*!H,_,{reject:function(y){var w=X(this),x=w.reject;return x(y),w.promise}}),p(p.S+p.F*(c||!H),_,{resolve:function(y){if(y instanceof g&&ae(y.constructor,this))return y;var w=X(this),x=w.resolve;return x(y),w.promise}}),p(p.S+p.F*!(H&&t(46)(function(y){g.all(y).catch(D)})),_,{all:function(y){var w=this,x=X(w),L=x.resolve,W=x.reject,Je=st(function(){var at=[],ke=0,me=1;E(y,!1,function(ln){var Ot=ke++,It=!1;at.push(void 0),me++,w.resolve(ln).then(function(ct){It||(It=!0,at[Ot]=ct,--me||L(at))},W)}),--me||L(at)});return Je&&W(Je.error),x.promise},race:function(y){var w=this,x=X(w),L=x.reject,W=st(function(){E(y,!1,function(Je){w.resolve(Je).then(x.resolve,L)})});return W&&L(W.error),x.promise}})},function(n,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(n,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(n,o){n.exports=require("child_process")},function(n,o){n.exports=require("crypto")}])})});var kr=ne((Pl,Si)=>{Si.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var Ri=ne((Cl,Ei)=>{var Ia=kr();function Ti(e){this.mode=Ia.MODE_8BIT_BYTE,this.data=e}Ti.prototype={getLength:function(){return this.data.length},write:function(e){for(var r=0;r<this.data.length;r++)e.put(this.data.charCodeAt(r),8)}};Ei.exports=Ti});var Or=ne((Ll,xi)=>{var de={glog:function(e){if(e<1)throw new Error("glog("+e+")");return de.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return de.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(F=0;F<8;F++)de.EXP_TABLE[F]=1<<F;var F;for(F=8;F<256;F++)de.EXP_TABLE[F]=de.EXP_TABLE[F-4]^de.EXP_TABLE[F-5]^de.EXP_TABLE[F-6]^de.EXP_TABLE[F-8];var F;for(F=0;F<255;F++)de.LOG_TABLE[de.EXP_TABLE[F]]=F;var F;xi.exports=de});var Ir=ne((Ml,bi)=>{var ot=Or();function Fn(e,r){if(e.length===void 0)throw new Error(e.length+"/"+r);for(var n=0;n<e.length&&e[n]===0;)n++;this.num=new Array(e.length-n+r);for(var o=0;o<e.length-n;o++)this.num[o]=e[o+n]}Fn.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var r=new Array(this.getLength()+e.getLength()-1),n=0;n<this.getLength();n++)for(var o=0;o<e.getLength();o++)r[n+o]^=ot.gexp(ot.glog(this.get(n))+ot.glog(e.get(o)));return new Fn(r,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var r=ot.glog(this.get(0))-ot.glog(e.get(0)),n=new Array(this.getLength()),o=0;o<this.getLength();o++)n[o]=this.get(o);for(var t=0;t<e.getLength();t++)n[t]^=ot.gexp(ot.glog(e.get(t))+r);return new Fn(n,0).mod(e)}};bi.exports=Fn});var _i=ne(($l,Ai)=>{Ai.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ii=ne((Nl,Oi)=>{var se=kr(),ki=Ir(),Pa=Or(),Ke=_i(),G={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var r=e<<10;G.getBCHDigit(r)-G.getBCHDigit(G.G15)>=0;)r^=G.G15<<G.getBCHDigit(r)-G.getBCHDigit(G.G15);return(e<<10|r)^G.G15_MASK},getBCHTypeNumber:function(e){for(var r=e<<12;G.getBCHDigit(r)-G.getBCHDigit(G.G18)>=0;)r^=G.G18<<G.getBCHDigit(r)-G.getBCHDigit(G.G18);return e<<12|r},getBCHDigit:function(e){for(var r=0;e!==0;)r++,e>>>=1;return r},getPatternPosition:function(e){return G.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,r,n){switch(e){case Ke.PATTERN000:return(r+n)%2===0;case Ke.PATTERN001:return r%2===0;case Ke.PATTERN010:return n%3===0;case Ke.PATTERN011:return(r+n)%3===0;case Ke.PATTERN100:return(Math.floor(r/2)+Math.floor(n/3))%2===0;case Ke.PATTERN101:return r*n%2+r*n%3===0;case Ke.PATTERN110:return(r*n%2+r*n%3)%2===0;case Ke.PATTERN111:return(r*n%3+(r+n)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var r=new ki([1],0),n=0;n<e;n++)r=r.multiply(new ki([1,Pa.gexp(n)],0));return r},getLengthInBits:function(e,r){if(1<=r&&r<10)switch(e){case se.MODE_NUMBER:return 10;case se.MODE_ALPHA_NUM:return 9;case se.MODE_8BIT_BYTE:return 8;case se.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(r<27)switch(e){case se.MODE_NUMBER:return 12;case se.MODE_ALPHA_NUM:return 11;case se.MODE_8BIT_BYTE:return 16;case se.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(r<41)switch(e){case se.MODE_NUMBER:return 14;case se.MODE_ALPHA_NUM:return 13;case se.MODE_8BIT_BYTE:return 16;case se.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+r)},getLostPoint:function(e){var r=e.getModuleCount(),n=0,o=0,t=0;for(o=0;o<r;o++)for(t=0;t<r;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||r<=o+a))for(var c=-1;c<=1;c++)t+c<0||r<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(n+=3+i-5)}for(o=0;o<r-1;o++)for(t=0;t<r-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(n+=3)}for(o=0;o<r;o++)for(t=0;t<r-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(n+=40);for(t=0;t<r;t++)for(o=0;o<r-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(n+=40);var u=0;for(t=0;t<r;t++)for(o=0;o<r;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/r/r-50)/5;return n+=f*10,n}};Oi.exports=G});var Pr=ne((Dl,Pi)=>{Pi.exports={L:1,M:0,Q:3,H:2}});var Li=ne((Ul,Ci)=>{var Hn=Pr();function ve(e,r){this.totalCount=e,this.dataCount=r}ve.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];ve.getRSBlocks=function(e,r){var n=ve.getRsBlockTable(e,r);if(n===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+r);for(var o=n.length/3,t=[],i=0;i<o;i++)for(var s=n[i*3+0],a=n[i*3+1],c=n[i*3+2],l=0;l<s;l++)t.push(new ve(a,c));return t};ve.getRsBlockTable=function(e,r){switch(r){case Hn.L:return ve.RS_BLOCK_TABLE[(e-1)*4+0];case Hn.M:return ve.RS_BLOCK_TABLE[(e-1)*4+1];case Hn.Q:return ve.RS_BLOCK_TABLE[(e-1)*4+2];case Hn.H:return ve.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Ci.exports=ve});var Ni=ne((Bl,$i)=>{function Mi(){this.buffer=[],this.length=0}Mi.prototype={get:function(e){var r=Math.floor(e/8);return(this.buffer[r]>>>7-e%8&1)==1},put:function(e,r){for(var n=0;n<r;n++)this.putBit((e>>>r-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),e&&(this.buffer[r]|=128>>>this.length%8),this.length++}};$i.exports=Mi});var Fi=ne((Fl,Bi)=>{var Ca=Ri(),je=Ii(),La=Ir(),Di=Li(),Ui=Ni();function Se(e,r){this.typeNumber=e,this.errorCorrectLevel=r,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Se.prototype={addData:function(e){var r=new Ca(e);this.dataList.push(r),this.dataCache=null},isDark:function(e,r){if(e<0||this.moduleCount<=e||r<0||this.moduleCount<=r)throw new Error(e+","+r);return this.modules[e][r]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var r=Di.getRSBlocks(e,this.errorCorrectLevel),n=new Ui,o=0,t=0;t<r.length;t++)o+=r[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];n.put(s.mode,4),n.put(s.getLength(),je.getLengthInBits(s.mode,e)),s.write(n)}if(n.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,r){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var n=0;n<this.moduleCount;n++){this.modules[n]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[n][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,r),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Se.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,r)},setupPositionProbePattern:function(e,r){for(var n=-1;n<=7;n++)if(!(e+n<=-1||this.moduleCount<=e+n))for(var o=-1;o<=7;o++)r+o<=-1||this.moduleCount<=r+o||(0<=n&&n<=6&&(o===0||o===6)||0<=o&&o<=6&&(n===0||n===6)||2<=n&&n<=4&&2<=o&&o<=4?this.modules[e+n][r+o]=!0:this.modules[e+n][r+o]=!1)},getBestMaskPattern:function(){for(var e=0,r=0,n=0;n<8;n++){this.makeImpl(!0,n);var o=je.getLostPoint(this);(n===0||e>o)&&(e=o,r=n)}return r},createMovieClip:function(e,r,n){var o=e.createEmptyMovieClip(r,n),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var r=8;r<this.moduleCount-8;r++)this.modules[6][r]===null&&(this.modules[6][r]=r%2===0)},setupPositionAdjustPattern:function(){for(var e=je.getPatternPosition(this.typeNumber),r=0;r<e.length;r++)for(var n=0;n<e.length;n++){var o=e[r],t=e[n];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var r=je.getBCHTypeNumber(this.typeNumber),n,o=0;o<18;o++)n=!e&&(r>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=n;for(var t=0;t<18;t++)n=!e&&(r>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=n},setupTypeInfo:function(e,r){for(var n=this.errorCorrectLevel<<3|r,o=je.getBCHTypeInfo(n),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,r){for(var n=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=je.getMask(r,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=n,o<0||this.moduleCount<=o){o-=n,n=-n;break}}}};Se.PAD0=236;Se.PAD1=17;Se.createData=function(e,r,n){for(var o=Di.getRSBlocks(e,r),t=new Ui,i=0;i<n.length;i++){var s=n[i];t.put(s.mode,4),t.put(s.getLength(),je.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Se.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Se.PAD1,8);return Se.createBytes(t,o)};Se.createBytes=function(e,r){for(var n=0,o=0,t=0,i=new Array(r.length),s=new Array(r.length),a=0;a<r.length;a++){var c=r[a].dataCount,l=r[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+n];n+=c;var f=je.getErrorCorrectPolynomial(l),p=new La(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var v=h+d.getLength()-s[a].length;s[a][h]=v>=0?d.get(v):0}}for(var E=0,O=0;O<r.length;O++)E+=r[O].totalCount;for(var R=new Array(E),b=0,_=0;_<o;_++)for(var S=0;S<r.length;S++)_<i[S].length&&(R[b++]=i[S][_]);for(var g=0;g<t;g++)for(var k=0;k<r.length;k++)g<s[k].length&&(R[b++]=s[k][g]);return R};Bi.exports=Se});var ji=ne((Hl,Ki)=>{var Ma=Fi(),Hi=Pr(),$a="\x1B[40m \x1B[0m",Kn="\x1B[47m \x1B[0m",Na=function(e){return e?$a:Kn},Cr=function(e){return{times:function(r){return new Array(r).join(e)}}},Da=function(e,r){for(var n=new Array(e),o=0;o<e;o++)n[o]=r;return n};Ki.exports={error:Hi.L,generate:function(e,r,n){typeof r=="function"&&(n=r,r={});var o=new Ma(-1,this.error);o.addData(e),o.make();var t="";if(r&&r.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Da(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=Cr(u.BLACK_WHITE).times(a+3),p=Cr(u.WHITE_BLACK).times(a+3);t+=f+`
7
+ `;for(var d=0;d<a;d+=2){t+=u.WHITE_ALL;for(var h=0;h<a;h++)c[d][h]===s&&c[d+1][h]===s?t+=u.WHITE_ALL:c[d][h]===s&&c[d+1][h]===i?t+=u.WHITE_BLACK:c[d][h]===i&&c[d+1][h]===s?t+=u.BLACK_WHITE:t+=u.BLACK_ALL;t+=u.WHITE_ALL+`
8
+ `}l||(t+=p)}else{var v=Cr(Kn).times(o.getModuleCount()+3);t+=v+`
9
+ `,o.modules.forEach(function(E){t+=Kn,t+=E.map(Na).join(""),t+=Kn+`
10
+ `}),t+=v}n?n(t):console.log(t)},setErrorLevel:function(e){this.error=Hi[e]||this.error}}});var pn=require("fs"),Ct=require("path"),Wr=require("url"),Yr=A(require("os"),1);var fn=A(require("dns"),1),Ee=A(require("path"),1),Br=A(require("os"),1),Oe=Ee.default.join(Br.default.homedir(),".9remote"),he={ROOT:Oe,LOGS:Ee.default.join(Oe,"logs"),STATE:Ee.default.join(Oe,"state"),CONFIG:Ee.default.join(Oe,"config"),BIN:Ee.default.join(Oe,"bin"),PIDS:Ee.default.join(Oe,"pids"),BUFFERS:Ee.default.join(Oe,"buffers"),DAEMON:Ee.default.join(Oe,"daemon")},Fr=new fn.default.promises.Resolver;Fr.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var Wn=fn.default.lookup,ys=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;fn.default.lookup=(e,r,n)=>{if(typeof r=="function"&&(n=r,r={}),e==="localhost"||ys.test(e))return Wn(e,r,n);Fr.resolve4(e).then(o=>{if(!o?.length)return Wn(e,r,n);r.all?n(null,o.map(t=>({address:t,family:4}))):n(null,o[0],4)}).catch(()=>Wn(e,r,n))};var I=2208,Ur=5173,ic=[`http://localhost:${I}`,`http://127.0.0.1:${I}`,`http://localhost:${Ur}`,`http://127.0.0.1:${Ur}`],Pt={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},Hr=60,C={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},Kr={showTunnelUrlInMenu:!1};var jr={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var Gr={checkIntervalMs:3e4,requestTimeoutMs:5e3},re={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},ws={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function Y(e,r={}){return fetch(e,{...r,headers:{...ws,...r.headers}})}var vs=(0,Ct.dirname)((0,Wr.fileURLToPath)(__importMetaUrl)),Ss=[(0,Ct.join)(Yr.default.homedir(),".9remote",".env"),(0,Ct.join)(vs,"..",".env")];function Ts(e){for(let r of e.split(`
11
+ `)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of Ss)if((0,pn.existsSync)(e))try{Ts((0,pn.readFileSync)(e,"utf8"))}catch{}for(let[e,r]of Object.entries(jr))process.env[e]||(process.env[e]=r);var ge=A(require("fs"),1),Vn=A(require("path"),1);var dn=he.LOGS,Mt=Vn.default.join(dn,Pt.fileName),mn=Vn.default.join(dn,Pt.rotatedName),Vr=!1,Qr=null;function Es(){ge.default.existsSync(dn)||ge.default.mkdirSync(dn,{recursive:!0})}function Rs(){try{if(ge.default.statSync(Mt).size<Pt.maxBytes)return;try{ge.default.rmSync(mn,{force:!0})}catch{}ge.default.renameSync(Mt,mn)}catch{}}function xs(){try{let e=ge.default.statSync(mn);Date.now()-e.mtimeMs>Pt.cleanupAfterDays*864e5&&ge.default.rmSync(mn,{force:!0})}catch{}}function Qn(e){try{Rs(),ge.default.appendFileSync(Mt,e+`
12
+ `)}catch{}}function Yn(e){return e.map(r=>{if(r instanceof Error)return r.stack||r.message;if(typeof r=="object")try{return JSON.stringify(r)}catch{return String(r)}return String(r)}).join(" ")}function Jr(){let e=new Date,r=(n,o=2)=>String(n).padStart(o,"0");return`${r(e.getHours())}:${r(e.getMinutes())}:${r(e.getSeconds())}.${r(e.getMilliseconds(),3)}`}var bs=/\x1b\[[0-9;]*m/g,As=/https?:\/\/[^\s]+/g;function _s(e){return String(e).replace(bs,"").replace(As,"").replace(/\s+$/g,"")}function Lt(e,r,n){let o=_s(n);if(!o)return;let t=r==="info"?e:`${e}:${r}`,i=`${Jr()} [${t}] ${o}`;if(Qn(i),Qr)try{Qr(i)}catch{}}function ks(){process.on("uncaughtException",e=>Lt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let r=e instanceof Error?e.stack||e.message:String(e);Lt("crash","error",`unhandledRejection: ${r}`)}),process.on("exit",e=>Qn(`${Jr()} [exit] code=${e} pid=${process.pid}`))}function Xr(){Vr||(Vr=!0,Es(),xs(),Qn(`
13
+ === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),ks())}function qr(e=60){try{return ge.default.readFileSync(Mt,"utf8").split(`
14
+ `).filter(Boolean).slice(-e)}catch{return[]}}function V(e){return{info:(...r)=>Lt(e,"info",Yn(r)),warn:(...r)=>Lt(e,"warn",Yn(r)),error:(...r)=>Lt(e,"error",Yn(r))}}var $t=Mt;var Zr=(e=0)=>r=>`\x1B[${r+e}m`,zr=(e=0)=>r=>`\x1B[${38+e};5;${r}m`,eo=(e=0)=>(r,n,o)=>`\x1B[${38+e};2;${r};${n};${o}m`,M={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},uc=Object.keys(M.modifier),Os=Object.keys(M.color),Is=Object.keys(M.bgColor),fc=[...Os,...Is];function Ps(){let e=new Map;for(let[r,n]of Object.entries(M)){for(let[o,t]of Object.entries(n))M[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},n[o]=M[o],e.set(t[0],t[1]);Object.defineProperty(M,r,{value:n,enumerable:!1})}return Object.defineProperty(M,"codes",{value:e,enumerable:!1}),M.color.close="\x1B[39m",M.bgColor.close="\x1B[49m",M.color.ansi=Zr(),M.color.ansi256=zr(),M.color.ansi16m=eo(),M.bgColor.ansi=Zr(10),M.bgColor.ansi256=zr(10),M.bgColor.ansi16m=eo(10),Object.defineProperties(M,{rgbToAnsi256:{value(r,n,o){return r===n&&n===o?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(r){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(r.toString(16));if(!n)return[0,0,0];let[o]=n;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:r=>M.rgbToAnsi256(...M.hexToRgb(r)),enumerable:!1},ansi256ToAnsi:{value(r){if(r<8)return 30+r;if(r<16)return 90+(r-8);let n,o,t;if(r>=232)n=((r-232)*10+8)/255,o=n,t=n;else{r-=16;let a=r%36;n=Math.floor(r/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(n,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(n));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(r,n,o)=>M.ansi256ToAnsi(M.rgbToAnsi256(r,n,o)),enumerable:!1},hexToAnsi:{value:r=>M.ansi256ToAnsi(M.hexToAnsi256(r)),enumerable:!1}}),M}var Cs=Ps(),le=Cs;var gn=A(require("node:process"),1),no=A(require("node:os"),1),Jn=A(require("node:tty"),1);function oe(e,r=globalThis.Deno?globalThis.Deno.args:gn.default.argv){let n=e.startsWith("-")?"":e.length===1?"-":"--",o=r.indexOf(n+e),t=r.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:$}=gn.default,hn;oe("no-color")||oe("no-colors")||oe("color=false")||oe("color=never")?hn=0:(oe("color")||oe("colors")||oe("color=true")||oe("color=always"))&&(hn=1);function Ls(){if("FORCE_COLOR"in $)return $.FORCE_COLOR==="true"?1:$.FORCE_COLOR==="false"?0:$.FORCE_COLOR.length===0?1:Math.min(Number.parseInt($.FORCE_COLOR,10),3)}function Ms(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function $s(e,{streamIsTTY:r,sniffFlags:n=!0}={}){let o=Ls();o!==void 0&&(hn=o);let t=n?hn:o;if(t===0)return 0;if(n){if(oe("color=16m")||oe("color=full")||oe("color=truecolor"))return 3;if(oe("color=256"))return 2}if("TF_BUILD"in $&&"AGENT_NAME"in $)return 1;if(e&&!r&&t===void 0)return 0;let i=t||0;if($.TERM==="dumb")return i;if(gn.default.platform==="win32"){let s=no.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in $)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in $)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in $)||$.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in $)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test($.TEAMCITY_VERSION)?1:0;if($.COLORTERM==="truecolor"||$.TERM==="xterm-kitty"||$.TERM==="xterm-ghostty"||$.TERM==="wezterm")return 3;if("TERM_PROGRAM"in $){let s=Number.parseInt(($.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch($.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test($.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test($.TERM)||"COLORTERM"in $?1:i}function to(e,r={}){let n=$s(e,{streamIsTTY:e&&e.isTTY,...r});return Ms(n)}var Ns={stdout:to({isTTY:Jn.default.isatty(1)}),stderr:to({isTTY:Jn.default.isatty(2)})},ro=Ns;function oo(e,r,n){let o=e.indexOf(r);if(o===-1)return e;let t=r.length,i=0,s="";do s+=e.slice(i,o)+r+n,i=o+t,o=e.indexOf(r,i);while(o!==-1);return s+=e.slice(i),s}function io(e,r,n,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+r+(s?`\r
15
15
  `:`
16
16
  `)+n,t=o+1,o=e.indexOf(`
17
- `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:no,stderr:ro}=zr,Jn=Symbol("GENERATOR"),ct=Symbol("STYLER"),Lt=Symbol("IS_EMPTY"),oo=["ansi","ansi","ansi256","ansi16m"],lt=Object.create(null),ks=(e,r={})=>{if(r.level&&!(Number.isInteger(r.level)&&r.level>=0&&r.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let n=no?no.level:0;e.level=r.level===void 0?n:r.level};var Os=e=>{let r=(...n)=>n.join(" ");return ks(r,e),Object.setPrototypeOf(r,$t.prototype),r};function $t(e){return Os(e)}Object.setPrototypeOf($t.prototype,Function.prototype);for(let[e,r]of Object.entries(ce))lt[e]={get(){let n=mn(this,qn(r.open,r.close,this[ct]),this[Lt]);return Object.defineProperty(this,e,{value:n}),n}};lt.visible={get(){let e=mn(this,this[ct],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var Xn=(e,r,n,...o)=>e==="rgb"?r==="ansi16m"?ce[n].ansi16m(...o):r==="ansi256"?ce[n].ansi256(ce.rgbToAnsi256(...o)):ce[n].ansi(ce.rgbToAnsi(...o)):e==="hex"?Xn("rgb",r,n,...ce.hexToRgb(...o)):ce[n][e](...o),Ps=["rgb","hex","ansi256"];for(let e of Ps){lt[e]={get(){let{level:n}=this;return function(...o){let t=qn(Xn(e,oo[n],"color",...o),ce.color.close,this[ct]);return mn(this,t,this[Lt])}}};let r="bg"+e[0].toUpperCase()+e.slice(1);lt[r]={get(){let{level:n}=this;return function(...o){let t=qn(Xn(e,oo[n],"bgColor",...o),ce.bgColor.close,this[ct]);return mn(this,t,this[Lt])}}}}var Cs=Object.defineProperties(()=>{},{...lt,level:{enumerable:!0,get(){return this[Jn].level},set(e){this[Jn].level=e}}}),qn=(e,r,n)=>{let o,t;return n===void 0?(o=e,t=r):(o=n.openAll+e,t=r+n.closeAll),{open:e,close:r,openAll:o,closeAll:t,parent:n}},mn=(e,r,n)=>{let o=(...t)=>Ms(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,Cs),o[Jn]=e,o[ct]=r,o[Lt]=n,o},Ms=(e,r)=>{if(e.level<=0||!r)return e[Lt]?"":r;let n=e[ct];if(n===void 0)return r;let{openAll:o,closeAll:t}=n;if(r.includes("\x1B"))for(;n!==void 0;)r=eo(r,n.close,n.open),n=n.parent;let i=r.indexOf(`
18
- `);return i!==-1&&(r=to(r,t,o,i)),o+r+t};Object.defineProperties($t.prototype,lt);var Ls=$t(),ic=$t({level:ro?ro.level:0});var y=Ls;var Ce=require("fs"),uo=require("url"),gn=require("child_process"),yn=A(require("path"),1),fo=A(require("os"),1);var ut=A(require("fs"),1),zn=A(require("path"),1),io=A(require("os"),1),so=require("child_process"),Zn=zn.default.join(io.default.homedir(),".9remote","pids");function $s(){try{ut.default.existsSync(Zn)||ut.default.mkdirSync(Zn,{recursive:!0})}catch{}}function er(e){return zn.default.join(Zn,`${e}.pid`)}function Oe(e,r){if(r)try{$s(),ut.default.writeFileSync(er(e),String(r))}catch{}}function hn(e){try{let r=ut.default.readFileSync(er(e),"utf8").trim(),n=parseInt(r,10);return Number.isFinite(n)&&n>0?n:null}catch{return null}}function Pe(e){try{ut.default.unlinkSync(er(e))}catch{}}function ao(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Ns(e){let r=hn(e);if(Pe(e),!r)return!1;try{process.platform==="win32"?(0,so.execSync)(`taskkill /F /T /PID ${r}`,{stdio:"ignore",windowsHide:!0}):process.kill(r,"SIGKILL")}catch{}return!0}var Ds=["cloudflared","agent"];function co(){for(let e of Ds)Ns(e)}var Bs=yn.default.dirname((0,uo.fileURLToPath)(__importMetaUrl)),Fs="9remote",Us=`https://registry.npmjs.org/${Fs}/latest`,Hs=3e3;var lo=2208,tr=yn.default.join(fo.default.homedir(),".9remote","cloudflared.pid");function Ks(){try{co()}catch{}try{if((0,Ce.existsSync)(tr)){let e=parseInt((0,Ce.readFileSync)(tr,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,Ce.unlinkSync)(tr)}catch{}}}catch{}try{process.platform==="win32"?(0,gn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${lo}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,gn.execSync)(`lsof -ti:${lo} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function js(){return"2.0.22"}function Gs(e,r){let n=e.split(".").map(Number),o=r.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>n[t])return!0;if(o[t]<n[t])return!1}return!1}function wn(){Ks()}async function po(){try{let e=js();if(!e)return null;let r=await W(Us,{signal:AbortSignal.timeout(Hs)});if(!r.ok)return null;let{version:n}=await r.json();return n&&Gs(e,n)?{current:e,latest:n}:null}catch{return null}}var Z=A(require("fs"),1),Nt=A(require("path"),1);var dc=me.STATE,nr=Nt.default.join(me.STATE,"state.json"),rr=Nt.default.join(me.ROOT,"keys.json"),vn=Nt.default.join(me.STATE,"cmd.json"),mc=Nt.default.join(me.STATE,"settings.json");function Tn(){for(let e of[me.ROOT,me.STATE])Z.default.existsSync(e)||Z.default.mkdirSync(e,{recursive:!0})}function Sn(e){try{Tn(),Z.default.writeFileSync(nr,JSON.stringify(e,null,2),{mode:384})}catch(r){console.error("Error saving state:",r)}}function mo(){try{Z.default.existsSync(nr)&&Z.default.unlinkSync(nr)}catch{}}function En(){try{return Tn(),Z.default.existsSync(rr)?JSON.parse(Z.default.readFileSync(rr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function xn(e){try{Tn(),Z.default.writeFileSync(vn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function ho(){try{if(!Z.default.existsSync(vn))return null;let e=JSON.parse(Z.default.readFileSync(vn,"utf8"));return Z.default.unlinkSync(vn),e.cmd}catch{return null}}function Je(e,r,n="Default"){try{Tn();let o={machineId:e,key:r,name:n,createdAt:new Date().toISOString()};return Z.default.writeFileSync(rr,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}var ko=A(require("os"),1);var _n=A(require("readline"),1),wo=A(require("http"),1);var or=require("child_process"),Ws={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function Rn(e){let r=Ws[e];r&&process.platform==="darwin"&&(0,or.exec)(`open "${r}"`,()=>{})}function le({strategy:e,baseMs:r,maxMs:n},o){let t=Math.max(1,o),i=e==="exp"?r*Math.pow(2,t-1):r*t;return Math.min(i,n)}async function go({config:e,task:r,label:n="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await r(i))return!0}catch(a){o(`\u274C ${n} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=le(e,i);o(`\u{1F504} ${n} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var S={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},vo=()=>Math.min(44,process.stdout.columns||44);function sr(e,r=null){let o=vo()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return S.orange+"\u2551"+S.reset+a+" ".repeat(l)+S.orange+"\u2551"+S.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return S.orange+"\u2551"+S.reset+" ".repeat(u)+c(a)+" ".repeat(f)+S.orange+"\u2551"+S.reset},s=["",S.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+S.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>S.bold+S.orange+a+S.reset),i("Remote terminal access from anywhere",a=>S.dim+a+S.reset),t()];return r&&(s.push(i(`\u2B06 New version v${r} available!`,a=>S.yellow+S.bold+a+S.reset)),s.push(i("Run: npm i -g 9remote@latest",a=>S.dim+a+S.reset)),s.push(t())),s.push(S.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+S.reset),s.push(""),s.join(`
19
- `)}function In(e,r=null){console.log(sr(e,r))}var yo=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],ir=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],Ys=process.platform==="win32",Vs=Ys?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var To=(e,r)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(r)};process.on("SIGINT",()=>To("SIGINT",130));process.on("SIGTERM",()=>To("SIGTERM",143));var xe=0,Xe=null,bn=0,ge=-1,Dt=null,ft=null,An=!1;function So(){let e=[],r=ge===ir.length-1;return ir.forEach((n,o)=>{let t=o===ge&&Dt?Dt:n.desc;if(o<ge||r&&o===ge)e.push(` ${S.green}\u2713${S.reset} ${S.dim}${n.label}${S.reset}`),ft&&o===ft.afterIdx&&e.push(` ${S.green}\u2713${S.reset} ${S.cyan}${ft.text}${S.reset}`);else if(o===ge){let i=yo[bn%yo.length];e.push(` ${S.orange}${i}${S.reset} ${S.bold}${n.label}${S.reset} ${S.dim}${t}${S.reset}`)}else e.push(` ${S.dim}\u25CB ${n.label}${S.reset}`)}),e}function Eo(){let e=So();xe>0&&process.stdout.write(`\x1B[${xe}A\x1B[0J`),process.stdout.write(e.join(`
17
+ `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:so,stderr:ao}=ro,Xn=Symbol("GENERATOR"),lt=Symbol("STYLER"),Nt=Symbol("IS_EMPTY"),co=["ansi","ansi","ansi256","ansi16m"],ut=Object.create(null),Ds=(e,r={})=>{if(r.level&&!(Number.isInteger(r.level)&&r.level>=0&&r.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let n=so?so.level:0;e.level=r.level===void 0?n:r.level};var Us=e=>{let r=(...n)=>n.join(" ");return Ds(r,e),Object.setPrototypeOf(r,Dt.prototype),r};function Dt(e){return Us(e)}Object.setPrototypeOf(Dt.prototype,Function.prototype);for(let[e,r]of Object.entries(le))ut[e]={get(){let n=yn(this,Zn(r.open,r.close,this[lt]),this[Nt]);return Object.defineProperty(this,e,{value:n}),n}};ut.visible={get(){let e=yn(this,this[lt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var qn=(e,r,n,...o)=>e==="rgb"?r==="ansi16m"?le[n].ansi16m(...o):r==="ansi256"?le[n].ansi256(le.rgbToAnsi256(...o)):le[n].ansi(le.rgbToAnsi(...o)):e==="hex"?qn("rgb",r,n,...le.hexToRgb(...o)):le[n][e](...o),Bs=["rgb","hex","ansi256"];for(let e of Bs){ut[e]={get(){let{level:n}=this;return function(...o){let t=Zn(qn(e,co[n],"color",...o),le.color.close,this[lt]);return yn(this,t,this[Nt])}}};let r="bg"+e[0].toUpperCase()+e.slice(1);ut[r]={get(){let{level:n}=this;return function(...o){let t=Zn(qn(e,co[n],"bgColor",...o),le.bgColor.close,this[lt]);return yn(this,t,this[Nt])}}}}var Fs=Object.defineProperties(()=>{},{...ut,level:{enumerable:!0,get(){return this[Xn].level},set(e){this[Xn].level=e}}}),Zn=(e,r,n)=>{let o,t;return n===void 0?(o=e,t=r):(o=n.openAll+e,t=r+n.closeAll),{open:e,close:r,openAll:o,closeAll:t,parent:n}},yn=(e,r,n)=>{let o=(...t)=>Hs(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,Fs),o[Xn]=e,o[lt]=r,o[Nt]=n,o},Hs=(e,r)=>{if(e.level<=0||!r)return e[Nt]?"":r;let n=e[lt];if(n===void 0)return r;let{openAll:o,closeAll:t}=n;if(r.includes("\x1B"))for(;n!==void 0;)r=oo(r,n.close,n.open),n=n.parent;let i=r.indexOf(`
18
+ `);return i!==-1&&(r=io(r,t,o,i)),o+r+t};Object.defineProperties(Dt.prototype,ut);var Ks=Dt(),wc=Dt({level:ao?ao.level:0});var m=Ks;var Ce=require("fs"),ho=require("url"),vn=require("child_process"),Sn=A(require("path"),1),go=A(require("os"),1);var ft=A(require("fs"),1),er=A(require("path"),1),lo=A(require("os"),1),uo=require("child_process"),zn=er.default.join(lo.default.homedir(),".9remote","pids");function js(){try{ft.default.existsSync(zn)||ft.default.mkdirSync(zn,{recursive:!0})}catch{}}function tr(e){return er.default.join(zn,`${e}.pid`)}function Ie(e,r){if(r)try{js(),ft.default.writeFileSync(tr(e),String(r))}catch{}}function wn(e){try{let r=ft.default.readFileSync(tr(e),"utf8").trim(),n=parseInt(r,10);return Number.isFinite(n)&&n>0?n:null}catch{return null}}function Pe(e){try{ft.default.unlinkSync(tr(e))}catch{}}function fo(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Gs(e){let r=wn(e);if(Pe(e),!r)return!1;try{process.platform==="win32"?(0,uo.execSync)(`taskkill /F /T /PID ${r}`,{stdio:"ignore",windowsHide:!0}):process.kill(r,"SIGKILL")}catch{}return!0}var Ws=["cloudflared","agent"];function po(){for(let e of Ws)Gs(e)}var Ys=Sn.default.dirname((0,ho.fileURLToPath)(__importMetaUrl)),Vs="9remote",Qs=`https://registry.npmjs.org/${Vs}/latest`,Js=3e3;var mo=2208,nr=Sn.default.join(go.default.homedir(),".9remote","cloudflared.pid");function Xs(){try{po()}catch{}try{if((0,Ce.existsSync)(nr)){let e=parseInt((0,Ce.readFileSync)(nr,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,Ce.unlinkSync)(nr)}catch{}}}catch{}try{process.platform==="win32"?(0,vn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${mo}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,vn.execSync)(`lsof -ti:${mo} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function qs(){return"2.0.26"}function Zs(e,r){let n=e.split(".").map(Number),o=r.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>n[t])return!0;if(o[t]<n[t])return!1}return!1}function Tn(){Xs()}async function yo(){try{let e=qs();if(!e)return null;let r=await Y(Qs,{signal:AbortSignal.timeout(Js)});if(!r.ok)return null;let{version:n}=await r.json();return n&&Zs(e,n)?{current:e,latest:n}:null}catch{return null}}var te=A(require("fs"),1),Ut=A(require("path"),1);var Ac=he.STATE,rr=Ut.default.join(he.STATE,"state.json"),or=Ut.default.join(he.ROOT,"keys.json"),En=Ut.default.join(he.STATE,"cmd.json"),_c=Ut.default.join(he.STATE,"settings.json");function Rn(){for(let e of[he.ROOT,he.STATE])te.default.existsSync(e)||te.default.mkdirSync(e,{recursive:!0})}function xn(e){try{Rn(),te.default.writeFileSync(rr,JSON.stringify(e,null,2),{mode:384})}catch(r){console.error("Error saving state:",r)}}function wo(){try{te.default.existsSync(rr)&&te.default.unlinkSync(rr)}catch{}}function bn(){try{return Rn(),te.default.existsSync(or)?JSON.parse(te.default.readFileSync(or,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function pt(e){try{Rn(),te.default.writeFileSync(En,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function vo(){try{if(!te.default.existsSync(En))return null;let e=JSON.parse(te.default.readFileSync(En,"utf8"));return te.default.unlinkSync(En),e.cmd}catch{return null}}function Xe(e,r,n="Default"){try{Rn();let o={machineId:e,key:r,name:n,createdAt:new Date().toISOString()};return te.default.writeFileSync(or,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}var Lo=A(require("os"),1);var On=A(require("readline"),1),Eo=A(require("http"),1);var ir=require("child_process"),zs={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function An(e){let r=zs[e];r&&process.platform==="darwin"&&(0,ir.exec)(`open "${r}"`,()=>{})}function ue({strategy:e,baseMs:r,maxMs:n},o){let t=Math.max(1,o),i=e==="exp"?r*Math.pow(2,t-1):r*t;return Math.min(i,n)}async function So({config:e,task:r,label:n="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await r(i))return!0}catch(a){o(`\u274C ${n} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=ue(e,i);o(`\u{1F504} ${n} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var T={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},Ro=()=>Math.min(44,process.stdout.columns||44);function ar(e,r=null){let o=Ro()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return T.orange+"\u2551"+T.reset+a+" ".repeat(l)+T.orange+"\u2551"+T.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return T.orange+"\u2551"+T.reset+" ".repeat(u)+c(a)+" ".repeat(f)+T.orange+"\u2551"+T.reset},s=["",T.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+T.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>T.bold+T.orange+a+T.reset),i("Remote terminal access from anywhere",a=>T.dim+a+T.reset),t()];return r&&(s.push(i(`\u2B06 New version v${r} available!`,a=>T.yellow+T.bold+a+T.reset)),s.push(i("Run: npm i -g 9remote@latest",a=>T.dim+a+T.reset)),s.push(t())),s.push(T.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+T.reset),s.push(""),s.join(`
19
+ `)}function mt(e,r=null){console.log(ar(e,r))}var To=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],sr=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],ea=process.platform==="win32",ta=ea?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var xo=(e,r)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(r)};process.on("SIGINT",()=>xo("SIGINT",130));process.on("SIGTERM",()=>xo("SIGTERM",143));var Re=0,qe=null,_n=0,ye=-1,Bt=null,dt=null,kn=!1;function bo(){let e=[],r=ye===sr.length-1;return sr.forEach((n,o)=>{let t=o===ye&&Bt?Bt:n.desc;if(o<ye||r&&o===ye)e.push(` ${T.green}\u2713${T.reset} ${T.dim}${n.label}${T.reset}`),dt&&o===dt.afterIdx&&e.push(` ${T.green}\u2713${T.reset} ${T.cyan}${dt.text}${T.reset}`);else if(o===ye){let i=To[_n%To.length];e.push(` ${T.orange}${i}${T.reset} ${T.bold}${n.label}${T.reset} ${T.dim}${t}${T.reset}`)}else e.push(` ${T.dim}\u25CB ${n.label}${T.reset}`)}),e}function Ao(){let e=bo();Re>0&&process.stdout.write(`\x1B[${Re}A\x1B[0J`),process.stdout.write(e.join(`
20
20
  `)+`
21
- `),xe=e.length}function xo(){if(xe===0||ge<0)return;let e=So();if(e.length!==xe){Eo();return}let r=ge+(ft&&ft.afterIdx<ge?1:0),n=xe-r;process.stdout.write(`\x1B[${n}A\r\x1B[2K${e[r]}\x1B[${n}B\r`)}function Qs(){An||(process.stdout.write("\x1B[?25l"),An=!0)}function Ro(){An&&(process.stdout.write("\x1B[?25h"),An=!1)}function bo(e,r=!1,n=null){Xe&&(clearInterval(Xe),Xe=null),ge=e,Dt=n,bn=0,r||(xe=0),Eo(),e<ir.length-1?(Qs(),Xe=setInterval(()=>{bn++,xo()},Vs)):Ro()}function pt(e){Dt=e,xe>0&&xo()}function Ao(){Xe&&(clearInterval(Xe),Xe=null),Ro(),xe=0,ge=-1,Dt=null,ft=null,bn=0}function ye(e,r,n=0,o="",t=null,i=null){return new Promise(s=>{let a=n,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let v=typeof o=="function"?o():o;if(v)for(let E of v.split(`
21
+ `),Re=e.length}function _o(){if(Re===0||ye<0)return;let e=bo();if(e.length!==Re){Ao();return}let r=ye+(dt&&dt.afterIdx<ye?1:0),n=Re-r;process.stdout.write(`\x1B[${n}A\r\x1B[2K${e[r]}\x1B[${n}B\r`)}function na(){kn||(process.stdout.write("\x1B[?25l"),kn=!0)}function ko(){kn&&(process.stdout.write("\x1B[?25h"),kn=!1)}function Oo(e,r=!1,n=null){qe&&(clearInterval(qe),qe=null),ye=e,Bt=n,_n=0,r||(Re=0),Ao(),e<sr.length-1?(na(),qe=setInterval(()=>{_n++,_o()},ta)):ko()}function ht(e){Bt=e,Re>0&&_o()}function Io(){qe&&(clearInterval(qe),qe=null),ko(),Re=0,ye=-1,Bt=null,dt=null,_n=0}function we(e,r,n=0,o="",t=null,i=null){return new Promise(s=>{let a=n,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let v=typeof o=="function"?o():o;if(v)for(let E of v.split(`
22
22
  `))process.stdout.write(E+`\x1B[K
23
- `);e&&process.stdout.write(`${S.dim}${e}${S.reset}\x1B[K
23
+ `);e&&process.stdout.write(`${T.dim}${e}${T.reset}\x1B[K
24
24
  \x1B[K
25
- `),r.forEach((E,k)=>{let x=k===a?u?">":"\u2605":u?" ":"\u2606",b=k===a?` \x1B[7m${S.bold}${x} ${E.label}${S.reset}`:` ${x} ${E.label}`;process.stdout.write(b+`\x1B[K
26
- `)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(v,E)=>{!c||!E||(E.name==="up"?(a=(a-1+r.length)%r.length,f()):E.name==="down"?(a=(a+1)%r.length,f()):E.name==="return"?(p(),s(a)):E.name==="escape"?(p(),s(-1)):E.ctrl&&E.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),_n.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),t&&t(f,()=>{c&&(p(),s(-2))})})}function ar(e){return new Promise(r=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),_n.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let n=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",n),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
25
+ `),r.forEach((E,O)=>{let R=O===a?u?">":"\u2605":u?" ":"\u2606",b=O===a?` \x1B[7m${T.bold}${R} ${E.label}${T.reset}`:` ${R} ${E.label}`;process.stdout.write(b+`\x1B[K
26
+ `)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(v,E)=>{!c||!E||(E.name==="up"?(a=(a-1+r.length)%r.length,f()):E.name==="down"?(a=(a+1)%r.length,f()):E.name==="return"?(p(),s(a)):E.name==="escape"?(p(),s(-1)):E.ctrl&&E.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),On.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),t&&t(f,()=>{c&&(p(),s(-2))})})}function cr(e){return new Promise(r=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),On.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let n=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",n),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
27
27
  `),process.exit(0));let i=(t.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
28
- `),r(i)};process.stdin.on("keypress",n)})}function _o(e,r){return new Promise(n=>{let o=e?e.slice(0,8):"unknown",t=vo(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${S.orange}${"\u2550".repeat(t)}${S.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
28
+ `),r(i)};process.stdin.on("keypress",n)})}function Po(e,r){return new Promise(n=>{let o=e?e.slice(0,8):"unknown",t=Ro(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${T.orange}${"\u2550".repeat(t)}${T.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
29
29
  ${s}
30
- ${S.orange}${S.bold} \u{1F514} New Device Connection${S.reset}
30
+ ${T.orange}${T.bold} \u{1F514} New Device Connection${T.reset}
31
31
  ${s}
32
- Device: ${S.cyan}${o}...${S.reset}
33
- IP: ${S.cyan}${r}${S.reset}
32
+ Device: ${T.cyan}${o}...${T.reset}
33
+ IP: ${T.cyan}${r}${T.reset}
34
34
  ${s}
35
35
 
36
- Allow this device? ${S.dim}(y/n)${S.reset} `),_n.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",m=u.ctrl&&u.name==="c";if(!p&&!d&&!m)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}m&&process.exit(0);let v=p,E=v?`${S.green}y${S.reset}
36
+ Allow this device? ${T.dim}(y/n)${T.reset} `),On.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let v=p,E=v?`${T.green}y${T.reset}
37
37
 
38
- ${S.green}\u2713 Device approved${S.reset}
39
- `:`${S.red}n${S.reset}
38
+ ${T.green}\u2713 Device approved${T.reset}
39
+ `:`${T.red}n${T.reset}
40
40
 
41
- ${S.red}\u2717 Device rejected${S.reset}
42
- `;process.stdout.write(E),setTimeout(()=>{try{a()}catch{}n(v)},500)};process.stdin.on("keypress",c)})}function Io(e,r){let n=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{n?.destroy()}catch{}},i)},a=()=>{o||(n=wo.default.get(`http://localhost:${e}/api/ui/events`,c=>{let l="";s(),c.on("data",u=>{s(),l+=u.toString();let f=l.split(`
43
- `);l=f.pop();let p="";for(let d of f)if(d.startsWith("data: "))p=d.slice(6);else if(d===""&&p){try{let m=JSON.parse(p);r(m.type,m)}catch{}p=""}}),c.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,le(ee.sse,1))})}),n.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,le(ee.sse,1))}))};return a(),()=>{o=!0,t&&clearTimeout(t),n?.destroy()}}var cr=!1;function Oo(e){cr=e}async function we(e,r){try{return await fetch(`http://localhost:${P}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}catch{return null}}async function ne(e){try{let r=await fetch(`http://localhost:${P}${e}`);return r.ok?await r.json():null}catch{return null}}async function D(e){await we("/api/ui/state",e)}async function K(e,r={}){cr&&bo(e-1,e>C.PREPARING),await D({step:e,stepDesc:"",...r})}function kn({phase:e,percent:r}){let n=e==="download"?`Downloading tunnel binary ${r??0}%`:"Extracting tunnel binary";cr&&pt(n),D({stepDesc:n})}async function re(){return!!await ne("/api/health")}async function lr(){let[e,r,n,o]=await Promise.all([ne("/api/ui/state"),ne("/api/device/auto-approve"),ne("/api/autostart"),ne("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!r?.enabled,autoStart:!!n?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function Po(){let e=ko.default.networkInterfaces();for(let r of Object.values(e))for(let n of r)if(n.family==="IPv4"&&!n.internal)return n.address;return null}var zt=require("child_process"),en=A(require("path"),1),Er=A(require("fs"),1),li=require("url");var F=A(require("fs"),1),$e=A(require("path"),1),vr=A(require("https"),1),Ne=A(require("os"),1),Vo=A(require("net"),1),ze=require("child_process");var Co=A(require("dns"),1),Mo=require("child_process");var Js=2e3,Xs=5e3,Lo=new Co.default.promises.Resolver;Lo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function dt(){process.platform==="win32"&&(0,Mo.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function ur(e,r=Js){let n=Date.now();try{return{ok:!0,addrs:await Promise.race([Lo.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),r))]),elapsedMs:Date.now()-n}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-n}}}async function On(e,{flushDns:r=!1}={}){let n=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(r&&dt(),o){let t=await ur(o);if(!t.ok)return dt(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-n}}try{let t=await W(`${e}/api/health`,{signal:AbortSignal.timeout(Xs)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-n}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-n}}}var B="https://9remote.cc",$o=3e4,No=500,fr=300,ue={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Me={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},X={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},Re={maxLogLines:200,headerWidth:44},Do=5e3,Bo=2,Fo=3e4,oe={orange:y.rgb(230,138,110),orangeDim:y.rgb(200,120,95)};var qs=Y("tunnel"),Bt=null,Ft=null,mt=null,qe=null,Le=0,pr=!1;async function dr(e){try{await fetch(`http://localhost:${P}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function Uo(){if(!Ft||pr)return;let e=await On(Ft),r=e.ok?"healthy":"unreachable";if(r===mt){qe=null,Le=0;return}if(r!==qe){qe=r,Le=1;return}Le++,!(Le<Bo)&&(qs.info(`\u{1FA7A} ${mt??"init"} \u2192 ${r}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),mt=r,qe=null,Le=0,await dr({tunnelHealth:{status:r,checkedAt:Date.now()}}))}function Ho(e){if(!e)return Ht();e!==Ft&&(Ft=e,mt=null,qe=null,Le=0,dt(),Bt||(Bt=setInterval(Uo,Kr.checkIntervalMs)),Uo())}var Ko=Ho,ht=Ho;function jo(){pr=!0}function Go(){pr=!1}function Ut(e){mt=e,qe=null,Le=0,dr({tunnelHealth:{status:e,checkedAt:Date.now()}})}function Ht(){Bt&&(clearInterval(Bt),Bt=null),Ft=null,mt=null,qe=null,Le=0,dr({tunnelHealth:{status:"unknown",checkedAt:null}})}var V=Y("tunnel"),Gt={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},Wt=null,Pn=null,Cn=null,Yt=null,yt=!1,Kt=0,yr=!1,Vt=null,Mn=0,mr=0,hr=!1,Zs=3e4,zs=5e3,jt=$e.default.join(Ne.default.homedir(),".9remote","bin"),Wo="cloudflared",Qt=Ne.default.platform()==="win32",ea=Qt?`${Wo}.exe`:Wo,gt=$e.default.join(jt,ea),gr=$e.default.join(Ne.default.homedir(),".9remote","cloudflared.pid"),Ze=!1,Qo="https://github.com/cloudflare/cloudflared/releases/latest/download";function Jo(){return new Promise(e=>{let r=new Vo.default.Socket,n=!1,o=t=>{if(!n){n=!0;try{r.destroy()}catch{}e(t)}};r.setTimeout(Gt.internetCheckTimeoutMs),r.once("connect",()=>o(!0)),r.once("timeout",()=>o(!1)),r.once("error",()=>o(!1));try{r.connect(Gt.internetCheckPort,Gt.internetCheckHost)}catch{o(!1)}})}async function ta(){yr=!0;try{let e=0;for(;;){if(e++,await Jo())return;await new Promise(r=>setTimeout(r,le(ee.internet,e)))}}finally{yr=!1}}async function Ln(e,r){if(!Yt){V.warn("\u26A0\uFE0F No restartCallback registered \u2014 skip");return}if(yt){V.info(`\u23ED restart already in flight, skip (${r})`);return}if(Date.now()-mr<zs){V.info(`\u23ED restart debounced, skip (${r})`);return}mr=Date.now(),yt=!0;try{await ta();let n=le(ee.tunnelRestart,Kt+1);await new Promise(o=>setTimeout(o,n)),await Yt(e),Kt=0,mr=0}catch(n){Kt++,V.error(`\u274C restart failed (#${Kt}): ${n?.message||n}`),setImmediate(()=>{yt=!1,Ln(e,"retry after fail")});return}finally{yt=!1}}var na={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-amd64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function ra(){let e=Ne.default.platform(),r=Ne.default.arch(),n=na[e];if(!n)throw new Error(`Unsupported platform: ${e}`);let o=n[r];if(!o)throw new Error(`Unsupported architecture: ${r} for platform ${e}`);return`${Qo}/${o}`}var oa=150;async function Xo(e,r,n){return new Promise((o,t)=>{let i=F.default.createWriteStream(r);vr.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),F.default.unlinkSync(r),Xo(s.headers.location,r,n).then(o).catch(t);return}if(s.statusCode!==200){i.close(),F.default.unlinkSync(r),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!n||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=oa&&(l=p,u=d,n(d))}),s.pipe(i),i.on("finish",()=>{n&&a&&n(100),i.close(()=>o(r))}),i.on("error",f=>{i.close(),F.default.unlinkSync(r),t(f)})}).on("error",s=>{i.close(),F.default.existsSync(r)&&F.default.unlinkSync(r),t(s)})})}async function Jt(e){if(F.default.existsSync(jt)||F.default.mkdirSync(jt,{recursive:!0}),F.default.existsSync(gt))return Qt||F.default.chmodSync(gt,"755"),gt;let r=ra(),n=r.endsWith(".tgz"),o=n?$e.default.join(jt,"cloudflared.tgz"):gt;try{return e?.({phase:"download",percent:0}),await Xo(r,o,t=>{e?.({phase:"download",percent:t})}),await ia(r,o),n&&(e?.({phase:"extract"}),(0,ze.execSync)(`tar -xzf "${o}" -C "${jt}"`,{stdio:"pipe",windowsHide:!0}),F.default.unlinkSync(o)),Qt||F.default.chmodSync(gt,"755"),gt}catch(t){try{F.default.existsSync(o)&&F.default.unlinkSync(o)}catch{}throw console.error("\u274C Failed to download cloudflared:",t.message),t}}function qo(e){return new Promise((r,n)=>{vr.default.get(e,o=>{if([301,302].includes(o.statusCode))return qo(o.headers.location).then(r).catch(n);if(o.statusCode!==200)return n(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>r(t))}).on("error",n)})}async function ia(e,r){try{let n=$e.default.basename(e),o=`${Qo}/sha256sum.txt`,i=(await qo(o)).split(`
44
- `).find(l=>l.includes(n));if(!i){V.warn(`\u26A0\uFE0F No sha256 entry for ${n}, skipping verify`);return}let s=i.trim().split(/\s+/)[0],{createHash:a}=await import("crypto"),c=a("sha256").update(F.default.readFileSync(r)).digest("hex");if(c!==s)throw new Error(`SHA256 mismatch: expected ${s}, got ${c}`);V.info("\u2713 cloudflared SHA256 verified")}catch(n){throw new Error(`Integrity check failed: ${n.message}`)}}function sa(e){let r=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,n=[];for(let o of e.matchAll(r))o[1]!=="api"&&n.push(`https://${o[1]}.trycloudflare.com`);return n.length?n[n.length-1]:null}async function Zo(e,r=null,n=null){let o=await Jt();n&&(Yt=n),Cn=e;let t=F.default.mkdtempSync($e.default.join(Ne.default.tmpdir(),"9remote-quick-")),i=$e.default.join(t,"config.yml");F.default.writeFileSync(i,`# quick-tunnel
45
- `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{F.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,ze.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Oe("cloudflared",c.pid),Ze=!1,new Promise((l,u)=>{let f=!1,p=null,d="",m=setTimeout(()=>{f||(f=!0,a(),u(new Error("Quick tunnel timed out after 90s")))},9e4),v=E=>{let k=E.toString();d+=k,d.length>4096&&(d=d.slice(-4096));let x=sa(k);if(x){if(!f){f=!0,p=x,Vt=x,Mn=Date.now(),clearTimeout(m),a(),la(),V.info(`\u2705 tunnel ready: ${x}`),l({child:c,tunnelUrl:x});return}x!==p&&(V.info(`\u{1F504} URL rotated: ${x}`),p=x,Vt=x,Mn=Date.now(),r?.(x))}};c.stdout.on("data",v),c.stderr.on("data",v),c.on("error",E=>{f||(f=!0,clearTimeout(m),a(),u(E))}),c.on("exit",(E,k)=>{if(a(),V.info(`\u{1F4A5} cloudflared exit pid=${c.pid} code=${E} signal=${k} intentional=${Ze}`),Ze||Ut("unreachable"),!f){f=!0,clearTimeout(m);let x=d.trim().split(`
46
- `).slice(-5).join(" | ");u(new Error(`cloudflared exited (code=${E}, signal=${k}) output: ${x||"(empty)"}`)),Ze||Ln(e,`initial spawn failed (code ${E})`);return}Ze||Ln(e,`quick tunnel exit code ${E}`)})})}function wr(e){if(Qt)try{(0,ze.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function aa(e){try{let r=[];if(Qt){let n=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;r=(0,ze.execSync)(`powershell -NoProfile -Command "${n}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else r=(0,ze.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
47
- `).map(o=>+o.trim()).filter(Boolean);for(let n of new Set(r))wr(n),V.info(`\u2705 killed orphan cloudflared pid=${n}`)}catch{}}function et(){if(!hr){hr=!0;try{try{if(F.default.existsSync(gr)){let r=parseInt(F.default.readFileSync(gr,"utf8"));Number.isFinite(r)&&(Ze=!0,wr(r)),F.default.unlinkSync(gr)}}catch{}let e=hn("cloudflared");Ze=!0,e&&(wr(e),V.info("\u2705 Cloudflared killed"),Pe("cloudflared")),aa(P)}finally{setTimeout(()=>{hr=!1},2e3)}}}function zo(){Kt=0,yt=!1,Yt=null,Cn=null,Vt=null,ua()}var ca=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Yo(){let e=Ne.default.networkInterfaces(),r=[];for(let[n,o]of Object.entries(e))if(o&&!ca.test(n))for(let t of o)!t.internal&&t.family==="IPv4"&&r.push(`${n}:${t.address}`);return r.sort().join("|")}function la(){Wt||(Pn=Yo(),Wt=setInterval(async()=>{if(yr||yt||!Yt||Cn==null)return;let e=Yo(),r=e!==Pn;Pn=e;let n=hn("cloudflared"),o=!n||!ao(n);if(!(!r&&!o)){if(r&&!o&&Mn&&Date.now()-Mn<Zs){V.info("\u23F8 Network change in cooldown, skip");return}if(r&&V.info("\u{1F504} Network change detected"),o&&V.info("\u{1F50D} Liveness watchdog: cloudflared not alive"),Ut("unreachable"),await new Promise(t=>setTimeout(t,Gt.networkRestoreDelayMs)),!!await Jo()){if(r&&!o&&Vt){let t=!1;for(let i=0;i<2;i++){if((await On(Vt)).ok){t=!0;break}i===0&&await new Promise(a=>setTimeout(a,2e3))}if(t){V.info("\u2705 Tunnel survived network change, skip restart");return}}r&&!o&&et(),Ln(Cn,r?"network change":"liveness watchdog")}}},Gt.networkCheckIntervalMs))}function ua(){Wt&&(clearInterval(Wt),Wt=null),Pn=null}wt();var be=Y("server"),ui=en.default.dirname((0,li.fileURLToPath)(__importMetaUrl)),ga=en.default.resolve(ui,"./server.cjs"),ai=en.default.resolve(ui,"../../index.js");function Dn(e){try{process.platform==="win32"?(0,zt.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,zt.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function Fe(e,r,n){let o=null,t=!1,i=!0,s=0,a=null,c=()=>{i&&(Dn(P),i=!1);let l=process.env.NODE_ENV==="development"&&Er.default.existsSync(ai),u=l?ai:ga;Er.default.existsSync(u)||(be.error(`\u274C Server not found: ${u}`),process.exit(1));let f={...process.env,PORT:String(P)};l||delete f.NODE_ENV,o=(0,zt.spawn)("node",[u],{cwd:en.default.dirname(u),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:f}),a&&clearTimeout(a),a=setTimeout(()=>{s=0},$o),o.on("exit",(p,d)=>{if(a&&(clearTimeout(a),a=null),t)return;be.error(`\u{1F4A5} Server exited unexpectedly (code: ${p}, signal: ${d})`),s++;let m=le(ee.server,s);be.warn(`\u{1F504} Restarting server in ${m}ms (fail#${s})`),r&&(be.info("\u2705 Restarting tunnel connection..."),r()),setTimeout(()=>{c(),n?.()},m)}),o.on("error",p=>{be.error(`\u274C Server error: ${p.message}`)}),e?.(o)};return c(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}}}}function tt({serverManager:e,tunnelProcess:r,exit:n=!0,code:o=0}={}){try{Ht()}catch{}try{e?.shutdown?.()}catch{}try{r?.kill?.()}catch{}try{et()}catch{}try{Nn()}catch{}try{Dn(P)}catch{}try{zo()}catch{}try{mo()}catch{}try{Pe("agent")}catch{}try{Pe("cloudflared")}catch{}n&&setTimeout(()=>process.exit(o),No)}var ci=!1;function Ue(e,r){if(ci)return;ci=!0;let n=!1,o=t=>{n||(n=!0,be.info(`\u{1F6D1} Stopping 9Remote (${t})...`),tt({serverManager:e,tunnelProcess:r}),be.info("\u2705 Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{be.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),fr)}),process.on("unhandledRejection",t=>{be.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),fr)})}wt();var pi=A(fi(),1),Rr=A(require("crypto"),1),{machineIdSync:ya}=pi.default;async function vt(e=null){let r=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let n=ya();return Rr.default.createHash("sha256").update(n+r).digest("hex").substring(0,16)}catch(n){return console.error("Error getting machine ID:",n),Rr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var di=A(require("crypto"),1),wa=process.env.API_KEY_SECRET||"9remote-api-key-secret";function va(){let e="abcdefghijklmnopqrstuvwxyz0123456789",r="";for(let n=0;n<4;n++)r+=e.charAt(Math.floor(Math.random()*e.length));return r}function Ta(e,r){return di.default.createHmac("sha256",wa).update(e+r).digest("hex").slice(0,6)}function Tt(e){let r=e.slice(0,8),n=va(),o=Ta(r,n);return{key:`sk-${r}-${n}-${o}`,keyId:n}}function Bn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var br=Y("tunnel");async function nt(e,r,n){let o=0;for(;;){o++;try{return await Zo(e,r,n)}catch(t){let i=le(ee.tunnelSpawn,o);br.warn(`\u26A0\uFE0F spawn attempt ${o} failed: ${t?.message||t} \u2014 retry in ${i}ms`),await new Promise(s=>setTimeout(s,i))}}}function St({onUrlUpdate:e,setTunnel:r}){return async n=>{try{let o=await nt(n,e);r(o.child),await e(o.tunnelUrl),br.info(`\u2705 Tunnel restarted: ${o.tunnelUrl}`)}catch(o){br.error(`\u274C Tunnel restart failed: ${o?.message||o}`)}}}async function He(e,r={}){let n=r.intervalMs??Me.intervalMs,o=r.timeoutMs??Me.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await D({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>Me.maxLogEntries?c.slice(-Me.maxLogEntries):c;D({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,dt(),i){let f=await ur(i,Me.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;pt(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(m=>setTimeout(m,n));continue}}let u=Date.now();try{let f=await W(t,{signal:AbortSignal.timeout(Me.fetchTimeoutMs)}),p=Date.now()-u;if(pt(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await D({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,Me.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,m=d==="ENOTFOUND",v=m?"connecting...":d;pt(`#${a} \u2192 ${v}`),l({attempt:a,status:v,elapsedMs:p,ok:!1,waiting:m,time:Date.now()})}await new Promise(f=>setTimeout(f,n))}return await D({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var rn=Y("tunnel"),Ar=null,mi=null,hi=0;async function Ae(e,r){if(r&&r===mi&&Date.now()-hi<Do){rn.info(`\u23ED urlSync debounced (same URL): ${r}`);return}Ar&&(Ar.cancelled=!0);let n={cancelled:!1};Ar=n;let o=Po();go({config:ee.urlSync,label:`urlSync ${r}`,log:t=>rn.warn(t),ctx:n,task:async()=>{let t=await W(`${B}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:r,localIp:o?`${o}:${P}`:null})});if(n.cancelled)return!0;if(t.ok)return mi=r,hi=Date.now(),rn.info("\u2705 urlSync ok"),Sa(r),!0;let i=await t.text().catch(()=>"");return rn.warn(`\u26A0\uFE0F urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),r&&Ko(r)}var nn=null;async function Sa(e){if(nn?.url===e)return;let r={url:e};nn=r,jo();try{let n=await He(e,{timeoutMs:Fo});if(nn!==r)return;n&&(Ut("healthy"),rn.info("\u2705 fast probe healthy"))}catch{}finally{nn===r&&(nn=null),Go()}}var Cr=A(Fi(),1);var Oa=30;async function Et(e,r){try{let n=await W(`${r}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:Oa})});if(!n.ok){let o=await n.json();throw new Error(o.error||"Failed to create temp key")}return await n.json()}catch(n){return console.error("Error creating temp key:",n),null}}function Pa(e,r="\u{1F4F1} Scan QR to connect:"){console.log(oe.orange(`
48
- ${r}`)),Cr.default.generate(e,{small:!0,type:"terminal",margin:0},n=>{console.log(n.trim())})}function Ca(e){return new Promise(r=>{Cr.default.generate(e,{small:!0,type:"terminal",margin:0},n=>{r(oe.orangeDim("\u{1F4F1} Scan QR to connect:")+`
49
- `+n.trim())})})}async function Kn(e,r){let n=await Et(e,B);if(!n){console.log(y.red("\u274C Failed to create temp key"));return}let o=`${B}/login?k=${n.tempKey}`,t=Math.min(Re.headerWidth,process.stdout.columns||55);await K(C.READY,{tunnelUrl:r,oneTimeKey:n.tempKey,oneTimeKeyExpiresAt:n.expiresAt,permanentKey:e,qrUrl:o,workerUrl:B}),Pa(o),console.log(y.gray(`
41
+ ${T.red}\u2717 Device rejected${T.reset}
42
+ `;process.stdout.write(E),setTimeout(()=>{try{a()}catch{}n(v)},500)};process.stdin.on("keypress",c)})}function Co(e,r){let n=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{n?.destroy()}catch{}},i)},a=()=>{o||(n=Eo.default.get(`http://localhost:${e}/api/ui/events`,c=>{let l="";s(),c.on("data",u=>{s(),l+=u.toString();let f=l.split(`
43
+ `);l=f.pop();let p="";for(let d of f)if(d.startsWith("data: "))p=d.slice(6);else if(d===""&&p){try{let h=JSON.parse(p);r(h.type,h)}catch{}p=""}}),c.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,ue(re.sse,1))})}),n.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,ue(re.sse,1))}))};return a(),()=>{o=!0,t&&clearTimeout(t),n?.destroy()}}var lr=!1;function Mo(e){lr=e}async function Q(e,r){try{return await fetch(`http://localhost:${I}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}catch{return null}}async function j(e){try{let r=await fetch(`http://localhost:${I}${e}`);return r.ok?await r.json():null}catch{return null}}async function U(e){await Q("/api/ui/state",e)}async function K(e,r={}){lr&&Oo(e-1,e>C.PREPARING),await U({step:e,stepDesc:"",...r})}function In({phase:e,percent:r}){let n=e==="download"?`Downloading tunnel binary ${r??0}%`:"Extracting tunnel binary";lr&&ht(n),U({stepDesc:n})}async function Z(){return!!await j("/api/health")}async function ur(){let[e,r,n,o]=await Promise.all([j("/api/ui/state"),j("/api/device/auto-approve"),j("/api/autostart"),j("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!r?.enabled,autoStart:!!n?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function $o(){let e=Lo.default.networkInterfaces();for(let r of Object.values(e))for(let n of r)if(n.family==="IPv4"&&!n.internal)return n.address;return null}var tn=require("child_process"),nn=A(require("path"),1),Rr=A(require("fs"),1),di=require("url");var B=A(require("fs"),1),$e=A(require("path"),1),Sr=A(require("https"),1),Ne=A(require("os"),1),qo=A(require("net"),1),et=require("child_process");var No=A(require("dns"),1),Do=require("child_process");var ra=2e3,oa=5e3,Uo=new No.default.promises.Resolver;Uo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function gt(){process.platform==="win32"&&(0,Do.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function fr(e,r=ra){let n=Date.now();try{return{ok:!0,addrs:await Promise.race([Uo.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),r))]),elapsedMs:Date.now()-n}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-n}}}async function Pn(e,{flushDns:r=!1}={}){let n=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(r&&gt(),o){let t=await fr(o);if(!t.ok)return gt(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-n}}try{let t=await Y(`${e}/api/health`,{signal:AbortSignal.timeout(oa)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-n}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-n}}}var N="https://9remote.cc",Bo=3e4,Fo=500,pr=300,fe={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Le={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},z={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},xe={maxLogLines:200,headerWidth:44},Ho=5e3,Ko=2,jo=3e4,ie={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var ia=V("tunnel"),Ft=null,Ht=null,yt=null,Ze=null,Me=0,dr=!1;async function mr(e){try{await fetch(`http://localhost:${I}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function Go(){if(!Ht||dr)return;let e=await Pn(Ht),r=e.ok?"healthy":"unreachable";if(r===yt){Ze=null,Me=0;return}if(r!==Ze){Ze=r,Me=1;return}Me++,!(Me<Ko)&&(ia.info(`\u{1FA7A} ${yt??"init"} \u2192 ${r}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),yt=r,Ze=null,Me=0,await mr({tunnelHealth:{status:r,checkedAt:Date.now()}}))}function Wo(e){if(!e)return jt();e!==Ht&&(Ht=e,yt=null,Ze=null,Me=0,gt(),Ft||(Ft=setInterval(Go,Gr.checkIntervalMs)),Go())}var Yo=Wo,wt=Wo;function Vo(){dr=!0}function Qo(){dr=!1}function Kt(e){yt=e,Ze=null,Me=0,mr({tunnelHealth:{status:e,checkedAt:Date.now()}})}function jt(){Ft&&(clearInterval(Ft),Ft=null),Ht=null,yt=null,Ze=null,Me=0,mr({tunnelHealth:{status:"unknown",checkedAt:null}})}var J=V("tunnel"),Yt={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},Vt=null,Cn=null,Ln=null,Qt=null,St=!1,Gt=0,wr=!1,Jt=null,Mn=0,hr=0,gr=!1,sa=3e4,aa=5e3,Wt=$e.default.join(Ne.default.homedir(),".9remote","bin"),Jo="cloudflared",Xt=Ne.default.platform()==="win32",ca=Xt?`${Jo}.exe`:Jo,vt=$e.default.join(Wt,ca),yr=$e.default.join(Ne.default.homedir(),".9remote","cloudflared.pid"),ze=!1,Zo="https://github.com/cloudflare/cloudflared/releases/latest/download";function zo(){return new Promise(e=>{let r=new qo.default.Socket,n=!1,o=t=>{if(!n){n=!0;try{r.destroy()}catch{}e(t)}};r.setTimeout(Yt.internetCheckTimeoutMs),r.once("connect",()=>o(!0)),r.once("timeout",()=>o(!1)),r.once("error",()=>o(!1));try{r.connect(Yt.internetCheckPort,Yt.internetCheckHost)}catch{o(!1)}})}async function la(){wr=!0;try{let e=0;for(;;){if(e++,await zo())return;await new Promise(r=>setTimeout(r,ue(re.internet,e)))}}finally{wr=!1}}async function $n(e,r){if(!Qt){J.warn("\u26A0\uFE0F No restartCallback registered \u2014 skip");return}if(St){J.info(`\u23ED restart already in flight, skip (${r})`);return}if(Date.now()-hr<aa){J.info(`\u23ED restart debounced, skip (${r})`);return}hr=Date.now(),St=!0;try{await la();let n=ue(re.tunnelRestart,Gt+1);await new Promise(o=>setTimeout(o,n)),await Qt(e),Gt=0,hr=0}catch(n){Gt++,J.error(`\u274C restart failed (#${Gt}): ${n?.message||n}`),setImmediate(()=>{St=!1,$n(e,"retry after fail")});return}finally{St=!1}}var ua={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-amd64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function fa(){let e=Ne.default.platform(),r=Ne.default.arch(),n=ua[e];if(!n)throw new Error(`Unsupported platform: ${e}`);let o=n[r];if(!o)throw new Error(`Unsupported architecture: ${r} for platform ${e}`);return`${Zo}/${o}`}var pa=150;async function ei(e,r,n){return new Promise((o,t)=>{let i=B.default.createWriteStream(r);Sr.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),B.default.unlinkSync(r),ei(s.headers.location,r,n).then(o).catch(t);return}if(s.statusCode!==200){i.close(),B.default.unlinkSync(r),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!n||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=pa&&(l=p,u=d,n(d))}),s.pipe(i),i.on("finish",()=>{n&&a&&n(100),i.close(()=>o(r))}),i.on("error",f=>{i.close(),B.default.unlinkSync(r),t(f)})}).on("error",s=>{i.close(),B.default.existsSync(r)&&B.default.unlinkSync(r),t(s)})})}async function qt(e){if(B.default.existsSync(Wt)||B.default.mkdirSync(Wt,{recursive:!0}),B.default.existsSync(vt))return Xt||B.default.chmodSync(vt,"755"),vt;let r=fa(),n=r.endsWith(".tgz"),o=n?$e.default.join(Wt,"cloudflared.tgz"):vt;try{return e?.({phase:"download",percent:0}),await ei(r,o,t=>{e?.({phase:"download",percent:t})}),await da(r,o),n&&(e?.({phase:"extract"}),(0,et.execSync)(`tar -xzf "${o}" -C "${Wt}"`,{stdio:"pipe",windowsHide:!0}),B.default.unlinkSync(o)),Xt||B.default.chmodSync(vt,"755"),vt}catch(t){try{B.default.existsSync(o)&&B.default.unlinkSync(o)}catch{}throw console.error("\u274C Failed to download cloudflared:",t.message),t}}function ti(e){return new Promise((r,n)=>{Sr.default.get(e,o=>{if([301,302].includes(o.statusCode))return ti(o.headers.location).then(r).catch(n);if(o.statusCode!==200)return n(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>r(t))}).on("error",n)})}async function da(e,r){try{let n=$e.default.basename(e),o=`${Zo}/sha256sum.txt`,i=(await ti(o)).split(`
44
+ `).find(l=>l.includes(n));if(!i){J.warn(`\u26A0\uFE0F No sha256 entry for ${n}, skipping verify`);return}let s=i.trim().split(/\s+/)[0],{createHash:a}=await import("crypto"),c=a("sha256").update(B.default.readFileSync(r)).digest("hex");if(c!==s)throw new Error(`SHA256 mismatch: expected ${s}, got ${c}`);J.info("\u2713 cloudflared SHA256 verified")}catch(n){throw new Error(`Integrity check failed: ${n.message}`)}}function ma(e){let r=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,n=[];for(let o of e.matchAll(r))o[1]!=="api"&&n.push(`https://${o[1]}.trycloudflare.com`);return n.length?n[n.length-1]:null}async function ni(e,r=null,n=null){let o=await qt();n&&(Qt=n),Ln=e;let t=B.default.mkdtempSync($e.default.join(Ne.default.tmpdir(),"9remote-quick-")),i=$e.default.join(t,"config.yml");B.default.writeFileSync(i,`# quick-tunnel
45
+ `,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{B.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,et.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Ie("cloudflared",c.pid),ze=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{f||(f=!0,a(),u(new Error("Quick tunnel timed out after 90s")))},9e4),v=E=>{let O=E.toString();d+=O,d.length>4096&&(d=d.slice(-4096));let R=ma(O);if(R){if(!f){f=!0,p=R,Jt=R,Mn=Date.now(),clearTimeout(h),a(),ya(),J.info(`\u2705 tunnel ready: ${R}`),l({child:c,tunnelUrl:R});return}R!==p&&(J.info(`\u{1F504} URL rotated: ${R}`),p=R,Jt=R,Mn=Date.now(),r?.(R))}};c.stdout.on("data",v),c.stderr.on("data",v),c.on("error",E=>{f||(f=!0,clearTimeout(h),a(),u(E))}),c.on("exit",(E,O)=>{if(a(),J.info(`\u{1F4A5} cloudflared exit pid=${c.pid} code=${E} signal=${O} intentional=${ze}`),ze||Kt("unreachable"),!f){f=!0,clearTimeout(h);let R=d.trim().split(`
46
+ `).slice(-5).join(" | ");u(new Error(`cloudflared exited (code=${E}, signal=${O}) output: ${R||"(empty)"}`)),ze||$n(e,`initial spawn failed (code ${E})`);return}ze||$n(e,`quick tunnel exit code ${E}`)})})}function vr(e){if(Xt)try{(0,et.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function ha(e){try{let r=[];if(Xt){let n=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;r=(0,et.execSync)(`powershell -NoProfile -Command "${n}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else r=(0,et.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
47
+ `).map(o=>+o.trim()).filter(Boolean);for(let n of new Set(r))vr(n),J.info(`\u2705 killed orphan cloudflared pid=${n}`)}catch{}}function tt(){if(!gr){gr=!0;try{try{if(B.default.existsSync(yr)){let r=parseInt(B.default.readFileSync(yr,"utf8"));Number.isFinite(r)&&(ze=!0,vr(r)),B.default.unlinkSync(yr)}}catch{}let e=wn("cloudflared");ze=!0,e&&(vr(e),J.info("\u2705 Cloudflared killed"),Pe("cloudflared")),ha(I)}finally{setTimeout(()=>{gr=!1},2e3)}}}function ri(){Gt=0,St=!1,Qt=null,Ln=null,Jt=null,wa()}var ga=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Xo(){let e=Ne.default.networkInterfaces(),r=[];for(let[n,o]of Object.entries(e))if(o&&!ga.test(n))for(let t of o)!t.internal&&t.family==="IPv4"&&r.push(`${n}:${t.address}`);return r.sort().join("|")}function ya(){Vt||(Cn=Xo(),Vt=setInterval(async()=>{if(wr||St||!Qt||Ln==null)return;let e=Xo(),r=e!==Cn;Cn=e;let n=wn("cloudflared"),o=!n||!fo(n);if(!(!r&&!o)){if(r&&!o&&Mn&&Date.now()-Mn<sa){J.info("\u23F8 Network change in cooldown, skip");return}if(r&&J.info("\u{1F504} Network change detected"),o&&J.info("\u{1F50D} Liveness watchdog: cloudflared not alive"),Kt("unreachable"),await new Promise(t=>setTimeout(t,Yt.networkRestoreDelayMs)),!!await zo()){if(r&&!o&&Jt){let t=!1;for(let i=0;i<2;i++){if((await Pn(Jt)).ok){t=!0;break}i===0&&await new Promise(a=>setTimeout(a,2e3))}if(t){J.info("\u2705 Tunnel survived network change, skip restart");return}}r&&!o&&tt(),$n(Ln,r?"network change":"liveness watchdog")}}},Yt.networkCheckIntervalMs))}function wa(){Vt&&(clearInterval(Vt),Vt=null),Cn=null}Tt();var be=V("server"),mi=nn.default.dirname((0,di.fileURLToPath)(__importMetaUrl)),xa=nn.default.resolve(mi,"./server.cjs"),fi=nn.default.resolve(mi,"../../index.js");function Un(e){try{process.platform==="win32"?(0,tn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,tn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function Be(e,r,n){let o=null,t=!1,i=!0,s=0,a=null,c=()=>{i&&(Un(I),i=!1);let l=process.env.NODE_ENV==="development"&&Rr.default.existsSync(fi),u=l?fi:xa;Rr.default.existsSync(u)||(be.error(`\u274C Server not found: ${u}`),process.exit(1));let f={...process.env,PORT:String(I)};l||delete f.NODE_ENV,o=(0,tn.spawn)("node",[u],{cwd:nn.default.dirname(u),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:f}),a&&clearTimeout(a),a=setTimeout(()=>{s=0},Bo),o.on("exit",(p,d)=>{if(a&&(clearTimeout(a),a=null),t)return;be.error(`\u{1F4A5} Server exited unexpectedly (code: ${p}, signal: ${d})`),s++;let h=ue(re.server,s);be.warn(`\u{1F504} Restarting server in ${h}ms (fail#${s})`),r&&(be.info("\u2705 Restarting tunnel connection..."),r()),setTimeout(()=>{c(),n?.()},h)}),o.on("error",p=>{be.error(`\u274C Server error: ${p.message}`)}),e?.(o)};return c(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}}}}function nt({serverManager:e,tunnelProcess:r,exit:n=!0,code:o=0}={}){try{jt()}catch{}try{e?.shutdown?.()}catch{}try{r?.kill?.()}catch{}try{tt()}catch{}try{Dn()}catch{}try{Un(I)}catch{}try{ri()}catch{}try{wo()}catch{}try{Pe("agent")}catch{}try{Pe("cloudflared")}catch{}n&&setTimeout(()=>process.exit(o),Fo)}var pi=!1;function Fe(e,r){if(pi)return;pi=!0;let n=!1,o=t=>{n||(n=!0,be.info(`\u{1F6D1} Stopping 9Remote (${t})...`),nt({serverManager:e,tunnelProcess:r}),be.info("\u2705 Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{be.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),pr)}),process.on("unhandledRejection",t=>{be.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),pr)})}Tt();var gi=A(hi(),1),br=A(require("crypto"),1),{machineIdSync:ba}=gi.default;async function Et(e=null){let r=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let n=ba();return br.default.createHash("sha256").update(n+r).digest("hex").substring(0,16)}catch(n){return console.error("Error getting machine ID:",n),br.default.randomUUID().replace(/-/g,"").substring(0,16)}}var yi=A(require("crypto"),1),Aa=process.env.API_KEY_SECRET||"9remote-api-key-secret";function _a(){let e="abcdefghijklmnopqrstuvwxyz0123456789",r="";for(let n=0;n<4;n++)r+=e.charAt(Math.floor(Math.random()*e.length));return r}function ka(e,r){return yi.default.createHmac("sha256",Aa).update(e+r).digest("hex").slice(0,6)}function Rt(e){let r=e.slice(0,8),n=_a(),o=ka(r,n);return{key:`sk-${r}-${n}-${o}`,keyId:n}}function Bn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var Ar=V("tunnel");async function rt(e,r,n){let o=0;for(;;){o++;try{return await ni(e,r,n)}catch(t){let i=ue(re.tunnelSpawn,o);Ar.warn(`\u26A0\uFE0F spawn attempt ${o} failed: ${t?.message||t} \u2014 retry in ${i}ms`),await new Promise(s=>setTimeout(s,i))}}}function xt({onUrlUpdate:e,setTunnel:r}){return async n=>{try{let o=await rt(n,e);r(o.child),await e(o.tunnelUrl),Ar.info(`\u2705 Tunnel restarted: ${o.tunnelUrl}`)}catch(o){Ar.error(`\u274C Tunnel restart failed: ${o?.message||o}`)}}}async function He(e,r={}){let n=r.intervalMs??Le.intervalMs,o=r.timeoutMs??Le.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>Le.maxLogEntries?c.slice(-Le.maxLogEntries):c;U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,gt(),i){let f=await fr(i,Le.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;ht(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,n));continue}}let u=Date.now();try{let f=await Y(t,{signal:AbortSignal.timeout(Le.fetchTimeoutMs)}),p=Date.now()-u;if(ht(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await U({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,Le.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",v=h?"connecting...":d;ht(`#${a} \u2192 ${v}`),l({attempt:a,status:v,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,n))}return await U({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var sn=V("tunnel"),_r=null,wi=null,vi=0;async function Ae(e,r){if(r&&r===wi&&Date.now()-vi<Ho){sn.info(`\u23ED urlSync debounced (same URL): ${r}`);return}_r&&(_r.cancelled=!0);let n={cancelled:!1};_r=n;let o=$o();So({config:re.urlSync,label:`urlSync ${r}`,log:t=>sn.warn(t),ctx:n,task:async()=>{let t=await Y(`${N}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:r,localIp:o?`${o}:${I}`:null})});if(n.cancelled)return!0;if(t.ok)return wi=r,vi=Date.now(),sn.info("\u2705 urlSync ok"),Oa(r),!0;let i=await t.text().catch(()=>"");return sn.warn(`\u26A0\uFE0F urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),r&&Yo(r)}var on=null;async function Oa(e){if(on?.url===e)return;let r={url:e};on=r,Vo();try{let n=await He(e,{timeoutMs:jo});if(on!==r)return;n&&(Kt("healthy"),sn.info("\u2705 fast probe healthy"))}catch{}finally{on===r&&(on=null),Qo()}}var Lr=A(ji(),1);var Ua=30;async function bt(e,r){try{let n=await Y(`${r}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:Ua})});if(!n.ok){let o=await n.json();throw new Error(o.error||"Failed to create temp key")}return await n.json()}catch(n){return console.error("Error creating temp key:",n),null}}function Ba(e,r="\u{1F4F1} Scan QR to connect:"){console.log(ie.orange(`
48
+ ${r}`)),Lr.default.generate(e,{small:!0,type:"terminal",margin:0},n=>{console.log(n.trim())})}function Fa(e){return new Promise(r=>{Lr.default.generate(e,{small:!0,type:"terminal",margin:0},n=>{r(ie.orangeDim("\u{1F4F1} Scan QR to connect:")+`
49
+ `+n.trim())})})}async function jn(e,r){let n=await bt(e,N);if(!n){console.log(m.red("\u274C Failed to create temp key"));return}let o=`${N}/login?k=${n.tempKey}`,t=Math.min(xe.headerWidth,process.stdout.columns||55);await K(C.READY,{tunnelUrl:r,oneTimeKey:n.tempKey,oneTimeKeyExpiresAt:n.expiresAt,permanentKey:e,qrUrl:o,workerUrl:N}),Ba(o),console.log(m.gray(`
50
50
  QR will expire in 30 minutes (one-time use)
51
- `)),console.log(oe.orange("\u2550".repeat(t))),console.log(y.white("App URL".padEnd(14))+y.gray(`${B}/login`)),console.log(y.white("One-Time Key".padEnd(14))+oe.orange.bold(n.tempKey)),console.log(y.white("Key".padEnd(14))+y.gray(e)),console.log(oe.orange("\u2550".repeat(t)))}async function on(e,r,n,o=""){let t=Math.min(Re.headerWidth,process.stdout.columns||Re.headerWidth),i=[];return e&&n?(i.push(await Ca(n)),i.push(y.gray(`
51
+ `)),console.log(ie.orange("\u2550".repeat(t))),console.log(m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),console.log(m.white("One-Time Key".padEnd(14))+ie.orange.bold(n.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(ie.orange("\u2550".repeat(t)))}async function an(e,r,n,o=""){let t=Math.min(xe.headerWidth,process.stdout.columns||xe.headerWidth),i=[];return e&&n?(i.push(await Fa(n)),i.push(m.gray(`
52
52
  QR expires in 30 minutes (one-time use)
53
- `))):i.push(y.gray(`
53
+ `))):i.push(m.gray(`
54
54
  (One-time key used \u2014 generate a new one from menu)
55
- `)),i.push(oe.orange("\u2550".repeat(t)),y.white("App URL".padEnd(14))+y.gray(`${B}/login`)),Hr.showTunnelUrlInMenu&&i.push(y.white("Tunnel".padEnd(14))+(o?y.cyan(o):y.gray("\u2014"))),i.push(y.white("One-Time Key".padEnd(14))+(e?oe.orange.bold(e)+y.dim(" (expires in 30m)"):y.gray("\u2014")),y.white("Key".padEnd(14))+y.dim(r),oe.orange("\u2550".repeat(t))),i.join(`
56
- `)}var ot=Y("cmd");function Ge(e,r,n){let o=!1;setInterval(async()=>{if(o)return;let t=ho();if(t){o=!0;try{if(t==="stop-tunnel")await Ma(e,r);else if(t==="start-tunnel"){if(await La(e,r,n)==="alreadyRunning"){o=!1;return}}else t==="regenerate-key"?await $a():t==="shutdown"&&Na(e,r)}finally{o=!1}}},ue.cmdMs)}async function Ma(e,r){Ht();let n=e();n&&(n.kill(),r(null),ot.info("\u{1F6D1} Tunnel stopped")),await K(C.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),$n({tunnelUrl:"",running:!0})}async function La(e,r,n){let o=e();if(o)if(o.killed||o.exitCode!=null)r(null);else{let t=await ne("/api/ui/state");return await K(C.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}ot.info("\u{1F680} Starting tunnel...");try{await K(C.PREPARING),await Jt(kn),await K(C.CONNECTING);let t=await W(`${B}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:n})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await K(C.TUNNELING);let i=async c=>{await Ae(n,c),await D({tunnelUrl:c}),ht(c)},s=await nt(P,i,St({onUrlUpdate:i,setTunnel:c=>r(c)}));r(s.child),await K(C.VERIFYING),await He(s.tunnelUrl)||ot.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(n,s.tunnelUrl),$n({tunnelUrl:s.tunnelUrl,running:!0}),await new Promise(c=>setTimeout(c,X.postReadyHoldMs)),await Kn(n,s.tunnelUrl)}catch(t){ot.error(`\u274C Failed to start tunnel: ${t.message}`),await K(C.STOPPED)}}async function $a(){let e=await vt(),{key:r}=Tt(e),n=En();Je(e,r,n?.name||"Default"),await D({permanentKey:r}),ot.info(`\u2705 Key regenerated: ${Bn(r)}`)}function Na(e,r){ot.info("\u{1F6D1} Shutting down 9Remote completely...");let n=e();r(null),tt({tunnelProcess:n}),ot.info("\u2705 9Remote stopped")}var Mr=A(require("path"),1),Hi=A(require("fs"),1),Ki=require("url");function Ui(){return process.env.CODESPACES==="true"}var Da=Mr.default.dirname((0,Ki.fileURLToPath)(__importMetaUrl));async function We(){let e=await vt();if(Ui()&&process.env.NREMOTE_API_KEY)return Je(e,process.env.NREMOTE_API_KEY,"Codespace");let r=En();if(!r.key){let{key:n}=Tt(e);r=Je(e,n,"Default")}return r}function xt(){return"2.0.22"}async function ji(){Oe("agent",process.pid),In(xt());let e=await We(),r=process.argv.find(a=>a.startsWith("--theme=")),n=r?r.split("=")[1]:null,o=await re(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Fe(null,null);o||await new Promise(a=>setTimeout(a,X.serverBootMs));let i=`http://localhost:${P}`;console.log(y.green(`
57
- \u{1F310} UI ready at ${i}`));let s=null;await D({permanentKey:e.key,step:C.STOPPED,theme:n}),Ue(t,null),Ge(()=>s,a=>{s=a},e.key),process.argv.includes("--start")&&xn("start-tunnel"),await new Promise(()=>{})}wt();async function Gi(){Oe("agent",process.pid);let e=await We(),r=process.argv.find(l=>l.startsWith("--theme=")),n=r?r.split("=")[1]:null,o=await re(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Fe(null,null);o||await new Promise(l=>setTimeout(l,X.serverBootMs));let i=`http://localhost:${P}`,s=null;await D({permanentKey:e.key,step:C.STOPPED,theme:n});let a=()=>{let l=s;s=null,tt({serverManager:t,tunnelProcess:l,exit:!1})};Ue(t,null),Ge(()=>s,l=>{s=l},e.key);try{Pe("cloudflared")}catch{}process.argv.includes("--start")&&xn("start-tunnel"),await Tr({port:P,onQuit:a,onOpenUI:()=>Zt(i)})&&Sr({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var Ye=Y("mode");async function Ba(e){Ye.info("\u{1F680} Starting server..."),await K(C.PREPARING);try{et(),await new Promise(s=>setTimeout(s,X.killCloudflaredMs))}catch{}try{let s=await W(`${B}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return Ye.error(`\u274C Session create failed: ${s.status}`),null}catch(s){return Ye.error(`\u274C Session create failed: ${s.message}`),null}let r=await re(),n=r?{getProcess:()=>null,shutdown:()=>{}}:Fe(null,null);r||await new Promise(s=>setTimeout(s,X.serverBootMs)),Ye.info("\u2705 Starting tunnel..."),await K(C.CONNECTING);let o={current:null},t,i=async s=>{Ye.info(`\u{1F504} Tunnel URL rotated: ${s}`),await Ae(e,s),D({tunnelUrl:s}),ht(s)};try{let s=await nt(P,i,St({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return Ye.error(`\u274C Failed to start tunnel: ${s.message}`),n.shutdown(),null}return await He(t)||Ye.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(e,t),Sn({apiKey:e,tunnelUrl:t,serverPid:n.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:n,tunnelRef:o,tunnelUrl:t}}async function Wi(){In(xt());let e=await We();Ye.info(`Using key: ${Bn(e.key)} (${e.name})`);let r=await Ba(e.key);r||process.exit(1);let{serverManager:n,tunnelRef:o,tunnelUrl:t}=r;await Kn(e.key,t),Ue(n,o.current),Ge(()=>o.current,s=>{o.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;D({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},ue.statsMs),await new Promise(()=>{})}var Yi=require("child_process"),Lr=A(require("path"),1),Vi=A(require("fs"),1),Qi=require("url");wt();var Zu=Lr.default.dirname((0,Qi.fileURLToPath)(__importMetaUrl));async function Ji(){let e=`http://localhost:${P}`;await re()&&(Dn(P),await new Promise(l=>setTimeout(l,500)));let n=[process.argv[1],"--tray"],o=process.argv.find(l=>l.startsWith("--theme="));o&&n.push(o);let t=Mt;try{Vi.default.mkdirSync(Lr.default.dirname(t),{recursive:!0})}catch{}let i=null;try{let l=(0,Yi.spawn)(process.execPath,n,{detached:!0,windowsHide:!0,stdio:"ignore",env:{...process.env}});l.unref(),i=l.pid,l.pid&&Oe("agent",l.pid)}catch(l){console.log(y.red(`
58
- \u274C Failed to launch background: ${l.message}`)),process.exit(1)}let s=Date.now()+ue.bgServerReadyTimeoutMs,a=!1;for(;Date.now()<s;){if(await re()){a=!0;break}await new Promise(l=>setTimeout(l,ue.bgServerReadyIntervalMs))}a||(console.log(y.red(`
59
- \u274C Background server failed to start.`)),console.log(y.gray(` Check log: ${t}
60
- `)),process.exit(1)),Zt(e);let c=i?` (PID: ${i})`:"";console.log(y.green(`
61
- \u{1F310} 9Remote running at ${e}${c}`)),console.log(y.gray(`\u{1F4A1} Log: ${t}
62
- `)),await new Promise(l=>setTimeout(l,X.bgSpawnFlushMs)),process.exit(0)}var Xi=A(require("readline"),1);var $r=Y("mode"),Rt=null;async function qi(){console.clear(),Ao(),Oo(!0),await K(C.PREPARING);let e=await We(),r=null,n={getProcess:()=>null,shutdown:()=>{}};if(!await re()){n=Fe(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{Xi.default.emitKeypressEvents(process.stdin)}catch{}r?.()});let T=Date.now()+ue.serverReadyTimeoutMs;for(;Date.now()<T&&!await re();)await new Promise(h=>setTimeout(h,ue.serverReadyIntervalMs))}try{et(),await new Promise(T=>setTimeout(T,X.killCloudflaredTuiMs))}catch{}await Jt(kn),await K(C.CONNECTING);try{let T=await W(`${B}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!T.ok)throw new Error(`Session create failed: ${T.status}`)}catch(T){$r.error(`\u274C Failed to connect: ${T.message}`),process.exit(1)}await K(C.TUNNELING);let t,i,s={current:null},a=async T=>{await Ae(e.key,T),await D({tunnelUrl:T}),ht(T)};try{let T=await nt(P,a,St({onUrlUpdate:a,setTunnel:h=>{s.current=h}}));t=T.child,i=T.tunnelUrl,s.current=t}catch(T){$r.error(`\u274C Tunnel failed: ${T.message}`),process.exit(1)}await K(C.VERIFYING),await He(i)||$r.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(e.key,i),Sn({apiKey:e.key,tunnelUrl:i,tunnelPid:t.pid});let c=await Et(e.key,B),l=c?`${B}/login?k=${c.tempKey}`:`${B}/login`;await K(C.READY,{tunnelUrl:i,oneTimeKey:c?.tempKey||"",oneTimeKeyExpiresAt:c?.expiresAt||null,permanentKey:e.key,qrUrl:l,workerUrl:B}),await new Promise(T=>setTimeout(T,X.trayReadyMs));let u=c?.tempKey||"",f=l,p=i,d=await on(u,e.key,f,p),m=[],v=!1,E=()=>{v||r?.()},k=async(T,h,I)=>{if(!v){v=!0;try{let O=await _o(h,I);await we(`/api/device/${O?"approve":"reject"}`,{socketId:T})}catch{}finally{v=!1,r?.()}}},x=Io(P,async(T,h)=>{if(T==="log"&&h.message)m.push(h.message),m.length>Re.maxLogLines&&m.shift();else if(T==="state"){let I=h.permanentKey||e.key,O=h.oneTimeKey!==void 0?h.oneTimeKey:u,N=h.qrUrl!==void 0?h.qrUrl:f,H=h.tunnelUrl!==void 0?h.tunnelUrl:p;(O!==u||I!==e.key||H!==p)&&(u=O,f=N,p=H,h.permanentKey&&(e={...e,key:h.permanentKey}),d=await on(u,e.key,f,p),E())}else T==="permissions"||T==="autostart"||T==="sleepInhibit"?(v||Rt?.(),E()):T==="deviceApproval"&&h.action==="pending"&&await k(h.socketId,h.deviceId,h.ip)}),b=setInterval(async()=>{if(v)return;let h=(await ne("/api/device/pending"))?.pending?.[0];h&&await k(h.socketId,h.deviceId,h.ip)},ue.pendingApprovalMs);Ue({getProcess:n.getProcess,shutdown:()=>{n.shutdown(),x(),clearInterval(b)}},t),Ge(()=>s.current,T=>{s.current=T},e.key),await Fa(e,i,()=>d,T=>{d=T},T=>{r=T},()=>{try{x()}catch{}try{clearInterval(b)}catch{}tt({serverManager:n,tunnelProcess:t,exit:!1})},m)}async function Fa(e,r,n,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await lr(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?y.green("ON"):y.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${y.dim("(Auto-approve:")} ${l?y.green("ON"):y.gray("OFF")}${y.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:y.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await ye("",u,0,n,m=>{f=m},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let m=`http://localhost:${P}`,{openBrowser:v}=await Promise.resolve().then(()=>(wt(),si));v(m),console.log(y.green(`
63
- \u{1F310} Opening ${m}
64
- `))}else if(d==="keys")await Ua(e,r,o,n);else if(d==="desktop")await ja();else if(d==="devices")await Ga();else if(d==="settings")await Ka();else if(d==="logs")await Wa();else{try{i?.()}catch{}console.log(y.gray(`
55
+ `)),i.push(ie.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${N}/login`)),Kr.showTunnelUrlInMenu&&i.push(m.white("Tunnel".padEnd(14))+(o?m.cyan(o):m.gray("\u2014"))),i.push(m.white("One-Time Key".padEnd(14))+(e?ie.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(r),ie.orange("\u2550".repeat(t))),i.join(`
56
+ `)}var it=V("cmd");function Ge(e,r,n){let o=!1;setInterval(async()=>{if(o)return;let t=vo();if(t){o=!0;try{if(t==="stop-tunnel")await Gi(e,r);else if(t==="restart-tunnel")await Gi(e,r),await Wi(e,r,n);else if(t==="start-tunnel"){if(await Wi(e,r,n)==="alreadyRunning"){o=!1;return}}else t==="regenerate-key"?await Ha():t==="shutdown"&&Ka(e,r)}finally{o=!1}}},fe.cmdMs)}async function Gi(e,r){jt();let n=e();n&&(n.kill(),r(null),it.info("\u{1F6D1} Tunnel stopped")),await K(C.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Nn({tunnelUrl:"",running:!0})}async function Wi(e,r,n){let o=e();if(o)if(o.killed||o.exitCode!=null)r(null);else{let t=await j("/api/ui/state");return await K(C.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}it.info("\u{1F680} Starting tunnel...");try{await K(C.PREPARING),await qt(In),await K(C.CONNECTING);let t=await Y(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:n})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await K(C.TUNNELING);let i=async c=>{await Ae(n,c),await U({tunnelUrl:c}),wt(c)},s=await rt(I,i,xt({onUrlUpdate:i,setTunnel:c=>r(c)}));r(s.child),await K(C.VERIFYING),await He(s.tunnelUrl)||it.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(n,s.tunnelUrl),Nn({tunnelUrl:s.tunnelUrl,running:!0}),await new Promise(c=>setTimeout(c,z.postReadyHoldMs)),await jn(n,s.tunnelUrl)}catch(t){it.error(`\u274C Failed to start tunnel: ${t.message}`),await K(C.STOPPED)}}async function Ha(){let e=await Et(),{key:r}=Rt(e),n=bn();Xe(e,r,n?.name||"Default"),await U({permanentKey:r}),it.info(`\u2705 Key regenerated: ${Bn(r)}`)}function Ka(e,r){it.info("\u{1F6D1} Shutting down 9Remote completely...");let n=e();r(null),nt({tunnelProcess:n}),it.info("\u2705 9Remote stopped")}var Mr=A(require("path"),1),Vi=A(require("fs"),1),Qi=require("url");function Yi(){return process.env.CODESPACES==="true"}var ja=Mr.default.dirname((0,Qi.fileURLToPath)(__importMetaUrl));async function We(){let e=await Et();if(Yi()&&process.env.NREMOTE_API_KEY)return Xe(e,process.env.NREMOTE_API_KEY,"Codespace");let r=bn();if(!r.key){let{key:n}=Rt(e);r=Xe(e,n,"Default")}return r}function Ye(){return"2.0.26"}async function Ji(){Ie("agent",process.pid),mt(Ye());let e=await We(),r=process.argv.find(a=>a.startsWith("--theme=")),n=r?r.split("=")[1]:null,o=await Z(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Be(null,null);o||await new Promise(a=>setTimeout(a,z.serverBootMs));let i=`http://localhost:${I}`;console.log(m.green(`
57
+ \u{1F310} UI ready at ${i}`));let s=null;await U({permanentKey:e.key,step:C.STOPPED,theme:n}),Fe(t,null),Ge(()=>s,a=>{s=a},e.key),process.argv.includes("--start")&&pt("start-tunnel"),await new Promise(()=>{})}Tt();async function Xi(){Ie("agent",process.pid);let e=await We(),r=process.argv.find(l=>l.startsWith("--theme=")),n=r?r.split("=")[1]:null,o=await Z(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Be(null,null);o||await new Promise(l=>setTimeout(l,z.serverBootMs));let i=`http://localhost:${I}`,s=null;await U({permanentKey:e.key,step:C.STOPPED,theme:n});let a=()=>{let l=s;s=null,nt({serverManager:t,tunnelProcess:l,exit:!1})};Fe(t,null),Ge(()=>s,l=>{s=l},e.key);try{Pe("cloudflared")}catch{}process.argv.includes("--start")&&pt("start-tunnel"),await Tr({port:I,onQuit:a,onOpenUI:()=>en(i)})&&Er({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var Ve=V("mode");async function Ga(e){Ve.info("\u{1F680} Starting server..."),await K(C.PREPARING);try{tt(),await new Promise(s=>setTimeout(s,z.killCloudflaredMs))}catch{}try{let s=await Y(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return Ve.error(`\u274C Session create failed: ${s.status}`),null}catch(s){return Ve.error(`\u274C Session create failed: ${s.message}`),null}let r=await Z(),n=r?{getProcess:()=>null,shutdown:()=>{}}:Be(null,null);r||await new Promise(s=>setTimeout(s,z.serverBootMs)),Ve.info("\u2705 Starting tunnel..."),await K(C.CONNECTING);let o={current:null},t,i=async s=>{Ve.info(`\u{1F504} Tunnel URL rotated: ${s}`),await Ae(e,s),U({tunnelUrl:s}),wt(s)};try{let s=await rt(I,i,xt({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return Ve.error(`\u274C Failed to start tunnel: ${s.message}`),n.shutdown(),null}return await He(t)||Ve.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(e,t),xn({apiKey:e,tunnelUrl:t,serverPid:n.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:n,tunnelRef:o,tunnelUrl:t}}async function qi(){mt(Ye());let e=await We();Ve.info(`Using key: ${Bn(e.key)} (${e.name})`);let r=await Ga(e.key);r||process.exit(1);let{serverManager:n,tunnelRef:o,tunnelUrl:t}=r;await jn(e.key,t),Fe(n,o.current),Ge(()=>o.current,s=>{o.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;U({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},fe.statsMs),await new Promise(()=>{})}var Zi=require("child_process"),$r=A(require("path"),1),zi=A(require("fs"),1),es=require("url");Tt();var df=$r.default.dirname((0,es.fileURLToPath)(__importMetaUrl));async function ts(){let e=`http://localhost:${I}`;await Z()&&(Un(I),await new Promise(l=>setTimeout(l,500)));let n=[process.argv[1],"--tray"],o=process.argv.find(l=>l.startsWith("--theme="));o&&n.push(o);let t=$t;try{zi.default.mkdirSync($r.default.dirname(t),{recursive:!0})}catch{}let i=null;try{let l=(0,Zi.spawn)(process.execPath,n,{detached:!0,windowsHide:!0,stdio:"ignore",env:{...process.env}});l.unref(),i=l.pid,l.pid&&Ie("agent",l.pid)}catch(l){console.log(m.red(`
58
+ \u274C Failed to launch background: ${l.message}`)),process.exit(1)}let s=Date.now()+fe.bgServerReadyTimeoutMs,a=!1;for(;Date.now()<s;){if(await Z()){a=!0;break}await new Promise(l=>setTimeout(l,fe.bgServerReadyIntervalMs))}a||(console.log(m.red(`
59
+ \u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${t}
60
+ `)),process.exit(1)),pt("start-tunnel"),en(e);let c=i?` (PID: ${i})`:"";console.log(m.green(`
61
+ \u{1F310} 9Remote running at ${e}${c}`)),console.log(m.gray(`\u{1F4A1} Log: ${t}
62
+ `)),await new Promise(l=>setTimeout(l,z.bgSpawnFlushMs)),process.exit(0)}var ns=A(require("readline"),1);var Nr=V("mode"),At=null;async function rs(){console.clear(),Io(),Mo(!0),await K(C.PREPARING);let e=await We(),r=null,n={getProcess:()=>null,shutdown:()=>{}};if(!await Z()){n=Be(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{ns.default.emitKeypressEvents(process.stdin)}catch{}r?.()});let S=Date.now()+fe.serverReadyTimeoutMs;for(;Date.now()<S&&!await Z();)await new Promise(g=>setTimeout(g,fe.serverReadyIntervalMs))}try{tt(),await new Promise(S=>setTimeout(S,z.killCloudflaredTuiMs))}catch{}await qt(In),await K(C.CONNECTING);try{let S=await Y(`${N}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!S.ok)throw new Error(`Session create failed: ${S.status}`)}catch(S){Nr.error(`\u274C Failed to connect: ${S.message}`),process.exit(1)}await K(C.TUNNELING);let t,i,s={current:null},a=async S=>{await Ae(e.key,S),await U({tunnelUrl:S}),wt(S)};try{let S=await rt(I,a,xt({onUrlUpdate:a,setTunnel:g=>{s.current=g}}));t=S.child,i=S.tunnelUrl,s.current=t}catch(S){Nr.error(`\u274C Tunnel failed: ${S.message}`),process.exit(1)}await K(C.VERIFYING),await He(i)||Nr.warn("\u26A0\uFE0F Tunnel health check timed out, proceeding anyway..."),await Ae(e.key,i),xn({apiKey:e.key,tunnelUrl:i,tunnelPid:t.pid});let c=await bt(e.key,N),l=c?`${N}/login?k=${c.tempKey}`:`${N}/login`;await K(C.READY,{tunnelUrl:i,oneTimeKey:c?.tempKey||"",oneTimeKeyExpiresAt:c?.expiresAt||null,permanentKey:e.key,qrUrl:l,workerUrl:N}),await new Promise(S=>setTimeout(S,z.trayReadyMs));let u=c?.tempKey||"",f=l,p=i,d=await an(u,e.key,f,p),h=[],v=!1,E=()=>{v||r?.()},O=async(S,g,k)=>{if(!v){v=!0;try{let P=await Po(g,k);await Q(`/api/device/${P?"approve":"reject"}`,{socketId:S})}catch{}finally{v=!1,r?.()}}},R=Co(I,async(S,g)=>{if(S==="log"&&g.message)h.push(g.message),h.length>xe.maxLogLines&&h.shift();else if(S==="state"){let k=g.permanentKey||e.key,P=g.oneTimeKey!==void 0?g.oneTimeKey:u,D=g.qrUrl!==void 0?g.qrUrl:f,H=g.tunnelUrl!==void 0?g.tunnelUrl:p;(P!==u||k!==e.key||H!==p)&&(u=P,f=D,p=H,g.permanentKey&&(e={...e,key:g.permanentKey}),d=await an(u,e.key,f,p),E())}else S==="permissions"||S==="autostart"||S==="sleepInhibit"?(v||At?.(),E()):S==="deviceApproval"&&g.action==="pending"&&await O(g.socketId,g.deviceId,g.ip)}),b=setInterval(async()=>{if(v)return;let g=(await j("/api/device/pending"))?.pending?.[0];g&&await O(g.socketId,g.deviceId,g.ip)},fe.pendingApprovalMs);Fe({getProcess:n.getProcess,shutdown:()=>{n.shutdown(),R(),clearInterval(b)}},t),Ge(()=>s.current,S=>{s.current=S},e.key),await Wa(e,i,()=>d,S=>{d=S},S=>{r=S},()=>{try{R()}catch{}try{clearInterval(b)}catch{}nt({serverManager:n,tunnelProcess:t,exit:!1})},h)}async function Wa(e,r,n,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await ur(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?m.green("ON"):m.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${m.dim("(Auto-approve:")} ${l?m.green("ON"):m.gray("OFF")}${m.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:m.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await we("",u,0,n,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${I}`,{openBrowser:v}=await Promise.resolve().then(()=>(Tt(),ui));v(h),console.log(m.green(`
63
+ \u{1F310} Opening ${h}
64
+ `))}else if(d==="keys")await Ya(e,r,o,n);else if(d==="desktop")await Ja();else if(d==="devices")await Xa();else if(d==="settings")await Qa();else if(d==="logs")await qa();else{try{i?.()}catch{}console.log(m.gray(`
65
65
  Goodbye!
66
- `)),process.exit(0)}}}async function Ua(e,r,n,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:y.gray("\u2190 Back"),action:"back"}],i=await ye("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await Et(e.key,B);if(a){let c=`${B}/login?k=${a.tempKey}`;n(await on(a.tempKey,e.key,c,r)),await D({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await ar(y.yellow("\u26A0\uFE0F Replace current key and disconnect all sessions? Continue?"))){let c=await vt(),{key:l}=Tt(c),u=Je(c,l,e.name||"Default");Object.assign(e,u),await D({permanentKey:e.key});let f=await Et(e.key,B);if(f){let p=`${B}/login?k=${f.tempKey}`;n(await on(f.tempKey,e.key,p,r)),await D({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var Zi={"30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function Ha(e,r){let n=r.map(s=>({label:Zi[s]||s,action:s}));n.push({label:y.gray("\u2190 Back"),action:"back"});let o=Math.max(0,r.indexOf(e)),t=await ye("Prevent sleep",n,o),i=t>=0?n[t].action:"back";i!=="back"&&await we("/api/sleep-inhibit",{mode:i})}async function Ka(){for(;;){let e=!1,r="never",n=[],o=()=>[{label:`Launch on system startup: ${e?y.green("ON"):y.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${y.green(Zi[r]||r)} \u25B6`,action:"sleep"},{label:y.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await lr();e=!!l.autoStart,r=l.sleepInhibitMode||"never",n=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),Rt=s;let a=await ye("Settings",t,0,"",l=>{i=l});Rt=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await we("/api/autostart",{enabled:!e});else if(c==="sleep")await Ha(r,n);else return}}async function ja(){for(;;){let e=!1,r={screenRecording:!1,accessibility:!1},n=()=>({toggle:`Toggle: ${e?y.green("ON \u2192 turn OFF"):y.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${r.screenRecording?y.green("\u2713"):y.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${r.accessibility?y.green("\u2713"):y.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:y.gray("\u2190 Back")}],t=null,i=async()=>{let a=await ne("/api/ui/state")||{};e=!!a.desktopEnabled,r={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=n();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),Rt=i;let s=await ye("Remote Desktop",o,0,"",a=>{t=a});if(Rt=null,s===0)await we("/api/desktop/toggle",{enabled:!e});else if(s===1&&!r.screenRecording)await we("/api/permissions/request",{type:"screenRecording"})||Rn("screenRecording");else if(s===2&&!r.accessibility)await we("/api/permissions/request",{type:"accessibility"})||Rn("accessibility");else if(s===3||s===-1)return}}async function Ga(){for(;;){let[e,r]=await Promise.all([ne("/api/device/approved"),ne("/api/device/auto-approve")]),n=e?.devices||[],o=!!r?.enabled,t=[{label:`Auto-approve new devices: ${o?y.green("ON"):y.gray("OFF")}`,action:"toggle"},...n.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${y.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:y.gray("\u2190 Back"),action:"back"}],i=await ye(`Approved Devices (${n.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await we("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await ar(y.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await we("/api/device/remove",{deviceId:s.deviceId})}}async function Wa(){let e=Vr(Ur),r=e.length?e.join(`
67
- `):y.gray(" No logs yet"),n=`
68
- ${y.dim("Log file:")} ${y.cyan(Mt)}
69
- ${y.dim(`Tail: tail -f ${Mt}`)}`;await ye("Logs",[{label:y.gray("\u2190 Back")}],0,r+n)}async function zi(){let e=xt(),r=await po(),n=sr(e,r?.latest??null),o=[];r?.latest&&o.push({label:y.yellow(`Update to v${r.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:y.gray("Exit"),action:"exit"});let t=await ye("",o,0,n),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Re.headerWidth,process.stdout.columns||Re.headerWidth);wn(),console.log(oe.orange(`
70
- `+"\u2550".repeat(s))),console.log(y.gray(` \u2713 Stopped running instances
71
- `)),console.log(y.yellow(` \u2B06 Run this command to update:
72
- `)),console.log(y.white.bold(` npm i -g 9remote@latest
73
- `)),console.log(oe.orange("\u2550".repeat(s))+`
74
- `),process.exit(0)}else i==="ui"?await Ji():i==="tui"?await qi():process.exit(0)}Yr();async function Ya(){let e=process.argv[2];process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||wn(),e==="ui"?await ji():e==="start"||process.argv.includes("--auto")?await Wi():process.argv.includes("--tray")||process.argv.includes("--start")?await Gi():await zi()}Ya().catch(console.error);
66
+ `)),process.exit(0)}}}async function Ya(e,r,n,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await we("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await bt(e.key,N);if(a){let c=`${N}/login?k=${a.tempKey}`;n(await an(a.tempKey,e.key,c,r)),await U({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await cr(m.yellow("\u26A0\uFE0F Replace current key and disconnect all sessions? Continue?"))){let c=await Et(),{key:l}=Rt(c),u=Xe(c,l,e.name||"Default");Object.assign(e,u),await U({permanentKey:e.key});let f=await bt(e.key,N);if(f){let p=`${N}/login?k=${f.tempKey}`;n(await an(f.tempKey,e.key,p,r)),await U({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var os={"30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function Va(e,r){let n=r.map(s=>({label:os[s]||s,action:s}));n.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,r.indexOf(e)),t=await we("Prevent sleep",n,o),i=t>=0?n[t].action:"back";i!=="back"&&await Q("/api/sleep-inhibit",{mode:i})}async function Qa(){for(;;){let e=!1,r="never",n=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(os[r]||r)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await ur();e=!!l.autoStart,r=l.sleepInhibitMode||"never",n=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),At=s;let a=await we("Settings",t,0,"",l=>{i=l});At=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await Q("/api/autostart",{enabled:!e});else if(c==="sleep")await Va(r,n);else return}}async function Ja(){for(;;){let e=!1,r={screenRecording:!1,accessibility:!1},n=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${r.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${r.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],t=null,i=async()=>{let a=await j("/api/ui/state")||{};e=!!a.desktopEnabled,r={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=n();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),At=i;let s=await we("Remote Desktop",o,0,"",a=>{t=a});if(At=null,s===0)await Q("/api/desktop/toggle",{enabled:!e});else if(s===1&&!r.screenRecording)await Q("/api/permissions/request",{type:"screenRecording"})||An("screenRecording");else if(s===2&&!r.accessibility)await Q("/api/permissions/request",{type:"accessibility"})||An("accessibility");else if(s===3||s===-1)return}}async function Xa(){for(;;){let[e,r]=await Promise.all([j("/api/device/approved"),j("/api/device/auto-approve")]),n=e?.devices||[],o=!!r?.enabled,t=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...n.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${m.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:m.gray("\u2190 Back"),action:"back"}],i=await we(`Approved Devices (${n.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await Q("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await cr(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await Q("/api/device/remove",{deviceId:s.deviceId})}}async function qa(){let e=qr(Hr),r=e.length?e.join(`
67
+ `):m.gray(" No logs yet"),n=`
68
+ ${m.dim("Log file:")} ${m.cyan($t)}
69
+ ${m.dim(`Tail: tail -f ${$t}`)}`;await we("Logs",[{label:m.gray("\u2190 Back")}],0,r+n)}async function is(){let e=Ye(),r=await yo(),n=ar(e,r?.latest??null),o=[];r?.latest&&o.push({label:m.yellow(`Update to v${r.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let t=await we("",o,0,n),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(xe.headerWidth,process.stdout.columns||xe.headerWidth);Tn(),console.log(ie.orange(`
70
+ `+"\u2550".repeat(s))),console.log(m.gray(` \u2713 Stopped running instances
71
+ `)),console.log(m.yellow(` \u2B06 Run this command to update:
72
+ `)),console.log(m.white.bold(` npm i -g 9remote@latest
73
+ `)),console.log(ie.orange("\u2550".repeat(s))+`
74
+ `),process.exit(0)}else i==="ui"?await ts():i==="tui"?await rs():process.exit(0)}var ss=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function Dr(){mt(Ye()),console.log(m.white.bold(`
75
+ Usage:
76
+ `));let e=Math.max(...ss.map(([r])=>r.length))+2;for(let[r,n]of ss)console.log(" "+m.cyan(r.padEnd(e))+m.gray(n));console.log()}async function cn(){return await Z()?!0:(console.log(m.red(`
77
+ \u2717 Server not running. Start it first: `)+m.cyan("9remote start")+`
78
+ `),!1)}async function Za(e){if(!await cn())return;if(e){let n=await Q("/api/key/regenerate"),o=n&&n.ok?await n.json():null;if(!o?.permanentKey){console.log(m.red(`
79
+ \u2717 Regenerate failed
80
+ `));return}console.log(m.green(`
81
+ \u2713 New key: `)+m.white.bold(o.permanentKey)+`
82
+ `);return}let r=await j("/api/ui/state")||{};if(!r.permanentKey){console.log(m.red(`
83
+ \u2717 No key yet. Run: `)+m.cyan("9remote start")+`
84
+ `);return}console.log(m.white(`
85
+ Key`.padEnd(14))+m.white.bold(r.permanentKey)),r.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(r.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${N}/login`)+`
86
+ `)}async function za(){if(!await cn())return;let e=await Q("/api/key/one-time"),r=e&&e.ok?await e.json():null;if(!r?.qrUrl){console.log(m.red(`
87
+ \u2717 Failed to create one-time key
88
+ `));return}console.log(m.green(`
89
+ \u2713 One-time key (30 min): `)+m.white.bold(r.oneTimeKey)),console.log(m.white("Connect URL ")+m.cyan(r.qrUrl)+`
90
+ `)}async function ec(){if(!await cn())return;let r=(await j("/api/device/approved")||{}).devices||[],n=await j("/api/device/auto-approve")||{};if(console.log(m.white(`
91
+ Auto-approve: `)+(n.enabled?m.green("ON"):m.gray("OFF"))),!r.length){console.log(m.gray(`No approved devices
92
+ `));return}console.log(m.white(`Approved devices (${r.length}):`));for(let o of r)console.log(" "+m.cyan(o.deviceId));console.log()}async function tc(e){if(!await cn())return;let r=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
93
+ \u2717 Usage: 9remote auto-approve <on|off>
94
+ `));return}let n=await Q("/api/device/auto-approve",{enabled:r}),o=n&&n.ok?await n.json():null;console.log(m.green(`
95
+ \u2713 Auto-approve: `)+(o?.enabled?m.green("ON"):m.gray("OFF"))+`
96
+ `)}async function nc(e){if(!await cn())return;if(!e){let t=(await j("/api/device/pending")||{}).pending||[];if(!t.length){console.log(m.gray(`
97
+ No pending devices
98
+ `));return}console.log(m.white(`
99
+ Pending devices (${t.length}):`));for(let i of t)console.log(" "+m.cyan(i.socketId)+m.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(m.gray(`
100
+ Approve with: `)+m.cyan("9remote approve <socketId>")+`
101
+ `);return}let r=await Q("/api/device/approve",{socketId:e}),n=r&&r.ok?await r.json():null;console.log(n?.ok?m.green(`
102
+ \u2713 Approved
103
+ `):m.red(`
104
+ \u2717 Approve failed (invalid socketId?)
105
+ `))}async function as(e){let r=e[2],n=e.slice(3);switch(r){case"help":case"-h":case"--help":return Dr(),!0;case"key":return await Za(n.includes("--new")),!0;case"otk":return await za(),!0;case"devices":return await ec(),!0;case"auto-approve":return await tc(n[0]),!0;case"approve":return await nc(n[0]),!0;default:return!1}}Xr();async function rc(){let e=process.argv[2];if(await as(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||Tn(),e==="ui"?await Ji():e==="start"||process.argv.includes("--auto")?await qi():process.argv.includes("--tray")||process.argv.includes("--start")?await Xi():process.stdin.isTTY?await is():Dr()}rc().catch(console.error);