9remote 2.5.2 → 2.5.3

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