9remote 2.3.2 → 2.3.5

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,29 +1,29 @@
1
1
  #!/usr/bin/env node
2
2
  const __importMetaUrl = require('url').pathToFileURL(__filename).href;
3
- var Xs=Object.create;var hr=Object.defineProperty;var Zs=Object.getOwnPropertyDescriptor;var zs=Object.getOwnPropertyNames;var ea=Object.getPrototypeOf,ta=Object.prototype.hasOwnProperty;var na=(e,n)=>()=>(e&&(n=e(e=0)),n);var ae=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),ra=(e,n)=>{for(var r in n)hr(e,r,{get:n[r],enumerable:!0})},oa=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of zs(n))!ta.call(e,t)&&t!==r&&hr(e,t,{get:()=>n[t],enumerable:!(o=Zs(n,t))||o.enumerable});return e};var b=(e,n,r)=>(r=e!=null?Xs(ea(e)):{},oa(n||!e||!e.__esModule?hr(r,"default",{value:e,enumerable:!0}):r,e));var To=ae((en,wr)=>{(function(e,n){typeof en=="object"&&typeof wr=="object"?wr.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof en=="object"?en["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(en,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.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(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.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(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,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(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,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{}};r.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(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var h,w,x,k=f&u.F,A=f&u.G,g=f&u.S,S=f&u.P,P=f&u.B,T=f&u.W,O=A?s:s[p]||(s[p]={}),I=O[l],B=A?i:g?i[p]:(i[p]||{})[l];A&&(d=p);for(h in d)w=!k&&B&&B[h]!==void 0,w&&h in O||(x=w?B[h]:d[h],O[h]=A&&typeof B[h]!="function"?d[h]:P&&w?a(x,i):T&&B[h]==x?(function(V){var de=function(me,ee,Oe){if(this instanceof V){switch(arguments.length){case 0:return new V;case 1:return new V(me);case 2:return new V(me,ee)}return new V(me,ee,Oe)}return V.apply(this,arguments)};return de[l]=V[l],de})(x):S&&typeof x=="function"?a(Function.call,x):x,S&&((O.virtual||(O.virtual={}))[h]=x,f&u.R&&I&&!I[h]&&c(I,h,x)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,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"),w=!([].keys&&"next"in[].keys()),x="@@iterator",k="keys",A="values",g=function(){return this};r.exports=function(S,P,T,O,I,B,V){f(T,P,O);var de,me,ee,Oe=function(v){if(!w&&v in te)return te[v];switch(v){case k:return function(){return new T(this,v)};case A:return function(){return new T(this,v)}}return function(){return new T(this,v)}},gt=P+" Iterator",nt=I==A,qt=!1,te=S.prototype,Ue=te[h]||te[x]||I&&te[I],ie=Ue||Oe(I),Jt=I?nt?Oe("entries"):ie:void 0,y=P=="Array"&&te.entries||Ue;if(y&&(ee=d(y.call(new S)),ee!==Object.prototype&&(p(ee,gt,!0),i||l(ee,h)||c(ee,h,g))),nt&&Ue&&Ue.name!==A&&(qt=!0,ie=function(){return Ue.call(this)}),i&&!V||!w&&!qt&&te[h]||c(te,h,ie),u[P]=ie,u[gt]=g,I)if(de={values:nt?ie:Oe(A),keys:B?ie:Oe(k),entries:Jt},V)for(me in de)me in te||a(te,me,de[me]);else s(s.P+s.F*(w||qt),P,de);return de}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,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,w=p.clearImmediate,x=p.MessageChannel,k=0,A={},g="onreadystatechange",S=function(){var T=+this;if(A.hasOwnProperty(T)){var O=A[T];delete A[T],O()}},P=function(T){S.call(T.data)};h&&w||(h=function(T){for(var O=[],I=1;arguments.length>I;)O.push(arguments[I++]);return A[++k]=function(){l(typeof T=="function"?T:Function(T),O)},i(k),k},w=function(T){delete A[T]},t(11)(d)=="process"?i=function(T){d.nextTick(c(S,T,1))}:x?(s=new x,a=s.port2,s.port1.onmessage=P,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(T){p.postMessage(T+"","*")},p.addEventListener("message",P,!1)):i=g in f("script")?function(T){u.appendChild(f("script"))[g]=function(){u.removeChild(this),S.call(T)}}:function(T){setTimeout(c(S,T,1),0)}),r.exports={set:h,clear:w}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.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(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(g){return g&&g.__esModule?g:{default:g}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(g){return(0,h.createHash)("sha256").update(g).digest("hex")}function c(g){switch(x){case"darwin":return g.split("IOPlatformUUID")[1].split(`
4
- `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return g.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return g.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return g.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(g){var S=c((0,d.execSync)(A[x]).toString());return g?S:a(S)}function u(g){return new p.default(function(S,P){return(0,d.exec)(A[x],{},function(T,O,I){if(T)return P(new Error("Error while obtaining machine id: "+T.stack));var B=c(O.toString());return S(g?B:a(B))})})}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),w=process,x=w.platform,k={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},A={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(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),w=a(f,h);if(c&&u!=u){for(;h>w;)if(p=d[w++],p!=p)return!0}else for(;h>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(h,w,x,k,A){var g,S,P,T,O=A?function(){return h}:u(h),I=i(x,k,w?2:1),B=0;if(typeof O!="function")throw TypeError(h+" is not iterable!");if(a(O)){for(g=l(h.length);g>B;B++)if(T=w?I(c(S=h[B])[0],S[1]):I(h[B]),T===f||T===p)return T}else for(P=O.call(h);!(S=P.next()).done;)if(T=s(P,I,S.value,w),T===f||T===p)return T};d.BREAK=f,d.RETURN=p},function(r,o){r.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(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.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(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,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{}r.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(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,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";r.exports=function(){var f,p,d,h=function(){var A,g;for(u&&(A=c.domain)&&A.exit();f;){g=f.fn,f=f.next;try{g()}catch(S){throw f?d():p=void 0,S}}p=void 0,A&&A.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var w=!0,x=document.createTextNode("");new a(h).observe(x,{characterData:!0}),d=function(){x.data=w=!w}}else if(l&&l.resolve){var k=l.resolve();d=function(){k.then(h)}}else d=function(){s.call(i,h)};return function(A){var g={fn:A,next:void 0};p&&(p.next=g),f||(f=g,d()),p=g}}},function(r,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,w=">";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"+w),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.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(r,o,t){var i=t(12),s=t(3),a=t(54);r.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(r,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(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.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(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.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(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.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(r,o,t){r.exports=t(5)},function(r,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!")};r.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(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.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(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.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(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.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(r,o){},function(r,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)),w=t(38),x=t(40),k=(t(58).set,t(60)),A=t(30).set,g=t(48)(),S="Promise",P=l.TypeError,O=l.process,T=l[S],O=l.process,I=f(O)=="process",B=function(){},V=!!(function(){try{var y=T.resolve(1),v=(y.constructor={})[t(1)("species")]=function(R){R(B,B)};return(I||typeof PromiseRejectionEvent=="function")&&y.then(B)instanceof v}catch{}})(),de=function(y,v){return y===v||y===T&&v===a},me=function(y){var v;return!(!d(y)||typeof(v=y.then)!="function")&&v},ee=function(y){return de(T,y)?new Oe(y):new s(y)},Oe=s=function(y){var v,R;this.promise=new y(function(L,Y){if(v!==void 0||R!==void 0)throw P("Bad Promise constructor");v=L,R=Y}),this.resolve=h(v),this.reject=h(R)},gt=function(y){try{y()}catch(v){return{error:v}}},nt=function(y,v){if(!y._n){y._n=!0;var R=y._c;g(function(){for(var L=y._v,Y=y._s==1,rt=0,yt=function(Be){var ve,In,Qt=Y?Be.ok:Be.fail,Xt=Be.resolve,wt=Be.reject,$n=Be.domain;try{Qt?(Y||(y._h==2&&Ue(y),y._h=1),Qt===!0?ve=L:($n&&$n.enter(),ve=Qt(L),$n&&$n.exit()),ve===Be.promise?wt(P("Promise-chain cycle")):(In=me(ve))?In.call(ve,Xt,wt):Xt(ve)):wt(L)}catch(Qs){wt(Qs)}};R.length>rt;)yt(R[rt++]);y._c=[],y._n=!1,v&&!y._h&&qt(y)})}},qt=function(y){A.call(l,function(){var v,R,L,Y=y._v;if(te(y)&&(v=gt(function(){I?O.emit("unhandledRejection",Y,y):(R=l.onunhandledrejection)?R({promise:y,reason:Y}):(L=l.console)&&L.error&&L.error("Unhandled promise rejection",Y)}),y._h=I||te(y)?2:1),y._a=void 0,v)throw v.error})},te=function(y){if(y._h==1)return!1;for(var v,R=y._a||y._c,L=0;R.length>L;)if(v=R[L++],v.fail||!te(v.promise))return!1;return!0},Ue=function(y){A.call(l,function(){var v;I?O.emit("rejectionHandled",y):(v=l.onrejectionhandled)&&v({promise:y,reason:y._v})})},ie=function(y){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=y,v._s=2,v._a||(v._a=v._c.slice()),nt(v,!0))},Jt=function(y){var v,R=this;if(!R._d){R._d=!0,R=R._w||R;try{if(R===y)throw P("Promise can't be resolved itself");(v=me(y))?g(function(){var L={_w:R,_d:!1};try{v.call(y,u(Jt,L,1),u(ie,L,1))}catch(Y){ie.call(L,Y)}}):(R._v=y,R._s=1,nt(R,!1))}catch(L){ie.call({_w:R,_d:!1},L)}}};V||(T=function(y){w(this,T,S,"_h"),h(y),i.call(this);try{y(u(Jt,this,1),u(ie,this,1))}catch(v){ie.call(this,v)}},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)(T.prototype,{then:function(y,v){var R=ee(k(this,T));return R.ok=typeof y!="function"||y,R.fail=typeof v=="function"&&v,R.domain=I?O.domain:void 0,this._c.push(R),this._a&&this._a.push(R),this._s&&nt(this,!1),R.promise},catch:function(y){return this.then(void 0,y)}}),Oe=function(){var y=new i;this.promise=y,this.resolve=u(Jt,y,1),this.reject=u(ie,y,1)}),p(p.G+p.W+p.F*!V,{Promise:T}),t(18)(T,S),t(59)(S),a=t(6)[S],p(p.S+p.F*!V,S,{reject:function(y){var v=ee(this),R=v.reject;return R(y),v.promise}}),p(p.S+p.F*(c||!V),S,{resolve:function(y){if(y instanceof T&&de(y.constructor,this))return y;var v=ee(this),R=v.resolve;return R(y),v.promise}}),p(p.S+p.F*!(V&&t(46)(function(y){T.all(y).catch(B)})),S,{all:function(y){var v=this,R=ee(v),L=R.resolve,Y=R.reject,rt=gt(function(){var yt=[],Be=0,ve=1;x(y,!1,function(In){var Qt=Be++,Xt=!1;yt.push(void 0),ve++,v.resolve(In).then(function(wt){Xt||(Xt=!0,yt[Qt]=wt,--ve||L(yt))},Y)}),--ve||L(yt)});return rt&&Y(rt.error),R.promise},race:function(y){var v=this,R=ee(v),L=R.reject,Y=gt(function(){x(y,!1,function(rt){v.resolve(rt).then(R.resolve,L)})});return Y&&L(Y.error),R.promise}})},function(r,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(r,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(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var rs={};ra(rs,{initTray:()=>Xr,killTray:()=>Rn,openBrowser:()=>bn,showTrayNotification:()=>Zr,updateTrayTooltip:()=>cr});function Ji(e){for(let n of e)try{if(Ht.default.existsSync(n))return n}catch{}return null}function _c(){if(process.platform==="win32"){for(let e of es)try{if(Ht.default.existsSync(e))return Ht.default.readFileSync(e).toString("base64")}catch{}return qi}return qi}function Pc(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function ts(){let{port:e,tunnelUrl:n,running:r}=jt,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
3
+ var Xs=Object.create;var hr=Object.defineProperty;var Zs=Object.getOwnPropertyDescriptor;var zs=Object.getOwnPropertyNames;var ea=Object.getPrototypeOf,ta=Object.prototype.hasOwnProperty;var na=(e,n)=>()=>(e&&(n=e(e=0)),n);var ae=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),ra=(e,n)=>{for(var r in n)hr(e,r,{get:n[r],enumerable:!0})},oa=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of zs(n))!ta.call(e,t)&&t!==r&&hr(e,t,{get:()=>n[t],enumerable:!(o=Zs(n,t))||o.enumerable});return e};var k=(e,n,r)=>(r=e!=null?Xs(ea(e)):{},oa(n||!e||!e.__esModule?hr(r,"default",{value:e,enumerable:!0}):r,e));var xo=ae((tn,wr)=>{(function(e,n){typeof tn=="object"&&typeof wr=="object"?wr.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof tn=="object"?tn["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(tn,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.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(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.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(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,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(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,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{}};r.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(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",u=function(f,p,d){var m,w,x,P=f&u.F,A=f&u.G,T=f&u.S,y=f&u.P,R=f&u.B,S=f&u.W,_=A?s:s[p]||(s[p]={}),I=_[l],F=A?i:T?i[p]:(i[p]||{})[l];A&&(d=p);for(m in d)w=!P&&F&&F[m]!==void 0,w&&m in _||(x=w?F[m]:d[m],_[m]=A&&typeof F[m]!="function"?d[m]:R&&w?a(x,i):S&&F[m]==x?(function(Y){var de=function(me,ee,Oe){if(this instanceof Y){switch(arguments.length){case 0:return new Y;case 1:return new Y(me);case 2:return new Y(me,ee)}return new Y(me,ee,Oe)}return Y.apply(this,arguments)};return de[l]=Y[l],de})(x):y&&typeof x=="function"?a(Function.call,x):x,y&&((_.virtual||(_.virtual={}))[m]=x,f&u.R&&I&&!I[m]&&c(I,m,x)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,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"),w=!([].keys&&"next"in[].keys()),x="@@iterator",P="keys",A="values",T=function(){return this};r.exports=function(y,R,S,_,I,F,Y){f(S,R,_);var de,me,ee,Oe=function(v){if(!w&&v in te)return te[v];switch(v){case P:return function(){return new S(this,v)};case A:return function(){return new S(this,v)}}return function(){return new S(this,v)}},yt=R+" Iterator",rt=I==A,Jt=!1,te=y.prototype,Be=te[m]||te[x]||I&&te[I],ie=Be||Oe(I),Qt=I?rt?Oe("entries"):ie:void 0,g=R=="Array"&&te.entries||Be;if(g&&(ee=d(g.call(new y)),ee!==Object.prototype&&(p(ee,yt,!0),i||l(ee,m)||c(ee,m,T))),rt&&Be&&Be.name!==A&&(Jt=!0,ie=function(){return Be.call(this)}),i&&!Y||!w&&!Jt&&te[m]||c(te,m,ie),u[R]=ie,u[yt]=T,I)if(de={values:rt?ie:Oe(A),keys:F?ie:Oe(P),entries:Qt},Y)for(me in de)me in te||a(te,me,de[me]);else s(s.P+s.F*(w||Jt),R,de);return de}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,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,w=p.clearImmediate,x=p.MessageChannel,P=0,A={},T="onreadystatechange",y=function(){var S=+this;if(A.hasOwnProperty(S)){var _=A[S];delete A[S],_()}},R=function(S){y.call(S.data)};m&&w||(m=function(S){for(var _=[],I=1;arguments.length>I;)_.push(arguments[I++]);return A[++P]=function(){l(typeof S=="function"?S:Function(S),_)},i(P),P},w=function(S){delete A[S]},t(11)(d)=="process"?i=function(S){d.nextTick(c(y,S,1))}:x?(s=new x,a=s.port2,s.port1.onmessage=R,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(S){p.postMessage(S+"","*")},p.addEventListener("message",R,!1)):i=T in f("script")?function(S){u.appendChild(f("script"))[T]=function(){u.removeChild(this),y.call(S)}}:function(S){setTimeout(c(y,S,1),0)}),r.exports={set:m,clear:w}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.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(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(T){return T&&T.__esModule?T:{default:T}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(T){return(0,m.createHash)("sha256").update(T).digest("hex")}function c(T){switch(x){case"darwin":return T.split("IOPlatformUUID")[1].split(`
4
+ `)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return T.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return T.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return T.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(T){var y=c((0,d.execSync)(A[x]).toString());return T?y:a(y)}function u(T){return new p.default(function(y,R){return(0,d.exec)(A[x],{},function(S,_,I){if(S)return R(new Error("Error while obtaining machine id: "+S.stack));var F=c(_.toString());return y(T?F:a(F))})})}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),w=process,x=w.platform,P={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},A={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:P[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(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),m=s(d.length),w=a(f,m);if(c&&u!=u){for(;m>w;)if(p=d[w++],p!=p)return!0}else for(;m>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),u=t(64),f={},p={},d=r.exports=function(m,w,x,P,A){var T,y,R,S,_=A?function(){return m}:u(m),I=i(x,P,w?2:1),F=0;if(typeof _!="function")throw TypeError(m+" is not iterable!");if(a(_)){for(T=l(m.length);T>F;F++)if(S=w?I(c(y=m[F])[0],y[1]):I(m[F]),S===f||S===p)return S}else for(R=_.call(m);!(y=R.next()).done;)if(S=s(R,I,y.value,w),S===f||S===p)return S};d.BREAK=f,d.RETURN=p},function(r,o){r.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(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.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(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,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{}r.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(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,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";r.exports=function(){var f,p,d,m=function(){var A,T;for(u&&(A=c.domain)&&A.exit();f;){T=f.fn,f=f.next;try{T()}catch(y){throw f?d():p=void 0,y}}p=void 0,A&&A.enter()};if(u)d=function(){c.nextTick(m)};else if(a){var w=!0,x=document.createTextNode("");new a(m).observe(x,{characterData:!0}),d=function(){x.data=w=!w}}else if(l&&l.resolve){var P=l.resolve();d=function(){P.then(m)}}else d=function(){s.call(i,m)};return function(A){var T={fn:A,next:void 0};p&&(p.next=T),f||(f=T,d()),p=T}}},function(r,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,w=">";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"+w),p.close(),f=p.F;m--;)delete f[u][a[m]];return f()};r.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(r,o,t){var i=t(12),s=t(3),a=t(54);r.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(r,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(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.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(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.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(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.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(r,o,t){r.exports=t(5)},function(r,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!")};r.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(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.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(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,t){var i=t(20),s=t(15);r.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(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.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(r,o){},function(r,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)),w=t(38),x=t(40),P=(t(58).set,t(60)),A=t(30).set,T=t(48)(),y="Promise",R=l.TypeError,_=l.process,S=l[y],_=l.process,I=f(_)=="process",F=function(){},Y=!!(function(){try{var g=S.resolve(1),v=(g.constructor={})[t(1)("species")]=function(b){b(F,F)};return(I||typeof PromiseRejectionEvent=="function")&&g.then(F)instanceof v}catch{}})(),de=function(g,v){return g===v||g===S&&v===a},me=function(g){var v;return!(!d(g)||typeof(v=g.then)!="function")&&v},ee=function(g){return de(S,g)?new Oe(g):new s(g)},Oe=s=function(g){var v,b;this.promise=new g(function(L,q){if(v!==void 0||b!==void 0)throw R("Bad Promise constructor");v=L,b=q}),this.resolve=m(v),this.reject=m(b)},yt=function(g){try{g()}catch(v){return{error:v}}},rt=function(g,v){if(!g._n){g._n=!0;var b=g._c;T(function(){for(var L=g._v,q=g._s==1,ot=0,wt=function(He){var ve,$n,Xt=q?He.ok:He.fail,Zt=He.resolve,vt=He.reject,Cn=He.domain;try{Xt?(q||(g._h==2&&Be(g),g._h=1),Xt===!0?ve=L:(Cn&&Cn.enter(),ve=Xt(L),Cn&&Cn.exit()),ve===He.promise?vt(R("Promise-chain cycle")):($n=me(ve))?$n.call(ve,Zt,vt):Zt(ve)):vt(L)}catch(Qs){vt(Qs)}};b.length>ot;)wt(b[ot++]);g._c=[],g._n=!1,v&&!g._h&&Jt(g)})}},Jt=function(g){A.call(l,function(){var v,b,L,q=g._v;if(te(g)&&(v=yt(function(){I?_.emit("unhandledRejection",q,g):(b=l.onunhandledrejection)?b({promise:g,reason:q}):(L=l.console)&&L.error&&L.error("Unhandled promise rejection",q)}),g._h=I||te(g)?2:1),g._a=void 0,v)throw v.error})},te=function(g){if(g._h==1)return!1;for(var v,b=g._a||g._c,L=0;b.length>L;)if(v=b[L++],v.fail||!te(v.promise))return!1;return!0},Be=function(g){A.call(l,function(){var v;I?_.emit("rejectionHandled",g):(v=l.onrejectionhandled)&&v({promise:g,reason:g._v})})},ie=function(g){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=g,v._s=2,v._a||(v._a=v._c.slice()),rt(v,!0))},Qt=function(g){var v,b=this;if(!b._d){b._d=!0,b=b._w||b;try{if(b===g)throw R("Promise can't be resolved itself");(v=me(g))?T(function(){var L={_w:b,_d:!1};try{v.call(g,u(Qt,L,1),u(ie,L,1))}catch(q){ie.call(L,q)}}):(b._v=g,b._s=1,rt(b,!1))}catch(L){ie.call({_w:b,_d:!1},L)}}};Y||(S=function(g){w(this,S,y,"_h"),m(g),i.call(this);try{g(u(Qt,this,1),u(ie,this,1))}catch(v){ie.call(this,v)}},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)(S.prototype,{then:function(g,v){var b=ee(P(this,S));return b.ok=typeof g!="function"||g,b.fail=typeof v=="function"&&v,b.domain=I?_.domain:void 0,this._c.push(b),this._a&&this._a.push(b),this._s&&rt(this,!1),b.promise},catch:function(g){return this.then(void 0,g)}}),Oe=function(){var g=new i;this.promise=g,this.resolve=u(Qt,g,1),this.reject=u(ie,g,1)}),p(p.G+p.W+p.F*!Y,{Promise:S}),t(18)(S,y),t(59)(y),a=t(6)[y],p(p.S+p.F*!Y,y,{reject:function(g){var v=ee(this),b=v.reject;return b(g),v.promise}}),p(p.S+p.F*(c||!Y),y,{resolve:function(g){if(g instanceof S&&de(g.constructor,this))return g;var v=ee(this),b=v.resolve;return b(g),v.promise}}),p(p.S+p.F*!(Y&&t(46)(function(g){S.all(g).catch(F)})),y,{all:function(g){var v=this,b=ee(v),L=b.resolve,q=b.reject,ot=yt(function(){var wt=[],He=0,ve=1;x(g,!1,function($n){var Xt=He++,Zt=!1;wt.push(void 0),ve++,v.resolve($n).then(function(vt){Zt||(Zt=!0,wt[Xt]=vt,--ve||L(wt))},q)}),--ve||L(wt)});return ot&&q(ot.error),b.promise},race:function(g){var v=this,b=ee(v),L=b.reject,q=yt(function(){x(g,!1,function(ot){v.resolve(ot).then(b.resolve,L)})});return q&&L(q.error),b.promise}})},function(r,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(r,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(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var os={};ra(os,{initTray:()=>Xr,killTray:()=>bn,openBrowser:()=>An,showTrayNotification:()=>Zr,updateTrayTooltip:()=>lr});function Qi(e){for(let n of e)try{if(jt.default.existsSync(n))return n}catch{}return null}function _c(){if(process.platform==="win32"){for(let e of ts)try{if(jt.default.existsSync(e))return jt.default.readFileSync(e).toString("base64")}catch{}return Ji}return Ji}function Pc(){let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function ns(){let{port:e,tunnelUrl:n,running:r}=Kt,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
5
5
  Local: ${t}
6
- Right-click to open / quit`}function ns(){let{port:e,tunnelUrl:n}=jt,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:_c(),title:r?`9Remote - Port ${e}`:"",tooltip:ts(),items:[{title:o,tooltip:n||`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 Oc(){try{let e=require(ke.default.join(zi,"systray2"));return e.default?.default||e.default||e}catch{return null}}function Ic({port:e,onQuit:n,onOpenUI:r}){let o=Ji(es),t=Ji(kc);if(!o||!t)return null;let i;try{i=(0,De.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",t,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
7
- `,"utf8")}catch{}};return Qi.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),Rn(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function Xr({port:e,onQuit:n,onOpenUI:r}){if(!Pc())return null;if(process.platform==="win32")return jt={port:e,tunnelUrl:"",running:!0},z=Ic({port:e,onQuit:n,onOpenUI:r}),z;try{let o=Oc();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=ke.default.join(zi,"systray2","traybin",i);if(!Ht.default.existsSync(s))return null;if(process.platform!=="win32")try{Ht.default.chmodSync(s,493)}catch{}return jt={port:e,tunnelUrl:"",running:!0},z=new o({menu:ns(),debug:!1,copyDir:!0}),z.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),Rn(),setTimeout(()=>process.exit(0),500))}),typeof z.ready=="function"?z.ready().catch(()=>{}):(z.onReady(()=>{}),z.onError(()=>{})),z}catch{return null}}function cr({tunnelUrl:e,running:n}={}){if(e!==void 0&&(jt.tunnelUrl=e),n!==void 0&&(jt.running=n),!!z){if(z._isWin){z._setTooltip?.(ts());return}try{z.sendAction({type:"update-menu",menu:ns(),seq_id:-1})}catch{}}}function Rn(){let e=z;if(z=null,e)try{e.kill(!0)}catch{}}function Zr({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="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(n)}</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(n)}';`,"$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(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,De.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,De.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function bn(e){let n=process.platform;if(n==="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(n==="darwin"){try{(0,De.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["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 r)try{(0,De.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var De,Qi,Ht,ke,Xi,Zi,zi,z,jt,ar,qi,es,kc,Kt=na(()=>{De=require("child_process"),Qi=b(require("readline"),1),Ht=b(require("fs"),1),ke=b(require("path"),1),Xi=b(require("os"),1),Zi=require("url"),zi=(0,ke.join)(Xi.default.homedir(),".9remote","runtime","node_modules"),z=null,jt={port:0,tunnelUrl:"",running:!1},ar=ke.default.dirname((0,Zi.fileURLToPath)(__importMetaUrl)),qi="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=",es=[ke.default.join(ar,"assets","trayIcon.ico"),ke.default.join(ar,"..","assets","trayIcon.ico")],kc=[ke.default.join(ar,"assets","tray.ps1"),ke.default.join(ar,"..","assets","tray.ps1")]});var no=ae((Wu,fs)=>{fs.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var ms=ae((Vu,ds)=>{var Lc=no();function ps(e){this.mode=Lc.MODE_8BIT_BYTE,this.data=e}ps.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};ds.exports=ps});var ro=ae((Yu,hs)=>{var we={glog:function(e){if(e<1)throw new Error("glog("+e+")");return we.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return we.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(H=0;H<8;H++)we.EXP_TABLE[H]=1<<H;var H;for(H=8;H<256;H++)we.EXP_TABLE[H]=we.EXP_TABLE[H-4]^we.EXP_TABLE[H-5]^we.EXP_TABLE[H-6]^we.EXP_TABLE[H-8];var H;for(H=0;H<255;H++)we.LOG_TABLE[we.EXP_TABLE[H]]=H;var H;hs.exports=we});var oo=ae((qu,gs)=>{var ht=ro();function fr(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}fr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=ht.gexp(ht.glog(this.get(r))+ht.glog(e.get(o)));return new fr(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=ht.glog(this.get(0))-ht.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=ht.gexp(ht.glog(e.get(t))+n);return new fr(r,0).mod(e)}};gs.exports=fr});var ws=ae((Ju,ys)=>{ys.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Es=ae((Qu,Ss)=>{var pe=no(),vs=oo(),Nc=ro(),Xe=ws(),W={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 n=e<<10;W.getBCHDigit(n)-W.getBCHDigit(W.G15)>=0;)n^=W.G15<<W.getBCHDigit(n)-W.getBCHDigit(W.G15);return(e<<10|n)^W.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;W.getBCHDigit(n)-W.getBCHDigit(W.G18)>=0;)n^=W.G18<<W.getBCHDigit(n)-W.getBCHDigit(W.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return W.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case Xe.PATTERN000:return(n+r)%2===0;case Xe.PATTERN001:return n%2===0;case Xe.PATTERN010:return r%3===0;case Xe.PATTERN011:return(n+r)%3===0;case Xe.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case Xe.PATTERN101:return n*r%2+n*r%3===0;case Xe.PATTERN110:return(n*r%2+n*r%3)%2===0;case Xe.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new vs([1],0),r=0;r<e;r++)n=n.multiply(new vs([1,Nc.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case pe.MODE_NUMBER:return 10;case pe.MODE_ALPHA_NUM:return 9;case pe.MODE_8BIT_BYTE:return 8;case pe.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case pe.MODE_NUMBER:return 12;case pe.MODE_ALPHA_NUM:return 11;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case pe.MODE_NUMBER:return 14;case pe.MODE_ALPHA_NUM:return 13;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-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)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-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)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-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)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};Ss.exports=W});var io=ae((Xu,Ts)=>{Ts.exports={L:1,M:0,Q:3,H:2}});var Rs=ae((Zu,xs)=>{var pr=io();function _e(e,n){this.totalCount=e,this.dataCount=n}_e.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]];_e.getRSBlocks=function(e,n){var r=_e.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new _e(a,c));return t};_e.getRsBlockTable=function(e,n){switch(n){case pr.L:return _e.RS_BLOCK_TABLE[(e-1)*4+0];case pr.M:return _e.RS_BLOCK_TABLE[(e-1)*4+1];case pr.Q:return _e.RS_BLOCK_TABLE[(e-1)*4+2];case pr.H:return _e.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};xs.exports=_e});var ks=ae((zu,As)=>{function bs(){this.buffer=[],this.length=0}bs.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};As.exports=bs});var Is=ae((ef,Os)=>{var Mc=ms(),Ze=Es(),Dc=oo(),_s=Rs(),Ps=ks();function Pe(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Pe.prototype={addData:function(e){var n=new Mc(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=_s.getRSBlocks(e,this.errorCorrectLevel),r=new Ps,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),Ze.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][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,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Pe.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=Ze.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),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 n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=Ze.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];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 n=Ze.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=Ze.getBCHTypeInfo(r),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,n){for(var r=-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=Ze.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Pe.PAD0=236;Pe.PAD1=17;Pe.createData=function(e,n,r){for(var o=_s.getRSBlocks(e,n),t=new Ps,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),Ze.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(Pe.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Pe.PAD1,8);return Pe.createBytes(t,o)};Pe.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[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+r];r+=c;var f=Ze.getErrorCorrectPolynomial(l),p=new Dc(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 w=h+d.getLength()-s[a].length;s[a][h]=w>=0?d.get(w):0}}for(var x=0,k=0;k<n.length;k++)x+=n[k].totalCount;for(var A=new Array(x),g=0,S=0;S<o;S++)for(var P=0;P<n.length;P++)S<i[P].length&&(A[g++]=i[P][S]);for(var T=0;T<t;T++)for(var O=0;O<n.length;O++)T<s[O].length&&(A[g++]=s[O][T]);return A};Os.exports=Pe});var Ls=ae((tf,Cs)=>{var Fc=Is(),$s=io(),Uc="\x1B[40m \x1B[0m",dr="\x1B[47m \x1B[0m",Bc=function(e){return e?Uc:dr},so=function(e){return{times:function(n){return new Array(n).join(e)}}},Hc=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};Cs.exports={error:$s.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new Fc(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Hc(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=so(u.BLACK_WHITE).times(a+3),p=so(u.WHITE_BLACK).times(a+3);t+=f+`
8
- `;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+`
6
+ Right-click to open / quit`}function rs(){let{port:e,tunnelUrl:n}=Kt,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:_c(),title:r?`9Remote - Port ${e}`:"",tooltip:ns(),items:[{title:o,tooltip:n||`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 Oc(){try{let e=require(ke.default.join(es,"systray2"));return e.default?.default||e.default||e}catch{return null}}function Ic({port:e,onQuit:n,onOpenUI:r}){let o=Qi(ts),t=Qi(kc);if(!o||!t)return null;let i;try{i=(0,De.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",t,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
7
+ `,"utf8")}catch{}};return Xi.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),bn(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function Xr({port:e,onQuit:n,onOpenUI:r}){if(!Pc())return null;if(process.platform==="win32")return Kt={port:e,tunnelUrl:"",running:!0},z=Ic({port:e,onQuit:n,onOpenUI:r}),z;try{let o=Oc();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=ke.default.join(es,"systray2","traybin",i);if(!jt.default.existsSync(s))return null;if(process.platform!=="win32")try{jt.default.chmodSync(s,493)}catch{}return Kt={port:e,tunnelUrl:"",running:!0},z=new o({menu:rs(),debug:!1,copyDir:!0}),z.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),bn(),setTimeout(()=>process.exit(0),500))}),typeof z.ready=="function"?z.ready().catch(()=>{}):(z.onReady(()=>{}),z.onError(()=>{})),z}catch{return null}}function lr({tunnelUrl:e,running:n}={}){if(e!==void 0&&(Kt.tunnelUrl=e),n!==void 0&&(Kt.running=n),!!z){if(z._isWin){z._setTooltip?.(ns());return}try{z.sendAction({type:"update-menu",menu:rs(),seq_id:-1})}catch{}}}function bn(){let e=z;if(z=null,e)try{e.kill(!0)}catch{}}function Zr({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="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(n)}</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(n)}';`,"$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(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,De.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,De.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function An(e){let n=process.platform;if(n==="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(n==="darwin"){try{(0,De.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["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 r)try{(0,De.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var De,Xi,jt,ke,Zi,zi,es,z,Kt,cr,Ji,ts,kc,Gt=na(()=>{De=require("child_process"),Xi=k(require("readline"),1),jt=k(require("fs"),1),ke=k(require("path"),1),Zi=k(require("os"),1),zi=require("url"),es=(0,ke.join)(Zi.default.homedir(),".9remote","runtime","node_modules"),z=null,Kt={port:0,tunnelUrl:"",running:!1},cr=ke.default.dirname((0,zi.fileURLToPath)(__importMetaUrl)),Ji="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=",ts=[ke.default.join(cr,"assets","trayIcon.ico"),ke.default.join(cr,"..","assets","trayIcon.ico")],kc=[ke.default.join(cr,"assets","tray.ps1"),ke.default.join(cr,"..","assets","tray.ps1")]});var no=ae((Wu,ps)=>{ps.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var hs=ae((Vu,ms)=>{var Lc=no();function ds(e){this.mode=Lc.MODE_8BIT_BYTE,this.data=e}ds.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};ms.exports=ds});var ro=ae((Yu,gs)=>{var we={glog:function(e){if(e<1)throw new Error("glog("+e+")");return we.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return we.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(H=0;H<8;H++)we.EXP_TABLE[H]=1<<H;var H;for(H=8;H<256;H++)we.EXP_TABLE[H]=we.EXP_TABLE[H-4]^we.EXP_TABLE[H-5]^we.EXP_TABLE[H-6]^we.EXP_TABLE[H-8];var H;for(H=0;H<255;H++)we.LOG_TABLE[we.EXP_TABLE[H]]=H;var H;gs.exports=we});var oo=ae((qu,ys)=>{var gt=ro();function fr(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}fr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=gt.gexp(gt.glog(this.get(r))+gt.glog(e.get(o)));return new fr(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=gt.glog(this.get(0))-gt.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=gt.gexp(gt.glog(e.get(t))+n);return new fr(r,0).mod(e)}};ys.exports=fr});var vs=ae((Ju,ws)=>{ws.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ts=ae((Qu,Ss)=>{var pe=no(),Es=oo(),Nc=ro(),ze=vs(),V={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 n=e<<10;V.getBCHDigit(n)-V.getBCHDigit(V.G15)>=0;)n^=V.G15<<V.getBCHDigit(n)-V.getBCHDigit(V.G15);return(e<<10|n)^V.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;V.getBCHDigit(n)-V.getBCHDigit(V.G18)>=0;)n^=V.G18<<V.getBCHDigit(n)-V.getBCHDigit(V.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return V.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case ze.PATTERN000:return(n+r)%2===0;case ze.PATTERN001:return n%2===0;case ze.PATTERN010:return r%3===0;case ze.PATTERN011:return(n+r)%3===0;case ze.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case ze.PATTERN101:return n*r%2+n*r%3===0;case ze.PATTERN110:return(n*r%2+n*r%3)%2===0;case ze.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new Es([1],0),r=0;r<e;r++)n=n.multiply(new Es([1,Nc.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case pe.MODE_NUMBER:return 10;case pe.MODE_ALPHA_NUM:return 9;case pe.MODE_8BIT_BYTE:return 8;case pe.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case pe.MODE_NUMBER:return 12;case pe.MODE_ALPHA_NUM:return 11;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case pe.MODE_NUMBER:return 14;case pe.MODE_ALPHA_NUM:return 13;case pe.MODE_8BIT_BYTE:return 16;case pe.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-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)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-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)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-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)&&(r+=40);var u=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&u++;var f=Math.abs(100*u/n/n-50)/5;return r+=f*10,r}};Ss.exports=V});var io=ae((Xu,xs)=>{xs.exports={L:1,M:0,Q:3,H:2}});var bs=ae((Zu,Rs)=>{var pr=io();function _e(e,n){this.totalCount=e,this.dataCount=n}_e.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]];_e.getRSBlocks=function(e,n){var r=_e.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new _e(a,c));return t};_e.getRsBlockTable=function(e,n){switch(n){case pr.L:return _e.RS_BLOCK_TABLE[(e-1)*4+0];case pr.M:return _e.RS_BLOCK_TABLE[(e-1)*4+1];case pr.Q:return _e.RS_BLOCK_TABLE[(e-1)*4+2];case pr.H:return _e.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Rs.exports=_e});var _s=ae((zu,ks)=>{function As(){this.buffer=[],this.length=0}As.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};ks.exports=As});var $s=ae((ef,Is)=>{var Mc=hs(),et=Ts(),Dc=oo(),Ps=bs(),Os=_s();function Pe(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Pe.prototype={addData:function(e){var n=new Mc(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=Ps.getRSBlocks(e,this.errorCorrectLevel),r=new Os,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),et.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][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,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Pe.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=et.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),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 n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=et.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];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 n=et.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=et.getBCHTypeInfo(r),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,n){for(var r=-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=et.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Pe.PAD0=236;Pe.PAD1=17;Pe.createData=function(e,n,r){for(var o=Ps.getRSBlocks(e,n),t=new Os,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),et.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(Pe.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Pe.PAD1,8);return Pe.createBytes(t,o)};Pe.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[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+r];r+=c;var f=et.getErrorCorrectPolynomial(l),p=new Dc(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 w=m+d.getLength()-s[a].length;s[a][m]=w>=0?d.get(w):0}}for(var x=0,P=0;P<n.length;P++)x+=n[P].totalCount;for(var A=new Array(x),T=0,y=0;y<o;y++)for(var R=0;R<n.length;R++)y<i[R].length&&(A[T++]=i[R][y]);for(var S=0;S<t;S++)for(var _=0;_<n.length;_++)S<s[_].length&&(A[T++]=s[_][S]);return A};Is.exports=Pe});var Ns=ae((tf,Ls)=>{var Uc=$s(),Cs=io(),Fc="\x1B[40m \x1B[0m",dr="\x1B[47m \x1B[0m",Bc=function(e){return e?Fc:dr},so=function(e){return{times:function(n){return new Array(n).join(e)}}},Hc=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};Ls.exports={error:Cs.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new Uc(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Hc(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=so(u.BLACK_WHITE).times(a+3),p=so(u.WHITE_BLACK).times(a+3);t+=f+`
8
+ `;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+`
9
9
  `}l||(t+=p)}else{var w=so(dr).times(o.getModuleCount()+3);t+=w+`
10
10
  `,o.modules.forEach(function(x){t+=dr,t+=x.map(Bc).join(""),t+=dr+`
11
- `}),t+=w}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=$s[e]||this.error}}});var Ln=require("fs"),zt=require("path"),So=require("url"),Eo=b(require("os"),1);var Cn=b(require("dns"),1),Ie=b(require("path"),1),fo=b(require("os"),1),ne="9remote",yr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ne}/latest`,$e=`${ne}@latest`,He=Ie.default.join(fo.default.homedir(),".9remote"),re={ROOT:He,LOGS:Ie.default.join(He,"logs"),STATE:Ie.default.join(He,"state"),CONFIG:Ie.default.join(He,"config"),BIN:Ie.default.join(He,"bin"),PIDS:Ie.default.join(He,"pids"),BUFFERS:Ie.default.join(He,"buffers"),DAEMON:Ie.default.join(He,"daemon")},po=new Cn.default.promises.Resolver;po.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var gr=Cn.default.lookup,ia=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;Cn.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||ia.test(e))return gr(e,n,r);po.resolve4(e).then(o=>{if(!o?.length)return gr(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>gr(e,n,r))};var _=2208,mo=process.execPath,ho=(e=process.env)=>process.versions.electron?{...e,ELECTRON_RUN_AS_NODE:"1"}:{...e};var uo=5173;var cl=[`http://localhost:${_}`,`http://127.0.0.1:${_}`,`http://localhost:${uo}`,`http://127.0.0.1:${uo}`],Zt={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},go=60,F={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},yo={showTunnelUrlInMenu:!1};var wo={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var vo={checkIntervalMs:3e4,requestTimeoutMs:5e3},ce={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},tunnelRateLimit:{strategy:"exp",baseMs:6e4,maxMs:9e5},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},sa={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 j(e,n={}){return fetch(e,{...n,headers:{...sa,...n.headers}})}var aa=(0,zt.dirname)((0,So.fileURLToPath)(__importMetaUrl)),ca=[(0,zt.join)(Eo.default.homedir(),".9remote",".env"),(0,zt.join)(aa,"..",".env")];function la(e){for(let n of e.split(`
12
- `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of ca)if((0,Ln.existsSync)(e))try{la((0,Ln.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(wo))process.env[e]||(process.env[e]=n);var Tr=b(require("path"),1),_o=b(require("fs"),1),Po=require("url");var xo=b(To(),1),vr=b(require("crypto"),1),{machineIdSync:ua}=xo.default;async function vt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=ua();return vr.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),vr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var Ro=b(require("crypto"),1),fa=process.env.API_KEY_SECRET||"9remote-api-key-secret";function pa(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function da(e,n){return Ro.default.createHmac("sha256",fa).update(e+n).digest("hex").slice(0,6)}function St(e){let n=e.slice(0,8),r=pa(),o=da(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function Nn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var se=b(require("fs"),1),tn=b(require("path"),1);var ml=re.STATE,Sr=tn.default.join(re.STATE,"state.json"),Er=tn.default.join(re.ROOT,"keys.json"),Mn=tn.default.join(re.STATE,"cmd.json"),hl=tn.default.join(re.STATE,"settings.json");function Dn(){for(let e of[re.ROOT,re.STATE])se.default.existsSync(e)||se.default.mkdirSync(e,{recursive:!0})}function Fn(e){try{Dn(),se.default.writeFileSync(Sr,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function bo(){try{se.default.existsSync(Sr)&&se.default.unlinkSync(Sr)}catch{}}function Un(){try{return Dn(),se.default.existsSync(Er)?JSON.parse(se.default.readFileSync(Er,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function Et(e){try{Dn(),se.default.writeFileSync(Mn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function Ao(){try{if(!se.default.existsSync(Mn))return null;let e=JSON.parse(se.default.readFileSync(Mn,"utf8"));return se.default.unlinkSync(Mn),e.cmd}catch{return null}}function ot(e,n,r="Default"){try{Dn();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return se.default.writeFileSync(Er,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function ko(){return process.env.CODESPACES==="true"}var ma=Tr.default.dirname((0,Po.fileURLToPath)(__importMetaUrl));async function je(){let e=await vt();if(ko()&&process.env.NREMOTE_API_KEY)return ot(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Un();if(!n.key){let{key:r}=St(e);n=ot(e,r,"Default")}return n}function Se(){return"2.3.2"}var Ee=b(require("fs"),1),xr=b(require("path"),1);var Hn=re.LOGS,nn=xr.default.join(Hn,Zt.fileName),jn=xr.default.join(Hn,Zt.rotatedName),Oo=!1,Io=null;function ha(){Ee.default.existsSync(Hn)||Ee.default.mkdirSync(Hn,{recursive:!0})}function ga(){try{if(Ee.default.statSync(nn).size<Zt.maxBytes)return;try{Ee.default.rmSync(jn,{force:!0})}catch{}Ee.default.renameSync(nn,jn)}catch{}}function ya(){try{let e=Ee.default.statSync(jn);Date.now()-e.mtimeMs>Zt.cleanupAfterDays*864e5&&Ee.default.rmSync(jn,{force:!0})}catch{}}function Rr(e){try{ga(),Ee.default.appendFileSync(nn,e+`
13
- `)}catch{}}function Bn(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function $o(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var wa=/\x1b\[[0-9;]*m/g,va=/https?:\/\/[^\s]+/g;function Sa(e){return String(e).replace(wa,"").replace(va,"").replace(/\s+$/g,"")}function Tt(e,n,r){let o=Sa(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${$o()} [${t}] ${o}`;if(Rr(i),Io)try{Io(i)}catch{}}function Ea(){process.on("uncaughtException",e=>Tt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);Tt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>Rr(`${$o()} [exit] code=${e} pid=${process.pid}`))}function Co(){Oo||(Oo=!0,ha(),ya(),Rr(`
14
- === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),Ea())}function Lo(e=60){try{return Ee.default.readFileSync(nn,"utf8").split(`
15
- `).filter(Boolean).slice(-e)}catch{return[]}}var Ta=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function q(e){return{debug:(...n)=>{Ta&&Tt(e,"debug",Bn(n))},info:(...n)=>Tt(e,"info",Bn(n)),warn:(...n)=>Tt(e,"warn",Bn(n)),error:(...n)=>Tt(e,"error",Bn(n))}}var rn=nn;var No=(e=0)=>n=>`\x1B[${n+e}m`,Mo=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,Do=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,N={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]}},bl=Object.keys(N.modifier),xa=Object.keys(N.color),Ra=Object.keys(N.bgColor),Al=[...xa,...Ra];function ba(){let e=new Map;for(let[n,r]of Object.entries(N)){for(let[o,t]of Object.entries(r))N[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=N[o],e.set(t[0],t[1]);Object.defineProperty(N,n,{value:r,enumerable:!1})}return Object.defineProperty(N,"codes",{value:e,enumerable:!1}),N.color.close="\x1B[39m",N.bgColor.close="\x1B[49m",N.color.ansi=No(),N.color.ansi256=Mo(),N.color.ansi16m=Do(),N.bgColor.ansi=No(10),N.bgColor.ansi256=Mo(10),N.bgColor.ansi16m=Do(10),Object.defineProperties(N,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;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:n=>N.rgbToAnsi256(...N.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>N.ansi256ToAnsi(N.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>N.ansi256ToAnsi(N.hexToAnsi256(n)),enumerable:!1}}),N}var Aa=ba(),he=Aa;var Gn=b(require("node:process"),1),Uo=b(require("node:os"),1),br=b(require("node:tty"),1);function le(e,n=globalThis.Deno?globalThis.Deno.args:Gn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:M}=Gn.default,Kn;le("no-color")||le("no-colors")||le("color=false")||le("color=never")?Kn=0:(le("color")||le("colors")||le("color=true")||le("color=always"))&&(Kn=1);function ka(){if("FORCE_COLOR"in M)return M.FORCE_COLOR==="true"?1:M.FORCE_COLOR==="false"?0:M.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(M.FORCE_COLOR,10),3)}function _a(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Pa(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=ka();o!==void 0&&(Kn=o);let t=r?Kn:o;if(t===0)return 0;if(r){if(le("color=16m")||le("color=full")||le("color=truecolor"))return 3;if(le("color=256"))return 2}if("TF_BUILD"in M&&"AGENT_NAME"in M)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(M.TERM==="dumb")return i;if(Gn.default.platform==="win32"){let s=Uo.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in M)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in M)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in M)||M.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in M)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(M.TEAMCITY_VERSION)?1:0;if(M.COLORTERM==="truecolor"||M.TERM==="xterm-kitty"||M.TERM==="xterm-ghostty"||M.TERM==="wezterm")return 3;if("TERM_PROGRAM"in M){let s=Number.parseInt((M.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(M.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(M.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(M.TERM)||"COLORTERM"in M?1:i}function Fo(e,n={}){let r=Pa(e,{streamIsTTY:e&&e.isTTY,...n});return _a(r)}var Oa={stdout:Fo({isTTY:br.default.isatty(1)}),stderr:Fo({isTTY:br.default.isatty(2)})},Bo=Oa;function Ho(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function jo(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
11
+ `}),t+=w}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=Cs[e]||this.error}}});var Nn=require("fs"),en=require("path"),So=require("url"),To=k(require("os"),1);var Ln=k(require("dns"),1),Ie=k(require("path"),1),po=k(require("os"),1),ne="9remote",yr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ne}/latest`,$e=`${ne}@latest`,je=Ie.default.join(po.default.homedir(),".9remote"),re={ROOT:je,LOGS:Ie.default.join(je,"logs"),STATE:Ie.default.join(je,"state"),CONFIG:Ie.default.join(je,"config"),BIN:Ie.default.join(je,"bin"),PIDS:Ie.default.join(je,"pids"),BUFFERS:Ie.default.join(je,"buffers"),DAEMON:Ie.default.join(je,"daemon")},mo=new Ln.default.promises.Resolver;mo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var gr=Ln.default.lookup,ia=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;Ln.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||ia.test(e))return gr(e,n,r);mo.resolve4(e).then(o=>{if(!o?.length)return gr(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>gr(e,n,r))};var O=2208,ho=process.execPath,go=(e=process.env)=>process.versions.electron?{...e,ELECTRON_RUN_AS_NODE:"1"}:{...e};var fo=5173;var cl=[`http://localhost:${O}`,`http://127.0.0.1:${O}`,`http://localhost:${fo}`,`http://127.0.0.1:${fo}`],zt={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},yo=60,$={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},wo={showTunnelUrlInMenu:!1};var vo={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var Eo={checkIntervalMs:3e4,requestTimeoutMs:5e3},ce={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},tunnelRateLimit:{strategy:"exp",baseMs:6e4,maxMs:9e5},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},sa={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 K(e,n={}){return fetch(e,{...n,headers:{...sa,...n.headers}})}var aa=(0,en.dirname)((0,So.fileURLToPath)(__importMetaUrl)),ca=[(0,en.join)(To.default.homedir(),".9remote",".env"),(0,en.join)(aa,"..",".env")];function la(e){for(let n of e.split(`
12
+ `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of ca)if((0,Nn.existsSync)(e))try{la((0,Nn.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(vo))process.env[e]||(process.env[e]=n);var Tr=k(require("path"),1),Po=k(require("fs"),1),Oo=require("url");var Ro=k(xo(),1),vr=k(require("crypto"),1),{machineIdSync:ua}=Ro.default;async function Et(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=ua();return vr.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),vr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var bo=k(require("crypto"),1),fa=process.env.API_KEY_SECRET||"9remote-api-key-secret";function pa(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function da(e,n){return bo.default.createHmac("sha256",fa).update(e+n).digest("hex").slice(0,6)}function St(e){let n=e.slice(0,8),r=pa(),o=da(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function Mn(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var se=k(require("fs"),1),nn=k(require("path"),1);var ml=re.STATE,Er=nn.default.join(re.STATE,"state.json"),Sr=nn.default.join(re.ROOT,"keys.json"),Dn=nn.default.join(re.STATE,"cmd.json"),hl=nn.default.join(re.STATE,"settings.json");function Un(){for(let e of[re.ROOT,re.STATE])se.default.existsSync(e)||se.default.mkdirSync(e,{recursive:!0})}function Fn(e){try{Un(),se.default.writeFileSync(Er,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function Ao(){try{se.default.existsSync(Er)&&se.default.unlinkSync(Er)}catch{}}function Bn(){try{return Un(),se.default.existsSync(Sr)?JSON.parse(se.default.readFileSync(Sr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function Tt(e){try{Un(),se.default.writeFileSync(Dn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function ko(){try{if(!se.default.existsSync(Dn))return null;let e=JSON.parse(se.default.readFileSync(Dn,"utf8"));return se.default.unlinkSync(Dn),e.cmd}catch{return null}}function it(e,n,r="Default"){try{Un();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return se.default.writeFileSync(Sr,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function _o(){return process.env.CODESPACES==="true"}var ma=Tr.default.dirname((0,Oo.fileURLToPath)(__importMetaUrl));async function Ke(){let e=await Et();if(_o()&&process.env.NREMOTE_API_KEY)return it(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Bn();if(!n.key){let{key:r}=St(e);n=it(e,r,"Default")}return n}function Ee(){return"2.3.5"}var Se=k(require("fs"),1),xr=k(require("path"),1);var jn=re.LOGS,rn=xr.default.join(jn,zt.fileName),Kn=xr.default.join(jn,zt.rotatedName),Io=!1,$o=null;function ha(){Se.default.existsSync(jn)||Se.default.mkdirSync(jn,{recursive:!0})}function ga(){try{if(Se.default.statSync(rn).size<zt.maxBytes)return;try{Se.default.rmSync(Kn,{force:!0})}catch{}Se.default.renameSync(rn,Kn)}catch{}}function ya(){try{let e=Se.default.statSync(Kn);Date.now()-e.mtimeMs>zt.cleanupAfterDays*864e5&&Se.default.rmSync(Kn,{force:!0})}catch{}}function Rr(e){try{ga(),Se.default.appendFileSync(rn,e+`
13
+ `)}catch{}}function Hn(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function Co(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var wa=/\x1b\[[0-9;]*m/g,va=/https?:\/\/[^\s]+/g;function Ea(e){return String(e).replace(wa,"").replace(va,"").replace(/\s+$/g,"")}function xt(e,n,r){let o=Ea(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${Co()} [${t}] ${o}`;if(Rr(i),$o)try{$o(i)}catch{}}function Sa(){process.on("uncaughtException",e=>xt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);xt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>Rr(`${Co()} [exit] code=${e} pid=${process.pid}`))}function Lo(){Io||(Io=!0,ha(),ya(),Rr(`
14
+ === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),Sa())}function No(e=60){try{return Se.default.readFileSync(rn,"utf8").split(`
15
+ `).filter(Boolean).slice(-e)}catch{return[]}}var Ta=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function J(e){return{debug:(...n)=>{Ta&&xt(e,"debug",Hn(n))},info:(...n)=>xt(e,"info",Hn(n)),warn:(...n)=>xt(e,"warn",Hn(n)),error:(...n)=>xt(e,"error",Hn(n))}}var on=rn;var Mo=(e=0)=>n=>`\x1B[${n+e}m`,Do=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,Uo=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,N={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]}},bl=Object.keys(N.modifier),xa=Object.keys(N.color),Ra=Object.keys(N.bgColor),Al=[...xa,...Ra];function ba(){let e=new Map;for(let[n,r]of Object.entries(N)){for(let[o,t]of Object.entries(r))N[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=N[o],e.set(t[0],t[1]);Object.defineProperty(N,n,{value:r,enumerable:!1})}return Object.defineProperty(N,"codes",{value:e,enumerable:!1}),N.color.close="\x1B[39m",N.bgColor.close="\x1B[49m",N.color.ansi=Mo(),N.color.ansi256=Do(),N.color.ansi16m=Uo(),N.bgColor.ansi=Mo(10),N.bgColor.ansi256=Do(10),N.bgColor.ansi16m=Uo(10),Object.defineProperties(N,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;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:n=>N.rgbToAnsi256(...N.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>N.ansi256ToAnsi(N.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>N.ansi256ToAnsi(N.hexToAnsi256(n)),enumerable:!1}}),N}var Aa=ba(),he=Aa;var Wn=k(require("node:process"),1),Bo=k(require("node:os"),1),br=k(require("node:tty"),1);function le(e,n=globalThis.Deno?globalThis.Deno.args:Wn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:M}=Wn.default,Gn;le("no-color")||le("no-colors")||le("color=false")||le("color=never")?Gn=0:(le("color")||le("colors")||le("color=true")||le("color=always"))&&(Gn=1);function ka(){if("FORCE_COLOR"in M)return M.FORCE_COLOR==="true"?1:M.FORCE_COLOR==="false"?0:M.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(M.FORCE_COLOR,10),3)}function _a(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Pa(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=ka();o!==void 0&&(Gn=o);let t=r?Gn:o;if(t===0)return 0;if(r){if(le("color=16m")||le("color=full")||le("color=truecolor"))return 3;if(le("color=256"))return 2}if("TF_BUILD"in M&&"AGENT_NAME"in M)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(M.TERM==="dumb")return i;if(Wn.default.platform==="win32"){let s=Bo.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in M)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in M)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in M)||M.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in M)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(M.TEAMCITY_VERSION)?1:0;if(M.COLORTERM==="truecolor"||M.TERM==="xterm-kitty"||M.TERM==="xterm-ghostty"||M.TERM==="wezterm")return 3;if("TERM_PROGRAM"in M){let s=Number.parseInt((M.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(M.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(M.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(M.TERM)||"COLORTERM"in M?1:i}function Fo(e,n={}){let r=Pa(e,{streamIsTTY:e&&e.isTTY,...n});return _a(r)}var Oa={stdout:Fo({isTTY:br.default.isatty(1)}),stderr:Fo({isTTY:br.default.isatty(2)})},Ho=Oa;function jo(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function Ko(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
16
16
  `:`
17
17
  `)+r,t=o+1,o=e.indexOf(`
18
- `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:Ko,stderr:Go}=Bo,Ar=Symbol("GENERATOR"),xt=Symbol("STYLER"),on=Symbol("IS_EMPTY"),Wo=["ansi","ansi","ansi256","ansi16m"],Rt=Object.create(null),Ia=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Ko?Ko.level:0;e.level=n.level===void 0?r:n.level};var $a=e=>{let n=(...r)=>r.join(" ");return Ia(n,e),Object.setPrototypeOf(n,sn.prototype),n};function sn(e){return $a(e)}Object.setPrototypeOf(sn.prototype,Function.prototype);for(let[e,n]of Object.entries(he))Rt[e]={get(){let r=Wn(this,_r(n.open,n.close,this[xt]),this[on]);return Object.defineProperty(this,e,{value:r}),r}};Rt.visible={get(){let e=Wn(this,this[xt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var kr=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?he[r].ansi16m(...o):n==="ansi256"?he[r].ansi256(he.rgbToAnsi256(...o)):he[r].ansi(he.rgbToAnsi(...o)):e==="hex"?kr("rgb",n,r,...he.hexToRgb(...o)):he[r][e](...o),Ca=["rgb","hex","ansi256"];for(let e of Ca){Rt[e]={get(){let{level:r}=this;return function(...o){let t=_r(kr(e,Wo[r],"color",...o),he.color.close,this[xt]);return Wn(this,t,this[on])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);Rt[n]={get(){let{level:r}=this;return function(...o){let t=_r(kr(e,Wo[r],"bgColor",...o),he.bgColor.close,this[xt]);return Wn(this,t,this[on])}}}}var La=Object.defineProperties(()=>{},{...Rt,level:{enumerable:!0,get(){return this[Ar].level},set(e){this[Ar].level=e}}}),_r=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},Wn=(e,n,r)=>{let o=(...t)=>Na(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,La),o[Ar]=e,o[xt]=n,o[on]=r,o},Na=(e,n)=>{if(e.level<=0||!n)return e[on]?"":n;let r=e[xt];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=Ho(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
19
- `);return i!==-1&&(n=jo(n,t,o,i)),o+n+t};Object.defineProperties(sn.prototype,Rt);var Ma=sn(),Cl=sn({level:Go?Go.level:0});var m=Ma;var K=require("fs"),ai=require("url"),ln=require("child_process"),Re=b(require("path"),1),kt=b(require("os"),1);var bt=b(require("fs"),1),Pr=b(require("path"),1),Vo=b(require("os"),1),Yo=require("child_process"),Vn=Pr.default.join(Vo.default.homedir(),".9remote","pids");function Da(){try{bt.default.existsSync(Vn)||bt.default.mkdirSync(Vn,{recursive:!0})}catch{}}function Or(e){return Pr.default.join(Vn,`${e}.pid`)}function Ke(e,n){if(n)try{Da(),bt.default.writeFileSync(Or(e),String(n))}catch{}}function an(e){try{let n=bt.default.readFileSync(Or(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function Te(e){try{bt.default.unlinkSync(Or(e))}catch{}}function Ir(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Fa(e){let n=an(e);if(Te(e),!n)return!1;try{process.platform==="win32"?(0,Yo.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var Ua=["cloudflared","agent"];function qo(){for(let e of Ua)Fa(e)}function Jo(){return Vn}var at=require("child_process"),$=require("fs"),it=require("path"),Cr=b(require("os"),1),st=b(require("path"),1),Xo=require("url");var qn=(0,it.join)(re.LOGS,"autostart.log"),Yn="cc.9remote.agent",Jn="9Remote",Qn=["--tray","--skip-update","--start"],cn=Cr.default.homedir(),Qo=st.default.dirname((0,Xo.fileURLToPath)(__importMetaUrl)),J={darwin:(0,it.join)(cn,"Library","LaunchAgents",`${Yn}.plist`),linux:(0,it.join)(cn,".config","autostart",`${Yn}.desktop`),linuxSystemd:(0,it.join)(cn,".config","systemd","user",`${Yn}.service`),win:(0,it.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${Jn}.vbs`)};function Ge(){for(let e=Qo,n=null;e!==n;n=e,e=st.default.dirname(e)){let r=st.default.join(e,"package.json");if((0,$.existsSync)(r)){try{let o=JSON.parse((0,$.readFileSync)(r,"utf8"));if(o.name!==ne)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ne];if(t){let i=st.default.resolve(e,t);if((0,$.existsSync)(i))return i}}catch{}break}}return process.argv[1]||st.default.resolve(Qo,"..","index.js")}function xe(){return process.execPath}function Zo(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function zo(e){let n=xe(),r=Ge();if(process.platform==="win32"){let t=e.join(" "),i=(0,it.join)(Cr.default.tmpdir(),`${ne}-launch.vbs`);return(0,$.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
20
- `),(0,at.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,at.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function ei(){let e=st.default.dirname(xe()),n=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return n.includes(e)||n.unshift(e),n.join(":")}function $r(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ba(e,n){let r=[e,n,...Qn].map(o=>` <string>${$r(o)}</string>`).join(`
18
+ `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:Go,stderr:Wo}=Ho,Ar=Symbol("GENERATOR"),Rt=Symbol("STYLER"),sn=Symbol("IS_EMPTY"),Vo=["ansi","ansi","ansi256","ansi16m"],bt=Object.create(null),Ia=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Go?Go.level:0;e.level=n.level===void 0?r:n.level};var $a=e=>{let n=(...r)=>r.join(" ");return Ia(n,e),Object.setPrototypeOf(n,an.prototype),n};function an(e){return $a(e)}Object.setPrototypeOf(an.prototype,Function.prototype);for(let[e,n]of Object.entries(he))bt[e]={get(){let r=Vn(this,_r(n.open,n.close,this[Rt]),this[sn]);return Object.defineProperty(this,e,{value:r}),r}};bt.visible={get(){let e=Vn(this,this[Rt],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var kr=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?he[r].ansi16m(...o):n==="ansi256"?he[r].ansi256(he.rgbToAnsi256(...o)):he[r].ansi(he.rgbToAnsi(...o)):e==="hex"?kr("rgb",n,r,...he.hexToRgb(...o)):he[r][e](...o),Ca=["rgb","hex","ansi256"];for(let e of Ca){bt[e]={get(){let{level:r}=this;return function(...o){let t=_r(kr(e,Vo[r],"color",...o),he.color.close,this[Rt]);return Vn(this,t,this[sn])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);bt[n]={get(){let{level:r}=this;return function(...o){let t=_r(kr(e,Vo[r],"bgColor",...o),he.bgColor.close,this[Rt]);return Vn(this,t,this[sn])}}}}var La=Object.defineProperties(()=>{},{...bt,level:{enumerable:!0,get(){return this[Ar].level},set(e){this[Ar].level=e}}}),_r=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},Vn=(e,n,r)=>{let o=(...t)=>Na(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,La),o[Ar]=e,o[Rt]=n,o[sn]=r,o},Na=(e,n)=>{if(e.level<=0||!n)return e[sn]?"":n;let r=e[Rt];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=jo(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
19
+ `);return i!==-1&&(n=Ko(n,t,o,i)),o+n+t};Object.defineProperties(an.prototype,bt);var Ma=an(),Cl=an({level:Wo?Wo.level:0});var h=Ma;var G=require("fs"),ci=require("url"),un=require("child_process"),Re=k(require("path"),1),_t=k(require("os"),1);var At=k(require("fs"),1),Pr=k(require("path"),1),Yo=k(require("os"),1),qo=require("child_process"),Yn=Pr.default.join(Yo.default.homedir(),".9remote","pids");function Da(){try{At.default.existsSync(Yn)||At.default.mkdirSync(Yn,{recursive:!0})}catch{}}function Or(e){return Pr.default.join(Yn,`${e}.pid`)}function Ge(e,n){if(n)try{Da(),At.default.writeFileSync(Or(e),String(n))}catch{}}function cn(e){try{let n=At.default.readFileSync(Or(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function Te(e){try{At.default.unlinkSync(Or(e))}catch{}}function Ir(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Ua(e){let n=cn(e);if(Te(e),!n)return!1;try{process.platform==="win32"?(0,qo.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var Fa=["cloudflared","agent"];function Jo(){for(let e of Fa)Ua(e)}function Qo(){return Yn}var ct=require("child_process"),C=require("fs"),st=require("path"),Cr=k(require("os"),1),at=k(require("path"),1),Zo=require("url");var Jn=(0,st.join)(re.LOGS,"autostart.log"),qn="cc.9remote.agent",Qn="9Remote",Xn=["--tray","--skip-update","--start"],ln=Cr.default.homedir(),Xo=at.default.dirname((0,Zo.fileURLToPath)(__importMetaUrl)),Q={darwin:(0,st.join)(ln,"Library","LaunchAgents",`${qn}.plist`),linux:(0,st.join)(ln,".config","autostart",`${qn}.desktop`),linuxSystemd:(0,st.join)(ln,".config","systemd","user",`${qn}.service`),win:(0,st.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${Qn}.vbs`)};function We(){for(let e=Xo,n=null;e!==n;n=e,e=at.default.dirname(e)){let r=at.default.join(e,"package.json");if((0,C.existsSync)(r)){try{let o=JSON.parse((0,C.readFileSync)(r,"utf8"));if(o.name!==ne)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ne];if(t){let i=at.default.resolve(e,t);if((0,C.existsSync)(i))return i}}catch{}break}}return process.argv[1]||at.default.resolve(Xo,"..","index.js")}function xe(){return process.execPath}function zo(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function ei(e){let n=xe(),r=We();if(process.platform==="win32"){let t=e.join(" "),i=(0,st.join)(Cr.default.tmpdir(),`${ne}-launch.vbs`);return(0,C.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
20
+ `),(0,ct.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,ct.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function ti(){let e=at.default.dirname(xe()),n=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return n.includes(e)||n.unshift(e),n.join(":")}function $r(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Ba(e,n){let r=[e,n,...Xn].map(o=>` <string>${$r(o)}</string>`).join(`
21
21
  `);return`<?xml version="1.0" encoding="UTF-8"?>
22
22
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
23
23
  <plist version="1.0">
24
24
  <dict>
25
25
  <key>Label</key>
26
- <string>${Yn}</string>
26
+ <string>${qn}</string>
27
27
  <key>ProgramArguments</key>
28
28
  <array>
29
29
  ${r}
@@ -35,43 +35,43 @@ ${r}
35
35
  <key>EnvironmentVariables</key>
36
36
  <dict>
37
37
  <key>PATH</key>
38
- <string>${$r(ei())}</string>
38
+ <string>${$r(ti())}</string>
39
39
  <key>HOME</key>
40
- <string>${$r(cn)}</string>
40
+ <string>${$r(ln)}</string>
41
41
  </dict>
42
42
  <key>StandardOutPath</key>
43
- <string>${qn}</string>
43
+ <string>${Jn}</string>
44
44
  <key>StandardErrorPath</key>
45
- <string>${qn}</string>
45
+ <string>${Jn}</string>
46
46
  </dict>
47
47
  </plist>
48
- `}function Ha(){return(0,$.existsSync)(J.darwin)}function ja(){let e=Qn.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
49
- WshShell.Run """${xe()}"" ""${Ge()}"" ${e}", 0, False
50
- `}function Ka(){try{(0,at.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",Jn,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function Ga(){return(0,$.existsSync)(J.win)}function Wa(){let e=`${xe()} ${Ge()} ${Qn.join(" ")}`;return`[Desktop Entry]
48
+ `}function Ha(){return(0,C.existsSync)(Q.darwin)}function ja(){let e=Xn.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
49
+ WshShell.Run """${xe()}"" ""${We()}"" ${e}", 0, False
50
+ `}function Ka(){try{(0,ct.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",Qn,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function Ga(){return(0,C.existsSync)(Q.win)}function Wa(){let e=`${xe()} ${We()} ${Xn.join(" ")}`;return`[Desktop Entry]
51
51
  Type=Application
52
- Name=${Jn}
52
+ Name=${Qn}
53
53
  Exec=${e}
54
54
  X-GNOME-Autostart-enabled=true
55
55
  NoDisplay=false
56
56
  Terminal=false
57
- `}function Va(){let e=Qn.map(n=>`'${n}'`).join(" ");return`[Unit]
58
- Description=${Jn} Agent
57
+ `}function Va(){let e=Xn.map(n=>`'${n}'`).join(" ");return`[Unit]
58
+ Description=${Qn} Agent
59
59
  After=network-online.target
60
60
  Wants=network-online.target
61
61
 
62
62
  [Service]
63
63
  Type=simple
64
- ExecStart=${xe()} ${Ge()} ${e}
64
+ ExecStart=${xe()} ${We()} ${e}
65
65
  Restart=always
66
66
  RestartSec=10
67
- Environment=PATH=${ei()}
68
- Environment=HOME=${cn}
69
- StandardOutput=append:${qn}
70
- StandardError=append:${qn}
67
+ Environment=PATH=${ti()}
68
+ Environment=HOME=${ln}
69
+ StandardOutput=append:${Jn}
70
+ StandardError=append:${Jn}
71
71
 
72
72
  [Install]
73
73
  WantedBy=default.target
74
- `}function Ya(e){try{return(0,at.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function qa(){return(0,$.existsSync)(J.linux)||(0,$.existsSync)(J.linuxSystemd)}async function Ja(){try{if(process.platform==="darwin")return Ha();if(process.platform==="win32")return await Ga();if(process.platform==="linux")return qa()}catch{}return!1}async function ti(){try{if(process.platform==="win32"&&Ka(),!await Ja())return!1;if(process.platform==="darwin"){let e=Ba(xe(),Ge());return((0,$.existsSync)(J.darwin)?(0,$.readFileSync)(J.darwin,"utf8"):"")===e?!1:((0,$.writeFileSync)(J.darwin,e),!0)}if(process.platform==="win32"){let e=ja();return((0,$.existsSync)(J.win)?(0,$.readFileSync)(J.win,"utf8"):"")===e?!1:((0,$.writeFileSync)(J.win,e),!0)}if(process.platform==="linux"){if((0,$.existsSync)(J.linuxSystemd)){let e=Va();return(0,$.readFileSync)(J.linuxSystemd,"utf8")===e?!1:((0,$.writeFileSync)(J.linuxSystemd,e),Ya(["daemon-reload"]),!0)}if((0,$.existsSync)(J.linux)){let e=Wa();return(0,$.readFileSync)(J.linux,"utf8")===e?!1:((0,$.writeFileSync)(J.linux,e),!0)}}}catch{}return!1}var Qa=process.env.NODE_ENV==="development";var D=process.env.NREMOTE_WORKER_URL||(Qa?"https://dev.9remote.cc":"https://9remote.cc"),ni=3e4,ri=500,Lr=300,ge={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},We={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},ue={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Ce={maxLogLines:200,headerWidth:44},At={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},oi=5e3,ii=2,si=3e4,fe={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Xa=Re.default.dirname((0,ai.fileURLToPath)(__importMetaUrl)),ci=3e3;var Zn=2208,Nr=Re.default.join(kt.default.homedir(),".9remote","cloudflared.pid");function Za(){try{qo()}catch{}try{if((0,K.existsSync)(Nr)){let e=parseInt((0,K.readFileSync)(Nr,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,K.unlinkSync)(Nr)}catch{}}}catch{}try{process.platform==="win32"?(0,ln.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Zn}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,ln.execSync)(`lsof -ti:${Zn} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function li(){return"2.3.2"}function ui(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function za(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,K.existsSync)("/.dockerenv")?"Docker":null}function zn(){Za()}async function fi(){try{let e=li();if(!e)return null;let n=await j(yr,{signal:AbortSignal.timeout(ci)});if(!n.ok)return null;let{version:r}=await n.json();return r&&ui(e,r)?{current:e,latest:r}:null}catch{return null}}var Xn=Re.default.join(re.STATE,At.lockFile);function ec(){try{if((0,K.existsSync)(Xn)){let{pid:e,ts:n}=JSON.parse((0,K.readFileSync)(Xn,"utf8")),r=Date.now()-n<At.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,K.writeFileSync)(Xn,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function tc(){try{let e=await j(yr,{signal:AbortSignal.timeout(ci)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function nc(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function rc(){let e=Ge(),n=Re.default.sep;for(let r of[`${n}lib${n}node_modules${n}`,`${n}node_modules${n}`]){let o=e.indexOf(r);if(o>0)return`--prefix "${e.slice(0,o)}"`}return""}function oc(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,K.existsSync)(e)?process.platform==="win32"?`"${xe()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${xe()}" "${e}"`:"npm"}function ic({currentVersion:e,latest:n,agentPid:r}){let o=Jo(),t=nc(),i=xe(),s=Zo(),a=Ge(),c=Xn,l=`--prefer-online --no-audit --no-fund ${t} ${rc()}`.trim(),u=oc();if(process.platform==="win32"){let d=Re.default.join(kt.default.tmpdir(),`${ne}-restart.vbs`),h=`@echo off
74
+ `}function Ya(e){try{return(0,ct.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function qa(){return(0,C.existsSync)(Q.linux)||(0,C.existsSync)(Q.linuxSystemd)}async function Ja(){try{if(process.platform==="darwin")return Ha();if(process.platform==="win32")return await Ga();if(process.platform==="linux")return qa()}catch{}return!1}async function ni(){try{if(process.platform==="win32"&&Ka(),!await Ja())return!1;if(process.platform==="darwin"){let e=Ba(xe(),We());return((0,C.existsSync)(Q.darwin)?(0,C.readFileSync)(Q.darwin,"utf8"):"")===e?!1:((0,C.writeFileSync)(Q.darwin,e),!0)}if(process.platform==="win32"){let e=ja();return((0,C.existsSync)(Q.win)?(0,C.readFileSync)(Q.win,"utf8"):"")===e?!1:((0,C.writeFileSync)(Q.win,e),!0)}if(process.platform==="linux"){if((0,C.existsSync)(Q.linuxSystemd)){let e=Va();return(0,C.readFileSync)(Q.linuxSystemd,"utf8")===e?!1:((0,C.writeFileSync)(Q.linuxSystemd,e),Ya(["daemon-reload"]),!0)}if((0,C.existsSync)(Q.linux)){let e=Wa();return(0,C.readFileSync)(Q.linux,"utf8")===e?!1:((0,C.writeFileSync)(Q.linux,e),!0)}}}catch{}return!1}var Qa=process.env.NODE_ENV==="development";var D=process.env.NREMOTE_WORKER_URL||(Qa?"https://dev.9remote.cc":"https://9remote.cc"),ri=3e4,oi=500,Lr=300,ge={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Ve={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},ue={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Ce={maxLogLines:200,headerWidth:44},kt={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},ii=5e3,si=2,ai=3e4,fe={orange:h.rgb(230,138,110),orangeDim:h.rgb(200,120,95)};var Xa=Re.default.dirname((0,ci.fileURLToPath)(__importMetaUrl)),li=3e3;var zn=2208,Nr=Re.default.join(_t.default.homedir(),".9remote","cloudflared.pid");function Za(){try{Jo()}catch{}try{if((0,G.existsSync)(Nr)){let e=parseInt((0,G.readFileSync)(Nr,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,G.unlinkSync)(Nr)}catch{}}}catch{}try{process.platform==="win32"?(0,un.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${zn}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,un.execSync)(`lsof -ti:${zn} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function ui(){return"2.3.5"}function fi(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function za(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,G.existsSync)("/.dockerenv")?"Docker":null}function er(){Za()}async function pi(){try{let e=ui();if(!e)return null;let n=await K(yr,{signal:AbortSignal.timeout(li)});if(!n.ok)return null;let{version:r}=await n.json();return r&&fi(e,r)?{current:e,latest:r}:null}catch{return null}}var Zn=Re.default.join(re.STATE,kt.lockFile);function ec(){try{if((0,G.existsSync)(Zn)){let{pid:e,ts:n}=JSON.parse((0,G.readFileSync)(Zn,"utf8")),r=Date.now()-n<kt.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,G.writeFileSync)(Zn,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function tc(){try{let e=await K(yr,{signal:AbortSignal.timeout(li)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function nc(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function rc(){let e=We(),n=Re.default.sep;for(let r of[`${n}lib${n}node_modules${n}`,`${n}node_modules${n}`]){let o=e.indexOf(r);if(o>0)return`--prefix "${e.slice(0,o)}"`}return""}function oc(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,G.existsSync)(e)?process.platform==="win32"?`"${xe()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${xe()}" "${e}"`:"npm"}function ic({currentVersion:e,latest:n,agentPid:r}){let o=Qo(),t=nc(),i=xe(),s=zo(),a=We(),c=Zn,l=`--prefer-online --no-audit --no-fund ${t} ${rc()}`.trim(),u=oc();if(process.platform==="win32"){let d=Re.default.join(_t.default.tmpdir(),`${ne}-restart.vbs`),m=`@echo off
75
75
  setlocal EnableDelayedExpansion
76
76
  set "NODE=${i}"
77
77
  set "CLI=${a}"
@@ -90,7 +90,7 @@ for %%N in (cloudflared agent) do (
90
90
  del /f /q "${o}\\%%N.pid" >nul 2>&1
91
91
  )
92
92
  )
93
- for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${Zn}') do taskkill /F /PID %%a >nul 2>&1
93
+ for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${zn}') do taskkill /F /PID %%a >nul 2>&1
94
94
  timeout /t 3 /nobreak >nul
95
95
 
96
96
  set ATTEMPT=0
@@ -98,7 +98,7 @@ set ATTEMPT=0
98
98
  set /a ATTEMPT+=1
99
99
  call ${u} install -g ${$e} ${l} >nul 2>&1
100
100
  if !ERRORLEVEL! EQU 0 goto verify
101
- if !ATTEMPT! GEQ ${At.maxRetry} (
101
+ if !ATTEMPT! GEQ ${kt.maxRetry} (
102
102
  call ${u} install -g ${$e} ${l} --omit=optional >nul 2>&1
103
103
  goto verify
104
104
  )
@@ -124,8 +124,8 @@ del /f /q "${c}" >nul 2>&1
124
124
 
125
125
  wscript "${d}"
126
126
  exit /b 0
127
- `,w=Re.default.join(kt.default.tmpdir(),`${ne}-update.bat`);(0,K.writeFileSync)(w,h),(0,K.writeFileSync)(d,'CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" --tray --skip-update --start", 0, False'.replace("%NODE%",i).replace("%CLI%",a)+`
128
- `);let x=Re.default.join(kt.default.tmpdir(),`${ne}-update.vbs`);return(0,K.writeFileSync)(x,`CreateObject("WScript.Shell").Run "cmd /c ""${w}""", 0, False
127
+ `,w=Re.default.join(_t.default.tmpdir(),`${ne}-update.bat`);(0,G.writeFileSync)(w,m),(0,G.writeFileSync)(d,'CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" --tray --skip-update --start", 0, False'.replace("%NODE%",i).replace("%CLI%",a)+`
128
+ `);let x=Re.default.join(_t.default.tmpdir(),`${ne}-update.vbs`);return(0,G.writeFileSync)(x,`CreateObject("WScript.Shell").Run "cmd /c ""${w}""", 0, False
129
129
  `),{shellCmd:["wscript.exe",[x]],windowsVerbatim:!1}}let f=`#!/bin/bash
130
130
  # Wait for agent to exit so it releases the cli.cjs file lock
131
131
  while kill -0 ${r} 2>/dev/null; do sleep 1; done
@@ -139,15 +139,15 @@ for name in cloudflared agent; do
139
139
  rm -f "$f"
140
140
  fi
141
141
  done
142
- lsof -ti:${Zn} | xargs kill -9 2>/dev/null || true
142
+ lsof -ti:${zn} | xargs kill -9 2>/dev/null || true
143
143
  sleep 2
144
144
 
145
145
  attempt=0
146
- while [ $attempt -lt ${At.maxRetry} ]; do
146
+ while [ $attempt -lt ${kt.maxRetry} ]; do
147
147
  attempt=$((attempt+1))
148
148
  echo "Installing (attempt $attempt)..."
149
149
  if ${u} install -g ${$e} ${l}; then break; fi
150
- if [ $attempt -eq ${At.maxRetry} ]; then
150
+ if [ $attempt -eq ${kt.maxRetry} ]; then
151
151
  ${u} install -g ${$e} ${l} --omit=optional || true
152
152
  fi
153
153
  sleep 3
@@ -163,17 +163,17 @@ fi
163
163
 
164
164
  rm -f "${c}"
165
165
  ${s}"${i}" "${a}" --tray --skip-update --start
166
- `,p=Re.default.join(kt.default.tmpdir(),`${ne}-update.sh`);return(0,K.writeFileSync)(p,f,{mode:493}),{shellCmd:["sh",[p]],windowsVerbatim:!1}}async function pi(){let e=li();if(!e||za())return!1;let n=await tc();if(!n||!ui(e,n)||!ec())return!1;let{shellCmd:r,windowsVerbatim:o}=ic({currentVersion:e,latest:n,agentPid:process.pid});return(0,ln.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var Ai=b(require("os"),1);var rr=b(require("readline"),1),hi=b(require("http"),1);var Mr=require("child_process"),sc={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function er(e){let n=sc[e];n&&process.platform==="darwin"&&(0,Mr.exec)(`open "${n}"`,()=>{})}function ye({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function di({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=ye(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var E={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"},gi=()=>Math.min(44,process.stdout.columns||44);function Fr(e,n=null){let o=gi()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return E.orange+"\u2551"+E.reset+a+" ".repeat(l)+E.orange+"\u2551"+E.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 E.orange+"\u2551"+E.reset+" ".repeat(u)+c(a)+" ".repeat(f)+E.orange+"\u2551"+E.reset},s=["",E.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+E.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>E.bold+E.orange+a+E.reset),i("Remote terminal access from anywhere",a=>E.dim+a+E.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${$e}`,a=>E.dim+a+E.reset)),s.push(t())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
167
- `)}function Pt(e,n=null){console.log(Fr(e,n))}var mi=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],Dr=[{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"}],ac=process.platform==="win32",cc=ac?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var yi=(e,n)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>yi("SIGINT",130));process.on("SIGTERM",()=>yi("SIGTERM",143));var Le=0,ct=null,tr=0,be=-1,un=null,_t=null,nr=!1;function wi(){let e=[],n=be===Dr.length-1;return Dr.forEach((r,o)=>{let t=o===be&&un?un:r.desc;if(o<be||n&&o===be)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),_t&&o===_t.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${_t.text}${E.reset}`);else if(o===be){let i=mi[tr%mi.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${t}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function vi(){let e=wi();Le>0&&process.stdout.write(`\x1B[${Le}A\x1B[0J`),process.stdout.write(e.join(`
166
+ `,p=Re.default.join(_t.default.tmpdir(),`${ne}-update.sh`);return(0,G.writeFileSync)(p,f,{mode:493}),{shellCmd:["sh",[p]],windowsVerbatim:!1}}async function di(){let e=ui();if(!e||za())return!1;let n=await tc();if(!n||!fi(e,n)||!ec())return!1;let{shellCmd:r,windowsVerbatim:o}=ic({currentVersion:e,latest:n,agentPid:process.pid});return(0,un.spawn)(r[0],r[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:o}).unref(),setTimeout(()=>process.exit(0),500),!0}var ki=k(require("os"),1);var or=k(require("readline"),1),gi=k(require("http"),1);var Mr=require("child_process"),sc={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function tr(e){let n=sc[e];n&&process.platform==="darwin"&&(0,Mr.exec)(`open "${n}"`,()=>{})}function ye({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function mi({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=ye(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var E={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"},yi=()=>Math.min(44,process.stdout.columns||44);function Ur(e,n=null){let o=yi()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return E.orange+"\u2551"+E.reset+a+" ".repeat(l)+E.orange+"\u2551"+E.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 E.orange+"\u2551"+E.reset+" ".repeat(u)+c(a)+" ".repeat(f)+E.orange+"\u2551"+E.reset},s=["",E.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+E.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>E.bold+E.orange+a+E.reset),i("Remote terminal access from anywhere",a=>E.dim+a+E.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>E.yellow+E.bold+a+E.reset)),s.push(i(`Run: npm i -g ${$e}`,a=>E.dim+a+E.reset)),s.push(t())),s.push(E.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+E.reset),s.push(""),s.join(`
167
+ `)}function Ot(e,n=null){console.log(Ur(e,n))}var hi=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],Dr=[{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"}],ac=process.platform==="win32",cc=ac?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var wi=(e,n)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>wi("SIGINT",130));process.on("SIGTERM",()=>wi("SIGTERM",143));var Le=0,lt=null,nr=0,be=-1,fn=null,Pt=null,rr=!1;function vi(){let e=[],n=be===Dr.length-1;return Dr.forEach((r,o)=>{let t=o===be&&fn?fn:r.desc;if(o<be||n&&o===be)e.push(` ${E.green}\u2713${E.reset} ${E.dim}${r.label}${E.reset}`),Pt&&o===Pt.afterIdx&&e.push(` ${E.green}\u2713${E.reset} ${E.cyan}${Pt.text}${E.reset}`);else if(o===be){let i=hi[nr%hi.length];e.push(` ${E.orange}${i}${E.reset} ${E.bold}${r.label}${E.reset} ${E.dim}${t}${E.reset}`)}else e.push(` ${E.dim}\u25CB ${r.label}${E.reset}`)}),e}function Ei(){let e=vi();Le>0&&process.stdout.write(`\x1B[${Le}A\x1B[0J`),process.stdout.write(e.join(`
168
168
  `)+`
169
- `),Le=e.length}function Si(){if(Le===0||be<0)return;let e=wi();if(e.length!==Le){vi();return}let n=be+(_t&&_t.afterIdx<be?1:0),r=Le-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function lc(){nr||(process.stdout.write("\x1B[?25l"),nr=!0)}function Ei(){nr&&(process.stdout.write("\x1B[?25h"),nr=!1)}function Ti(e,n=!1,r=null){ct&&(clearInterval(ct),ct=null),be=e,un=r,tr=0,n||(Le=0),vi(),e<Dr.length-1?(lc(),ct=setInterval(()=>{tr++,Si()},cc)):Ei()}function Ot(e){un=e,Le>0&&Si()}function xi(){ct&&(clearInterval(ct),ct=null),Ei(),Le=0,be=-1,un=null,_t=null,tr=0}function Ae(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,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 w=typeof o=="function"?o():o;if(w)for(let x of w.split(`
169
+ `),Le=e.length}function Si(){if(Le===0||be<0)return;let e=vi();if(e.length!==Le){Ei();return}let n=be+(Pt&&Pt.afterIdx<be?1:0),r=Le-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function lc(){rr||(process.stdout.write("\x1B[?25l"),rr=!0)}function Ti(){rr&&(process.stdout.write("\x1B[?25h"),rr=!1)}function xi(e,n=!1,r=null){lt&&(clearInterval(lt),lt=null),be=e,fn=r,nr=0,n||(Le=0),Ei(),e<Dr.length-1?(lc(),lt=setInterval(()=>{nr++,Si()},cc)):Ti()}function It(e){fn=e,Le>0&&Si()}function Ri(){lt&&(clearInterval(lt),lt=null),Ti(),Le=0,be=-1,fn=null,Pt=null,nr=0}function Ae(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,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 w=typeof o=="function"?o():o;if(w)for(let x of w.split(`
170
170
  `))process.stdout.write(x+`\x1B[K
171
171
  `);e&&process.stdout.write(`${E.dim}${e}${E.reset}\x1B[K
172
172
  \x1B[K
173
- `),n.forEach((x,k)=>{let A=k===a?u?">":"\u2605":u?" ":"\u2606",g=k===a?` \x1B[7m${E.bold}${A} ${x.label}${E.reset}`:` ${A} ${x.label}`;process.stdout.write(g+`\x1B[K
174
- `)}),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=(w,x)=>{!c||!x||(x.name==="up"?(a=(a-1+n.length)%n.length,f()):x.name==="down"?(a=(a+1)%n.length,f()):x.name==="return"?(p(),s(a)):x.name==="escape"?(p(),s(-1)):x.ctrl&&x.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),rr.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 Ur(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),rr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
173
+ `),n.forEach((x,P)=>{let A=P===a?u?">":"\u2605":u?" ":"\u2606",T=P===a?` \x1B[7m${E.bold}${A} ${x.label}${E.reset}`:` ${A} ${x.label}`;process.stdout.write(T+`\x1B[K
174
+ `)}),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=(w,x)=>{!c||!x||(x.name==="up"?(a=(a-1+n.length)%n.length,f()):x.name==="down"?(a=(a+1)%n.length,f()):x.name==="return"?(p(),s(a)):x.name==="escape"?(p(),s(-1)):x.ctrl&&x.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),or.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 Fr(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),or.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
175
175
  `),process.exit(0));let i=(t.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
176
- `),n(i)};process.stdin.on("keypress",r)})}function Ri(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=gi(),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=`${E.orange}${"\u2550".repeat(t)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
176
+ `),n(i)};process.stdin.on("keypress",r)})}function bi(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=yi(),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=`${E.orange}${"\u2550".repeat(t)}${E.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
177
177
  ${s}
178
178
  ${E.orange}${E.bold} \u{1F514} New Device Connection${E.reset}
179
179
  ${s}
@@ -181,74 +181,74 @@ ${s}
181
181
  IP: ${E.cyan}${n}${E.reset}
182
182
  ${s}
183
183
 
184
- Allow this device? ${E.dim}(y/n)${E.reset} `),rr.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 w=p,x=w?`${E.green}y${E.reset}
184
+ Allow this device? ${E.dim}(y/n)${E.reset} `),or.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 w=p,x=w?`${E.green}y${E.reset}
185
185
 
186
186
  ${E.green}\u2713 Device approved${E.reset}
187
187
  `:`${E.red}n${E.reset}
188
188
 
189
189
  ${E.red}\u2717 Device rejected${E.reset}
190
- `;process.stdout.write(x),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function bi(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=async()=>{if(o)return;let c=await It();r=hi.default.get(`http://${c}:${e}/api/ui/events`,l=>{let u="";s(),l.on("data",f=>{s(),u+=f.toString();let p=u.split(`
191
- `);u=p.pop();let d="";for(let h of p)if(h.startsWith("data: "))d=h.slice(6);else if(h===""&&d){try{let w=JSON.parse(d);Promise.resolve(n(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(ce.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(ce.sse,1))})};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var Br=!1;function ki(e){Br=e}var fn=null;async function It(){if(fn)return fn;let e=o=>fetch(`http://${o}:${_}/api/health`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok?o:Promise.reject()),r=(await Promise.allSettled(["localhost","127.0.0.1"].map(e))).map((o,t)=>o.status==="fulfilled"?["localhost","127.0.0.1"][t]:null);return fn=r.find(o=>o==="localhost")||r.find(Boolean)||null,fn||"127.0.0.1"}function _i(){fn=null}async function X(e,n){let r=await It();try{return await fetch(`http://${r}:${_}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return _i(),null}}async function G(e){let n=await It();try{let r=await fetch(`http://${n}:${_}${e}`);return r.ok?await r.json():null}catch{return _i(),null}}async function C(e){await X("/api/ui/state",e)}async function Q(e,n={}){Br&&Ti(e-1,e>F.PREPARING),await C({step:e,stepDesc:"",...n})}function or({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";Br&&Ot(r),C({stepDesc:r})}async function oe(){return!!await G("/api/health")}async function Hr(){let[e,n,r,o]=await Promise.all([G("/api/ui/state"),G("/api/device/auto-approve"),G("/api/autostart"),G("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function Pi(){let e=Ai.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var An=require("child_process"),kn=b(require("path"),1),zr=b(require("fs"),1),ss=require("url");var U=b(require("fs"),1),Ye=b(require("path"),1),Qr=b(require("https"),1),qe=b(require("os"),1),Hi=b(require("net"),1),ft=require("child_process");var Oi=b(require("dns"),1),Ii=require("child_process");var uc=2e3,fc=5e3,$i=new Oi.default.promises.Resolver;$i.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function $t(){process.platform==="win32"&&(0,Ii.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function jr(e,n=uc){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([$i.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Ct(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&$t(),o){let t=await jr(o);if(!t.ok)return $t(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await j(`${e}/api/health`,{signal:AbortSignal.timeout(fc)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var pc=q("tunnel"),pn=null,dn=null,Lt=null,lt=null,Ve=0,Kr=!1;async function Gr(e){try{let n=await It();await fetch(`http://${n}:${_}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function Ci(){if(!dn||Kr)return;let e=await Ct(dn),n=e.ok?"healthy":"unreachable";if(n===Lt){lt=null,Ve=0;return}if(n!==lt){lt=n,Ve=1;return}Ve++,!(Ve<ii)&&(pc.info(`${Lt??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),Lt=n,lt=null,Ve=0,await Gr({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function Li(e){if(!e)return mn();e!==dn&&(dn=e,Lt=null,lt=null,Ve=0,$t(),pn||(pn=setInterval(Ci,vo.checkIntervalMs)),Ci())}var Ni=Li,Nt=Li;function Mi(){Kr=!0}function Di(){Kr=!1}function ut(e){Lt=e,lt=null,Ve=0,Gr({tunnelHealth:{status:e,checkedAt:Date.now()}})}function mn(){pn&&(clearInterval(pn),pn=null),dn=null,Lt=null,lt=null,Ve=0,Gr({tunnelHealth:{status:"unknown",checkedAt:null}})}var Z=q("tunnel"),yn={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},dc=3e4,Wr=0,wn=null,ir=null,Ft=null,En=null,Ut=!1,hn=0,Jr=!1,Ne=null,Bt=0,Vr=0,Yr=!1,Fi=3e4,mc=5e3,gn=Ye.default.join(qe.default.homedir(),".9remote","bin"),Ui="cloudflared",Tn=qe.default.platform()==="win32",hc=Tn?`${Ui}.exe`:Ui,Mt=Ye.default.join(gn,hc),qr=Ye.default.join(qe.default.homedir(),".9remote","cloudflared.pid"),vn=!1,Dt=null,gc="2026.6.1",ji=`https://github.com/cloudflare/cloudflared/releases/download/${gc}`;function Ki(){return new Promise(e=>{let n=new Hi.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(yn.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(yn.internetCheckPort,yn.internetCheckHost)}catch{o(!1)}})}async function yc(){Jr=!0;try{let e=0;for(;;){if(e++,await Ki())return;await new Promise(n=>setTimeout(n,ye(ce.internet,e)))}}finally{Jr=!1}}async function Sn(e,n){if(!En){Z.warn("No restartCallback registered \u2014 skip");return}if(!Ut&&!(Date.now()-Vr<mc)){Vr=Date.now(),Ut=!0;try{await yc();let r=ye(ce.tunnelRestart,hn+1);await new Promise(o=>setTimeout(o,r)),await En(e),hn=0,Vr=0}catch(r){hn++,Z.error(`restart failed (#${hn}): ${r?.message||r}`),setImmediate(()=>{Ut=!1,Sn(e,"retry after fail")});return}finally{Ut=!1}}}var wc={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function vc(){let e=qe.default.platform(),n=qe.default.arch(),r=wc[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${ji}/${o}`}var Sc=150;async function Gi(e,n,r){return new Promise((o,t)=>{let i=U.default.createWriteStream(n);Qr.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),U.default.unlinkSync(n),Gi(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),U.default.unlinkSync(n),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,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=Sc&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",f=>{i.close(),U.default.unlinkSync(n),t(f)})}).on("error",s=>{i.close(),U.default.existsSync(n)&&U.default.unlinkSync(n),t(s)})})}async function xn(e){if(U.default.existsSync(gn)||U.default.mkdirSync(gn,{recursive:!0}),U.default.existsSync(Mt))return Tn||U.default.chmodSync(Mt,"755"),Mt;let n=vc(),r=n.endsWith(".tgz"),o=r?Ye.default.join(gn,"cloudflared.tgz"):Mt;try{return e?.({phase:"download",percent:0}),await Gi(n,o,t=>{e?.({phase:"download",percent:t})}),await Ec(n,o),r&&(e?.({phase:"extract"}),(0,ft.execSync)(`tar -xzf "${o}" -C "${gn}"`,{stdio:"pipe",windowsHide:!0}),U.default.unlinkSync(o)),Tn||U.default.chmodSync(Mt,"755"),Mt}catch(t){try{U.default.existsSync(o)&&U.default.unlinkSync(o)}catch{}throw console.error("Failed to download cloudflared:",t.message),t}}function Wi(e){return new Promise((n,r)=>{Qr.default.get(e,o=>{if([301,302].includes(o.statusCode))return Wi(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function Ec(e,n){let r=Ye.default.basename(e),o;try{o=await Wi(`${ji}/sha256sum.txt`)}catch(c){Z.warn(`sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
192
- `).find(c=>c.includes(r));if(!t){Z.warn(`No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(U.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`)}function Tc(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Vi(e,n=null,r=null){let o=await xn(),t=an("cloudflared");t&&Ir(t)&&(Z.info(`killing stale cloudflared pid=${t}`),sr(t),Te("cloudflared")),r&&(En=r),Ft=e;let i=U.default.mkdtempSync(Ye.default.join(qe.default.tmpdir(),"9remote-quick-")),s=Ye.default.join(i,"config.yml");U.default.writeFileSync(s,`# quick-tunnel
193
- `,"utf8");let a=!1,c=()=>{if(!a){a=!0;try{U.default.rmSync(i,{recursive:!0,force:!0})}catch{}}},l=(0,ft.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",s,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Ke("cloudflared",l.pid),Dt=l.pid,vn=!1,new Promise((u,f)=>{let p=!1,d=null,h="",w=setTimeout(()=>{if(!p){p=!0,c(),Dt===l.pid&&(Dt=null);try{l.kill("SIGKILL")}catch{}Te("cloudflared"),f(new Error("Quick tunnel timed out after 90s"))}},9e4),x=k=>{let A=k.toString();h+=A,h.length>4096&&(h=h.slice(-4096));let g=Tc(A);if(g){if(!p){p=!0,d=g,Ne=g,Bt=Date.now(),clearTimeout(w),c(),bc(),Z.info(`tunnel ready: ${g}`),u({child:l,tunnelUrl:g});return}g!==d&&(Z.info(`URL rotated: ${g}`),d=g,Ne=g,Bt=Date.now(),n?.(g))}};l.stdout.on("data",x),l.stderr.on("data",x),l.on("error",k=>{p||(p=!0,clearTimeout(w),c(),f(k))}),l.on("exit",(k,A)=>{c();let g=Dt!==l.pid,S=vn||g;if(Z.info(`cloudflared exited (intentional=${vn} superseded=${g})`),S||ut("unreachable"),!p){p=!0,clearTimeout(w);let P=h.trim().split(`
194
- `).slice(-5).join(" | ");Dt=null,f(new Error(`cloudflared exited (code=${k}, signal=${A}) output: ${P||"(empty)"}`));return}S||Sn(e,`quick tunnel exit code ${k}`)})})}function sr(e){if(Tn)try{(0,ft.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function xc(e){try{let n=[];if(Tn){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,ft.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,ft.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
195
- `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))sr(r)}catch{}}function Me(){if(!Yr){Yr=!0;try{try{if(U.default.existsSync(qr)){let n=parseInt(U.default.readFileSync(qr,"utf8"));Number.isFinite(n)&&(vn=!0,sr(n)),U.default.unlinkSync(qr)}}catch{}let e=an("cloudflared");vn=!0,Dt=null,e&&(sr(e),Te("cloudflared")),xc(_)}finally{setTimeout(()=>{Yr=!1},2e3)}}}function Yi(){hn=0,Ut=!1,En=null,Ft=null,Ne=null,Ac()}var Rc=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Bi(){let e=qe.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!Rc.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function bc(){wn||(ir=Bi(),Wr=Date.now(),wn=setInterval(async()=>{try{let e=Date.now(),n=e-Wr;if(Wr=e,Jr||Ut||!En||Ft==null)return;if(n>dc){if(Z.info(`Sleep/wake detected (gap=${n}ms)`),Ne){let s=!1;for(let a=0;a<3;a++){if((await Ct(Ne)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;Z.info("tunnel unresponsive after sleep \u2192 restarting")}ut("unreachable"),Me(),Sn(Ft,"woke from sleep");return}let r=Bi(),o=r!==ir;ir=r;let t=an("cloudflared"),i=!t||!Ir(t);if(!o&&!i){Ne&&Bt&&Date.now()-Bt>Fi&&((await Ct(Ne)).ok||(Z.warn("tunnel unreachable but cloudflared alive \u2014 edge lost, restarting"),ut("unreachable"),Me(),Sn(Ft,"tunnel unreachable (edge lost)")));return}if(o&&!i&&Bt&&Date.now()-Bt<Fi||(o&&Z.info("Network change detected"),i&&Z.warn("cloudflared not alive \u2014 watchdog"),ut("unreachable"),await new Promise(s=>setTimeout(s,yn.networkRestoreDelayMs)),!await Ki()))return;if(o&&!i&&Ne){let s=!1;for(let a=0;a<2;a++){if((await Ct(Ne)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){Z.info("Tunnel survived network change, skip restart");return}}o&&!i&&Me(),Sn(Ft,o?"network change":"liveness watchdog")}catch(e){Z.error(`network monitor tick failed: ${e?.message||e}`)}},yn.networkCheckIntervalMs))}function Ac(){wn&&(clearInterval(wn),wn=null),ir=null}Kt();var Fe=q("server"),as=kn.default.dirname((0,ss.fileURLToPath)(__importMetaUrl)),$c=kn.default.resolve(as,"./server.cjs"),os=kn.default.resolve(as,"../../index.js");function lr(e){try{process.platform==="win32"?(0,An.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,An.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function Je(e,n,r){let o=null,t=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(lr(_),s=!1);let u=process.env.NODE_ENV==="development"&&zr.default.existsSync(os),f=u?os:$c;zr.default.existsSync(f)||(Fe.error(`Server not found: ${f}`),process.exit(1));let p={...process.env,PORT:String(_)};u||delete p.NODE_ENV,o=(0,An.spawn)(mo,[f],{cwd:kn.default.dirname(f),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:ho(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},ni),o.on("exit",(d,h)=>{if(c&&(clearTimeout(c),c=null),t)return;if(i){i=!1,Fe.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}Fe.error(`Server exited unexpectedly (code: ${d}, signal: ${h})`),a++;let w=ye(ce.server,a);Fe.warn(`Restarting server in ${w}ms (fail#${a})`),n&&n(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{Fe.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function cs(e){return e?.restart?e.restart():!1}function pt({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{mn()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{Me()}catch{}try{Rn()}catch{}try{lr(_)}catch{}try{Yi()}catch{}try{bo()}catch{}try{Te("agent")}catch{}try{Te("cloudflared")}catch{}r&&setTimeout(()=>process.exit(o),ri)}var is=!1;function Qe(e,n){if(is)return;is=!0;let r=!1,o=t=>{r||(r=!0,Fe.info(`Stopping 9Remote (${t})...`),pt({serverManager:e,tunnelProcess:n}),Fe.info("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=>{Fe.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),Lr)}),process.on("unhandledRejection",t=>{Fe.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),Lr)})}Kt();var eo=q("tunnel");async function dt(e,n,r,o){let t=0;for(;;){t++;try{return await Vi(e,n,r)}catch(i){let s=ye(ce.tunnelSpawn,t);eo.warn(`spawn attempt ${t} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:t,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function Gt({onUrlUpdate:e,setTunnel:n,onRetry:r}){return async o=>{try{let t=await dt(o,e,null,r);n(t.child),await e(t.tunnelUrl),eo.info(`Tunnel restarted: ${t.tunnelUrl}`)}catch(t){eo.error(`Tunnel restart failed: ${t?.message||t}`)}}}async function ur(e,n={}){let r=n.intervalMs??We.intervalMs,o=n.timeoutMs??We.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await C({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>We.maxLogEntries?c.slice(-We.maxLogEntries):c;C({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,$t(),i){let f=await jr(i,We.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;Ot(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await j(t,{signal:AbortSignal.timeout(We.fetchTimeoutMs)}),p=Date.now()-u;if(Ot(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await C({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,We.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",w=h?"connecting...":d;Ot(`#${a} \u2192 ${w}`),l({attempt:a,status:w,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await C({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var _n=q("tunnel"),to=null,ls=null,us=0;async function mt(e,n){if(_n.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${n}`),n&&n===ls&&Date.now()-us<oi){_n.debug("updateTunnelUrl: skipped (debounce, same URL)");return}to&&(to.cancelled=!0);let r={cancelled:!1};to=r;let o=Pi();di({config:ce.urlSync,label:`urlSync ${n}`,log:t=>_n.warn(t),ctx:r,task:async()=>{let t=await j(`${D}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:n,localIp:o?`${o}:${_}`:null})});if(r.cancelled)return!0;if(t.ok)return ls=n,us=Date.now(),_n.debug(`urlSync OK: pushed ${n} to server`),Cc(n),!0;let i=await t.text().catch(()=>"");return _n.warn(`urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&Ni(n)}var Pn=null;async function Cc(e){if(Pn?.url===e)return;let n={url:e};Pn=n,Mi();try{let r=await ur(e,{timeoutMs:si});if(Pn!==n)return;r&&ut("healthy")}catch{}finally{Pn===n&&(Pn=null),Di()}}var ao=b(Ls(),1);var jc=30;async function Wt(e,n){try{let r=await j(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:jc})});if(!r.ok){let o=await r.json();throw new Error(o.error||"Failed to create temp key")}return await r.json()}catch(r){return console.error("Error creating temp key:",r),null}}function Kc(e,n="\u{1F4F1} Scan QR to connect:"){console.log(fe.orange(`
190
+ `;process.stdout.write(x),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function Ai(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=async()=>{if(o)return;let c=await $t();r=gi.default.get(`http://${c}:${e}/api/ui/events`,l=>{let u="";s(),l.on("data",f=>{s(),u+=f.toString();let p=u.split(`
191
+ `);u=p.pop();let d="";for(let m of p)if(m.startsWith("data: "))d=m.slice(6);else if(m===""&&d){try{let w=JSON.parse(d);Promise.resolve(n(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(ce.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,ye(ce.sse,1))})};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var Br=!1;function _i(e){Br=e}var pn=null;async function $t(){if(pn)return pn;let e=o=>fetch(`http://${o}:${O}/api/health`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok?o:Promise.reject()),r=(await Promise.allSettled(["localhost","127.0.0.1"].map(e))).map((o,t)=>o.status==="fulfilled"?["localhost","127.0.0.1"][t]:null);return pn=r.find(o=>o==="localhost")||r.find(Boolean)||null,pn||"127.0.0.1"}function Pi(){pn=null}async function X(e,n){let r=await $t();try{return await fetch(`http://${r}:${O}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return Pi(),null}}async function W(e){let n=await $t();try{let r=await fetch(`http://${n}:${O}${e}`);return r.ok?await r.json():null}catch{return Pi(),null}}async function U(e){await X("/api/ui/state",e)}async function j(e,n={}){Br&&xi(e-1,e>$.PREPARING),await U({step:e,stepDesc:"",...n})}function ir({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";Br&&It(r),U({stepDesc:r})}async function oe(){return!!await W("/api/health")}async function Hr(){let[e,n,r,o]=await Promise.all([W("/api/ui/state"),W("/api/device/auto-approve"),W("/api/autostart"),W("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function Oi(){let e=ki.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var kn=require("child_process"),_n=k(require("path"),1),zr=k(require("fs"),1),as=require("url");var B=k(require("fs"),1),qe=k(require("path"),1),Qr=k(require("https"),1),Je=k(require("os"),1),ji=k(require("net"),1),pt=require("child_process");var Ii=k(require("dns"),1),$i=require("child_process");var uc=2e3,fc=5e3,Ci=new Ii.default.promises.Resolver;Ci.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function Ct(){process.platform==="win32"&&(0,$i.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function jr(e,n=uc){let r=Date.now();try{return{ok:!0,addrs:await Promise.race([Ci.resolve4(e),new Promise((t,i)=>setTimeout(()=>i(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function Lt(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&Ct(),o){let t=await jr(o);if(!t.ok)return Ct(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await K(`${e}/api/health`,{signal:AbortSignal.timeout(fc)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var pc=J("tunnel"),dn=null,mn=null,Nt=null,ut=null,Ye=0,Kr=!1;async function Gr(e){try{let n=await $t();await fetch(`http://${n}:${O}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}async function Li(){if(!mn||Kr)return;let e=await Lt(mn),n=e.ok?"healthy":"unreachable";if(n===Nt){ut=null,Ye=0;return}if(n!==ut){ut=n,Ye=1;return}Ye++,!(Ye<si)&&(pc.info(`${Nt??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),Nt=n,ut=null,Ye=0,await Gr({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function Ni(e){if(!e)return hn();e!==mn&&(mn=e,Nt=null,ut=null,Ye=0,Ct(),dn||(dn=setInterval(Li,Eo.checkIntervalMs)),Li())}var Mi=Ni,Mt=Ni;function Di(){Kr=!0}function Ui(){Kr=!1}function ft(e){Nt=e,ut=null,Ye=0,Gr({tunnelHealth:{status:e,checkedAt:Date.now()}})}function hn(){dn&&(clearInterval(dn),dn=null),mn=null,Nt=null,ut=null,Ye=0,Gr({tunnelHealth:{status:"unknown",checkedAt:null}})}var Z=J("tunnel"),wn={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443},dc=3e4,Wr=0,vn=null,sr=null,Ft=null,Tn=null,Bt=!1,gn=0,Jr=!1,Ne=null,Ht=0,Vr=0,Yr=!1,Fi=3e4,mc=5e3,yn=qe.default.join(Je.default.homedir(),".9remote","bin"),Bi="cloudflared",xn=Je.default.platform()==="win32",hc=xn?`${Bi}.exe`:Bi,Dt=qe.default.join(yn,hc),qr=qe.default.join(Je.default.homedir(),".9remote","cloudflared.pid"),En=!1,Ut=null,gc="2026.6.1",Ki=`https://github.com/cloudflare/cloudflared/releases/download/${gc}`;function Gi(){return new Promise(e=>{let n=new ji.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(wn.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(wn.internetCheckPort,wn.internetCheckHost)}catch{o(!1)}})}async function yc(){Jr=!0;try{let e=0;for(;;){if(e++,await Gi())return;await new Promise(n=>setTimeout(n,ye(ce.internet,e)))}}finally{Jr=!1}}async function Sn(e,n){if(!Tn){Z.warn("No restartCallback registered \u2014 skip");return}if(!Bt&&!(Date.now()-Vr<mc)){Vr=Date.now(),Bt=!0;try{await yc();let r=ye(ce.tunnelRestart,gn+1);await new Promise(o=>setTimeout(o,r)),await Tn(e),gn=0,Vr=0}catch(r){gn++,Z.error(`restart failed (#${gn}): ${r?.message||r}`),setImmediate(()=>{Bt=!1,Sn(e,"retry after fail")});return}finally{Bt=!1}}}var wc={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function vc(){let e=Je.default.platform(),n=Je.default.arch(),r=wc[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${Ki}/${o}`}var Ec=150;async function Wi(e,n,r){return new Promise((o,t)=>{let i=B.default.createWriteStream(n);Qr.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),B.default.unlinkSync(n),Wi(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),B.default.unlinkSync(n),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,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=Ec&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",f=>{i.close(),B.default.unlinkSync(n),t(f)})}).on("error",s=>{i.close(),B.default.existsSync(n)&&B.default.unlinkSync(n),t(s)})})}async function Rn(e){if(B.default.existsSync(yn)||B.default.mkdirSync(yn,{recursive:!0}),B.default.existsSync(Dt))return xn||B.default.chmodSync(Dt,"755"),Dt;let n=vc(),r=n.endsWith(".tgz"),o=r?qe.default.join(yn,"cloudflared.tgz"):Dt;try{return e?.({phase:"download",percent:0}),await Wi(n,o,t=>{e?.({phase:"download",percent:t})}),await Sc(n,o),r&&(e?.({phase:"extract"}),(0,pt.execSync)(`tar -xzf "${o}" -C "${yn}"`,{stdio:"pipe",windowsHide:!0}),B.default.unlinkSync(o)),xn||B.default.chmodSync(Dt,"755"),Dt}catch(t){try{B.default.existsSync(o)&&B.default.unlinkSync(o)}catch{}throw console.error("Failed to download cloudflared:",t.message),t}}function Vi(e){return new Promise((n,r)=>{Qr.default.get(e,o=>{if([301,302].includes(o.statusCode))return Vi(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function Sc(e,n){let r=qe.default.basename(e),o;try{o=await Vi(`${Ki}/sha256sum.txt`)}catch(c){Z.warn(`sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
192
+ `).find(c=>c.includes(r));if(!t){Z.warn(`No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(B.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`)}function Tc(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Yi(e,n=null,r=null){let o=await Rn(),t=cn("cloudflared");t&&Ir(t)&&(Z.info(`killing stale cloudflared pid=${t}`),ar(t),Te("cloudflared")),r&&(Tn=r),Ft=e;let i=B.default.mkdtempSync(qe.default.join(Je.default.tmpdir(),"9remote-quick-")),s=qe.default.join(i,"config.yml");B.default.writeFileSync(s,`# quick-tunnel
193
+ `,"utf8");let a=!1,c=()=>{if(!a){a=!0;try{B.default.rmSync(i,{recursive:!0,force:!0})}catch{}}},l=(0,pt.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",s,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Ge("cloudflared",l.pid),Ut=l.pid,En=!1,new Promise((u,f)=>{let p=!1,d=null,m="",w=setTimeout(()=>{if(!p){p=!0,c(),Ut===l.pid&&(Ut=null);try{l.kill("SIGKILL")}catch{}Te("cloudflared"),f(new Error("Quick tunnel timed out after 90s"))}},9e4),x=P=>{let A=P.toString();m+=A,m.length>4096&&(m=m.slice(-4096));let T=Tc(A);if(T){if(!p){p=!0,d=T,Ne=T,Ht=Date.now(),clearTimeout(w),c(),bc(),Z.info(`tunnel ready: ${T}`),u({child:l,tunnelUrl:T});return}T!==d&&(Z.info(`URL rotated: ${T}`),d=T,Ne=T,Ht=Date.now(),n?.(T))}};l.stdout.on("data",x),l.stderr.on("data",x),l.on("error",P=>{p||(p=!0,clearTimeout(w),c(),f(P))}),l.on("exit",(P,A)=>{c();let T=Ut!==l.pid,y=En||T;if(Z.info(`cloudflared exited (intentional=${En} superseded=${T})`),y||ft("unreachable"),!p){p=!0,clearTimeout(w);let R=m.trim().split(`
194
+ `).slice(-5).join(" | ");Ut=null,f(new Error(`cloudflared exited (code=${P}, signal=${A}) output: ${R||"(empty)"}`));return}y||Sn(e,`quick tunnel exit code ${P}`)})})}function ar(e){if(xn)try{(0,pt.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function xc(e){try{let n=[];if(xn){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,pt.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,pt.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
195
+ `).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))ar(r)}catch{}}function Me(){if(!Yr){Yr=!0;try{try{if(B.default.existsSync(qr)){let n=parseInt(B.default.readFileSync(qr,"utf8"));Number.isFinite(n)&&(En=!0,ar(n)),B.default.unlinkSync(qr)}}catch{}let e=cn("cloudflared");En=!0,Ut=null,e&&(ar(e),Te("cloudflared")),xc(O)}finally{setTimeout(()=>{Yr=!1},2e3)}}}function qi(){gn=0,Bt=!1,Tn=null,Ft=null,Ne=null,Ac()}var Rc=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Hi(){let e=Je.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!Rc.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function bc(){vn||(sr=Hi(),Wr=Date.now(),vn=setInterval(async()=>{try{let e=Date.now(),n=e-Wr;if(Wr=e,Jr||Bt||!Tn||Ft==null)return;if(n>dc){if(Z.info(`Sleep/wake detected (gap=${n}ms)`),Ne){let s=!1;for(let a=0;a<3;a++){if((await Lt(Ne)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;Z.info("tunnel unresponsive after sleep \u2192 restarting")}ft("unreachable"),Me(),Sn(Ft,"woke from sleep");return}let r=Hi(),o=r!==sr;sr=r;let t=cn("cloudflared"),i=!t||!Ir(t);if(!o&&!i){Ne&&Ht&&Date.now()-Ht>Fi&&((await Lt(Ne)).ok||(Z.warn("tunnel unreachable but cloudflared alive \u2014 edge lost, restarting"),ft("unreachable"),Me(),Sn(Ft,"tunnel unreachable (edge lost)")));return}if(o&&!i&&Ht&&Date.now()-Ht<Fi||(o&&Z.info("Network change detected"),i&&Z.warn("cloudflared not alive \u2014 watchdog"),ft("unreachable"),await new Promise(s=>setTimeout(s,wn.networkRestoreDelayMs)),!await Gi()))return;if(o&&!i&&Ne){let s=!1;for(let a=0;a<2;a++){if((await Lt(Ne)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){Z.info("Tunnel survived network change, skip restart");return}}o&&!i&&Me(),Sn(Ft,o?"network change":"liveness watchdog")}catch(e){Z.error(`network monitor tick failed: ${e?.message||e}`)}},wn.networkCheckIntervalMs))}function Ac(){vn&&(clearInterval(vn),vn=null),sr=null}Gt();var Ue=J("server"),cs=_n.default.dirname((0,as.fileURLToPath)(__importMetaUrl)),$c=_n.default.resolve(cs,"./server.cjs"),is=_n.default.resolve(cs,"../../index.js");function ur(e){try{process.platform==="win32"?(0,kn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,kn.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function Qe(e,n,r){let o=null,t=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(ur(O),s=!1);let u=process.env.NODE_ENV==="development"&&zr.default.existsSync(is),f=u?is:$c;zr.default.existsSync(f)||(Ue.error(`Server not found: ${f}`),process.exit(1));let p={...process.env,PORT:String(O)};u||delete p.NODE_ENV,o=(0,kn.spawn)(ho,[f],{cwd:_n.default.dirname(f),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:go(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},ri),o.on("exit",(d,m)=>{if(c&&(clearTimeout(c),c=null),t)return;if(i){i=!1,Ue.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}Ue.error(`Server exited unexpectedly (code: ${d}, signal: ${m})`),a++;let w=ye(ce.server,a);Ue.warn(`Restarting server in ${w}ms (fail#${a})`),n&&n(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{Ue.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function ls(e){return e?.restart?e.restart():!1}function dt({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{hn()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{Me()}catch{}try{bn()}catch{}try{ur(O)}catch{}try{qi()}catch{}try{Ao()}catch{}try{Te("agent")}catch{}try{Te("cloudflared")}catch{}r&&setTimeout(()=>process.exit(o),oi)}var ss=!1;function Xe(e,n){if(ss)return;ss=!0;let r=!1,o=t=>{r||(r=!0,Ue.info(`Stopping 9Remote (${t})...`),dt({serverManager:e,tunnelProcess:n}),Ue.info("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=>{Ue.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),Lr)}),process.on("unhandledRejection",t=>{Ue.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),Lr)})}Gt();var eo=J("tunnel");async function mt(e,n,r,o){let t=0;for(;;){t++;try{return await Yi(e,n,r)}catch(i){let s=ye(ce.tunnelSpawn,t);eo.warn(`spawn attempt ${t} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:t,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function Wt({onUrlUpdate:e,setTunnel:n,onRetry:r}){return async o=>{try{let t=await mt(o,e,null,r);n(t.child),await e(t.tunnelUrl),eo.info(`Tunnel restarted: ${t.tunnelUrl}`)}catch(t){eo.error(`Tunnel restart failed: ${t?.message||t}`)}}}async function Ze(e,n={}){let r=n.intervalMs??Ve.intervalMs,o=n.timeoutMs??Ve.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>Ve.maxLogEntries?c.slice(-Ve.maxLogEntries):c;U({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,Ct(),i){let f=await jr(i,Ve.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;It(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(m=>setTimeout(m,r));continue}}let u=Date.now();try{let f=await K(t,{signal:AbortSignal.timeout(Ve.fetchTimeoutMs)}),p=Date.now()-u;if(It(`#${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,Ve.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,m=d==="ENOTFOUND",w=m?"connecting...":d;It(`#${a} \u2192 ${w}`),l({attempt:a,status:w,elapsedMs:p,ok:!1,waiting:m,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await U({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var Pn=J("tunnel"),to=null,us=null,fs=0;async function ht(e,n){if(Pn.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${n}`),n&&n===us&&Date.now()-fs<ii){Pn.debug("updateTunnelUrl: skipped (debounce, same URL)");return}to&&(to.cancelled=!0);let r={cancelled:!1};to=r;let o=Oi();mi({config:ce.urlSync,label:`urlSync ${n}`,log:t=>Pn.warn(t),ctx:r,task:async()=>{let t=await K(`${D}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,tunnelUrl:n,localIp:o?`${o}:${O}`:null})});if(r.cancelled)return!0;if(t.ok)return us=n,fs=Date.now(),Pn.debug(`urlSync OK: pushed ${n} to server`),Cc(n),!0;let i=await t.text().catch(()=>"");return Pn.warn(`urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&Mi(n)}var On=null;async function Cc(e){if(On?.url===e)return;let n={url:e};On=n,Di();try{let r=await Ze(e,{timeoutMs:ai});if(On!==n)return;r&&ft("healthy")}catch{}finally{On===n&&(On=null),Ui()}}var ao=k(Ns(),1);var jc=30;async function Vt(e,n){try{let r=await K(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e,expiryMinutes:jc})});if(!r.ok){let o=await r.json();throw new Error(o.error||"Failed to create temp key")}return await r.json()}catch(r){return console.error("Error creating temp key:",r),null}}function Kc(e,n="\u{1F4F1} Scan QR to connect:"){console.log(fe.orange(`
196
196
  ${n}`)),ao.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function Gc(e){return new Promise(n=>{ao.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{n(fe.orangeDim("\u{1F4F1} Scan QR to connect:")+`
197
- `+r.trim())})})}async function mr(e,n){let r=await Wt(e,D);if(!r){console.log(m.red("\u274C Failed to create temp key"));return}let o=`${D}/login?k=${r.tempKey}`,t=Math.min(Ce.headerWidth,process.stdout.columns||55);await Q(F.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:o,workerUrl:D}),Kc(o),console.log(m.gray(`
197
+ `+r.trim())})})}async function mr(e,n){let r=await Vt(e,D);if(!r){console.log(h.red("\u274C Failed to create temp key"));return}let o=`${D}/login?k=${r.tempKey}`,t=Math.min(Ce.headerWidth,process.stdout.columns||55);await j($.READY,{tunnelUrl:n,oneTimeKey:r.tempKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:o,workerUrl:D}),Kc(o),console.log(h.gray(`
198
198
  QR will expire in 30 minutes (one-time use)
199
- `)),console.log(fe.orange("\u2550".repeat(t))),console.log(m.white("App URL".padEnd(14))+m.gray(`${D}/login`)),console.log(m.white("One-Time Key".padEnd(14))+fe.orange.bold(r.tempKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(fe.orange("\u2550".repeat(t)))}async function Vt(e,n,r,o=""){let t=Math.min(Ce.headerWidth,process.stdout.columns||Ce.headerWidth),i=[];return e&&r?(i.push(await Gc(r)),i.push(m.gray(`
199
+ `)),console.log(fe.orange("\u2550".repeat(t))),console.log(h.white("App URL".padEnd(14))+h.gray(`${D}/login`)),console.log(h.white("One-Time Key".padEnd(14))+fe.orange.bold(r.tempKey)),console.log(h.white("Key".padEnd(14))+h.gray(e)),console.log(fe.orange("\u2550".repeat(t)))}async function Yt(e,n,r,o=""){let t=Math.min(Ce.headerWidth,process.stdout.columns||Ce.headerWidth),i=[];return e&&r?(i.push(await Gc(r)),i.push(h.gray(`
200
200
  QR expires in 30 minutes (one-time use)
201
- `))):i.push(m.gray(`
201
+ `))):i.push(h.gray(`
202
202
  (One-time key used \u2014 generate a new one from menu)
203
- `)),i.push(fe.orange("\u2550".repeat(t)),m.white("App URL".padEnd(14))+m.gray(`${D}/login`)),yo.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?fe.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(n),fe.orange("\u2550".repeat(t))),i.join(`
204
- `)}var ze=q("cmd");function et(e,n,r,o){let t=!1;setInterval(async()=>{if(t)return;let i=Ao();if(i){t=!0;try{if(i==="stop-tunnel")await Ns(e,n);else if(i==="restart-tunnel")await Ns(e,n),await Ms(e,n,r);else if(i==="start-tunnel"){if(await Ms(e,n,r)==="alreadyRunning"){t=!1;return}}else i==="regenerate-key"?await Wc():i==="shutdown"?Vc(e,n):i==="update"?await pi():i==="restart"&&cs(o?.())}catch(s){ze.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{t=!1}}},ge.cmdMs)}async function Ns(e,n){mn();let r=e();r&&(r.kill(),n(null),ze.info("Tunnel stopped")),await Q(F.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),cr({tunnelUrl:"",running:!0})}async function Ms(e,n,r){let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await G("/api/ui/state");return await Q(F.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}ze.info("Starting...");try{await Q(F.PREPARING),await xn(or),await Q(F.CONNECTING);let t=await j(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await mr(r,"");let i=async a=>{await mt(r,a),await C({tunnelUrl:a}),Nt(a),cr({tunnelUrl:a,running:!0})},s=({attempt:a,delay:c})=>{C({tunnelRetry:{attempt:a,delay:c,at:Date.now()}})};dt(_,i,Gt({onUrlUpdate:i,setTunnel:a=>n(a),onRetry:s}),s).then(a=>{n(a.child),C({tunnelRetry:null}),i(a.tunnelUrl)}).catch(a=>{ze.error(`Tunnel background spawn gave up: ${a?.message||a}`),C({tunnelRetry:null})})}catch(t){ze.error(`Failed to start: ${t.message}`),await Q(F.STOPPED)}}async function Wc(){let e=await vt(),{key:n}=St(e),r=Un();ot(e,n,r?.name||"Default"),await C({permanentKey:n}),ze.info(`Key regenerated: ${Nn(n)}`)}function Vc(e,n){ze.info("Shutting down 9Remote completely...");let r=e();n(null),pt({tunnelProcess:r}),ze.info("9Remote stopped")}async function Ds(){Ke("agent",process.pid),Pt(Se());let e=await je(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await oe(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Je(null,null);o||await new Promise(a=>setTimeout(a,ue.serverBootMs));let i=`http://localhost:${_}`;console.log(m.green(`
205
- \u{1F310} UI ready at ${i}`));let s=null;await C({permanentKey:e.key,step:F.STOPPED,theme:r}),Qe(t,null),et(()=>s,a=>{s=a},e.key,()=>t),process.argv.includes("--start")&&Et("start-tunnel"),await new Promise(()=>{})}Kt();async function Fs(){Ke("agent",process.pid),ti().catch(()=>{});let e=await je(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await oe(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Je(null,null);o||await new Promise(l=>setTimeout(l,ue.serverBootMs));let i=`http://localhost:${_}`,s=null;await C({permanentKey:e.key,step:F.STOPPED,theme:r});let a=()=>{let l=s;s=null,pt({serverManager:t,tunnelProcess:l,exit:!1})};Qe(t,null),et(()=>s,l=>{s=l},e.key,()=>t);try{Te("cloudflared")}catch{}process.argv.includes("--start")&&Et("start-tunnel"),await Xr({port:_,onQuit:a,onOpenUI:()=>bn(i)})&&Zr({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var tt=q("mode");async function Yc(e){tt.info("Starting server..."),await Q(F.PREPARING);try{Me(),await new Promise(s=>setTimeout(s,ue.killCloudflaredMs))}catch{}try{let s=await j(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return tt.error(`Session create failed: ${s.status}`),null}catch(s){return tt.error(`Session create failed: ${s.message}`),null}let n=await oe(),r=n?{getProcess:()=>null,shutdown:()=>{}}:Je(null,null);n||await new Promise(s=>setTimeout(s,ue.serverBootMs)),tt.info("Starting tunnel..."),await Q(F.CONNECTING);let o={current:null},t,i=async s=>{tt.info(`Tunnel URL rotated: ${s}`),await mt(e,s),C({tunnelUrl:s}),Nt(s)};try{let s=await dt(_,i,Gt({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return tt.error(`Failed to start tunnel: ${s.message}`),r.shutdown(),null}return await ur(t)||tt.warn("Tunnel health check timed out, proceeding anyway..."),await mt(e,t),Fn({apiKey:e,tunnelUrl:t,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:t}}async function Us(){Pt(Se());let e=await je();tt.info(`Using key: ${Nn(e.key)} (${e.name})`);let n=await Yc(e.key);n||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:t}=n;await mr(e.key,t),Qe(r,o.current),et(()=>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;C({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},ge.statsMs),await new Promise(()=>{})}var Bs=b(require("path"),1),Hs=b(require("fs"),1);Kt();async function js(){let e=`http://localhost:${_}`;await oe()&&(lr(_),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=rn;try{Hs.default.mkdirSync(Bs.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=zo(n),t&&Ke("agent",t)}catch(c){console.log(m.red(`
206
- \u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+ge.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await oe()){s=!0;break}await new Promise(c=>setTimeout(c,ge.bgServerReadyIntervalMs))}s||(console.log(m.red(`
207
- \u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${o}
208
- `)),process.exit(1)),Et("start-tunnel"),bn(e);let a=t?` (PID: ${t})`:"";console.log(m.green(`
209
- \u{1F310} 9Remote running at ${e}${a}`)),console.log(m.gray(`\u{1F4A1} Log: ${o}
210
- `)),await new Promise(c=>setTimeout(c,ue.bgSpawnFlushMs)),process.exit(0)}var Gs=b(require("readline"),1);var Ks=q("mode"),Yt=null;async function Ws(){console.clear(),xi(),ki(!0),await Q(F.PREPARING);let e=await je(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await oe()){r=Je(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{Gs.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let g=Date.now()+ge.serverReadyTimeoutMs;for(;Date.now()<g&&!await oe();)await new Promise(S=>setTimeout(S,ge.serverReadyIntervalMs))}try{Me(),await new Promise(g=>setTimeout(g,ue.killCloudflaredTuiMs))}catch{}await xn(or),await Q(F.CONNECTING);try{let g=await j(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!g.ok)throw new Error(`Session create failed: ${g.status}`)}catch(g){Ks.error(`Failed to connect: ${g.message}`),process.exit(1)}await Q(F.CONNECTING);let t=await Wt(e.key,D),i=t?`${D}/login?k=${t.tempKey}`:`${D}/login`;await Q(F.READY,{tunnelUrl:"",oneTimeKey:t?.tempKey||"",oneTimeKeyExpiresAt:t?.expiresAt||null,permanentKey:e.key,qrUrl:i,workerUrl:D}),await new Promise(g=>setTimeout(g,ue.trayReadyMs));let s=t?.tempKey||"",a=i,c="",l={current:null},u=async g=>{c=g,await mt(e.key,g),await C({tunnelUrl:g}),Nt(g),f=await Vt(s,e.key,a,c),n?.()};dt(_,u,Gt({onUrlUpdate:u,setTunnel:g=>{l.current=g}})).then(g=>(l.current=g.child,Fn({apiKey:e.key,tunnelUrl:g.tunnelUrl,tunnelPid:g.child?.pid}),u(g.tunnelUrl))).catch(g=>Ks.error(`Tunnel background spawn gave up: ${g?.message||g}`));let f=await Vt(s,e.key,a,c),p=[],d=!1,h=()=>{d||n?.()},w=async(g,S,P)=>{if(!d){d=!0;try{let T=await Ri(S,P);await X(`/api/device/${T?"approve":"reject"}`,{socketId:g})}catch{}finally{d=!1,n?.()}}},x=bi(_,async(g,S)=>{if(g==="log"&&S.message)p.push(S.message),p.length>Ce.maxLogLines&&p.shift();else if(g==="state"){let P=S.permanentKey||e.key,T=S.oneTimeKey!==void 0?S.oneTimeKey:s,O=S.qrUrl!==void 0?S.qrUrl:a,I=S.tunnelUrl!==void 0?S.tunnelUrl:c;(T!==s||P!==e.key||I!==c)&&(s=T,a=O,c=I,S.permanentKey&&(e={...e,key:S.permanentKey}),f=await Vt(s,e.key,a,c),h())}else g==="permissions"?(d||Promise.resolve(Yt?.()).catch(()=>{}),h()):g==="autostart"||g==="sleepInhibit"?(d||Promise.resolve(Yt?.()).catch(()=>{}),h()):g==="deviceApproval"&&S.action==="pending"&&await w(S.socketId,S.deviceId,S.ip)}),k=setInterval(async()=>{if(!d)try{let S=(await G("/api/device/pending"))?.pending?.[0];S&&await w(S.socketId,S.deviceId,S.ip)}catch{}},ge.pendingApprovalMs);Qe({getProcess:r.getProcess,shutdown:()=>{r.shutdown();try{l.current?.kill()}catch{}x(),clearInterval(k)}}),et(()=>l.current,g=>{l.current=g},e.key,()=>r),await qc(e,c,()=>f,g=>{f=g},g=>{n=g},()=>{try{x()}catch{}try{clearInterval(k)}catch{}pt({serverManager:r,tunnelProcess:l.current,exit:!1})},p)}async function qc(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await Hr(),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 Ae("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${_}`,{openBrowser:w}=await Promise.resolve().then(()=>(Kt(),rs));w(h),console.log(m.green(`
211
- \u{1F310} Opening ${h}
212
- `))}else if(d==="keys")await Jc(e,n,o,r);else if(d==="desktop")await Zc();else if(d==="devices")await zc();else if(d==="settings")await Xc();else if(d==="logs")await el();else{try{i?.()}catch{}console.log(m.gray(`
203
+ `)),i.push(fe.orange("\u2550".repeat(t)),h.white("App URL".padEnd(14))+h.gray(`${D}/login`)),wo.showTunnelUrlInMenu&&i.push(h.white("Tunnel".padEnd(14))+(o?h.cyan(o):h.gray("\u2014"))),i.push(h.white("One-Time Key".padEnd(14))+(e?fe.orange.bold(e)+h.dim(" (expires in 30m)"):h.gray("\u2014")),h.white("Key".padEnd(14))+h.dim(n),fe.orange("\u2550".repeat(t))),i.join(`
204
+ `)}var Fe=J("cmd");function tt(e,n,r,o){let t=!1;setInterval(async()=>{if(t)return;let i=ko();if(i){t=!0;try{if(i==="stop-tunnel")await Ms(e,n);else if(i==="restart-tunnel")await Ms(e,n),await Ds(e,n,r);else if(i==="start-tunnel"){if(await Ds(e,n,r)==="alreadyRunning"){t=!1;return}}else i==="regenerate-key"?await Wc():i==="shutdown"?Vc(e,n):i==="update"?await di():i==="restart"&&ls(o?.())}catch(s){Fe.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{t=!1}}},ge.cmdMs)}async function Ms(e,n){hn();let r=e();r&&(r.kill(),n(null),Fe.info("Tunnel stopped")),await j($.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),lr({tunnelUrl:"",running:!0})}async function Ds(e,n,r){let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await W("/api/ui/state");return await j($.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}Fe.info("Starting...");try{await j($.PREPARING),await Rn(ir),await j($.CONNECTING);let t=await K(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:r})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await j($.TUNNELING);let i=async l=>{await ht(r,l),await U({tunnelUrl:l}),Mt(l),lr({tunnelUrl:l,running:!0})},s=({attempt:l,delay:u})=>{U({tunnelRetry:{attempt:l,delay:u,at:Date.now()}})},a=null;try{a=await mt(O,i,Wt({onUrlUpdate:i,setTunnel:l=>n(l),onRetry:s}),s)}catch(l){Fe.error(`Tunnel spawn gave up: ${l?.message||l} \u2014 continuing RTC-only`)}U({tunnelRetry:null});let c="";a&&(n(a.child),c=a.tunnelUrl,await j($.VERIFYING),await Ze(c)||Fe.warn("Tunnel health check timed out, proceeding anyway...")),await mr(r,c)}catch(t){Fe.error(`Failed to start: ${t.message}`),await j($.STOPPED)}}async function Wc(){let e=await Et(),{key:n}=St(e),r=Bn();it(e,n,r?.name||"Default"),await U({permanentKey:n}),Fe.info(`Key regenerated: ${Mn(n)}`)}function Vc(e,n){Fe.info("Shutting down 9Remote completely...");let r=e();n(null),dt({tunnelProcess:r}),Fe.info("9Remote stopped")}async function Us(){Ge("agent",process.pid),Ot(Ee());let e=await Ke(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await oe(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Qe(null,null);o||await new Promise(a=>setTimeout(a,ue.serverBootMs));let i=`http://localhost:${O}`;console.log(h.green(`
205
+ \u{1F310} UI ready at ${i}`));let s=null;await U({permanentKey:e.key,step:$.STOPPED,theme:r}),Xe(t,null),tt(()=>s,a=>{s=a},e.key,()=>t),process.argv.includes("--start")&&Tt("start-tunnel"),await new Promise(()=>{})}Gt();async function Fs(){Ge("agent",process.pid),ni().catch(()=>{});let e=await Ke(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null,o=await oe(),t=o?{getProcess:()=>null,shutdown:()=>{}}:Qe(null,null);o||await new Promise(l=>setTimeout(l,ue.serverBootMs));let i=`http://localhost:${O}`,s=null;await U({permanentKey:e.key,step:$.STOPPED,theme:r});let a=()=>{let l=s;s=null,dt({serverManager:t,tunnelProcess:l,exit:!1})};Xe(t,null),tt(()=>s,l=>{s=l},e.key,()=>t);try{Te("cloudflared")}catch{}process.argv.includes("--start")&&Tt("start-tunnel"),await Xr({port:O,onQuit:a,onOpenUI:()=>An(i)})&&Zr({title:"9Remote is running",message:`Open ${i} or use the tray icon to manage.`}),await new Promise(()=>{})}var nt=J("mode");async function Yc(e){nt.info("Starting server..."),await j($.PREPARING);try{Me(),await new Promise(s=>setTimeout(s,ue.killCloudflaredMs))}catch{}try{let s=await K(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!s.ok)return nt.error(`Session create failed: ${s.status}`),null}catch(s){return nt.error(`Session create failed: ${s.message}`),null}let n=await oe(),r=n?{getProcess:()=>null,shutdown:()=>{}}:Qe(null,null);n||await new Promise(s=>setTimeout(s,ue.serverBootMs)),nt.info("Starting tunnel..."),await j($.CONNECTING);let o={current:null},t,i=async s=>{nt.info(`Tunnel URL rotated: ${s}`),await ht(e,s),U({tunnelUrl:s}),Mt(s)};try{let s=await mt(O,i,Wt({onUrlUpdate:i,setTunnel:a=>{o.current=a}}));o.current=s.child,t=s.tunnelUrl}catch(s){return nt.error(`Failed to start tunnel: ${s.message}`),r.shutdown(),null}return await Ze(t)||nt.warn("Tunnel health check timed out, proceeding anyway..."),await ht(e,t),Fn({apiKey:e,tunnelUrl:t,serverPid:r.getProcess()?.pid,tunnelPid:o.current?.pid}),{serverManager:r,tunnelRef:o,tunnelUrl:t}}async function Bs(){Ot(Ee());let e=await Ke();nt.info(`Using key: ${Mn(e.key)} (${e.name})`);let n=await Yc(e.key);n||process.exit(1);let{serverManager:r,tunnelRef:o,tunnelUrl:t}=n;await mr(e.key,t),Xe(r,o.current),tt(()=>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")}`})},ge.statsMs),await new Promise(()=>{})}var Hs=k(require("path"),1),js=k(require("fs"),1);Gt();async function Ks(){let e=`http://localhost:${O}`;await oe()&&(ur(O),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=on;try{js.default.mkdirSync(Hs.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=ei(n),t&&Ge("agent",t)}catch(c){console.log(h.red(`
206
+ \u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+ge.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await oe()){s=!0;break}await new Promise(c=>setTimeout(c,ge.bgServerReadyIntervalMs))}s||(console.log(h.red(`
207
+ \u274C Background server failed to start.`)),console.log(h.gray(` Check log: ${o}
208
+ `)),process.exit(1)),Tt("start-tunnel"),An(e);let a=t?` (PID: ${t})`:"";console.log(h.green(`
209
+ \u{1F310} 9Remote running at ${e}${a}`)),console.log(h.gray(`\u{1F4A1} Log: ${o}
210
+ `)),await new Promise(c=>setTimeout(c,ue.bgSpawnFlushMs)),process.exit(0)}var Gs=k(require("readline"),1);var co=J("mode"),qt=null;async function Ws(){console.clear(),Ri(),_i(!0),await j($.PREPARING);let e=await Ke(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await oe()){r=Qe(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{Gs.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let y=Date.now()+ge.serverReadyTimeoutMs;for(;Date.now()<y&&!await oe();)await new Promise(R=>setTimeout(R,ge.serverReadyIntervalMs))}try{Me(),await new Promise(y=>setTimeout(y,ue.killCloudflaredTuiMs))}catch{}await Rn(ir),await j($.CONNECTING);try{let y=await K(`${D}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e.key})});if(!y.ok)throw new Error(`Session create failed: ${y.status}`)}catch(y){co.error(`Failed to connect: ${y.message}`),process.exit(1)}await j($.TUNNELING);let t=await Vt(e.key,D),i=t?`${D}/login?k=${t.tempKey}`:`${D}/login`,s=t?.tempKey||"",a=i,c="",l=null,u={current:null},f=async y=>{c=y,await ht(e.key,y),await U({tunnelUrl:y}),Mt(y),l!==null&&(l=await Yt(s,e.key,a,c),n?.())},p=null;try{p=await mt(O,f,Wt({onUrlUpdate:f,setTunnel:y=>{u.current=y}}))}catch(y){co.error(`Tunnel spawn gave up: ${y?.message||y} \u2014 continuing RTC-only`)}p&&(u.current=p.child,c=p.tunnelUrl,Fn({apiKey:e.key,tunnelUrl:p.tunnelUrl,tunnelPid:p.child?.pid}),await j($.VERIFYING),await Ze(p.tunnelUrl)||co.warn("Tunnel health check timed out, proceeding anyway..."),await f(p.tunnelUrl)),await j($.READY,{tunnelUrl:c,oneTimeKey:t?.tempKey||"",oneTimeKeyExpiresAt:t?.expiresAt||null,permanentKey:e.key,qrUrl:i,workerUrl:D}),await new Promise(y=>setTimeout(y,ue.trayReadyMs)),l=await Yt(s,e.key,a,c);let d=[],m=!1,w=()=>{m||n?.()},x=async(y,R,S)=>{if(!m){m=!0;try{let _=await bi(R,S);await X(`/api/device/${_?"approve":"reject"}`,{socketId:y})}catch{}finally{m=!1,n?.()}}},P=Ai(O,async(y,R)=>{if(y==="log"&&R.message)d.push(R.message),d.length>Ce.maxLogLines&&d.shift();else if(y==="state"){let S=R.permanentKey||e.key,_=R.oneTimeKey!==void 0?R.oneTimeKey:s,I=R.qrUrl!==void 0?R.qrUrl:a,F=R.tunnelUrl!==void 0?R.tunnelUrl:c;(_!==s||S!==e.key||F!==c)&&(s=_,a=I,c=F,R.permanentKey&&(e={...e,key:R.permanentKey}),l=await Yt(s,e.key,a,c),w())}else y==="permissions"?(m||Promise.resolve(qt?.()).catch(()=>{}),w()):y==="autostart"||y==="sleepInhibit"?(m||Promise.resolve(qt?.()).catch(()=>{}),w()):y==="deviceApproval"&&R.action==="pending"&&await x(R.socketId,R.deviceId,R.ip)}),A=setInterval(async()=>{if(!m)try{let R=(await W("/api/device/pending"))?.pending?.[0];R&&await x(R.socketId,R.deviceId,R.ip)}catch{}},ge.pendingApprovalMs);Xe({getProcess:r.getProcess,shutdown:()=>{r.shutdown();try{u.current?.kill()}catch{}P(),clearInterval(A)}}),tt(()=>u.current,y=>{u.current=y},e.key,()=>r),await qc(e,c,()=>l,y=>{l=y},y=>{n=y},()=>{try{P()}catch{}try{clearInterval(A)}catch{}dt({serverManager:r,tunnelProcess:u.current,exit:!1})},d)}async function qc(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await Hr(),u=[{label:"Open Web UI",action:"webui"},{label:"Keys \u25B6",action:"keys"}];c&&u.push({label:`Remote Desktop: ${a?h.green("ON"):h.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${h.dim("(Auto-approve:")} ${l?h.green("ON"):h.gray("OFF")}${h.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:h.gray("Exit"),action:"exit"});let f=null;t(()=>f?.());let p=await Ae("",u,0,r,m=>{f=m},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let m=`http://localhost:${O}`,{openBrowser:w}=await Promise.resolve().then(()=>(Gt(),os));w(m),console.log(h.green(`
211
+ \u{1F310} Opening ${m}
212
+ `))}else if(d==="keys")await Jc(e,n,o,r);else if(d==="desktop")await Zc();else if(d==="devices")await zc();else if(d==="settings")await Xc();else if(d==="logs")await el();else{try{i?.()}catch{}console.log(h.gray(`
213
213
  Goodbye!
214
- `)),process.exit(0)}}}async function Jc(e,n,r,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 Ae("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await Wt(e.key,D);if(a){let c=`${D}/login?k=${a.tempKey}`;r(await Vt(a.tempKey,e.key,c,n)),await C({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await Ur(m.yellow("Replace current key and disconnect all sessions? Continue?"))){let c=await vt(),{key:l}=St(c),u=ot(c,l,e.name||"Default");Object.assign(e,u),await C({permanentKey:e.key});let f=await Wt(e.key,D);if(f){let p=`${D}/login?k=${f.tempKey}`;r(await Vt(f.tempKey,e.key,p,n)),await C({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var Vs={"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 Qc(e,n){let r=n.map(s=>({label:Vs[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await Ae("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await X("/api/sleep-inhibit",{mode:i})}async function Xc(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${m.green(Vs[n]||n)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await Hr();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),Yt=s;let a=await Ae("Settings",t,0,"",l=>{i=l});Yt=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await X("/api/autostart",{enabled:!e});else if(c==="sleep")await Qc(n,r);else return}}async function Zc(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.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 G("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),Yt=i;let s=await Ae("Remote Desktop",o,0,"",a=>{t=a});if(Yt=null,s===0)await X("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await X("/api/permissions/request",{type:"screenRecording"})||er("screenRecording");else if(s===2&&!n.accessibility)await X("/api/permissions/request",{type:"accessibility"})||er("accessibility");else if(s===3||s===-1)return}}async function zc(){for(;;){let[e,n]=await Promise.all([G("/api/device/approved"),G("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...r.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 Ae(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await X("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await Ur(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await X("/api/device/remove",{deviceId:s.deviceId})}}async function el(){let e=Lo(go),n=e.length?e.join(`
215
- `):m.gray(" No logs yet"),r=`
216
- ${m.dim("Log file:")} ${m.cyan(rn)}
217
- ${m.dim(`Tail: tail -f ${rn}`)}`;await Ae("Logs",[{label:m.gray("\u2190 Back")}],0,n+r)}async function Ys(){let e=Se(),n=await fi(),r=Fr(e,n?.latest??null),o=[];n?.latest&&o.push({label:m.yellow(`Update to v${n.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 Ae("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Ce.headerWidth,process.stdout.columns||Ce.headerWidth);zn(),console.log(fe.orange(`
218
- `+"\u2550".repeat(s))),console.log(m.gray(` \u2713 Stopped running instances
219
- `)),console.log(m.yellow(` \u2B06 Run this command to update:
220
- `)),console.log(m.white.bold(` npm i -g ${$e}
214
+ `)),process.exit(0)}}}async function Jc(e,n,r,o){let t=[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:h.gray("\u2190 Back"),action:"back"}],i=await Ae("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await Vt(e.key,D);if(a){let c=`${D}/login?k=${a.tempKey}`;r(await Yt(a.tempKey,e.key,c,n)),await U({oneTimeKey:a.tempKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await Fr(h.yellow("Replace current key and disconnect all sessions? Continue?"))){let c=await Et(),{key:l}=St(c),u=it(c,l,e.name||"Default");Object.assign(e,u),await U({permanentKey:e.key});let f=await Vt(e.key,D);if(f){let p=`${D}/login?k=${f.tempKey}`;r(await Yt(f.tempKey,e.key,p,n)),await U({oneTimeKey:f.tempKey,oneTimeKeyExpiresAt:f.expiresAt,qrUrl:p})}}}var Vs={"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 Qc(e,n){let r=n.map(s=>({label:Vs[s]||s,action:s}));r.push({label:h.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await Ae("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await X("/api/sleep-inhibit",{mode:i})}async function Xc(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?h.green("ON"):h.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${h.green(Vs[n]||n)} \u25B6`,action:"sleep"},{label:h.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await Hr();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),qt=s;let a=await Ae("Settings",t,0,"",l=>{i=l});qt=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await X("/api/autostart",{enabled:!e});else if(c==="sleep")await Qc(n,r);else return}}async function Zc(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?h.green("ON \u2192 turn OFF"):h.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?h.green("\u2713"):h.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.accessibility?h.green("\u2713"):h.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:h.gray("\u2190 Back")}],t=null,i=async()=>{let a=await W("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),qt=i;let s=await Ae("Remote Desktop",o,0,"",a=>{t=a});if(qt=null,s===0)await X("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await X("/api/permissions/request",{type:"screenRecording"})||tr("screenRecording");else if(s===2&&!n.accessibility)await X("/api/permissions/request",{type:"accessibility"})||tr("accessibility");else if(s===3||s===-1)return}}async function zc(){for(;;){let[e,n]=await Promise.all([W("/api/device/approved"),W("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?h.green("ON"):h.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${h.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:h.gray("\u2190 Back"),action:"back"}],i=await Ae(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await X("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await Fr(h.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await X("/api/device/remove",{deviceId:s.deviceId})}}async function el(){let e=No(yo),n=e.length?e.join(`
215
+ `):h.gray(" No logs yet"),r=`
216
+ ${h.dim("Log file:")} ${h.cyan(on)}
217
+ ${h.dim(`Tail: tail -f ${on}`)}`;await Ae("Logs",[{label:h.gray("\u2190 Back")}],0,n+r)}async function Ys(){let e=Ee(),n=await pi(),r=Ur(e,n?.latest??null),o=[];n?.latest&&o.push({label:h.yellow(`Update to v${n.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:h.gray("Exit"),action:"exit"});let t=await Ae("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Ce.headerWidth,process.stdout.columns||Ce.headerWidth);er(),console.log(fe.orange(`
218
+ `+"\u2550".repeat(s))),console.log(h.gray(` \u2713 Stopped running instances
219
+ `)),console.log(h.yellow(` \u2B06 Run this command to update:
220
+ `)),console.log(h.white.bold(` npm i -g ${$e}
221
221
  `)),console.log(fe.orange("\u2550".repeat(s))+`
222
- `),process.exit(0)}else i==="ui"?await js():i==="tui"?await Ws():process.exit(0)}var qs=[["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 co(){Pt(Se()),console.log(m.white.bold(`
222
+ `),process.exit(0)}else i==="ui"?await Ks():i==="tui"?await Ws():process.exit(0)}var qs=[["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 lo(){Ot(Ee()),console.log(h.white.bold(`
223
223
  Usage:
224
- `));let e=Math.max(...qs.map(([n])=>n.length))+2;for(let[n,r]of qs)console.log(" "+m.cyan(n.padEnd(e))+m.gray(r));console.log()}async function On(){return await oe()?!0:(console.log(m.red(`
225
- \u2717 Server not running. Start it first: `)+m.cyan("9remote start")+`
226
- `),!1)}async function tl(e){if(!await On())return;if(e){let r=await X("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
224
+ `));let e=Math.max(...qs.map(([n])=>n.length))+2;for(let[n,r]of qs)console.log(" "+h.cyan(n.padEnd(e))+h.gray(r));console.log()}async function In(){return await oe()?!0:(console.log(h.red(`
225
+ \u2717 Server not running. Start it first: `)+h.cyan("9remote start")+`
226
+ `),!1)}async function tl(e){if(!await In())return;if(e){let r=await X("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(h.red(`
227
227
  \u2717 Regenerate failed
228
- `));return}console.log(m.green(`
229
- \u2713 New key: `)+m.white.bold(o.permanentKey)+`
230
- `);return}let n=await G("/api/ui/state")||{};if(!n.permanentKey){console.log(m.red(`
231
- \u2717 No key yet. Run: `)+m.cyan("9remote start")+`
232
- `);return}console.log(m.white(`
233
- Key`.padEnd(14))+m.white.bold(n.permanentKey)),n.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(n.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${D}/login`)+`
234
- `)}async function nl(){if(!await On())return;let e=await X("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(m.red(`
228
+ `));return}console.log(h.green(`
229
+ \u2713 New key: `)+h.white.bold(o.permanentKey)+`
230
+ `);return}let n=await W("/api/ui/state")||{};if(!n.permanentKey){console.log(h.red(`
231
+ \u2717 No key yet. Run: `)+h.cyan("9remote start")+`
232
+ `);return}console.log(h.white(`
233
+ Key`.padEnd(14))+h.white.bold(n.permanentKey)),n.qrUrl&&console.log(h.white("Connect URL".padEnd(14))+h.cyan(n.qrUrl)),console.log(h.white("App URL".padEnd(14))+h.gray(`${D}/login`)+`
234
+ `)}async function nl(){if(!await In())return;let e=await X("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(h.red(`
235
235
  \u2717 Failed to create one-time key
236
- `));return}console.log(m.green(`
237
- \u2713 One-time key (30 min): `)+m.white.bold(n.oneTimeKey)),console.log(m.white("Connect URL ")+m.cyan(n.qrUrl)+`
238
- `)}async function rl(){if(!await On())return;let n=(await G("/api/device/approved")||{}).devices||[],r=await G("/api/device/auto-approve")||{};if(console.log(m.white(`
239
- Auto-approve: `)+(r.enabled?m.green("ON"):m.gray("OFF"))),!n.length){console.log(m.gray(`No approved devices
240
- `));return}console.log(m.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+m.cyan(o.deviceId));console.log()}async function ol(e){if(!await On())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
236
+ `));return}console.log(h.green(`
237
+ \u2713 One-time key (30 min): `)+h.white.bold(n.oneTimeKey)),console.log(h.white("Connect URL ")+h.cyan(n.qrUrl)+`
238
+ `)}async function rl(){if(!await In())return;let n=(await W("/api/device/approved")||{}).devices||[],r=await W("/api/device/auto-approve")||{};if(console.log(h.white(`
239
+ Auto-approve: `)+(r.enabled?h.green("ON"):h.gray("OFF"))),!n.length){console.log(h.gray(`No approved devices
240
+ `));return}console.log(h.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+h.cyan(o.deviceId));console.log()}async function ol(e){if(!await In())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(h.red(`
241
241
  \u2717 Usage: 9remote auto-approve <on|off>
242
- `));return}let r=await X("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(m.green(`
243
- \u2713 Auto-approve: `)+(o?.enabled?m.green("ON"):m.gray("OFF"))+`
244
- `)}async function il(e){if(!await On())return;if(!e){let t=(await G("/api/device/pending")||{}).pending||[];if(!t.length){console.log(m.gray(`
242
+ `));return}let r=await X("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(h.green(`
243
+ \u2713 Auto-approve: `)+(o?.enabled?h.green("ON"):h.gray("OFF"))+`
244
+ `)}async function il(e){if(!await In())return;if(!e){let t=(await W("/api/device/pending")||{}).pending||[];if(!t.length){console.log(h.gray(`
245
245
  No pending devices
246
- `));return}console.log(m.white(`
247
- 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(`
248
- Approve with: `)+m.cyan("9remote approve <socketId>")+`
249
- `);return}let n=await X("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?m.green(`
246
+ `));return}console.log(h.white(`
247
+ Pending devices (${t.length}):`));for(let i of t)console.log(" "+h.cyan(i.socketId)+h.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(h.gray(`
248
+ Approve with: `)+h.cyan("9remote approve <socketId>")+`
249
+ `);return}let n=await X("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?h.green(`
250
250
  \u2713 Approved
251
- `):m.red(`
251
+ `):h.red(`
252
252
  \u2717 Approve failed (invalid socketId?)
253
- `))}async function Js(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return co(),!0;case"key":return await tl(r.includes("--new")),!0;case"otk":return await nl(),!0;case"devices":return await rl(),!0;case"auto-approve":return await ol(r[0]),!0;case"approve":return await il(r[0]),!0;default:return!1}}var lo=process.argv[2];(lo==="version"||lo==="--version"||lo==="-v")&&(process.stdout.write(Se()+`
254
- `),process.exit(0));Co();async function sl(){let e=process.argv[2];if(await Js(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||zn(),e==="ui"?await Ds():e==="start"||process.argv.includes("--auto")?await Us():process.argv.includes("--tray")||process.argv.includes("--start")?await Fs():process.stdin.isTTY?await Ys():co()}sl().catch(console.error);
253
+ `))}async function Js(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return lo(),!0;case"key":return await tl(r.includes("--new")),!0;case"otk":return await nl(),!0;case"devices":return await rl(),!0;case"auto-approve":return await ol(r[0]),!0;case"approve":return await il(r[0]),!0;default:return!1}}var uo=process.argv[2];(uo==="version"||uo==="--version"||uo==="-v")&&(process.stdout.write(Ee()+`
254
+ `),process.exit(0));Lo();async function sl(){let e=process.argv[2];if(await Js(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||er(),e==="ui"?await Us():e==="start"||process.argv.includes("--auto")?await Bs():process.argv.includes("--tray")||process.argv.includes("--start")?await Fs():process.stdin.isTTY?await Ys():lo()}sl().catch(console.error);