9remote 2.0.66 → 2.0.67

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/server.cjs CHANGED
@@ -88,7 +88,7 @@ WantedBy=default.target
88
88
 
89
89
  `),gl&&e.write(`data: ${JSON.stringify({type:"updateAvailable",...gl})}
90
90
 
91
- `),ml.add(e),r.on("close",()=>ml.delete(e))}function gw(r,e){X(e,{...ln,...Er,desktopEnabled:Bt,remoteAvailable:nh})}async function vw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);n&&(un(n),X(e))}function yw(r,e){X(e),un({step:zn.PREPARING,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Dn("restart-tunnel")}function xw(r,e){X(e),un({step:zn.PREPARING,stepDesc:""}),Dn("start-tunnel")}function _w(r,e){X(e),un({step:zn.STOPPED,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Dn("stop-tunnel")}function bw(r,e){X(e),un({step:zn.STOPPED,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Dn("shutdown")}function ww(r,e){X(e),Dn("update")}function Sw(r,e){X(e,{connections:[...li.values()]})}function Ew(r,e){let t=new URL(r.url,"http://localhost"),n=parseInt(t.searchParams.get("lines")||bp,10);X(e,{logs:Sv(Number.isFinite(n)?n:bp)})}async function Tw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);if(!n)return;let i=!!n.enabled;if(i&&(!Er.screenRecording||!Er.accessibility)){X(e,{ok:!1,enabled:Bt,reason:"permissions_required"});return}let s=xs();Bt=i,rh(),_t("permissions",{...Er,desktopEnabled:Bt}),xs()!==s&&ih?.(),X(e,{ok:!0,enabled:Bt})}function Cw(r,e){X(e,Er)}async function Aw(r,e){let t=await Vd();X(e,{enabled:t})}async function Rw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);if(!n)return;let i=await Yb(!!n.enabled),s=await Vd();_t("autostart",{enabled:s}),X(e,{ok:i,enabled:s})}async function kw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);if(!n)return;let{type:i}=n;if(process.platform==="darwin"){$b(i);let s=Date.now(),o=setInterval(async()=>{((await vl())[i]||Date.now()-s>gv)&&clearInterval(o)},mv)}X(e)}var Bn,rw,th,ln,Bt,nh,Er,ml,li,gl,ih,pn=Ee(()=>{vt();Ii();vt();hs();Wb();Kd();Pt();nl();vt();Bn=require("fs"),rw=require("path");vt();Yd();th=(0,rw.join)(ie.STATE,"ui-state.json");ln={step:zn.STOPPED,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,permanentKey:"",qrUrl:"",latency:null,uptime:null,healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]},tunnelHealth:{status:"unknown",checkedAt:null}},Bt=!1,nh=!1,Er={screenRecording:!1,accessibility:!1},ml=new Set,li=new Map;wv(ve);gl=null;ih=null});var Ow={};Vr(Ow,{ScreenHandler:()=>sh,encodeTilesBatch:()=>_s});function Y2(r){let e=Buffer.alloc(28);return e.writeUInt32LE(r.tileIndex,0),e.writeUInt32LE(r.x,4),e.writeUInt32LE(r.y,8),e.writeUInt32LE(r.width,12),e.writeUInt32LE(r.height,16),e.writeUInt32LE(r.imageBuffer.length,20),e.writeUInt32LE(r.hash>>>0,24),Buffer.concat([e,r.imageBuffer])}function _s(r,e){let t=Buffer.alloc(12);return t.writeUInt32LE(r.length,0),t.writeDoubleBE(e,4),Buffer.concat([t,...r.map(Y2)])}var sh,oh=Ee(()=>{qd();at();pn();sh=class{constructor(e,t){this.resourceManager=e,this.screenUpdateHelper=t}setupScreenHandlers(e,t,n){e.on("request-screen",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let s=await i.tileManager.detectChangedTiles();s.length>0&&n.sendTiles({tiles:s,timestamp:Date.now()},_s),this.resourceManager.updateClientActivity(e.id)}catch(s){me.error("Tile capture error:",s),n.emit("screen-error",{error:s.message})}})),e.on("request-screen-with-hashes",t(async i=>{let s=this.resourceManager.getClient(e.id);if(s)try{let o=i.tileHashes||[],a=await s.tileManager.compareClientTileHashes(o);a?.tiles?.length>0&&n.sendTiles({tiles:a.tiles,timestamp:Date.now()},_s),this.resourceManager.updateClientActivity(e.id)}catch(o){me.error("Tile capture with hashes error:",o),n.emit("screen-error",{error:o.message})}})),e.on("start-streaming",t(async()=>{let i=this.resourceManager.getClient(e.id);if(!i)return;i.streamingTimeout&&(clearTimeout(i.streamingTimeout),i.streamingTimeout=null),me.lifecycle("\u{1F680} Remote streaming started");let{tileFormat:s,webpEffort:o,jpegQuality:a}=$.pipeline;ve(`\u{1F5BC}\uFE0F Remote stream codec: ${s.toUpperCase()}${s==="webp"?` (effort=${o})`:""} q=${a}`),i.idleFrameCount=0,i.isStreaming=!0,i.streamGen=(i.streamGen||0)+1;let c=i.streamGen;i.tileManager.lastTileChecksums.clear();try{let p=await i.tileManager.getScreenDimensions();n.emit("screen-dimensions",p)}catch(p){me.error("Get dimensions error:",p)}let l=async()=>{if(!e.connected||!i.isStreaming||i.streamGen!==c){i.streamingTimeout=null;return}try{let p=performance.now(),f=await i.tileManager.detectChangedTilesWithHashes();f.tiles.length>0&&e.connected?(n.sendTiles({tiles:f.tiles,timestamp:Date.now(),currentHashes:f.currentHashes},_s),i.idleFrameCount=0):i.idleFrameCount++;let{activeInterval:h,idleInterval:v,idleThreshold:x}=this.resourceManager.getStreamingConfig(),S=i.idleFrameCount>=x?v:h,A=Math.max(0,S-(performance.now()-p));i.streamingTimeout=setTimeout(l,A)}catch(p){me.error("Auto streaming error:",p),i.streamingTimeout=setTimeout(l,200)}};l()})),e.on("stop-streaming",()=>{let i=this.resourceManager.getClient(e.id);i&&(i.isStreaming=!1,i.streamingTimeout&&(clearTimeout(i.streamingTimeout),i.streamingTimeout=null),i.tileManager?.clearMemory?.(),me.lifecycle("\u23F9\uFE0F Remote streaming stopped"))}),e.on("get-screen-dimensions",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let s=await i.tileManager.getScreenDimensions();n.emit("screen-dimensions",s)}catch(s){me.error("Get dimensions error:",s),n.emit("screen-error",{error:s.message})}})),e.on("boost-stream",t(()=>{let i=this.resourceManager.getClient(e.id);i&&(i.idleFrameCount=0)})),e.on("set-focus",t(i=>{let s=this.resourceManager.getClient(e.id);if(!s)return;let o=i?.rect||null,a=typeof i?.zoom=="number"?i.zoom:1,c=typeof i?.viewerWidth=="number"?i.viewerWidth:0,l=typeof i?.dpr=="number"?i.dpr:1,p=s.tileManager.pickProfile({zoom:a,viewerWidth:c,dpr:l});if(s.tileManager.setProfile(p),s.tileManager.setFocusRect(o),o){let f=s.tileManager.activeTileSet?.size||0,h=s.tileManager.totalTiles,v=h?(f/h*100).toFixed(0):0;me.focus(`\u{1F3AF} [Focus] rect=${o.x},${o.y} ${o.w}x${o.h} | tiles ${f}/${h} (${v}%)`)}else me.focus("\u{1F3AF} [Focus] cleared \u2192 full screen")}))}}});function Mw(r){ah.add(r)}function bs(r){ah.delete(r)}function bt(r,e,t){for(let n of ah)if(n.hasReadyAdapter?.())try{n.emit(e,t)}catch{}}var ah,ui=Ee(()=>{ah=new Set});async function Vw(){if(Go)return Go;let r=await import("node-screenshots");if(Go=(r.Monitor||r.default?.Monitor).all()[0],!Go)throw new Error("No monitor found via node-screenshots");return Go}async function Kw(r){hh=r,$.pipeline.captureLib==="nodeScreenshots"&&await Vw()}async function Yw(){let{captureLib:r,inputFormat:e}=$.pipeline;if(r==="robotjs"){let{width:s,height:o}=hh.getScreenSize(),a=hh.screen.capture(0,0,s,o),c=a.byteWidth/a.bytesPerPixel;return{buffer:Buffer.from(a.image),width:c,height:a.height,channels:a.bytesPerPixel,format:e}}let n=(await Vw()).captureImageSync();return{buffer:n.toRawSync?n.toRawSync():n.rawSync(),width:n.width,height:n.height,channels:4,format:e}}var hh,Go,Jw=Ee(()=>{at();hh=null,Go=null});function lB(r){return r==="bgra"?gh.FORMAT_BGRA:gh.FORMAT_RGBA}function vh(r){let e=new Uint32Array(r.buffer,r.byteOffset,r.length>>2);for(let t=0;t<e.length;t++){let n=e[t];e[t]=n&4278255360|(n&16711680)>>16|(n&255)<<16}}async function Xw(r,e,t,n=4,i,s){let{encoder:o,inputFormat:a,jpegQuality:c,tileFormat:l,webpEffort:p}=$.pipeline,f=i??c,h=s??a;if(o==="jpegTurbo"&&l!=="webp")return gh.compressSync(r,{width:e,height:t,format:lB(h),quality:f});let v=r;h==="bgra"&&(v=Buffer.from(r),vh(v));let x=(0,kl.default)(v,{raw:{width:e,height:t,channels:n}});return l==="webp"?x.webp({quality:f,effort:p}).toBuffer():x.jpeg({quality:f}).toBuffer()}var kl,mh,gh,Zw=Ee(()=>{kl=K(require("sharp"),1),mh=K(require("@julusian/jpeg-turbo"),1);at();gh=mh.default.default||mh.default;kl.default.cache(!1);kl.default.concurrency(1)});var Ol,Qw=Ee(()=>{at();pn();Ol=class{constructor(){this.cfg=$.logging,this.samples=[],this.lastLogTime=Date.now()}now(){return this.cfg.metrics?performance.now():0}record({capture:e,checksum:t,encode:n,total:i,changedTiles:s,totalTiles:o,tileBytes:a,rawBytes:c}){this.cfg.metrics&&(this.samples.push({capture:e,checksum:t,encode:n,total:i,changedTiles:s,totalTiles:o,tileBytes:a,rawBytes:c}),this.samples.length>=this.cfg.metricsEveryFrames&&this._flush())}_flush(){let e=this.samples.length,t=I=>(this.samples.reduce((B,V)=>B+V[I],0)/e).toFixed(1),n=(Date.now()-this.lastLogTime)/1e3,i=(e/n).toFixed(1),s=[],o=0;for(let I of this.samples){for(let B of I.tileBytes)s.push(B);o+=I.tileBytes.reduce((B,V)=>B+V,0)}let a=(o/e/1024).toFixed(1),c=s.length?(s.reduce((I,B)=>I+B,0)/s.length/1024).toFixed(2):"0",l=s.length?(Math.min(...s)/1024).toFixed(2):"0",p=s.length?(Math.max(...s)/1024).toFixed(2):"0",f=this.samples.reduce((I,B)=>I+B.rawBytes,0)/e,h=o/e,v=h>0?(f/h).toFixed(0):"0",x=(this.samples.reduce((I,B)=>I+B.changedTiles,0)/e).toFixed(0),S=this.samples[0]?.totalTiles||0,A=S?(x/S*100).toFixed(1):"0",k=$.pipeline,P=`[Metrics] ${k.captureLib}+${k.encoder} tile=${k.tileSize} q${k.jpegQuality} scale=${k.outputScale} | fps=${i} | capture=${t("capture")}ms enc=${t("encode")}ms total=${t("total")}ms | tiles=${x}/${S} (${A}%) | data=${a}KB/frame | tileAvg=${c}KB (min ${l}, max ${p}) | compress=${v}x`;ve(P),console.log(P),this.samples=[],this.lastLogTime=Date.now()}}});var rS={};Vr(rS,{TileManager:()=>yh,mapLimit:()=>fi});async function fi(r,e,t){let n=new Array(r.length),i=0,s=Array.from({length:Math.min(e,r.length)},async()=>{for(;i<r.length;){let o=i++;n[o]=await t(r[o],o)}});return await Promise.all(s),n}var Es,Pl,eS,Ml,tS,uB,pB,yh,nS=Ee(()=>{Es=K(require("fs"),1),Pl=K(require("path"),1),eS=K(require("sharp"),1),Ml=require("child_process"),tS=require("url");at();Jw();Zw();Qw();qd();uB=(0,tS.fileURLToPath)(__importMetaUrl),pB=Pl.default.dirname(uB);yh=class{constructor(e){this.robot=e,this.metrics=new Ol,this.tileSize=$.pipeline.tileSize,this.lastTileChecksums=new Map,this.screenWidth=0,this.screenHeight=0,this.tilesPerRow=0,this.tilesPerColumn=0,this.totalTiles=0,this.frameCount=0,this.tempDir=Pl.default.join(pB,"../../temp"),this.changeThreshold=1,this.scaledWidth=0,this.scaledHeight=0,this.isProcessing=!1,this.sharedScreenCache=null,this.lastCaptureTime=0,this.CACHE_TTL=100,this.dpiScale=1,this.captureWidth=0,this.captureHeight=0,this.scaleFactor=$.pipeline.outputScale||1,this.compressionQuality=$.pipeline.jpegQuality,this.activeTileSet=null,this.focusStats={frames:0,scanned:0,changed:0,bytes:0},Es.default.existsSync(this.tempDir)||Es.default.mkdirSync(this.tempDir,{recursive:!0}),Kw(e),this.initializeScreenDimensions()}initializeScreenDimensions(){try{let{width:e,height:t}=this.robot.getScreenSize();this.screenWidth=e,this.screenHeight=t,this.detectDpiScale(),this.scaledWidth=this.captureWidth,this.scaledHeight=this.captureHeight,this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn;let n=100;if(this.totalTiles>n){let i=Math.ceil(Math.sqrt(this.scaledWidth*this.scaledHeight/n));this.tileSize=Math.max(i,120),this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}}catch(e){me.error("Screen dimensions error:",e),this.screenWidth=1920,this.screenHeight=1080,this.dpiScale=1,this.captureWidth=1920,this.captureHeight=1080,this.scaledWidth=1728,this.scaledHeight=972,this.tileSize=120,this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}}detectDpiScale(){if(process.platform==="darwin"){let e=this.robot.screen.capture(0,0,this.screenWidth,this.screenHeight),n=e.byteWidth/e.bytesPerPixel/this.screenWidth;n>=1.9&&n<=2.1?this.dpiScale=2:this.dpiScale=1}else process.platform==="win32"?this.dpiScale=this._detectDpiScaleWin32():this.dpiScale=1;this.captureWidth=Math.floor(this.screenWidth*this.dpiScale),this.captureHeight=Math.floor(this.screenHeight*this.dpiScale)}_detectDpiScaleWin32(){me.dpi(`\u{1F50D} [DPI Detection] screenWidth from robot: ${this.screenWidth}x${this.screenHeight}`);try{let e=(0,Ml.execSync)(`powershell -NonInteractive -NoProfile -WindowStyle Hidden -command "try{Get-ItemPropertyValue 'HKCU:\\Control Panel\\Desktop\\WindowMetrics' -Name AppliedDPI}catch{0}"`,{encoding:"utf8",windowsHide:!0}).trim(),t=Number(e);if(me.dpi(`\u{1F50D} [DPI Detection] Strategy 1 (Registry AppliedDPI): ${t} DPI`),t>=96){let n=t/96;return me.dpi(`\u2705 [DPI Detection] Using registry scale: ${n}x (${t}/96)`),n}}catch(e){me.dpi(`\u274C [DPI Detection] Strategy 1 failed: ${e.message}`)}try{let e=(0,Ml.execSync)('powershell -NonInteractive -NoProfile -WindowStyle Hidden -command "(Get-WmiObject -Class Win32_VideoController | Select-Object -First 1).CurrentHorizontalResolution"',{encoding:"utf8",windowsHide:!0}).trim(),t=Number(e);if(me.dpi(`\u{1F50D} [DPI Detection] Strategy 2 (WMI): physical width = ${t}px`),t>0&&t>this.screenWidth){let n=t/this.screenWidth;return me.dpi(`\u2705 [DPI Detection] Using WMI scale: ${n}x (${t}/${this.screenWidth})`),n}}catch(e){me.dpi(`\u274C [DPI Detection] Strategy 2 failed: ${e.message}`)}try{let e=(0,Ml.execSync)(`powershell -NonInteractive -NoProfile -WindowStyle Hidden -command "Add-Type -TypeDefinition 'using System;using System.Runtime.InteropServices;public class Disp{[DllImport(\\"user32\\")]public static extern bool EnumDisplaySettings(string d,int m,ref DEVMODE dm);[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)]public struct DEVMODE{[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]public string dmDeviceName;public short dmSpecVersion,dmDriverVersion,dmSize,dmDriverExtra;public int dmFields;public int dmPositionX,dmPositionY,dmDisplayOrientation,dmDisplayFixedOutput;public short dmColor,dmDuplex,dmYResolution,dmTTOption,dmCollate;[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]public string dmFormName;public short dmLogPixels;public int dmBitsPerPel,dmPelsWidth,dmPelsHeight,dmDisplayFlags,dmDisplayFrequency;}}'; $dm=New-Object Disp+DEVMODE; $dm.dmSize=[System.Runtime.InteropServices.Marshal]::SizeOf($dm); [Disp]::EnumDisplaySettings($null,-1,[ref]$dm) | Out-Null; Write-Output $dm.dmPelsWidth"`,{encoding:"utf8",windowsHide:!0}).trim(),t=Number(e);if(me.dpi(`\u{1F50D} [DPI Detection] Strategy 3 (EnumDisplaySettings): physical width = ${t}px`),t>0&&t>this.screenWidth){let n=t/this.screenWidth;return me.dpi(`\u2705 [DPI Detection] Using EnumDisplaySettings scale: ${n}x (${t}/${this.screenWidth})`),n}}catch(e){me.dpi(`\u274C [DPI Detection] Strategy 3 failed: ${e.message}`)}return me.dpi("\u26A0\uFE0F [DPI Detection] All strategies failed, fallback to 1x"),1}async captureFullScreen(){let e=await Yw();return{buffer:e.buffer,width:e.width,height:e.height,channels:e.channels}}async getSharedScreenCapture(){let e=Date.now();return this.sharedScreenCache&&e-this.lastCaptureTime<this.CACHE_TTL?this.sharedScreenCache:(this.sharedScreenCache=await this.captureFullScreen(),this.lastCaptureTime=e,this.sharedScreenCache)}clearScreenCache(){}async detectChangedTiles(){return(await this.detectChangedTilesWithHashes()).tiles}async detectChangedTilesWithHashes(){if(this.isProcessing)return{tiles:[],currentHashes:Array.from(this.lastTileChecksums.values())};this.isProcessing=!0;let e=this.metrics.now(),t=e,n=e;try{let i=await this.getSharedScreenCapture();t=this.metrics.now();let s=[],o=[],a=new Map;this.frameCount++;let c=this.activeTileSet;for(let f=0;f<this.totalTiles;f++){if(c&&!c.has(f))continue;let h=this.calculateTileChecksumDirect(i,f);a.set(f,h)}n=this.metrics.now();let l=Array.from(a.values());if(this.lastTileChecksums.size===0){let f=[];for(let v=0;v<this.totalTiles;v++)c&&!c.has(v)||(this.lastTileChecksums.set(v,a.get(v)),f.push(v));let h=await fi(f,$.pipeline.tileConcurrency,v=>this.processTileAsync(i,v));return s.push(...h),this._recordFrame(e,t,n,s,i),{tiles:s,currentHashes:l}}for(let f=0;f<this.totalTiles;f++){if(c&&!c.has(f))continue;let h=a.get(f),v=this.lastTileChecksums.get(f);h!==v&&(o.push(f),this.lastTileChecksums.set(f,h))}if(o.length/this.totalTiles>this.changeThreshold){let f=[];for(let v=0;v<this.totalTiles;v++)c&&!c.has(v)||f.push(v);let h=await fi(f,$.pipeline.tileConcurrency,v=>this.processTileAsync(i,v));s.push(...h.map(v=>({...v,fullRefresh:!0})))}else if(o.length>0){let f=await fi(o,$.pipeline.tileConcurrency,h=>this.processTileAsync(i,h));s.push(...f)}return this._recordFrame(e,t,n,s,i),{tiles:s,currentHashes:l}}finally{this.isProcessing=!1}}async processTileAsync(e,t,n=null){let i=n||this.extractTile(e,t),s=await this.compressTileImage(i.buffer,i.width,i.height),{row:o,col:a}=this.getTilePosition(t);return{type:"tile-update",tileIndex:t,x:a*this.tileSize,y:o*this.tileSize,width:i.width,height:i.height,imageBuffer:s,hash:this.lastTileChecksums.get(t)??0,timestamp:Date.now(),frameCount:this.frameCount}}calculateTileChecksumDirect(e,t){let{row:n,col:i}=this.getTilePosition(t),s=i*this.tileSize,o=n*this.tileSize,a=Math.min(s+this.tileSize,e.width),c=Math.min(o+this.tileSize,e.height),l=a-s,p=c-o,f=e.channels,h=e.width*f,v=0,{rowStep:x,colStep:S}=$.pipeline.checksumSampling;for(let A=0;A<p;A+=x){let k=(o+A)*h+s*f;for(let P=0;P<l;P+=S){let I=k+P*f,B=P+1;v=v+e.buffer[I]*B>>>0,v^=e.buffer[I+1]<<1,v=v+e.buffer[I+2]*B>>>0,v^=e.buffer[I+3]<<2}}return v>>>0}setFocusRect(e){if(!e){this.activeTileSet=null;return}let t=$.focus.paddingTiles,n=Math.max(0,Math.floor(e.x/this.tileSize)-t),i=Math.max(0,Math.floor(e.y/this.tileSize)-t),s=Math.min(this.tilesPerRow-1,Math.floor((e.x+e.w)/this.tileSize)+t),o=Math.min(this.tilesPerColumn-1,Math.floor((e.y+e.h)/this.tileSize)+t),a=new Set;for(let l=i;l<=o;l++)for(let p=n;p<=s;p++)a.add(l*this.tilesPerRow+p);let c=this.activeTileSet;if(c)for(let l of a)c.has(l)||this.lastTileChecksums.delete(l);this.activeTileSet=a}getTilePosition(e){return{row:Math.floor(e/this.tilesPerRow),col:e%this.tilesPerRow}}extractTile(e,t){let{row:n,col:i}=this.getTilePosition(t),s=i*this.tileSize,o=n*this.tileSize,a=Math.min(s+this.tileSize,e.width),c=Math.min(o+this.tileSize,e.height),l=a-s,p=c-o,f=e.channels,h=l*f,v=Buffer.alloc(l*p*f);for(let x=0;x<p;x++){let S=((o+x)*e.width+s)*f,A=x*h;e.buffer.copy(v,A,S,S+h)}return{buffer:v,width:l,height:p,channels:f,tileIndex:t,x:s,y:o}}async compressTileImage(e,t,n){let i=this.scaleFactor;if(i&&i>0&&i<1){let s=Math.max(1,Math.floor(t*i)),o=Math.max(1,Math.floor(n*i)),{inputFormat:a}=$.pipeline,c=e,l=4;a==="bgra"&&(c=Buffer.from(e),vh(c));let{tileFormat:p,webpEffort:f}=$.pipeline,h=(0,eS.default)(c,{raw:{width:t,height:n,channels:l}}).resize(s,o,{kernel:"lanczos3",fastShrinkOnLoad:!1});return p==="webp"?h.webp({quality:this.compressionQuality,effort:f}).toBuffer():h.jpeg({quality:this.compressionQuality}).toBuffer()}return Xw(e,t,n,4,this.compressionQuality)}pickProfile({zoom:e=1,viewerWidth:t=0,dpr:n=1}={}){let i=$.pipeline.adaptiveTiers||[];if(!i.length)return null;let s=this.captureWidth||this.screenWidth||1,o=t>0?t:s,a=e>0?e:1,c=n>0?n:1,l=o*a*c/s,p=$.pipeline.tierHysteresis||0,f=this._currentTier;for(let v of i){let x=f&&v===f?v.minEffective-p:v.minEffective;if(l>=x)return this._currentTier=v,v}let h=i[i.length-1];return this._currentTier=h,h}setProfile(e){if(!e)return;let t=e.outputScale??this.scaleFactor,n=e.jpegQuality??this.compressionQuality;t===this.scaleFactor&&n===this.compressionQuality||(this.scaleFactor=t,this.compressionQuality=n,this.lastTileChecksums.clear())}_recordFrame(e,t,n,i,s){if(this._recordFocusFrame(i),!this.metrics.cfg.metrics)return;let o=this.metrics.now(),a=i.map(l=>l.imageBuffer?.length||0),c=s?s.width*s.height*s.channels:0;this.metrics.record({capture:t-e,checksum:n-t,encode:o-n,total:o-e,changedTiles:i.length,totalTiles:this.totalTiles,tileBytes:a,rawBytes:c})}_recordFocusFrame(e){let t=this.focusStats;t.frames++,t.scanned+=this.activeTileSet?this.activeTileSet.size:this.totalTiles,t.changed+=e.length;for(let c of e)t.bytes+=c.imageBuffer?.length||0;if(t.frames<$.logging.focusEveryFrames)return;let n=(t.scanned/t.frames).toFixed(0),i=(t.changed/t.frames).toFixed(1),s=(t.bytes/t.frames/1024).toFixed(1),o=this.totalTiles?((1-n/this.totalTiles)*100).toFixed(0):0,a=this.activeTileSet?"focus":"full";me.focus(`\u{1F3AF} [Focus/${a}] ${t.frames}f | scan ${n}/${this.totalTiles} tiles (saved ${o}%) | changed ${i}/f | data ${s}KB/f`),this.focusStats={frames:0,scanned:0,changed:0,bytes:0}}async getScreenDimensions(){try{let e=await this.captureFullScreen();this.scaledWidth=e.width,this.scaledHeight=e.height,this.tilesPerRow=Math.ceil(e.width/this.tileSize),this.tilesPerColumn=Math.ceil(e.height/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}catch(e){me.error("Error getting dimensions:",e)}return{width:this.scaledWidth,height:this.scaledHeight,tileWidth:this.tileSize,tileHeight:this.tileSize,tileCount:this.totalTiles,scaleFactor:this.scaleFactor,originalWidth:this.screenWidth,originalHeight:this.screenHeight}}async compareClientTileHashes(e){if(this.isProcessing)return{tiles:[],currentHashes:[],changedIndices:[]};this.isProcessing=!0;try{let t=await this.getSharedScreenCapture(),n=[],i=[];this.frameCount++;let s=this.activeTileSet,o=new Map;for(let c=0;c<this.totalTiles;c++){if(s&&!s.has(c))continue;let l=this.calculateTileChecksumDirect(t,c);o.set(c,l),this.lastTileChecksums.set(c,l)}if(!e||e.length===0){let c=[];for(let p=0;p<this.totalTiles;p++)s&&!s.has(p)||c.push(p);let l=await fi(c,$.pipeline.tileConcurrency,p=>this.processTileAsync(t,p));return n.push(...l),{tiles:n,currentHashes:Array.from(o.values())}}for(let c=0;c<this.totalTiles;c++)s&&!s.has(c)||e[c]!==o.get(c)&&i.push(c);if(i.length/this.totalTiles>this.changeThreshold){let c=[];for(let p=0;p<this.totalTiles;p++)s&&!s.has(p)||c.push(p);let l=await fi(c,$.pipeline.tileConcurrency,p=>this.processTileAsync(t,p));n.push(...l.map(p=>({...p,fullRefresh:!0})))}else if(i.length>0){let c=await fi(i,$.pipeline.tileConcurrency,l=>this.processTileAsync(t,l));n.push(...c)}return this._recordFocusFrame(n),{tiles:n,currentHashes:Array.from(o.values()),changedIndices:i}}finally{this.isProcessing=!1}}clearMemory(){this.sharedScreenCache=null,this.lastCaptureTime=0,this.lastTileChecksums.clear()}reset(){this.lastTileChecksums.clear(),this.frameCount=0}cleanup(){try{Es.default.existsSync(this.tempDir)&&Es.default.readdirSync(this.tempDir).forEach(t=>Es.default.unlinkSync(Pl.default.join(this.tempDir,t)))}catch(e){me.warn(`Cleanup error: ${e.message}`)}}}});var iS={};Vr(iS,{ResourceManager:()=>xh});var xh,sS=Ee(()=>{at();ui();xh=class{constructor(){this.activeClients=new Map,this.activeTimers=new Map,this.chunkTimers=new Map,this.memoryCheckInterval=null}startResourceMonitoring(){this.memoryCheckInterval=setInterval(()=>{let e=process.memoryUsage(),t=Math.round(e.heapUsed/1024/1024);t>$.resourceManagement.memoryWarningThreshold&&(console.warn(`\u26A0\uFE0F High memory: ${t}MB`),this.cleanupInactiveClients())},$.resourceManagement.memoryCheckInterval)}stopResourceMonitoring(){this.memoryCheckInterval&&(clearInterval(this.memoryCheckInterval),this.memoryCheckInterval=null)}addClient(e,t){this.activeClients.set(e,{...t,lastActivity:Date.now()})}getClient(e){return this.activeClients.get(e)}updateClientActivity(e){let t=this.activeClients.get(e);t&&(t.lastActivity=Date.now())}cleanupInactiveClients(){let e=Date.now(),t=$.resourceManagement.inactiveTimeout;for(let[n,i]of this.activeClients.entries())e-i.lastActivity>t&&(console.log(`\u{1F9F9} Cleaning inactive client: ${n}`),this.cleanupClientResources(n,i),this.activeClients.delete(n))}cleanupClientResources(e,t){try{t.isStreaming=!1,t?.streamingTimeout&&(clearTimeout(t.streamingTimeout),t.streamingTimeout=null),t?.screenInterval&&(clearInterval(t.screenInterval),t.screenInterval=null);let n=this.activeTimers.get(e);n&&(n.forEach(s=>clearTimeout(s)),this.activeTimers.delete(e));let i=this.chunkTimers.get(e);i&&(i.forEach(s=>clearTimeout(s)),this.chunkTimers.delete(e)),t?.tileManager&&(t.tileManager.clearMemory(),t.tileManager.cleanup(),t.tileManager.reset()),t?.protocol&&(t.protocol.close(),bs(t.protocol))}catch(n){console.error(`Error cleaning up ${e}:`,n.message)}}getStreamingConfig(){return $.streaming}getWebRTCConfig(){return $.webrtc}removeClient(e){let t=this.activeClients.get(e);t&&(this.cleanupClientResources(e,t),this.activeClients.delete(e))}getChunkTimers(e){return this.chunkTimers.has(e)||this.chunkTimers.set(e,new Set),this.chunkTimers.get(e)}cleanupAll(){this.stopResourceMonitoring();for(let[e,t]of this.activeClients.entries())this.cleanupClientResources(e,t);this.activeClients.clear(),this.activeTimers.clear(),this.chunkTimers.clear()}}});var oS={};Vr(oS,{ScreenUpdateHelper:()=>_h});var _h,aS=Ee(()=>{at();_h=class{constructor(e){this.resourceManager=e}async sendTilesInChunks(e,t,n,i=!1){if(!t||t.length===0)return;let s=$.streaming.chunkSize,o=[];for(let c=0;c<t.length;c+=s)o.push(t.slice(c,c+s));let a=this.resourceManager.getChunkTimers(e.id);for(let c=0;c<o.length;c++){let l=o[c],p=c===o.length-1,f=setTimeout(()=>{a.delete(f),e.connected&&e.emit("tiles-data",{tiles:l,timestamp:n,forceRefresh:!1,userAction:i,chunkInfo:{chunkIndex:c,totalChunks:o.length,isLastChunk:p}})},c*$.streaming.chunkDelay);a.add(f)}}}});var cS={};Vr(cS,{MouseHandler:()=>bh});var bh,lS=Ee(()=>{at();bh=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastMouseMove=0}setupMouseHandlers(e,t){let n=this.robot;e.on("mouse-move",t(i=>{let s=Date.now();if(!(s-this.lastMouseMove<$.throttling.mouseThrottle)){this.lastMouseMove=s;try{let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),this.resourceManager.updateClientActivity(e.id)}catch(o){console.error("Mouse move error:",o.message)}}})),e.on("mouse-click",t(async i=>{try{let s=this.resourceManager.getClient(e.id);if(!s)return;let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),n.mouseClick(i.button||"left",i.double||!1),s.idleFrameCount=0,this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Mouse click error:",s.message)}})),e.on("mouse-press",t(async i=>{try{if(!this.resourceManager.getClient(e.id))return;let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),n.mouseToggle("down",i.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Mouse press error:",s.message)}})),e.on("mouse-release",t(async i=>{try{if(!this.resourceManager.getClient(e.id))return;let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),n.mouseToggle("up",i.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Mouse release error:",s.message)}})),e.on("scroll",t(async i=>{try{let{direction:s,amount:o=60,horizontal:a=!1}=i,c=this.resourceManager.getClient(e.id);if(!c)return;let l=0,p=0;a||s==="left"||s==="right"?l=s==="right"?o:-o:p=s==="down"?-o:o,n.scrollMouse(l,p),c.idleFrameCount=0,this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Scroll error:",s.message)}})),e.on("mouse-drag-select",t(i=>{try{let{startX:s,startY:o,endX:a,endY:c}=i,l=n.getScreenSize(),p=Math.round(s/100*l.width),f=Math.round(o/100*l.height),h=Math.round(a/100*l.width),v=Math.round(c/100*l.height),x=Math.max(0,Math.min(l.width-1,p)),S=Math.max(0,Math.min(l.height-1,f)),A=Math.max(0,Math.min(l.width-1,h)),k=Math.max(0,Math.min(l.height-1,v));n.moveMouse(x,S),n.mouseToggle("down","left"),n.dragMouse(A,k),n.mouseToggle("up","left"),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Drag selection error:",s.message)}}))}}});var pS={};Vr(pS,{KeyboardHandler:()=>wh});function fB(r){let e;r.type==="missionControl"?e='tell application "System Events" to key code 160':e=`tell application "System Events" to key code ${r.keyCode} using ${r.mods}`,(0,uS.execFile)("osascript",["-e",e],t=>{t&&console.error("osascript error:",t.message)})}var uS,wh,fS=Ee(()=>{uS=require("child_process");at();wh=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastKeyPress=0,this.lastTypeText=0}setupKeyboardHandlers(e,t){let n=this.robot;e.on("key-press",t(i=>{let s=Date.now();if(!(s-this.lastKeyPress<$.throttling.keyThrottle)){this.lastKeyPress=s;try{if(!i.key||typeof i.key!="string")return;let o=this.resourceManager.getClient(e.id),a=i.key,c=i.modifier||[];if(a.length===1)if(c.filter(p=>p!=="shift").length>0){n.keyTap(a.toLowerCase(),c);for(let p of c)n.keyToggle(p,"up")}else n.typeString(a);else{let p={return:"enter"}[a.toLowerCase()]??a.toLowerCase();n.keyTap(p,c)}o&&(o.idleFrameCount=0),this.resourceManager.updateClientActivity(e.id)}catch(o){console.error("Key press error:",o.message)}}})),e.on("desktop-switch",t(i=>{try{let s=i?.direction,o=$.desktopSwitch[process.platform]?.[s];if(!o)return;process.platform==="darwin"?fB(o):n.keyTap(o[0],o[1]);let a=this.resourceManager.getClient(e.id);a&&(a.idleFrameCount=0),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Desktop switch error:",s.message)}})),e.on("type-text",t(i=>{let s=Date.now();if(!(s-this.lastTypeText<$.throttling.typeTextThrottle)){this.lastTypeText=s;try{if(!i.text||typeof i.text!="string")return;let o=i.text;o.length>$.throttling.maxTextLength&&(o=o.substring(0,$.throttling.maxTextLength));let a=o.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,""),c=this.resourceManager.getClient(e.id);setTimeout(()=>{try{n.typeString(a),this.resourceManager.updateClientActivity(e.id),c&&(c.idleFrameCount=0,c.tileManager&&c.tileManager.clearScreenCache())}catch(l){console.error("Robot typeString error:",l.message)}},10)}catch(o){console.error("Type text error:",o.message)}}}))}}});var Mh=R((WS,Oh)=>{(function(r,e){"use strict";function t(T,u){if(!T)throw new Error(u||"Assertion failed")}function n(T,u){T.super_=u;var m=function(){};m.prototype=u.prototype,T.prototype=new m,T.prototype.constructor=T}function i(T,u,m){if(i.isBN(T))return T;this.negative=0,this.words=null,this.length=0,this.red=null,T!==null&&((u==="le"||u==="be")&&(m=u,u=10),this._init(T||0,u||10,m||"be"))}typeof r=="object"?r.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var s;try{typeof window<"u"&&typeof window.Buffer<"u"?s=window.Buffer:s=require("buffer").Buffer}catch{}i.isBN=function(u){return u instanceof i?!0:u!==null&&typeof u=="object"&&u.constructor.wordSize===i.wordSize&&Array.isArray(u.words)},i.max=function(u,m){return u.cmp(m)>0?u:m},i.min=function(u,m){return u.cmp(m)<0?u:m},i.prototype._init=function(u,m,y){if(typeof u=="number")return this._initNumber(u,m,y);if(typeof u=="object")return this._initArray(u,m,y);m==="hex"&&(m=16),t(m===(m|0)&&m>=2&&m<=36),u=u.toString().replace(/\s+/g,"");var w=0;u[0]==="-"&&(w++,this.negative=1),w<u.length&&(m===16?this._parseHex(u,w,y):(this._parseBase(u,m,w),y==="le"&&this._initArray(this.toArray(),m,y)))},i.prototype._initNumber=function(u,m,y){u<0&&(this.negative=1,u=-u),u<67108864?(this.words=[u&67108863],this.length=1):u<4503599627370496?(this.words=[u&67108863,u/67108864&67108863],this.length=2):(t(u<9007199254740992),this.words=[u&67108863,u/67108864&67108863,1],this.length=3),y==="le"&&this._initArray(this.toArray(),m,y)},i.prototype._initArray=function(u,m,y){if(t(typeof u.length=="number"),u.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(u.length/3),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var g,_,C=0;if(y==="be")for(w=u.length-1,g=0;w>=0;w-=3)_=u[w]|u[w-1]<<8|u[w-2]<<16,this.words[g]|=_<<C&67108863,this.words[g+1]=_>>>26-C&67108863,C+=24,C>=26&&(C-=26,g++);else if(y==="le")for(w=0,g=0;w<u.length;w+=3)_=u[w]|u[w+1]<<8|u[w+2]<<16,this.words[g]|=_<<C&67108863,this.words[g+1]=_>>>26-C&67108863,C+=24,C>=26&&(C-=26,g++);return this.strip()};function o(T,u){var m=T.charCodeAt(u);return m>=65&&m<=70?m-55:m>=97&&m<=102?m-87:m-48&15}function a(T,u,m){var y=o(T,m);return m-1>=u&&(y|=o(T,m-1)<<4),y}i.prototype._parseHex=function(u,m,y){this.length=Math.ceil((u.length-m)/6),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var g=0,_=0,C;if(y==="be")for(w=u.length-1;w>=m;w-=2)C=a(u,m,w)<<g,this.words[_]|=C&67108863,g>=18?(g-=18,_+=1,this.words[_]|=C>>>26):g+=8;else{var b=u.length-m;for(w=b%2===0?m+1:m;w<u.length;w+=2)C=a(u,m,w)<<g,this.words[_]|=C&67108863,g>=18?(g-=18,_+=1,this.words[_]|=C>>>26):g+=8}this.strip()};function c(T,u,m,y){for(var w=0,g=Math.min(T.length,m),_=u;_<g;_++){var C=T.charCodeAt(_)-48;w*=y,C>=49?w+=C-49+10:C>=17?w+=C-17+10:w+=C}return w}i.prototype._parseBase=function(u,m,y){this.words=[0],this.length=1;for(var w=0,g=1;g<=67108863;g*=m)w++;w--,g=g/m|0;for(var _=u.length-y,C=_%w,b=Math.min(_,_-C)+y,d=0,E=y;E<b;E+=w)d=c(u,E,E+w,m),this.imuln(g),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d);if(C!==0){var q=1;for(d=c(u,E,u.length,m),E=0;E<C;E++)q*=m;this.imuln(q),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d)}this.strip()},i.prototype.copy=function(u){u.words=new Array(this.length);for(var m=0;m<this.length;m++)u.words[m]=this.words[m];u.length=this.length,u.negative=this.negative,u.red=this.red},i.prototype.clone=function(){var u=new i(null);return this.copy(u),u},i.prototype._expand=function(u){for(;this.length<u;)this.words[this.length++]=0;return this},i.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(u,m){u=u||10,m=m|0||1;var y;if(u===16||u==="hex"){y="";for(var w=0,g=0,_=0;_<this.length;_++){var C=this.words[_],b=((C<<w|g)&16777215).toString(16);g=C>>>24-w&16777215,w+=2,w>=26&&(w-=26,_--),g!==0||_!==this.length-1?y=l[6-b.length]+b+y:y=b+y}for(g!==0&&(y=g.toString(16)+y);y.length%m!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}if(u===(u|0)&&u>=2&&u<=36){var d=p[u],E=f[u];y="";var q=this.clone();for(q.negative=0;!q.isZero();){var O=q.modn(E).toString(u);q=q.idivn(E),q.isZero()?y=O+y:y=l[d-O.length]+O+y}for(this.isZero()&&(y="0"+y);y.length%m!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}t(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var u=this.words[0];return this.length===2?u+=this.words[1]*67108864:this.length===3&&this.words[2]===1?u+=4503599627370496+this.words[1]*67108864:this.length>2&&t(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-u:u},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(u,m){return t(typeof s<"u"),this.toArrayLike(s,u,m)},i.prototype.toArray=function(u,m){return this.toArrayLike(Array,u,m)},i.prototype.toArrayLike=function(u,m,y){var w=this.byteLength(),g=y||Math.max(1,w);t(w<=g,"byte array longer than desired length"),t(g>0,"Requested array length <= 0"),this.strip();var _=m==="le",C=new u(g),b,d,E=this.clone();if(_){for(d=0;!E.isZero();d++)b=E.andln(255),E.iushrn(8),C[d]=b;for(;d<g;d++)C[d]=0}else{for(d=0;d<g-w;d++)C[d]=0;for(d=0;!E.isZero();d++)b=E.andln(255),E.iushrn(8),C[g-d-1]=b}return C},Math.clz32?i.prototype._countBits=function(u){return 32-Math.clz32(u)}:i.prototype._countBits=function(u){var m=u,y=0;return m>=4096&&(y+=13,m>>>=13),m>=64&&(y+=7,m>>>=7),m>=8&&(y+=4,m>>>=4),m>=2&&(y+=2,m>>>=2),y+m},i.prototype._zeroBits=function(u){if(u===0)return 26;var m=u,y=0;return(m&8191)===0&&(y+=13,m>>>=13),(m&127)===0&&(y+=7,m>>>=7),(m&15)===0&&(y+=4,m>>>=4),(m&3)===0&&(y+=2,m>>>=2),(m&1)===0&&y++,y},i.prototype.bitLength=function(){var u=this.words[this.length-1],m=this._countBits(u);return(this.length-1)*26+m};function h(T){for(var u=new Array(T.bitLength()),m=0;m<u.length;m++){var y=m/26|0,w=m%26;u[m]=(T.words[y]&1<<w)>>>w}return u}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var u=0,m=0;m<this.length;m++){var y=this._zeroBits(this.words[m]);if(u+=y,y!==26)break}return u},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(u){return this.negative!==0?this.abs().inotn(u).iaddn(1):this.clone()},i.prototype.fromTwos=function(u){return this.testn(u-1)?this.notn(u).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return this.negative!==0},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(u){for(;this.length<u.length;)this.words[this.length++]=0;for(var m=0;m<u.length;m++)this.words[m]=this.words[m]|u.words[m];return this.strip()},i.prototype.ior=function(u){return t((this.negative|u.negative)===0),this.iuor(u)},i.prototype.or=function(u){return this.length>u.length?this.clone().ior(u):u.clone().ior(this)},i.prototype.uor=function(u){return this.length>u.length?this.clone().iuor(u):u.clone().iuor(this)},i.prototype.iuand=function(u){var m;this.length>u.length?m=u:m=this;for(var y=0;y<m.length;y++)this.words[y]=this.words[y]&u.words[y];return this.length=m.length,this.strip()},i.prototype.iand=function(u){return t((this.negative|u.negative)===0),this.iuand(u)},i.prototype.and=function(u){return this.length>u.length?this.clone().iand(u):u.clone().iand(this)},i.prototype.uand=function(u){return this.length>u.length?this.clone().iuand(u):u.clone().iuand(this)},i.prototype.iuxor=function(u){var m,y;this.length>u.length?(m=this,y=u):(m=u,y=this);for(var w=0;w<y.length;w++)this.words[w]=m.words[w]^y.words[w];if(this!==m)for(;w<m.length;w++)this.words[w]=m.words[w];return this.length=m.length,this.strip()},i.prototype.ixor=function(u){return t((this.negative|u.negative)===0),this.iuxor(u)},i.prototype.xor=function(u){return this.length>u.length?this.clone().ixor(u):u.clone().ixor(this)},i.prototype.uxor=function(u){return this.length>u.length?this.clone().iuxor(u):u.clone().iuxor(this)},i.prototype.inotn=function(u){t(typeof u=="number"&&u>=0);var m=Math.ceil(u/26)|0,y=u%26;this._expand(m),y>0&&m--;for(var w=0;w<m;w++)this.words[w]=~this.words[w]&67108863;return y>0&&(this.words[w]=~this.words[w]&67108863>>26-y),this.strip()},i.prototype.notn=function(u){return this.clone().inotn(u)},i.prototype.setn=function(u,m){t(typeof u=="number"&&u>=0);var y=u/26|0,w=u%26;return this._expand(y+1),m?this.words[y]=this.words[y]|1<<w:this.words[y]=this.words[y]&~(1<<w),this.strip()},i.prototype.iadd=function(u){var m;if(this.negative!==0&&u.negative===0)return this.negative=0,m=this.isub(u),this.negative^=1,this._normSign();if(this.negative===0&&u.negative!==0)return u.negative=0,m=this.isub(u),u.negative=1,m._normSign();var y,w;this.length>u.length?(y=this,w=u):(y=u,w=this);for(var g=0,_=0;_<w.length;_++)m=(y.words[_]|0)+(w.words[_]|0)+g,this.words[_]=m&67108863,g=m>>>26;for(;g!==0&&_<y.length;_++)m=(y.words[_]|0)+g,this.words[_]=m&67108863,g=m>>>26;if(this.length=y.length,g!==0)this.words[this.length]=g,this.length++;else if(y!==this)for(;_<y.length;_++)this.words[_]=y.words[_];return this},i.prototype.add=function(u){var m;return u.negative!==0&&this.negative===0?(u.negative=0,m=this.sub(u),u.negative^=1,m):u.negative===0&&this.negative!==0?(this.negative=0,m=u.sub(this),this.negative=1,m):this.length>u.length?this.clone().iadd(u):u.clone().iadd(this)},i.prototype.isub=function(u){if(u.negative!==0){u.negative=0;var m=this.iadd(u);return u.negative=1,m._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(u),this.negative=1,this._normSign();var y=this.cmp(u);if(y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,g;y>0?(w=this,g=u):(w=u,g=this);for(var _=0,C=0;C<g.length;C++)m=(w.words[C]|0)-(g.words[C]|0)+_,_=m>>26,this.words[C]=m&67108863;for(;_!==0&&C<w.length;C++)m=(w.words[C]|0)+_,_=m>>26,this.words[C]=m&67108863;if(_===0&&C<w.length&&w!==this)for(;C<w.length;C++)this.words[C]=w.words[C];return this.length=Math.max(this.length,C),w!==this&&(this.negative=1),this.strip()},i.prototype.sub=function(u){return this.clone().isub(u)};function v(T,u,m){m.negative=u.negative^T.negative;var y=T.length+u.length|0;m.length=y,y=y-1|0;var w=T.words[0]|0,g=u.words[0]|0,_=w*g,C=_&67108863,b=_/67108864|0;m.words[0]=C;for(var d=1;d<y;d++){for(var E=b>>>26,q=b&67108863,O=Math.min(d,u.length-1),M=Math.max(0,d-T.length+1);M<=O;M++){var j=d-M|0;w=T.words[j]|0,g=u.words[M]|0,_=w*g+q,E+=_/67108864|0,q=_&67108863}m.words[d]=q|0,b=E|0}return b!==0?m.words[d]=b|0:m.length--,m.strip()}var x=function(u,m,y){var w=u.words,g=m.words,_=y.words,C=0,b,d,E,q=w[0]|0,O=q&8191,M=q>>>13,j=w[1]|0,z=j&8191,U=j>>>13,Te=w[2]|0,ne=Te&8191,N=Te>>>13,te=w[3]|0,D=te&8191,W=te>>>13,se=w[4]|0,Z=se&8191,J=se>>>13,Tt=w[5]|0,oe=Tt&8191,Oe=Tt>>>13,jg=w[6]|0,Me=jg&8191,Pe=jg>>>13,Fg=w[7]|0,Ie=Fg&8191,Ne=Fg>>>13,Ug=w[8]|0,Le=Ug&8191,De=Ug>>>13,qg=w[9]|0,Be=qg&8191,je=qg>>>13,Hg=g[0]|0,Fe=Hg&8191,Ue=Hg>>>13,$g=g[1]|0,qe=$g&8191,He=$g>>>13,Wg=g[2]|0,$e=Wg&8191,We=Wg>>>13,Gg=g[3]|0,Ge=Gg&8191,ze=Gg>>>13,zg=g[4]|0,Ve=zg&8191,Ke=zg>>>13,Vg=g[5]|0,Ye=Vg&8191,Je=Vg>>>13,Kg=g[6]|0,Xe=Kg&8191,Ze=Kg>>>13,Yg=g[7]|0,Qe=Yg&8191,et=Yg>>>13,Jg=g[8]|0,tt=Jg&8191,rt=Jg>>>13,Xg=g[9]|0,nt=Xg&8191,it=Xg>>>13;y.negative=u.negative^m.negative,y.length=19,b=Math.imul(O,Fe),d=Math.imul(O,Ue),d=d+Math.imul(M,Fe)|0,E=Math.imul(M,Ue);var Yu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Yu>>>26)|0,Yu&=67108863,b=Math.imul(z,Fe),d=Math.imul(z,Ue),d=d+Math.imul(U,Fe)|0,E=Math.imul(U,Ue),b=b+Math.imul(O,qe)|0,d=d+Math.imul(O,He)|0,d=d+Math.imul(M,qe)|0,E=E+Math.imul(M,He)|0;var Ju=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Ju>>>26)|0,Ju&=67108863,b=Math.imul(ne,Fe),d=Math.imul(ne,Ue),d=d+Math.imul(N,Fe)|0,E=Math.imul(N,Ue),b=b+Math.imul(z,qe)|0,d=d+Math.imul(z,He)|0,d=d+Math.imul(U,qe)|0,E=E+Math.imul(U,He)|0,b=b+Math.imul(O,$e)|0,d=d+Math.imul(O,We)|0,d=d+Math.imul(M,$e)|0,E=E+Math.imul(M,We)|0;var Xu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Xu>>>26)|0,Xu&=67108863,b=Math.imul(D,Fe),d=Math.imul(D,Ue),d=d+Math.imul(W,Fe)|0,E=Math.imul(W,Ue),b=b+Math.imul(ne,qe)|0,d=d+Math.imul(ne,He)|0,d=d+Math.imul(N,qe)|0,E=E+Math.imul(N,He)|0,b=b+Math.imul(z,$e)|0,d=d+Math.imul(z,We)|0,d=d+Math.imul(U,$e)|0,E=E+Math.imul(U,We)|0,b=b+Math.imul(O,Ge)|0,d=d+Math.imul(O,ze)|0,d=d+Math.imul(M,Ge)|0,E=E+Math.imul(M,ze)|0;var Zu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Zu>>>26)|0,Zu&=67108863,b=Math.imul(Z,Fe),d=Math.imul(Z,Ue),d=d+Math.imul(J,Fe)|0,E=Math.imul(J,Ue),b=b+Math.imul(D,qe)|0,d=d+Math.imul(D,He)|0,d=d+Math.imul(W,qe)|0,E=E+Math.imul(W,He)|0,b=b+Math.imul(ne,$e)|0,d=d+Math.imul(ne,We)|0,d=d+Math.imul(N,$e)|0,E=E+Math.imul(N,We)|0,b=b+Math.imul(z,Ge)|0,d=d+Math.imul(z,ze)|0,d=d+Math.imul(U,Ge)|0,E=E+Math.imul(U,ze)|0,b=b+Math.imul(O,Ve)|0,d=d+Math.imul(O,Ke)|0,d=d+Math.imul(M,Ve)|0,E=E+Math.imul(M,Ke)|0;var Qu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Qu>>>26)|0,Qu&=67108863,b=Math.imul(oe,Fe),d=Math.imul(oe,Ue),d=d+Math.imul(Oe,Fe)|0,E=Math.imul(Oe,Ue),b=b+Math.imul(Z,qe)|0,d=d+Math.imul(Z,He)|0,d=d+Math.imul(J,qe)|0,E=E+Math.imul(J,He)|0,b=b+Math.imul(D,$e)|0,d=d+Math.imul(D,We)|0,d=d+Math.imul(W,$e)|0,E=E+Math.imul(W,We)|0,b=b+Math.imul(ne,Ge)|0,d=d+Math.imul(ne,ze)|0,d=d+Math.imul(N,Ge)|0,E=E+Math.imul(N,ze)|0,b=b+Math.imul(z,Ve)|0,d=d+Math.imul(z,Ke)|0,d=d+Math.imul(U,Ve)|0,E=E+Math.imul(U,Ke)|0,b=b+Math.imul(O,Ye)|0,d=d+Math.imul(O,Je)|0,d=d+Math.imul(M,Ye)|0,E=E+Math.imul(M,Je)|0;var ep=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(ep>>>26)|0,ep&=67108863,b=Math.imul(Me,Fe),d=Math.imul(Me,Ue),d=d+Math.imul(Pe,Fe)|0,E=Math.imul(Pe,Ue),b=b+Math.imul(oe,qe)|0,d=d+Math.imul(oe,He)|0,d=d+Math.imul(Oe,qe)|0,E=E+Math.imul(Oe,He)|0,b=b+Math.imul(Z,$e)|0,d=d+Math.imul(Z,We)|0,d=d+Math.imul(J,$e)|0,E=E+Math.imul(J,We)|0,b=b+Math.imul(D,Ge)|0,d=d+Math.imul(D,ze)|0,d=d+Math.imul(W,Ge)|0,E=E+Math.imul(W,ze)|0,b=b+Math.imul(ne,Ve)|0,d=d+Math.imul(ne,Ke)|0,d=d+Math.imul(N,Ve)|0,E=E+Math.imul(N,Ke)|0,b=b+Math.imul(z,Ye)|0,d=d+Math.imul(z,Je)|0,d=d+Math.imul(U,Ye)|0,E=E+Math.imul(U,Je)|0,b=b+Math.imul(O,Xe)|0,d=d+Math.imul(O,Ze)|0,d=d+Math.imul(M,Xe)|0,E=E+Math.imul(M,Ze)|0;var tp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(tp>>>26)|0,tp&=67108863,b=Math.imul(Ie,Fe),d=Math.imul(Ie,Ue),d=d+Math.imul(Ne,Fe)|0,E=Math.imul(Ne,Ue),b=b+Math.imul(Me,qe)|0,d=d+Math.imul(Me,He)|0,d=d+Math.imul(Pe,qe)|0,E=E+Math.imul(Pe,He)|0,b=b+Math.imul(oe,$e)|0,d=d+Math.imul(oe,We)|0,d=d+Math.imul(Oe,$e)|0,E=E+Math.imul(Oe,We)|0,b=b+Math.imul(Z,Ge)|0,d=d+Math.imul(Z,ze)|0,d=d+Math.imul(J,Ge)|0,E=E+Math.imul(J,ze)|0,b=b+Math.imul(D,Ve)|0,d=d+Math.imul(D,Ke)|0,d=d+Math.imul(W,Ve)|0,E=E+Math.imul(W,Ke)|0,b=b+Math.imul(ne,Ye)|0,d=d+Math.imul(ne,Je)|0,d=d+Math.imul(N,Ye)|0,E=E+Math.imul(N,Je)|0,b=b+Math.imul(z,Xe)|0,d=d+Math.imul(z,Ze)|0,d=d+Math.imul(U,Xe)|0,E=E+Math.imul(U,Ze)|0,b=b+Math.imul(O,Qe)|0,d=d+Math.imul(O,et)|0,d=d+Math.imul(M,Qe)|0,E=E+Math.imul(M,et)|0;var rp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(rp>>>26)|0,rp&=67108863,b=Math.imul(Le,Fe),d=Math.imul(Le,Ue),d=d+Math.imul(De,Fe)|0,E=Math.imul(De,Ue),b=b+Math.imul(Ie,qe)|0,d=d+Math.imul(Ie,He)|0,d=d+Math.imul(Ne,qe)|0,E=E+Math.imul(Ne,He)|0,b=b+Math.imul(Me,$e)|0,d=d+Math.imul(Me,We)|0,d=d+Math.imul(Pe,$e)|0,E=E+Math.imul(Pe,We)|0,b=b+Math.imul(oe,Ge)|0,d=d+Math.imul(oe,ze)|0,d=d+Math.imul(Oe,Ge)|0,E=E+Math.imul(Oe,ze)|0,b=b+Math.imul(Z,Ve)|0,d=d+Math.imul(Z,Ke)|0,d=d+Math.imul(J,Ve)|0,E=E+Math.imul(J,Ke)|0,b=b+Math.imul(D,Ye)|0,d=d+Math.imul(D,Je)|0,d=d+Math.imul(W,Ye)|0,E=E+Math.imul(W,Je)|0,b=b+Math.imul(ne,Xe)|0,d=d+Math.imul(ne,Ze)|0,d=d+Math.imul(N,Xe)|0,E=E+Math.imul(N,Ze)|0,b=b+Math.imul(z,Qe)|0,d=d+Math.imul(z,et)|0,d=d+Math.imul(U,Qe)|0,E=E+Math.imul(U,et)|0,b=b+Math.imul(O,tt)|0,d=d+Math.imul(O,rt)|0,d=d+Math.imul(M,tt)|0,E=E+Math.imul(M,rt)|0;var np=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(np>>>26)|0,np&=67108863,b=Math.imul(Be,Fe),d=Math.imul(Be,Ue),d=d+Math.imul(je,Fe)|0,E=Math.imul(je,Ue),b=b+Math.imul(Le,qe)|0,d=d+Math.imul(Le,He)|0,d=d+Math.imul(De,qe)|0,E=E+Math.imul(De,He)|0,b=b+Math.imul(Ie,$e)|0,d=d+Math.imul(Ie,We)|0,d=d+Math.imul(Ne,$e)|0,E=E+Math.imul(Ne,We)|0,b=b+Math.imul(Me,Ge)|0,d=d+Math.imul(Me,ze)|0,d=d+Math.imul(Pe,Ge)|0,E=E+Math.imul(Pe,ze)|0,b=b+Math.imul(oe,Ve)|0,d=d+Math.imul(oe,Ke)|0,d=d+Math.imul(Oe,Ve)|0,E=E+Math.imul(Oe,Ke)|0,b=b+Math.imul(Z,Ye)|0,d=d+Math.imul(Z,Je)|0,d=d+Math.imul(J,Ye)|0,E=E+Math.imul(J,Je)|0,b=b+Math.imul(D,Xe)|0,d=d+Math.imul(D,Ze)|0,d=d+Math.imul(W,Xe)|0,E=E+Math.imul(W,Ze)|0,b=b+Math.imul(ne,Qe)|0,d=d+Math.imul(ne,et)|0,d=d+Math.imul(N,Qe)|0,E=E+Math.imul(N,et)|0,b=b+Math.imul(z,tt)|0,d=d+Math.imul(z,rt)|0,d=d+Math.imul(U,tt)|0,E=E+Math.imul(U,rt)|0,b=b+Math.imul(O,nt)|0,d=d+Math.imul(O,it)|0,d=d+Math.imul(M,nt)|0,E=E+Math.imul(M,it)|0;var ip=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(ip>>>26)|0,ip&=67108863,b=Math.imul(Be,qe),d=Math.imul(Be,He),d=d+Math.imul(je,qe)|0,E=Math.imul(je,He),b=b+Math.imul(Le,$e)|0,d=d+Math.imul(Le,We)|0,d=d+Math.imul(De,$e)|0,E=E+Math.imul(De,We)|0,b=b+Math.imul(Ie,Ge)|0,d=d+Math.imul(Ie,ze)|0,d=d+Math.imul(Ne,Ge)|0,E=E+Math.imul(Ne,ze)|0,b=b+Math.imul(Me,Ve)|0,d=d+Math.imul(Me,Ke)|0,d=d+Math.imul(Pe,Ve)|0,E=E+Math.imul(Pe,Ke)|0,b=b+Math.imul(oe,Ye)|0,d=d+Math.imul(oe,Je)|0,d=d+Math.imul(Oe,Ye)|0,E=E+Math.imul(Oe,Je)|0,b=b+Math.imul(Z,Xe)|0,d=d+Math.imul(Z,Ze)|0,d=d+Math.imul(J,Xe)|0,E=E+Math.imul(J,Ze)|0,b=b+Math.imul(D,Qe)|0,d=d+Math.imul(D,et)|0,d=d+Math.imul(W,Qe)|0,E=E+Math.imul(W,et)|0,b=b+Math.imul(ne,tt)|0,d=d+Math.imul(ne,rt)|0,d=d+Math.imul(N,tt)|0,E=E+Math.imul(N,rt)|0,b=b+Math.imul(z,nt)|0,d=d+Math.imul(z,it)|0,d=d+Math.imul(U,nt)|0,E=E+Math.imul(U,it)|0;var sp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(sp>>>26)|0,sp&=67108863,b=Math.imul(Be,$e),d=Math.imul(Be,We),d=d+Math.imul(je,$e)|0,E=Math.imul(je,We),b=b+Math.imul(Le,Ge)|0,d=d+Math.imul(Le,ze)|0,d=d+Math.imul(De,Ge)|0,E=E+Math.imul(De,ze)|0,b=b+Math.imul(Ie,Ve)|0,d=d+Math.imul(Ie,Ke)|0,d=d+Math.imul(Ne,Ve)|0,E=E+Math.imul(Ne,Ke)|0,b=b+Math.imul(Me,Ye)|0,d=d+Math.imul(Me,Je)|0,d=d+Math.imul(Pe,Ye)|0,E=E+Math.imul(Pe,Je)|0,b=b+Math.imul(oe,Xe)|0,d=d+Math.imul(oe,Ze)|0,d=d+Math.imul(Oe,Xe)|0,E=E+Math.imul(Oe,Ze)|0,b=b+Math.imul(Z,Qe)|0,d=d+Math.imul(Z,et)|0,d=d+Math.imul(J,Qe)|0,E=E+Math.imul(J,et)|0,b=b+Math.imul(D,tt)|0,d=d+Math.imul(D,rt)|0,d=d+Math.imul(W,tt)|0,E=E+Math.imul(W,rt)|0,b=b+Math.imul(ne,nt)|0,d=d+Math.imul(ne,it)|0,d=d+Math.imul(N,nt)|0,E=E+Math.imul(N,it)|0;var op=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(op>>>26)|0,op&=67108863,b=Math.imul(Be,Ge),d=Math.imul(Be,ze),d=d+Math.imul(je,Ge)|0,E=Math.imul(je,ze),b=b+Math.imul(Le,Ve)|0,d=d+Math.imul(Le,Ke)|0,d=d+Math.imul(De,Ve)|0,E=E+Math.imul(De,Ke)|0,b=b+Math.imul(Ie,Ye)|0,d=d+Math.imul(Ie,Je)|0,d=d+Math.imul(Ne,Ye)|0,E=E+Math.imul(Ne,Je)|0,b=b+Math.imul(Me,Xe)|0,d=d+Math.imul(Me,Ze)|0,d=d+Math.imul(Pe,Xe)|0,E=E+Math.imul(Pe,Ze)|0,b=b+Math.imul(oe,Qe)|0,d=d+Math.imul(oe,et)|0,d=d+Math.imul(Oe,Qe)|0,E=E+Math.imul(Oe,et)|0,b=b+Math.imul(Z,tt)|0,d=d+Math.imul(Z,rt)|0,d=d+Math.imul(J,tt)|0,E=E+Math.imul(J,rt)|0,b=b+Math.imul(D,nt)|0,d=d+Math.imul(D,it)|0,d=d+Math.imul(W,nt)|0,E=E+Math.imul(W,it)|0;var ap=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(ap>>>26)|0,ap&=67108863,b=Math.imul(Be,Ve),d=Math.imul(Be,Ke),d=d+Math.imul(je,Ve)|0,E=Math.imul(je,Ke),b=b+Math.imul(Le,Ye)|0,d=d+Math.imul(Le,Je)|0,d=d+Math.imul(De,Ye)|0,E=E+Math.imul(De,Je)|0,b=b+Math.imul(Ie,Xe)|0,d=d+Math.imul(Ie,Ze)|0,d=d+Math.imul(Ne,Xe)|0,E=E+Math.imul(Ne,Ze)|0,b=b+Math.imul(Me,Qe)|0,d=d+Math.imul(Me,et)|0,d=d+Math.imul(Pe,Qe)|0,E=E+Math.imul(Pe,et)|0,b=b+Math.imul(oe,tt)|0,d=d+Math.imul(oe,rt)|0,d=d+Math.imul(Oe,tt)|0,E=E+Math.imul(Oe,rt)|0,b=b+Math.imul(Z,nt)|0,d=d+Math.imul(Z,it)|0,d=d+Math.imul(J,nt)|0,E=E+Math.imul(J,it)|0;var cp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(cp>>>26)|0,cp&=67108863,b=Math.imul(Be,Ye),d=Math.imul(Be,Je),d=d+Math.imul(je,Ye)|0,E=Math.imul(je,Je),b=b+Math.imul(Le,Xe)|0,d=d+Math.imul(Le,Ze)|0,d=d+Math.imul(De,Xe)|0,E=E+Math.imul(De,Ze)|0,b=b+Math.imul(Ie,Qe)|0,d=d+Math.imul(Ie,et)|0,d=d+Math.imul(Ne,Qe)|0,E=E+Math.imul(Ne,et)|0,b=b+Math.imul(Me,tt)|0,d=d+Math.imul(Me,rt)|0,d=d+Math.imul(Pe,tt)|0,E=E+Math.imul(Pe,rt)|0,b=b+Math.imul(oe,nt)|0,d=d+Math.imul(oe,it)|0,d=d+Math.imul(Oe,nt)|0,E=E+Math.imul(Oe,it)|0;var lp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(lp>>>26)|0,lp&=67108863,b=Math.imul(Be,Xe),d=Math.imul(Be,Ze),d=d+Math.imul(je,Xe)|0,E=Math.imul(je,Ze),b=b+Math.imul(Le,Qe)|0,d=d+Math.imul(Le,et)|0,d=d+Math.imul(De,Qe)|0,E=E+Math.imul(De,et)|0,b=b+Math.imul(Ie,tt)|0,d=d+Math.imul(Ie,rt)|0,d=d+Math.imul(Ne,tt)|0,E=E+Math.imul(Ne,rt)|0,b=b+Math.imul(Me,nt)|0,d=d+Math.imul(Me,it)|0,d=d+Math.imul(Pe,nt)|0,E=E+Math.imul(Pe,it)|0;var up=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(up>>>26)|0,up&=67108863,b=Math.imul(Be,Qe),d=Math.imul(Be,et),d=d+Math.imul(je,Qe)|0,E=Math.imul(je,et),b=b+Math.imul(Le,tt)|0,d=d+Math.imul(Le,rt)|0,d=d+Math.imul(De,tt)|0,E=E+Math.imul(De,rt)|0,b=b+Math.imul(Ie,nt)|0,d=d+Math.imul(Ie,it)|0,d=d+Math.imul(Ne,nt)|0,E=E+Math.imul(Ne,it)|0;var pp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(pp>>>26)|0,pp&=67108863,b=Math.imul(Be,tt),d=Math.imul(Be,rt),d=d+Math.imul(je,tt)|0,E=Math.imul(je,rt),b=b+Math.imul(Le,nt)|0,d=d+Math.imul(Le,it)|0,d=d+Math.imul(De,nt)|0,E=E+Math.imul(De,it)|0;var fp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(fp>>>26)|0,fp&=67108863,b=Math.imul(Be,nt),d=Math.imul(Be,it),d=d+Math.imul(je,nt)|0,E=Math.imul(je,it);var dp=(C+b|0)+((d&8191)<<13)|0;return C=(E+(d>>>13)|0)+(dp>>>26)|0,dp&=67108863,_[0]=Yu,_[1]=Ju,_[2]=Xu,_[3]=Zu,_[4]=Qu,_[5]=ep,_[6]=tp,_[7]=rp,_[8]=np,_[9]=ip,_[10]=sp,_[11]=op,_[12]=ap,_[13]=cp,_[14]=lp,_[15]=up,_[16]=pp,_[17]=fp,_[18]=dp,C!==0&&(_[19]=C,y.length++),y};Math.imul||(x=v);function S(T,u,m){m.negative=u.negative^T.negative,m.length=T.length+u.length;for(var y=0,w=0,g=0;g<m.length-1;g++){var _=w;w=0;for(var C=y&67108863,b=Math.min(g,u.length-1),d=Math.max(0,g-T.length+1);d<=b;d++){var E=g-d,q=T.words[E]|0,O=u.words[d]|0,M=q*O,j=M&67108863;_=_+(M/67108864|0)|0,j=j+C|0,C=j&67108863,_=_+(j>>>26)|0,w+=_>>>26,_&=67108863}m.words[g]=C,y=_,_=w}return y!==0?m.words[g]=y:m.length--,m.strip()}function A(T,u,m){var y=new k;return y.mulp(T,u,m)}i.prototype.mulTo=function(u,m){var y,w=this.length+u.length;return this.length===10&&u.length===10?y=x(this,u,m):w<63?y=v(this,u,m):w<1024?y=S(this,u,m):y=A(this,u,m),y};function k(T,u){this.x=T,this.y=u}k.prototype.makeRBT=function(u){for(var m=new Array(u),y=i.prototype._countBits(u)-1,w=0;w<u;w++)m[w]=this.revBin(w,y,u);return m},k.prototype.revBin=function(u,m,y){if(u===0||u===y-1)return u;for(var w=0,g=0;g<m;g++)w|=(u&1)<<m-g-1,u>>=1;return w},k.prototype.permute=function(u,m,y,w,g,_){for(var C=0;C<_;C++)w[C]=m[u[C]],g[C]=y[u[C]]},k.prototype.transform=function(u,m,y,w,g,_){this.permute(_,u,m,y,w,g);for(var C=1;C<g;C<<=1)for(var b=C<<1,d=Math.cos(2*Math.PI/b),E=Math.sin(2*Math.PI/b),q=0;q<g;q+=b)for(var O=d,M=E,j=0;j<C;j++){var z=y[q+j],U=w[q+j],Te=y[q+j+C],ne=w[q+j+C],N=O*Te-M*ne;ne=O*ne+M*Te,Te=N,y[q+j]=z+Te,w[q+j]=U+ne,y[q+j+C]=z-Te,w[q+j+C]=U-ne,j!==b&&(N=d*O-E*M,M=d*M+E*O,O=N)}},k.prototype.guessLen13b=function(u,m){var y=Math.max(m,u)|1,w=y&1,g=0;for(y=y/2|0;y;y=y>>>1)g++;return 1<<g+1+w},k.prototype.conjugate=function(u,m,y){if(!(y<=1))for(var w=0;w<y/2;w++){var g=u[w];u[w]=u[y-w-1],u[y-w-1]=g,g=m[w],m[w]=-m[y-w-1],m[y-w-1]=-g}},k.prototype.normalize13b=function(u,m){for(var y=0,w=0;w<m/2;w++){var g=Math.round(u[2*w+1]/m)*8192+Math.round(u[2*w]/m)+y;u[w]=g&67108863,g<67108864?y=0:y=g/67108864|0}return u},k.prototype.convert13b=function(u,m,y,w){for(var g=0,_=0;_<m;_++)g=g+(u[_]|0),y[2*_]=g&8191,g=g>>>13,y[2*_+1]=g&8191,g=g>>>13;for(_=2*m;_<w;++_)y[_]=0;t(g===0),t((g&-8192)===0)},k.prototype.stub=function(u){for(var m=new Array(u),y=0;y<u;y++)m[y]=0;return m},k.prototype.mulp=function(u,m,y){var w=2*this.guessLen13b(u.length,m.length),g=this.makeRBT(w),_=this.stub(w),C=new Array(w),b=new Array(w),d=new Array(w),E=new Array(w),q=new Array(w),O=new Array(w),M=y.words;M.length=w,this.convert13b(u.words,u.length,C,w),this.convert13b(m.words,m.length,E,w),this.transform(C,_,b,d,w,g),this.transform(E,_,q,O,w,g);for(var j=0;j<w;j++){var z=b[j]*q[j]-d[j]*O[j];d[j]=b[j]*O[j]+d[j]*q[j],b[j]=z}return this.conjugate(b,d,w),this.transform(b,d,M,_,w,g),this.conjugate(M,_,w),this.normalize13b(M,w),y.negative=u.negative^m.negative,y.length=u.length+m.length,y.strip()},i.prototype.mul=function(u){var m=new i(null);return m.words=new Array(this.length+u.length),this.mulTo(u,m)},i.prototype.mulf=function(u){var m=new i(null);return m.words=new Array(this.length+u.length),A(this,u,m)},i.prototype.imul=function(u){return this.clone().mulTo(u,this)},i.prototype.imuln=function(u){t(typeof u=="number"),t(u<67108864);for(var m=0,y=0;y<this.length;y++){var w=(this.words[y]|0)*u,g=(w&67108863)+(m&67108863);m>>=26,m+=w/67108864|0,m+=g>>>26,this.words[y]=g&67108863}return m!==0&&(this.words[y]=m,this.length++),this.length=u===0?1:this.length,this},i.prototype.muln=function(u){return this.clone().imuln(u)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(u){var m=h(u);if(m.length===0)return new i(1);for(var y=this,w=0;w<m.length&&m[w]===0;w++,y=y.sqr());if(++w<m.length)for(var g=y.sqr();w<m.length;w++,g=g.sqr())m[w]!==0&&(y=y.mul(g));return y},i.prototype.iushln=function(u){t(typeof u=="number"&&u>=0);var m=u%26,y=(u-m)/26,w=67108863>>>26-m<<26-m,g;if(m!==0){var _=0;for(g=0;g<this.length;g++){var C=this.words[g]&w,b=(this.words[g]|0)-C<<m;this.words[g]=b|_,_=C>>>26-m}_&&(this.words[g]=_,this.length++)}if(y!==0){for(g=this.length-1;g>=0;g--)this.words[g+y]=this.words[g];for(g=0;g<y;g++)this.words[g]=0;this.length+=y}return this.strip()},i.prototype.ishln=function(u){return t(this.negative===0),this.iushln(u)},i.prototype.iushrn=function(u,m,y){t(typeof u=="number"&&u>=0);var w;m?w=(m-m%26)/26:w=0;var g=u%26,_=Math.min((u-g)/26,this.length),C=67108863^67108863>>>g<<g,b=y;if(w-=_,w=Math.max(0,w),b){for(var d=0;d<_;d++)b.words[d]=this.words[d];b.length=_}if(_!==0)if(this.length>_)for(this.length-=_,d=0;d<this.length;d++)this.words[d]=this.words[d+_];else this.words[0]=0,this.length=1;var E=0;for(d=this.length-1;d>=0&&(E!==0||d>=w);d--){var q=this.words[d]|0;this.words[d]=E<<26-g|q>>>g,E=q&C}return b&&E!==0&&(b.words[b.length++]=E),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(u,m,y){return t(this.negative===0),this.iushrn(u,m,y)},i.prototype.shln=function(u){return this.clone().ishln(u)},i.prototype.ushln=function(u){return this.clone().iushln(u)},i.prototype.shrn=function(u){return this.clone().ishrn(u)},i.prototype.ushrn=function(u){return this.clone().iushrn(u)},i.prototype.testn=function(u){t(typeof u=="number"&&u>=0);var m=u%26,y=(u-m)/26,w=1<<m;if(this.length<=y)return!1;var g=this.words[y];return!!(g&w)},i.prototype.imaskn=function(u){t(typeof u=="number"&&u>=0);var m=u%26,y=(u-m)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=y)return this;if(m!==0&&y++,this.length=Math.min(y,this.length),m!==0){var w=67108863^67108863>>>m<<m;this.words[this.length-1]&=w}return this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.maskn=function(u){return this.clone().imaskn(u)},i.prototype.iaddn=function(u){return t(typeof u=="number"),t(u<67108864),u<0?this.isubn(-u):this.negative!==0?this.length===1&&(this.words[0]|0)<u?(this.words[0]=u-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(u),this.negative=1,this):this._iaddn(u)},i.prototype._iaddn=function(u){this.words[0]+=u;for(var m=0;m<this.length&&this.words[m]>=67108864;m++)this.words[m]-=67108864,m===this.length-1?this.words[m+1]=1:this.words[m+1]++;return this.length=Math.max(this.length,m+1),this},i.prototype.isubn=function(u){if(t(typeof u=="number"),t(u<67108864),u<0)return this.iaddn(-u);if(this.negative!==0)return this.negative=0,this.iaddn(u),this.negative=1,this;if(this.words[0]-=u,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var m=0;m<this.length&&this.words[m]<0;m++)this.words[m]+=67108864,this.words[m+1]-=1;return this.strip()},i.prototype.addn=function(u){return this.clone().iaddn(u)},i.prototype.subn=function(u){return this.clone().isubn(u)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(u,m,y){var w=u.length+y,g;this._expand(w);var _,C=0;for(g=0;g<u.length;g++){_=(this.words[g+y]|0)+C;var b=(u.words[g]|0)*m;_-=b&67108863,C=(_>>26)-(b/67108864|0),this.words[g+y]=_&67108863}for(;g<this.length-y;g++)_=(this.words[g+y]|0)+C,C=_>>26,this.words[g+y]=_&67108863;if(C===0)return this.strip();for(t(C===-1),C=0,g=0;g<this.length;g++)_=-(this.words[g]|0)+C,C=_>>26,this.words[g]=_&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(u,m){var y=this.length-u.length,w=this.clone(),g=u,_=g.words[g.length-1]|0,C=this._countBits(_);y=26-C,y!==0&&(g=g.ushln(y),w.iushln(y),_=g.words[g.length-1]|0);var b=w.length-g.length,d;if(m!=="mod"){d=new i(null),d.length=b+1,d.words=new Array(d.length);for(var E=0;E<d.length;E++)d.words[E]=0}var q=w.clone()._ishlnsubmul(g,1,b);q.negative===0&&(w=q,d&&(d.words[b]=1));for(var O=b-1;O>=0;O--){var M=(w.words[g.length+O]|0)*67108864+(w.words[g.length+O-1]|0);for(M=Math.min(M/_|0,67108863),w._ishlnsubmul(g,M,O);w.negative!==0;)M--,w.negative=0,w._ishlnsubmul(g,1,O),w.isZero()||(w.negative^=1);d&&(d.words[O]=M)}return d&&d.strip(),w.strip(),m!=="div"&&y!==0&&w.iushrn(y),{div:d||null,mod:w}},i.prototype.divmod=function(u,m,y){if(t(!u.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var w,g,_;return this.negative!==0&&u.negative===0?(_=this.neg().divmod(u,m),m!=="mod"&&(w=_.div.neg()),m!=="div"&&(g=_.mod.neg(),y&&g.negative!==0&&g.iadd(u)),{div:w,mod:g}):this.negative===0&&u.negative!==0?(_=this.divmod(u.neg(),m),m!=="mod"&&(w=_.div.neg()),{div:w,mod:_.mod}):(this.negative&u.negative)!==0?(_=this.neg().divmod(u.neg(),m),m!=="div"&&(g=_.mod.neg(),y&&g.negative!==0&&g.isub(u)),{div:_.div,mod:g}):u.length>this.length||this.cmp(u)<0?{div:new i(0),mod:this}:u.length===1?m==="div"?{div:this.divn(u.words[0]),mod:null}:m==="mod"?{div:null,mod:new i(this.modn(u.words[0]))}:{div:this.divn(u.words[0]),mod:new i(this.modn(u.words[0]))}:this._wordDiv(u,m)},i.prototype.div=function(u){return this.divmod(u,"div",!1).div},i.prototype.mod=function(u){return this.divmod(u,"mod",!1).mod},i.prototype.umod=function(u){return this.divmod(u,"mod",!0).mod},i.prototype.divRound=function(u){var m=this.divmod(u);if(m.mod.isZero())return m.div;var y=m.div.negative!==0?m.mod.isub(u):m.mod,w=u.ushrn(1),g=u.andln(1),_=y.cmp(w);return _<0||g===1&&_===0?m.div:m.div.negative!==0?m.div.isubn(1):m.div.iaddn(1)},i.prototype.modn=function(u){t(u<=67108863);for(var m=(1<<26)%u,y=0,w=this.length-1;w>=0;w--)y=(m*y+(this.words[w]|0))%u;return y},i.prototype.idivn=function(u){t(u<=67108863);for(var m=0,y=this.length-1;y>=0;y--){var w=(this.words[y]|0)+m*67108864;this.words[y]=w/u|0,m=w%u}return this.strip()},i.prototype.divn=function(u){return this.clone().idivn(u)},i.prototype.egcd=function(u){t(u.negative===0),t(!u.isZero());var m=this,y=u.clone();m.negative!==0?m=m.umod(u):m=m.clone();for(var w=new i(1),g=new i(0),_=new i(0),C=new i(1),b=0;m.isEven()&&y.isEven();)m.iushrn(1),y.iushrn(1),++b;for(var d=y.clone(),E=m.clone();!m.isZero();){for(var q=0,O=1;(m.words[0]&O)===0&&q<26;++q,O<<=1);if(q>0)for(m.iushrn(q);q-- >0;)(w.isOdd()||g.isOdd())&&(w.iadd(d),g.isub(E)),w.iushrn(1),g.iushrn(1);for(var M=0,j=1;(y.words[0]&j)===0&&M<26;++M,j<<=1);if(M>0)for(y.iushrn(M);M-- >0;)(_.isOdd()||C.isOdd())&&(_.iadd(d),C.isub(E)),_.iushrn(1),C.iushrn(1);m.cmp(y)>=0?(m.isub(y),w.isub(_),g.isub(C)):(y.isub(m),_.isub(w),C.isub(g))}return{a:_,b:C,gcd:y.iushln(b)}},i.prototype._invmp=function(u){t(u.negative===0),t(!u.isZero());var m=this,y=u.clone();m.negative!==0?m=m.umod(u):m=m.clone();for(var w=new i(1),g=new i(0),_=y.clone();m.cmpn(1)>0&&y.cmpn(1)>0;){for(var C=0,b=1;(m.words[0]&b)===0&&C<26;++C,b<<=1);if(C>0)for(m.iushrn(C);C-- >0;)w.isOdd()&&w.iadd(_),w.iushrn(1);for(var d=0,E=1;(y.words[0]&E)===0&&d<26;++d,E<<=1);if(d>0)for(y.iushrn(d);d-- >0;)g.isOdd()&&g.iadd(_),g.iushrn(1);m.cmp(y)>=0?(m.isub(y),w.isub(g)):(y.isub(m),g.isub(w))}var q;return m.cmpn(1)===0?q=w:q=g,q.cmpn(0)<0&&q.iadd(u),q},i.prototype.gcd=function(u){if(this.isZero())return u.abs();if(u.isZero())return this.abs();var m=this.clone(),y=u.clone();m.negative=0,y.negative=0;for(var w=0;m.isEven()&&y.isEven();w++)m.iushrn(1),y.iushrn(1);do{for(;m.isEven();)m.iushrn(1);for(;y.isEven();)y.iushrn(1);var g=m.cmp(y);if(g<0){var _=m;m=y,y=_}else if(g===0||y.cmpn(1)===0)break;m.isub(y)}while(!0);return y.iushln(w)},i.prototype.invm=function(u){return this.egcd(u).a.umod(u)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(u){return this.words[0]&u},i.prototype.bincn=function(u){t(typeof u=="number");var m=u%26,y=(u-m)/26,w=1<<m;if(this.length<=y)return this._expand(y+1),this.words[y]|=w,this;for(var g=w,_=y;g!==0&&_<this.length;_++){var C=this.words[_]|0;C+=g,g=C>>>26,C&=67108863,this.words[_]=C}return g!==0&&(this.words[_]=g,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(u){var m=u<0;if(this.negative!==0&&!m)return-1;if(this.negative===0&&m)return 1;this.strip();var y;if(this.length>1)y=1;else{m&&(u=-u),t(u<=67108863,"Number is too big");var w=this.words[0]|0;y=w===u?0:w<u?-1:1}return this.negative!==0?-y|0:y},i.prototype.cmp=function(u){if(this.negative!==0&&u.negative===0)return-1;if(this.negative===0&&u.negative!==0)return 1;var m=this.ucmp(u);return this.negative!==0?-m|0:m},i.prototype.ucmp=function(u){if(this.length>u.length)return 1;if(this.length<u.length)return-1;for(var m=0,y=this.length-1;y>=0;y--){var w=this.words[y]|0,g=u.words[y]|0;if(w!==g){w<g?m=-1:w>g&&(m=1);break}}return m},i.prototype.gtn=function(u){return this.cmpn(u)===1},i.prototype.gt=function(u){return this.cmp(u)===1},i.prototype.gten=function(u){return this.cmpn(u)>=0},i.prototype.gte=function(u){return this.cmp(u)>=0},i.prototype.ltn=function(u){return this.cmpn(u)===-1},i.prototype.lt=function(u){return this.cmp(u)===-1},i.prototype.lten=function(u){return this.cmpn(u)<=0},i.prototype.lte=function(u){return this.cmp(u)<=0},i.prototype.eqn=function(u){return this.cmpn(u)===0},i.prototype.eq=function(u){return this.cmp(u)===0},i.red=function(u){return new L(u)},i.prototype.toRed=function(u){return t(!this.red,"Already a number in reduction context"),t(this.negative===0,"red works only with positives"),u.convertTo(this)._forceRed(u)},i.prototype.fromRed=function(){return t(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(u){return this.red=u,this},i.prototype.forceRed=function(u){return t(!this.red,"Already a number in reduction context"),this._forceRed(u)},i.prototype.redAdd=function(u){return t(this.red,"redAdd works only with red numbers"),this.red.add(this,u)},i.prototype.redIAdd=function(u){return t(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,u)},i.prototype.redSub=function(u){return t(this.red,"redSub works only with red numbers"),this.red.sub(this,u)},i.prototype.redISub=function(u){return t(this.red,"redISub works only with red numbers"),this.red.isub(this,u)},i.prototype.redShl=function(u){return t(this.red,"redShl works only with red numbers"),this.red.shl(this,u)},i.prototype.redMul=function(u){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.mul(this,u)},i.prototype.redIMul=function(u){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.imul(this,u)},i.prototype.redSqr=function(){return t(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return t(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return t(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return t(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return t(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(u){return t(this.red&&!u.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,u)};var P={k256:null,p224:null,p192:null,p25519:null};function I(T,u){this.name=T,this.p=new i(u,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}I.prototype._tmp=function(){var u=new i(null);return u.words=new Array(Math.ceil(this.n/13)),u},I.prototype.ireduce=function(u){var m=u,y;do this.split(m,this.tmp),m=this.imulK(m),m=m.iadd(this.tmp),y=m.bitLength();while(y>this.n);var w=y<this.n?-1:m.ucmp(this.p);return w===0?(m.words[0]=0,m.length=1):w>0?m.isub(this.p):m.strip!==void 0?m.strip():m._strip(),m},I.prototype.split=function(u,m){u.iushrn(this.n,0,m)},I.prototype.imulK=function(u){return u.imul(this.k)};function B(){I.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(B,I),B.prototype.split=function(u,m){for(var y=4194303,w=Math.min(u.length,9),g=0;g<w;g++)m.words[g]=u.words[g];if(m.length=w,u.length<=9){u.words[0]=0,u.length=1;return}var _=u.words[9];for(m.words[m.length++]=_&y,g=10;g<u.length;g++){var C=u.words[g]|0;u.words[g-10]=(C&y)<<4|_>>>22,_=C}_>>>=22,u.words[g-10]=_,_===0&&u.length>10?u.length-=10:u.length-=9},B.prototype.imulK=function(u){u.words[u.length]=0,u.words[u.length+1]=0,u.length+=2;for(var m=0,y=0;y<u.length;y++){var w=u.words[y]|0;m+=w*977,u.words[y]=m&67108863,m=w*64+(m/67108864|0)}return u.words[u.length-1]===0&&(u.length--,u.words[u.length-1]===0&&u.length--),u};function V(){I.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(V,I);function F(){I.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(F,I);function G(){I.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(G,I),G.prototype.imulK=function(u){for(var m=0,y=0;y<u.length;y++){var w=(u.words[y]|0)*19+m,g=w&67108863;w>>>=26,u.words[y]=g,m=w}return m!==0&&(u.words[u.length++]=m),u},i._prime=function(u){if(P[u])return P[u];var m;if(u==="k256")m=new B;else if(u==="p224")m=new V;else if(u==="p192")m=new F;else if(u==="p25519")m=new G;else throw new Error("Unknown prime "+u);return P[u]=m,m};function L(T){if(typeof T=="string"){var u=i._prime(T);this.m=u.p,this.prime=u}else t(T.gtn(1),"modulus must be greater than 1"),this.m=T,this.prime=null}L.prototype._verify1=function(u){t(u.negative===0,"red works only with positives"),t(u.red,"red works only with red numbers")},L.prototype._verify2=function(u,m){t((u.negative|m.negative)===0,"red works only with positives"),t(u.red&&u.red===m.red,"red works only with red numbers")},L.prototype.imod=function(u){return this.prime?this.prime.ireduce(u)._forceRed(this):u.umod(this.m)._forceRed(this)},L.prototype.neg=function(u){return u.isZero()?u.clone():this.m.sub(u)._forceRed(this)},L.prototype.add=function(u,m){this._verify2(u,m);var y=u.add(m);return y.cmp(this.m)>=0&&y.isub(this.m),y._forceRed(this)},L.prototype.iadd=function(u,m){this._verify2(u,m);var y=u.iadd(m);return y.cmp(this.m)>=0&&y.isub(this.m),y},L.prototype.sub=function(u,m){this._verify2(u,m);var y=u.sub(m);return y.cmpn(0)<0&&y.iadd(this.m),y._forceRed(this)},L.prototype.isub=function(u,m){this._verify2(u,m);var y=u.isub(m);return y.cmpn(0)<0&&y.iadd(this.m),y},L.prototype.shl=function(u,m){return this._verify1(u),this.imod(u.ushln(m))},L.prototype.imul=function(u,m){return this._verify2(u,m),this.imod(u.imul(m))},L.prototype.mul=function(u,m){return this._verify2(u,m),this.imod(u.mul(m))},L.prototype.isqr=function(u){return this.imul(u,u.clone())},L.prototype.sqr=function(u){return this.mul(u,u)},L.prototype.sqrt=function(u){if(u.isZero())return u.clone();var m=this.m.andln(3);if(t(m%2===1),m===3){var y=this.m.add(new i(1)).iushrn(2);return this.pow(u,y)}for(var w=this.m.subn(1),g=0;!w.isZero()&&w.andln(1)===0;)g++,w.iushrn(1);t(!w.isZero());var _=new i(1).toRed(this),C=_.redNeg(),b=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new i(2*d*d).toRed(this);this.pow(d,b).cmp(C)!==0;)d.redIAdd(C);for(var E=this.pow(d,w),q=this.pow(u,w.addn(1).iushrn(1)),O=this.pow(u,w),M=g;O.cmp(_)!==0;){for(var j=O,z=0;j.cmp(_)!==0;z++)j=j.redSqr();t(z<M);var U=this.pow(E,new i(1).iushln(M-z-1));q=q.redMul(U),E=U.redSqr(),O=O.redMul(E),M=z}return q},L.prototype.invm=function(u){var m=u._invmp(this.m);return m.negative!==0?(m.negative=0,this.imod(m).redNeg()):this.imod(m)},L.prototype.pow=function(u,m){if(m.isZero())return new i(1).toRed(this);if(m.cmpn(1)===0)return u.clone();var y=4,w=new Array(1<<y);w[0]=new i(1).toRed(this),w[1]=u;for(var g=2;g<w.length;g++)w[g]=this.mul(w[g-1],u);var _=w[0],C=0,b=0,d=m.bitLength()%26;for(d===0&&(d=26),g=m.length-1;g>=0;g--){for(var E=m.words[g],q=d-1;q>=0;q--){var O=E>>q&1;if(_!==w[0]&&(_=this.sqr(_)),O===0&&C===0){b=0;continue}C<<=1,C|=O,b++,!(b!==y&&(g!==0||q!==0))&&(_=this.mul(_,w[C]),b=0,C=0)}d=26}return _},L.prototype.convertTo=function(u){var m=u.umod(this.m);return m===u?m.clone():m},L.prototype.convertFrom=function(u){var m=u.clone();return m.red=null,m},i.mont=function(u){return new H(u)};function H(T){L.call(this,T),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(H,L),H.prototype.convertTo=function(u){return this.imod(u.ushln(this.shift))},H.prototype.convertFrom=function(u){var m=this.imod(u.mul(this.rinv));return m.red=null,m},H.prototype.imul=function(u,m){if(u.isZero()||m.isZero())return u.words[0]=0,u.length=1,u;var y=u.imul(m),w=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=y.isub(w).iushrn(this.shift),_=g;return g.cmp(this.m)>=0?_=g.isub(this.m):g.cmpn(0)<0&&(_=g.iadd(this.m)),_._forceRed(this)},H.prototype.mul=function(u,m){if(u.isZero()||m.isZero())return new i(0)._forceRed(this);var y=u.mul(m),w=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=y.isub(w).iushrn(this.shift),_=g;return g.cmp(this.m)>=0?_=g.isub(this.m):g.cmpn(0)<0&&(_=g.iadd(this.m)),_._forceRed(this)},H.prototype.invm=function(u){var m=this.imod(u._invmp(this.m).mul(this.r2));return m._forceRed(this)}})(typeof Oh>"u"||Oh,WS)});var GS=R((nW,Ph)=>{typeof Object.create=="function"?Ph.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Ph.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}});var qn=R((iW,Nh)=>{try{if(Ih=require("util"),typeof Ih.inherits!="function")throw"";Nh.exports=Ih.inherits}catch{Nh.exports=GS()}var Ih});var ql=R((sW,zS)=>{"use strict";var Ul=require("buffer"),Cs=Ul.Buffer,cr={},lr;for(lr in Ul)Ul.hasOwnProperty(lr)&&(lr==="SlowBuffer"||lr==="Buffer"||(cr[lr]=Ul[lr]));var As=cr.Buffer={};for(lr in Cs)Cs.hasOwnProperty(lr)&&(lr==="allocUnsafe"||lr==="allocUnsafeSlow"||(As[lr]=Cs[lr]));cr.Buffer.prototype=Cs.prototype;(!As.from||As.from===Uint8Array.from)&&(As.from=function(r,e,t){if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof r);if(r&&typeof r.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);return Cs(r,e,t)});As.alloc||(As.alloc=function(r,e,t){if(typeof r!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof r);if(r<0||r>=2*(1<<30))throw new RangeError('The value "'+r+'" is invalid for option "size"');var n=Cs(r);return!e||e.length===0?n.fill(0):typeof t=="string"?n.fill(e,t):n.fill(e),n});if(!cr.kStringMaxLength)try{cr.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}cr.constants||(cr.constants={MAX_LENGTH:cr.kMaxLength},cr.kStringMaxLength&&(cr.constants.MAX_STRING_LENGTH=cr.kStringMaxLength));zS.exports=cr});var Hl=R(VS=>{"use strict";var _B=qn();function ur(r){this._reporterState={obj:null,path:[],options:r||{},errors:[]}}VS.Reporter=ur;ur.prototype.isError=function(e){return e instanceof Rs};ur.prototype.save=function(){let e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}};ur.prototype.restore=function(e){let t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)};ur.prototype.enterKey=function(e){return this._reporterState.path.push(e)};ur.prototype.exitKey=function(e){let t=this._reporterState;t.path=t.path.slice(0,e-1)};ur.prototype.leaveKey=function(e,t,n){let i=this._reporterState;this.exitKey(e),i.obj!==null&&(i.obj[t]=n)};ur.prototype.path=function(){return this._reporterState.path.join("/")};ur.prototype.enterObject=function(){let e=this._reporterState,t=e.obj;return e.obj={},t};ur.prototype.leaveObject=function(e){let t=this._reporterState,n=t.obj;return t.obj=e,n};ur.prototype.error=function(e){let t,n=this._reporterState,i=e instanceof Rs;if(i?t=e:t=new Rs(n.path.map(function(s){return"["+JSON.stringify(s)+"]"}).join(""),e.message||e,e.stack),!n.options.partial)throw t;return i||n.errors.push(t),t};ur.prototype.wrapResult=function(e){let t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e};function Rs(r,e){this.path=r,this.rethrow(e)}_B(Rs,Error);Rs.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,Rs),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}});var Ms=R(Lh=>{"use strict";var bB=qn(),$l=Hl().Reporter,ks=ql().Buffer;function pr(r,e){if($l.call(this,e),!ks.isBuffer(r)){this.error("Input not Buffer");return}this.base=r,this.offset=0,this.length=r.length}bB(pr,$l);Lh.DecoderBuffer=pr;pr.isDecoderBuffer=function(e){return e instanceof pr?!0:typeof e=="object"&&ks.isBuffer(e.base)&&e.constructor.name==="DecoderBuffer"&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.save=="function"&&typeof e.restore=="function"&&typeof e.isEmpty=="function"&&typeof e.readUInt8=="function"&&typeof e.skip=="function"&&typeof e.raw=="function"};pr.prototype.save=function(){return{offset:this.offset,reporter:$l.prototype.save.call(this)}};pr.prototype.restore=function(e){let t=new pr(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,$l.prototype.restore.call(this,e.reporter),t};pr.prototype.isEmpty=function(){return this.offset===this.length};pr.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")};pr.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");let n=new pr(this.base);return n._reporterState=this._reporterState,n.offset=this.offset,n.length=this.offset+e,this.offset+=e,n};pr.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)};function Os(r,e){if(Array.isArray(r))this.length=0,this.value=r.map(function(t){return Os.isEncoderBuffer(t)||(t=new Os(t,e)),this.length+=t.length,t},this);else if(typeof r=="number"){if(!(0<=r&&r<=255))return e.error("non-byte EncoderBuffer value");this.value=r,this.length=1}else if(typeof r=="string")this.value=r,this.length=ks.byteLength(r);else if(ks.isBuffer(r))this.value=r,this.length=r.length;else return e.error("Unsupported type: "+typeof r)}Lh.EncoderBuffer=Os;Os.isEncoderBuffer=function(e){return e instanceof Os?!0:typeof e=="object"&&e.constructor.name==="EncoderBuffer"&&typeof e.length=="number"&&typeof e.join=="function"};Os.prototype.join=function(e,t){return e||(e=ks.alloc(this.length)),t||(t=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(n){n.join(e,t),t+=n.length}):(typeof this.value=="number"?e[t]=this.value:typeof this.value=="string"?e.write(this.value,t):ks.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}});var JS=R((cW,YS)=>{YS.exports=KS;function KS(r,e){if(!r)throw new Error(e||"Assertion failed")}KS.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}});var Wl=R((lW,ZS)=>{"use strict";var wB=Hl().Reporter,SB=Ms().EncoderBuffer,EB=Ms().DecoderBuffer,kt=JS(),XS=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],TB=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(XS),CB=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function de(r,e,t){let n={};this._baseState=n,n.name=t,n.enc=r,n.parent=e||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n.default=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}ZS.exports=de;var AB=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];de.prototype.clone=function(){let e=this._baseState,t={};AB.forEach(function(i){t[i]=e[i]});let n=new this.constructor(t.parent);return n._baseState=t,n};de.prototype._wrap=function(){let e=this._baseState;TB.forEach(function(t){this[t]=function(){let i=new this.constructor(this);return e.children.push(i),i[t].apply(i,arguments)}},this)};de.prototype._init=function(e){let t=this._baseState;kt(t.parent===null),e.call(this),t.children=t.children.filter(function(n){return n._baseState.parent===this},this),kt.equal(t.children.length,1,"Root node can have only one child")};de.prototype._useArgs=function(e){let t=this._baseState,n=e.filter(function(i){return i instanceof this.constructor},this);e=e.filter(function(i){return!(i instanceof this.constructor)},this),n.length!==0&&(kt(t.children===null),t.children=n,n.forEach(function(i){i._baseState.parent=this},this)),e.length!==0&&(kt(t.args===null),t.args=e,t.reverseArgs=e.map(function(i){if(typeof i!="object"||i.constructor!==Object)return i;let s={};return Object.keys(i).forEach(function(o){o==(o|0)&&(o|=0);let a=i[o];s[a]=o}),s}))};CB.forEach(function(r){de.prototype[r]=function(){let t=this._baseState;throw new Error(r+" not implemented for encoding: "+t.enc)}});XS.forEach(function(r){de.prototype[r]=function(){let t=this._baseState,n=Array.prototype.slice.call(arguments);return kt(t.tag===null),t.tag=r,this._useArgs(n),this}});de.prototype.use=function(e){kt(e);let t=this._baseState;return kt(t.use===null),t.use=e,this};de.prototype.optional=function(){let e=this._baseState;return e.optional=!0,this};de.prototype.def=function(e){let t=this._baseState;return kt(t.default===null),t.default=e,t.optional=!0,this};de.prototype.explicit=function(e){let t=this._baseState;return kt(t.explicit===null&&t.implicit===null),t.explicit=e,this};de.prototype.implicit=function(e){let t=this._baseState;return kt(t.explicit===null&&t.implicit===null),t.implicit=e,this};de.prototype.obj=function(){let e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,t.length!==0&&this._useArgs(t),this};de.prototype.key=function(e){let t=this._baseState;return kt(t.key===null),t.key=e,this};de.prototype.any=function(){let e=this._baseState;return e.any=!0,this};de.prototype.choice=function(e){let t=this._baseState;return kt(t.choice===null),t.choice=e,this._useArgs(Object.keys(e).map(function(n){return e[n]})),this};de.prototype.contains=function(e){let t=this._baseState;return kt(t.use===null),t.contains=e,this};de.prototype._decode=function(e,t){let n=this._baseState;if(n.parent===null)return e.wrapResult(n.children[0]._decode(e,t));let i=n.default,s=!0,o=null;if(n.key!==null&&(o=e.enterKey(n.key)),n.optional){let c=null;if(n.explicit!==null?c=n.explicit:n.implicit!==null?c=n.implicit:n.tag!==null&&(c=n.tag),c===null&&!n.any){let l=e.save();try{n.choice===null?this._decodeGeneric(n.tag,e,t):this._decodeChoice(e,t),s=!0}catch{s=!1}e.restore(l)}else if(s=this._peekTag(e,c,n.any),e.isError(s))return s}let a;if(n.obj&&s&&(a=e.enterObject()),s){if(n.explicit!==null){let l=this._decodeTag(e,n.explicit);if(e.isError(l))return l;e=l}let c=e.offset;if(n.use===null&&n.choice===null){let l;n.any&&(l=e.save());let p=this._decodeTag(e,n.implicit!==null?n.implicit:n.tag,n.any);if(e.isError(p))return p;n.any?i=e.raw(l):e=p}if(t&&t.track&&n.tag!==null&&t.track(e.path(),c,e.length,"tagged"),t&&t.track&&n.tag!==null&&t.track(e.path(),e.offset,e.length,"content"),n.any||(n.choice===null?i=this._decodeGeneric(n.tag,e,t):i=this._decodeChoice(e,t)),e.isError(i))return i;if(!n.any&&n.choice===null&&n.children!==null&&n.children.forEach(function(p){p._decode(e,t)}),n.contains&&(n.tag==="octstr"||n.tag==="bitstr")){let l=new EB(i);i=this._getUse(n.contains,e._reporterState.obj)._decode(l,t)}}return n.obj&&s&&(i=e.leaveObject(a)),n.key!==null&&(i!==null||s===!0)?e.leaveKey(o,n.key,i):o!==null&&e.exitKey(o),i};de.prototype._decodeGeneric=function(e,t,n){let i=this._baseState;return e==="seq"||e==="set"?null:e==="seqof"||e==="setof"?this._decodeList(t,e,i.args[0],n):/str$/.test(e)?this._decodeStr(t,e,n):e==="objid"&&i.args?this._decodeObjid(t,i.args[0],i.args[1],n):e==="objid"?this._decodeObjid(t,null,null,n):e==="gentime"||e==="utctime"?this._decodeTime(t,e,n):e==="null_"?this._decodeNull(t,n):e==="bool"?this._decodeBool(t,n):e==="objDesc"?this._decodeStr(t,e,n):e==="int"||e==="enum"?this._decodeInt(t,i.args&&i.args[0],n):i.use!==null?this._getUse(i.use,t._reporterState.obj)._decode(t,n):t.error("unknown tag: "+e)};de.prototype._getUse=function(e,t){let n=this._baseState;return n.useDecoder=this._use(e,t),kt(n.useDecoder._baseState.parent===null),n.useDecoder=n.useDecoder._baseState.children[0],n.implicit!==n.useDecoder._baseState.implicit&&(n.useDecoder=n.useDecoder.clone(),n.useDecoder._baseState.implicit=n.implicit),n.useDecoder};de.prototype._decodeChoice=function(e,t){let n=this._baseState,i=null,s=!1;return Object.keys(n.choice).some(function(o){let a=e.save(),c=n.choice[o];try{let l=c._decode(e,t);if(e.isError(l))return!1;i={type:o,value:l},s=!0}catch{return e.restore(a),!1}return!0},this),s?i:e.error("Choice not matched")};de.prototype._createEncoderBuffer=function(e){return new SB(e,this.reporter)};de.prototype._encode=function(e,t,n){let i=this._baseState;if(i.default!==null&&i.default===e)return;let s=this._encodeValue(e,t,n);if(s!==void 0&&!this._skipDefault(s,t,n))return s};de.prototype._encodeValue=function(e,t,n){let i=this._baseState;if(i.parent===null)return i.children[0]._encode(e,t||new wB);let s=null;if(this.reporter=t,i.optional&&e===void 0)if(i.default!==null)e=i.default;else return;let o=null,a=!1;if(i.any)s=this._createEncoderBuffer(e);else if(i.choice)s=this._encodeChoice(e,t);else if(i.contains)o=this._getUse(i.contains,n)._encode(e,t),a=!0;else if(i.children)o=i.children.map(function(c){if(c._baseState.tag==="null_")return c._encode(null,t,e);if(c._baseState.key===null)return t.error("Child should have a key");let l=t.enterKey(c._baseState.key);if(typeof e!="object")return t.error("Child expected, but input is not object");let p=c._encode(e[c._baseState.key],t,e);return t.leaveKey(l),p},this).filter(function(c){return c}),o=this._createEncoderBuffer(o);else if(i.tag==="seqof"||i.tag==="setof"){if(!(i.args&&i.args.length===1))return t.error("Too many args for : "+i.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");let c=this.clone();c._baseState.implicit=null,o=this._createEncoderBuffer(e.map(function(l){let p=this._baseState;return this._getUse(p.args[0],e)._encode(l,t)},c))}else i.use!==null?s=this._getUse(i.use,n)._encode(e,t):(o=this._encodePrimitive(i.tag,e),a=!0);if(!i.any&&i.choice===null){let c=i.implicit!==null?i.implicit:i.tag,l=i.implicit===null?"universal":"context";c===null?i.use===null&&t.error("Tag could be omitted only for .use()"):i.use===null&&(s=this._encodeComposite(c,a,l,o))}return i.explicit!==null&&(s=this._encodeComposite(i.explicit,!1,"context",s)),s};de.prototype._encodeChoice=function(e,t){let n=this._baseState,i=n.choice[e.type];return i||kt(!1,e.type+" not found in "+JSON.stringify(Object.keys(n.choice))),i._encode(e.value,t)};de.prototype._encodePrimitive=function(e,t){let n=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if(e==="objid"&&n.args)return this._encodeObjid(t,n.reverseArgs[0],n.args[1]);if(e==="objid")return this._encodeObjid(t,null,null);if(e==="gentime"||e==="utctime")return this._encodeTime(t,e);if(e==="null_")return this._encodeNull();if(e==="int"||e==="enum")return this._encodeInt(t,n.args&&n.reverseArgs[0]);if(e==="bool")return this._encodeBool(t);if(e==="objDesc")return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)};de.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)};de.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}});var Gl=R(mi=>{"use strict";function QS(r){let e={};return Object.keys(r).forEach(function(t){(t|0)==t&&(t=t|0);let n=r[t];e[n]=t}),e}mi.tagClass={0:"universal",1:"application",2:"context",3:"private"};mi.tagClassByName=QS(mi.tagClass);mi.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};mi.tagByName=QS(mi.tag)});var Bh=R((pW,rE)=>{"use strict";var RB=qn(),gn=ql().Buffer,eE=Wl(),Dh=Gl();function tE(r){this.enc="der",this.name=r.name,this.entity=r,this.tree=new Cr,this.tree._init(r.body)}rE.exports=tE;tE.prototype.encode=function(e,t){return this.tree._encode(e,t).join()};function Cr(r){eE.call(this,"der",r)}RB(Cr,eE);Cr.prototype._encodeComposite=function(e,t,n,i){let s=kB(e,t,n,this.reporter);if(i.length<128){let c=gn.alloc(2);return c[0]=s,c[1]=i.length,this._createEncoderBuffer([c,i])}let o=1;for(let c=i.length;c>=256;c>>=8)o++;let a=gn.alloc(2+o);a[0]=s,a[1]=128|o;for(let c=1+o,l=i.length;l>0;c--,l>>=8)a[c]=l&255;return this._createEncoderBuffer([a,i])};Cr.prototype._encodeStr=function(e,t){if(t==="bitstr")return this._createEncoderBuffer([e.unused|0,e.data]);if(t==="bmpstr"){let n=gn.alloc(e.length*2);for(let i=0;i<e.length;i++)n.writeUInt16BE(e.charCodeAt(i),i*2);return this._createEncoderBuffer(n)}else return t==="numstr"?this._isNumstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: numstr supports only digits and space"):t==="printstr"?this._isPrintstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(t)?this._createEncoderBuffer(e):t==="objDesc"?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: "+t+" unsupported")};Cr.prototype._encodeObjid=function(e,t,n){if(typeof e=="string"){if(!t)return this.reporter.error("string objid given, but no values map found");if(!t.hasOwnProperty(e))return this.reporter.error("objid not found in values map");e=t[e].split(/[\s.]+/g);for(let a=0;a<e.length;a++)e[a]|=0}else if(Array.isArray(e)){e=e.slice();for(let a=0;a<e.length;a++)e[a]|=0}if(!Array.isArray(e))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(e));if(!n){if(e[1]>=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,e[0]*40+e[1])}let i=0;for(let a=0;a<e.length;a++){let c=e[a];for(i++;c>=128;c>>=7)i++}let s=gn.alloc(i),o=s.length-1;for(let a=e.length-1;a>=0;a--){let c=e[a];for(s[o--]=c&127;(c>>=7)>0;)s[o--]=128|c&127}return this._createEncoderBuffer(s)};function fr(r){return r<10?"0"+r:r}Cr.prototype._encodeTime=function(e,t){let n,i=new Date(e);return t==="gentime"?n=[fr(i.getUTCFullYear()),fr(i.getUTCMonth()+1),fr(i.getUTCDate()),fr(i.getUTCHours()),fr(i.getUTCMinutes()),fr(i.getUTCSeconds()),"Z"].join(""):t==="utctime"?n=[fr(i.getUTCFullYear()%100),fr(i.getUTCMonth()+1),fr(i.getUTCDate()),fr(i.getUTCHours()),fr(i.getUTCMinutes()),fr(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(n,"octstr")};Cr.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Cr.prototype._encodeInt=function(e,t){if(typeof e=="string"){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if(typeof e!="number"&&!gn.isBuffer(e)){let s=e.toArray();!e.sign&&s[0]&128&&s.unshift(0),e=gn.from(s)}if(gn.isBuffer(e)){let s=e.length;e.length===0&&s++;let o=gn.alloc(s);return e.copy(o),e.length===0&&(o[0]=0),this._createEncoderBuffer(o)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let n=1;for(let s=e;s>=256;s>>=8)n++;let i=new Array(n);for(let s=i.length-1;s>=0;s--)i[s]=e&255,e>>=8;return i[0]&128&&i.unshift(0),this._createEncoderBuffer(gn.from(i))};Cr.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)};Cr.prototype._use=function(e,t){return typeof e=="function"&&(e=e(t)),e._getEncoder("der").tree};Cr.prototype._skipDefault=function(e,t,n){let i=this._baseState,s;if(i.default===null)return!1;let o=e.join();if(i.defaultBuffer===void 0&&(i.defaultBuffer=this._encodeValue(i.default,t,n).join()),o.length!==i.defaultBuffer.length)return!1;for(s=0;s<o.length;s++)if(o[s]!==i.defaultBuffer[s])return!1;return!0};function kB(r,e,t,n){let i;if(r==="seqof"?r="seq":r==="setof"&&(r="set"),Dh.tagByName.hasOwnProperty(r))i=Dh.tagByName[r];else if(typeof r=="number"&&(r|0)===r)i=r;else return n.error("Unknown tag: "+r);return i>=31?n.error("Multi-octet tag encoding unsupported"):(e||(i|=32),i|=Dh.tagClassByName[t||"universal"]<<6,i)}});var iE=R((fW,nE)=>{"use strict";var OB=qn(),jh=Bh();function Fh(r){jh.call(this,r),this.enc="pem"}OB(Fh,jh);nE.exports=Fh;Fh.prototype.encode=function(e,t){let i=jh.prototype.encode.call(this,e).toString("base64"),s=["-----BEGIN "+t.label+"-----"];for(let o=0;o<i.length;o+=64)s.push(i.slice(o,o+64));return s.push("-----END "+t.label+"-----"),s.join(`
91
+ `),ml.add(e),r.on("close",()=>ml.delete(e))}function gw(r,e){X(e,{...ln,...Er,desktopEnabled:Bt,remoteAvailable:nh})}async function vw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);n&&(un(n),X(e))}function yw(r,e){X(e),un({step:zn.PREPARING,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Dn("restart-tunnel")}function xw(r,e){X(e),un({step:zn.PREPARING,stepDesc:""}),Dn("start-tunnel")}function _w(r,e){X(e),un({step:zn.STOPPED,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Dn("stop-tunnel")}function bw(r,e){X(e),un({step:zn.STOPPED,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null}),Dn("shutdown")}function ww(r,e){X(e),Dn("update")}function Sw(r,e){X(e,{connections:[...li.values()]})}function Ew(r,e){let t=new URL(r.url,"http://localhost"),n=parseInt(t.searchParams.get("lines")||bp,10);X(e,{logs:Sv(Number.isFinite(n)?n:bp)})}async function Tw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);if(!n)return;let i=!!n.enabled;if(i&&(!Er.screenRecording||!Er.accessibility)){X(e,{ok:!1,enabled:Bt,reason:"permissions_required"});return}let s=xs();Bt=i,rh(),_t("permissions",{...Er,desktopEnabled:Bt}),xs()!==s&&ih?.(),X(e,{ok:!0,enabled:Bt})}function Cw(r,e){X(e,Er)}async function Aw(r,e){let t=await Vd();X(e,{enabled:t})}async function Rw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);if(!n)return;let i=await Yb(!!n.enabled),s=await Vd();_t("autostart",{enabled:s}),X(e,{ok:i,enabled:s})}async function kw(r,e){let{parseJsonBody:t}=await Promise.resolve().then(()=>(Pt(),Mi)),n=await t(r,e);if(!n)return;let{type:i}=n;if(process.platform==="darwin"){$b(i);let s=Date.now(),o=setInterval(async()=>{((await vl())[i]||Date.now()-s>gv)&&clearInterval(o)},mv)}X(e)}var Bn,rw,th,ln,Bt,nh,Er,ml,li,gl,ih,pn=Ee(()=>{vt();Ii();vt();hs();Wb();Kd();Pt();nl();vt();Bn=require("fs"),rw=require("path");vt();Yd();th=(0,rw.join)(ie.STATE,"ui-state.json");ln={step:zn.STOPPED,stepDesc:"",tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,permanentKey:"",qrUrl:"",latency:null,uptime:null,healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]},tunnelHealth:{status:"unknown",checkedAt:null}},Bt=!1,nh=!1,Er={screenRecording:!1,accessibility:!1},ml=new Set,li=new Map;wv(ve);gl=null;ih=null});var Ow={};Vr(Ow,{ScreenHandler:()=>sh,encodeTilesBatch:()=>_s});function Y2(r){let e=Buffer.alloc(28);return e.writeUInt32LE(r.tileIndex,0),e.writeUInt32LE(r.x,4),e.writeUInt32LE(r.y,8),e.writeUInt32LE(r.width,12),e.writeUInt32LE(r.height,16),e.writeUInt32LE(r.imageBuffer.length,20),e.writeUInt32LE(r.hash>>>0,24),Buffer.concat([e,r.imageBuffer])}function _s(r,e){let t=Buffer.alloc(12);return t.writeUInt32LE(r.length,0),t.writeDoubleBE(e,4),Buffer.concat([t,...r.map(Y2)])}var sh,oh=Ee(()=>{qd();at();pn();sh=class{constructor(e,t){this.resourceManager=e,this.screenUpdateHelper=t}setupScreenHandlers(e,t,n){e.on("request-screen",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let s=await i.tileManager.detectChangedTiles();s.length>0&&n.sendTiles({tiles:s,timestamp:Date.now()},_s),this.resourceManager.updateClientActivity(e.id)}catch(s){me.error("Tile capture error:",s),n.emit("screen-error",{error:s.message})}})),e.on("request-screen-with-hashes",t(async i=>{let s=this.resourceManager.getClient(e.id);if(s)try{let o=i.tileHashes||[],a=await s.tileManager.compareClientTileHashes(o);a?.tiles?.length>0&&n.sendTiles({tiles:a.tiles,timestamp:Date.now()},_s),this.resourceManager.updateClientActivity(e.id)}catch(o){me.error("Tile capture with hashes error:",o),n.emit("screen-error",{error:o.message})}})),e.on("start-streaming",t(async()=>{let i=this.resourceManager.getClient(e.id);if(!i)return;i.streamingTimeout&&(clearTimeout(i.streamingTimeout),i.streamingTimeout=null),me.lifecycle("\u{1F680} Remote streaming started");let{tileFormat:s,webpEffort:o,jpegQuality:a}=$.pipeline;ve(`\u{1F5BC}\uFE0F Remote stream codec: ${s.toUpperCase()}${s==="webp"?` (effort=${o})`:""} q=${a}`),i.idleFrameCount=0,i.isStreaming=!0,i.streamGen=(i.streamGen||0)+1;let c=i.streamGen;i.tileManager.lastTileChecksums.clear();try{let p=await i.tileManager.getScreenDimensions();n.emit("screen-dimensions",p)}catch(p){me.error("Get dimensions error:",p)}let l=async()=>{if(!e.connected||!i.isStreaming||i.streamGen!==c){i.streamingTimeout=null;return}try{let p=performance.now(),f=await i.tileManager.detectChangedTilesWithHashes();if(f.tiles.length>0&&e.connected){let k=n.sendTiles({tiles:f.tiles,timestamp:Date.now(),currentHashes:f.currentHashes},_s);i.tileManager.commitHashes(k||[]),i.idleFrameCount=0}else i.idleFrameCount++;let{activeInterval:h,idleInterval:v,idleThreshold:x}=this.resourceManager.getStreamingConfig(),S=i.idleFrameCount>=x?v:h,A=Math.max(0,S-(performance.now()-p));i.streamingTimeout=setTimeout(l,A)}catch(p){me.error("Auto streaming error:",p),i.streamingTimeout=setTimeout(l,200)}};l()})),e.on("stop-streaming",()=>{let i=this.resourceManager.getClient(e.id);i&&(i.isStreaming=!1,i.streamingTimeout&&(clearTimeout(i.streamingTimeout),i.streamingTimeout=null),i.tileManager?.clearMemory?.(),me.lifecycle("\u23F9\uFE0F Remote streaming stopped"))}),e.on("get-screen-dimensions",t(async()=>{let i=this.resourceManager.getClient(e.id);if(i)try{let s=await i.tileManager.getScreenDimensions();n.emit("screen-dimensions",s)}catch(s){me.error("Get dimensions error:",s),n.emit("screen-error",{error:s.message})}})),e.on("boost-stream",t(()=>{let i=this.resourceManager.getClient(e.id);i&&(i.idleFrameCount=0)})),e.on("set-focus",t(i=>{let s=this.resourceManager.getClient(e.id);if(!s)return;let o=i?.rect||null,a=typeof i?.zoom=="number"?i.zoom:1,c=typeof i?.viewerWidth=="number"?i.viewerWidth:0,l=typeof i?.dpr=="number"?i.dpr:1,p=s.tileManager.pickProfile({zoom:a,viewerWidth:c,dpr:l});if(s.tileManager.setProfile(p),s.tileManager.setFocusRect(o),o){let f=s.tileManager.activeTileSet?.size||0,h=s.tileManager.totalTiles,v=h?(f/h*100).toFixed(0):0;me.focus(`\u{1F3AF} [Focus] rect=${o.x},${o.y} ${o.w}x${o.h} | tiles ${f}/${h} (${v}%)`)}else me.focus("\u{1F3AF} [Focus] cleared \u2192 full screen")}))}}});function Mw(r){ah.add(r)}function bs(r){ah.delete(r)}function bt(r,e,t){for(let n of ah)if(n.hasReadyAdapter?.())try{n.emit(e,t)}catch{}}var ah,ui=Ee(()=>{ah=new Set});async function Vw(){if(Go)return Go;let r=await import("node-screenshots");if(Go=(r.Monitor||r.default?.Monitor).all()[0],!Go)throw new Error("No monitor found via node-screenshots");return Go}async function Kw(r){hh=r,$.pipeline.captureLib==="nodeScreenshots"&&await Vw()}async function Yw(){let{captureLib:r,inputFormat:e}=$.pipeline;if(r==="robotjs"){let{width:s,height:o}=hh.getScreenSize(),a=hh.screen.capture(0,0,s,o),c=a.byteWidth/a.bytesPerPixel;return{buffer:Buffer.from(a.image),width:c,height:a.height,channels:a.bytesPerPixel,format:e}}let n=(await Vw()).captureImageSync();return{buffer:n.toRawSync?n.toRawSync():n.rawSync(),width:n.width,height:n.height,channels:4,format:e}}var hh,Go,Jw=Ee(()=>{at();hh=null,Go=null});function lB(r){return r==="bgra"?gh.FORMAT_BGRA:gh.FORMAT_RGBA}function vh(r){let e=new Uint32Array(r.buffer,r.byteOffset,r.length>>2);for(let t=0;t<e.length;t++){let n=e[t];e[t]=n&4278255360|(n&16711680)>>16|(n&255)<<16}}async function Xw(r,e,t,n=4,i,s){let{encoder:o,inputFormat:a,jpegQuality:c,tileFormat:l,webpEffort:p}=$.pipeline,f=i??c,h=s??a;if(o==="jpegTurbo"&&l!=="webp")return gh.compressSync(r,{width:e,height:t,format:lB(h),quality:f});let v=r;h==="bgra"&&(v=Buffer.from(r),vh(v));let x=(0,kl.default)(v,{raw:{width:e,height:t,channels:n}});return l==="webp"?x.webp({quality:f,effort:p}).toBuffer():x.jpeg({quality:f}).toBuffer()}var kl,mh,gh,Zw=Ee(()=>{kl=K(require("sharp"),1),mh=K(require("@julusian/jpeg-turbo"),1);at();gh=mh.default.default||mh.default;kl.default.cache(!1);kl.default.concurrency(1)});var Ol,Qw=Ee(()=>{at();pn();Ol=class{constructor(){this.cfg=$.logging,this.samples=[],this.lastLogTime=Date.now()}now(){return this.cfg.metrics?performance.now():0}record({capture:e,checksum:t,encode:n,total:i,changedTiles:s,totalTiles:o,tileBytes:a,rawBytes:c}){this.cfg.metrics&&(this.samples.push({capture:e,checksum:t,encode:n,total:i,changedTiles:s,totalTiles:o,tileBytes:a,rawBytes:c}),this.samples.length>=this.cfg.metricsEveryFrames&&this._flush())}_flush(){let e=this.samples.length,t=I=>(this.samples.reduce((B,V)=>B+V[I],0)/e).toFixed(1),n=(Date.now()-this.lastLogTime)/1e3,i=(e/n).toFixed(1),s=[],o=0;for(let I of this.samples){for(let B of I.tileBytes)s.push(B);o+=I.tileBytes.reduce((B,V)=>B+V,0)}let a=(o/e/1024).toFixed(1),c=s.length?(s.reduce((I,B)=>I+B,0)/s.length/1024).toFixed(2):"0",l=s.length?(Math.min(...s)/1024).toFixed(2):"0",p=s.length?(Math.max(...s)/1024).toFixed(2):"0",f=this.samples.reduce((I,B)=>I+B.rawBytes,0)/e,h=o/e,v=h>0?(f/h).toFixed(0):"0",x=(this.samples.reduce((I,B)=>I+B.changedTiles,0)/e).toFixed(0),S=this.samples[0]?.totalTiles||0,A=S?(x/S*100).toFixed(1):"0",k=$.pipeline,P=`[Metrics] ${k.captureLib}+${k.encoder} tile=${k.tileSize} q${k.jpegQuality} scale=${k.outputScale} | fps=${i} | capture=${t("capture")}ms enc=${t("encode")}ms total=${t("total")}ms | tiles=${x}/${S} (${A}%) | data=${a}KB/frame | tileAvg=${c}KB (min ${l}, max ${p}) | compress=${v}x`;ve(P),console.log(P),this.samples=[],this.lastLogTime=Date.now()}}});var rS={};Vr(rS,{TileManager:()=>yh,mapLimit:()=>fi});async function fi(r,e,t){let n=new Array(r.length),i=0,s=Array.from({length:Math.min(e,r.length)},async()=>{for(;i<r.length;){let o=i++;n[o]=await t(r[o],o)}});return await Promise.all(s),n}var Es,Pl,eS,Ml,tS,uB,pB,yh,nS=Ee(()=>{Es=K(require("fs"),1),Pl=K(require("path"),1),eS=K(require("sharp"),1),Ml=require("child_process"),tS=require("url");at();Jw();Zw();Qw();qd();uB=(0,tS.fileURLToPath)(__importMetaUrl),pB=Pl.default.dirname(uB);yh=class{constructor(e){this.robot=e,this.metrics=new Ol,this.tileSize=$.pipeline.tileSize,this.lastTileChecksums=new Map,this.screenWidth=0,this.screenHeight=0,this.tilesPerRow=0,this.tilesPerColumn=0,this.totalTiles=0,this.frameCount=0,this.tempDir=Pl.default.join(pB,"../../temp"),this.changeThreshold=1,this.scaledWidth=0,this.scaledHeight=0,this.isProcessing=!1,this.sharedScreenCache=null,this.lastCaptureTime=0,this.CACHE_TTL=100,this.dpiScale=1,this.captureWidth=0,this.captureHeight=0,this.scaleFactor=$.pipeline.outputScale||1,this.compressionQuality=$.pipeline.jpegQuality,this.activeTileSet=null,this.focusStats={frames:0,scanned:0,changed:0,bytes:0},Es.default.existsSync(this.tempDir)||Es.default.mkdirSync(this.tempDir,{recursive:!0}),Kw(e),this.initializeScreenDimensions()}initializeScreenDimensions(){try{let{width:e,height:t}=this.robot.getScreenSize();this.screenWidth=e,this.screenHeight=t,this.detectDpiScale(),this.scaledWidth=this.captureWidth,this.scaledHeight=this.captureHeight,this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn;let n=100;if(this.totalTiles>n){let i=Math.ceil(Math.sqrt(this.scaledWidth*this.scaledHeight/n));this.tileSize=Math.max(i,120),this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}}catch(e){me.error("Screen dimensions error:",e),this.screenWidth=1920,this.screenHeight=1080,this.dpiScale=1,this.captureWidth=1920,this.captureHeight=1080,this.scaledWidth=1728,this.scaledHeight=972,this.tileSize=120,this.tilesPerRow=Math.ceil(this.scaledWidth/this.tileSize),this.tilesPerColumn=Math.ceil(this.scaledHeight/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}}detectDpiScale(){if(process.platform==="darwin"){let e=this.robot.screen.capture(0,0,this.screenWidth,this.screenHeight),n=e.byteWidth/e.bytesPerPixel/this.screenWidth;n>=1.9&&n<=2.1?this.dpiScale=2:this.dpiScale=1}else process.platform==="win32"?this.dpiScale=this._detectDpiScaleWin32():this.dpiScale=1;this.captureWidth=Math.floor(this.screenWidth*this.dpiScale),this.captureHeight=Math.floor(this.screenHeight*this.dpiScale)}_detectDpiScaleWin32(){me.dpi(`\u{1F50D} [DPI Detection] screenWidth from robot: ${this.screenWidth}x${this.screenHeight}`);try{let e=(0,Ml.execSync)(`powershell -NonInteractive -NoProfile -WindowStyle Hidden -command "try{Get-ItemPropertyValue 'HKCU:\\Control Panel\\Desktop\\WindowMetrics' -Name AppliedDPI}catch{0}"`,{encoding:"utf8",windowsHide:!0}).trim(),t=Number(e);if(me.dpi(`\u{1F50D} [DPI Detection] Strategy 1 (Registry AppliedDPI): ${t} DPI`),t>=96){let n=t/96;return me.dpi(`\u2705 [DPI Detection] Using registry scale: ${n}x (${t}/96)`),n}}catch(e){me.dpi(`\u274C [DPI Detection] Strategy 1 failed: ${e.message}`)}try{let e=(0,Ml.execSync)('powershell -NonInteractive -NoProfile -WindowStyle Hidden -command "(Get-WmiObject -Class Win32_VideoController | Select-Object -First 1).CurrentHorizontalResolution"',{encoding:"utf8",windowsHide:!0}).trim(),t=Number(e);if(me.dpi(`\u{1F50D} [DPI Detection] Strategy 2 (WMI): physical width = ${t}px`),t>0&&t>this.screenWidth){let n=t/this.screenWidth;return me.dpi(`\u2705 [DPI Detection] Using WMI scale: ${n}x (${t}/${this.screenWidth})`),n}}catch(e){me.dpi(`\u274C [DPI Detection] Strategy 2 failed: ${e.message}`)}try{let e=(0,Ml.execSync)(`powershell -NonInteractive -NoProfile -WindowStyle Hidden -command "Add-Type -TypeDefinition 'using System;using System.Runtime.InteropServices;public class Disp{[DllImport(\\"user32\\")]public static extern bool EnumDisplaySettings(string d,int m,ref DEVMODE dm);[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)]public struct DEVMODE{[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]public string dmDeviceName;public short dmSpecVersion,dmDriverVersion,dmSize,dmDriverExtra;public int dmFields;public int dmPositionX,dmPositionY,dmDisplayOrientation,dmDisplayFixedOutput;public short dmColor,dmDuplex,dmYResolution,dmTTOption,dmCollate;[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]public string dmFormName;public short dmLogPixels;public int dmBitsPerPel,dmPelsWidth,dmPelsHeight,dmDisplayFlags,dmDisplayFrequency;}}'; $dm=New-Object Disp+DEVMODE; $dm.dmSize=[System.Runtime.InteropServices.Marshal]::SizeOf($dm); [Disp]::EnumDisplaySettings($null,-1,[ref]$dm) | Out-Null; Write-Output $dm.dmPelsWidth"`,{encoding:"utf8",windowsHide:!0}).trim(),t=Number(e);if(me.dpi(`\u{1F50D} [DPI Detection] Strategy 3 (EnumDisplaySettings): physical width = ${t}px`),t>0&&t>this.screenWidth){let n=t/this.screenWidth;return me.dpi(`\u2705 [DPI Detection] Using EnumDisplaySettings scale: ${n}x (${t}/${this.screenWidth})`),n}}catch(e){me.dpi(`\u274C [DPI Detection] Strategy 3 failed: ${e.message}`)}return me.dpi("\u26A0\uFE0F [DPI Detection] All strategies failed, fallback to 1x"),1}async captureFullScreen(){let e=await Yw();return{buffer:e.buffer,width:e.width,height:e.height,channels:e.channels}}async getSharedScreenCapture(){let e=Date.now();return this.sharedScreenCache&&e-this.lastCaptureTime<this.CACHE_TTL?this.sharedScreenCache:(this.sharedScreenCache=await this.captureFullScreen(),this.lastCaptureTime=e,this.sharedScreenCache)}clearScreenCache(){}async detectChangedTiles(){return(await this.detectChangedTilesWithHashes()).tiles}async detectChangedTilesWithHashes(){if(this.isProcessing)return{tiles:[],currentHashes:Array.from(this.lastTileChecksums.values())};this.isProcessing=!0;let e=this.metrics.now(),t=e,n=e;try{let i=await this.getSharedScreenCapture();t=this.metrics.now();let s=[],o=[],a=new Map;this.frameCount++;let c=this.activeTileSet;for(let f=0;f<this.totalTiles;f++){if(c&&!c.has(f))continue;let h=this.calculateTileChecksumDirect(i,f);a.set(f,h)}n=this.metrics.now();let l=Array.from(a.values());if(this.lastTileChecksums.size===0){let f=[];for(let v=0;v<this.totalTiles;v++)c&&!c.has(v)||f.push(v);let h=await fi(f,$.pipeline.tileConcurrency,v=>this.processTileAsync(i,v,null,a.get(v)));return s.push(...h),this._recordFrame(e,t,n,s,i),{tiles:s,currentHashes:l}}for(let f=0;f<this.totalTiles;f++){if(c&&!c.has(f))continue;let h=a.get(f),v=this.lastTileChecksums.get(f);h!==v&&o.push(f)}if(o.length/this.totalTiles>this.changeThreshold){let f=[];for(let v=0;v<this.totalTiles;v++)c&&!c.has(v)||f.push(v);let h=await fi(f,$.pipeline.tileConcurrency,v=>this.processTileAsync(i,v,null,a.get(v)));s.push(...h.map(v=>({...v,fullRefresh:!0})))}else if(o.length>0){let f=await fi(o,$.pipeline.tileConcurrency,h=>this.processTileAsync(i,h,null,a.get(h)));s.push(...f)}return this._recordFrame(e,t,n,s,i),{tiles:s,currentHashes:l}}finally{this.isProcessing=!1}}async processTileAsync(e,t,n=null,i=null){let s=n||this.extractTile(e,t),o=await this.compressTileImage(s.buffer,s.width,s.height),{row:a,col:c}=this.getTilePosition(t);return{type:"tile-update",tileIndex:t,x:c*this.tileSize,y:a*this.tileSize,width:s.width,height:s.height,imageBuffer:o,hash:i??this.lastTileChecksums.get(t)??0,timestamp:Date.now(),frameCount:this.frameCount}}commitHashes(e){for(let t of e)this.lastTileChecksums.set(t.tileIndex,t.hash)}calculateTileChecksumDirect(e,t){let{row:n,col:i}=this.getTilePosition(t),s=i*this.tileSize,o=n*this.tileSize,a=Math.min(s+this.tileSize,e.width),c=Math.min(o+this.tileSize,e.height),l=a-s,p=c-o,f=e.channels,h=e.width*f,v=0,{rowStep:x,colStep:S}=$.pipeline.checksumSampling;for(let A=0;A<p;A+=x){let k=(o+A)*h+s*f;for(let P=0;P<l;P+=S){let I=k+P*f,B=P+1;v=v+e.buffer[I]*B>>>0,v^=e.buffer[I+1]<<1,v=v+e.buffer[I+2]*B>>>0,v^=e.buffer[I+3]<<2}}return v>>>0}setFocusRect(e){if(!e){this.activeTileSet=null;return}let t=$.focus.paddingTiles,n=Math.max(0,Math.floor(e.x/this.tileSize)-t),i=Math.max(0,Math.floor(e.y/this.tileSize)-t),s=Math.min(this.tilesPerRow-1,Math.floor((e.x+e.w)/this.tileSize)+t),o=Math.min(this.tilesPerColumn-1,Math.floor((e.y+e.h)/this.tileSize)+t),a=new Set;for(let l=i;l<=o;l++)for(let p=n;p<=s;p++)a.add(l*this.tilesPerRow+p);let c=this.activeTileSet;if(c)for(let l of a)c.has(l)||this.lastTileChecksums.delete(l);this.activeTileSet=a}getTilePosition(e){return{row:Math.floor(e/this.tilesPerRow),col:e%this.tilesPerRow}}extractTile(e,t){let{row:n,col:i}=this.getTilePosition(t),s=i*this.tileSize,o=n*this.tileSize,a=Math.min(s+this.tileSize,e.width),c=Math.min(o+this.tileSize,e.height),l=a-s,p=c-o,f=e.channels,h=l*f,v=Buffer.alloc(l*p*f);for(let x=0;x<p;x++){let S=((o+x)*e.width+s)*f,A=x*h;e.buffer.copy(v,A,S,S+h)}return{buffer:v,width:l,height:p,channels:f,tileIndex:t,x:s,y:o}}async compressTileImage(e,t,n){let i=this.scaleFactor;if(i&&i>0&&i<1){let s=Math.max(1,Math.floor(t*i)),o=Math.max(1,Math.floor(n*i)),{inputFormat:a}=$.pipeline,c=e,l=4;a==="bgra"&&(c=Buffer.from(e),vh(c));let{tileFormat:p,webpEffort:f}=$.pipeline,h=(0,eS.default)(c,{raw:{width:t,height:n,channels:l}}).resize(s,o,{kernel:"lanczos3",fastShrinkOnLoad:!1});return p==="webp"?h.webp({quality:this.compressionQuality,effort:f}).toBuffer():h.jpeg({quality:this.compressionQuality}).toBuffer()}return Xw(e,t,n,4,this.compressionQuality)}pickProfile({zoom:e=1,viewerWidth:t=0,dpr:n=1}={}){let i=$.pipeline.adaptiveTiers||[];if(!i.length)return null;let s=this.captureWidth||this.screenWidth||1,o=t>0?t:s,a=e>0?e:1,c=n>0?n:1,l=o*a*c/s,p=$.pipeline.tierHysteresis||0,f=this._currentTier;for(let v of i){let x=f&&v===f?v.minEffective-p:v.minEffective;if(l>=x)return this._currentTier=v,v}let h=i[i.length-1];return this._currentTier=h,h}setProfile(e){if(!e)return;let t=e.outputScale??this.scaleFactor,n=e.jpegQuality??this.compressionQuality;t===this.scaleFactor&&n===this.compressionQuality||(this.scaleFactor=t,this.compressionQuality=n,this.lastTileChecksums.clear())}_recordFrame(e,t,n,i,s){if(this._recordFocusFrame(i),!this.metrics.cfg.metrics)return;let o=this.metrics.now(),a=i.map(l=>l.imageBuffer?.length||0),c=s?s.width*s.height*s.channels:0;this.metrics.record({capture:t-e,checksum:n-t,encode:o-n,total:o-e,changedTiles:i.length,totalTiles:this.totalTiles,tileBytes:a,rawBytes:c})}_recordFocusFrame(e){let t=this.focusStats;t.frames++,t.scanned+=this.activeTileSet?this.activeTileSet.size:this.totalTiles,t.changed+=e.length;for(let c of e)t.bytes+=c.imageBuffer?.length||0;if(t.frames<$.logging.focusEveryFrames)return;let n=(t.scanned/t.frames).toFixed(0),i=(t.changed/t.frames).toFixed(1),s=(t.bytes/t.frames/1024).toFixed(1),o=this.totalTiles?((1-n/this.totalTiles)*100).toFixed(0):0,a=this.activeTileSet?"focus":"full";me.focus(`\u{1F3AF} [Focus/${a}] ${t.frames}f | scan ${n}/${this.totalTiles} tiles (saved ${o}%) | changed ${i}/f | data ${s}KB/f`),this.focusStats={frames:0,scanned:0,changed:0,bytes:0}}async getScreenDimensions(){try{let e=await this.captureFullScreen();this.scaledWidth=e.width,this.scaledHeight=e.height,this.tilesPerRow=Math.ceil(e.width/this.tileSize),this.tilesPerColumn=Math.ceil(e.height/this.tileSize),this.totalTiles=this.tilesPerRow*this.tilesPerColumn}catch(e){me.error("Error getting dimensions:",e)}return{width:this.scaledWidth,height:this.scaledHeight,tileWidth:this.tileSize,tileHeight:this.tileSize,tileCount:this.totalTiles,scaleFactor:this.scaleFactor,originalWidth:this.screenWidth,originalHeight:this.screenHeight}}async compareClientTileHashes(e){if(this.isProcessing)return{tiles:[],currentHashes:[],changedIndices:[]};this.isProcessing=!0;try{let t=await this.getSharedScreenCapture(),n=[],i=[];this.frameCount++;let s=this.activeTileSet,o=new Map;for(let c=0;c<this.totalTiles;c++){if(s&&!s.has(c))continue;let l=this.calculateTileChecksumDirect(t,c);o.set(c,l),this.lastTileChecksums.set(c,l)}if(!e||e.length===0){let c=[];for(let p=0;p<this.totalTiles;p++)s&&!s.has(p)||c.push(p);let l=await fi(c,$.pipeline.tileConcurrency,p=>this.processTileAsync(t,p));return n.push(...l),{tiles:n,currentHashes:Array.from(o.values())}}for(let c=0;c<this.totalTiles;c++)s&&!s.has(c)||e[c]!==o.get(c)&&i.push(c);if(i.length/this.totalTiles>this.changeThreshold){let c=[];for(let p=0;p<this.totalTiles;p++)s&&!s.has(p)||c.push(p);let l=await fi(c,$.pipeline.tileConcurrency,p=>this.processTileAsync(t,p));n.push(...l.map(p=>({...p,fullRefresh:!0})))}else if(i.length>0){let c=await fi(i,$.pipeline.tileConcurrency,l=>this.processTileAsync(t,l));n.push(...c)}return this._recordFocusFrame(n),{tiles:n,currentHashes:Array.from(o.values()),changedIndices:i}}finally{this.isProcessing=!1}}clearMemory(){this.sharedScreenCache=null,this.lastCaptureTime=0,this.lastTileChecksums.clear()}reset(){this.lastTileChecksums.clear(),this.frameCount=0}cleanup(){try{Es.default.existsSync(this.tempDir)&&Es.default.readdirSync(this.tempDir).forEach(t=>Es.default.unlinkSync(Pl.default.join(this.tempDir,t)))}catch(e){me.warn(`Cleanup error: ${e.message}`)}}}});var iS={};Vr(iS,{ResourceManager:()=>xh});var xh,sS=Ee(()=>{at();ui();xh=class{constructor(){this.activeClients=new Map,this.activeTimers=new Map,this.chunkTimers=new Map,this.memoryCheckInterval=null}startResourceMonitoring(){this.memoryCheckInterval=setInterval(()=>{let e=process.memoryUsage(),t=Math.round(e.heapUsed/1024/1024);t>$.resourceManagement.memoryWarningThreshold&&(console.warn(`\u26A0\uFE0F High memory: ${t}MB`),this.cleanupInactiveClients())},$.resourceManagement.memoryCheckInterval)}stopResourceMonitoring(){this.memoryCheckInterval&&(clearInterval(this.memoryCheckInterval),this.memoryCheckInterval=null)}addClient(e,t){this.activeClients.set(e,{...t,lastActivity:Date.now()})}getClient(e){return this.activeClients.get(e)}updateClientActivity(e){let t=this.activeClients.get(e);t&&(t.lastActivity=Date.now())}cleanupInactiveClients(){let e=Date.now(),t=$.resourceManagement.inactiveTimeout;for(let[n,i]of this.activeClients.entries())e-i.lastActivity>t&&(console.log(`\u{1F9F9} Cleaning inactive client: ${n}`),this.cleanupClientResources(n,i),this.activeClients.delete(n))}cleanupClientResources(e,t){try{t.isStreaming=!1,t?.streamingTimeout&&(clearTimeout(t.streamingTimeout),t.streamingTimeout=null),t?.screenInterval&&(clearInterval(t.screenInterval),t.screenInterval=null);let n=this.activeTimers.get(e);n&&(n.forEach(s=>clearTimeout(s)),this.activeTimers.delete(e));let i=this.chunkTimers.get(e);i&&(i.forEach(s=>clearTimeout(s)),this.chunkTimers.delete(e)),t?.tileManager&&(t.tileManager.clearMemory(),t.tileManager.cleanup(),t.tileManager.reset()),t?.protocol&&(t.protocol.close(),bs(t.protocol))}catch(n){console.error(`Error cleaning up ${e}:`,n.message)}}getStreamingConfig(){return $.streaming}getWebRTCConfig(){return $.webrtc}removeClient(e){let t=this.activeClients.get(e);t&&(this.cleanupClientResources(e,t),this.activeClients.delete(e))}getChunkTimers(e){return this.chunkTimers.has(e)||this.chunkTimers.set(e,new Set),this.chunkTimers.get(e)}cleanupAll(){this.stopResourceMonitoring();for(let[e,t]of this.activeClients.entries())this.cleanupClientResources(e,t);this.activeClients.clear(),this.activeTimers.clear(),this.chunkTimers.clear()}}});var oS={};Vr(oS,{ScreenUpdateHelper:()=>_h});var _h,aS=Ee(()=>{at();_h=class{constructor(e){this.resourceManager=e}async sendTilesInChunks(e,t,n,i=!1){if(!t||t.length===0)return;let s=$.streaming.chunkSize,o=[];for(let c=0;c<t.length;c+=s)o.push(t.slice(c,c+s));let a=this.resourceManager.getChunkTimers(e.id);for(let c=0;c<o.length;c++){let l=o[c],p=c===o.length-1,f=setTimeout(()=>{a.delete(f),e.connected&&e.emit("tiles-data",{tiles:l,timestamp:n,forceRefresh:!1,userAction:i,chunkInfo:{chunkIndex:c,totalChunks:o.length,isLastChunk:p}})},c*$.streaming.chunkDelay);a.add(f)}}}});var cS={};Vr(cS,{MouseHandler:()=>bh});var bh,lS=Ee(()=>{at();bh=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastMouseMove=0}setupMouseHandlers(e,t){let n=this.robot;e.on("mouse-move",t(i=>{let s=Date.now();if(!(s-this.lastMouseMove<$.throttling.mouseThrottle)){this.lastMouseMove=s;try{let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),this.resourceManager.updateClientActivity(e.id)}catch(o){console.error("Mouse move error:",o.message)}}})),e.on("mouse-click",t(async i=>{try{let s=this.resourceManager.getClient(e.id);if(!s)return;let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),n.mouseClick(i.button||"left",i.double||!1),s.idleFrameCount=0,this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Mouse click error:",s.message)}})),e.on("mouse-press",t(async i=>{try{if(!this.resourceManager.getClient(e.id))return;let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),n.mouseToggle("down",i.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Mouse press error:",s.message)}})),e.on("mouse-release",t(async i=>{try{if(!this.resourceManager.getClient(e.id))return;let o=n.getScreenSize(),a=Math.round(i.x/100*o.width),c=Math.round(i.y/100*o.height),l=Math.max(0,Math.min(o.width-1,a)),p=Math.max(0,Math.min(o.height-1,c));n.moveMouse(l,p),n.mouseToggle("up",i.button||"left"),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Mouse release error:",s.message)}})),e.on("scroll",t(async i=>{try{let{direction:s,amount:o=60,horizontal:a=!1}=i,c=this.resourceManager.getClient(e.id);if(!c)return;let l=0,p=0;a||s==="left"||s==="right"?l=s==="right"?o:-o:p=s==="down"?-o:o,n.scrollMouse(l,p),c.idleFrameCount=0,this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Scroll error:",s.message)}})),e.on("mouse-drag-select",t(i=>{try{let{startX:s,startY:o,endX:a,endY:c}=i,l=n.getScreenSize(),p=Math.round(s/100*l.width),f=Math.round(o/100*l.height),h=Math.round(a/100*l.width),v=Math.round(c/100*l.height),x=Math.max(0,Math.min(l.width-1,p)),S=Math.max(0,Math.min(l.height-1,f)),A=Math.max(0,Math.min(l.width-1,h)),k=Math.max(0,Math.min(l.height-1,v));n.moveMouse(x,S),n.mouseToggle("down","left"),n.dragMouse(A,k),n.mouseToggle("up","left"),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Drag selection error:",s.message)}}))}}});var pS={};Vr(pS,{KeyboardHandler:()=>wh});function fB(r){let e;r.type==="missionControl"?e='tell application "System Events" to key code 160':e=`tell application "System Events" to key code ${r.keyCode} using ${r.mods}`,(0,uS.execFile)("osascript",["-e",e],t=>{t&&console.error("osascript error:",t.message)})}var uS,wh,fS=Ee(()=>{uS=require("child_process");at();wh=class{constructor(e,t){this.robot=e,this.resourceManager=t,this.lastKeyPress=0,this.lastTypeText=0}setupKeyboardHandlers(e,t){let n=this.robot;e.on("key-press",t(i=>{let s=Date.now();if(!(s-this.lastKeyPress<$.throttling.keyThrottle)){this.lastKeyPress=s;try{if(!i.key||typeof i.key!="string")return;let o=this.resourceManager.getClient(e.id),a=i.key,c=i.modifier||[];if(a.length===1)if(c.filter(p=>p!=="shift").length>0){n.keyTap(a.toLowerCase(),c);for(let p of c)n.keyToggle(p,"up")}else n.typeString(a);else{let p={return:"enter"}[a.toLowerCase()]??a.toLowerCase();n.keyTap(p,c)}o&&(o.idleFrameCount=0),this.resourceManager.updateClientActivity(e.id)}catch(o){console.error("Key press error:",o.message)}}})),e.on("desktop-switch",t(i=>{try{let s=i?.direction,o=$.desktopSwitch[process.platform]?.[s];if(!o)return;process.platform==="darwin"?fB(o):n.keyTap(o[0],o[1]);let a=this.resourceManager.getClient(e.id);a&&(a.idleFrameCount=0),this.resourceManager.updateClientActivity(e.id)}catch(s){console.error("Desktop switch error:",s.message)}})),e.on("type-text",t(i=>{let s=Date.now();if(!(s-this.lastTypeText<$.throttling.typeTextThrottle)){this.lastTypeText=s;try{if(!i.text||typeof i.text!="string")return;let o=i.text;o.length>$.throttling.maxTextLength&&(o=o.substring(0,$.throttling.maxTextLength));let a=o.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,""),c=this.resourceManager.getClient(e.id);setTimeout(()=>{try{n.typeString(a),this.resourceManager.updateClientActivity(e.id),c&&(c.idleFrameCount=0,c.tileManager&&c.tileManager.clearScreenCache())}catch(l){console.error("Robot typeString error:",l.message)}},10)}catch(o){console.error("Type text error:",o.message)}}}))}}});var Mh=R((WS,Oh)=>{(function(r,e){"use strict";function t(T,u){if(!T)throw new Error(u||"Assertion failed")}function n(T,u){T.super_=u;var m=function(){};m.prototype=u.prototype,T.prototype=new m,T.prototype.constructor=T}function i(T,u,m){if(i.isBN(T))return T;this.negative=0,this.words=null,this.length=0,this.red=null,T!==null&&((u==="le"||u==="be")&&(m=u,u=10),this._init(T||0,u||10,m||"be"))}typeof r=="object"?r.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var s;try{typeof window<"u"&&typeof window.Buffer<"u"?s=window.Buffer:s=require("buffer").Buffer}catch{}i.isBN=function(u){return u instanceof i?!0:u!==null&&typeof u=="object"&&u.constructor.wordSize===i.wordSize&&Array.isArray(u.words)},i.max=function(u,m){return u.cmp(m)>0?u:m},i.min=function(u,m){return u.cmp(m)<0?u:m},i.prototype._init=function(u,m,y){if(typeof u=="number")return this._initNumber(u,m,y);if(typeof u=="object")return this._initArray(u,m,y);m==="hex"&&(m=16),t(m===(m|0)&&m>=2&&m<=36),u=u.toString().replace(/\s+/g,"");var w=0;u[0]==="-"&&(w++,this.negative=1),w<u.length&&(m===16?this._parseHex(u,w,y):(this._parseBase(u,m,w),y==="le"&&this._initArray(this.toArray(),m,y)))},i.prototype._initNumber=function(u,m,y){u<0&&(this.negative=1,u=-u),u<67108864?(this.words=[u&67108863],this.length=1):u<4503599627370496?(this.words=[u&67108863,u/67108864&67108863],this.length=2):(t(u<9007199254740992),this.words=[u&67108863,u/67108864&67108863,1],this.length=3),y==="le"&&this._initArray(this.toArray(),m,y)},i.prototype._initArray=function(u,m,y){if(t(typeof u.length=="number"),u.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(u.length/3),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var g,_,C=0;if(y==="be")for(w=u.length-1,g=0;w>=0;w-=3)_=u[w]|u[w-1]<<8|u[w-2]<<16,this.words[g]|=_<<C&67108863,this.words[g+1]=_>>>26-C&67108863,C+=24,C>=26&&(C-=26,g++);else if(y==="le")for(w=0,g=0;w<u.length;w+=3)_=u[w]|u[w+1]<<8|u[w+2]<<16,this.words[g]|=_<<C&67108863,this.words[g+1]=_>>>26-C&67108863,C+=24,C>=26&&(C-=26,g++);return this.strip()};function o(T,u){var m=T.charCodeAt(u);return m>=65&&m<=70?m-55:m>=97&&m<=102?m-87:m-48&15}function a(T,u,m){var y=o(T,m);return m-1>=u&&(y|=o(T,m-1)<<4),y}i.prototype._parseHex=function(u,m,y){this.length=Math.ceil((u.length-m)/6),this.words=new Array(this.length);for(var w=0;w<this.length;w++)this.words[w]=0;var g=0,_=0,C;if(y==="be")for(w=u.length-1;w>=m;w-=2)C=a(u,m,w)<<g,this.words[_]|=C&67108863,g>=18?(g-=18,_+=1,this.words[_]|=C>>>26):g+=8;else{var b=u.length-m;for(w=b%2===0?m+1:m;w<u.length;w+=2)C=a(u,m,w)<<g,this.words[_]|=C&67108863,g>=18?(g-=18,_+=1,this.words[_]|=C>>>26):g+=8}this.strip()};function c(T,u,m,y){for(var w=0,g=Math.min(T.length,m),_=u;_<g;_++){var C=T.charCodeAt(_)-48;w*=y,C>=49?w+=C-49+10:C>=17?w+=C-17+10:w+=C}return w}i.prototype._parseBase=function(u,m,y){this.words=[0],this.length=1;for(var w=0,g=1;g<=67108863;g*=m)w++;w--,g=g/m|0;for(var _=u.length-y,C=_%w,b=Math.min(_,_-C)+y,d=0,E=y;E<b;E+=w)d=c(u,E,E+w,m),this.imuln(g),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d);if(C!==0){var q=1;for(d=c(u,E,u.length,m),E=0;E<C;E++)q*=m;this.imuln(q),this.words[0]+d<67108864?this.words[0]+=d:this._iaddn(d)}this.strip()},i.prototype.copy=function(u){u.words=new Array(this.length);for(var m=0;m<this.length;m++)u.words[m]=this.words[m];u.length=this.length,u.negative=this.negative,u.red=this.red},i.prototype.clone=function(){var u=new i(null);return this.copy(u),u},i.prototype._expand=function(u){for(;this.length<u;)this.words[this.length++]=0;return this},i.prototype.strip=function(){for(;this.length>1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(u,m){u=u||10,m=m|0||1;var y;if(u===16||u==="hex"){y="";for(var w=0,g=0,_=0;_<this.length;_++){var C=this.words[_],b=((C<<w|g)&16777215).toString(16);g=C>>>24-w&16777215,w+=2,w>=26&&(w-=26,_--),g!==0||_!==this.length-1?y=l[6-b.length]+b+y:y=b+y}for(g!==0&&(y=g.toString(16)+y);y.length%m!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}if(u===(u|0)&&u>=2&&u<=36){var d=p[u],E=f[u];y="";var q=this.clone();for(q.negative=0;!q.isZero();){var O=q.modn(E).toString(u);q=q.idivn(E),q.isZero()?y=O+y:y=l[d-O.length]+O+y}for(this.isZero()&&(y="0"+y);y.length%m!==0;)y="0"+y;return this.negative!==0&&(y="-"+y),y}t(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var u=this.words[0];return this.length===2?u+=this.words[1]*67108864:this.length===3&&this.words[2]===1?u+=4503599627370496+this.words[1]*67108864:this.length>2&&t(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-u:u},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(u,m){return t(typeof s<"u"),this.toArrayLike(s,u,m)},i.prototype.toArray=function(u,m){return this.toArrayLike(Array,u,m)},i.prototype.toArrayLike=function(u,m,y){var w=this.byteLength(),g=y||Math.max(1,w);t(w<=g,"byte array longer than desired length"),t(g>0,"Requested array length <= 0"),this.strip();var _=m==="le",C=new u(g),b,d,E=this.clone();if(_){for(d=0;!E.isZero();d++)b=E.andln(255),E.iushrn(8),C[d]=b;for(;d<g;d++)C[d]=0}else{for(d=0;d<g-w;d++)C[d]=0;for(d=0;!E.isZero();d++)b=E.andln(255),E.iushrn(8),C[g-d-1]=b}return C},Math.clz32?i.prototype._countBits=function(u){return 32-Math.clz32(u)}:i.prototype._countBits=function(u){var m=u,y=0;return m>=4096&&(y+=13,m>>>=13),m>=64&&(y+=7,m>>>=7),m>=8&&(y+=4,m>>>=4),m>=2&&(y+=2,m>>>=2),y+m},i.prototype._zeroBits=function(u){if(u===0)return 26;var m=u,y=0;return(m&8191)===0&&(y+=13,m>>>=13),(m&127)===0&&(y+=7,m>>>=7),(m&15)===0&&(y+=4,m>>>=4),(m&3)===0&&(y+=2,m>>>=2),(m&1)===0&&y++,y},i.prototype.bitLength=function(){var u=this.words[this.length-1],m=this._countBits(u);return(this.length-1)*26+m};function h(T){for(var u=new Array(T.bitLength()),m=0;m<u.length;m++){var y=m/26|0,w=m%26;u[m]=(T.words[y]&1<<w)>>>w}return u}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var u=0,m=0;m<this.length;m++){var y=this._zeroBits(this.words[m]);if(u+=y,y!==26)break}return u},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(u){return this.negative!==0?this.abs().inotn(u).iaddn(1):this.clone()},i.prototype.fromTwos=function(u){return this.testn(u-1)?this.notn(u).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return this.negative!==0},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(u){for(;this.length<u.length;)this.words[this.length++]=0;for(var m=0;m<u.length;m++)this.words[m]=this.words[m]|u.words[m];return this.strip()},i.prototype.ior=function(u){return t((this.negative|u.negative)===0),this.iuor(u)},i.prototype.or=function(u){return this.length>u.length?this.clone().ior(u):u.clone().ior(this)},i.prototype.uor=function(u){return this.length>u.length?this.clone().iuor(u):u.clone().iuor(this)},i.prototype.iuand=function(u){var m;this.length>u.length?m=u:m=this;for(var y=0;y<m.length;y++)this.words[y]=this.words[y]&u.words[y];return this.length=m.length,this.strip()},i.prototype.iand=function(u){return t((this.negative|u.negative)===0),this.iuand(u)},i.prototype.and=function(u){return this.length>u.length?this.clone().iand(u):u.clone().iand(this)},i.prototype.uand=function(u){return this.length>u.length?this.clone().iuand(u):u.clone().iuand(this)},i.prototype.iuxor=function(u){var m,y;this.length>u.length?(m=this,y=u):(m=u,y=this);for(var w=0;w<y.length;w++)this.words[w]=m.words[w]^y.words[w];if(this!==m)for(;w<m.length;w++)this.words[w]=m.words[w];return this.length=m.length,this.strip()},i.prototype.ixor=function(u){return t((this.negative|u.negative)===0),this.iuxor(u)},i.prototype.xor=function(u){return this.length>u.length?this.clone().ixor(u):u.clone().ixor(this)},i.prototype.uxor=function(u){return this.length>u.length?this.clone().iuxor(u):u.clone().iuxor(this)},i.prototype.inotn=function(u){t(typeof u=="number"&&u>=0);var m=Math.ceil(u/26)|0,y=u%26;this._expand(m),y>0&&m--;for(var w=0;w<m;w++)this.words[w]=~this.words[w]&67108863;return y>0&&(this.words[w]=~this.words[w]&67108863>>26-y),this.strip()},i.prototype.notn=function(u){return this.clone().inotn(u)},i.prototype.setn=function(u,m){t(typeof u=="number"&&u>=0);var y=u/26|0,w=u%26;return this._expand(y+1),m?this.words[y]=this.words[y]|1<<w:this.words[y]=this.words[y]&~(1<<w),this.strip()},i.prototype.iadd=function(u){var m;if(this.negative!==0&&u.negative===0)return this.negative=0,m=this.isub(u),this.negative^=1,this._normSign();if(this.negative===0&&u.negative!==0)return u.negative=0,m=this.isub(u),u.negative=1,m._normSign();var y,w;this.length>u.length?(y=this,w=u):(y=u,w=this);for(var g=0,_=0;_<w.length;_++)m=(y.words[_]|0)+(w.words[_]|0)+g,this.words[_]=m&67108863,g=m>>>26;for(;g!==0&&_<y.length;_++)m=(y.words[_]|0)+g,this.words[_]=m&67108863,g=m>>>26;if(this.length=y.length,g!==0)this.words[this.length]=g,this.length++;else if(y!==this)for(;_<y.length;_++)this.words[_]=y.words[_];return this},i.prototype.add=function(u){var m;return u.negative!==0&&this.negative===0?(u.negative=0,m=this.sub(u),u.negative^=1,m):u.negative===0&&this.negative!==0?(this.negative=0,m=u.sub(this),this.negative=1,m):this.length>u.length?this.clone().iadd(u):u.clone().iadd(this)},i.prototype.isub=function(u){if(u.negative!==0){u.negative=0;var m=this.iadd(u);return u.negative=1,m._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(u),this.negative=1,this._normSign();var y=this.cmp(u);if(y===0)return this.negative=0,this.length=1,this.words[0]=0,this;var w,g;y>0?(w=this,g=u):(w=u,g=this);for(var _=0,C=0;C<g.length;C++)m=(w.words[C]|0)-(g.words[C]|0)+_,_=m>>26,this.words[C]=m&67108863;for(;_!==0&&C<w.length;C++)m=(w.words[C]|0)+_,_=m>>26,this.words[C]=m&67108863;if(_===0&&C<w.length&&w!==this)for(;C<w.length;C++)this.words[C]=w.words[C];return this.length=Math.max(this.length,C),w!==this&&(this.negative=1),this.strip()},i.prototype.sub=function(u){return this.clone().isub(u)};function v(T,u,m){m.negative=u.negative^T.negative;var y=T.length+u.length|0;m.length=y,y=y-1|0;var w=T.words[0]|0,g=u.words[0]|0,_=w*g,C=_&67108863,b=_/67108864|0;m.words[0]=C;for(var d=1;d<y;d++){for(var E=b>>>26,q=b&67108863,O=Math.min(d,u.length-1),M=Math.max(0,d-T.length+1);M<=O;M++){var j=d-M|0;w=T.words[j]|0,g=u.words[M]|0,_=w*g+q,E+=_/67108864|0,q=_&67108863}m.words[d]=q|0,b=E|0}return b!==0?m.words[d]=b|0:m.length--,m.strip()}var x=function(u,m,y){var w=u.words,g=m.words,_=y.words,C=0,b,d,E,q=w[0]|0,O=q&8191,M=q>>>13,j=w[1]|0,z=j&8191,U=j>>>13,Te=w[2]|0,ne=Te&8191,N=Te>>>13,te=w[3]|0,D=te&8191,W=te>>>13,se=w[4]|0,Z=se&8191,J=se>>>13,Tt=w[5]|0,oe=Tt&8191,Oe=Tt>>>13,jg=w[6]|0,Me=jg&8191,Pe=jg>>>13,Fg=w[7]|0,Ie=Fg&8191,Ne=Fg>>>13,Ug=w[8]|0,Le=Ug&8191,De=Ug>>>13,qg=w[9]|0,Be=qg&8191,je=qg>>>13,Hg=g[0]|0,Fe=Hg&8191,Ue=Hg>>>13,$g=g[1]|0,qe=$g&8191,He=$g>>>13,Wg=g[2]|0,$e=Wg&8191,We=Wg>>>13,Gg=g[3]|0,Ge=Gg&8191,ze=Gg>>>13,zg=g[4]|0,Ve=zg&8191,Ke=zg>>>13,Vg=g[5]|0,Ye=Vg&8191,Je=Vg>>>13,Kg=g[6]|0,Xe=Kg&8191,Ze=Kg>>>13,Yg=g[7]|0,Qe=Yg&8191,et=Yg>>>13,Jg=g[8]|0,tt=Jg&8191,rt=Jg>>>13,Xg=g[9]|0,nt=Xg&8191,it=Xg>>>13;y.negative=u.negative^m.negative,y.length=19,b=Math.imul(O,Fe),d=Math.imul(O,Ue),d=d+Math.imul(M,Fe)|0,E=Math.imul(M,Ue);var Yu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Yu>>>26)|0,Yu&=67108863,b=Math.imul(z,Fe),d=Math.imul(z,Ue),d=d+Math.imul(U,Fe)|0,E=Math.imul(U,Ue),b=b+Math.imul(O,qe)|0,d=d+Math.imul(O,He)|0,d=d+Math.imul(M,qe)|0,E=E+Math.imul(M,He)|0;var Ju=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Ju>>>26)|0,Ju&=67108863,b=Math.imul(ne,Fe),d=Math.imul(ne,Ue),d=d+Math.imul(N,Fe)|0,E=Math.imul(N,Ue),b=b+Math.imul(z,qe)|0,d=d+Math.imul(z,He)|0,d=d+Math.imul(U,qe)|0,E=E+Math.imul(U,He)|0,b=b+Math.imul(O,$e)|0,d=d+Math.imul(O,We)|0,d=d+Math.imul(M,$e)|0,E=E+Math.imul(M,We)|0;var Xu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Xu>>>26)|0,Xu&=67108863,b=Math.imul(D,Fe),d=Math.imul(D,Ue),d=d+Math.imul(W,Fe)|0,E=Math.imul(W,Ue),b=b+Math.imul(ne,qe)|0,d=d+Math.imul(ne,He)|0,d=d+Math.imul(N,qe)|0,E=E+Math.imul(N,He)|0,b=b+Math.imul(z,$e)|0,d=d+Math.imul(z,We)|0,d=d+Math.imul(U,$e)|0,E=E+Math.imul(U,We)|0,b=b+Math.imul(O,Ge)|0,d=d+Math.imul(O,ze)|0,d=d+Math.imul(M,Ge)|0,E=E+Math.imul(M,ze)|0;var Zu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Zu>>>26)|0,Zu&=67108863,b=Math.imul(Z,Fe),d=Math.imul(Z,Ue),d=d+Math.imul(J,Fe)|0,E=Math.imul(J,Ue),b=b+Math.imul(D,qe)|0,d=d+Math.imul(D,He)|0,d=d+Math.imul(W,qe)|0,E=E+Math.imul(W,He)|0,b=b+Math.imul(ne,$e)|0,d=d+Math.imul(ne,We)|0,d=d+Math.imul(N,$e)|0,E=E+Math.imul(N,We)|0,b=b+Math.imul(z,Ge)|0,d=d+Math.imul(z,ze)|0,d=d+Math.imul(U,Ge)|0,E=E+Math.imul(U,ze)|0,b=b+Math.imul(O,Ve)|0,d=d+Math.imul(O,Ke)|0,d=d+Math.imul(M,Ve)|0,E=E+Math.imul(M,Ke)|0;var Qu=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(Qu>>>26)|0,Qu&=67108863,b=Math.imul(oe,Fe),d=Math.imul(oe,Ue),d=d+Math.imul(Oe,Fe)|0,E=Math.imul(Oe,Ue),b=b+Math.imul(Z,qe)|0,d=d+Math.imul(Z,He)|0,d=d+Math.imul(J,qe)|0,E=E+Math.imul(J,He)|0,b=b+Math.imul(D,$e)|0,d=d+Math.imul(D,We)|0,d=d+Math.imul(W,$e)|0,E=E+Math.imul(W,We)|0,b=b+Math.imul(ne,Ge)|0,d=d+Math.imul(ne,ze)|0,d=d+Math.imul(N,Ge)|0,E=E+Math.imul(N,ze)|0,b=b+Math.imul(z,Ve)|0,d=d+Math.imul(z,Ke)|0,d=d+Math.imul(U,Ve)|0,E=E+Math.imul(U,Ke)|0,b=b+Math.imul(O,Ye)|0,d=d+Math.imul(O,Je)|0,d=d+Math.imul(M,Ye)|0,E=E+Math.imul(M,Je)|0;var ep=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(ep>>>26)|0,ep&=67108863,b=Math.imul(Me,Fe),d=Math.imul(Me,Ue),d=d+Math.imul(Pe,Fe)|0,E=Math.imul(Pe,Ue),b=b+Math.imul(oe,qe)|0,d=d+Math.imul(oe,He)|0,d=d+Math.imul(Oe,qe)|0,E=E+Math.imul(Oe,He)|0,b=b+Math.imul(Z,$e)|0,d=d+Math.imul(Z,We)|0,d=d+Math.imul(J,$e)|0,E=E+Math.imul(J,We)|0,b=b+Math.imul(D,Ge)|0,d=d+Math.imul(D,ze)|0,d=d+Math.imul(W,Ge)|0,E=E+Math.imul(W,ze)|0,b=b+Math.imul(ne,Ve)|0,d=d+Math.imul(ne,Ke)|0,d=d+Math.imul(N,Ve)|0,E=E+Math.imul(N,Ke)|0,b=b+Math.imul(z,Ye)|0,d=d+Math.imul(z,Je)|0,d=d+Math.imul(U,Ye)|0,E=E+Math.imul(U,Je)|0,b=b+Math.imul(O,Xe)|0,d=d+Math.imul(O,Ze)|0,d=d+Math.imul(M,Xe)|0,E=E+Math.imul(M,Ze)|0;var tp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(tp>>>26)|0,tp&=67108863,b=Math.imul(Ie,Fe),d=Math.imul(Ie,Ue),d=d+Math.imul(Ne,Fe)|0,E=Math.imul(Ne,Ue),b=b+Math.imul(Me,qe)|0,d=d+Math.imul(Me,He)|0,d=d+Math.imul(Pe,qe)|0,E=E+Math.imul(Pe,He)|0,b=b+Math.imul(oe,$e)|0,d=d+Math.imul(oe,We)|0,d=d+Math.imul(Oe,$e)|0,E=E+Math.imul(Oe,We)|0,b=b+Math.imul(Z,Ge)|0,d=d+Math.imul(Z,ze)|0,d=d+Math.imul(J,Ge)|0,E=E+Math.imul(J,ze)|0,b=b+Math.imul(D,Ve)|0,d=d+Math.imul(D,Ke)|0,d=d+Math.imul(W,Ve)|0,E=E+Math.imul(W,Ke)|0,b=b+Math.imul(ne,Ye)|0,d=d+Math.imul(ne,Je)|0,d=d+Math.imul(N,Ye)|0,E=E+Math.imul(N,Je)|0,b=b+Math.imul(z,Xe)|0,d=d+Math.imul(z,Ze)|0,d=d+Math.imul(U,Xe)|0,E=E+Math.imul(U,Ze)|0,b=b+Math.imul(O,Qe)|0,d=d+Math.imul(O,et)|0,d=d+Math.imul(M,Qe)|0,E=E+Math.imul(M,et)|0;var rp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(rp>>>26)|0,rp&=67108863,b=Math.imul(Le,Fe),d=Math.imul(Le,Ue),d=d+Math.imul(De,Fe)|0,E=Math.imul(De,Ue),b=b+Math.imul(Ie,qe)|0,d=d+Math.imul(Ie,He)|0,d=d+Math.imul(Ne,qe)|0,E=E+Math.imul(Ne,He)|0,b=b+Math.imul(Me,$e)|0,d=d+Math.imul(Me,We)|0,d=d+Math.imul(Pe,$e)|0,E=E+Math.imul(Pe,We)|0,b=b+Math.imul(oe,Ge)|0,d=d+Math.imul(oe,ze)|0,d=d+Math.imul(Oe,Ge)|0,E=E+Math.imul(Oe,ze)|0,b=b+Math.imul(Z,Ve)|0,d=d+Math.imul(Z,Ke)|0,d=d+Math.imul(J,Ve)|0,E=E+Math.imul(J,Ke)|0,b=b+Math.imul(D,Ye)|0,d=d+Math.imul(D,Je)|0,d=d+Math.imul(W,Ye)|0,E=E+Math.imul(W,Je)|0,b=b+Math.imul(ne,Xe)|0,d=d+Math.imul(ne,Ze)|0,d=d+Math.imul(N,Xe)|0,E=E+Math.imul(N,Ze)|0,b=b+Math.imul(z,Qe)|0,d=d+Math.imul(z,et)|0,d=d+Math.imul(U,Qe)|0,E=E+Math.imul(U,et)|0,b=b+Math.imul(O,tt)|0,d=d+Math.imul(O,rt)|0,d=d+Math.imul(M,tt)|0,E=E+Math.imul(M,rt)|0;var np=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(np>>>26)|0,np&=67108863,b=Math.imul(Be,Fe),d=Math.imul(Be,Ue),d=d+Math.imul(je,Fe)|0,E=Math.imul(je,Ue),b=b+Math.imul(Le,qe)|0,d=d+Math.imul(Le,He)|0,d=d+Math.imul(De,qe)|0,E=E+Math.imul(De,He)|0,b=b+Math.imul(Ie,$e)|0,d=d+Math.imul(Ie,We)|0,d=d+Math.imul(Ne,$e)|0,E=E+Math.imul(Ne,We)|0,b=b+Math.imul(Me,Ge)|0,d=d+Math.imul(Me,ze)|0,d=d+Math.imul(Pe,Ge)|0,E=E+Math.imul(Pe,ze)|0,b=b+Math.imul(oe,Ve)|0,d=d+Math.imul(oe,Ke)|0,d=d+Math.imul(Oe,Ve)|0,E=E+Math.imul(Oe,Ke)|0,b=b+Math.imul(Z,Ye)|0,d=d+Math.imul(Z,Je)|0,d=d+Math.imul(J,Ye)|0,E=E+Math.imul(J,Je)|0,b=b+Math.imul(D,Xe)|0,d=d+Math.imul(D,Ze)|0,d=d+Math.imul(W,Xe)|0,E=E+Math.imul(W,Ze)|0,b=b+Math.imul(ne,Qe)|0,d=d+Math.imul(ne,et)|0,d=d+Math.imul(N,Qe)|0,E=E+Math.imul(N,et)|0,b=b+Math.imul(z,tt)|0,d=d+Math.imul(z,rt)|0,d=d+Math.imul(U,tt)|0,E=E+Math.imul(U,rt)|0,b=b+Math.imul(O,nt)|0,d=d+Math.imul(O,it)|0,d=d+Math.imul(M,nt)|0,E=E+Math.imul(M,it)|0;var ip=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(ip>>>26)|0,ip&=67108863,b=Math.imul(Be,qe),d=Math.imul(Be,He),d=d+Math.imul(je,qe)|0,E=Math.imul(je,He),b=b+Math.imul(Le,$e)|0,d=d+Math.imul(Le,We)|0,d=d+Math.imul(De,$e)|0,E=E+Math.imul(De,We)|0,b=b+Math.imul(Ie,Ge)|0,d=d+Math.imul(Ie,ze)|0,d=d+Math.imul(Ne,Ge)|0,E=E+Math.imul(Ne,ze)|0,b=b+Math.imul(Me,Ve)|0,d=d+Math.imul(Me,Ke)|0,d=d+Math.imul(Pe,Ve)|0,E=E+Math.imul(Pe,Ke)|0,b=b+Math.imul(oe,Ye)|0,d=d+Math.imul(oe,Je)|0,d=d+Math.imul(Oe,Ye)|0,E=E+Math.imul(Oe,Je)|0,b=b+Math.imul(Z,Xe)|0,d=d+Math.imul(Z,Ze)|0,d=d+Math.imul(J,Xe)|0,E=E+Math.imul(J,Ze)|0,b=b+Math.imul(D,Qe)|0,d=d+Math.imul(D,et)|0,d=d+Math.imul(W,Qe)|0,E=E+Math.imul(W,et)|0,b=b+Math.imul(ne,tt)|0,d=d+Math.imul(ne,rt)|0,d=d+Math.imul(N,tt)|0,E=E+Math.imul(N,rt)|0,b=b+Math.imul(z,nt)|0,d=d+Math.imul(z,it)|0,d=d+Math.imul(U,nt)|0,E=E+Math.imul(U,it)|0;var sp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(sp>>>26)|0,sp&=67108863,b=Math.imul(Be,$e),d=Math.imul(Be,We),d=d+Math.imul(je,$e)|0,E=Math.imul(je,We),b=b+Math.imul(Le,Ge)|0,d=d+Math.imul(Le,ze)|0,d=d+Math.imul(De,Ge)|0,E=E+Math.imul(De,ze)|0,b=b+Math.imul(Ie,Ve)|0,d=d+Math.imul(Ie,Ke)|0,d=d+Math.imul(Ne,Ve)|0,E=E+Math.imul(Ne,Ke)|0,b=b+Math.imul(Me,Ye)|0,d=d+Math.imul(Me,Je)|0,d=d+Math.imul(Pe,Ye)|0,E=E+Math.imul(Pe,Je)|0,b=b+Math.imul(oe,Xe)|0,d=d+Math.imul(oe,Ze)|0,d=d+Math.imul(Oe,Xe)|0,E=E+Math.imul(Oe,Ze)|0,b=b+Math.imul(Z,Qe)|0,d=d+Math.imul(Z,et)|0,d=d+Math.imul(J,Qe)|0,E=E+Math.imul(J,et)|0,b=b+Math.imul(D,tt)|0,d=d+Math.imul(D,rt)|0,d=d+Math.imul(W,tt)|0,E=E+Math.imul(W,rt)|0,b=b+Math.imul(ne,nt)|0,d=d+Math.imul(ne,it)|0,d=d+Math.imul(N,nt)|0,E=E+Math.imul(N,it)|0;var op=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(op>>>26)|0,op&=67108863,b=Math.imul(Be,Ge),d=Math.imul(Be,ze),d=d+Math.imul(je,Ge)|0,E=Math.imul(je,ze),b=b+Math.imul(Le,Ve)|0,d=d+Math.imul(Le,Ke)|0,d=d+Math.imul(De,Ve)|0,E=E+Math.imul(De,Ke)|0,b=b+Math.imul(Ie,Ye)|0,d=d+Math.imul(Ie,Je)|0,d=d+Math.imul(Ne,Ye)|0,E=E+Math.imul(Ne,Je)|0,b=b+Math.imul(Me,Xe)|0,d=d+Math.imul(Me,Ze)|0,d=d+Math.imul(Pe,Xe)|0,E=E+Math.imul(Pe,Ze)|0,b=b+Math.imul(oe,Qe)|0,d=d+Math.imul(oe,et)|0,d=d+Math.imul(Oe,Qe)|0,E=E+Math.imul(Oe,et)|0,b=b+Math.imul(Z,tt)|0,d=d+Math.imul(Z,rt)|0,d=d+Math.imul(J,tt)|0,E=E+Math.imul(J,rt)|0,b=b+Math.imul(D,nt)|0,d=d+Math.imul(D,it)|0,d=d+Math.imul(W,nt)|0,E=E+Math.imul(W,it)|0;var ap=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(ap>>>26)|0,ap&=67108863,b=Math.imul(Be,Ve),d=Math.imul(Be,Ke),d=d+Math.imul(je,Ve)|0,E=Math.imul(je,Ke),b=b+Math.imul(Le,Ye)|0,d=d+Math.imul(Le,Je)|0,d=d+Math.imul(De,Ye)|0,E=E+Math.imul(De,Je)|0,b=b+Math.imul(Ie,Xe)|0,d=d+Math.imul(Ie,Ze)|0,d=d+Math.imul(Ne,Xe)|0,E=E+Math.imul(Ne,Ze)|0,b=b+Math.imul(Me,Qe)|0,d=d+Math.imul(Me,et)|0,d=d+Math.imul(Pe,Qe)|0,E=E+Math.imul(Pe,et)|0,b=b+Math.imul(oe,tt)|0,d=d+Math.imul(oe,rt)|0,d=d+Math.imul(Oe,tt)|0,E=E+Math.imul(Oe,rt)|0,b=b+Math.imul(Z,nt)|0,d=d+Math.imul(Z,it)|0,d=d+Math.imul(J,nt)|0,E=E+Math.imul(J,it)|0;var cp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(cp>>>26)|0,cp&=67108863,b=Math.imul(Be,Ye),d=Math.imul(Be,Je),d=d+Math.imul(je,Ye)|0,E=Math.imul(je,Je),b=b+Math.imul(Le,Xe)|0,d=d+Math.imul(Le,Ze)|0,d=d+Math.imul(De,Xe)|0,E=E+Math.imul(De,Ze)|0,b=b+Math.imul(Ie,Qe)|0,d=d+Math.imul(Ie,et)|0,d=d+Math.imul(Ne,Qe)|0,E=E+Math.imul(Ne,et)|0,b=b+Math.imul(Me,tt)|0,d=d+Math.imul(Me,rt)|0,d=d+Math.imul(Pe,tt)|0,E=E+Math.imul(Pe,rt)|0,b=b+Math.imul(oe,nt)|0,d=d+Math.imul(oe,it)|0,d=d+Math.imul(Oe,nt)|0,E=E+Math.imul(Oe,it)|0;var lp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(lp>>>26)|0,lp&=67108863,b=Math.imul(Be,Xe),d=Math.imul(Be,Ze),d=d+Math.imul(je,Xe)|0,E=Math.imul(je,Ze),b=b+Math.imul(Le,Qe)|0,d=d+Math.imul(Le,et)|0,d=d+Math.imul(De,Qe)|0,E=E+Math.imul(De,et)|0,b=b+Math.imul(Ie,tt)|0,d=d+Math.imul(Ie,rt)|0,d=d+Math.imul(Ne,tt)|0,E=E+Math.imul(Ne,rt)|0,b=b+Math.imul(Me,nt)|0,d=d+Math.imul(Me,it)|0,d=d+Math.imul(Pe,nt)|0,E=E+Math.imul(Pe,it)|0;var up=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(up>>>26)|0,up&=67108863,b=Math.imul(Be,Qe),d=Math.imul(Be,et),d=d+Math.imul(je,Qe)|0,E=Math.imul(je,et),b=b+Math.imul(Le,tt)|0,d=d+Math.imul(Le,rt)|0,d=d+Math.imul(De,tt)|0,E=E+Math.imul(De,rt)|0,b=b+Math.imul(Ie,nt)|0,d=d+Math.imul(Ie,it)|0,d=d+Math.imul(Ne,nt)|0,E=E+Math.imul(Ne,it)|0;var pp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(pp>>>26)|0,pp&=67108863,b=Math.imul(Be,tt),d=Math.imul(Be,rt),d=d+Math.imul(je,tt)|0,E=Math.imul(je,rt),b=b+Math.imul(Le,nt)|0,d=d+Math.imul(Le,it)|0,d=d+Math.imul(De,nt)|0,E=E+Math.imul(De,it)|0;var fp=(C+b|0)+((d&8191)<<13)|0;C=(E+(d>>>13)|0)+(fp>>>26)|0,fp&=67108863,b=Math.imul(Be,nt),d=Math.imul(Be,it),d=d+Math.imul(je,nt)|0,E=Math.imul(je,it);var dp=(C+b|0)+((d&8191)<<13)|0;return C=(E+(d>>>13)|0)+(dp>>>26)|0,dp&=67108863,_[0]=Yu,_[1]=Ju,_[2]=Xu,_[3]=Zu,_[4]=Qu,_[5]=ep,_[6]=tp,_[7]=rp,_[8]=np,_[9]=ip,_[10]=sp,_[11]=op,_[12]=ap,_[13]=cp,_[14]=lp,_[15]=up,_[16]=pp,_[17]=fp,_[18]=dp,C!==0&&(_[19]=C,y.length++),y};Math.imul||(x=v);function S(T,u,m){m.negative=u.negative^T.negative,m.length=T.length+u.length;for(var y=0,w=0,g=0;g<m.length-1;g++){var _=w;w=0;for(var C=y&67108863,b=Math.min(g,u.length-1),d=Math.max(0,g-T.length+1);d<=b;d++){var E=g-d,q=T.words[E]|0,O=u.words[d]|0,M=q*O,j=M&67108863;_=_+(M/67108864|0)|0,j=j+C|0,C=j&67108863,_=_+(j>>>26)|0,w+=_>>>26,_&=67108863}m.words[g]=C,y=_,_=w}return y!==0?m.words[g]=y:m.length--,m.strip()}function A(T,u,m){var y=new k;return y.mulp(T,u,m)}i.prototype.mulTo=function(u,m){var y,w=this.length+u.length;return this.length===10&&u.length===10?y=x(this,u,m):w<63?y=v(this,u,m):w<1024?y=S(this,u,m):y=A(this,u,m),y};function k(T,u){this.x=T,this.y=u}k.prototype.makeRBT=function(u){for(var m=new Array(u),y=i.prototype._countBits(u)-1,w=0;w<u;w++)m[w]=this.revBin(w,y,u);return m},k.prototype.revBin=function(u,m,y){if(u===0||u===y-1)return u;for(var w=0,g=0;g<m;g++)w|=(u&1)<<m-g-1,u>>=1;return w},k.prototype.permute=function(u,m,y,w,g,_){for(var C=0;C<_;C++)w[C]=m[u[C]],g[C]=y[u[C]]},k.prototype.transform=function(u,m,y,w,g,_){this.permute(_,u,m,y,w,g);for(var C=1;C<g;C<<=1)for(var b=C<<1,d=Math.cos(2*Math.PI/b),E=Math.sin(2*Math.PI/b),q=0;q<g;q+=b)for(var O=d,M=E,j=0;j<C;j++){var z=y[q+j],U=w[q+j],Te=y[q+j+C],ne=w[q+j+C],N=O*Te-M*ne;ne=O*ne+M*Te,Te=N,y[q+j]=z+Te,w[q+j]=U+ne,y[q+j+C]=z-Te,w[q+j+C]=U-ne,j!==b&&(N=d*O-E*M,M=d*M+E*O,O=N)}},k.prototype.guessLen13b=function(u,m){var y=Math.max(m,u)|1,w=y&1,g=0;for(y=y/2|0;y;y=y>>>1)g++;return 1<<g+1+w},k.prototype.conjugate=function(u,m,y){if(!(y<=1))for(var w=0;w<y/2;w++){var g=u[w];u[w]=u[y-w-1],u[y-w-1]=g,g=m[w],m[w]=-m[y-w-1],m[y-w-1]=-g}},k.prototype.normalize13b=function(u,m){for(var y=0,w=0;w<m/2;w++){var g=Math.round(u[2*w+1]/m)*8192+Math.round(u[2*w]/m)+y;u[w]=g&67108863,g<67108864?y=0:y=g/67108864|0}return u},k.prototype.convert13b=function(u,m,y,w){for(var g=0,_=0;_<m;_++)g=g+(u[_]|0),y[2*_]=g&8191,g=g>>>13,y[2*_+1]=g&8191,g=g>>>13;for(_=2*m;_<w;++_)y[_]=0;t(g===0),t((g&-8192)===0)},k.prototype.stub=function(u){for(var m=new Array(u),y=0;y<u;y++)m[y]=0;return m},k.prototype.mulp=function(u,m,y){var w=2*this.guessLen13b(u.length,m.length),g=this.makeRBT(w),_=this.stub(w),C=new Array(w),b=new Array(w),d=new Array(w),E=new Array(w),q=new Array(w),O=new Array(w),M=y.words;M.length=w,this.convert13b(u.words,u.length,C,w),this.convert13b(m.words,m.length,E,w),this.transform(C,_,b,d,w,g),this.transform(E,_,q,O,w,g);for(var j=0;j<w;j++){var z=b[j]*q[j]-d[j]*O[j];d[j]=b[j]*O[j]+d[j]*q[j],b[j]=z}return this.conjugate(b,d,w),this.transform(b,d,M,_,w,g),this.conjugate(M,_,w),this.normalize13b(M,w),y.negative=u.negative^m.negative,y.length=u.length+m.length,y.strip()},i.prototype.mul=function(u){var m=new i(null);return m.words=new Array(this.length+u.length),this.mulTo(u,m)},i.prototype.mulf=function(u){var m=new i(null);return m.words=new Array(this.length+u.length),A(this,u,m)},i.prototype.imul=function(u){return this.clone().mulTo(u,this)},i.prototype.imuln=function(u){t(typeof u=="number"),t(u<67108864);for(var m=0,y=0;y<this.length;y++){var w=(this.words[y]|0)*u,g=(w&67108863)+(m&67108863);m>>=26,m+=w/67108864|0,m+=g>>>26,this.words[y]=g&67108863}return m!==0&&(this.words[y]=m,this.length++),this.length=u===0?1:this.length,this},i.prototype.muln=function(u){return this.clone().imuln(u)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(u){var m=h(u);if(m.length===0)return new i(1);for(var y=this,w=0;w<m.length&&m[w]===0;w++,y=y.sqr());if(++w<m.length)for(var g=y.sqr();w<m.length;w++,g=g.sqr())m[w]!==0&&(y=y.mul(g));return y},i.prototype.iushln=function(u){t(typeof u=="number"&&u>=0);var m=u%26,y=(u-m)/26,w=67108863>>>26-m<<26-m,g;if(m!==0){var _=0;for(g=0;g<this.length;g++){var C=this.words[g]&w,b=(this.words[g]|0)-C<<m;this.words[g]=b|_,_=C>>>26-m}_&&(this.words[g]=_,this.length++)}if(y!==0){for(g=this.length-1;g>=0;g--)this.words[g+y]=this.words[g];for(g=0;g<y;g++)this.words[g]=0;this.length+=y}return this.strip()},i.prototype.ishln=function(u){return t(this.negative===0),this.iushln(u)},i.prototype.iushrn=function(u,m,y){t(typeof u=="number"&&u>=0);var w;m?w=(m-m%26)/26:w=0;var g=u%26,_=Math.min((u-g)/26,this.length),C=67108863^67108863>>>g<<g,b=y;if(w-=_,w=Math.max(0,w),b){for(var d=0;d<_;d++)b.words[d]=this.words[d];b.length=_}if(_!==0)if(this.length>_)for(this.length-=_,d=0;d<this.length;d++)this.words[d]=this.words[d+_];else this.words[0]=0,this.length=1;var E=0;for(d=this.length-1;d>=0&&(E!==0||d>=w);d--){var q=this.words[d]|0;this.words[d]=E<<26-g|q>>>g,E=q&C}return b&&E!==0&&(b.words[b.length++]=E),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(u,m,y){return t(this.negative===0),this.iushrn(u,m,y)},i.prototype.shln=function(u){return this.clone().ishln(u)},i.prototype.ushln=function(u){return this.clone().iushln(u)},i.prototype.shrn=function(u){return this.clone().ishrn(u)},i.prototype.ushrn=function(u){return this.clone().iushrn(u)},i.prototype.testn=function(u){t(typeof u=="number"&&u>=0);var m=u%26,y=(u-m)/26,w=1<<m;if(this.length<=y)return!1;var g=this.words[y];return!!(g&w)},i.prototype.imaskn=function(u){t(typeof u=="number"&&u>=0);var m=u%26,y=(u-m)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=y)return this;if(m!==0&&y++,this.length=Math.min(y,this.length),m!==0){var w=67108863^67108863>>>m<<m;this.words[this.length-1]&=w}return this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.maskn=function(u){return this.clone().imaskn(u)},i.prototype.iaddn=function(u){return t(typeof u=="number"),t(u<67108864),u<0?this.isubn(-u):this.negative!==0?this.length===1&&(this.words[0]|0)<u?(this.words[0]=u-(this.words[0]|0),this.negative=0,this):(this.negative=0,this.isubn(u),this.negative=1,this):this._iaddn(u)},i.prototype._iaddn=function(u){this.words[0]+=u;for(var m=0;m<this.length&&this.words[m]>=67108864;m++)this.words[m]-=67108864,m===this.length-1?this.words[m+1]=1:this.words[m+1]++;return this.length=Math.max(this.length,m+1),this},i.prototype.isubn=function(u){if(t(typeof u=="number"),t(u<67108864),u<0)return this.iaddn(-u);if(this.negative!==0)return this.negative=0,this.iaddn(u),this.negative=1,this;if(this.words[0]-=u,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var m=0;m<this.length&&this.words[m]<0;m++)this.words[m]+=67108864,this.words[m+1]-=1;return this.strip()},i.prototype.addn=function(u){return this.clone().iaddn(u)},i.prototype.subn=function(u){return this.clone().isubn(u)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(u,m,y){var w=u.length+y,g;this._expand(w);var _,C=0;for(g=0;g<u.length;g++){_=(this.words[g+y]|0)+C;var b=(u.words[g]|0)*m;_-=b&67108863,C=(_>>26)-(b/67108864|0),this.words[g+y]=_&67108863}for(;g<this.length-y;g++)_=(this.words[g+y]|0)+C,C=_>>26,this.words[g+y]=_&67108863;if(C===0)return this.strip();for(t(C===-1),C=0,g=0;g<this.length;g++)_=-(this.words[g]|0)+C,C=_>>26,this.words[g]=_&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(u,m){var y=this.length-u.length,w=this.clone(),g=u,_=g.words[g.length-1]|0,C=this._countBits(_);y=26-C,y!==0&&(g=g.ushln(y),w.iushln(y),_=g.words[g.length-1]|0);var b=w.length-g.length,d;if(m!=="mod"){d=new i(null),d.length=b+1,d.words=new Array(d.length);for(var E=0;E<d.length;E++)d.words[E]=0}var q=w.clone()._ishlnsubmul(g,1,b);q.negative===0&&(w=q,d&&(d.words[b]=1));for(var O=b-1;O>=0;O--){var M=(w.words[g.length+O]|0)*67108864+(w.words[g.length+O-1]|0);for(M=Math.min(M/_|0,67108863),w._ishlnsubmul(g,M,O);w.negative!==0;)M--,w.negative=0,w._ishlnsubmul(g,1,O),w.isZero()||(w.negative^=1);d&&(d.words[O]=M)}return d&&d.strip(),w.strip(),m!=="div"&&y!==0&&w.iushrn(y),{div:d||null,mod:w}},i.prototype.divmod=function(u,m,y){if(t(!u.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var w,g,_;return this.negative!==0&&u.negative===0?(_=this.neg().divmod(u,m),m!=="mod"&&(w=_.div.neg()),m!=="div"&&(g=_.mod.neg(),y&&g.negative!==0&&g.iadd(u)),{div:w,mod:g}):this.negative===0&&u.negative!==0?(_=this.divmod(u.neg(),m),m!=="mod"&&(w=_.div.neg()),{div:w,mod:_.mod}):(this.negative&u.negative)!==0?(_=this.neg().divmod(u.neg(),m),m!=="div"&&(g=_.mod.neg(),y&&g.negative!==0&&g.isub(u)),{div:_.div,mod:g}):u.length>this.length||this.cmp(u)<0?{div:new i(0),mod:this}:u.length===1?m==="div"?{div:this.divn(u.words[0]),mod:null}:m==="mod"?{div:null,mod:new i(this.modn(u.words[0]))}:{div:this.divn(u.words[0]),mod:new i(this.modn(u.words[0]))}:this._wordDiv(u,m)},i.prototype.div=function(u){return this.divmod(u,"div",!1).div},i.prototype.mod=function(u){return this.divmod(u,"mod",!1).mod},i.prototype.umod=function(u){return this.divmod(u,"mod",!0).mod},i.prototype.divRound=function(u){var m=this.divmod(u);if(m.mod.isZero())return m.div;var y=m.div.negative!==0?m.mod.isub(u):m.mod,w=u.ushrn(1),g=u.andln(1),_=y.cmp(w);return _<0||g===1&&_===0?m.div:m.div.negative!==0?m.div.isubn(1):m.div.iaddn(1)},i.prototype.modn=function(u){t(u<=67108863);for(var m=(1<<26)%u,y=0,w=this.length-1;w>=0;w--)y=(m*y+(this.words[w]|0))%u;return y},i.prototype.idivn=function(u){t(u<=67108863);for(var m=0,y=this.length-1;y>=0;y--){var w=(this.words[y]|0)+m*67108864;this.words[y]=w/u|0,m=w%u}return this.strip()},i.prototype.divn=function(u){return this.clone().idivn(u)},i.prototype.egcd=function(u){t(u.negative===0),t(!u.isZero());var m=this,y=u.clone();m.negative!==0?m=m.umod(u):m=m.clone();for(var w=new i(1),g=new i(0),_=new i(0),C=new i(1),b=0;m.isEven()&&y.isEven();)m.iushrn(1),y.iushrn(1),++b;for(var d=y.clone(),E=m.clone();!m.isZero();){for(var q=0,O=1;(m.words[0]&O)===0&&q<26;++q,O<<=1);if(q>0)for(m.iushrn(q);q-- >0;)(w.isOdd()||g.isOdd())&&(w.iadd(d),g.isub(E)),w.iushrn(1),g.iushrn(1);for(var M=0,j=1;(y.words[0]&j)===0&&M<26;++M,j<<=1);if(M>0)for(y.iushrn(M);M-- >0;)(_.isOdd()||C.isOdd())&&(_.iadd(d),C.isub(E)),_.iushrn(1),C.iushrn(1);m.cmp(y)>=0?(m.isub(y),w.isub(_),g.isub(C)):(y.isub(m),_.isub(w),C.isub(g))}return{a:_,b:C,gcd:y.iushln(b)}},i.prototype._invmp=function(u){t(u.negative===0),t(!u.isZero());var m=this,y=u.clone();m.negative!==0?m=m.umod(u):m=m.clone();for(var w=new i(1),g=new i(0),_=y.clone();m.cmpn(1)>0&&y.cmpn(1)>0;){for(var C=0,b=1;(m.words[0]&b)===0&&C<26;++C,b<<=1);if(C>0)for(m.iushrn(C);C-- >0;)w.isOdd()&&w.iadd(_),w.iushrn(1);for(var d=0,E=1;(y.words[0]&E)===0&&d<26;++d,E<<=1);if(d>0)for(y.iushrn(d);d-- >0;)g.isOdd()&&g.iadd(_),g.iushrn(1);m.cmp(y)>=0?(m.isub(y),w.isub(g)):(y.isub(m),g.isub(w))}var q;return m.cmpn(1)===0?q=w:q=g,q.cmpn(0)<0&&q.iadd(u),q},i.prototype.gcd=function(u){if(this.isZero())return u.abs();if(u.isZero())return this.abs();var m=this.clone(),y=u.clone();m.negative=0,y.negative=0;for(var w=0;m.isEven()&&y.isEven();w++)m.iushrn(1),y.iushrn(1);do{for(;m.isEven();)m.iushrn(1);for(;y.isEven();)y.iushrn(1);var g=m.cmp(y);if(g<0){var _=m;m=y,y=_}else if(g===0||y.cmpn(1)===0)break;m.isub(y)}while(!0);return y.iushln(w)},i.prototype.invm=function(u){return this.egcd(u).a.umod(u)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(u){return this.words[0]&u},i.prototype.bincn=function(u){t(typeof u=="number");var m=u%26,y=(u-m)/26,w=1<<m;if(this.length<=y)return this._expand(y+1),this.words[y]|=w,this;for(var g=w,_=y;g!==0&&_<this.length;_++){var C=this.words[_]|0;C+=g,g=C>>>26,C&=67108863,this.words[_]=C}return g!==0&&(this.words[_]=g,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(u){var m=u<0;if(this.negative!==0&&!m)return-1;if(this.negative===0&&m)return 1;this.strip();var y;if(this.length>1)y=1;else{m&&(u=-u),t(u<=67108863,"Number is too big");var w=this.words[0]|0;y=w===u?0:w<u?-1:1}return this.negative!==0?-y|0:y},i.prototype.cmp=function(u){if(this.negative!==0&&u.negative===0)return-1;if(this.negative===0&&u.negative!==0)return 1;var m=this.ucmp(u);return this.negative!==0?-m|0:m},i.prototype.ucmp=function(u){if(this.length>u.length)return 1;if(this.length<u.length)return-1;for(var m=0,y=this.length-1;y>=0;y--){var w=this.words[y]|0,g=u.words[y]|0;if(w!==g){w<g?m=-1:w>g&&(m=1);break}}return m},i.prototype.gtn=function(u){return this.cmpn(u)===1},i.prototype.gt=function(u){return this.cmp(u)===1},i.prototype.gten=function(u){return this.cmpn(u)>=0},i.prototype.gte=function(u){return this.cmp(u)>=0},i.prototype.ltn=function(u){return this.cmpn(u)===-1},i.prototype.lt=function(u){return this.cmp(u)===-1},i.prototype.lten=function(u){return this.cmpn(u)<=0},i.prototype.lte=function(u){return this.cmp(u)<=0},i.prototype.eqn=function(u){return this.cmpn(u)===0},i.prototype.eq=function(u){return this.cmp(u)===0},i.red=function(u){return new L(u)},i.prototype.toRed=function(u){return t(!this.red,"Already a number in reduction context"),t(this.negative===0,"red works only with positives"),u.convertTo(this)._forceRed(u)},i.prototype.fromRed=function(){return t(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(u){return this.red=u,this},i.prototype.forceRed=function(u){return t(!this.red,"Already a number in reduction context"),this._forceRed(u)},i.prototype.redAdd=function(u){return t(this.red,"redAdd works only with red numbers"),this.red.add(this,u)},i.prototype.redIAdd=function(u){return t(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,u)},i.prototype.redSub=function(u){return t(this.red,"redSub works only with red numbers"),this.red.sub(this,u)},i.prototype.redISub=function(u){return t(this.red,"redISub works only with red numbers"),this.red.isub(this,u)},i.prototype.redShl=function(u){return t(this.red,"redShl works only with red numbers"),this.red.shl(this,u)},i.prototype.redMul=function(u){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.mul(this,u)},i.prototype.redIMul=function(u){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.imul(this,u)},i.prototype.redSqr=function(){return t(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return t(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return t(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return t(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return t(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(u){return t(this.red&&!u.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,u)};var P={k256:null,p224:null,p192:null,p25519:null};function I(T,u){this.name=T,this.p=new i(u,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}I.prototype._tmp=function(){var u=new i(null);return u.words=new Array(Math.ceil(this.n/13)),u},I.prototype.ireduce=function(u){var m=u,y;do this.split(m,this.tmp),m=this.imulK(m),m=m.iadd(this.tmp),y=m.bitLength();while(y>this.n);var w=y<this.n?-1:m.ucmp(this.p);return w===0?(m.words[0]=0,m.length=1):w>0?m.isub(this.p):m.strip!==void 0?m.strip():m._strip(),m},I.prototype.split=function(u,m){u.iushrn(this.n,0,m)},I.prototype.imulK=function(u){return u.imul(this.k)};function B(){I.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(B,I),B.prototype.split=function(u,m){for(var y=4194303,w=Math.min(u.length,9),g=0;g<w;g++)m.words[g]=u.words[g];if(m.length=w,u.length<=9){u.words[0]=0,u.length=1;return}var _=u.words[9];for(m.words[m.length++]=_&y,g=10;g<u.length;g++){var C=u.words[g]|0;u.words[g-10]=(C&y)<<4|_>>>22,_=C}_>>>=22,u.words[g-10]=_,_===0&&u.length>10?u.length-=10:u.length-=9},B.prototype.imulK=function(u){u.words[u.length]=0,u.words[u.length+1]=0,u.length+=2;for(var m=0,y=0;y<u.length;y++){var w=u.words[y]|0;m+=w*977,u.words[y]=m&67108863,m=w*64+(m/67108864|0)}return u.words[u.length-1]===0&&(u.length--,u.words[u.length-1]===0&&u.length--),u};function V(){I.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}n(V,I);function F(){I.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}n(F,I);function G(){I.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}n(G,I),G.prototype.imulK=function(u){for(var m=0,y=0;y<u.length;y++){var w=(u.words[y]|0)*19+m,g=w&67108863;w>>>=26,u.words[y]=g,m=w}return m!==0&&(u.words[u.length++]=m),u},i._prime=function(u){if(P[u])return P[u];var m;if(u==="k256")m=new B;else if(u==="p224")m=new V;else if(u==="p192")m=new F;else if(u==="p25519")m=new G;else throw new Error("Unknown prime "+u);return P[u]=m,m};function L(T){if(typeof T=="string"){var u=i._prime(T);this.m=u.p,this.prime=u}else t(T.gtn(1),"modulus must be greater than 1"),this.m=T,this.prime=null}L.prototype._verify1=function(u){t(u.negative===0,"red works only with positives"),t(u.red,"red works only with red numbers")},L.prototype._verify2=function(u,m){t((u.negative|m.negative)===0,"red works only with positives"),t(u.red&&u.red===m.red,"red works only with red numbers")},L.prototype.imod=function(u){return this.prime?this.prime.ireduce(u)._forceRed(this):u.umod(this.m)._forceRed(this)},L.prototype.neg=function(u){return u.isZero()?u.clone():this.m.sub(u)._forceRed(this)},L.prototype.add=function(u,m){this._verify2(u,m);var y=u.add(m);return y.cmp(this.m)>=0&&y.isub(this.m),y._forceRed(this)},L.prototype.iadd=function(u,m){this._verify2(u,m);var y=u.iadd(m);return y.cmp(this.m)>=0&&y.isub(this.m),y},L.prototype.sub=function(u,m){this._verify2(u,m);var y=u.sub(m);return y.cmpn(0)<0&&y.iadd(this.m),y._forceRed(this)},L.prototype.isub=function(u,m){this._verify2(u,m);var y=u.isub(m);return y.cmpn(0)<0&&y.iadd(this.m),y},L.prototype.shl=function(u,m){return this._verify1(u),this.imod(u.ushln(m))},L.prototype.imul=function(u,m){return this._verify2(u,m),this.imod(u.imul(m))},L.prototype.mul=function(u,m){return this._verify2(u,m),this.imod(u.mul(m))},L.prototype.isqr=function(u){return this.imul(u,u.clone())},L.prototype.sqr=function(u){return this.mul(u,u)},L.prototype.sqrt=function(u){if(u.isZero())return u.clone();var m=this.m.andln(3);if(t(m%2===1),m===3){var y=this.m.add(new i(1)).iushrn(2);return this.pow(u,y)}for(var w=this.m.subn(1),g=0;!w.isZero()&&w.andln(1)===0;)g++,w.iushrn(1);t(!w.isZero());var _=new i(1).toRed(this),C=_.redNeg(),b=this.m.subn(1).iushrn(1),d=this.m.bitLength();for(d=new i(2*d*d).toRed(this);this.pow(d,b).cmp(C)!==0;)d.redIAdd(C);for(var E=this.pow(d,w),q=this.pow(u,w.addn(1).iushrn(1)),O=this.pow(u,w),M=g;O.cmp(_)!==0;){for(var j=O,z=0;j.cmp(_)!==0;z++)j=j.redSqr();t(z<M);var U=this.pow(E,new i(1).iushln(M-z-1));q=q.redMul(U),E=U.redSqr(),O=O.redMul(E),M=z}return q},L.prototype.invm=function(u){var m=u._invmp(this.m);return m.negative!==0?(m.negative=0,this.imod(m).redNeg()):this.imod(m)},L.prototype.pow=function(u,m){if(m.isZero())return new i(1).toRed(this);if(m.cmpn(1)===0)return u.clone();var y=4,w=new Array(1<<y);w[0]=new i(1).toRed(this),w[1]=u;for(var g=2;g<w.length;g++)w[g]=this.mul(w[g-1],u);var _=w[0],C=0,b=0,d=m.bitLength()%26;for(d===0&&(d=26),g=m.length-1;g>=0;g--){for(var E=m.words[g],q=d-1;q>=0;q--){var O=E>>q&1;if(_!==w[0]&&(_=this.sqr(_)),O===0&&C===0){b=0;continue}C<<=1,C|=O,b++,!(b!==y&&(g!==0||q!==0))&&(_=this.mul(_,w[C]),b=0,C=0)}d=26}return _},L.prototype.convertTo=function(u){var m=u.umod(this.m);return m===u?m.clone():m},L.prototype.convertFrom=function(u){var m=u.clone();return m.red=null,m},i.mont=function(u){return new H(u)};function H(T){L.call(this,T),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(H,L),H.prototype.convertTo=function(u){return this.imod(u.ushln(this.shift))},H.prototype.convertFrom=function(u){var m=this.imod(u.mul(this.rinv));return m.red=null,m},H.prototype.imul=function(u,m){if(u.isZero()||m.isZero())return u.words[0]=0,u.length=1,u;var y=u.imul(m),w=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=y.isub(w).iushrn(this.shift),_=g;return g.cmp(this.m)>=0?_=g.isub(this.m):g.cmpn(0)<0&&(_=g.iadd(this.m)),_._forceRed(this)},H.prototype.mul=function(u,m){if(u.isZero()||m.isZero())return new i(0)._forceRed(this);var y=u.mul(m),w=y.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),g=y.isub(w).iushrn(this.shift),_=g;return g.cmp(this.m)>=0?_=g.isub(this.m):g.cmpn(0)<0&&(_=g.iadd(this.m)),_._forceRed(this)},H.prototype.invm=function(u){var m=this.imod(u._invmp(this.m).mul(this.r2));return m._forceRed(this)}})(typeof Oh>"u"||Oh,WS)});var GS=R((nW,Ph)=>{typeof Object.create=="function"?Ph.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Ph.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}});var qn=R((iW,Nh)=>{try{if(Ih=require("util"),typeof Ih.inherits!="function")throw"";Nh.exports=Ih.inherits}catch{Nh.exports=GS()}var Ih});var ql=R((sW,zS)=>{"use strict";var Ul=require("buffer"),Cs=Ul.Buffer,cr={},lr;for(lr in Ul)Ul.hasOwnProperty(lr)&&(lr==="SlowBuffer"||lr==="Buffer"||(cr[lr]=Ul[lr]));var As=cr.Buffer={};for(lr in Cs)Cs.hasOwnProperty(lr)&&(lr==="allocUnsafe"||lr==="allocUnsafeSlow"||(As[lr]=Cs[lr]));cr.Buffer.prototype=Cs.prototype;(!As.from||As.from===Uint8Array.from)&&(As.from=function(r,e,t){if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof r);if(r&&typeof r.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);return Cs(r,e,t)});As.alloc||(As.alloc=function(r,e,t){if(typeof r!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof r);if(r<0||r>=2*(1<<30))throw new RangeError('The value "'+r+'" is invalid for option "size"');var n=Cs(r);return!e||e.length===0?n.fill(0):typeof t=="string"?n.fill(e,t):n.fill(e),n});if(!cr.kStringMaxLength)try{cr.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}cr.constants||(cr.constants={MAX_LENGTH:cr.kMaxLength},cr.kStringMaxLength&&(cr.constants.MAX_STRING_LENGTH=cr.kStringMaxLength));zS.exports=cr});var Hl=R(VS=>{"use strict";var _B=qn();function ur(r){this._reporterState={obj:null,path:[],options:r||{},errors:[]}}VS.Reporter=ur;ur.prototype.isError=function(e){return e instanceof Rs};ur.prototype.save=function(){let e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}};ur.prototype.restore=function(e){let t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)};ur.prototype.enterKey=function(e){return this._reporterState.path.push(e)};ur.prototype.exitKey=function(e){let t=this._reporterState;t.path=t.path.slice(0,e-1)};ur.prototype.leaveKey=function(e,t,n){let i=this._reporterState;this.exitKey(e),i.obj!==null&&(i.obj[t]=n)};ur.prototype.path=function(){return this._reporterState.path.join("/")};ur.prototype.enterObject=function(){let e=this._reporterState,t=e.obj;return e.obj={},t};ur.prototype.leaveObject=function(e){let t=this._reporterState,n=t.obj;return t.obj=e,n};ur.prototype.error=function(e){let t,n=this._reporterState,i=e instanceof Rs;if(i?t=e:t=new Rs(n.path.map(function(s){return"["+JSON.stringify(s)+"]"}).join(""),e.message||e,e.stack),!n.options.partial)throw t;return i||n.errors.push(t),t};ur.prototype.wrapResult=function(e){let t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e};function Rs(r,e){this.path=r,this.rethrow(e)}_B(Rs,Error);Rs.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,Rs),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}});var Ms=R(Lh=>{"use strict";var bB=qn(),$l=Hl().Reporter,ks=ql().Buffer;function pr(r,e){if($l.call(this,e),!ks.isBuffer(r)){this.error("Input not Buffer");return}this.base=r,this.offset=0,this.length=r.length}bB(pr,$l);Lh.DecoderBuffer=pr;pr.isDecoderBuffer=function(e){return e instanceof pr?!0:typeof e=="object"&&ks.isBuffer(e.base)&&e.constructor.name==="DecoderBuffer"&&typeof e.offset=="number"&&typeof e.length=="number"&&typeof e.save=="function"&&typeof e.restore=="function"&&typeof e.isEmpty=="function"&&typeof e.readUInt8=="function"&&typeof e.skip=="function"&&typeof e.raw=="function"};pr.prototype.save=function(){return{offset:this.offset,reporter:$l.prototype.save.call(this)}};pr.prototype.restore=function(e){let t=new pr(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,$l.prototype.restore.call(this,e.reporter),t};pr.prototype.isEmpty=function(){return this.offset===this.length};pr.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")};pr.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");let n=new pr(this.base);return n._reporterState=this._reporterState,n.offset=this.offset,n.length=this.offset+e,this.offset+=e,n};pr.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)};function Os(r,e){if(Array.isArray(r))this.length=0,this.value=r.map(function(t){return Os.isEncoderBuffer(t)||(t=new Os(t,e)),this.length+=t.length,t},this);else if(typeof r=="number"){if(!(0<=r&&r<=255))return e.error("non-byte EncoderBuffer value");this.value=r,this.length=1}else if(typeof r=="string")this.value=r,this.length=ks.byteLength(r);else if(ks.isBuffer(r))this.value=r,this.length=r.length;else return e.error("Unsupported type: "+typeof r)}Lh.EncoderBuffer=Os;Os.isEncoderBuffer=function(e){return e instanceof Os?!0:typeof e=="object"&&e.constructor.name==="EncoderBuffer"&&typeof e.length=="number"&&typeof e.join=="function"};Os.prototype.join=function(e,t){return e||(e=ks.alloc(this.length)),t||(t=0),this.length===0||(Array.isArray(this.value)?this.value.forEach(function(n){n.join(e,t),t+=n.length}):(typeof this.value=="number"?e[t]=this.value:typeof this.value=="string"?e.write(this.value,t):ks.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}});var JS=R((cW,YS)=>{YS.exports=KS;function KS(r,e){if(!r)throw new Error(e||"Assertion failed")}KS.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}});var Wl=R((lW,ZS)=>{"use strict";var wB=Hl().Reporter,SB=Ms().EncoderBuffer,EB=Ms().DecoderBuffer,kt=JS(),XS=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],TB=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(XS),CB=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function de(r,e,t){let n={};this._baseState=n,n.name=t,n.enc=r,n.parent=e||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n.default=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}ZS.exports=de;var AB=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];de.prototype.clone=function(){let e=this._baseState,t={};AB.forEach(function(i){t[i]=e[i]});let n=new this.constructor(t.parent);return n._baseState=t,n};de.prototype._wrap=function(){let e=this._baseState;TB.forEach(function(t){this[t]=function(){let i=new this.constructor(this);return e.children.push(i),i[t].apply(i,arguments)}},this)};de.prototype._init=function(e){let t=this._baseState;kt(t.parent===null),e.call(this),t.children=t.children.filter(function(n){return n._baseState.parent===this},this),kt.equal(t.children.length,1,"Root node can have only one child")};de.prototype._useArgs=function(e){let t=this._baseState,n=e.filter(function(i){return i instanceof this.constructor},this);e=e.filter(function(i){return!(i instanceof this.constructor)},this),n.length!==0&&(kt(t.children===null),t.children=n,n.forEach(function(i){i._baseState.parent=this},this)),e.length!==0&&(kt(t.args===null),t.args=e,t.reverseArgs=e.map(function(i){if(typeof i!="object"||i.constructor!==Object)return i;let s={};return Object.keys(i).forEach(function(o){o==(o|0)&&(o|=0);let a=i[o];s[a]=o}),s}))};CB.forEach(function(r){de.prototype[r]=function(){let t=this._baseState;throw new Error(r+" not implemented for encoding: "+t.enc)}});XS.forEach(function(r){de.prototype[r]=function(){let t=this._baseState,n=Array.prototype.slice.call(arguments);return kt(t.tag===null),t.tag=r,this._useArgs(n),this}});de.prototype.use=function(e){kt(e);let t=this._baseState;return kt(t.use===null),t.use=e,this};de.prototype.optional=function(){let e=this._baseState;return e.optional=!0,this};de.prototype.def=function(e){let t=this._baseState;return kt(t.default===null),t.default=e,t.optional=!0,this};de.prototype.explicit=function(e){let t=this._baseState;return kt(t.explicit===null&&t.implicit===null),t.explicit=e,this};de.prototype.implicit=function(e){let t=this._baseState;return kt(t.explicit===null&&t.implicit===null),t.implicit=e,this};de.prototype.obj=function(){let e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,t.length!==0&&this._useArgs(t),this};de.prototype.key=function(e){let t=this._baseState;return kt(t.key===null),t.key=e,this};de.prototype.any=function(){let e=this._baseState;return e.any=!0,this};de.prototype.choice=function(e){let t=this._baseState;return kt(t.choice===null),t.choice=e,this._useArgs(Object.keys(e).map(function(n){return e[n]})),this};de.prototype.contains=function(e){let t=this._baseState;return kt(t.use===null),t.contains=e,this};de.prototype._decode=function(e,t){let n=this._baseState;if(n.parent===null)return e.wrapResult(n.children[0]._decode(e,t));let i=n.default,s=!0,o=null;if(n.key!==null&&(o=e.enterKey(n.key)),n.optional){let c=null;if(n.explicit!==null?c=n.explicit:n.implicit!==null?c=n.implicit:n.tag!==null&&(c=n.tag),c===null&&!n.any){let l=e.save();try{n.choice===null?this._decodeGeneric(n.tag,e,t):this._decodeChoice(e,t),s=!0}catch{s=!1}e.restore(l)}else if(s=this._peekTag(e,c,n.any),e.isError(s))return s}let a;if(n.obj&&s&&(a=e.enterObject()),s){if(n.explicit!==null){let l=this._decodeTag(e,n.explicit);if(e.isError(l))return l;e=l}let c=e.offset;if(n.use===null&&n.choice===null){let l;n.any&&(l=e.save());let p=this._decodeTag(e,n.implicit!==null?n.implicit:n.tag,n.any);if(e.isError(p))return p;n.any?i=e.raw(l):e=p}if(t&&t.track&&n.tag!==null&&t.track(e.path(),c,e.length,"tagged"),t&&t.track&&n.tag!==null&&t.track(e.path(),e.offset,e.length,"content"),n.any||(n.choice===null?i=this._decodeGeneric(n.tag,e,t):i=this._decodeChoice(e,t)),e.isError(i))return i;if(!n.any&&n.choice===null&&n.children!==null&&n.children.forEach(function(p){p._decode(e,t)}),n.contains&&(n.tag==="octstr"||n.tag==="bitstr")){let l=new EB(i);i=this._getUse(n.contains,e._reporterState.obj)._decode(l,t)}}return n.obj&&s&&(i=e.leaveObject(a)),n.key!==null&&(i!==null||s===!0)?e.leaveKey(o,n.key,i):o!==null&&e.exitKey(o),i};de.prototype._decodeGeneric=function(e,t,n){let i=this._baseState;return e==="seq"||e==="set"?null:e==="seqof"||e==="setof"?this._decodeList(t,e,i.args[0],n):/str$/.test(e)?this._decodeStr(t,e,n):e==="objid"&&i.args?this._decodeObjid(t,i.args[0],i.args[1],n):e==="objid"?this._decodeObjid(t,null,null,n):e==="gentime"||e==="utctime"?this._decodeTime(t,e,n):e==="null_"?this._decodeNull(t,n):e==="bool"?this._decodeBool(t,n):e==="objDesc"?this._decodeStr(t,e,n):e==="int"||e==="enum"?this._decodeInt(t,i.args&&i.args[0],n):i.use!==null?this._getUse(i.use,t._reporterState.obj)._decode(t,n):t.error("unknown tag: "+e)};de.prototype._getUse=function(e,t){let n=this._baseState;return n.useDecoder=this._use(e,t),kt(n.useDecoder._baseState.parent===null),n.useDecoder=n.useDecoder._baseState.children[0],n.implicit!==n.useDecoder._baseState.implicit&&(n.useDecoder=n.useDecoder.clone(),n.useDecoder._baseState.implicit=n.implicit),n.useDecoder};de.prototype._decodeChoice=function(e,t){let n=this._baseState,i=null,s=!1;return Object.keys(n.choice).some(function(o){let a=e.save(),c=n.choice[o];try{let l=c._decode(e,t);if(e.isError(l))return!1;i={type:o,value:l},s=!0}catch{return e.restore(a),!1}return!0},this),s?i:e.error("Choice not matched")};de.prototype._createEncoderBuffer=function(e){return new SB(e,this.reporter)};de.prototype._encode=function(e,t,n){let i=this._baseState;if(i.default!==null&&i.default===e)return;let s=this._encodeValue(e,t,n);if(s!==void 0&&!this._skipDefault(s,t,n))return s};de.prototype._encodeValue=function(e,t,n){let i=this._baseState;if(i.parent===null)return i.children[0]._encode(e,t||new wB);let s=null;if(this.reporter=t,i.optional&&e===void 0)if(i.default!==null)e=i.default;else return;let o=null,a=!1;if(i.any)s=this._createEncoderBuffer(e);else if(i.choice)s=this._encodeChoice(e,t);else if(i.contains)o=this._getUse(i.contains,n)._encode(e,t),a=!0;else if(i.children)o=i.children.map(function(c){if(c._baseState.tag==="null_")return c._encode(null,t,e);if(c._baseState.key===null)return t.error("Child should have a key");let l=t.enterKey(c._baseState.key);if(typeof e!="object")return t.error("Child expected, but input is not object");let p=c._encode(e[c._baseState.key],t,e);return t.leaveKey(l),p},this).filter(function(c){return c}),o=this._createEncoderBuffer(o);else if(i.tag==="seqof"||i.tag==="setof"){if(!(i.args&&i.args.length===1))return t.error("Too many args for : "+i.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");let c=this.clone();c._baseState.implicit=null,o=this._createEncoderBuffer(e.map(function(l){let p=this._baseState;return this._getUse(p.args[0],e)._encode(l,t)},c))}else i.use!==null?s=this._getUse(i.use,n)._encode(e,t):(o=this._encodePrimitive(i.tag,e),a=!0);if(!i.any&&i.choice===null){let c=i.implicit!==null?i.implicit:i.tag,l=i.implicit===null?"universal":"context";c===null?i.use===null&&t.error("Tag could be omitted only for .use()"):i.use===null&&(s=this._encodeComposite(c,a,l,o))}return i.explicit!==null&&(s=this._encodeComposite(i.explicit,!1,"context",s)),s};de.prototype._encodeChoice=function(e,t){let n=this._baseState,i=n.choice[e.type];return i||kt(!1,e.type+" not found in "+JSON.stringify(Object.keys(n.choice))),i._encode(e.value,t)};de.prototype._encodePrimitive=function(e,t){let n=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if(e==="objid"&&n.args)return this._encodeObjid(t,n.reverseArgs[0],n.args[1]);if(e==="objid")return this._encodeObjid(t,null,null);if(e==="gentime"||e==="utctime")return this._encodeTime(t,e);if(e==="null_")return this._encodeNull();if(e==="int"||e==="enum")return this._encodeInt(t,n.args&&n.reverseArgs[0]);if(e==="bool")return this._encodeBool(t);if(e==="objDesc")return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)};de.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)};de.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(e)}});var Gl=R(mi=>{"use strict";function QS(r){let e={};return Object.keys(r).forEach(function(t){(t|0)==t&&(t=t|0);let n=r[t];e[n]=t}),e}mi.tagClass={0:"universal",1:"application",2:"context",3:"private"};mi.tagClassByName=QS(mi.tagClass);mi.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};mi.tagByName=QS(mi.tag)});var Bh=R((pW,rE)=>{"use strict";var RB=qn(),gn=ql().Buffer,eE=Wl(),Dh=Gl();function tE(r){this.enc="der",this.name=r.name,this.entity=r,this.tree=new Cr,this.tree._init(r.body)}rE.exports=tE;tE.prototype.encode=function(e,t){return this.tree._encode(e,t).join()};function Cr(r){eE.call(this,"der",r)}RB(Cr,eE);Cr.prototype._encodeComposite=function(e,t,n,i){let s=kB(e,t,n,this.reporter);if(i.length<128){let c=gn.alloc(2);return c[0]=s,c[1]=i.length,this._createEncoderBuffer([c,i])}let o=1;for(let c=i.length;c>=256;c>>=8)o++;let a=gn.alloc(2+o);a[0]=s,a[1]=128|o;for(let c=1+o,l=i.length;l>0;c--,l>>=8)a[c]=l&255;return this._createEncoderBuffer([a,i])};Cr.prototype._encodeStr=function(e,t){if(t==="bitstr")return this._createEncoderBuffer([e.unused|0,e.data]);if(t==="bmpstr"){let n=gn.alloc(e.length*2);for(let i=0;i<e.length;i++)n.writeUInt16BE(e.charCodeAt(i),i*2);return this._createEncoderBuffer(n)}else return t==="numstr"?this._isNumstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: numstr supports only digits and space"):t==="printstr"?this._isPrintstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(t)?this._createEncoderBuffer(e):t==="objDesc"?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: "+t+" unsupported")};Cr.prototype._encodeObjid=function(e,t,n){if(typeof e=="string"){if(!t)return this.reporter.error("string objid given, but no values map found");if(!t.hasOwnProperty(e))return this.reporter.error("objid not found in values map");e=t[e].split(/[\s.]+/g);for(let a=0;a<e.length;a++)e[a]|=0}else if(Array.isArray(e)){e=e.slice();for(let a=0;a<e.length;a++)e[a]|=0}if(!Array.isArray(e))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(e));if(!n){if(e[1]>=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,e[0]*40+e[1])}let i=0;for(let a=0;a<e.length;a++){let c=e[a];for(i++;c>=128;c>>=7)i++}let s=gn.alloc(i),o=s.length-1;for(let a=e.length-1;a>=0;a--){let c=e[a];for(s[o--]=c&127;(c>>=7)>0;)s[o--]=128|c&127}return this._createEncoderBuffer(s)};function fr(r){return r<10?"0"+r:r}Cr.prototype._encodeTime=function(e,t){let n,i=new Date(e);return t==="gentime"?n=[fr(i.getUTCFullYear()),fr(i.getUTCMonth()+1),fr(i.getUTCDate()),fr(i.getUTCHours()),fr(i.getUTCMinutes()),fr(i.getUTCSeconds()),"Z"].join(""):t==="utctime"?n=[fr(i.getUTCFullYear()%100),fr(i.getUTCMonth()+1),fr(i.getUTCDate()),fr(i.getUTCHours()),fr(i.getUTCMinutes()),fr(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(n,"octstr")};Cr.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Cr.prototype._encodeInt=function(e,t){if(typeof e=="string"){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if(typeof e!="number"&&!gn.isBuffer(e)){let s=e.toArray();!e.sign&&s[0]&128&&s.unshift(0),e=gn.from(s)}if(gn.isBuffer(e)){let s=e.length;e.length===0&&s++;let o=gn.alloc(s);return e.copy(o),e.length===0&&(o[0]=0),this._createEncoderBuffer(o)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);let n=1;for(let s=e;s>=256;s>>=8)n++;let i=new Array(n);for(let s=i.length-1;s>=0;s--)i[s]=e&255,e>>=8;return i[0]&128&&i.unshift(0),this._createEncoderBuffer(gn.from(i))};Cr.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)};Cr.prototype._use=function(e,t){return typeof e=="function"&&(e=e(t)),e._getEncoder("der").tree};Cr.prototype._skipDefault=function(e,t,n){let i=this._baseState,s;if(i.default===null)return!1;let o=e.join();if(i.defaultBuffer===void 0&&(i.defaultBuffer=this._encodeValue(i.default,t,n).join()),o.length!==i.defaultBuffer.length)return!1;for(s=0;s<o.length;s++)if(o[s]!==i.defaultBuffer[s])return!1;return!0};function kB(r,e,t,n){let i;if(r==="seqof"?r="seq":r==="setof"&&(r="set"),Dh.tagByName.hasOwnProperty(r))i=Dh.tagByName[r];else if(typeof r=="number"&&(r|0)===r)i=r;else return n.error("Unknown tag: "+r);return i>=31?n.error("Multi-octet tag encoding unsupported"):(e||(i|=32),i|=Dh.tagClassByName[t||"universal"]<<6,i)}});var iE=R((fW,nE)=>{"use strict";var OB=qn(),jh=Bh();function Fh(r){jh.call(this,r),this.enc="pem"}OB(Fh,jh);nE.exports=Fh;Fh.prototype.encode=function(e,t){let i=jh.prototype.encode.call(this,e).toString("base64"),s=["-----BEGIN "+t.label+"-----"];for(let o=0;o<i.length;o+=64)s.push(i.slice(o,o+64));return s.push("-----END "+t.label+"-----"),s.join(`
92
92
  `)}});var Uh=R(oE=>{"use strict";var sE=oE;sE.der=Bh();sE.pem=iE()});var Hh=R((hW,fE)=>{"use strict";var MB=qn(),PB=Mh(),aE=Ms().DecoderBuffer,lE=Wl(),cE=Gl();function uE(r){this.enc="der",this.name=r.name,this.entity=r,this.tree=new Kt,this.tree._init(r.body)}fE.exports=uE;uE.prototype.decode=function(e,t){return aE.isDecoderBuffer(e)||(e=new aE(e,t)),this.tree._decode(e,t)};function Kt(r){lE.call(this,"der",r)}MB(Kt,lE);Kt.prototype._peekTag=function(e,t,n){if(e.isEmpty())return!1;let i=e.save(),s=qh(e,'Failed to peek tag: "'+t+'"');return e.isError(s)?s:(e.restore(i),s.tag===t||s.tagStr===t||s.tagStr+"of"===t||n)};Kt.prototype._decodeTag=function(e,t,n){let i=qh(e,'Failed to decode tag of "'+t+'"');if(e.isError(i))return i;let s=pE(e,i.primitive,'Failed to get length of "'+t+'"');if(e.isError(s))return s;if(!n&&i.tag!==t&&i.tagStr!==t&&i.tagStr+"of"!==t)return e.error('Failed to match tag: "'+t+'"');if(i.primitive||s!==null)return e.skip(s,'Failed to match body of: "'+t+'"');let o=e.save(),a=this._skipUntilEnd(e,'Failed to skip indefinite length body: "'+this.tag+'"');return e.isError(a)?a:(s=e.offset-o.offset,e.restore(o),e.skip(s,'Failed to match body of: "'+t+'"'))};Kt.prototype._skipUntilEnd=function(e,t){for(;;){let n=qh(e,t);if(e.isError(n))return n;let i=pE(e,n.primitive,t);if(e.isError(i))return i;let s;if(n.primitive||i!==null?s=e.skip(i):s=this._skipUntilEnd(e,t),e.isError(s))return s;if(n.tagStr==="end")break}};Kt.prototype._decodeList=function(e,t,n,i){let s=[];for(;!e.isEmpty();){let o=this._peekTag(e,"end");if(e.isError(o))return o;let a=n.decode(e,"der",i);if(e.isError(a)&&o)break;s.push(a)}return s};Kt.prototype._decodeStr=function(e,t){if(t==="bitstr"){let n=e.readUInt8();return e.isError(n)?n:{unused:n,data:e.raw()}}else if(t==="bmpstr"){let n=e.raw();if(n.length%2===1)return e.error("Decoding of string type: bmpstr length mismatch");let i="";for(let s=0;s<n.length/2;s++)i+=String.fromCharCode(n.readUInt16BE(s*2));return i}else if(t==="numstr"){let n=e.raw().toString("ascii");return this._isNumstr(n)?n:e.error("Decoding of string type: numstr unsupported characters")}else{if(t==="octstr")return e.raw();if(t==="objDesc")return e.raw();if(t==="printstr"){let n=e.raw().toString("ascii");return this._isPrintstr(n)?n:e.error("Decoding of string type: printstr unsupported characters")}else return/str$/.test(t)?e.raw().toString():e.error("Decoding of string type: "+t+" unsupported")}};Kt.prototype._decodeObjid=function(e,t,n){let i,s=[],o=0,a=0;for(;!e.isEmpty();)a=e.readUInt8(),o<<=7,o|=a&127,(a&128)===0&&(s.push(o),o=0);a&128&&s.push(o);let c=s[0]/40|0,l=s[0]%40;if(n?i=s:i=[c,l].concat(s.slice(1)),t){let p=t[i.join(" ")];p===void 0&&(p=t[i.join(".")]),p!==void 0&&(i=p)}return i};Kt.prototype._decodeTime=function(e,t){let n=e.raw().toString(),i,s,o,a,c,l;if(t==="gentime")i=n.slice(0,4)|0,s=n.slice(4,6)|0,o=n.slice(6,8)|0,a=n.slice(8,10)|0,c=n.slice(10,12)|0,l=n.slice(12,14)|0;else if(t==="utctime")i=n.slice(0,2)|0,s=n.slice(2,4)|0,o=n.slice(4,6)|0,a=n.slice(6,8)|0,c=n.slice(8,10)|0,l=n.slice(10,12)|0,i<70?i=2e3+i:i=1900+i;else return e.error("Decoding "+t+" time is not supported yet");return Date.UTC(i,s-1,o,a,c,l,0)};Kt.prototype._decodeNull=function(){return null};Kt.prototype._decodeBool=function(e){let t=e.readUInt8();return e.isError(t)?t:t!==0};Kt.prototype._decodeInt=function(e,t){let n=e.raw(),i=new PB(n);return t&&(i=t[i.toString(10)]||i),i};Kt.prototype._use=function(e,t){return typeof e=="function"&&(e=e(t)),e._getDecoder("der").tree};function qh(r,e){let t=r.readUInt8(e);if(r.isError(t))return t;let n=cE.tagClass[t>>6],i=(t&32)===0;if((t&31)===31){let o=t;for(t=0;(o&128)===128;){if(o=r.readUInt8(e),r.isError(o))return o;t<<=7,t|=o&127}}else t&=31;let s=cE.tag[t];return{cls:n,primitive:i,tag:t,tagStr:s}}function pE(r,e,t){let n=r.readUInt8(t);if(r.isError(n))return n;if(!e&&n===128)return null;if((n&128)===0)return n;let i=n&127;if(i>4)return r.error("length octect is too long");n=0;for(let s=0;s<i;s++){n<<=8;let o=r.readUInt8(t);if(r.isError(o))return o;n|=o}return n}});var hE=R((mW,dE)=>{"use strict";var IB=qn(),NB=ql().Buffer,$h=Hh();function Wh(r){$h.call(this,r),this.enc="pem"}IB(Wh,$h);dE.exports=Wh;Wh.prototype.decode=function(e,t){let n=e.toString().split(/[\r\n]+/g),i=t.label.toUpperCase(),s=/^-----(BEGIN|END) ([^-]+)-----$/,o=-1,a=-1;for(let p=0;p<n.length;p++){let f=n[p].match(s);if(f!==null&&f[2]===i)if(o===-1){if(f[1]!=="BEGIN")break;o=p}else{if(f[1]!=="END")break;a=p;break}}if(o===-1||a===-1)throw new Error("PEM section not found for: "+i);let c=n.slice(o+1,a).join("");c.replace(/[^a-z0-9+/=]+/gi,"");let l=NB.from(c,"base64");return $h.prototype.decode.call(this,l,t)}});var Gh=R(gE=>{"use strict";var mE=gE;mE.der=Hh();mE.pem=hE()});var yE=R(vE=>{"use strict";var LB=Uh(),DB=Gh(),BB=qn(),jB=vE;jB.define=function(e,t){return new Ps(e,t)};function Ps(r,e){this.name=r,this.body=e,this.decoders={},this.encoders={}}Ps.prototype._createNamed=function(e){let t=this.name;function n(i){this._initNamed(i,t)}return BB(n,e),n.prototype._initNamed=function(s,o){e.call(this,s,o)},new n(this)};Ps.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(DB[e])),this.decoders[e]};Ps.prototype.decode=function(e,t,n){return this._getDecoder(t).decode(e,n)};Ps.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(LB[e])),this.encoders[e]};Ps.prototype.encode=function(e,t,n){return this._getEncoder(t).encode(e,n)}});var _E=R(xE=>{"use strict";var zl=xE;zl.Reporter=Hl().Reporter;zl.DecoderBuffer=Ms().DecoderBuffer;zl.EncoderBuffer=Ms().EncoderBuffer;zl.Node=Wl()});var SE=R(wE=>{"use strict";var bE=wE;bE._reverse=function(e){let t={};return Object.keys(e).forEach(function(n){(n|0)==n&&(n=n|0);let i=e[n];t[i]=n}),t};bE.der=Gl()});var TE=R(EE=>{"use strict";var Is=EE;Is.bignum=Mh();Is.define=yE().define;Is.base=_E();Is.constants=SE();Is.decoders=Gh();Is.encoders=Uh()});var Ns=R((zh,AE)=>{var Vl=require("buffer"),qr=Vl.Buffer;function CE(r,e){for(var t in r)e[t]=r[t]}qr.from&&qr.alloc&&qr.allocUnsafe&&qr.allocUnsafeSlow?AE.exports=Vl:(CE(Vl,zh),zh.Buffer=gi);function gi(r,e,t){return qr(r,e,t)}gi.prototype=Object.create(qr.prototype);CE(qr,gi);gi.from=function(r,e,t){if(typeof r=="number")throw new TypeError("Argument must not be a number");return qr(r,e,t)};gi.alloc=function(r,e,t){if(typeof r!="number")throw new TypeError("Argument must be a number");var n=qr(r);return e!==void 0?typeof t=="string"?n.fill(e,t):n.fill(e):n.fill(0),n};gi.allocUnsafe=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return qr(r)};gi.allocUnsafeSlow=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return Vl.SlowBuffer(r)}});var Vh=R((bW,RE)=>{var Kl=Ns().Buffer,FB=require("stream"),UB=require("util");function Yl(r){if(this.buffer=null,this.writable=!0,this.readable=!0,!r)return this.buffer=Kl.alloc(0),this;if(typeof r.pipe=="function")return this.buffer=Kl.alloc(0),r.pipe(this),this;if(r.length||typeof r=="object")return this.buffer=r,this.writable=!1,process.nextTick(function(){this.emit("end",r),this.readable=!1,this.emit("close")}.bind(this)),this;throw new TypeError("Unexpected data type ("+typeof r+")")}UB.inherits(Yl,FB);Yl.prototype.write=function(e){this.buffer=Kl.concat([this.buffer,Kl.from(e)]),this.emit("data",e)};Yl.prototype.end=function(e){e&&this.write(e),this.emit("end",e),this.emit("close"),this.writable=!1,this.readable=!1};RE.exports=Yl});var OE=R((wW,kE)=>{"use strict";function Kh(r){var e=(r/8|0)+(r%8===0?0:1);return e}var qB={ES256:Kh(256),ES384:Kh(384),ES512:Kh(521)};function HB(r){var e=qB[r];if(e)return e;throw new Error('Unknown algorithm "'+r+'"')}kE.exports=HB});var BE=R((SW,DE)=>{"use strict";var Jl=Ns().Buffer,PE=OE(),Xl=128,IE=0,$B=32,WB=16,GB=2,NE=WB|$B|IE<<6,Zl=GB|IE<<6;function zB(r){return r.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function LE(r){if(Jl.isBuffer(r))return r;if(typeof r=="string")return Jl.from(r,"base64");throw new TypeError("ECDSA signature must be a Base64 string or a Buffer")}function VB(r,e){r=LE(r);var t=PE(e),n=t+1,i=r.length,s=0;if(r[s++]!==NE)throw new Error('Could not find expected "seq"');var o=r[s++];if(o===(Xl|1)&&(o=r[s++]),i-s<o)throw new Error('"seq" specified length of "'+o+'", only "'+(i-s)+'" remaining');if(r[s++]!==Zl)throw new Error('Could not find expected "int" for "r"');var a=r[s++];if(i-s-2<a)throw new Error('"r" specified length of "'+a+'", only "'+(i-s-2)+'" available');if(n<a)throw new Error('"r" specified length of "'+a+'", max of "'+n+'" is acceptable');var c=s;if(s+=a,r[s++]!==Zl)throw new Error('Could not find expected "int" for "s"');var l=r[s++];if(i-s!==l)throw new Error('"s" specified length of "'+l+'", expected "'+(i-s)+'"');if(n<l)throw new Error('"s" specified length of "'+l+'", max of "'+n+'" is acceptable');var p=s;if(s+=l,s!==i)throw new Error('Expected to consume entire buffer, but "'+(i-s)+'" bytes remain');var f=t-a,h=t-l,v=Jl.allocUnsafe(f+a+h+l);for(s=0;s<f;++s)v[s]=0;r.copy(v,s,c+Math.max(-f,0),c+a),s=t;for(var x=s;s<x+h;++s)v[s]=0;return r.copy(v,s,p+Math.max(-h,0),p+l),v=v.toString("base64"),v=zB(v),v}function ME(r,e,t){for(var n=0;e+n<t&&r[e+n]===0;)++n;var i=r[e+n]>=Xl;return i&&--n,n}function KB(r,e){r=LE(r);var t=PE(e),n=r.length;if(n!==t*2)throw new TypeError('"'+e+'" signatures must be "'+t*2+'" bytes, saw "'+n+'"');var i=ME(r,0,t),s=ME(r,t,r.length),o=t-i,a=t-s,c=2+o+1+1+a,l=c<Xl,p=Jl.allocUnsafe((l?2:3)+c),f=0;return p[f++]=NE,l?p[f++]=c:(p[f++]=Xl|1,p[f++]=c&255),p[f++]=Zl,p[f++]=o,i<0?(p[f++]=0,f+=r.copy(p,f,0,t)):f+=r.copy(p,f,i,t),p[f++]=Zl,p[f++]=a,s<0?(p[f++]=0,r.copy(p,f,t)):r.copy(p,f,t+s),p}DE.exports={derToJose:VB,joseToDer:KB}});var FE=R((EW,jE)=>{"use strict";var Vo=require("buffer").Buffer,Yh=require("buffer").SlowBuffer;jE.exports=Ql;function Ql(r,e){if(!Vo.isBuffer(r)||!Vo.isBuffer(e)||r.length!==e.length)return!1;for(var t=0,n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}Ql.install=function(){Vo.prototype.equal=Yh.prototype.equal=function(e){return Ql(this,e)}};var YB=Vo.prototype.equal,JB=Yh.prototype.equal;Ql.restore=function(){Vo.prototype.equal=YB,Yh.prototype.equal=JB}});var Qh=R((TW,KE)=>{var Ds=Ns().Buffer,dr=require("crypto"),qE=BE(),UE=require("util"),XB=`"%s" is not a valid algorithm.
93
93
  Supported algorithms are:
94
94
  "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".`,Ko="secret must be a string or buffer",Ls="key must be a string or a buffer",ZB="key must be a string, a buffer or an object",Xh=typeof dr.createPublicKey=="function";Xh&&(Ls+=" or a KeyObject",Ko+="or a KeyObject");function HE(r){if(!Ds.isBuffer(r)&&typeof r!="string"&&(!Xh||typeof r!="object"||typeof r.type!="string"||typeof r.asymmetricKeyType!="string"||typeof r.export!="function"))throw Ar(Ls)}function $E(r){if(!Ds.isBuffer(r)&&typeof r!="string"&&typeof r!="object")throw Ar(ZB)}function QB(r){if(!Ds.isBuffer(r)){if(typeof r=="string")return r;if(!Xh||typeof r!="object"||r.type!=="secret"||typeof r.export!="function")throw Ar(Ko)}}function Zh(r){return r.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function WE(r){r=r.toString();var e=4-r.length%4;if(e!==4)for(var t=0;t<e;++t)r+="=";return r.replace(/\-/g,"+").replace(/_/g,"/")}function Ar(r){var e=[].slice.call(arguments,1),t=UE.format.bind(UE,r).apply(null,e);return new TypeError(t)}function ej(r){return Ds.isBuffer(r)||typeof r=="string"}function Yo(r){return ej(r)||(r=JSON.stringify(r)),r}function GE(r){return function(t,n){QB(n),t=Yo(t);var i=dr.createHmac("sha"+r,n),s=(i.update(t),i.digest("base64"));return Zh(s)}}var Jh,tj="timingSafeEqual"in dr?function(e,t){return e.byteLength!==t.byteLength?!1:dr.timingSafeEqual(e,t)}:function(e,t){return Jh||(Jh=FE()),Jh(e,t)};function rj(r){return function(t,n,i){var s=GE(r)(t,i);return tj(Ds.from(n),Ds.from(s))}}function zE(r){return function(t,n){$E(n),t=Yo(t);var i=dr.createSign("RSA-SHA"+r),s=(i.update(t),i.sign(n,"base64"));return Zh(s)}}function VE(r){return function(t,n,i){HE(i),t=Yo(t),n=WE(n);var s=dr.createVerify("RSA-SHA"+r);return s.update(t),s.verify(i,n,"base64")}}function nj(r){return function(t,n){$E(n),t=Yo(t);var i=dr.createSign("RSA-SHA"+r),s=(i.update(t),i.sign({key:n,padding:dr.constants.RSA_PKCS1_PSS_PADDING,saltLength:dr.constants.RSA_PSS_SALTLEN_DIGEST},"base64"));return Zh(s)}}function ij(r){return function(t,n,i){HE(i),t=Yo(t),n=WE(n);var s=dr.createVerify("RSA-SHA"+r);return s.update(t),s.verify({key:i,padding:dr.constants.RSA_PKCS1_PSS_PADDING,saltLength:dr.constants.RSA_PSS_SALTLEN_DIGEST},n,"base64")}}function sj(r){var e=zE(r);return function(){var n=e.apply(null,arguments);return n=qE.derToJose(n,"ES"+r),n}}function oj(r){var e=VE(r);return function(n,i,s){i=qE.joseToDer(i,"ES"+r).toString("base64");var o=e(n,i,s);return o}}function aj(){return function(){return""}}function cj(){return function(e,t){return t===""}}KE.exports=function(e){var t={hs:GE,rs:zE,ps:nj,es:sj,none:aj},n={hs:rj,rs:VE,ps:ij,es:oj,none:cj},i=e.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/);if(!i)throw Ar(XB,e);var s=(i[1]||i[3]).toLowerCase(),o=i[2];return{sign:t[s](o),verify:n[s](o)}}});var em=R((CW,YE)=>{var lj=require("buffer").Buffer;YE.exports=function(e){return typeof e=="string"?e:typeof e=="number"||lj.isBuffer(e)?e.toString():JSON.stringify(e)}});var t1=R((AW,e1)=>{var uj=Ns().Buffer,JE=Vh(),pj=Qh(),fj=require("stream"),XE=em(),tm=require("util");function ZE(r,e){return uj.from(r,e).toString("base64").replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function dj(r,e,t){t=t||"utf8";var n=ZE(XE(r),"binary"),i=ZE(XE(e),t);return tm.format("%s.%s",n,i)}function QE(r){var e=r.header,t=r.payload,n=r.secret||r.privateKey,i=r.encoding,s=pj(e.alg),o=dj(e,t,i),a=s.sign(o,n);return tm.format("%s.%s",o,a)}function eu(r){var e=r.secret;if(e=e??r.privateKey,e=e??r.key,/^hs/i.test(r.header.alg)===!0&&e==null)throw new TypeError("secret must be a string or buffer or a KeyObject");var t=new JE(e);this.readable=!0,this.header=r.header,this.encoding=r.encoding,this.secret=this.privateKey=this.key=t,this.payload=new JE(r.payload),this.secret.once("close",function(){!this.payload.writable&&this.readable&&this.sign()}.bind(this)),this.payload.once("close",function(){!this.secret.writable&&this.readable&&this.sign()}.bind(this))}tm.inherits(eu,fj);eu.prototype.sign=function(){try{var e=QE({header:this.header,payload:this.payload.buffer,secret:this.secret.buffer,encoding:this.encoding});return this.emit("done",e),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(t){this.readable=!1,this.emit("error",t),this.emit("close")}};eu.sign=QE;e1.exports=eu});var p1=R((RW,u1)=>{var n1=Ns().Buffer,r1=Vh(),hj=Qh(),mj=require("stream"),i1=em(),gj=require("util"),vj=/^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;function yj(r){return Object.prototype.toString.call(r)==="[object Object]"}function xj(r){if(yj(r))return r;try{return JSON.parse(r)}catch{return}}function s1(r){var e=r.split(".",1)[0];return xj(n1.from(e,"base64").toString("binary"))}function _j(r){return r.split(".",2).join(".")}function o1(r){return r.split(".")[2]}function bj(r,e){e=e||"utf8";var t=r.split(".")[1];return n1.from(t,"base64").toString(e)}function a1(r){return vj.test(r)&&!!s1(r)}function c1(r,e,t){if(!e){var n=new Error("Missing algorithm parameter for jws.verify");throw n.code="MISSING_ALGORITHM",n}r=i1(r);var i=o1(r),s=_j(r),o=hj(e);return o.verify(s,i,t)}function l1(r,e){if(e=e||{},r=i1(r),!a1(r))return null;var t=s1(r);if(!t)return null;var n=bj(r);return(t.typ==="JWT"||e.json)&&(n=JSON.parse(n,e.encoding)),{header:t,payload:n,signature:o1(r)}}function Bs(r){r=r||{};var e=r.secret;if(e=e??r.publicKey,e=e??r.key,/^hs/i.test(r.algorithm)===!0&&e==null)throw new TypeError("secret must be a string or buffer or a KeyObject");var t=new r1(e);this.readable=!0,this.algorithm=r.algorithm,this.encoding=r.encoding,this.secret=this.publicKey=this.key=t,this.signature=new r1(r.signature),this.secret.once("close",function(){!this.signature.writable&&this.readable&&this.verify()}.bind(this)),this.signature.once("close",function(){!this.secret.writable&&this.readable&&this.verify()}.bind(this))}gj.inherits(Bs,mj);Bs.prototype.verify=function(){try{var e=c1(this.signature.buffer,this.algorithm,this.key.buffer),t=l1(this.signature.buffer,this.encoding);return this.emit("done",e,t),this.emit("data",e),this.emit("end"),this.readable=!1,e}catch(n){this.readable=!1,this.emit("error",n),this.emit("close")}};Bs.decode=l1;Bs.isValid=a1;Bs.verify=c1;u1.exports=Bs});var d1=R(Hn=>{var f1=t1(),tu=p1(),wj=["HS256","HS384","HS512","RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"];Hn.ALGORITHMS=wj;Hn.sign=f1.sign;Hn.verify=tu.verify;Hn.decode=tu.decode;Hn.isValid=tu.isValid;Hn.createSign=function(e){return new f1(e)};Hn.createVerify=function(e){return new tu(e)}});var ru=R((OW,h1)=>{"use strict";var rm={};rm.supportedContentEncodings={AES_GCM:"aesgcm",AES_128_GCM:"aes128gcm"};rm.supportedUrgency={VERY_LOW:"very-low",LOW:"low",NORMAL:"normal",HIGH:"high"};h1.exports=rm});var nm=R((MW,m1)=>{"use strict";function Sj(r){return/^[A-Za-z0-9\-_]+$/.test(r)}m1.exports={validate:Sj}});var sm=R((PW,S1)=>{"use strict";var Ej=require("crypto"),Tj=TE(),Cj=d1(),{URL:v1}=require("url"),g1=ru(),y1=nm(),Aj=720*60,Rj=1440*60,kj=Tj.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").explicit(0).objid().optional(),this.key("publicKey").explicit(1).bitstr().optional())});function Oj(r){return kj.encode({version:1,privateKey:r,parameters:[1,2,840,10045,3,1,7]},"pem",{label:"EC PRIVATE KEY"})}function Mj(){let r=Ej.createECDH("prime256v1");r.generateKeys();let e=r.getPublicKey(),t=r.getPrivateKey();if(t.length<32){let n=Buffer.alloc(32-t.length);n.fill(0),t=Buffer.concat([n,t])}if(e.length<65){let n=Buffer.alloc(65-e.length);n.fill(0),e=Buffer.concat([n,e])}return{publicKey:e.toString("base64url"),privateKey:t.toString("base64url")}}function x1(r){if(!r)throw new Error("No subject set in vapidDetails.subject.");if(typeof r!="string"||r.length===0)throw new Error("The subject value must be a string containing an https: URL or mailto: address. "+r);let e=null;try{e=new v1(r)}catch{throw new Error("Vapid subject is not a valid URL. "+r)}if(!["https:","mailto:"].includes(e.protocol))throw new Error("Vapid subject is not an https: or mailto: URL. "+r);e.hostname==="localhost"&&console.warn("Vapid subject points to a localhost web URI, which is unsupported by Apple's push notification server and will result in a BadJwtToken error when sending notifications.")}function _1(r){if(!r)throw new Error("No key set vapidDetails.publicKey");if(typeof r!="string")throw new Error("Vapid public key is must be a URL safe Base 64 encoded string.");if(!y1.validate(r))throw new Error('Vapid public key must be a URL safe Base 64 (without "=")');if(r=Buffer.from(r,"base64url"),r.length!==65)throw new Error("Vapid public key should be 65 bytes long when decoded.")}function b1(r){if(!r)throw new Error("No key set in vapidDetails.privateKey");if(typeof r!="string")throw new Error("Vapid private key must be a URL safe Base 64 encoded string.");if(!y1.validate(r))throw new Error('Vapid private key must be a URL safe Base 64 (without "=")');if(r=Buffer.from(r,"base64url"),r.length!==32)throw new Error("Vapid private key should be 32 bytes long when decoded.")}function im(r){let e=new Date;return e.setSeconds(e.getSeconds()+r),Math.floor(e.getTime()/1e3)}function w1(r){if(!Number.isInteger(r))throw new Error("`expiration` value must be a number");if(r<0)throw new Error("`expiration` must be a positive integer");let e=im(Rj);if(r>=e)throw new Error("`expiration` value is greater than maximum of 24 hours")}function Pj(r,e,t,n,i,s){if(!r)throw new Error("No audience could be generated for VAPID.");if(typeof r!="string"||r.length===0)throw new Error("The audience value must be a string containing the origin of a push service. "+r);try{new v1(r)}catch{throw new Error("VAPID audience is not a url. "+r)}x1(e),_1(t),b1(n),n=Buffer.from(n,"base64url"),s?w1(s):s=im(Aj);let o={typ:"JWT",alg:"ES256"},a={aud:r,exp:s,sub:e},c=Cj.sign({header:o,payload:a,privateKey:Oj(n)});if(i===g1.supportedContentEncodings.AES_128_GCM)return{Authorization:"vapid t="+c+", k="+t};if(i===g1.supportedContentEncodings.AES_GCM)return{Authorization:"WebPush "+c,"Crypto-Key":"p256ecdsa="+t};throw new Error("Unsupported encoding type specified.")}S1.exports={generateVAPIDKeys:Mj,getFutureExpirationTimestamp:im,getVapidHeaders:Pj,validateSubject:x1,validatePublicKey:_1,validatePrivateKey:b1,validateExpiration:w1}});var N1=R((IW,I1)=>{"use strict";var iu=require("crypto"),T1="aes-128-gcm",su={aes128gcm:1,aesgcm:2},vi=16,Hr=16,Ij=12,C1=32,Jo="encrypt",Xo="decrypt",he;process.env.ECE_KEYLOG==="1"?he=function(r,e){return console.warn(r+" ["+e.length+"]: "+e.toString("base64url")),e}:he=function(r,e){return e};function nu(r){return typeof r=="string"?Buffer.from(r,"base64url"):r}function A1(r,e){var t=iu.createHmac("sha256",r);return t.update(e),t.digest()}function R1(r,e){return he("salt",r),he("ikm",e),he("extract",A1(r,e))}function om(r,e,t){he("prk",r),he("info",e);var n=Buffer.alloc(0),i=Buffer.alloc(0);e=Buffer.from(e,"ascii");for(var s=0,o=Buffer.alloc(1);n.length<t;)o.writeUIntBE(++s,0,1),i=A1(r,Buffer.concat([i,e,o])),n=Buffer.concat([n,i]);return he("expand",n.slice(0,t))}function k1(r,e,t,n){return om(R1(r,e),t,n)}function am(r,e){var t=Buffer.concat([Buffer.from("Content-Encoding: "+r+"\0","ascii"),e]);return he("info "+r,t),t}function E1(r){var e=Buffer.concat([Buffer.alloc(2),r]);return e.writeUIntBE(r.length,0,2),e}function Nj(r,e){var t=r.privateKey,n,i;if(e===Jo)n=t.getPublicKey(),i=r.dh;else if(e===Xo)n=r.dh,i=t.getPublicKey();else throw new Error("Unknown mode only "+Jo+" and "+Xo+" supported");return{secret:t.computeSecret(r.dh),context:Buffer.concat([Buffer.from(r.keylabel,"ascii"),Buffer.from([0]),E1(i),E1(n)])}}function Lj(r,e){var t={secret:null,context:Buffer.alloc(0)};if(r.key){if(t.secret=r.key,t.secret.length!==Hr)throw new Error("An explicit key must be "+Hr+" bytes")}else r.dh?t=Nj(r,e):typeof r.keyid!==void 0&&(t.secret=r.keymap[r.keyid]);if(!t.secret)throw new Error("Unable to determine key");return he("secret",t.secret),he("context",t.context),r.authSecret&&(t.secret=k1(r.authSecret,t.secret,am("auth",Buffer.alloc(0)),C1),he("authsecret",t.secret)),t}function Dj(r,e){if(!r.authSecret)throw new Error("No authentication secret for webpush");he("authsecret",r.authSecret);var t,n,i;if(e===Jo)n=r.privateKey.getPublicKey(),t=i=r.dh;else if(e===Xo)t=n=r.keyid,i=r.privateKey.getPublicKey();else throw new Error("Unknown mode only "+Jo+" and "+Xo+" supported");return he("remote pubkey",t),he("sender pubkey",n),he("receiver pubkey",i),he("secret dh",k1(r.authSecret,r.privateKey.computeSecret(t),Buffer.concat([Buffer.from("WebPush: info\0"),i,n]),C1))}function Bj(r,e,t){if(t&&!zj(t))throw new Error("Callback is not a function");if(r.key){if(r.key.length!==Hr)throw new Error("An explicit key must be "+Hr+" bytes");return he("secret key",r.key)}if(!r.privateKey){if(t)var n=t(r.keyid);else var n=r.keymap&&r.keymap[r.keyid];if(!n)throw new Error('No saved key (keyid: "'+r.keyid+'")');return n}return Dj(r,e)}function O1(r,e,t){if(!r.salt)throw new Error("must include a salt parameter for "+r.version);var n,i,s;if(r.version==="aesgcm"){var o=Lj(r,e,t);n=am("aesgcm",o.context),i=am("nonce",o.context),s=o.secret}else if(r.version==="aes128gcm")n=Buffer.from("Content-Encoding: aes128gcm\0"),i=Buffer.from("Content-Encoding: nonce\0"),s=Bj(r,e,t);else throw new Error("Unable to set context for mode "+r.version);var a=R1(r.salt,s),c={key:om(a,n,Hr),nonce:om(a,i,Ij)};return he("key",c.key),he("nonce base",c.nonce),c}function M1(r){var e={};e.version=r.version||"aes128gcm",e.rs=parseInt(r.rs,10),isNaN(e.rs)&&(e.rs=4096);var t=su[e.version];if(e.version==="aes128gcm"&&(t+=vi),e.rs<=t)throw new Error("The rs parameter has to be greater than "+t);if(r.salt&&(e.salt=nu(r.salt),e.salt.length!==Hr))throw new Error("The salt parameter must be "+Hr+" bytes");return e.keyid=r.keyid,r.key?e.key=nu(r.key):(e.privateKey=r.privateKey,e.privateKey||(e.keymap=r.keymap),e.version!=="aes128gcm"&&(e.keylabel=r.keylabel||"P-256"),r.dh&&(e.dh=nu(r.dh))),r.authSecret&&(e.authSecret=nu(r.authSecret)),e}function P1(r,e){var t=Buffer.from(r),n=t.readUIntBE(t.length-6,6),i=((n^e)&16777215)+((n/16777216^e/16777216)&16777215)*16777216;return t.writeUIntBE(i,t.length-6,6),he("nonce"+e,t),t}function jj(r,e){var t=r.readUIntBE(20,1);return e.salt=r.slice(0,Hr),e.rs=r.readUIntBE(Hr,4),e.keyid=r.slice(21,21+t),21+t}function Fj(r,e){var t=su[e],n=r.readUIntBE(0,t);if(n+t>r.length)throw new Error("padding exceeds block size");he("padding",r.slice(0,t+n));var i=Buffer.alloc(n);if(i.fill(0),i.compare(r.slice(t,t+n))!==0)throw new Error("invalid padding");return r.slice(t+n)}function Uj(r,e){for(var t=r.length-1;t>=0;){if(r[t]){if(e){if(r[t]!==2)throw new Error("last record needs to start padding with a 2")}else if(r[t]!==1)throw new Error("last record needs to start padding with a 2");return r.slice(0,t)}--t}throw new Error("all zero plaintext")}function qj(r,e,t,n,i){he("decrypt",t);var s=P1(r.nonce,e),o=iu.createDecipheriv(T1,r.key,s);o.setAuthTag(t.slice(t.length-vi));var a=o.update(t.slice(0,t.length-vi));return a=Buffer.concat([a,o.final()]),he("decrypted",a),n.version!=="aes128gcm"?Fj(a,n.version):Uj(a,i)}function Hj(r,e,t){var n=M1(e);if(n.version==="aes128gcm"){var i=jj(r,n);r=r.slice(i)}var s=O1(n,Xo,t),o=0,a=Buffer.alloc(0),c=n.rs;n.version!=="aes128gcm"&&(c+=vi);for(var l=0;o<r.length;++l){var p=o+c;if(n.version!=="aes128gcm"&&p===r.length)throw new Error("Truncated payload");if(p=Math.min(p,r.length),p-o<=vi)throw new Error("Invalid block: too small at "+l);var f=qj(s,l,r.slice(o,p),n,p>=r.length);a=Buffer.concat([a,f]),o=p}return a}function $j(r,e,t,n,i,s){he("encrypt",t),n=n||0;var o=P1(r.nonce,e),a=iu.createCipheriv(T1,r.key,o),c=[],l=su[i.version],p=Buffer.alloc(n+l);if(p.fill(0),i.version!=="aes128gcm"){if(p.writeUIntBE(n,0,l),he("padding",p),c.push(a.update(p)),c.push(a.update(t)),!s&&p.length+t.length<i.rs)throw new Error("Unable to pad to record size")}else c.push(a.update(t)),p.writeUIntBE(s?2:1,0,1),he("padding",p),c.push(a.update(p));a.final();var f=a.getAuthTag();if(f.length!==vi)throw new Error("invalid tag generated");return c.push(f),he("encrypted",Buffer.concat(c))}function Wj(r){var e=Buffer.alloc(5),t=Buffer.from(r.keyid||[]);if(t.length>255)throw new Error("keyid is too large");return e.writeUIntBE(r.rs,0,4),e.writeUIntBE(t.length,4,1),Buffer.concat([r.salt,e,t])}function Gj(r,e,t){if(!Buffer.isBuffer(r))throw new Error("buffer argument must be a Buffer");var n=M1(e);n.salt||(n.salt=iu.randomBytes(Hr));var i;n.version==="aes128gcm"?(n.privateKey&&!n.keyid&&(n.keyid=n.privateKey.getPublicKey()),i=Wj(n)):i=Buffer.alloc(0);var s=O1(n,Jo,t),o=0,a=su[n.version],c=a;n.version==="aes128gcm"&&(c+=vi);for(var l=isNaN(parseInt(e.pad,10))?0:parseInt(e.pad,10),p=0,f=!1;!f;){var h=Math.min(n.rs-c-1,l);n.version!=="aes128gcm"&&(h=Math.min((1<<a*8)-1,h)),l>0&&h===0&&++h,l-=h;var v=o+n.rs-c-h;n.version!=="aes128gcm"?f=v>r.length:f=v>=r.length,f=f&&l<=0;var x=$j(s,p,r.slice(o,v),h,n,f);i=Buffer.concat([i,x]),o=v,++p}return i}function zj(r){return typeof r=="function"}I1.exports={decrypt:Hj,encrypt:Gj}});var cm=R((NW,D1)=>{"use strict";var L1=require("crypto"),Vj=N1(),Kj=function(r,e,t,n){if(!r)throw new Error("No user public key provided for encryption.");if(typeof r!="string")throw new Error("The subscription p256dh value must be a string.");if(Buffer.from(r,"base64url").length!==65)throw new Error("The subscription p256dh value should be 65 bytes long.");if(!e)throw new Error("No user auth provided for encryption.");if(typeof e!="string")throw new Error("The subscription auth key must be a string.");if(Buffer.from(e,"base64url").length<16)throw new Error("The subscription auth key should be at least 16 bytes long");if(typeof t!="string"&&!Buffer.isBuffer(t))throw new Error("Payload must be either a string or a Node Buffer.");(typeof t=="string"||t instanceof String)&&(t=Buffer.from(t));let i=L1.createECDH("prime256v1"),s=i.generateKeys(),o=L1.randomBytes(16).toString("base64url"),a=Vj.encrypt(t,{version:n,dh:r,privateKey:i,salt:o,authSecret:e});return{localPublicKey:s,salt:o,cipherText:a}};D1.exports={encrypt:Kj}});var lm=R((LW,j1)=>{"use strict";function B1(r,e,t,n,i){Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.message=r,this.statusCode=e,this.headers=t,this.body=n,this.endpoint=i}require("util").inherits(B1,Error);j1.exports=B1});var q1=R(jt=>{"use strict";var Yj=jt&&jt.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),Jj=jt&&jt.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),F1=jt&&jt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&Yj(e,r,t);return Jj(e,r),e};Object.defineProperty(jt,"__esModule",{value:!0});jt.req=jt.json=jt.toBuffer=void 0;var Xj=F1(require("http")),Zj=F1(require("https"));async function U1(r){let e=0,t=[];for await(let n of r)e+=n.length,t.push(n);return Buffer.concat(t,e)}jt.toBuffer=U1;async function Qj(r){let t=(await U1(r)).toString("utf8");try{return JSON.parse(t)}catch(n){let i=n;throw i.message+=` (input: ${t})`,i}}jt.json=Qj;function eF(r,e={}){let n=((typeof r=="string"?r:r.href).startsWith("https:")?Zj:Xj).request(r,e),i=new Promise((s,o)=>{n.once("response",s).once("error",o).end()});return n.then=i.then.bind(i),n}jt.req=eF});var G1=R(Yt=>{"use strict";var $1=Yt&&Yt.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,i)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),tF=Yt&&Yt.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),W1=Yt&&Yt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&$1(e,r,t);return tF(e,r),e},rF=Yt&&Yt.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&$1(e,r,t)};Object.defineProperty(Yt,"__esModule",{value:!0});Yt.Agent=void 0;var nF=W1(require("net")),H1=W1(require("http")),iF=require("https");rF(q1(),Yt);var $r=Symbol("AgentBaseInternalState"),um=class extends H1.Agent{constructor(e){super(e),this[$r]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint=="boolean")return e.secureEndpoint;if(typeof e.protocol=="string")return e.protocol==="https:"}let{stack:t}=new Error;return typeof t!="string"?!1:t.split(`
@@ -107,7 +107,7 @@ WantedBy=default.target
107
107
  `:`
108
108
  `)+t,i=n+1,n=r.indexOf(`
109
109
  `,i)}while(n!==-1);return s+=r.slice(i),s}var{stdout:av,stderr:cv}=iv,mp=Symbol("GENERATOR"),ki=Symbol("STYLER"),Qs=Symbol("IS_EMPTY"),lv=["ansi","ansi","ansi256","ansi16m"],Oi=Object.create(null),mO=(r,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=av?av.level:0;r.level=e.level===void 0?t:e.level};var gO=r=>{let e=(...t)=>t.join(" ");return mO(e,r),Object.setPrototypeOf(e,eo.prototype),e};function eo(r){return gO(r)}Object.setPrototypeOf(eo.prototype,Function.prototype);for(let[r,e]of Object.entries(yr))Oi[r]={get(){let t=La(this,vp(e.open,e.close,this[ki]),this[Qs]);return Object.defineProperty(this,r,{value:t}),t}};Oi.visible={get(){let r=La(this,this[ki],!0);return Object.defineProperty(this,"visible",{value:r}),r}};var gp=(r,e,t,...n)=>r==="rgb"?e==="ansi16m"?yr[t].ansi16m(...n):e==="ansi256"?yr[t].ansi256(yr.rgbToAnsi256(...n)):yr[t].ansi(yr.rgbToAnsi(...n)):r==="hex"?gp("rgb",e,t,...yr.hexToRgb(...n)):yr[t][r](...n),vO=["rgb","hex","ansi256"];for(let r of vO){Oi[r]={get(){let{level:t}=this;return function(...n){let i=vp(gp(r,lv[t],"color",...n),yr.color.close,this[ki]);return La(this,i,this[Qs])}}};let e="bg"+r[0].toUpperCase()+r.slice(1);Oi[e]={get(){let{level:t}=this;return function(...n){let i=vp(gp(r,lv[t],"bgColor",...n),yr.bgColor.close,this[ki]);return La(this,i,this[Qs])}}}}var yO=Object.defineProperties(()=>{},{...Oi,level:{enumerable:!0,get(){return this[mp].level},set(r){this[mp].level=r}}}),vp=(r,e,t)=>{let n,i;return t===void 0?(n=r,i=e):(n=t.openAll+r,i=e+t.closeAll),{open:r,close:e,openAll:n,closeAll:i,parent:t}},La=(r,e,t)=>{let n=(...i)=>xO(n,i.length===1?""+i[0]:i.join(" "));return Object.setPrototypeOf(n,yO),n[mp]=r,n[ki]=e,n[Qs]=t,n},xO=(r,e)=>{if(r.level<=0||!e)return r[Qs]?"":e;let t=r[ki];if(t===void 0)return e;let{openAll:n,closeAll:i}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=sv(e,t.close,t.open),t=t.parent;let s=e.indexOf(`
110
- `);return s!==-1&&(e=ov(e,i,n,s)),n+e+i};Object.defineProperties(eo.prototype,Oi);var _O=eo(),E$=eo({level:cv?cv.level:0});var to=_O;Pt();vt();Ii();var Eb=K(Sb(),1),{Server:Tb,Namespace:x6,Socket:_6}=Eb.default;var fR=require("fs"),dR=require("path");vt();nl();var ot={control:"control",binary:"binary"},st={idle:"idle",connecting:"connecting",open:"open",degraded:"degraded",closed:"closed"},kb={clientApp:{enabled:["ws","rtc"],channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"}}},remoteDesktop:{enabled:["ws","rtc"],channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"}}}};var ds=class{static id="base";static capabilities={control:!1,binary:!1,signaling:"none"};static priority={control:0,binary:0};constructor(){this._listeners=new Map,this._state=st.idle}get state(){return this._state}get ready(){return this._state===st.open}supports(e){return!!this.constructor.capabilities[e]}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){this._listeners.get(e)?.delete(t)}_emit(e,...t){let n=this._listeners.get(e);if(n)for(let i of n)i(...t)}_setState(e){this._state!==e&&(this._state=e,this._emit("stateChange",e))}connect(e){throw new Error("Not implemented: connect")}disconnect(){throw new Error("Not implemented: disconnect")}send(e,t){throw new Error("Not implemented: send")}};var il=class extends ds{static id="ws";static capabilities={control:!0,binary:!0,signaling:"ws"};static priority={control:100,binary:10};constructor(){super(),this._socket=null}get socket(){return this._socket}connect(e){this._socket=e.socket,this._setState(e.socket.connected?st.open:st.connecting),e.socket.on("connect",()=>this._setState(st.open)),e.socket.on("disconnect",()=>this._setState(st.closed)),e.socket.onAny?.((t,n)=>this._emit("message",{event:t,data:n,source:"ws"}))}disconnect(){this._socket=null,this._setState(st.closed)}send(e,t){if(!this._socket?.connected)return!1;let n=this._socket._rawEmit||this._socket.emit.bind(this._socket);if(e===ot.control){let{event:i,args:s=[]}=t;return n(i,...s),!0}return e===ot.binary?(n("tiles-bin-v2",t),!0):!1}};var Db=K(require("node-datachannel"),1);function g2(r,e){return e&&typeof e=="object"&&e.type==="Buffer"&&Array.isArray(e.data)?{__b:Buffer.from(e.data).toString("base64")}:e}function v2(r,e){return e&&typeof e=="object"&&typeof e.__b=="string"?Buffer.from(e.__b,"base64"):e}function Ob(r){return JSON.stringify(r,g2)}function Mb(r){return JSON.parse(typeof r=="string"?r:Buffer.from(r).toString("utf8"),v2)}at();var Nb=K(require("node:dns/promises"),1),y2=3e4,x2=/\s([0-9a-f-]{8,}\.local)\s/i,Ib=new Map;async function _2(r){let e=Ib.get(r);if(e&&Date.now()-e.ts<y2)return e.ip;try{let{address:t}=await Nb.default.lookup(r);return Ib.set(r,{ip:t,ts:Date.now()}),t}catch{return null}}async function Lb(r){let e=r.match(x2);if(!e)return r;let t=await _2(e[1]);return t?r.replace(e[1],t):null}var{PeerConnection:b2}=Db.default,w2=[{hostname:"stun.l.google.com",port:19302,type:"Stun"},{hostname:"stun1.l.google.com",port:19302,type:"Stun"},{hostname:"stun2.l.google.com",port:19302,type:"Stun"},{hostname:"stun3.l.google.com",port:19302,type:"Stun"},{hostname:"stun4.l.google.com",port:19302,type:"Stun"},{hostname:"global.stun.twilio.com",port:3478,type:"Stun"},{hostname:"stun.cloudflare.com",port:3478,type:"Stun"}];async function S2(r,e){try{let t=await fetch(r,{headers:{"X-API-Key":e}});if(!t.ok)throw new Error(`HTTP ${t.status}`);let{iceServers:n}=await t.json(),i=[];for(let s of n)for(let o of s.urls)if(o.startsWith("stun:")){let a=o.replace("stun:","").split(":")[0],c=parseInt(o.split(":")[2]||"3478");i.push({hostname:a,port:c,type:"Stun"})}else if(o.startsWith("turn:")||o.startsWith("turns:")){let a=o.startsWith("turns:"),l=o.replace(/^turns?:/,"").split("?")[0],p=l.split(":")[0],f=parseInt(l.split(":")[1]||(a?"5349":"3478")),h=o.includes("transport=tcp")?"Tcp":"Udp";i.push({hostname:p,port:f,type:a?"Tls":"Turn",relayType:h,username:s.username,password:s.credential})}return i}catch(t){return console.error("[WebRtcProtocol] TURN fetch failed:",t.message),null}}var ol=class extends ds{static id="rtc";static capabilities={control:!0,binary:!0,signaling:"external"};static priority={control:50,binary:100};constructor(){super(),this._pc=null,this._dcControl=null,this._dcBinary=null,this._iceServers=w2,this._refreshTimer=null,this._remoteSet=!1,this._pendingCandidates=[],this._signaling=null,this._iceGraceTimer=null}async connect(e){this._ctx=e,this._setState(st.connecting);let t=e.profile?.rtc||{};t.enableTurn&&e.auth?.apiKey&&t.turnApiUrl&&await this._refreshTurn(t),this._signaling=e.signaling,this._signaling?.on?.(n=>this._handleSignal(n,t))}disconnect(){clearTimeout(this._refreshTimer),this._signaling?.off?.(),this._signaling=null,this._cleanupPeer(),this._setState(st.closed)}send(e,t){if(e===ot.control){if(!this._dcControl)return!1;try{return this._dcControl.sendMessage(Ob({event:t.event,args:t.args||[],ackId:t.ackId||null})),!0}catch(n){return console.error("[WebRtcProtocol] send control:",n.message),!1}}if(e===ot.binary){if(!this._dcBinary)return!1;try{let n=Array.isArray(t)?t:[t],i=this._ctx.profile?.rtc?.dcMaxMessageSize??65536,s=$.webrtc.dcBufferThreshold;for(let o of n){if(this._dcBinary.bufferedAmount()>s)return!0;o.length<=i&&this._dcBinary.sendMessageBinary(o)}return!0}catch(n){return console.error("[WebRtcProtocol] send binary:",n.message),!1}}return!1}_handleSignal(e,t){if(e.type==="offer")this._processOffer(e.sdp,t);else if(e.type==="ice"){if(!this._remoteSet||!this._pc){this._pendingCandidates.push({candidate:e.candidate,mid:e.mid||"0"});return}this._addRemoteCandidate(e.candidate,e.mid||"0")}}async _addRemoteCandidate(e,t){try{let n=await Lb(e);if(!n||!this._pc)return;this._pc.addRemoteCandidate(n,t)}catch(n){console.error("[WebRtcProtocol] addRemoteCandidate:",n.message)}}_createPeer(e){try{this._pc?.close()}catch{}this._pc=null,this._dcControl=null,this._dcBinary=null,this._remoteSet=!1,this._pendingCandidates=[],this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null);let t=this._ctx?.auth?.socketId||"anon",n=new b2(`peer-${t}`,{iceServers:this._iceServers});this._pcState="new",n.onStateChange(i=>{if(this._pcState=i,i==="failed"||i==="closed")this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null),this._setState(st.closed);else if(i==="disconnected"){if(this._iceGraceTimer)return;this._iceGraceTimer=setTimeout(()=>{this._iceGraceTimer=null,this._pcState!=="connected"&&this._setState(st.closed)},$.webrtc.iceDisconnectGraceMs)}else i==="connected"&&this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null)}),n.onDataChannel(i=>{let s=i.getLabel?.()||"",o=()=>{s==="control"?this._dcControl=i:s==="binary"&&(this._dcBinary=i),this._dcControl&&this._dcBinary&&this._setState(st.open)};i.onOpen(o),i.onClosed(()=>{s==="control"&&(this._dcControl=null),s==="binary"&&(this._dcBinary=null),!this._dcControl&&!this._dcBinary&&this._setState(st.closed)}),i.onError(a=>console.error(`[WebRtcProtocol] DC[${s}] error:`,a)),i.onMessage(a=>{if(s!=="control")return;let c;try{c=Mb(a)}catch(l){console.error("[WebRtcProtocol] control parse:",l.message);return}try{this._emit("message",{event:c.event,data:c,source:"rtc"})}catch(l){console.error(`[WebRtcProtocol] handler error event=${c.event}:`,l.message)}})}),this._pc=n}_processOffer(e,t){return this._createPeer(t),new Promise((n,i)=>{this._pc.onLocalDescription((o,a)=>{a==="answer"&&(this._signaling?.send?.({type:"answer",sdp:o}),n())}),this._pc.onLocalCandidate((o,a)=>{o&&this._signaling?.send?.({type:"ice",candidate:o,mid:a})});try{this._pc.setRemoteDescription(e,"offer"),this._remoteSet=!0;for(let{candidate:o,mid:a}of this._pendingCandidates)this._addRemoteCandidate(o,a);this._pendingCandidates=[],this._pc.setLocalDescription()}catch(o){this._signaling?.send?.({type:"error",message:o.message}),i(o)}let s=t?.answerTimeout||1e4;setTimeout(()=>i(new Error("Answer timeout")),s)})}_cleanupPeer(){this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null);try{this._pc?.close()}catch{}this._pc=null,this._dcControl=null,this._dcBinary=null}async _refreshTurn(e){let t=await S2(e.turnApiUrl,this._ctx.auth.apiKey);t?.length&&(this._iceServers=t,$.logging?.webrtc&&console.log(`[WebRtcProtocol] TURN credentials loaded (${t.length} servers)`)),clearTimeout(this._refreshTimer),this._refreshTimer=setTimeout(()=>this._refreshTurn(e),e.turnRefreshInterval)}};var Bb=new Map;function Ud(r){if(!r?.id)throw new Error("Adapter missing static id");Bb.set(r.id,r)}function jb(r){return Bb.get(r)}oh();Ud(il);Ud(ol);var yl=class{constructor(e,t){let n=t.enableWebRTC?"remoteDesktop":"clientApp",i={...kb[n]};t.enableWebRTC||(i.enabled=["ws"]),i.rtc={enableTurn:!!(t.apiKey&&t.turnApiUrl),turnApiUrl:t.turnApiUrl||null,turnRefreshInterval:t.turnRefreshInterval,dcMaxMessageSize:t.dcMaxMessageSize,answerTimeout:t.answerTimeout},this._profile=i,this._auth={apiKey:t.apiKey||null,socketId:e.id},this._socket=e,this._wsChunkSize=t.wsChunkSize,this._dcChunkSize=t.dcChunkSize,this._dcMaxTilesPerFrame=t.dcMaxTilesPerFrame,this._maxControlBuffer=t.maxControlBuffer,this._adapters=new Map,this._listeners=new Map,this._buffer=[],this._rtcSignalingHandler=null,this._sigListeners=null}get type(){return this._pickAdapter(ot.binary)?.constructor.id==="rtc"?"dc":"ws"}async init(){for(let e of this._profile.enabled){let t=jb(e);if(!t)continue;let n=new t;n.on("stateChange",s=>this._onAdapterStateChange(e,s)),n.on("message",({event:s,data:o,source:a})=>this._dispatch(s,o,a)),this._adapters.set(e,n);let i=this._buildCtx(e);await n.connect(i)}}setupSignaling(e){this._installSignalingListeners()}emit(e,...t){this._sendControl(e,t)}sendTiles(e,t){let{tiles:n,timestamp:i}=e;if(!n?.length)return;let s=this._pickAdapter(ot.binary),o=i??Date.now();if(s?.constructor.id==="rtc"&&t){let a=[];for(let c=0;c<n.length;c+=this._dcChunkSize)a.push(t(n.slice(c,c+this._dcChunkSize),o));s.send(ot.binary,a);return}this._emitTilesChunked(n,o)}close(){for(let e of this._adapters.values())try{e.disconnect()}catch{}this._adapters.clear(),this._buffer=[]}attachAsBus(e){if(e._rawEmit)return;let t=e.emit.bind(e);e._rawEmit=t;let n=new Set(["error","disconnect","disconnecting","connect","newListener","removeListener"]);e.emit=(i,...s)=>n.has(i)?t(i,...s):(this._sendControl(i,s),!0)}_emitTilesChunked(e,t){let n=this._adapters.get("ws");if(!n?.ready)return;let i=this._wsChunkSize;for(let s=0;s<e.length;s+=i){let o=e.slice(s,s+i);n.send(ot.binary,_s(o,t))}}_buildCtx(e){let t={auth:this._auth,profile:this._profile};return e==="ws"&&(t.socket=this._socket),e==="rtc"&&(t.signaling={send:n=>this._sendSignaling(n),on:n=>{this._rtcSignalingHandler=n,this._installSignalingListeners()},off:()=>{this._rtcSignalingHandler=null,this._removeSignalingListeners()}}),t}_onAdapterStateChange(e,t){t===st.open&&this._flushBuffer()}_pickAdapter(e){let t=this._profile.channels[e];if(!t)return null;let n=[...this._adapters.values()].filter(i=>i.supports(e)&&i.ready);if(t.prefer){let i=n.find(s=>s.constructor.id===t.prefer);if(i)return i}return n.sort((i,s)=>(s.constructor.priority[e]??0)-(i.constructor.priority[e]??0)),n[0]||null}hasReadyAdapter(){return!!(this._pickAdapter(ot.control)||this._pickAdapter(ot.binary))}_sendControl(e,t,n){let i=this._pickAdapter(ot.control);if(!i){this._buffer.push({event:e,args:t,ackId:n}),this._buffer.length>this._maxControlBuffer&&this._buffer.shift();return}i.constructor.id==="rtc"?i.send(ot.control,{event:e,args:t,ackId:n}):i.send(ot.control,{event:e,args:t})}_flushBuffer(){if(!(!this._buffer.length||!this._pickAdapter(ot.control)))for(;this._buffer.length;){let{event:t,args:n,ackId:i}=this._buffer.shift();this._sendControl(t,n,i)}}_dispatch(e,t,n){if(n==="rtc"){let s=Array.isArray(t?.args)?[...t.args]:[],o=t?.ackId;o&&s.push((...l)=>this._sendAck(o,l));let a=this._listeners.get(e);if(a)for(let l of a)l(...s);let c=this._socket.listeners?.(e)||[];for(let l of c)l(...s);return}let i=this._listeners.get(e);if(i)for(let s of i)s(t)}_sendAck(e,t){let n=this._adapters.get("rtc");n?.ready&&n.send(ot.control,{event:"__ack",args:t,ackId:e})}_sendSignaling(e){let t=this._adapters.get("ws");if(t?.ready){t.send(ot.control,{event:this._sigEvent(e.type),args:[this._sigData(e)]});return}console.warn("[ProtocolManager] signaling unavailable (ws down)")}_sigEvent(e){return e==="offer"?"webrtc:offer":e==="answer"?"webrtc:answer":e==="ice"?"webrtc:ice-candidate":"webrtc:error"}_sigData(e){return e.type==="offer"||e.type==="answer"?{sdp:e.sdp}:e.type==="ice"?{candidate:e.candidate,mid:e.mid}:e}_installSignalingListeners(){if(!this._rtcSignalingHandler||this._sigListeners)return;let e=({sdp:n})=>this._rtcSignalingHandler?.({type:"offer",sdp:n}),t=({candidate:n,mid:i})=>this._rtcSignalingHandler?.({type:"ice",candidate:n,mid:i});this._sigListeners={onOffer:e,onIce:t},this._socket.on("webrtc:offer",e),this._socket.on("webrtc:ice-candidate",t)}_removeSignalingListeners(){this._sigListeners&&(this._socket.off("webrtc:offer",this._sigListeners.onOffer),this._socket.off("webrtc:ice-candidate",this._sigListeners.onIce),this._sigListeners=null)}};ui();at();var TT=require("path"),CT=require("url");var El=K(require("net"),1),ae=K(require("fs"),1),fe=K(require("path"),1),Dw=K(require("os"),1),Bw=require("child_process"),jw=require("url");var ch={win32:[{id:"cmd",label:"Command Prompt",path:"cmd.exe",args:[]},{id:"powershell",label:"PowerShell",path:"powershell.exe",args:["-NoLogo"]},{id:"pwsh",label:"PowerShell Core",path:"pwsh.exe",args:["-NoLogo"]}],unix:[{id:"bash",label:"Bash",path:"/bin/bash",args:["-l"]},{id:"zsh",label:"Zsh",path:"/bin/zsh",args:["-l"]},{id:"sh",label:"Sh",path:"/bin/sh",args:["-l"]}]};function Pw(){return process.platform==="win32"?ch.win32:[]}function Iw(r){if(process.platform==="win32"){let n=r?ch.win32.find(s=>s.id===r):null;if(n)return n;let i=process.env.COMSPEC;return i?{id:"cmd",label:"Command Prompt",path:i,args:[]}:ch.win32[0]}let e=process.env.SHELL||"/bin/bash",t=e.split("/").pop();return{id:t,label:t,path:e,args:["-l"]}}var uh=fe.default.dirname((0,jw.fileURLToPath)(__importMetaUrl)),fn=fe.default.join(Dw.default.homedir(),".9remote"),Wo=process.platform==="win32"?"\\\\.\\pipe\\9remote-pty":fe.default.join(fn,"pty-daemon.sock"),Nw=fe.default.join(uh,"ptyDaemon.js"),Lw=fe.default.join(uh,"ptyDaemon.cjs"),xl=fe.default.join(fn,"daemon");function Fw(r,e){if(ae.default.existsSync(r)){ae.default.mkdirSync(e,{recursive:!0});for(let t of ae.default.readdirSync(r,{withFileTypes:!0})){let n=fe.default.join(r,t.name),i=fe.default.join(e,t.name);t.isDirectory()?Fw(n,i):t.isFile()&&ae.default.copyFileSync(n,i)}}}function J2(r,e){let t=r;for(let n=0;n<6;n++){let i=fe.default.join(t,"node_modules",e);if(ae.default.existsSync(i))return i;let s=fe.default.dirname(t);if(s===t)break;t=s}return null}var X2=r=>J2(r,"node-pty");function Z2(r){try{if(!ae.default.existsSync(xl))return;let e=fe.default.join(fn,"pids","ptyDaemon.pid"),t=!1;try{let n=parseInt(ae.default.readFileSync(e,"utf8").trim(),10);if(Number.isFinite(n)&&n>0)try{process.kill(n,0),t=!0}catch{}}catch{}if(t)return;for(let n of ae.default.readdirSync(xl))if(n!==`v${r}`)try{ae.default.rmSync(fe.default.join(xl,n),{recursive:!0,force:!0})}catch{}}catch{}}function Q2(r){Z2("18");let e=fe.default.join(xl,`v${"18"}`),t=r.endsWith(".js"),n=t?fe.default.join(e,"features","terminal"):e,i=fe.default.join(n,fe.default.basename(r)),s=fe.default.join(n,"node_modules","node-pty");if(ae.default.existsSync(i)&&ae.default.existsSync(s))return{script:i,cwd:n};try{if(ae.default.mkdirSync(n,{recursive:!0}),ae.default.copyFileSync(r,i),t){let a=fe.default.dirname(r);ae.default.copyFileSync(fe.default.join(a,"constants.js"),fe.default.join(n,"constants.js"));let c=fe.default.join(e,"lib");ae.default.mkdirSync(c,{recursive:!0}),ae.default.copyFileSync(fe.default.resolve(a,"..","..","lib","constants.js"),fe.default.join(c,"constants.js"))}let o=X2(fe.default.dirname(r));return o?(Fw(o,s),{script:i,cwd:n}):null}catch{return null}}var Fr=null,ws=!1,jn=!1,lh="",eB=0,Ss=new Map,_l=new Map;function tB(){return++eB}function Tl(r,e){_l.has(r)||_l.set(r,[]),_l.get(r).push(e)}function wl(r,e){let t=_l.get(r);if(t)for(let n of t)try{n(e)}catch(i){console.error(`[DaemonClient] Error in ${r} handler:`,i)}}function ph(r){if(!Fr||!ws)return!1;try{return Fr.write(JSON.stringify(r)+`
110
+ `);return s!==-1&&(e=ov(e,i,n,s)),n+e+i};Object.defineProperties(eo.prototype,Oi);var _O=eo(),E$=eo({level:cv?cv.level:0});var to=_O;Pt();vt();Ii();var Eb=K(Sb(),1),{Server:Tb,Namespace:x6,Socket:_6}=Eb.default;var fR=require("fs"),dR=require("path");vt();nl();var ot={control:"control",binary:"binary"},st={idle:"idle",connecting:"connecting",open:"open",degraded:"degraded",closed:"closed"},kb={clientApp:{enabled:["ws","rtc"],channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"}}},remoteDesktop:{enabled:["ws","rtc"],channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"}}}};var ds=class{static id="base";static capabilities={control:!1,binary:!1,signaling:"none"};static priority={control:0,binary:0};constructor(){this._listeners=new Map,this._state=st.idle}get state(){return this._state}get ready(){return this._state===st.open}supports(e){return!!this.constructor.capabilities[e]}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){this._listeners.get(e)?.delete(t)}_emit(e,...t){let n=this._listeners.get(e);if(n)for(let i of n)i(...t)}_setState(e){this._state!==e&&(this._state=e,this._emit("stateChange",e))}connect(e){throw new Error("Not implemented: connect")}disconnect(){throw new Error("Not implemented: disconnect")}send(e,t){throw new Error("Not implemented: send")}};var il=class extends ds{static id="ws";static capabilities={control:!0,binary:!0,signaling:"ws"};static priority={control:100,binary:10};constructor(){super(),this._socket=null}get socket(){return this._socket}connect(e){this._socket=e.socket,this._setState(e.socket.connected?st.open:st.connecting),e.socket.on("connect",()=>this._setState(st.open)),e.socket.on("disconnect",()=>this._setState(st.closed)),e.socket.onAny?.((t,n)=>this._emit("message",{event:t,data:n,source:"ws"}))}disconnect(){this._socket=null,this._setState(st.closed)}send(e,t){if(!this._socket?.connected)return!1;let n=this._socket._rawEmit||this._socket.emit.bind(this._socket);if(e===ot.control){let{event:i,args:s=[]}=t;return n(i,...s),!0}if(e===ot.binary){let i=this._socket.conn?.transport;return i&&i.writable===!1?!1:(n("tiles-bin-v2",t),!0)}return!1}};var Db=K(require("node-datachannel"),1);function g2(r,e){return e&&typeof e=="object"&&e.type==="Buffer"&&Array.isArray(e.data)?{__b:Buffer.from(e.data).toString("base64")}:e}function v2(r,e){return e&&typeof e=="object"&&typeof e.__b=="string"?Buffer.from(e.__b,"base64"):e}function Ob(r){return JSON.stringify(r,g2)}function Mb(r){return JSON.parse(typeof r=="string"?r:Buffer.from(r).toString("utf8"),v2)}at();var Nb=K(require("node:dns/promises"),1),y2=3e4,x2=/\s([0-9a-f-]{8,}\.local)\s/i,Ib=new Map;async function _2(r){let e=Ib.get(r);if(e&&Date.now()-e.ts<y2)return e.ip;try{let{address:t}=await Nb.default.lookup(r);return Ib.set(r,{ip:t,ts:Date.now()}),t}catch{return null}}async function Lb(r){let e=r.match(x2);if(!e)return r;let t=await _2(e[1]);return t?r.replace(e[1],t):null}var{PeerConnection:b2}=Db.default,w2=[{hostname:"stun.l.google.com",port:19302,type:"Stun"},{hostname:"stun1.l.google.com",port:19302,type:"Stun"},{hostname:"stun2.l.google.com",port:19302,type:"Stun"},{hostname:"stun3.l.google.com",port:19302,type:"Stun"},{hostname:"stun4.l.google.com",port:19302,type:"Stun"},{hostname:"global.stun.twilio.com",port:3478,type:"Stun"},{hostname:"stun.cloudflare.com",port:3478,type:"Stun"}];async function S2(r,e){try{let t=await fetch(r,{headers:{"X-API-Key":e}});if(!t.ok)throw new Error(`HTTP ${t.status}`);let{iceServers:n}=await t.json(),i=[];for(let s of n)for(let o of s.urls)if(o.startsWith("stun:")){let a=o.replace("stun:","").split(":")[0],c=parseInt(o.split(":")[2]||"3478");i.push({hostname:a,port:c,type:"Stun"})}else if(o.startsWith("turn:")||o.startsWith("turns:")){let a=o.startsWith("turns:"),l=o.replace(/^turns?:/,"").split("?")[0],p=l.split(":")[0],f=parseInt(l.split(":")[1]||(a?"5349":"3478")),h=o.includes("transport=tcp")?"Tcp":"Udp";i.push({hostname:p,port:f,type:a?"Tls":"Turn",relayType:h,username:s.username,password:s.credential})}return i}catch(t){return console.error("[WebRtcProtocol] TURN fetch failed:",t.message),null}}var ol=class extends ds{static id="rtc";static capabilities={control:!0,binary:!0,signaling:"external"};static priority={control:50,binary:100};constructor(){super(),this._pc=null,this._dcControl=null,this._dcBinary=null,this._iceServers=w2,this._refreshTimer=null,this._remoteSet=!1,this._pendingCandidates=[],this._signaling=null,this._iceGraceTimer=null}async connect(e){this._ctx=e,this._setState(st.connecting);let t=e.profile?.rtc||{};t.enableTurn&&e.auth?.apiKey&&t.turnApiUrl&&await this._refreshTurn(t),this._signaling=e.signaling,this._signaling?.on?.(n=>this._handleSignal(n,t))}disconnect(){clearTimeout(this._refreshTimer),this._signaling?.off?.(),this._signaling=null,this._cleanupPeer(),this._setState(st.closed)}send(e,t){if(e===ot.control){if(!this._dcControl)return!1;try{return this._dcControl.sendMessage(Ob({event:t.event,args:t.args||[],ackId:t.ackId||null})),!0}catch(n){return console.error("[WebRtcProtocol] send control:",n.message),!1}}if(e===ot.binary){if(!this._dcBinary)return!1;try{let n=Array.isArray(t)?t:[t],i=this._ctx.profile?.rtc?.dcMaxMessageSize??65536,s=$.webrtc.dcBufferThreshold;for(let o of n){if(this._dcBinary.bufferedAmount()>s)return!0;o.length<=i&&this._dcBinary.sendMessageBinary(o)}return!0}catch(n){return console.error("[WebRtcProtocol] send binary:",n.message),!1}}return!1}_handleSignal(e,t){if(e.type==="offer")this._processOffer(e.sdp,t);else if(e.type==="ice"){if(!this._remoteSet||!this._pc){this._pendingCandidates.push({candidate:e.candidate,mid:e.mid||"0"});return}this._addRemoteCandidate(e.candidate,e.mid||"0")}}async _addRemoteCandidate(e,t){try{let n=await Lb(e);if(!n||!this._pc)return;this._pc.addRemoteCandidate(n,t)}catch(n){console.error("[WebRtcProtocol] addRemoteCandidate:",n.message)}}_createPeer(e){try{this._pc?.close()}catch{}this._pc=null,this._dcControl=null,this._dcBinary=null,this._remoteSet=!1,this._pendingCandidates=[],this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null);let t=this._ctx?.auth?.socketId||"anon",n=new b2(`peer-${t}`,{iceServers:this._iceServers});this._pcState="new",n.onStateChange(i=>{if(this._pcState=i,i==="failed"||i==="closed")this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null),this._setState(st.closed);else if(i==="disconnected"){if(this._iceGraceTimer)return;this._iceGraceTimer=setTimeout(()=>{this._iceGraceTimer=null,this._pcState!=="connected"&&this._setState(st.closed)},$.webrtc.iceDisconnectGraceMs)}else i==="connected"&&this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null)}),n.onDataChannel(i=>{let s=i.getLabel?.()||"",o=()=>{s==="control"?this._dcControl=i:s==="binary"&&(this._dcBinary=i),this._dcControl&&this._dcBinary&&this._setState(st.open)};i.onOpen(o),i.onClosed(()=>{s==="control"&&(this._dcControl=null),s==="binary"&&(this._dcBinary=null),!this._dcControl&&!this._dcBinary&&this._setState(st.closed)}),i.onError(a=>console.error(`[WebRtcProtocol] DC[${s}] error:`,a)),i.onMessage(a=>{if(s!=="control")return;let c;try{c=Mb(a)}catch(l){console.error("[WebRtcProtocol] control parse:",l.message);return}try{this._emit("message",{event:c.event,data:c,source:"rtc"})}catch(l){console.error(`[WebRtcProtocol] handler error event=${c.event}:`,l.message)}})}),this._pc=n}_processOffer(e,t){return this._createPeer(t),new Promise((n,i)=>{this._pc.onLocalDescription((o,a)=>{a==="answer"&&(this._signaling?.send?.({type:"answer",sdp:o}),n())}),this._pc.onLocalCandidate((o,a)=>{o&&this._signaling?.send?.({type:"ice",candidate:o,mid:a})});try{this._pc.setRemoteDescription(e,"offer"),this._remoteSet=!0;for(let{candidate:o,mid:a}of this._pendingCandidates)this._addRemoteCandidate(o,a);this._pendingCandidates=[],this._pc.setLocalDescription()}catch(o){this._signaling?.send?.({type:"error",message:o.message}),i(o)}let s=t?.answerTimeout||1e4;setTimeout(()=>i(new Error("Answer timeout")),s)})}_cleanupPeer(){this._iceGraceTimer&&(clearTimeout(this._iceGraceTimer),this._iceGraceTimer=null);try{this._pc?.close()}catch{}this._pc=null,this._dcControl=null,this._dcBinary=null}async _refreshTurn(e){let t=await S2(e.turnApiUrl,this._ctx.auth.apiKey);t?.length&&(this._iceServers=t,$.logging?.webrtc&&console.log(`[WebRtcProtocol] TURN credentials loaded (${t.length} servers)`)),clearTimeout(this._refreshTimer),this._refreshTimer=setTimeout(()=>this._refreshTurn(e),e.turnRefreshInterval)}};var Bb=new Map;function Ud(r){if(!r?.id)throw new Error("Adapter missing static id");Bb.set(r.id,r)}function jb(r){return Bb.get(r)}oh();Ud(il);Ud(ol);var yl=class{constructor(e,t){let n=t.enableWebRTC?"remoteDesktop":"clientApp",i={...kb[n]};t.enableWebRTC||(i.enabled=["ws"]),i.rtc={enableTurn:!!(t.apiKey&&t.turnApiUrl),turnApiUrl:t.turnApiUrl||null,turnRefreshInterval:t.turnRefreshInterval,dcMaxMessageSize:t.dcMaxMessageSize,answerTimeout:t.answerTimeout},this._profile=i,this._auth={apiKey:t.apiKey||null,socketId:e.id},this._socket=e,this._wsChunkSize=t.wsChunkSize,this._dcChunkSize=t.dcChunkSize,this._dcMaxTilesPerFrame=t.dcMaxTilesPerFrame,this._maxControlBuffer=t.maxControlBuffer,this._adapters=new Map,this._listeners=new Map,this._buffer=[],this._rtcSignalingHandler=null,this._sigListeners=null}get type(){return this._pickAdapter(ot.binary)?.constructor.id==="rtc"?"dc":"ws"}async init(){for(let e of this._profile.enabled){let t=jb(e);if(!t)continue;let n=new t;n.on("stateChange",s=>this._onAdapterStateChange(e,s)),n.on("message",({event:s,data:o,source:a})=>this._dispatch(s,o,a)),this._adapters.set(e,n);let i=this._buildCtx(e);await n.connect(i)}}setupSignaling(e){this._installSignalingListeners()}emit(e,...t){this._sendControl(e,t)}sendTiles(e,t){let{tiles:n,timestamp:i}=e;if(!n?.length)return[];let s=this._pickAdapter(ot.binary),o=i??Date.now();if(s?.constructor.id==="rtc"&&t){let a=[];for(let c=0;c<n.length;c+=this._dcChunkSize)a.push(t(n.slice(c,c+this._dcChunkSize),o));return s.send(ot.binary,a),n}return this._emitTilesChunked(n,o)}close(){for(let e of this._adapters.values())try{e.disconnect()}catch{}this._adapters.clear(),this._buffer=[]}attachAsBus(e){if(e._rawEmit)return;let t=e.emit.bind(e);e._rawEmit=t;let n=new Set(["error","disconnect","disconnecting","connect","newListener","removeListener"]);e.emit=(i,...s)=>n.has(i)?t(i,...s):(this._sendControl(i,s),!0)}_emitTilesChunked(e,t){let n=this._adapters.get("ws");if(!n?.ready)return[];let i=this._wsChunkSize,s=[];for(let o=0;o<e.length;o+=i){let a=e.slice(o,o+i);if(n.send(ot.binary,_s(a,t))===!1)break;s.push(...a)}return s}_buildCtx(e){let t={auth:this._auth,profile:this._profile};return e==="ws"&&(t.socket=this._socket),e==="rtc"&&(t.signaling={send:n=>this._sendSignaling(n),on:n=>{this._rtcSignalingHandler=n,this._installSignalingListeners()},off:()=>{this._rtcSignalingHandler=null,this._removeSignalingListeners()}}),t}_onAdapterStateChange(e,t){t===st.open&&this._flushBuffer()}_pickAdapter(e){let t=this._profile.channels[e];if(!t)return null;let n=[...this._adapters.values()].filter(i=>i.supports(e)&&i.ready);if(t.prefer){let i=n.find(s=>s.constructor.id===t.prefer);if(i)return i}return n.sort((i,s)=>(s.constructor.priority[e]??0)-(i.constructor.priority[e]??0)),n[0]||null}hasReadyAdapter(){return!!(this._pickAdapter(ot.control)||this._pickAdapter(ot.binary))}_sendControl(e,t,n){let i=this._pickAdapter(ot.control);if(!i){this._buffer.push({event:e,args:t,ackId:n}),this._buffer.length>this._maxControlBuffer&&this._buffer.shift();return}i.constructor.id==="rtc"?i.send(ot.control,{event:e,args:t,ackId:n}):i.send(ot.control,{event:e,args:t})}_flushBuffer(){if(!(!this._buffer.length||!this._pickAdapter(ot.control)))for(;this._buffer.length;){let{event:t,args:n,ackId:i}=this._buffer.shift();this._sendControl(t,n,i)}}_dispatch(e,t,n){if(n==="rtc"){let s=Array.isArray(t?.args)?[...t.args]:[],o=t?.ackId;o&&s.push((...l)=>this._sendAck(o,l));let a=this._listeners.get(e);if(a)for(let l of a)l(...s);let c=this._socket.listeners?.(e)||[];for(let l of c)l(...s);return}let i=this._listeners.get(e);if(i)for(let s of i)s(t)}_sendAck(e,t){let n=this._adapters.get("rtc");n?.ready&&n.send(ot.control,{event:"__ack",args:t,ackId:e})}_sendSignaling(e){let t=this._adapters.get("ws");if(t?.ready){t.send(ot.control,{event:this._sigEvent(e.type),args:[this._sigData(e)]});return}console.warn("[ProtocolManager] signaling unavailable (ws down)")}_sigEvent(e){return e==="offer"?"webrtc:offer":e==="answer"?"webrtc:answer":e==="ice"?"webrtc:ice-candidate":"webrtc:error"}_sigData(e){return e.type==="offer"||e.type==="answer"?{sdp:e.sdp}:e.type==="ice"?{candidate:e.candidate,mid:e.mid}:e}_installSignalingListeners(){if(!this._rtcSignalingHandler||this._sigListeners)return;let e=({sdp:n})=>this._rtcSignalingHandler?.({type:"offer",sdp:n}),t=({candidate:n,mid:i})=>this._rtcSignalingHandler?.({type:"ice",candidate:n,mid:i});this._sigListeners={onOffer:e,onIce:t},this._socket.on("webrtc:offer",e),this._socket.on("webrtc:ice-candidate",t)}_removeSignalingListeners(){this._sigListeners&&(this._socket.off("webrtc:offer",this._sigListeners.onOffer),this._socket.off("webrtc:ice-candidate",this._sigListeners.onIce),this._sigListeners=null)}};ui();at();var TT=require("path"),CT=require("url");var El=K(require("net"),1),ae=K(require("fs"),1),fe=K(require("path"),1),Dw=K(require("os"),1),Bw=require("child_process"),jw=require("url");var ch={win32:[{id:"cmd",label:"Command Prompt",path:"cmd.exe",args:[]},{id:"powershell",label:"PowerShell",path:"powershell.exe",args:["-NoLogo"]},{id:"pwsh",label:"PowerShell Core",path:"pwsh.exe",args:["-NoLogo"]}],unix:[{id:"bash",label:"Bash",path:"/bin/bash",args:["-l"]},{id:"zsh",label:"Zsh",path:"/bin/zsh",args:["-l"]},{id:"sh",label:"Sh",path:"/bin/sh",args:["-l"]}]};function Pw(){return process.platform==="win32"?ch.win32:[]}function Iw(r){if(process.platform==="win32"){let n=r?ch.win32.find(s=>s.id===r):null;if(n)return n;let i=process.env.COMSPEC;return i?{id:"cmd",label:"Command Prompt",path:i,args:[]}:ch.win32[0]}let e=process.env.SHELL||"/bin/bash",t=e.split("/").pop();return{id:t,label:t,path:e,args:["-l"]}}var uh=fe.default.dirname((0,jw.fileURLToPath)(__importMetaUrl)),fn=fe.default.join(Dw.default.homedir(),".9remote"),Wo=process.platform==="win32"?"\\\\.\\pipe\\9remote-pty":fe.default.join(fn,"pty-daemon.sock"),Nw=fe.default.join(uh,"ptyDaemon.js"),Lw=fe.default.join(uh,"ptyDaemon.cjs"),xl=fe.default.join(fn,"daemon");function Fw(r,e){if(ae.default.existsSync(r)){ae.default.mkdirSync(e,{recursive:!0});for(let t of ae.default.readdirSync(r,{withFileTypes:!0})){let n=fe.default.join(r,t.name),i=fe.default.join(e,t.name);t.isDirectory()?Fw(n,i):t.isFile()&&ae.default.copyFileSync(n,i)}}}function J2(r,e){let t=r;for(let n=0;n<6;n++){let i=fe.default.join(t,"node_modules",e);if(ae.default.existsSync(i))return i;let s=fe.default.dirname(t);if(s===t)break;t=s}return null}var X2=r=>J2(r,"node-pty");function Z2(r){try{if(!ae.default.existsSync(xl))return;let e=fe.default.join(fn,"pids","ptyDaemon.pid"),t=!1;try{let n=parseInt(ae.default.readFileSync(e,"utf8").trim(),10);if(Number.isFinite(n)&&n>0)try{process.kill(n,0),t=!0}catch{}}catch{}if(t)return;for(let n of ae.default.readdirSync(xl))if(n!==`v${r}`)try{ae.default.rmSync(fe.default.join(xl,n),{recursive:!0,force:!0})}catch{}}catch{}}function Q2(r){Z2("18");let e=fe.default.join(xl,`v${"18"}`),t=r.endsWith(".js"),n=t?fe.default.join(e,"features","terminal"):e,i=fe.default.join(n,fe.default.basename(r)),s=fe.default.join(n,"node_modules","node-pty");if(ae.default.existsSync(i)&&ae.default.existsSync(s))return{script:i,cwd:n};try{if(ae.default.mkdirSync(n,{recursive:!0}),ae.default.copyFileSync(r,i),t){let a=fe.default.dirname(r);ae.default.copyFileSync(fe.default.join(a,"constants.js"),fe.default.join(n,"constants.js"));let c=fe.default.join(e,"lib");ae.default.mkdirSync(c,{recursive:!0}),ae.default.copyFileSync(fe.default.resolve(a,"..","..","lib","constants.js"),fe.default.join(c,"constants.js"))}let o=X2(fe.default.dirname(r));return o?(Fw(o,s),{script:i,cwd:n}):null}catch{return null}}var Fr=null,ws=!1,jn=!1,lh="",eB=0,Ss=new Map,_l=new Map;function tB(){return++eB}function Tl(r,e){_l.has(r)||_l.set(r,[]),_l.get(r).push(e)}function wl(r,e){let t=_l.get(r);if(t)for(let n of t)try{n(e)}catch(i){console.error(`[DaemonClient] Error in ${r} handler:`,i)}}function ph(r){if(!Fr||!ws)return!1;try{return Fr.write(JSON.stringify(r)+`
111
111
  `),!0}catch(e){return console.error("[DaemonClient] Send error:",e),!1}}function Cl(r,e=5e3){return new Promise((t,n)=>{let i=tB();r.requestId=i;let s=setTimeout(()=>{Ss.delete(i),n(new Error("Request timeout"))},e);Ss.set(i,{resolve:t,reject:n,timer:s}),ph(r)||(clearTimeout(s),Ss.delete(i),n(new Error("Not connected to daemon")))})}function rB(r){let{type:e,requestId:t,...n}=r;if(t&&Ss.has(t)){let{resolve:i,timer:s}=Ss.get(t);clearTimeout(s),Ss.delete(t),i({type:e,...n});return}switch(e){case"output":wl("output",{sessionId:n.sessionId,data:Buffer.from(n.data,"base64")});break;case"sessionClosed":wl("sessionClosed",n.sessionId);break;case"pong":break;default:console.log("[DaemonClient] Unknown message:",e)}}function Sl(){return new Promise(r=>{let e=El.default.connect(Wo),t=setTimeout(()=>{e.destroy(),r(!1)},1e3);e.on("connect",()=>{clearTimeout(t),e.destroy(),r(!0)}),e.on("error",()=>{if(clearTimeout(t),process.platform!=="win32"&&ae.default.existsSync(Wo))try{ae.default.unlinkSync(Wo)}catch{}r(!1)})})}function nB(){ae.default.existsSync(fn)||ae.default.mkdirSync(fn,{recursive:!0});let r=ae.default.existsSync(Nw)?Nw:ae.default.existsSync(Lw)?Lw:null;if(!r)return console.error("[DaemonClient] \u274C Daemon script not found"),null;let e=Q2(r);return e||{script:r,cwd:uh}}async function iB(){if(!ae.default.existsSync(fn))try{ae.default.mkdirSync(fn,{recursive:!0})}catch(a){return console.error("[DaemonClient] Failed to create socket directory:",a.message),!1}let r=nB();if(!r)return!1;let{script:e,cwd:t}=r,n=fe.default.join(fn,"logs");try{ae.default.mkdirSync(n,{recursive:!0})}catch{}let i=fe.default.join(n,"daemon.log"),s;try{s=ae.default.openSync(i,"w")}catch(a){console.error("[DaemonClient] Failed to open log file:",a.message),s="ignore"}if((0,Bw.spawn)("node",[e],{detached:!0,stdio:["ignore",s,s],cwd:t}).unref(),typeof s=="number")try{ae.default.closeSync(s)}catch{}for(let a=0;a<20;a++)if(await new Promise(c=>setTimeout(c,100)),await Sl())return!0;console.error("[DaemonClient] \u274C Failed to start daemon");try{let a=ae.default.readFileSync(i,"utf8");a.trim()&&(console.error("[DaemonClient] Daemon log:"),console.error(a))}catch{}return!1}function sB(){return new Promise(r=>{let e=El.default.connect(Wo),t="",n=s=>{try{e.destroy()}catch{}r(s)},i=setTimeout(()=>n(null),2e3);e.on("connect",()=>e.write(JSON.stringify({type:"ping",requestId:-1})+`
112
112
  `)),e.on("data",s=>{t+=s.toString();let o=t.indexOf(`
113
113
  `);if(o!==-1){clearTimeout(i);try{let a=JSON.parse(t.slice(0,o));n(a.version||"unknown")}catch{n(null)}}}),e.on("error",()=>{clearTimeout(i),n(null)})})}async function oB(){try{let r=fe.default.join(fn,"pids","ptyDaemon.pid"),e=parseInt(ae.default.readFileSync(r,"utf8").trim(),10);Number.isFinite(e)&&e>0&&process.kill(e,"SIGTERM")}catch{}for(let r=0;r<20;r++){if(!await Sl())return;await new Promise(e=>setTimeout(e,100))}}async function Uw(){if(!(ws||jn)){jn=!0;try{if(await Sl()){let r=await sB();r!=="18"&&(console.log(`[DaemonClient] Daemon v${r} != v${"18"}, restarting`),await oB())}return!await Sl()&&!await iB()?(console.error("[DaemonClient] \u274C Failed to start daemon"),jn=!1,!1):new Promise(r=>{let e=setTimeout(()=>{console.error("[DaemonClient] \u274C Connection timeout after 5s"),Fr&&Fr.destroy(),jn=!1,r(!1)},5e3);Fr=El.default.connect(Wo),Fr.on("connect",()=>{clearTimeout(e),ws=!0,jn=!1,wl("connected"),r(!0)}),Fr.on("data",t=>{lh+=t.toString();let n=lh.split(`
@@ -131,7 +131,7 @@ export const ${_T} = async () => ({
131
131
  else if (event.type === "permission.asked") post("notification");
132
132
  },
133
133
  });
134
- `}function jF(){let r=vn.opencode(),e=Ft.default.dirname(r);return ht.default.existsSync(e)||ht.default.mkdirSync(e,{recursive:!0}),ht.default.writeFileSync(r,BF(),"utf8"),{success:!0}}function FF(r){switch(r){case"claude":{let e=ia(vn.claude());return!!(e.hooks?.Stop||e.hooks?.Notification)}case"codex":{let e=vn.codex();return ht.default.existsSync(e)&&ht.default.readFileSync(e,"utf8").includes("# 9Remote notification")}case"gemini":{let e=ia(vn.gemini());return!!(e.hooks?.AfterAgent||e.hooks?.Notification)}case"opencode":return ht.default.existsSync(vn.opencode());default:return!1}}function UF(r){let e=OF[r]?.();return e?(Array.isArray(e)?e:[e]).some(n=>ht.default.existsSync(n)):!1}var qF={claude:MF,codex:LF,gemini:DF,opencode:jF};var HF=vv;function $F(r){return qF[r]?.()||{success:!1,error:"Unknown tool"}}function wT(){let r={};for(let e of HF)if(!(!UF(e)||FF(e)))try{r[e]=$F(e).success}catch{r[e]=!1}return r}function ST(){let r=vn.claude(),e=ia(r);if(!e.hooks?.Stop&&!e.hooks?.Notification)return;let t=e.env||{};Object.keys(io).some(i=>t[i]!==io[i])&&(bT(e),hu(r,e))}ui();var mG=(0,TT.dirname)((0,CT.fileURLToPath)(__importMetaUrl)),gG=to.rgb(230,138,110),hm="daemon",WF="2.0.66",$n=new Map,AT=new Map,RT={};async function ET(){let r=await Al(),e=new Map(r.map(n=>[n.id,n])),t=Rh();for(let n of r)if(!t[n.id])try{await pi(n.id)}catch{}$n.clear();for(let[n,i]of Object.entries(t)){let s=e.get(n);$n.set(n,{daemon:!0,name:i.name,createdAt:i.createdAt,shellId:i.shellId,cwd:s?.cwd||i.cwd,needsRespawn:!s})}mn($n)}async function kT(){let r=DS();for(let n of r.groups)AT.set(n.id,n);Object.assign(RT,r.sessionGroups);try{ST()}catch{}try{wT()}catch{}if(hm==="daemon")if(!await qw())console.error("\u274C Failed to connect to PTY daemon, falling back to buffer mode");else{await ET(),Tl("connected",()=>{ET().catch(()=>{})});return}console.log("\u{1F4E6} Buffer persistence mode - scrollback enabled");let e=LS(),t=Rh();for(let n of e){let i=t[n]||{};$n.set(n,{pty:null,name:i.name||`Terminal ${$n.size+1}`,createdAt:i.createdAt||Date.now(),buffer:[],needsRestore:!0}),console.log(`\u{1F504} Found saved session: ${n}`)}e.length>0&&console.log(`\u2705 Found ${e.length} saved session(s)`)}function Fs(r,e){hm==="daemon"&&(Tl("output",({sessionId:i,data:s})=>bt(r,"output",{sessionId:i,data:s})),Tl("sessionClosed",i=>{$n.delete(i),du(i),bt(r,"sessionClosed",i),bt(r,"notificationCleared",i)}));let t=()=>({version:WF,remoteAvailable:xs(),daemonMode:hm==="daemon"&&Tr(),platform:process.platform,updateAvailable:aw(),canSelfUpdate:!0,...AS()}),n=()=>{let i=t();for(let s of r.sockets.sockets.values())s.data?.approved&&s.emit("serverInfo",i)};uw(n),Fs._buildServerInfo=t,Fs._emitServerInfo=n}function OT(){Fs._emitServerInfo?.()}var MT=null;function PT(r){MT=r}async function IT(r,e,t){RS(),MT?.(),r.emit("serverInfo",Fs._buildServerInfo?.()),US(r,e,$n,AT,RT),$S(r,$n),vT(r),Il()&&await CS(r,t).catch(n=>{console.error("\u274C Failed to setup remote handlers:",n.message)}),r.on("disconnect",()=>{pT(r.id),kS()})}var re=K(require("fs"),1),gr=K(require("path"),1),zr=K(require("os"),1),zs=require("child_process"),qA=K(PA(),1);var dg=["node_modules",".git","dist","build",".next","coverage","__pycache__",".cache",".vscode",".idea",".turbo",".vercel",".output","out",".nuxt",".svelte-kit","target","vendor",".gradle",".pytest_cache",".mypy_cache",".tox",".venv","venv","env",".DS_Store",".parcel-cache",".rollup.cache"],Nu=[".png",".jpg",".jpeg",".gif",".webp",".ico",".svg",".bmp",".pdf",".zip",".tar",".gz",".rar",".7z",".exe",".dll",".so",".dylib",".mp3",".mp4",".wav",".avi",".mov",".webm",".woff",".woff2",".ttf",".eot",".otf",".sqlite",".db"];var IA=[".ssh",".aws",".gnupg",".kube",".docker",".cargo",".npmrc",".netrc",".pypirc",".config/gh",".config/gcloud"],NA=["/etc/shadow","/etc/sudoers","/etc/ssh","/root","/private/etc/sudoers"];var LA=K(require("fs"),1),va=K(require("path"),1),DA=K(require("os"),1);var BA=DA.default.homedir();function oH(r){if(!r)return null;let e=r.startsWith("~")?r.replace(/^~/,BA):r;try{return LA.default.realpathSync(e)}catch{return va.default.resolve(e)}}function _n(r){let e=oH(r);if(!e)return!1;for(let t of NA)if(e===t||e.startsWith(t+va.default.sep))return!0;for(let t of IA){let n=va.default.join(BA,t);if(e===n||e.startsWith(n+va.default.sep))return!0}return!1}function Lu(r){return dg.includes(r)}function Vs(r){return Nu.includes(gr.default.extname(r).toLowerCase())}function cH(r,e){return r.isDirectory()?"folder":Vs(e)?"binary":"file"}function ya(r){return r<1024?`${r}B`:r<1024*1024?`${(r/1024).toFixed(1)}KB`:`${(r/(1024*1024)).toFixed(1)}MB`}function HA(r,e,t,n=50){if(!(t.length>=n))try{for(let i of re.default.readdirSync(r)){if(t.length>=n)return;if(i.startsWith(".")||Lu(i))continue;let s=gr.default.join(r,i);try{let o=re.default.statSync(s);o.isDirectory()?HA(s,e,t,n):i.toLowerCase().includes(e.toLowerCase())&&t.push({name:i,path:s,type:Vs(i)?"binary":"file",size:o.size,sizeFormatted:ya(o.size)})}catch{}}}catch{}}function UA(r){if(!r)return null;let e=r.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"::ANY::").replace(/\*/g,"[^/]*").replace(/::ANY::/g,".*").replace(/\?/g,".");return new RegExp(`^${e}$`)}function $A(r,e,t,n,i,s){if(s.length>=200)return;let o;try{o=re.default.readdirSync(r,{withFileTypes:!0})}catch{return}for(let a of o){if(s.length>=200)return;if(Lu(a.name))continue;let c=gr.default.join(r,a.name),l=gr.default.relative(e,c);if(a.isDirectory()){$A(c,e,t,n,i,s);continue}if(a.isFile()&&!Vs(a.name)&&!(i&&i.test(l))&&!(n&&!n.test(l)))try{if(re.default.statSync(c).size>512e3)continue;let h=re.default.readFileSync(c,"utf-8").split(`
134
+ `}function jF(){let r=vn.opencode(),e=Ft.default.dirname(r);return ht.default.existsSync(e)||ht.default.mkdirSync(e,{recursive:!0}),ht.default.writeFileSync(r,BF(),"utf8"),{success:!0}}function FF(r){switch(r){case"claude":{let e=ia(vn.claude());return!!(e.hooks?.Stop||e.hooks?.Notification)}case"codex":{let e=vn.codex();return ht.default.existsSync(e)&&ht.default.readFileSync(e,"utf8").includes("# 9Remote notification")}case"gemini":{let e=ia(vn.gemini());return!!(e.hooks?.AfterAgent||e.hooks?.Notification)}case"opencode":return ht.default.existsSync(vn.opencode());default:return!1}}function UF(r){let e=OF[r]?.();return e?(Array.isArray(e)?e:[e]).some(n=>ht.default.existsSync(n)):!1}var qF={claude:MF,codex:LF,gemini:DF,opencode:jF};var HF=vv;function $F(r){return qF[r]?.()||{success:!1,error:"Unknown tool"}}function wT(){let r={};for(let e of HF)if(!(!UF(e)||FF(e)))try{r[e]=$F(e).success}catch{r[e]=!1}return r}function ST(){let r=vn.claude(),e=ia(r);if(!e.hooks?.Stop&&!e.hooks?.Notification)return;let t=e.env||{};Object.keys(io).some(i=>t[i]!==io[i])&&(bT(e),hu(r,e))}ui();var mG=(0,TT.dirname)((0,CT.fileURLToPath)(__importMetaUrl)),gG=to.rgb(230,138,110),hm="daemon",WF="2.0.67",$n=new Map,AT=new Map,RT={};async function ET(){let r=await Al(),e=new Map(r.map(n=>[n.id,n])),t=Rh();for(let n of r)if(!t[n.id])try{await pi(n.id)}catch{}$n.clear();for(let[n,i]of Object.entries(t)){let s=e.get(n);$n.set(n,{daemon:!0,name:i.name,createdAt:i.createdAt,shellId:i.shellId,cwd:s?.cwd||i.cwd,needsRespawn:!s})}mn($n)}async function kT(){let r=DS();for(let n of r.groups)AT.set(n.id,n);Object.assign(RT,r.sessionGroups);try{ST()}catch{}try{wT()}catch{}if(hm==="daemon")if(!await qw())console.error("\u274C Failed to connect to PTY daemon, falling back to buffer mode");else{await ET(),Tl("connected",()=>{ET().catch(()=>{})});return}console.log("\u{1F4E6} Buffer persistence mode - scrollback enabled");let e=LS(),t=Rh();for(let n of e){let i=t[n]||{};$n.set(n,{pty:null,name:i.name||`Terminal ${$n.size+1}`,createdAt:i.createdAt||Date.now(),buffer:[],needsRestore:!0}),console.log(`\u{1F504} Found saved session: ${n}`)}e.length>0&&console.log(`\u2705 Found ${e.length} saved session(s)`)}function Fs(r,e){hm==="daemon"&&(Tl("output",({sessionId:i,data:s})=>bt(r,"output",{sessionId:i,data:s})),Tl("sessionClosed",i=>{$n.delete(i),du(i),bt(r,"sessionClosed",i),bt(r,"notificationCleared",i)}));let t=()=>({version:WF,remoteAvailable:xs(),daemonMode:hm==="daemon"&&Tr(),platform:process.platform,updateAvailable:aw(),canSelfUpdate:!0,...AS()}),n=()=>{let i=t();for(let s of r.sockets.sockets.values())s.data?.approved&&s.emit("serverInfo",i)};uw(n),Fs._buildServerInfo=t,Fs._emitServerInfo=n}function OT(){Fs._emitServerInfo?.()}var MT=null;function PT(r){MT=r}async function IT(r,e,t){RS(),MT?.(),r.emit("serverInfo",Fs._buildServerInfo?.()),US(r,e,$n,AT,RT),$S(r,$n),vT(r),Il()&&await CS(r,t).catch(n=>{console.error("\u274C Failed to setup remote handlers:",n.message)}),r.on("disconnect",()=>{pT(r.id),kS()})}var re=K(require("fs"),1),gr=K(require("path"),1),zr=K(require("os"),1),zs=require("child_process"),qA=K(PA(),1);var dg=["node_modules",".git","dist","build",".next","coverage","__pycache__",".cache",".vscode",".idea",".turbo",".vercel",".output","out",".nuxt",".svelte-kit","target","vendor",".gradle",".pytest_cache",".mypy_cache",".tox",".venv","venv","env",".DS_Store",".parcel-cache",".rollup.cache"],Nu=[".png",".jpg",".jpeg",".gif",".webp",".ico",".svg",".bmp",".pdf",".zip",".tar",".gz",".rar",".7z",".exe",".dll",".so",".dylib",".mp3",".mp4",".wav",".avi",".mov",".webm",".woff",".woff2",".ttf",".eot",".otf",".sqlite",".db"];var IA=[".ssh",".aws",".gnupg",".kube",".docker",".cargo",".npmrc",".netrc",".pypirc",".config/gh",".config/gcloud"],NA=["/etc/shadow","/etc/sudoers","/etc/ssh","/root","/private/etc/sudoers"];var LA=K(require("fs"),1),va=K(require("path"),1),DA=K(require("os"),1);var BA=DA.default.homedir();function oH(r){if(!r)return null;let e=r.startsWith("~")?r.replace(/^~/,BA):r;try{return LA.default.realpathSync(e)}catch{return va.default.resolve(e)}}function _n(r){let e=oH(r);if(!e)return!1;for(let t of NA)if(e===t||e.startsWith(t+va.default.sep))return!0;for(let t of IA){let n=va.default.join(BA,t);if(e===n||e.startsWith(n+va.default.sep))return!0}return!1}function Lu(r){return dg.includes(r)}function Vs(r){return Nu.includes(gr.default.extname(r).toLowerCase())}function cH(r,e){return r.isDirectory()?"folder":Vs(e)?"binary":"file"}function ya(r){return r<1024?`${r}B`:r<1024*1024?`${(r/1024).toFixed(1)}KB`:`${(r/(1024*1024)).toFixed(1)}MB`}function HA(r,e,t,n=50){if(!(t.length>=n))try{for(let i of re.default.readdirSync(r)){if(t.length>=n)return;if(i.startsWith(".")||Lu(i))continue;let s=gr.default.join(r,i);try{let o=re.default.statSync(s);o.isDirectory()?HA(s,e,t,n):i.toLowerCase().includes(e.toLowerCase())&&t.push({name:i,path:s,type:Vs(i)?"binary":"file",size:o.size,sizeFormatted:ya(o.size)})}catch{}}}catch{}}function UA(r){if(!r)return null;let e=r.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,"::ANY::").replace(/\*/g,"[^/]*").replace(/::ANY::/g,".*").replace(/\?/g,".");return new RegExp(`^${e}$`)}function $A(r,e,t,n,i,s){if(s.length>=200)return;let o;try{o=re.default.readdirSync(r,{withFileTypes:!0})}catch{return}for(let a of o){if(s.length>=200)return;if(Lu(a.name))continue;let c=gr.default.join(r,a.name),l=gr.default.relative(e,c);if(a.isDirectory()){$A(c,e,t,n,i,s);continue}if(a.isFile()&&!Vs(a.name)&&!(i&&i.test(l))&&!(n&&!n.test(l)))try{if(re.default.statSync(c).size>512e3)continue;let h=re.default.readFileSync(c,"utf-8").split(`
135
135
  `),v=[];for(let x=0;x<h.length&&v.length<10;x++){let S=h[x],A=t(S);for(let k of A){if(v.length>=10)break;v.push({line:x+1,column:k.column+1,lineText:S,matchLength:k.length})}}v.length&&s.push({path:c,matches:v})}catch{}}}function WA(r,e,t){let n;try{n=re.default.readdirSync(r,{withFileTypes:!0})}catch{return[]}let i=[];for(let s of n){if(!t&&s.name.startsWith(".")&&s.name!==".env"&&s.name!==".env.example"||Lu(s.name))continue;let o=gr.default.join(r,s.name);if(s.isDirectory()){let a={name:s.name,path:o,type:"folder"};e>0&&(a.children=WA(o,e-1,t)),i.push(a)}else s.isFile()&&i.push({name:s.name,path:o,type:Vs(s.name)?"binary":"file"})}return i.sort((s,o)=>s.type==="folder"&&o.type!=="folder"?-1:s.type!=="folder"&&o.type==="folder"?1:s.name.localeCompare(o.name)),i}function lH(){if(process.platform!=="win32")return[];try{return(0,zs.execSync)("wmic logicaldisk get name",{encoding:"utf-8",stdio:["pipe","pipe","pipe"],windowsHide:!0}).split(/\r?\n/).map(e=>e.trim()).filter(e=>/^[A-Z]:$/.test(e)).map(e=>({letter:e[0],path:e+"\\"}))}catch{return"CDEFGHIJ".split("").map(r=>`${r}:\\`).filter(r=>re.default.existsSync(r)).map(r=>({letter:r[0],path:r}))}}function GA(r){r.on("getSystemInfo",t=>{let n=process.platform;t({success:!0,platform:n,isWindows:n==="win32",drives:n==="win32"?lH():[],homedir:zr.default.homedir()})}),r.on("getFiles",({dirPath:t,showHidden:n},i)=>{try{let s=t||zr.default.homedir(),o=s.startsWith("~")?s.replace("~",zr.default.homedir()):s;if(_n(o))return i({success:!1,error:"Access denied"});if(!re.default.existsSync(o))return i({success:!1,error:"Directory not found"});let a=[];for(let c of re.default.readdirSync(o))if(!(!n&&c.startsWith(".")&&c!==".env"&&c!==".env.example")&&!Lu(c))try{let l=gr.default.join(o,c),p=re.default.statSync(l);a.push({name:c,path:l,type:cH(p,c),size:p.isFile()?p.size:null,sizeFormatted:p.isFile()?ya(p.size):null,modified:p.mtime.getTime()})}catch{}a.sort((c,l)=>c.type==="folder"&&l.type!=="folder"?-1:c.type!=="folder"&&l.type==="folder"?1:c.name.localeCompare(l.name)),i({success:!0,files:a,currentPath:o,parentPath:gr.default.dirname(o)})}catch(s){i({success:!1,error:s.message})}}),r.on("searchFiles",({workspace:t,query:n},i)=>{try{if(!n||n.length<2)return i({success:!0,files:[]});let s=(t||zr.default.homedir()).replace(/^~/,zr.default.homedir());if(!re.default.existsSync(s))return i({success:!1,error:"Workspace not found"});let o=[];HA(s,n,o,50),o.sort((a,c)=>{let l=a.name.toLowerCase()===n.toLowerCase(),p=c.name.toLowerCase()===n.toLowerCase();return l&&!p?-1:!l&&p?1:a.path.length-c.path.length}),i({success:!0,files:o})}catch(s){i({success:!1,error:s.message})}}),r.on("readFile",({filePath:t},n)=>{try{if(_n(t))return n({success:!1,error:"Access denied"});if(!re.default.existsSync(t))return n({success:!1,error:"File not found"});let i=re.default.statSync(t);if(i.size>512e3)return n({success:!1,error:`File too large (${ya(i.size)}). Max ${ya(512e3)}`});if(Vs(t))return n({success:!1,error:"Cannot open binary file"});n({success:!0,content:re.default.readFileSync(t,"utf-8")})}catch(i){n({success:!1,error:i.message})}}),r.on("readImage",({filePath:t},n)=>{try{if(_n(t))return n({success:!1,error:"Access denied"});if(!re.default.existsSync(t))return n({success:!1,error:"File not found"});let i=re.default.statSync(t),s=10*1024*1024;if(i.size>s)return n({success:!1,error:`Image too large (${ya(i.size)})`});let o=gr.default.extname(t).toLowerCase().slice(1),c={png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",webp:"image/webp",svg:"image/svg+xml",ico:"image/x-icon",bmp:"image/bmp"}[o]||"application/octet-stream",l=re.default.readFileSync(t),p=`data:${c};base64,${l.toString("base64")}`;n({success:!0,dataUrl:p,size:i.size,mime:c})}catch(i){n({success:!1,error:i.message})}}),r.on("writeFile",({filePath:t,content:n},i)=>{try{if(_n(t))return i({success:!1,error:"Access denied"});re.default.writeFileSync(t,n,"utf-8"),i({success:!0})}catch(s){i({success:!1,error:s.message})}}),r.on("createItem",({itemPath:t,type:n},i)=>{try{if(_n(t))return i({success:!1,error:"Access denied"});if(re.default.existsSync(t))return i({success:!1,error:"Item already exists"});n==="folder"?re.default.mkdirSync(t,{recursive:!0}):re.default.writeFileSync(t,"","utf-8"),i({success:!0})}catch(s){i({success:!1,error:s.message})}}),r.on("deleteItem",({itemPath:t},n)=>{try{if(_n(t))return n({success:!1,error:"Access denied"});if(!re.default.existsSync(t))return n({success:!1,error:"Item not found"});re.default.statSync(t).isDirectory()?re.default.rmSync(t,{recursive:!0}):re.default.unlinkSync(t),n({success:!0})}catch(i){n({success:!1,error:i.message})}}),r.on("renameItem",({oldPath:t,newPath:n},i)=>{try{if(_n(t)||_n(n))return i({success:!1,error:"Access denied"});if(!re.default.existsSync(t))return i({success:!1,error:"Item not found"});if(re.default.existsSync(n))return i({success:!1,error:"Target already exists"});re.default.renameSync(t,n),i({success:!0})}catch(s){i({success:!1,error:s.message})}}),r.on("searchInFiles",({workspace:t,query:n,caseSensitive:i,regex:s,includeGlob:o,excludeGlob:a},c)=>{try{if(!n)return c({success:!0,results:[]});let l=(t||zr.default.homedir()).replace(/^~/,zr.default.homedir());if(!re.default.existsSync(l))return c({success:!1,error:"Workspace not found"});let p;if(s){let x;try{x=new RegExp(n,i?"g":"gi")}catch(S){return c({success:!1,error:`Invalid regex: ${S.message}`})}p=S=>{let A=[],k;for(x.lastIndex=0;(k=x.exec(S))!==null;)A.push({column:k.index,length:k[0].length}),k.index===x.lastIndex&&x.lastIndex++;return A}}else{let x=i?n:n.toLowerCase();p=S=>{let A=i?S:S.toLowerCase(),k=[],P=0;for(;(P=A.indexOf(x,P))!==-1;)k.push({column:P,length:x.length}),P+=x.length||1;return k}}let f=UA(o),h=UA(a),v=[];$A(l,l,p,f,h,v),c({success:!0,results:v})}catch(l){c({success:!1,error:l.message})}}),r.on("replaceInFiles",({workspace:t,query:n,replacement:i,caseSensitive:s,regex:o,files:a},c)=>{try{if(!n||!Array.isArray(a)||!a.length)return c({success:!0,replacedCount:0,fileCount:0});let l;if(o){let h;try{h=new RegExp(n,s?"g":"gi")}catch(v){return c({success:!1,error:`Invalid regex: ${v.message}`})}l=v=>{let x=0;return{next:v.replace(h,A=>(x++,i)),count:x}}}else l=h=>{let v=0,x=s?"g":"gi",S=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),A=new RegExp(S,x);return{next:h.replace(A,()=>(v++,i)),count:v}};let p=0,f=0;for(let h of a)try{if(!re.default.existsSync(h)||Vs(h))continue;let v=re.default.statSync(h);if(!v.isFile()||v.size>512e3)continue;let x=re.default.readFileSync(h,"utf-8"),{next:S,count:A}=l(x);A>0&&(re.default.writeFileSync(h,S,"utf-8"),p+=A,f++)}catch{}c({success:!0,replacedCount:p,fileCount:f})}catch(l){c({success:!1,error:l.message})}});let e=new Map;r.on("watchDir",({dirPath:t},n)=>{try{if(!t||!re.default.existsSync(t))return n({success:!1,error:"Directory not found"});let i=e.get(t);if(i)return i.count++,n({success:!0});let s=qA.default.watch(t,{depth:0,ignoreInitial:!0,persistent:!0,ignored:a=>dg.includes(gr.default.basename(a))}),o=a=>c=>r.emit("fileChange",{type:a,path:c});s.on("add",o("add")).on("change",o("change")).on("unlink",o("unlink")).on("addDir",o("addDir")).on("unlinkDir",o("unlinkDir")),e.set(t,{w:s,count:1}),n({success:!0})}catch(i){n({success:!1,error:i.message})}}),r.on("unwatchDir",({dirPath:t},n)=>{try{let i=e.get(t);i&&--i.count<=0&&(i.w.close(),e.delete(t)),n({success:!0})}catch(i){n({success:!1,error:i.message})}}),r.once("disconnect",()=>{for(let{w:t}of e.values())try{t.close()}catch{}e.clear()}),r.on("revealInOS",({filePath:t},n)=>{try{if(!t)return n({success:!1,error:"No path"});let i=process.platform,s,o;i==="darwin"?(s="open",o=["-R",t]):i==="win32"?(s="explorer",o=[`/select,${t}`]):(s="xdg-open",o=[gr.default.dirname(t)]);let a=(0,zs.spawn)(s,o,{detached:!0,stdio:"ignore",windowsHide:!0});a.on("error",c=>n({success:!1,error:c.message})),a.unref(),n({success:!0})}catch(i){n({success:!1,error:i.message})}}),r.on("openInTerminal",({dirPath:t},n)=>{try{if(!t||!re.default.existsSync(t))return n({success:!1,error:"Directory not found"});let i=process.platform,s,o,a={detached:!0,stdio:"ignore",windowsHide:!0};i==="darwin"?(s="open",o=["-a","Terminal",t]):i==="win32"?(s="cmd",o=["/C","start","cmd","/K",`cd /d "${t}"`],a.shell=!1):(s="gnome-terminal",o=[`--working-directory=${t}`]);let c=(0,zs.spawn)(s,o,a);c.on("error",()=>{if(i==="linux"){let l=(0,zs.spawn)("xterm",["-e",`cd "${t}" && bash`],a);l.on("error",p=>n({success:!1,error:p.message})),l.unref()}else n({success:!1,error:"Failed to open terminal"})}),c.unref(),n({success:!0})}catch(i){n({success:!1,error:i.message})}}),r.on("getFileTree",({dirPath:t,depth:n,showHidden:i},s)=>{try{let o=(t||zr.default.homedir()).replace(/^~/,zr.default.homedir());if(!re.default.existsSync(o))return s({success:!1,error:"Directory not found"});let c=WA(o,typeof n=="number"?n:3,!!i);s({success:!0,tree:{name:gr.default.basename(o)||o,path:o,type:"folder",children:c}})}catch(o){s({success:!1,error:o.message})}})}var qt=K(require("fs"),1),Si=K(require("path"),1),vr=require("child_process");function wi(r,e){return new Promise(t=>{let n=(0,vr.spawn)("git",r,{cwd:e,windowsHide:!0}),i="",s="";n.stdout.on("data",o=>{i+=o.toString()}),n.stderr.on("data",o=>{s+=o.toString()}),n.on("error",o=>t({code:-1,stdout:i,stderr:o.message})),n.on("close",o=>t({code:o,stdout:i,stderr:s}))})}function zA(r){return Nu.includes(Si.default.extname(r).toLowerCase())}function VA(r){r.on("gitStatus",({repoPath:e},t)=>{try{let n=(0,vr.execSync)("git status --porcelain",{cwd:e,encoding:"utf-8",stdio:["pipe","pipe","pipe"],windowsHide:!0}),i={};try{(0,vr.execSync)("git diff HEAD --numstat",{cwd:e,encoding:"utf-8",stdio:["pipe","pipe","pipe"],windowsHide:!0}).trim().split(`
136
136
  `).filter(Boolean).forEach(a=>{let c=a.split(" ");c.length>=3&&(i[c[2]]={added:c[0]==="-"?0:parseInt(c[0],10)||0,deleted:c[1]==="-"?0:parseInt(c[1],10)||0})})}catch{}let s=[];for(let o of n.trim().split(`
137
137
  `).filter(Boolean)){let a=o.match(/^([MADRCU?! ]{1,2})\s+(.+)$/);if(!a)continue;let c=a[1],l=a[2];if(!l)continue;let p;c.includes("?")?p="?":c.includes("A")?p="A":c.includes("D")?p="D":c.includes("M")?p="M":c.includes("R")?p="R":p=c.trim()[0]||"?";let f=i[l]||{added:0,deleted:0};if(p==="?")try{let h=Si.default.join(e,l);if(qt.default.existsSync(h)&&!zA(l)){let v=qt.default.readFileSync(h,"utf-8");f.added=v.split(`
@@ -262,7 +262,7 @@ self.addEventListener('fetch', (event) => {
262
262
  </body>
263
263
  </html>
264
264
  `);return}e._proxyTargetPort=n,e.url=i+(s||""),r.web(e,t,{target:`http://localhost:${n}`,changeOrigin:!0},o=>{t.writeHead(502),t.end(`Bad Gateway: ${o.message}`)})}var ok=K(require("http"),1),ak=K(require("https"),1),ck=require("child_process"),lk=require("util"),VH=(0,lk.promisify)(ck.exec);async function KH(){let r=process.platform,e=new Set([80,443]);try{let t;if(r==="win32")t="netstat -ano | findstr LISTENING";else{let s="/dev/null";t=`lsof -iTCP -sTCP:LISTEN -P -n 2>${s} || netstat -tlnp 2>${s}`}let{stdout:n}=await VH(t),i=n.split(`
265
- `);for(let s of i){let o=s.match(/[:\*\]](\d{2,5})(?:\s|$)/g);if(o)for(let a of o){let c=parseInt(a.replace(/[:\*\]\s]/g,""),10);c>0&&c<=65535&&(c===80||c===443||c>=1024)&&e.add(c)}}return Array.from(e)}catch(t){return console.error("Failed to get listening ports:",t.message),[80,443,3e3,3001,4200,5e3,5173,8e3,8080,9e3]}}function YH(r,e=2e3){return new Promise(t=>{let n=ok.default.request({host:"localhost",port:r,method:"GET",path:"/",timeout:e},i=>{i.on("data",()=>{}),i.on("end",()=>{}),t({active:!0,protocol:"http",status:i.statusCode})});n.on("error",i=>{t({active:!1,error:i.message})}),n.on("timeout",()=>{n.destroy(),t({active:!1,error:"timeout"})}),n.end()})}function JH(r,e=2e3){return new Promise(t=>{let n=ak.default.request({host:"localhost",port:r,method:"GET",path:"/",timeout:e,rejectUnauthorized:!1},i=>{i.on("data",()=>{}),i.on("end",()=>{}),t({active:!0,protocol:"https",status:i.statusCode})});n.on("error",i=>{t({active:!1,error:i.message})}),n.on("timeout",()=>{n.destroy(),t({active:!1,error:"timeout"})}),n.end()})}async function XH(r){let[e,t]=await Promise.all([YH(r),JH(r)]);return t.active?{port:r,...t}:e.active?{port:r,...e}:{port:r,active:!1}}async function uk(){let r=await KH();return(await Promise.all(r.map(t=>XH(t)))).filter(t=>t.active).map(t=>({port:t.port,protocol:t.protocol,url:`${t.protocol}://localhost:${t.port}`,name:`localhost:${t.port}`,status:t.status})).sort((t,n)=>t.port-n.port)}var pk=K(require("crypto"),1),ZH=process.env.API_KEY_SECRET||"9remote-api-key-secret";function QH(){let r="abcdefghijklmnopqrstuvwxyz0123456789",e="";for(let t=0;t<4;t++)e+=r.charAt(Math.floor(Math.random()*r.length));return e}function fk(r,e){return pk.default.createHmac("sha256",ZH).update(r+e).digest("hex").slice(0,6)}function dk(r){let e=r.slice(0,8),t=QH(),n=fk(e,t);return{key:`sk-${e}-${t}-${n}`,keyId:t}}function e$(r){if(!r||!r.startsWith("sk-"))return null;let e=r.split("-");if(e.length===4){let[,t,n,i]=e,s=fk(t,n);return i!==s?null:{machineId:t,keyId:n}}return null}function Gu(r){return e$(r)!==null}async function hk(r,e){let t=r.headers.authorization;if(!t||!t.startsWith("Bearer ")){e.setHeader("Content-Type","application/json"),e.writeHead(401),e.end(JSON.stringify({error:"Unauthorized: Missing API key"}));return}let n=t.slice(7);if(!Gu(n)){e.setHeader("Content-Type","application/json"),e.writeHead(401),e.end(JSON.stringify({error:"Unauthorized: Invalid API key"}));return}let i=await uk();e.setHeader("Content-Type","application/json"),e.writeHead(200),e.end(JSON.stringify(i))}nl();var vk=require("url");var zu=K(require("path"),1),yk=K(require("os"),1);vt();var mk=K(require("path"),1),gk=K(require("os"),1);var $z=mk.default.join(gk.default.homedir(),".9remote","pids");Kd();var ka={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"};var zz={orange:to.rgb(230,138,110),orangeDim:to.rgb(200,120,95)};var eV=zu.default.dirname((0,vk.fileURLToPath)(__importMetaUrl));var tV=zu.default.join(yk.default.homedir(),".9remote","cloudflared.pid");function xk(r,e){let t=r.split(".").map(Number),n=e.split(".").map(Number);for(let i=0;i<3;i++){if(n[i]>t[i])return!0;if(n[i]<t[i])return!1}return!1}var rV=zu.default.join(ie.STATE,ka.lockFile);pn();Pt();vt();hs();var bk=K(_k(),1),Lg=K(require("crypto"),1),{machineIdSync:t$}=bk.default;async function wk(r=null){let e=r||process.env.MACHINE_ID_SALT||"9remote-salt";try{let t=t$();return Lg.default.createHash("sha256").update(t+e).digest("hex").substring(0,16)}catch(t){return console.error("Error getting machine ID:",t),Lg.default.randomUUID().replace(/-/g,"").substring(0,16)}}pn();async function Sk(r,e){let t=sw(),n=t.workerUrl||"https://9remote.cc";if(!t.permanentKey){ce(e,400,"No permanent key set");return}try{let s=await(await so(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.permanentKey,expiryMinutes:30})})).json(),o=`${n}/login?k=${s.tempKey}`;un({oneTimeKey:s.tempKey,oneTimeKeyExpiresAt:s.expiresAt,qrUrl:o}),X(e,{oneTimeKey:s.tempKey,expiresAt:s.expiresAt,qrUrl:o})}catch(i){ce(e,500,i.message)}}async function Ek(r,e){try{let t=await wk(),{key:n}=dk(t),i=Ub();qb(t,n,i?.name||"Default"),un({permanentKey:n}),X(e,{ok:!0,permanentKey:n})}catch(t){ce(e,500,t.message)}}Pt();async function Tk(r,e){let t=await Mt(r,e);if(!t)return;let n=hR(t.socketId);X(e,{ok:n})}async function Ck(r,e){let t=await Mt(r,e);if(!t)return;let n=gR(t.socketId);X(e,{ok:n})}function Ak(r,e){X(e,{pending:sR()})}function Rk(r,e){X(e,{devices:rR()})}function kk(r,e){X(e,{rejected:lR()})}async function Ok(r,e){let t=await Mt(r,e);if(!t)return;let n=mR(t.deviceId);X(e,{ok:n})}async function Mk(r,e){let t=await Mt(r,e);t&&(Uu(t.deviceId),Js(t.deviceId),X(e))}async function Pk(r,e){let t=await Mt(r,e);t&&(Uu(t.deviceId),eR(t.deviceId),X(e))}async function Ik(r,e){let t=await Mt(r,e);if(!t)return;let n=Uu(t.deviceId);X(e,{disconnected:n})}function Nk(r,e){X(e,{enabled:Fu()})}async function Lk(r,e){let t=await Mt(r,e);if(!t)return;let n=tR(t.deviceId,t.label);X(e,{ok:n})}async function Dk(r,e){let t=await Mt(r,e);if(!t)return;let n=pR(!!t.enabled);X(e,{enabled:n})}Pt();ui();var Bk={},r$=1e4;function jk(r,e){if(e)return{type:e.type||"stop",sessionId:e.sessionId||"",tool:e.tool||"claude"};let t=JSON.parse(r||"{}");return{type:t.type||"stop",sessionId:t.sessionId||"",tool:t.tool||"claude"}}async function Fk(r,e){let t="";await new Promise(n=>{r.on("data",i=>t+=i),r.on("end",n)});try{qk(jk(t,null)),X(e,{success:!0})}catch{ce(e,400,"Invalid JSON")}}function Uk(r,e,{query:t}){qk(jk(null,t)),X(e,{success:!0})}function qk({type:r,sessionId:e,tool:t}){let n=Date.now(),i=ba();if(!i||!e)return;let s={type:r,sessionId:e,tool:t,timestamp:n};if(mT(e,s),bt(i,"chatNotification",s),!lT())return;let o=`${e}:${r}`;n-(Bk[o]||0)<r$||(Bk[o]=n,dT(s))}Pt();hl();hs();at();pn();function Hk(){return{mode:eh(),active:Qd(),presets:Object.keys($.sleepInhibit?.presets||{})}}function $k(r,e){X(e,Hk())}async function Wk(r,e){let t=await Mt(r,e);if(!t)return;let n=$o(t.mode);Fb({sleepInhibitMode:n});let i=Hk();_t("sleepInhibit",i),X(e,i)}Pt();async function Gk(r,e){try{let t=await Al();X(e,{sessions:t})}catch(t){ce(e,500,t.message)}}async function zk(r,e){let t=await Mt(r,e);if(t){if(!t.sessionId)return ce(e,400,"sessionId required");try{await pi(t.sessionId),X(e)}catch(n){ce(e,500,n.message)}}}var Sn=K(require("os"),1);at();Pt();function n$(){let r=xS();if(!r?.activeClients)return{total:0,streaming:0};let e=0;for(let t of r.activeClients.values())t.isStreaming&&e++;return{total:r.activeClients.size,streaming:e}}function i$(){let r=process.memoryUsage(),e=Sn.default.cpus();return{agent:{pid:process.pid,version:"2.0.66",nodeVersion:process.version,platform:`${process.platform}/${process.arch}`,uptimeSec:Math.round(process.uptime()),memory:{heapUsedMB:Math.round(r.heapUsed/1048576*10)/10,heapTotalMB:Math.round(r.heapTotal/1048576*10)/10,rssMB:Math.round(r.rss/1048576*10)/10,externalMB:Math.round(r.external/1048576*10)/10}},os:{hostname:Sn.default.hostname(),platform:Sn.default.platform(),arch:Sn.default.arch(),uptimeSec:Math.round(Sn.default.uptime()),loadAvg:Sn.default.loadavg(),cpuModel:e?.[0]?.model||"unknown",cpuCount:e.length,totalMemMB:Math.round(Sn.default.totalmem()/1048576),freeMemMB:Math.round(Sn.default.freemem()/1048576)},remote:{available:Il(),...n$(),memoryWarningThresholdMB:$.resourceManagement.memoryWarningThreshold},timestamp:Date.now()}}function Vk(r,e){try{X(e,i$())}catch(t){ce(e,500,"stats error",t.message)}}hl();hs();at();bv();var Wn=Tn("server"),Gn=(0,Xk.fileURLToPath)(new URL(".",__importMetaUrl)),Zk=process.env.NODE_ENV==="development",s$=5173,Dg=(0,Ri.existsSync)((0,Zt.join)(Gn,"ui","dist"))?(0,Zt.join)(Gn,"ui","dist"):(0,Zt.join)(Gn,"ui"),o$={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".png":"image/png",".ico":"image/x-icon",".woff2":"font/woff2",".woff":"font/woff"};function a$(r,e,t){let n=(0,Vu.request)({hostname:"localhost",port:s$,path:r.url,method:r.method,headers:r.headers},i=>{e.writeHead(i.statusCode,i.headers),i.pipe(e)});n.on("error",()=>t?t():void(e.writeHead(502),e.end("Vite dev server not ready"))),r.pipe(n)}function Kk(r,e){if(!(0,Ri.existsSync)(e))return!1;let t=o$[(0,Zt.extname)(e)]||"application/octet-stream";return r.setHeader("Content-Type",t),r.writeHead(200),r.end((0,Ri.readFileSync)(e)),!0}async function Bg(r){try{let e=await so(_p);if(!e.ok)return;let{version:t}=await e.json();t&&xk(r,t)&&(cw({version:t}),_t("updateAvailable",{version:t}),OT())}catch{}}var Yk=0;function c$(r){let e=Date.now();e-Yk<ka.connectCheckDebounceMs||(Yk=e,Bg(r))}function l$(r,e){if(process.env.CODESPACES!=="true"){ce(e,400,"Not running on Codespaces");return}let t=process.env.CODESPACE_NAME;if(!t){ce(e,400,"Codespace name not found");return}let n=ba();n&&n.emit("codespace:stopping"),X(e,{success:!0,message:"Stopping codespace..."}),setTimeout(()=>(0,Ku.execFile)("gh",["codespace","stop","-c",t],{windowsHide:!0}),500)}var Qk;async function Jk(r,e,{pathname:t}){let n=r.headers.authorization;if(!n||!n.startsWith("Bearer ")||!Gu(n.slice(7))){ce(e,401,"Unauthorized");return}let{parseJsonBody:i}=await Promise.resolve().then(()=>(Pt(),Mi)),s=await i(r,e);if(s){if(!s.port){ce(e,400,"Port required");return}t.endsWith("start")?rk(s.port):nk(s.port),X(e,{success:!0})}}function u$(r,e,{pathname:t,search:n}){let i=t.match(/^\/proxy\/(\d+)(\/.*)?$/);i?sk(Qk,r,e,i[1],i[2]||"/",n):ce(e,404,"Not found")}var p$=[{path:"/api/health",method:"GET",public:!0,handler:(r,e)=>X(e,{status:"ok",timestamp:Date.now()})},{path:"/api/version",method:"GET",public:!0,handler:(r,e)=>{X(e,{version:"2.0.66"})}},{path:"/api/notify",method:"POST",public:!0,handler:Fk},{path:"/api/notify",method:"GET",public:!0,handler:Uk},{path:"/proxy/*",method:"*",public:!0,handler:u$},{path:"/api/ui/events",method:"GET",handler:mw},{path:"/api/local-token",method:"GET",handler:pw},{path:"/api/ui/state",method:"GET",handler:gw},{path:"/api/ui/state",method:"POST",handler:vw},{path:"/api/ui/stop",method:"POST",handler:yw},{path:"/api/ui/start",method:"POST",handler:xw},{path:"/api/ui/stop-tunnel",method:"POST",handler:_w},{path:"/api/ui/shutdown",method:"POST",handler:bw},{path:"/api/update",method:"POST",handler:ww},{path:"/api/system/stats",method:"GET",handler:Vk},{path:"/api/key/one-time",method:"POST",handler:Sk},{path:"/api/key/regenerate",method:"POST",handler:Ek},{path:"/api/device/approve",method:"POST",handler:Tk},{path:"/api/device/reject",method:"POST",handler:Ck},{path:"/api/device/pending",method:"GET",handler:Ak},{path:"/api/device/approved",method:"GET",handler:Rk},{path:"/api/device/rejected",method:"GET",handler:kk},{path:"/api/device/approve-rejected",method:"POST",handler:Ok},{path:"/api/device/clear-rejected",method:"POST",handler:Mk},{path:"/api/device/remove",method:"POST",handler:Pk},{path:"/api/device/label",method:"POST",handler:Lk},{path:"/api/device/disconnect",method:"POST",handler:Ik},{path:"/api/device/auto-approve",method:"GET",handler:Nk},{path:"/api/device/auto-approve",method:"POST",handler:Dk},{path:"/api/connections",method:"GET",handler:Sw},{path:"/api/logs",method:"GET",handler:Ew},{path:"/api/permissions",method:"GET",handler:Cw},{path:"/api/permissions/request",method:"POST",handler:kw},{path:"/api/desktop/toggle",method:"POST",handler:Tw},{path:"/api/autostart",method:"GET",handler:Aw},{path:"/api/autostart",method:"POST",handler:Rw},{path:"/api/sleep-inhibit",method:"GET",handler:$k},{path:"/api/sleep-inhibit",method:"POST",handler:Wk},{path:"/api/sessions",method:"GET",handler:Gk},{path:"/api/sessions/delete",method:"POST",handler:zk},{path:"/api/local-sites",method:"*",public:!0,handler:hk},{path:"/api/codespace/stop",method:"POST",handler:l$},{path:"/api/proxy/start",method:"POST",public:!0,handler:Jk},{path:"/api/proxy/end",method:"POST",public:!0,handler:Jk}];var f$=parseInt(process.env.PORT||"2208",10),Ma=null;function d$(){if(!Zk)return;let r=(0,Zt.join)(Gn,"vite.config.js");if(!(0,Ri.existsSync)(r))return;let e=(0,Ri.existsSync)((0,Zt.join)(Gn,"node_modules",".bin","vite"))?(0,Zt.join)(Gn,"node_modules",".bin","vite"):(0,Zt.join)(Gn,"..","node_modules",".bin","vite");Ma=(0,Ku.spawn)("node",[e,"--config",r],{cwd:Gn,stdio:"ignore",detached:!1}),Ma.on("error",()=>{}),Ma.unref()}async function eO(){let r=Wd(),e=r.sleepInhibitMode;e||(r.sleepInhibit===!1?e="never":e=$.sleepInhibit?.defaultMode||"never"),$o(e),await kT(),Qk=ik(),d$();let n=yp(p$,{fallback:(a,c,{pathname:l})=>{if(l.startsWith("/api/")||l.startsWith("/socket.io")){ce(c,404,"Not found");return}let p=!!a.headers["cf-connecting-ip"],f=a.socket.remoteAddress==="127.0.0.1"||a.socket.remoteAddress==="::1";if(p||!f){ce(c,403,"Forbidden");return}let h=()=>{let v=l==="/"||l===""?(0,Zt.join)(Dg,"index.html"):(0,Zt.join)(Dg,l);Kk(c,v)||Kk(c,(0,Zt.join)(Dg,"index.html"))};if(Zk){a$(a,c,h);return}h()}}),i=(0,Vu.createServer)(async(a,c)=>{yR(c),!xR(a,c)&&await n(a,c)});Fd(),nw(),iw(),vl(),process.platform==="darwin"&&setInterval(vl,hv),await vR(i),i.listen(f$,a=>{if(a)throw a;let c="2.0.66";Bg(c),setInterval(()=>Bg(c),ka.checkIntervalMs),PT(()=>c$(c))});let s=!1,o=async a=>{if(s)return;s=!0,Zd(),Wn.info(`\u{1F6D1} Received ${a}, shutting down gracefully...`);let c=setTimeout(()=>{Wn.error("\u26A0\uFE0F Forced exit"),process.exit(1)},5e3);try{if(i.close(()=>Wn.info("\u2713 HTTP server closed")),Ma)try{Ma.kill()}catch{}let l=ba();l&&(l.emit("server:shutdown"),l.close(()=>Wn.info("\u2713 Socket.IO closed"))),await new Promise(p=>setTimeout(p,500)),clearTimeout(c),Wn.info("\u2705 Server stopped cleanly"),process.exit(0)}catch(l){Wn.error(`\u274C Error during shutdown: ${l?.message||l}`),clearTimeout(c),process.exit(1)}};return process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.platform==="win32"&&process.on("SIGBREAK",()=>o("SIGBREAK")),process.on("uncaughtException",a=>{Wn.error(`\u26A0\uFE0F uncaughtException: ${a?.stack||a}`)}),process.on("unhandledRejection",a=>{Wn.error(`\u26A0\uFE0F unhandledRejection: ${a?.stack||a}`)}),i}eO();0&&(module.exports={startServer});
265
+ `);for(let s of i){let o=s.match(/[:\*\]](\d{2,5})(?:\s|$)/g);if(o)for(let a of o){let c=parseInt(a.replace(/[:\*\]\s]/g,""),10);c>0&&c<=65535&&(c===80||c===443||c>=1024)&&e.add(c)}}return Array.from(e)}catch(t){return console.error("Failed to get listening ports:",t.message),[80,443,3e3,3001,4200,5e3,5173,8e3,8080,9e3]}}function YH(r,e=2e3){return new Promise(t=>{let n=ok.default.request({host:"localhost",port:r,method:"GET",path:"/",timeout:e},i=>{i.on("data",()=>{}),i.on("end",()=>{}),t({active:!0,protocol:"http",status:i.statusCode})});n.on("error",i=>{t({active:!1,error:i.message})}),n.on("timeout",()=>{n.destroy(),t({active:!1,error:"timeout"})}),n.end()})}function JH(r,e=2e3){return new Promise(t=>{let n=ak.default.request({host:"localhost",port:r,method:"GET",path:"/",timeout:e,rejectUnauthorized:!1},i=>{i.on("data",()=>{}),i.on("end",()=>{}),t({active:!0,protocol:"https",status:i.statusCode})});n.on("error",i=>{t({active:!1,error:i.message})}),n.on("timeout",()=>{n.destroy(),t({active:!1,error:"timeout"})}),n.end()})}async function XH(r){let[e,t]=await Promise.all([YH(r),JH(r)]);return t.active?{port:r,...t}:e.active?{port:r,...e}:{port:r,active:!1}}async function uk(){let r=await KH();return(await Promise.all(r.map(t=>XH(t)))).filter(t=>t.active).map(t=>({port:t.port,protocol:t.protocol,url:`${t.protocol}://localhost:${t.port}`,name:`localhost:${t.port}`,status:t.status})).sort((t,n)=>t.port-n.port)}var pk=K(require("crypto"),1),ZH=process.env.API_KEY_SECRET||"9remote-api-key-secret";function QH(){let r="abcdefghijklmnopqrstuvwxyz0123456789",e="";for(let t=0;t<4;t++)e+=r.charAt(Math.floor(Math.random()*r.length));return e}function fk(r,e){return pk.default.createHmac("sha256",ZH).update(r+e).digest("hex").slice(0,6)}function dk(r){let e=r.slice(0,8),t=QH(),n=fk(e,t);return{key:`sk-${e}-${t}-${n}`,keyId:t}}function e$(r){if(!r||!r.startsWith("sk-"))return null;let e=r.split("-");if(e.length===4){let[,t,n,i]=e,s=fk(t,n);return i!==s?null:{machineId:t,keyId:n}}return null}function Gu(r){return e$(r)!==null}async function hk(r,e){let t=r.headers.authorization;if(!t||!t.startsWith("Bearer ")){e.setHeader("Content-Type","application/json"),e.writeHead(401),e.end(JSON.stringify({error:"Unauthorized: Missing API key"}));return}let n=t.slice(7);if(!Gu(n)){e.setHeader("Content-Type","application/json"),e.writeHead(401),e.end(JSON.stringify({error:"Unauthorized: Invalid API key"}));return}let i=await uk();e.setHeader("Content-Type","application/json"),e.writeHead(200),e.end(JSON.stringify(i))}nl();var vk=require("url");var zu=K(require("path"),1),yk=K(require("os"),1);vt();var mk=K(require("path"),1),gk=K(require("os"),1);var $z=mk.default.join(gk.default.homedir(),".9remote","pids");Kd();var ka={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"};var zz={orange:to.rgb(230,138,110),orangeDim:to.rgb(200,120,95)};var eV=zu.default.dirname((0,vk.fileURLToPath)(__importMetaUrl));var tV=zu.default.join(yk.default.homedir(),".9remote","cloudflared.pid");function xk(r,e){let t=r.split(".").map(Number),n=e.split(".").map(Number);for(let i=0;i<3;i++){if(n[i]>t[i])return!0;if(n[i]<t[i])return!1}return!1}var rV=zu.default.join(ie.STATE,ka.lockFile);pn();Pt();vt();hs();var bk=K(_k(),1),Lg=K(require("crypto"),1),{machineIdSync:t$}=bk.default;async function wk(r=null){let e=r||process.env.MACHINE_ID_SALT||"9remote-salt";try{let t=t$();return Lg.default.createHash("sha256").update(t+e).digest("hex").substring(0,16)}catch(t){return console.error("Error getting machine ID:",t),Lg.default.randomUUID().replace(/-/g,"").substring(0,16)}}pn();async function Sk(r,e){let t=sw(),n=t.workerUrl||"https://9remote.cc";if(!t.permanentKey){ce(e,400,"No permanent key set");return}try{let s=await(await so(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.permanentKey,expiryMinutes:30})})).json(),o=`${n}/login?k=${s.tempKey}`;un({oneTimeKey:s.tempKey,oneTimeKeyExpiresAt:s.expiresAt,qrUrl:o}),X(e,{oneTimeKey:s.tempKey,expiresAt:s.expiresAt,qrUrl:o})}catch(i){ce(e,500,i.message)}}async function Ek(r,e){try{let t=await wk(),{key:n}=dk(t),i=Ub();qb(t,n,i?.name||"Default"),un({permanentKey:n}),X(e,{ok:!0,permanentKey:n})}catch(t){ce(e,500,t.message)}}Pt();async function Tk(r,e){let t=await Mt(r,e);if(!t)return;let n=hR(t.socketId);X(e,{ok:n})}async function Ck(r,e){let t=await Mt(r,e);if(!t)return;let n=gR(t.socketId);X(e,{ok:n})}function Ak(r,e){X(e,{pending:sR()})}function Rk(r,e){X(e,{devices:rR()})}function kk(r,e){X(e,{rejected:lR()})}async function Ok(r,e){let t=await Mt(r,e);if(!t)return;let n=mR(t.deviceId);X(e,{ok:n})}async function Mk(r,e){let t=await Mt(r,e);t&&(Uu(t.deviceId),Js(t.deviceId),X(e))}async function Pk(r,e){let t=await Mt(r,e);t&&(Uu(t.deviceId),eR(t.deviceId),X(e))}async function Ik(r,e){let t=await Mt(r,e);if(!t)return;let n=Uu(t.deviceId);X(e,{disconnected:n})}function Nk(r,e){X(e,{enabled:Fu()})}async function Lk(r,e){let t=await Mt(r,e);if(!t)return;let n=tR(t.deviceId,t.label);X(e,{ok:n})}async function Dk(r,e){let t=await Mt(r,e);if(!t)return;let n=pR(!!t.enabled);X(e,{enabled:n})}Pt();ui();var Bk={},r$=1e4;function jk(r,e){if(e)return{type:e.type||"stop",sessionId:e.sessionId||"",tool:e.tool||"claude"};let t=JSON.parse(r||"{}");return{type:t.type||"stop",sessionId:t.sessionId||"",tool:t.tool||"claude"}}async function Fk(r,e){let t="";await new Promise(n=>{r.on("data",i=>t+=i),r.on("end",n)});try{qk(jk(t,null)),X(e,{success:!0})}catch{ce(e,400,"Invalid JSON")}}function Uk(r,e,{query:t}){qk(jk(null,t)),X(e,{success:!0})}function qk({type:r,sessionId:e,tool:t}){let n=Date.now(),i=ba();if(!i||!e)return;let s={type:r,sessionId:e,tool:t,timestamp:n};if(mT(e,s),bt(i,"chatNotification",s),!lT())return;let o=`${e}:${r}`;n-(Bk[o]||0)<r$||(Bk[o]=n,dT(s))}Pt();hl();hs();at();pn();function Hk(){return{mode:eh(),active:Qd(),presets:Object.keys($.sleepInhibit?.presets||{})}}function $k(r,e){X(e,Hk())}async function Wk(r,e){let t=await Mt(r,e);if(!t)return;let n=$o(t.mode);Fb({sleepInhibitMode:n});let i=Hk();_t("sleepInhibit",i),X(e,i)}Pt();async function Gk(r,e){try{let t=await Al();X(e,{sessions:t})}catch(t){ce(e,500,t.message)}}async function zk(r,e){let t=await Mt(r,e);if(t){if(!t.sessionId)return ce(e,400,"sessionId required");try{await pi(t.sessionId),X(e)}catch(n){ce(e,500,n.message)}}}var Sn=K(require("os"),1);at();Pt();function n$(){let r=xS();if(!r?.activeClients)return{total:0,streaming:0};let e=0;for(let t of r.activeClients.values())t.isStreaming&&e++;return{total:r.activeClients.size,streaming:e}}function i$(){let r=process.memoryUsage(),e=Sn.default.cpus();return{agent:{pid:process.pid,version:"2.0.67",nodeVersion:process.version,platform:`${process.platform}/${process.arch}`,uptimeSec:Math.round(process.uptime()),memory:{heapUsedMB:Math.round(r.heapUsed/1048576*10)/10,heapTotalMB:Math.round(r.heapTotal/1048576*10)/10,rssMB:Math.round(r.rss/1048576*10)/10,externalMB:Math.round(r.external/1048576*10)/10}},os:{hostname:Sn.default.hostname(),platform:Sn.default.platform(),arch:Sn.default.arch(),uptimeSec:Math.round(Sn.default.uptime()),loadAvg:Sn.default.loadavg(),cpuModel:e?.[0]?.model||"unknown",cpuCount:e.length,totalMemMB:Math.round(Sn.default.totalmem()/1048576),freeMemMB:Math.round(Sn.default.freemem()/1048576)},remote:{available:Il(),...n$(),memoryWarningThresholdMB:$.resourceManagement.memoryWarningThreshold},timestamp:Date.now()}}function Vk(r,e){try{X(e,i$())}catch(t){ce(e,500,"stats error",t.message)}}hl();hs();at();bv();var Wn=Tn("server"),Gn=(0,Xk.fileURLToPath)(new URL(".",__importMetaUrl)),Zk=process.env.NODE_ENV==="development",s$=5173,Dg=(0,Ri.existsSync)((0,Zt.join)(Gn,"ui","dist"))?(0,Zt.join)(Gn,"ui","dist"):(0,Zt.join)(Gn,"ui"),o$={".html":"text/html",".js":"application/javascript",".css":"text/css",".svg":"image/svg+xml",".png":"image/png",".ico":"image/x-icon",".woff2":"font/woff2",".woff":"font/woff"};function a$(r,e,t){let n=(0,Vu.request)({hostname:"localhost",port:s$,path:r.url,method:r.method,headers:r.headers},i=>{e.writeHead(i.statusCode,i.headers),i.pipe(e)});n.on("error",()=>t?t():void(e.writeHead(502),e.end("Vite dev server not ready"))),r.pipe(n)}function Kk(r,e){if(!(0,Ri.existsSync)(e))return!1;let t=o$[(0,Zt.extname)(e)]||"application/octet-stream";return r.setHeader("Content-Type",t),r.writeHead(200),r.end((0,Ri.readFileSync)(e)),!0}async function Bg(r){try{let e=await so(_p);if(!e.ok)return;let{version:t}=await e.json();t&&xk(r,t)&&(cw({version:t}),_t("updateAvailable",{version:t}),OT())}catch{}}var Yk=0;function c$(r){let e=Date.now();e-Yk<ka.connectCheckDebounceMs||(Yk=e,Bg(r))}function l$(r,e){if(process.env.CODESPACES!=="true"){ce(e,400,"Not running on Codespaces");return}let t=process.env.CODESPACE_NAME;if(!t){ce(e,400,"Codespace name not found");return}let n=ba();n&&n.emit("codespace:stopping"),X(e,{success:!0,message:"Stopping codespace..."}),setTimeout(()=>(0,Ku.execFile)("gh",["codespace","stop","-c",t],{windowsHide:!0}),500)}var Qk;async function Jk(r,e,{pathname:t}){let n=r.headers.authorization;if(!n||!n.startsWith("Bearer ")||!Gu(n.slice(7))){ce(e,401,"Unauthorized");return}let{parseJsonBody:i}=await Promise.resolve().then(()=>(Pt(),Mi)),s=await i(r,e);if(s){if(!s.port){ce(e,400,"Port required");return}t.endsWith("start")?rk(s.port):nk(s.port),X(e,{success:!0})}}function u$(r,e,{pathname:t,search:n}){let i=t.match(/^\/proxy\/(\d+)(\/.*)?$/);i?sk(Qk,r,e,i[1],i[2]||"/",n):ce(e,404,"Not found")}var p$=[{path:"/api/health",method:"GET",public:!0,handler:(r,e)=>X(e,{status:"ok",timestamp:Date.now()})},{path:"/api/version",method:"GET",public:!0,handler:(r,e)=>{X(e,{version:"2.0.67"})}},{path:"/api/notify",method:"POST",public:!0,handler:Fk},{path:"/api/notify",method:"GET",public:!0,handler:Uk},{path:"/proxy/*",method:"*",public:!0,handler:u$},{path:"/api/ui/events",method:"GET",handler:mw},{path:"/api/local-token",method:"GET",handler:pw},{path:"/api/ui/state",method:"GET",handler:gw},{path:"/api/ui/state",method:"POST",handler:vw},{path:"/api/ui/stop",method:"POST",handler:yw},{path:"/api/ui/start",method:"POST",handler:xw},{path:"/api/ui/stop-tunnel",method:"POST",handler:_w},{path:"/api/ui/shutdown",method:"POST",handler:bw},{path:"/api/update",method:"POST",handler:ww},{path:"/api/system/stats",method:"GET",handler:Vk},{path:"/api/key/one-time",method:"POST",handler:Sk},{path:"/api/key/regenerate",method:"POST",handler:Ek},{path:"/api/device/approve",method:"POST",handler:Tk},{path:"/api/device/reject",method:"POST",handler:Ck},{path:"/api/device/pending",method:"GET",handler:Ak},{path:"/api/device/approved",method:"GET",handler:Rk},{path:"/api/device/rejected",method:"GET",handler:kk},{path:"/api/device/approve-rejected",method:"POST",handler:Ok},{path:"/api/device/clear-rejected",method:"POST",handler:Mk},{path:"/api/device/remove",method:"POST",handler:Pk},{path:"/api/device/label",method:"POST",handler:Lk},{path:"/api/device/disconnect",method:"POST",handler:Ik},{path:"/api/device/auto-approve",method:"GET",handler:Nk},{path:"/api/device/auto-approve",method:"POST",handler:Dk},{path:"/api/connections",method:"GET",handler:Sw},{path:"/api/logs",method:"GET",handler:Ew},{path:"/api/permissions",method:"GET",handler:Cw},{path:"/api/permissions/request",method:"POST",handler:kw},{path:"/api/desktop/toggle",method:"POST",handler:Tw},{path:"/api/autostart",method:"GET",handler:Aw},{path:"/api/autostart",method:"POST",handler:Rw},{path:"/api/sleep-inhibit",method:"GET",handler:$k},{path:"/api/sleep-inhibit",method:"POST",handler:Wk},{path:"/api/sessions",method:"GET",handler:Gk},{path:"/api/sessions/delete",method:"POST",handler:zk},{path:"/api/local-sites",method:"*",public:!0,handler:hk},{path:"/api/codespace/stop",method:"POST",handler:l$},{path:"/api/proxy/start",method:"POST",public:!0,handler:Jk},{path:"/api/proxy/end",method:"POST",public:!0,handler:Jk}];var f$=parseInt(process.env.PORT||"2208",10),Ma=null;function d$(){if(!Zk)return;let r=(0,Zt.join)(Gn,"vite.config.js");if(!(0,Ri.existsSync)(r))return;let e=(0,Ri.existsSync)((0,Zt.join)(Gn,"node_modules",".bin","vite"))?(0,Zt.join)(Gn,"node_modules",".bin","vite"):(0,Zt.join)(Gn,"..","node_modules",".bin","vite");Ma=(0,Ku.spawn)("node",[e,"--config",r],{cwd:Gn,stdio:"ignore",detached:!1}),Ma.on("error",()=>{}),Ma.unref()}async function eO(){let r=Wd(),e=r.sleepInhibitMode;e||(r.sleepInhibit===!1?e="never":e=$.sleepInhibit?.defaultMode||"never"),$o(e),await kT(),Qk=ik(),d$();let n=yp(p$,{fallback:(a,c,{pathname:l})=>{if(l.startsWith("/api/")||l.startsWith("/socket.io")){ce(c,404,"Not found");return}let p=!!a.headers["cf-connecting-ip"],f=a.socket.remoteAddress==="127.0.0.1"||a.socket.remoteAddress==="::1";if(p||!f){ce(c,403,"Forbidden");return}let h=()=>{let v=l==="/"||l===""?(0,Zt.join)(Dg,"index.html"):(0,Zt.join)(Dg,l);Kk(c,v)||Kk(c,(0,Zt.join)(Dg,"index.html"))};if(Zk){a$(a,c,h);return}h()}}),i=(0,Vu.createServer)(async(a,c)=>{yR(c),!xR(a,c)&&await n(a,c)});Fd(),nw(),iw(),vl(),process.platform==="darwin"&&setInterval(vl,hv),await vR(i),i.listen(f$,a=>{if(a)throw a;let c="2.0.67";Bg(c),setInterval(()=>Bg(c),ka.checkIntervalMs),PT(()=>c$(c))});let s=!1,o=async a=>{if(s)return;s=!0,Zd(),Wn.info(`\u{1F6D1} Received ${a}, shutting down gracefully...`);let c=setTimeout(()=>{Wn.error("\u26A0\uFE0F Forced exit"),process.exit(1)},5e3);try{if(i.close(()=>Wn.info("\u2713 HTTP server closed")),Ma)try{Ma.kill()}catch{}let l=ba();l&&(l.emit("server:shutdown"),l.close(()=>Wn.info("\u2713 Socket.IO closed"))),await new Promise(p=>setTimeout(p,500)),clearTimeout(c),Wn.info("\u2705 Server stopped cleanly"),process.exit(0)}catch(l){Wn.error(`\u274C Error during shutdown: ${l?.message||l}`),clearTimeout(c),process.exit(1)}};return process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.platform==="win32"&&process.on("SIGBREAK",()=>o("SIGBREAK")),process.on("uncaughtException",a=>{Wn.error(`\u26A0\uFE0F uncaughtException: ${a?.stack||a}`)}),process.on("unhandledRejection",a=>{Wn.error(`\u26A0\uFE0F unhandledRejection: ${a?.stack||a}`)}),i}eO();0&&(module.exports={startServer});
266
266
  /*! Bundled license information:
267
267
 
268
268
  negotiator/index.js: