9remote 2.0.68 → 2.0.70

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