@kemu-io/edge-runtime 1.7.1 → 1.7.2
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/package.json +1 -1
- package/runner.d.ts +3 -1
- package/runner.js +4 -4
package/runner.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import{config as e}from"dotenv";import{readFile as t,access as n}from"node:fs/promises";import{nanoid as r}from"nanoid";import i from"util";import o from"jsonp";import s from"crypto-js";import{z as a}from"zod";import c from"emittery";import{Parser as l}from"expr-eval";import u,{scryptSync as d,createDecipheriv as h,createHash as f}from"crypto";import{satisfies as p}from"compare-versions";import g from"debug";import m,{mkdir as y,access as v,constants as b,readdir as w,rm as S,readFile as _}from"fs/promises";import I from"minimist";import x,{join as k,dirname as E,resolve as C}from"path";import"node-ipc";import*as $ from"fs";import O from"fs";import N from"tty";import T,{homedir as A,platform as M}from"os";import P from"stream";import D from"buffer";import j from"events";import R from"zlib";import L from"string_decoder";import F from"http";import U from"https";import W from"net";import B from"tls";import G from"dgram";import V,{fileURLToPath as Y}from"url";import H from"node:os";import{spawn as z}from"child_process";import{join as q,resolve as K,dirname as J}from"node:path";import{ImageData as Z,loadImage as X,createCanvas as Q}from"@napi-rs/canvas";var ee;!function(e){e.STARTING="STARTING",e.PENDING="PENDING",e.RUNNING="RUNNING",e.PAUSED="PAUSED",e.DRAINING="DRAINING",e.STOPPED="STOPPED",e.ERROR="ERROR"}(ee||(ee={}));const te="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,ne="object"==typeof self&&self.constructor&&"DedicatedWorkerGlobalScope"===self.constructor.name,re="undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node,ie={};let oe=0,se="";const ae=e=>ie[e]?ie[e]:null,ce=(e,t)=>{const n=ae(e);if(!n)return n;return n.blocks[t]||null},le=e=>{const{recipeId:t,widgetId:n}=e,r=ae(t);if(!r)return null;for(const e in r.blocks){const t=r.blocks[e].gates[n];if(t)return t}return null},ue=(e,t,n)=>{const r=ce(e,t);if(!r)return r;return r.gates[n]},de=(e,t)=>{let n=r(4);for(;ie[n];)n=r(4);const i=(o=e,JSON.parse(JSON.stringify(o)));var o;return i.logs="",i.addLog=e=>{i.logs+=`${(()=>{const e=Date.now();if(e!==oe){const t=new Date;oe=e,se=t.toJSON()}return se})()}:: ${e}\n`},i.dbInfo={...t},ie[n]=i,n},he=e=>{const t=ae(e);if(!t)throw new Error("Recipe not found. Cannot get recipe info.");return{poolId:e,uuid:t.uuid,name:t.name,type:t.dbInfo.recipeType,dbId:t.dbInfo.id,version:t.dbInfo.version,authorId:t.dbInfo.authorId}},fe="interrupt_port",pe="UI:",ge="default";var me,ye,ve,be,we,Se,_e,Ie;let xe;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(me||(me={})),function(e){e[e.Number=0]="Number",e[e.String=1]="String",e[e.ArrayBuffer=2]="ArrayBuffer",e[e.Array=3]="Array",e[e.Boolean=4]="Boolean",e[e.JsonObj=5]="JsonObj",e[e.Anything=6]="Anything",e[e.ImageData=7]="ImageData",e[e.AudioBuffer=8]="AudioBuffer",e[e.Rect=9]="Rect",e[e.Point=10]="Point",e[e.ImageBitmap=11]="ImageBitmap",e[e.BinaryFile=12]="BinaryFile"}(ye||(ye={})),function(e){e.Number="Number",e.String="String",e.ArrayBuffer="ArrayBuffer",e.Array="Array",e.Boolean="Boolean",e.JsonObj="JsonObj",e.Anything="Anything",e.ImageData="ImageData",e.AudioBuffer="AudioBuffer",e.Rect="Rect",e.Point="Point",e.ImageBitmap="ImageBitmap",e.BinaryFile="BinaryFile"}(ve||(ve={})),function(e){e.Javascript="js",e.Python="py",e.Executable="exe"}(be||(be={})),function(e){e.IpcAcknowledge="iack:",e.SocketAcknowledge="sack:",e.AcknowledgeResponse="ackr:",e.ServicesListChanged="update-services",e.SendManifest="send-manifest",e.BroadcastStart="broadcast-start",e.BroadcastEnd="broadcast-end",e.AssumeSession="assume:"}(we||(we={})),function(e){e.GetServices="getServices",e.SubscribeToService="subscribeToService",e.UnsubscribeFromService="unsubscribeFromService",e.GetServiceContents="getServiceContents",e.SocketAckResponse="socketAckResponse",e.ShowSecretsConfigScreen="showSecretsConfigScreen",e.GetMappedSecrets="getMappedSecrets",e.GetSecretContexts="getSecretContexts",e.AddServiceSecret="addServiceSecret",e.OnParentEvent="onParentEvent",e.GetDefaultState="getDefaultState",e.BroadcastEvent="broadcastEvent",e.HubBroadcastEvent="hubBroadcastEvent",e.ServiceManifest="serviceManifest",e.SendToRecipe="sendToRecipe",e.KemuComposerDisconnected="kemu-composer-disconnected",e.GetState="getState",e.SetState="setState",e.SetOutputs="setOutputs",e.UIEvent="uiEvent",e.GetSystemInfo="getSystemInfo",e.InitializeInstance="initializeInstance",e.TerminateInstance="terminateInstance",e.UninstallService="uninstallService",e.ChooseDirectoryDialog="chooseDirectoryDialog",e.ChooseFileDialog="chooseFileDialog",e.SaveRecipeToFile="saveRecipeToFile",e.GetUniqueId="getUniqueId",e.RebootToInstallUpdate="rebootToInstallUpdate",e.GetFileContentFromCacheId="getFileContentFromCacheId",e.GetDecryptedEdgeApiKey="getDecryptedEdgeApiKey",e.GetHubConfig="getHubConfig",e.GetRecipeDecryptedSecretsValues="getRecipeDecryptedSecretsValues",e.GetRecipeSecretMappings="getRecipeSecretMappings",e.AddRecipeSecretMapping="addRecipeSecretMapping",e.DeleteRecipeSecretMapping="deleteRecipeSecretMapping",e.GetHubSecrets="getHubSecrets",e.AddHubSecrets="addHubSecrets",e.DeleteHubSecret="deleteHubSecret"}(Se||(Se={})),function(e){e.SetDependencyPath="setDependencyPath",e.GetDependencyPath="getDependencyPath",e.ParseStringExpression="parseStringExpression",e.GetGlobalVariableNames="getGlobalVariableNames",e.GetGlobalVariableValues="getGlobalVariableValues",e.SetGlobalVariableValues="setGlobalVariableValues"}(_e||(_e={})),function(e){e.IPC="ipc",e.WS="ws"}(Ie||(Ie={}));const ke=()=>{if(!xe)throw new Error("CanvasManager not set");return xe},Ee=e=>{xe=e},Ce=(e,t)=>ke().createCanvas(e,t),$e=e=>te?e.getContext("2d",{willReadFrequently:!0}):e.getContext("2d"),Oe=e=>ke().loadImage(e),Ne="-",Te=`inner${Ne}`,Ae=`outer${Ne}`,Me=`${Ae}input${Ne}`,Pe=`${Ae}output${Ne}`,De=`${Te}input${Ne}`,je=`${Te}output${Ne}`,Re=e=>e===fe,Le=e=>e&&void 0!==e.width&&void 0!==e.height&&void 0!==e.data&&e.data.constructor&&"Uint8ClampedArray"===e.data.constructor.name,Fe=e=>e&&void 0!==e.width&&void 0!==e.height&&void 0!==e.top&&void 0!==e.left&&"number"==typeof e.width&&"number"==typeof e.height&&"number"==typeof e.top&&"number"==typeof e.left,Ue=e=>e&&"number"==typeof e.x&&"number"==typeof e.y,We=e=>"number"==typeof e?ye.Number:"string"==typeof e?ye.String:"boolean"==typeof e?ye.Boolean:Array.isArray(e)?ye.Array:Le(e)?ye.ImageData:e&&void 0!==e.duration&&void 0!==e.length&&void 0!==e.numberOfChannels&&void 0!==e.sampleRate&&"function"==typeof e.getChannelData&&"AudioBuffer"===e.constructor.name?ye.AudioBuffer:e&&void 0!==e.byteLength?ye.ArrayBuffer:Fe(e)?ye.Rect:e&&void 0!==e.x&&void 0!==e.y&&"number"==typeof e.x&&"number"==typeof e.y?ye.Point:(e=>e&&"string"==typeof e.format&&e.data&&e.data instanceof ArrayBuffer)(e)?ye.BinaryFile:ye.JsonObj,Be=e=>{const t={};let n;n=Array.isArray(e)?e[0]:e;for(const e in n){const r=We(n[e]);t[e]=r}return t},Ge=(e,t,n)=>"inner"===e?"input"===t?`${De}${n}`:`${je}${n}`:"input"===t?`${Me}${n}`:`${Pe}${n}`,Ve=e=>{const t=(e||"")?.split("_");if(t.length<3)throw new Error(`Unknown child identifier format [${e}]`);const n=t[0];return{portType:t[1],widgetId:n,portName:t[2]}},Ye=async e=>{try{return new ImageData(e.data,e.width,e.height,{colorSpace:e.colorSpace})}catch(t){console.warn("Failed to create ImageData from info, assuming raw image data",t);return await Oe(e.data)}},He=e=>{const t=(e=>{const t=Ce(e.width,e.height),n=$e(t);if(!n)throw new Error("Failed to get canvas context");n.putImageData(e,0,0);const r=t.toDataURL("image/png");if(!r)throw new Error("Failed to convert canvas to data URL");return r})(e);return t.split(",")[1]},ze=async e=>{const{memoryCanvas:t,finalW:n,finalH:r}=e;let i=e.base64Str;i.startsWith("data:image/")||(i=`data:image/png;base64,${i}`);let o=await Oe(i);return o=(e=>{const{image:t,newWidth:n,newHeight:r}=e;let i=e.resizeCanvas;if(n===t.width&&r===t.height&&t instanceof ImageData)return t;i||(i=Ce(n,r));const o=i.getContext("2d");if(!o)throw new Error("Failed to get canvas context");i.width=n,i.height=r;try{let e;if(t instanceof ImageData){e=Ce(t.width,t.height);const n=e.getContext("2d");if(!n)throw new Error("Failed to get canvas context");n.putImageData(t,0,0)}o.drawImage(e||t,0,0,t.width,t.height,0,0,n,r)}catch(e){throw console.warn("Failed to resize image",e),e}return o.getImageData(0,0,n,r)})({image:o,newWidth:n??o.width,newHeight:r??o.height,resizeCanvas:t}),o};var qe,Ke;!function(e){e.Action="action",e.CustomInput="customInput"}(qe||(qe={})),function(e){e.input="input",e.counter="counter",e.play="play",e.elapsed="elapsed",e.ifGate="ifGate",e.skipEvent="skipEvent",e.between="between",e.map="map",e.parser="parser",e.slider="slider",e.suspend="suspend",e.display="display",e.json="json",e.arrayItem="arrayItem",e.extractImage="extractImage",e.imageConvolution="imageConvolution",e.firstEvent="firstEvent",e.pixelDraw="pixelDraw",e.randomBetween="randomBetween",e.arrayCombine="arrayCombine",e.clock="clock",e.delay="delay",e.multiplication="multiplication",e.object="object",e.widgetGroup="widgetGroup",e.script="script",e.base64ToImageData="base64ToImageData",e.jsonParse="jsonParse",e.text="text",e.imageCrop="imageCrop",e.imageResize="imageResize",e.value="value",e.imageWarp="imageWarp",e.sequence="sequence",e.variable="variable",e.hubService="hubService",e.imageFilter="imageFilter",e.recipeLoad="recipeLoad",e.note="note",e.stringify="stringify",e.templateString="templateString",e.expressionEval="expressionEval",e.rescue="rescue",e.objectCombine="objectCombine",e.loop="loop",e.status="status",e.secret="secret",e.output="output",e.globalVariable="globalVariable",e.switch="switch",e.edgeFunction="edgeFunction"}(Ke||(Ke={}));const Je={};let Ze,Xe=()=>0;const Qe=async e=>{const t=Je[e],n={name:fe,type:ye.Boolean};if(t){const r={name:t.portName},i=t.data||{type:ye.Boolean,value:!0};if(!Xe)throw new Error("consumeEventCounter is not set");const o=Xe();Ze?(await Ze({interruptDriven:!0,childGateId:t.targetWidgetId,sourceWidgetId:t.sourceWidgetId,block:t.thingId,recipeId:t.recipePoolId,sourcePortName:n.name,targetPort:r,data:{...i,timestamp:Date.now()},sourceOutputNames:[n],currentPath:[],eventId:o}),"timeout"===t.type&&et(e)):console.warn("Interrupt service has not been initialized")}},et=e=>{const t=Je[e];return!!t&&(t.timerRef&&("interval"===t.type?clearInterval(t.timerRef):"timeout"===t.type&&clearTimeout(t.timerRef)),delete Je[e],!0)};var tt={interruptHandler:Qe,createInterrupt:e=>{const{type:t,recipePoolId:n,thingId:i,targetWidgetId:o,sourceWidgetId:s,portName:a,config:c,data:l,customId:u}=e;if(u&&Je[u])throw new Error("The given interrupt id already exists");const d=u||r().replace(/_/g,"-");if("interval"===t&&!c.interval)throw new Error(`Invalid interval. Expected a number greater than 0, but got '${c.interval}'`);if("timeout"===t&&!c.timeout)throw new Error(`Invalid timeout. Expected a number greater than 0, but got '${c.timeout}'`);if(Je[d]={data:l,portName:a,recipePoolId:n,targetWidgetId:o,sourceWidgetId:s,thingId:i,type:t},"interval"===t)Je[d].timerRef=setInterval((async()=>await Qe(d)),c.interval);else{if("timeout"!==t)throw new Error(`Invalid interrupt type '${t}'`);Je[d].timerRef=setTimeout((async()=>await Qe(d)),c.timeout)}return d},destroyInterrupt:et,destroyAllInterrupts:()=>{Object.keys(Je).forEach(et)},setInvokeChildGateCb:e=>{Ze=e},setConsumeEventCounterCb:e=>{Xe=e}};const nt=[10001,"Invalid `sourcePort` parameter"],rt=[10002,"The gate [%s] does not exist. Have you called `loadWidgets` yet?"],it=(e,...t)=>JSON.stringify({code:e[0],message:t[0]?i.format(e[1],...t):e[1].replace(/ \[%s\]/g,"")});let ot=0,st={};var at=(e,t)=>{const n=`${e}-${++ot}`,r={event:t,eventKey:n,widgetId:e,resolve:()=>{},reject:()=>{}},i=new Promise(((e,t)=>{r.resolve=e,r.reject=t}));return r.promise=i,st[n]=r,r},ct=(e,t)=>{const n=st[e];n&&(delete st[e],n.resolve(t))};const lt=()=>({inputName:"",dataType:ye.Anything}),ut="output",dt={processEvent:async(e,t)=>{const n=t.getState(),r={...lt(),...n};if(e.type!==r.dataType&&r.dataType!==ye.Anything)return void console.error(`Invalid data type: ${e.type} for input: ${r.inputName}. Expected: ${r.dataType}`);const i=t.waitForOutputChild,o=i?at(t.id,e):void 0,s=i?{eventKey:o?.eventKey}:void 0;if(await t.nextWidget(ut,{type:e.type,value:e.value},s).catch((e=>{console.log("[INPUT] error resolving event: ",e),o?.reject(e)})),o){return await o.promise}},getOutputNames:e=>{const t={...lt(),...e};return[{name:ut,type:t.dataType}]},getInputNames:()=>[]},ht=Object.freeze({in:"in",reset:"reset",increment:"increment"}),ft="output";var pt={onParentEvent:async(e,t,n,r)=>{if(!e)throw new Error(it(nt));const i={currentValue:0,increment:1,...r.getState()};let o=i.increment,s=i.currentValue;const a=await r.getParentAtPort(ht.increment);if(t.name===ht.increment)return void(n.data.type===ye.Number&&r.setState({...i,increment:Number(n.data.value)}));if(a){const e=a.getValue();null!==e&&(o=e)}if(t.name===ht.reset)return r.setState({...i,currentValue:0});s+=o,r.setState({currentValue:s,increment:o});const c={type:ye.Number,value:s};return r.nextGate(ft,c)},getInputNames:()=>[{name:ht.in,type:ye.Anything},{name:ht.reset,type:ye.Anything},{name:ht.increment,type:ye.Number}],getOutputNames:()=>[{name:ft,type:ye.Number}]};const gt=Object.freeze({in:"in",reset:"reset"}),mt="output";var yt={onParentEvent:async(e,t,n,r)=>{const i={updatedAt:0,elapsed:0,...r.getState()},o=Date.now(),s=o-(i.updatedAt||o);return t.name===gt.reset?r.setState({...i,updatedAt:o,elapsed:0}):(r.setState({updatedAt:o,elapsed:s}),r.nextGate(mt,{type:ye.Number,value:s}))},getInputNames:()=>[{name:gt.in,type:ye.Anything},{name:gt.reset,type:ye.Anything}],getOutputNames:()=>[{name:mt,type:ye.Number}]};const vt=Object.freeze({data:"data",evaluation:"evaluation"}),bt="then",wt="else";var St={onParentEvent:async(e,t,n,r)=>{const i={value:5,condition:"Equal",useDataPort:!1,...r.getState()},o=n.data.value,s=!isNaN(Number(o)),a="string"==typeof o;if(!i.useDataPort&&(n.data.type===ye.Number||n.data.type===ye.String||n.data.type===ye.Boolean||n.data.type===ye.Anything&&s||n.data.type===ye.Anything&&a)){let e=!1;return("Equal"===i.condition&&(n.data.value==i.value||n.data.type===ye.Boolean&&n.data.value.toString()===i.value.toString())||"Not Equal"===i.condition&&(n.data.value!==i.value||n.data.type===ye.Boolean&&n.data.value!==i.value.toString())||"Greater"===i.condition&&n.data.type===ye.Number&&n.data.value>Number(i.value)||"Less"===i.condition&&n.data.type===ye.Number&&n.data.value<Number(i.value)||"Starts With"===i.condition&&String(n.data.value).startsWith(String(i.value))||"Ends With"===i.condition&&String(n.data.value).endsWith(String(i.value))||"Includes"===i.condition&&String(n.data.value).includes(String(i.value))||"Matches"===i.condition&&String(n.data.value).match(String(i.value)))&&(e=!0),e?r.nextGate(bt,n.data):r.nextGate(wt,n.data)}if(t.name===vt.evaluation&&(n.data.type===ye.Number||n.data.type===ye.String||n.data.type===ye.Boolean||n.data.type===ye.Anything&&(s||a))&&(i.$lastValue=n.data.value,i.$lastInputDataType=n.data.type,r.setState({...i})),t.name===vt.data){let e=!1;return("Equal"===i.condition&&(i.$lastValue==i.value||i.$lastInputDataType===ye.Boolean&&i.$lastValue?.toString()===i.value.toString())||"Not Equal"===i.condition&&(i.$lastValue!==i.value||i.$lastInputDataType===ye.Boolean&&i.$lastValue!==i.value.toString())||"Greater"===i.condition&&i.$lastInputDataType===ye.Number&&Number(i.$lastValue)>Number(i.value)||"Less"===i.condition&&i.$lastInputDataType===ye.Number&&Number(i.$lastValue)<Number(i.value)||"Starts With"===i.condition&&String(i.$lastValue).startsWith(String(i.value))||"Ends With"===i.condition&&String(i.$lastValue).endsWith(String(i.value))||"Includes"===i.condition&&String(i.$lastValue).includes(String(i.value))||"Matches"===i.condition&&String(i.$lastValue).match(String(i.value)))&&(e=!0),r.setState({...i,$lastValue:void 0,$lastInputDataType:void 0}),e?r.nextGate(bt,n.data):r.nextGate(wt,n.data)}},getInputNames:e=>e.useDataPort?[{name:vt.data,type:ye.Anything,triggerPort:!0},{name:vt.evaluation,type:[ye.Number,ye.String,ye.Boolean]}]:[{name:"in",type:[ye.Number,ye.String,ye.Boolean]}],getOutputNames:e=>e.$lastOutputDataType?[{name:bt,type:e.$lastOutputDataType},{name:wt,type:e.$lastOutputDataType}]:[{name:bt,type:[ye.Number,ye.String]},{name:wt,type:[ye.Number,ye.String]}]};const _t=Object.freeze({in:"in",reset:"reset"}),It="out",xt="skipped";var kt={onParentEvent:async(e,t,n,r)=>{const i={totalCalls:0,callsLimit:1,...r.getState()};return t.name===_t.reset?r.setState({...i,totalCalls:0}):(i.totalCalls=i.totalCalls+1,i.totalCalls>i.callsLimit?(i.totalCalls=0,r.setState(i),r.nextWidget(It,n.data)):(n.data.type!==i.$$lastDetectedType&&(i.$$lastDetectedType=n.data.type),r.setState(i),r.nextWidget(xt,n.data)))},getInputNames:()=>[{name:_t.in,type:ye.Anything},{name:_t.reset,type:ye.Anything}],getOutputNames:e=>[{name:It,type:e.$$lastDetectedType??ye.Anything},{name:xt,type:e.$$lastDetectedType??ye.Anything}]};const Et=Object.freeze({in:"in"}),Ct="then",$t="else";var Ot={onParentEvent:async(e,t,n,r)=>{const i={min:1,max:10,...r.getState()};if(n.data.type===ye.Number)return n.data.value>=i.min&&n.data.value<=i.max?r.nextGate(Ct,n.data):r.nextGate($t,n.data)},getInputNames:()=>[{name:Et.in,type:ye.Number}],getOutputNames:()=>[{name:Ct,type:ye.Number},{name:$t,type:ye.Number}]};const Nt=Object.freeze({in:"in"}),Tt="out";var At={onParentEvent:async(e,t,n,r)=>{const i={clamp:!0,...r.getState()},o=Number(n.data.value);if(void 0!==i.fromMax&&void 0!==i.fromMin&&void 0!==i.toMax&&void 0!==i.toMin&&""!==i.fromMax&&""!==i.fromMin&&""!==i.toMax&&""!==i.toMin&&(n.data.type===ye.Number||n.data.type===ye.Anything&&!isNaN(Number(o)))){let e=((e,t,n,r,i)=>(e-t)*(i-r)/(n-t)+r)(o,Number(i.fromMin),Number(i.fromMax),Number(i.toMin),Number(i.toMax));if(isNaN(e))return;return i.clamp&&(e<Number(i.toMin)&&(e=Number(i.toMin)),e>Number(i.toMax)&&(e=Number(i.toMax))),r.nextGate(Tt,{type:ye.Number,value:Number(e)})}},getInputNames:()=>[{name:Nt.in,type:ye.Number}],getOutputNames:()=>[{name:Tt,type:ye.Number}]};const Mt=Object.freeze({in:"in"}),Pt="out";var Dt={onParentEvent:async(e,t,n,r)=>{const i={convertTo:"Integer",floatPlaces:2,...r.getState()};let o=n.data.value;if(n.data.type===ye.Number||n.data.type===ye.Anything||n.data.type===ye.String){if((!isNaN(Number(o))||"string"==typeof o)&&!Array.isArray(o))return"Integer"===i.convertTo?o=parseInt(o):"Decimal"===i.convertTo?o=parseFloat(Number(o).toFixed(i.floatPlaces)):"String"===i.convertTo?o=String(o):"Abs"===i.convertTo?o=Math.abs(Number(o)):"Round"===i.convertTo&&(o=Math.round(Number(o))),r.nextGate(Pt,{type:"String"===i.convertTo?ye.String:ye.Number,value:o})}},getInputNames:()=>[{name:Mt.in,type:ye.Number}],getOutputNames:e=>{const t="String"===e?.convertTo?ye.String:ye.Number;return[{name:Pt,type:t}]}};const jt=Object.freeze({in:"in"}),Rt="out";var Lt={onParentEvent:async(e,t,n,r)=>{const i={currentValue:50,min:0,max:100,...r.getState()};let o=!1;return i.currentValue<i.min&&(i.currentValue=i.min,o=!0),i.currentValue>i.max&&(i.currentValue=i.max,o=!0),o&&r.setState(i),r.nextWidget(Rt,{type:ye.Number,value:i.currentValue})},getInputNames:()=>[{name:jt.in,type:ye.Anything}],getOutputNames:()=>[{name:Rt,type:ye.Number}]};const Ft=Object.freeze({in:"in",reset:"reset"}),Ut="out",Wt="skipped";var Bt={onParentEvent:async(e,t,n,r)=>{const i={lastCalledAt:0,delayMs:500},o={lastCalledAt:0,delayMs:500,...r.getState()};if(t.name===Ft.reset)return r.setState({...o,lastCalledAt:0});const s=Date.now(),a=s-o.lastCalledAt;return o.lastCalledAt===i.lastCalledAt||a>=o.delayMs&&o.delayMs>0?(o.lastCalledAt=s,r.setState(o),r.nextWidget(Ut,n.data)):(n.data.type!==o.$$lastDetectedType&&(o.$$lastDetectedType=n.data.type),r.setState(o),r.nextWidget(Wt,n.data))},getInputNames:()=>[{name:Ft.in,type:ye.Anything},{name:Ft.reset,type:ye.Anything}],getOutputNames:e=>[{name:Ut,type:e.$$lastDetectedType??ye.Anything},{name:Wt,type:e.$$lastDetectedType??ye.Anything}]};const Gt="in";var Vt={onParentEvent:async()=>{},getInputNames:()=>[{name:Gt,type:[ye.ImageData,ye.Number]}],getOutputNames:()=>[]};const Yt=()=>({properties:[{label:"property1",name:"property1"}],detectedProperties:{}}),Ht=(e,t)=>t.split(".").reduce(((e,t)=>null!=e?e[t]:e),e);var zt={onParentEvent:async(e,t,n,r)=>{const i={properties:[{label:"property1",name:"property1"}],detectedProperties:{},...r.getState()},o=n?.data?.value,s=Array.isArray(o);if(n.data.type===ye.JsonObj||n.data.type===ye.Rect||n.data.type===ye.Point||n.data.type===ye.BinaryFile||n.data.type===ye.Anything||s){let e=!1;for(const t in o){const n=We(o[t]),r=!!i.detectedProperties[t],s=i.detectedProperties[t]?.type!==n;if(!r||s){const r=n===ye.JsonObj||n===ye.Rect||n===ye.Point||n===ye.Array;i.detectedProperties[t]={type:n,...r?{shape:Be(o[t])}:void 0},e=!0}}if(s&&void 0===i.detectedProperties.length&&(i.detectedProperties.length={type:ye.Number}),e&&r.setState(i),o){const e=[];for(const t of i.properties||[]){const n=Ht(o,t.label),s=t.label.includes(".");if(void 0!==n){const o=s?We(n):void 0!==i.detectedProperties[t.label]?.type?i.detectedProperties[t.label].type:ye.Anything;e.push(r.nextGate(t.name,{type:o,value:n}))}}await Promise.allSettled(e)}}},getInputNames:()=>[{name:"in",type:ye.JsonObj}],getOutputNames:e=>{const t={properties:[{label:"property1",name:"property1"}],detectedProperties:{},...e};return t.properties.map((e=>{const n=void 0!==t.detectedProperties[e.label]?t.detectedProperties[e.label]?.type:ye.Anything,r=t.detectedProperties[e.label]?.shape||void 0,i="string"==typeof e;return{name:i?e:e.name,label:i?e:e.label,type:n,jsonShape:r}}))},getDefaultState:Yt};const qt="output",Kt="noItem";var Jt={onParentEvent:async(e,t,n,r)=>{const i={index:0,...r.getState()};let o=i.index;const s=n.data.value,a="string"==typeof n.data.value,c=Array.isArray(n.data.value);if(n.data.type===ye.Anything&&(c||a)||n.data.type===ye.String&&a||n.data.type===ye.Array&&c){o<0&&(o=s.length+o);const e=a?ye.String:We(s[o]);return e!==i.$$lastDetectedType&&r.setState({...i,$$lastDetectedType:e}),void 0!==s[o]?r.nextGate(qt,{value:s[o],type:e}):r.nextGate(Kt,{value:!0,type:ye.Boolean})}},getInputNames:()=>[{name:"in",type:[ye.Array,ye.String]}],getOutputNames:e=>[{name:qt,type:e.$$lastDetectedType??ye.Anything},{name:Kt,type:ye.Boolean}]};const Zt={},Xt=e=>(Zt[e]||(Zt[e]={canvasFrom:Ce(320,240),canvasTo:Ce(320,240)}),Zt[e]),Qt=Object.freeze({image:"image",rect:"rect"}),en="image";var tn={onParentEvent:async(e,t,n,r)=>{const i=Xt(r.id),o={offset:{height:0,left:0,top:0,width:0},...r.getState()},s=[ye.Anything,ye.Rect,ye.JsonObj];if(t.name===Qt.rect&&Fe(n.data.value)&&s.includes(n.data.type)&&(o.rect=n.data.value,r.setState({...o})),t.name===Qt.image){if(!((n.data.type===ye.ImageData||n.data.type===ye.Anything)&&Le(n.data.value)))throw new Error("Invalid image data. Expected a valid ImageData type");i.lastImage=n.data.value}if(i.lastImage&&o.rect){const e=((e,t,n,r,i)=>{if(r&&r.getContext){const o=r.getContext("2d"),s=n.getContext("2d");if(o&&s){n.width=e.width,n.height=e.height,s.putImageData(e,0,0);const a={...i};i&&(a.height=Number(i.height),a.width=Number(i.width),a.left=Number(i.left),a.top=Number(i.top));const c={top:0,width:0,left:0,height:0,...a};return i&&(Number.isInteger(c.width)||(c.width=t.width*c.width),Number.isInteger(c.height)||(c.height=t.height*c.height),Number.isInteger(c.left)||(c.left=t.left+t.width*c.left),Number.isInteger(c.top)||(c.top=t.top+t.height*c.top)),r.width=t.width+c.width,r.height=t.height+c.height,o.drawImage(n,t.left+c.left,t.top+c.top,t.width+c.width,t.height+c.height,0,0,r.width+c.width,r.height+c.height),o.getImageData(0,0,r.width||1,r.height||1)}}return e})(i.lastImage,o.rect,i.canvasFrom,i.canvasTo,o.offset);r.setState({...o,rect:null}),i.lastImage=void 0,await r.nextWidget(en,{type:ye.ImageData,value:e})}},getInputNames:()=>[{name:Qt.image,type:ye.ImageData},{name:Qt.rect,type:[ye.Rect,ye.JsonObj]}],getOutputNames:()=>[{name:en,type:ye.ImageData}],initialize:async e=>{Xt(e.widgetId)},terminate:async e=>{delete Zt[e.widgetId]}};const nn=(e,t)=>{const n=Math.round(Math.sqrt(t.length)),r=Math.floor(n/2),i=e.data,o=e.width,s=e.height,a=o,c=s,l=((e,t,n)=>{if(te)return new ImageData(t,n);return console.warn("Node environment detected. Aborting new ImageData creation"),e})(e,a,c),u=l.data;for(let e=0;e<c;e++)for(let c=0;c<a;c++){const l=e,d=c,h=4*(e*a+c);let f=0,p=0,g=0,m=0;for(let e=0;e<n;e++)for(let a=0;a<n;a++){const c=l+e-r,u=d+a-r;if(c>=0&&c<s&&u>=0&&u<o){const r=4*(c*o+u),s=t[e*n+a];f+=i[r]*s,p+=i[r+1]*s,g+=i[r+2]*s,m+=i[r+3]*s}}u[h]=f,u[h+1]=p,u[h+2]=g,u[h+3]=m+1*(255-m)}return l},rn=[-1,0,1,-2,0,2,1,0,1],on=Object.freeze({image:"image"}),sn="image";var an={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={matrix:[...rn],...i};if(n.data.type===ye.ImageData||n.data.type===ye.Anything&&Le(n.data.value)){const e=nn(n.data.value,o.matrix);return r.nextGate(sn,{type:ye.ImageData,value:e})}},getInputNames:()=>[{name:on.image,type:ye.ImageData}],getOutputNames:()=>[{name:sn,type:ye.ImageData}]};const cn=Object.freeze({output:"output",aborted:"aborted"}),ln=()=>({inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0}),un=e=>{const t={inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0,...e},n=Array(t.inputs).fill(0).map(((e,t)=>({name:`input${t+1}`,type:ye.Anything})));return n.push({name:"reset",type:ye.Anything}),n};var dn={onParentEvent:async(e,t,n,r)=>{const i={inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0,...r.getState()};if("reset"===t.name)return r.setState({...i,triggeredAt:0});const o=Date.now(),s=o-i.triggeredAt;if(i.triggeredAt&&!(s>=i.delayMs&&i.delayMs>0)&&i.delayMs)return r.nextGate(cn.aborted,n.data);{i.triggeredAt=o;const e=un(i,(r.recipePoolId,r.recipeType,r.thingRecipeId,r.id)).findIndex((e=>e.name===t.name));-1!==e&&(i.lastInputIndex=e),i.matchingOutputs?-1!==e&&await r.nextGate(`output${e+1}`,n.data):await r.nextGate(cn.output,n.data),r.setState(i)}},getInputNames:un,getOutputNames:e=>{const t={inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0,...e};if(e.matchingOutputs){const e=Array(t.inputs).fill(0).map(((e,t)=>({name:`output${t+1}`,type:ye.Anything})));return e.push({name:cn.aborted,type:ye.Anything}),e}return[{name:cn.output,type:ye.Anything},{name:cn.aborted,type:ye.Anything}]},getDefaultState:ln};const hn=(e,t,n,r,i,o)=>{if(i){const s=e.measureText(i),a=s.fontBoundingBoxAscent+s.fontBoundingBoxDescent;e.fillStyle=r,e.fillRect(t,n-o,1.1*s.width,a),e.font=`${o}px Arial`,e.fillStyle="black",e.fillText(i,t,n)}},fn=(e,t,n,r,i,o,s)=>{e.fillStyle=i,e.fillRect(t,n,r,r),hn(e,t,n,i,o,s)},pn=(e,t,n,r,i,o)=>{e.beginPath(),e.strokeStyle=r,e.lineWidth=n,e.rect(t.left,t.top,t.width,t.height),e.stroke();const s=n/2;hn(e,t.left-s,t.top-s,r,i,o)},gn={},mn=e=>(gn[e]||(gn[e]={memCanvas:Ce(320,240),lastFrame:void 0,pixels:void 0}),gn[e]),yn=Object.freeze({image:"image",pixels:"pixels"}),vn="image";var bn={onParentEvent:async(e,t,n,r)=>{const i=mn(r.id),o={fontSize:12,color:"#00ff00",size:2,...r.getState()},s=(n.data.type===ye.ImageData||n.data.type===ye.Anything)&&Le(n.data.value);if(t.name===yn.pixels){const e=(e=>Ue(e)||Fe(e)||Array.isArray(e)&&e[0]&&(Ue(e[0])||Fe(e[0])))(n.data.value);if(!e)return;i.pixels=n.data.value}if(t.name===yn.image&&s){const e=n.data.value;i.lastFrame=e}if(i.lastFrame&&i.pixels&&i.memCanvas){const e=(e=>{const{sourceImage:t,pixels:n,memCanvas:r,size:i,color:o,labelProp:s,fontSize:a}=e;if(r){const e=$e(r);if(e){r.width!==t.width&&(r.width=t.width),r.height!==t.height&&(r.height=t.height),e.putImageData(t,0,0);const c=Array.isArray(n)?n:[n];for(let t=0;t<c.length;t++){const n=c[t],r=s?n[s]:"";Fe(n)?pn(e,n,i,o,r,a):Ue(n)&&fn(e,n.x,n.y,i,o,r,a)}return e.getImageData(0,0,r.width,r.height)}}return t})({sourceImage:i.lastFrame,pixels:i.pixels||[],memCanvas:i.memCanvas,size:o.size,color:o.color,labelProp:o.labelProp,fontSize:o.fontSize});return i.lastFrame=void 0,i.pixels=void 0,r.setState({...o}),r.nextWidget(vn,{type:ye.ImageData,value:e})}r.setState(o)},getInputNames:()=>[{name:yn.image,type:ye.ImageData},{name:yn.pixels,type:[ye.Rect,ye.Point,ye.Array,ye.JsonObj]}],getOutputNames:()=>[{name:vn,type:ye.ImageData}],initialize:async e=>{mn(e.widgetId)},terminate:async e=>{delete gn[e.widgetId]}};const wn=Object.freeze({in:"in"}),Sn="output",_n=e=>{const t=String(e).split(".");return t.length<2?0:t[1].length};var In={onParentEvent:async(e,t,n,r)=>{const i={min:1,max:100,...r.getState()},o=!Number.isInteger(i.min),s=!Number.isInteger(i.max),a=o||s;let c=(l=i.min,u=i.max,Math.random()*(u-l)+l);var l,u;if(a){let e=0;if(o&&(e=_n(i.min)),s){const t=_n(i.max);t>e&&(e=t)}c=Number(c.toFixed(e))}else c=Math.floor(c);return r.nextGate(Sn,{type:ye.Number,value:c})},getInputNames:()=>[{name:wn.in,type:ye.Anything}],getOutputNames:()=>[{name:Sn,type:ye.Number}]};const xn=Object.freeze({output:"output",totalItems:"totalItems"}),kn=Object.freeze({trigger:"trigger",clear:"clear"}),En=()=>({$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1}),Cn=async(e,t)=>t.nextGate(xn.totalItems,{type:ye.Number,value:e});var $n={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1,...r.getState()};if(t.name===kn.clear)return i.$$list=[],i.properties?.autoFilled&&delete i.properties,r.setState(i),Cn(i.$$list.length,r);const o=t.name===kn.trigger;if(!o)if(Array.isArray(n.data.value))n.data.type!==ye.Array&&n.data.type!==ye.Anything||(i.$$outputShape={...i.$$outputShape,...e?.jsonShape},i.$$list=i.$$list.concat(n.data.value),r.setState({...i}),await Cn(i.$$list.length,r));else{const t=`$$primitive_${Object.keys(i.$$outputShape).length}`;n.data.type===ye.JsonObj?i.$$outputShape={...i.$$outputShape,...e?.jsonShape?e.jsonShape:void 0}:i.$$outputShape={...i.$$outputShape,[t]:n.data.type},i.$$list.push(n.data.value),r.setState({...i}),await Cn(i.$$list.length,r)}if(o){Object.keys(i.$$outputShape).length&&(i.properties={autoFilled:!0,jsonShape:{...i.$$outputShape}});const e=i.$$list.length,t=[...i.$$list];return i.$$list=[],r.setState({...i}),await Cn(e,r),r.nextGate(xn.output,{type:ye.Array,value:t})}},getInputNames:e=>{const t={$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1,...e},n=Array(t.totalInputs||1).fill(0).map(((e,t)=>({name:`input${t+1}`,type:ye.Anything})));return n.push({name:kn.clear,type:ye.Anything},{name:kn.trigger,type:ye.Anything}),n},getOutputNames:e=>[{name:xn.output,type:ye.Array,...e.properties?{jsonShape:e.properties?.jsonShape}:void 0},{name:xn.totalItems,label:"Total Items",type:ye.Number}],getDefaultState:En};const On=Object.freeze({start:"start",stop:"stop"}),Nn="output",Tn="clock_interrupt";var An={onParentEvent:async(e,t,n,r)=>{const i={enabled:!1,interval:1e3,intervalMode:"ms",...r.getState()};if(Re(e?.name||"")&&t.name===Tn)return r.nextGate(Nn,{type:ye.Boolean,value:!0});if(t.name===On.stop&&i.enabled&&i.$$interruptId){r.cancelInterrupt(i.$$interruptId)?(i.enabled=!1,i.$$interruptId=void 0,r.setState(i)):console.warn(`Failed to cancel interrupt [${i.$$interruptId}]`)}else t.name!==On.start||i.enabled||i.$$interruptId||(i.$$interruptId=r.registerInterrupt({type:"interval",sourceWidgetId:r.id,customTargetPortName:Tn,config:{interval:i.interval}}),i.enabled=!0,r.setState(i))},getInputNames:()=>[{name:On.start,type:ye.Anything},{name:On.stop,type:ye.Anything}],getOutputNames:()=>[{name:Nn,type:ye.Boolean}],initialize:async e=>{const t=e.getState();if(t.enabled&&!t.$$interruptId){const n=e.registerInterrupt({type:"interval",sourceWidgetId:e.widgetId,customTargetPortName:Tn,config:{interval:t.interval}});e.setState({...t,$$interruptId:n})}}};const Mn=864e5;var Pn;!function(e){e.ABORTED="DELAY_ABORTED",e.CONTINUED="DELAY_CONTINUED",e.TERMINATED="WIDGET_TERMINATED"}(Pn||(Pn={}));const Dn={},jn=Object.freeze({in:"in",abort:"abort",continue:"continue"}),Rn="out",Ln=(e,t)=>{const n=e.getState();e.setState({...n,pendingDelaysCount:Math.max(0,n.pendingDelaysCount+t)})};var Fn={onParentEvent:async(e,t,n,i)=>{const o={enabled:!1,interval:1e3,intervalMode:"ms",pendingDelaysCount:0,...i.getState()},s=i.id;Dn[s]||(Dn[s]=new Map);const a=Dn[s];if(t.name!==jn.abort)if(t.name!==jn.continue){if(t.name===jn.in){const e=o.interval;if(!((c=e)>=1&&c<=Mn))throw new Error(`Invalid interval: ${e}ms. Must be between 1ms and 86400000ms`);const t={...n.data},s=r();Ln(i,1);const l=new Promise(((n,r)=>{const o=setTimeout((()=>{n(t),a.delete(s),Ln(i,-1)}),e);a.set(s,{id:s,eventData:t,timeoutId:o,resolve:n,reject:r})}));try{const e=await l;return i.invokeNextWidget({port:Rn,data:e})}catch{Ln(i,-1)}}var c}else{const e=Array.from(a.entries());for(const[t,n]of e)clearTimeout(n.timeoutId),n.reject(new Error(Pn.CONTINUED)),a.delete(t);for(const[,t]of e)await i.invokeNextWidget({port:Rn,data:t.eventData});Ln(i,-i.getState().pendingDelaysCount)}else{for(const[e,t]of a)clearTimeout(t.timeoutId),t.reject(new Error(Pn.ABORTED)),a.delete(e);Ln(i,-i.getState().pendingDelaysCount)}},getInputNames:()=>[{name:jn.in,type:ye.Anything},{name:jn.abort,type:ye.Anything},{name:jn.continue,type:ye.Anything}],getOutputNames:()=>[{name:Rn,type:ye.Anything}],initialize:async e=>{const t=e.getState();0!==t.pendingDelaysCount&&e.setState({...t,pendingDelaysCount:0})},terminate:async e=>{const t=e.widgetId;if(Dn[t]){for(const[,e]of Dn[t])clearTimeout(e.timeoutId),e.reject(new Error(Pn.TERMINATED));delete Dn[t]}}};const Un=Object.freeze({in:"in"}),Wn="output",Bn=(e,t,n)=>"number"==typeof e?Number((e*t).toFixed(n)):e;var Gn={onParentEvent:async(e,t,n,r)=>{const i={userProperties:[],factor:2,decimalPoints:2,...r.getState()},o=n.data.type;let s=n.data.value,a=!1;return e?.jsonShape&&(i.detectedInputJson={...i.detectedInputJson,...e?.jsonShape},a=!0),i.detectedInputType||(i.detectedInputType=o,a=!0),n.data.type===ye.Array&&("number"==typeof n.data.value?.[0]?s=((e,t,n)=>{const r=(e||[]).map((e=>Bn(e,t,n)));return r})(n.data.value,i.factor,i.decimalPoints):"object"==typeof n.data.value?.[0]&&(s=((e,t,n,r)=>{const i=(e||[]).map((e=>{const i={...e};return Object.keys(i).forEach((e=>{r?.length&&!r?.includes(e)||(i[e]=Bn(i[e],t,n))})),i}));return i})(n.data.value,i.factor,i.decimalPoints,i.userProperties))),n.data.type===ye.Number&&(s=Bn(n.data.value,i.factor,i.decimalPoints)),a&&r.setState(i),r.nextGate(Wn,{type:o,value:s})},getInputNames:()=>[{name:Un.in,type:[ye.Array,ye.Number]}],getOutputNames:e=>[{name:Wn,type:e.detectedInputType||ye.Number,jsonShape:e.detectedInputJson}]};const Vn={},Yn=Object.freeze({output:"output"}),Hn=Object.freeze({trigger:"trigger"}),zn=()=>({useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}]}),qn=(e,t)=>{const n={};Vn[t]=Vn[t]||{};for(let r=0;r<e.properties.length;r++){const i=Vn[t][e.properties[r].name];n[e.properties[r].label]=i}return n};var Kn={onParentEvent:async(e,t,n,r)=>{const i={useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}],...r.getState()};if(t.name===Hn.trigger){const e=qn(i,r.id);return r.nextWidget(Yn.output,{type:ye.JsonObj,value:e})}const o=i.properties.findIndex((e=>e.name===t.name));if(-1!==o){const e=i.properties[o];if(Vn[r.id]=Vn[r.id]||{},Vn[r.id][e.name]=n.data.value,!i.useTriggerPort){const e=qn(i,r.id);return r.nextWidget(Yn.output,{type:ye.JsonObj,value:e})}}},getInputNames:e=>{const t={useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}],...e},n=t.properties.map((e=>({name:e.name,label:e.label,type:ye.Anything})));return t.useTriggerPort&&n.push({name:Hn.trigger,label:Hn.trigger,type:ye.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:Yn.output,label:Yn.output,type:ye.JsonObj}],getDefaultState:zn,initialize:async e=>{Vn[e.widgetId]={}},terminate:async e=>{delete Vn[e.widgetId]}};const Jn=async e=>{const t=(e,t)=>e.split(t)[1];if(e.startsWith(Me)){const n=t(e,Me);return Ge("inner","input",n)}if(e.startsWith(je)){const n=t(e,je);return Ge("outer","output",n)}return null},Zn=()=>({canvasPosition:{x:0,y:0},canvasZoom:1,inputs:[{name:"input",type:[ye.Anything],index:0}],outputs:[{name:"output",type:[ye.Anything],index:0}],name:"Custom Widget 1",description:"",type:"custom"}),Xn=e=>{const t={...Zn(),...e},n=t.inputs.map(((e,t)=>({name:Ge("outer","input",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!1,index:t}))),r=t.outputs.map(((e,t)=>({name:Ge("inner","output",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!0,index:n.length+t})));return[...n,...r]};var Qn={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Zn(),...i},s=Xn(o,(r.recipePoolId,r.recipeType,r.thingRecipeId,r.id));for(let e=0;e<s.length;e++){const i=s[e];if(t.name===i.name&&(i.type.includes(ye.Anything)||i.type.includes(n.data.type))){const e=await Jn(t.name);e&&await r.nextWidget(e,{type:n.data.type,value:n.data.value})}}},getInputNames:Xn,getOutputNames:e=>{const t={...Zn(),...e},n=t.outputs.map(((e,t)=>({name:Ge("outer","output",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!1,index:t})));return[...t.inputs.map(((e,t)=>({name:Ge("inner","input",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!0,index:t+n.length}))),...n]},getDefaultState:Zn};const er=(e,t,n,r,i)=>{const o=4*(t*n.width+e),s=n.data[o],a=n.data[o+1],c=n.data[o+2];return Math.abs(s-r.r)<=i&&Math.abs(a-r.g)<=i&&Math.abs(c-r.b)<=i};var tr={image:{getPixelValueAtIndex:(e,t)=>{const n=e.data,r=n[t]||0,i=n[t+1]||0,o=n[t+2]||0;return{avr:(r+i+o)/3,r:r,g:i,b:o}},getBoundingBox:(e,t,n)=>{const r=e.width,i=e.height,o=new Set,s=Number(n.threshold||0),a=isNaN(s)?10:s,c=(n,s)=>{const c=[[n,s]];let l=n,u=n,d=s,h=s;for(;c.length>0;){const n=c.shift();if(!n)continue;const[s,f]=n;s<0||f<0||s>=r||f>=i||o.has(`${s},${f}`)||!er(s,f,e,t,a||0)||(o.add(`${s},${f}`),l=Math.min(l,s),u=Math.max(u,s),d=Math.min(d,f),h=Math.max(h,f),c.push([s+1,f],[s-1,f],[s,f+1],[s,f-1]))}return{minX:l,maxX:u,minY:d,maxY:h}},l=[];for(let s=0;s<i;s+=4)for(let i=0;i<r;i+=4)if(!o.has(`${i},${s}`)&&er(i,s,e,t,a)){const{minX:e,maxX:t,minY:r,maxY:o}=c(i,s),a=t-e,u=o-r;if(a>=(n.minWidth||1)&&u>=(n.minHeight||1)&&l.push({left:e,top:r,width:a,height:u}),n.maxBoxes&&l.length>=n.maxBoxes)return l}return l},copyImageData:e=>new ImageData(new Uint8ClampedArray(e.data),e.width,e.height),setPixelValueAtIndex:(e,t,n)=>{const r=e.data,i="object"==typeof n,o=i?n.r:n,s=i?n.g:n,a=i?n.b:n;r[t]=o,r[t+1]=s,r[t+2]=a,r[t+3]=255}}};const nr=e=>We(e),rr=a.enum(["Read","Modify","Comment"]),ir=a.object({email:a.email(),name:a.string(),accessMode:rr});var or;!function(e){e.Seats="seats",e.RecipeInvocations="recipe_invocations",e.HubServices="hub_services",e.RecipeExports="recipe_exports",e.RecipeHistory="recipe_history",e.AssistedCodeGeneration="assisted_code_generation",e.CustomServices="custom_services",e.OnDeviceSecretManagement="on_device_secret_management",e.PrivateRecipes="private_recipes",e.InBrowserRecipeExecution="in_browser_recipe_execution",e.EventLoggerLogsRetention="event_logger_logs_retention",e.AgenticExecutions="agentic_executions",e.PrivateSnippets="private_snippets",e.SnippetHistory="snippet_history",e.LogHistoryRetentionDays="log_history_retention_days",e.LogHistoryMonthlyEvents="log_history_monthly_events",e.FileStorageRetentionHours="file_storage_retention_hours",e.FileStorageSizeMB="file_storage_size_mb",e.PrivateWidgets="private_widgets",e.WidgetHistory="widget_history"}(or||(or={}));const sr=a.enum(["active","inactive"]),ar=a.enum(["Owner","Admin","Member"]),cr=a.object({apiKey:a.string(),createdAt:a.string(),createdBy:a.string()}),lr=a.object({country:a.string(),city:a.string(),address1:a.string(),address2:a.string(),postCode:a.string()}),ur=a.object({id:a.string(),name:a.string(),groups:a.array(a.string()),logo:a.string().optional(),industry:a.string().optional(),accountOwner:a.string(),stripeCustomerId:a.string(),stripeSubscription:a.custom(),apiKeys:a.array(cr).optional(),domain:a.string().optional(),createdAt:a.string(),updatedAt:a.string(),accountState:a.custom(),location:lr.optional()}),dr=a.object({id:a.string(),firstName:a.string(),lastName:a.string(),email:a.email().optional(),loginId:a.string().optional(),role:ar,groups:a.array(a.string()).optional().default([]),status:sr,lastSeenAt:a.string().optional(),createdAt:a.string()});var hr,fr,pr,gr;ur.pick({id:!0,name:!0,stripeSubscription:!0,stripeCustomerId:!0}),a.object({member:a.object({firstName:a.string().optional(),lastName:a.string().optional(),email:a.string().optional(),role:ar.optional(),groups:a.array(a.string()).optional(),status:sr})}),dr.omit({id:!0,createdAt:!0,lastSeenAt:!0}),a.object({name:a.string(),location:lr.optional()}),function(e){e.Cpu_128M="kmu-cpu-128m",e.Cpu_256M="kmu-cpu-256m",e.Cpu_512M="kmu-cpu-512m",e.Cpu_1024M="kmu-cpu-1024m",e.Cpu_2048M="kmu-cpu-2048m",e.Cpu_4096M="kmu-cpu-4096m"}(hr||(hr={})),function(e){e.Hardware="hardware",e.Virtual="virtual"}(fr||(fr={})),function(e){e.Cloud="cloud",e.Web="web"}(pr||(pr={})),function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(gr||(gr={}));const mr=a.object({name:a.string(),category:a.string(),id:a.string(),type:a.enum(pr),version:a.string()}),yr=a.object({version:a.number(),contents:a.string(),contentsLength:a.number(),createdAt:a.string(),comments:a.string().optional()}),vr=a.object({id:a.string(),name:a.string(),uuid:a.string().optional(),version:a.number(),dataSources:a.array(a.object({host:a.string().optional(),stream:a.string(),blocks:a.array(a.string())})).optional(),protocolVersion:a.string(),linkedTutorial:a.string().optional(),blocks:a.array(mr),widgets:a.array(a.object({type:a.string(),name:a.string(),thingId:a.string()})).optional(),contents:a.string(),storage:a.string().optional(),history:a.array(yr).optional(),cloud:a.object({environment:a.enum(hr),enabled:a.boolean()}).optional()}),br=a.object({recipeId:a.string(),version:a.number()});vr.extend({userId:a.string(),author:a.object({name:a.string(),id:a.string()}),copiedFrom:br.optional(),updatedAt:a.string(),createdAt:a.string(),preview:a.string(),isPublic:a.boolean(),isDefault:a.boolean(),meta:a.object({contentsLength:a.number(),storageLength:a.number(),storageChecksum:a.string().optional()}),sharedWith:a.array(ir),publicSharedId:a.string().optional(),marketplacePublication:a.string().optional()});const wr=vr.omit({id:!0,version:!0,contents:!0,storage:!0});var Sr,_r,Ir,xr,kr,Er,Cr,$r;a.object({rawContents:a.string(),recipe:wr.extend({contentLength:a.number(),copiedFrom:br.optional()}),storageSize:a.number().optional(),storageChecksum:a.string().optional(),comments:a.string().optional(),currentVersion:a.number().optional()}),a.object({message:a.string(),recipeId:a.string(),version:a.number(),versionHistory:a.array(yr)}),function(e){e.Bundle="bundle",e.Group="group"}(Sr||(Sr={})),function(e){e.Gateway="gateway",e.Timer="timer"}(_r||(_r={})),function(e){e.InstallInProgress="installation-in-progress"}(Ir||(Ir={})),function(e){e.InstallDependencies="install-dependencies",e.GetInstalledDependencies="get-installed-dep"}(xr||(xr={})),function(e){e.Success="success",e.Error="error",e.Pending="pending"}(kr||(kr={})),function(e){e.NotFound="not-found",e.BadRequest="bad-request",e.Forbidden="forbidden",e.InternalError="internal-error"}(Er||(Er={})),function(e){e.UserFriendlyName="user_friendly_name",e.UserFriendlyDescription="user_friendly_description",e.InternalDescription="internal_description",e.TierLevel="tier_level",e.ProductFeatures="product_features",e.UserSubscribeCode="subscription_code",e.IsCustomTier="is_custom_tier"}(Cr||(Cr={})),function(e){e.KeyCreated="key_created",e.ValidateKey="validate_key",e.ExecuteRecipe="execute_recipe",e.InstallHubService="install_hub_service",e.UninstallHubService="uninstall_hub_service",e.ExportRecipe="export_recipe"}($r||($r={}));const Or=a.object({id:a.string(),name:a.string(),organizationId:a.string()}),Nr=a.object({version:a.number(),contents:a.string(),contentsLength:a.number(),createdAt:a.string(),title:a.string(),shortDescription:a.string(),comments:a.string().optional()}),Tr=a.object({id:a.string(),title:a.string(),author:Or,shortDescription:a.string(),authorId:a.string(),category:a.string(),tags:a.array(a.string()),createdAt:a.string(),downloads:a.number().default(0),updatedAt:a.string(),iconSvg:a.string(),contents:a.string(),descriptionMarkdown:a.string(),githubUrl:a.string().optional(),visibility:a.enum(["public","private","organization"]),version:a.number(),history:a.array(Nr).default([]),deletedAt:a.string().optional()}),Ar=Tr.extend({rating:a.object({average:a.number(),total:a.number()}).optional()});a.object({id:a.string(),author:a.object({id:a.string(),name:a.string()}).optional(),description:a.string(),createdAt:a.string(),updatedAt:a.string(),snippetId:a.string(),deletedAt:a.string().optional(),isAbuseReport:a.boolean().optional(),reportReason:a.enum(["spam","inappropriate","not-working","security","other"]).optional()}),a.object({query:a.string().optional(),category:a.string().optional(),featured:a.boolean().optional(),recommended:a.boolean().optional(),sortBy:a.enum(["most_recent","most_liked","alphabetical"]).optional(),visibility:a.enum(["public","private","organization"]).optional(),page:a.number().optional(),limit:a.number().optional()}),a.object({snippets:a.array(Ar),total:a.number(),page:a.number(),limit:a.number(),hasMore:a.boolean()}),a.object({snippetId:a.string(),rating:a.number(),off:a.boolean().optional()}),a.object({average:a.number(),total:a.number()}),a.object({success:a.boolean(),error:a.string().optional()}),a.object({snippet:a.lazy((()=>a.object({title:a.string(),shortDescription:a.string(),category:a.string(),tags:a.array(a.string()),iconSvg:a.string(),contents:a.string(),descriptionMarkdown:a.string(),githubUrl:a.string().optional(),visibility:a.enum(["public","private","organization"]),deletedAt:a.string().optional()})))}),a.object({snippet:a.lazy((()=>a.object({title:a.string(),shortDescription:a.string(),category:a.string(),tags:a.array(a.string()),iconSvg:a.string(),contents:a.string(),descriptionMarkdown:a.string(),githubUrl:a.string().optional(),visibility:a.enum(["public","private","organization"])})))}),a.object({snippet:Tr}),a.object({snippet:Tr}),a.object({snippetId:a.string(),version:a.number()}),a.object({snippet:Tr});let Mr=null;var Pr=()=>{if(!Mr)throw new Error("Required function is not set");return Mr};class Dr extends Error{targetWidgetId;targetPortName;sourcePortName;sourceWidgetId;targetWidgetType;sourceWidgetType;constructor(e,t){super(e),this.name="ChildWidgetError",t.stack&&(this.stack=t.stack),this.targetWidgetId=t.targetWidgetId,this.targetPortName=t.targetPortName,this.sourcePortName=t.sourcePortName,this.sourceWidgetId=t.sourceWidgetId,this.targetWidgetType=t.targetWidgetType,this.sourceWidgetType=t.sourceWidgetType}}class jr extends Error{constructor(e,t){super(e),this.name="UserCodeError",t&&(this.stack=t)}}const Rr=(e,t)=>`\n\t\tfunction _user_code_(){\n\t\t\t${t===gr.Browser?"\n\t\t\tvar global = {\n\t\t\t\t__user_code: true\n\t\t\t};\n\t\t\tvar process = {};\n\t\t\tvar globalThis = global;\n\t\t\tvar require = this.___notSupportedMethod;\n\t\t\t":"\n\t\t\tvar require = this.require;\n\t\t\tvar process = this.kemuProcess;\n\t\t\t"}\n\t\t\t\n\t\t\tvar console = this.console;\n\t\t\tvar eval = () => {};\n\t\t\tvar document = {};\n\t\t\tvar navigator = {};\n\t\t\tvar window = this.window;\n\t\t\tvar alert = this.notify.info;\n\t\t\tvar DataType = this.dataTypesEnum;\n\t\t\tvar setInterval = this.setInterval;\n\t\t\tvar setTimeout = this.setTimeout;\n\t\t\tvar addEventListener = this.addEventListener;\n\t\t\tvar removeEventListener = this.removeEventListener;\n\t\t\tvar requestAnimationFrame = this.___notSupportedMethod;\n\t\t\tvar __delay = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms, reject));\n\t\t\tvar sendToPort;\n\t\t\t// Updated function to send data to the next widget using new object syntax\n\t\t\tvar setOutput;\n\n\t\t\tvar Kemu = {\n\t\t\t\timage: this.imageHelpers,\n\t\t\t\tvariable: this.variablesManager,\n\t\t\t\tstatus: this.statusManager,\n\t\t\t\tsecrets: this.secretsManager,\n\t\t\t\tglobalVars: this.globalVariablesManager,\n\t\t\t\thelpers: {\n\t\t\t\t\tdecodeDataType: this.decodeDataType,\n\t\t\t\t\tcryptoJS: this.CryptoJS,\n\t\t\t\t\tjsonp: this.jsonp,\n\t\t\t\t\thttp: this.http,\n\t\t\t\t\tdelay: __delay,\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t\n\n\t\t\t// --- User Methods Start ---\n\t\t\t${e||""};\n\t\t\t// --- User Methods End ---\n\t\t\t\n\t\t\t// Processes the user code asynchronously.\n\t\t\tconst asyncProcessEvent = async (targetPort, sourcePort, event) => {\n\t\t\t\tlet userProcessEvent = typeof processEvent === 'undefined' ? undefined : processEvent;\n\t\t\t\tlet userOnParentEvent = typeof onParentEvent === 'undefined' ? undefined : onParentEvent;\n\t\t\t\t\n\n\t\t\t\tif(userProcessEvent || userOnParentEvent) {\n\t\t\t\t\ttry{\n\t\t\t\t\t\tif(userProcessEvent) {\n\t\t\t\t\t\t\treturn await userProcessEvent(targetPort, sourcePort, event);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn await userOnParentEvent({ targetPort, sourcePort, event });\n\t\t\t\t\t\t}\n\t\t\t\t\t}catch(e){\n\t\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** invoked the very first time the recipe is initialized */\n\t\t\tconst asyncRecipeInit = async (context) => {\n\t\t\t\ttry {\n\t\t\t\t\tif(typeof recipeInit === 'function') {\n\t\t\t\t\t\treturn recipeInit(context);\n\t\t\t\t\t}\n\t\t\t\t}catch(e){\n\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** invoked every time the code is about to be replaced */\n\t\t\tconst asyncOnTerminate = async (context) => {\n\t\t\t\ttry {\n\t\t\t\t\tif(typeof onTerminate === 'function') {\n\t\t\t\t\t\treturn onTerminate(context);\n\t\t\t\t\t}\n\t\t\t\t}catch(e){\n\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** updates the function that allows widget contexts to send data to the next widget */\n\t\t\tconst setSendToPort = (sendNextFun) => {\n\t\t\t\tsendToPort = sendNextFun;\n\t\t\t}\n\n\t\t\t/** updates the function that allows widget contexts to send data to the next widget with the new object argument syntax */\n\t\t\tconst setSetOutputFn = (setOutputFn) => {\n\t\t\t\tsetOutput = setOutputFn;\n\t\t\t}\n\n\t\t\t/** invoked the every time the user code is compiled. */\n\t\t\tconst asyncMainEvent = async (sendNextFun) => {\n\t\t\t\ttry{\n\t\t\t\t\t// setSendToPort(sendNextFun);\n\t\t\t\t\tif(typeof main === 'function'){\n\t\t\t\t\t\treturn main();\n\t\t\t\t\t}\n\t\t\t\t}catch(e){\n\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tasyncProcessEvent: asyncProcessEvent,\n\t\t\t\tmain: asyncMainEvent,\n\t\t\t\trecipeInit: asyncRecipeInit,\n\t\t\t\tsetSendToPortFun: setSendToPort,\n\t\t\t\tsetSetOutputFn: setSetOutputFn,\n\t\t\t\tonTerminate: asyncOnTerminate,\n\t\t\t\tgetLocalContext: () => global,\n\t\t\t\tgetWidgetInputs: typeof getWidgetInputs === 'undefined' ? undefined : getWidgetInputs,\n\t\t\t\tgetWidgetOutputs: typeof getWidgetOutputs === 'undefined' ? undefined : getWidgetOutputs,\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn function compiler(context){\n\t\t\treturn _user_code_.call(context)\n\t\t}\n\n\t\treturn compiler;\n\t`,Lr=(e,t,n,r)=>{const i=Rr(e,n),a={...t,document:{},__errorTracer:e=>{if(e instanceof Dr)throw e;throw new jr(e.message,e.stack)},__jest:void 0===globalThis.__jest?void 0:globalThis.__jest,___notSupportedMethod:()=>r?.error("This method is not supported."),console:{...t.logger},setInterval:()=>r?.error("'setInterval' is not supported. Please use a \"Timer\" widget instead."),setTimeout:t?.setTimeout,imageHelpers:tr.image,...n===gr.Cloud?{require:Pr(),kemuProcess:process.env.KEMU_PROCESS?process.env.KEMU_PROCESS:{}}:{},jsonp:o,CryptoJS:s,decodeDataType:nr,window:{addEventListener:t?.addEventListener,removeEventListener:t?.removeEventListener}};try{const e="browser"===(()=>{if(te)return"browser";if(re)return"node";if(ne)return"worker";throw new Error("Unsupported environment")})()?(e=>e.replace(/[//]{2}[ ]*@kemu-cloud[ \t]*\{[\s\S]*?[//]{2}[ ]*@kemu-cloud[ \t]*\}/gim,""))(i):(e=>e.replace(/[//]{2}[ ]*@kemu-browser[ \t]*\{[\s\S]*?[//]{2}[ ]*@kemu-browser[ \t]*\}/gim,""))(i),t=new Function(e);return{compiledModule:t()(a)}}catch(e){return{error:{name:"CompileError",message:e.message,stack:e.stack}}}},Fr="main",Ur="My Script",Wr="This is a test script.",Br=`\n/**\n * Name: ${Ur}\n * Description: ${Wr}\n */\n\nconst getWidgetInputs = () => [\n\t{ name: 'Input 1', type: DataType.Number }\n];\n\nconst getWidgetOutputs = () => [\n\t{ name: 'Output 1', type: DataType.Number }\n]\n\nlet counter = 0;\n\nconst onParentEvent = async ({ targetPort, sourceWidget, event }) => {\n\tif(targetPort.name === 'Input 1'){\n\t\treturn setOutput({\n\t\t\tport: 'Output 1',\n\t\t\tdata: {\n\t\t\t\ttype: DataType.Number,\n\t\t\t\tvalue: counter++,\n\t\t\t}\n\t\t});\n\t}\n}\n`.trim(),Gr=()=>({pauseExecution:!1,autoPauseOnError:!0,$$eventListeners:{},version:2,metadata:{name:Ur,description:Wr},pages:{[Fr]:{code:Br,language:"javascript",name:"My First Script"}}}),Vr=(e,t)=>{const n={message:"Unknown Error"};if(e?.stack){const r=e?.stack?.split(":")[0].trim();n.type=r;const i=(e=>{const t=/,[ ]?<anonymous>:([0-9]+:[0-9]+)\)/gm;let n;for(;null!==(n=t.exec(e));){n.index===t.lastIndex&&t.lastIndex++;const e=n[1].split(":");if(2===e.length)return{line:Number(e[0])||0,column:Number(e[1])||0}}return null})(e.stack);i&&(n.line=i.line-(e=>{const t="___user_code_section___";return Rr(t,e).split(t)[0].split("\n").length+2})(t),n.column=i.column)}return e.message&&(n.message=e.message),n},Yr=(e,t)=>{const n={...{...Gr(),...t.getState()},$$error:e||void 0};e&&console.error(e.message),t.setState(n)},Hr=new c;let zr,qr,Kr={},Jr={};const Zr=e=>{const t=ue(zr,qr,e);if(!t)throw new Error(`Widget ${e} not found in thing ${qr}`);return t},Xr=(e,t)=>`${e}:${t}`,Qr=e=>`${Zr(e.createdByWidgetId).id}::${e.variableName}`,ei=e=>`${pe}${e}`;var ti=e=>{const t=Zr(e.createdByWidgetId),n=Qr({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});Jr[n]={type:e.type,subscriberWidgetId:t.id,subscriberWidgetType:t.type}},ni=e=>{const t=Qr({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});delete Jr[t]},ri=async e=>{const t=Zr(e.setByWidgetId);if(!t)throw new Error(`Widget ${e.setByWidgetId} not found in thing ${qr} in recipe ${zr}`);const n=e.variableName.startsWith(pe)?Qr({variableName:e.variableName,createdByWidgetId:e.setByWidgetId}):e.variableName;Kr[n]={value:e.value,type:e.type};const r={value:e.value,type:e.type,varName:e.variableName,isUIElement:e.variableName.startsWith(pe),setByWidgetType:t.type,setByWidgetId:e.setByWidgetId};await Hr.emit(Xr(e.variableName,e.type),r),e.type!==ye.Anything&&await Hr.emit(Xr(e.variableName,ye.Anything),r)},ii=e=>{const{readerWidgetId:t,variableName:n}=e;if(!Zr(t))throw new Error(`Widget ${t} not found in thing ${qr} in recipe ${zr}`);const r=n.startsWith(pe)?Qr({variableName:e.variableName,createdByWidgetId:e.readerWidgetId}):n,i=Kr[r];if(i)return{type:i.type,value:i.value}},oi=e=>{const{widgetId:t,variableName:n,type:r}=e;if(!Zr(t))throw new Error(`Widget ${t} not found in thing ${qr} in recipe ${zr}`);const i=Xr(n,r);let o;return o=Hr.on(i,(async r=>{ue(zr,qr,t)?await e.onValueChange(r):(console.warn(`Zombie widget ${t} detected, unsubscribing from variable events "${n}"`),o?.())})),o},si=e=>{Jr={},Kr={},zr=e.recipePoolId,qr=e.thingId};const ai="setTimeout",ci="variableChanged",li="globalVariableChanged",ui=e=>{const{recipePoolId:t,thingId:n,scriptWidgetId:r}=e,i=ue(t,n,r);if(!i)throw new Error(`Widget "${r}" not found in recipe "${t}"`);const o=(e,t)=>{const n=ii({readerWidgetId:r,variableName:e});if(n||t)return void 0===n?{value:t?.value??t,type:t?.type??We(t)}:{value:n.value,type:n.type}},s=(t,n,o)=>{if(!e.setState)return void console.warn("Cannot subscribe to variable changes without a setState function");const s={...Gr(),...e.getState()},a=oi({variableName:t,type:ye.Anything,widgetId:r,onValueChange:async e=>{n?e.setByWidgetType===Ke.widgetGroup&&e.setByWidgetId===i.groupId&&await o(e):o(e)}});delete s.$$eventListeners[t],s.$$eventListeners[t]={handler:o,abort:async()=>{a()},name:ci},e.setState(s)};return{get:o,set:async(e,t,n)=>{await ri({variableName:e,type:n||We(t),setByWidgetId:r,value:t})},onValueChange:(e,t)=>{s(e,!1,t)},onUIValueChange:(e,t)=>{const n=ei(e);s(n,!0,t)},getUIValue:e=>{const r=ei(e),s=o(r);if(s)return{value:s.value,type:s.type};const a=i.groupId;if(!a)throw new Error("You can only read UI variables from inside a widgetGroup");const c=ue(t,n,a);if(!c)throw new Error(`Widget "${a}" not found in recipe "${t}"`);const l=c.state,u=(l.settings||[]).find((t=>t.variableName===e));if(!u)throw new Error(`Field "${e}" not found in widgetGroup "${l.name}"`);const d=u.config.defaultValue;if(void 0===d)throw new Error(`Field "${e}" in widgetGroup "${l.name}" has no default value`);return{value:d,type:We(d)}}}};let di;var hi=e=>{di=e},fi=()=>{if(!di)throw new Error("Hub Connector not set");return di};const pi=new c,gi="invoked";let mi={},yi={},vi={},bi={};const wi=(e,t,n)=>`${e}-${t}${n?`-${n}`:""}`;var Si=e=>{const{data:t,thingId:n,widgetId:r,sourcePortName:i,recipeId:o,target:s,sourceOutputNames:a,currentPath:c,eventId:l}=e,u=wi(n,r,i),d=wi(n,r),h=wi(n,r,"produced"),f=vi[d],p=Date.now();bi[d]=p,mi[u]={data:t,recipeId:o,currentPath:c,eventId:l,source:{widgetId:r,portName:i},sourceOutputNames:a,...s?{target:{widgetId:s.widgetId,portName:s.portName}}:{}},pi.emit(h,{currentTime:p,prevTime:f,...s?{targetPort:s?.portName}:{}})},_i=e=>{const{thingId:t,widgetId:n,targetPortName:r,data:i,source:o,originalEvent:s,recipeId:a,sourceOutputNames:c,currentPath:l,eventId:u}=e,d=wi(t,n,r),h=wi(t,n),f=wi(t,n,gi),p=vi[h],g=Date.now();vi[h]=g,yi[d]={data:i,recipeId:a,originalEvent:s,sourceOutputNames:c,currentPath:l,eventId:u,target:{widgetId:n,portName:r},...o?{source:{widgetId:o.widgetId,portName:o.portName}}:{}},pi.emit(f,{prevTime:p,currentTime:g,targetPort:r,sourceInfo:o})},Ii=()=>{mi={},yi={},vi={},bi={},pi.clearListeners()};const xi=e=>{const{recipePoolId:t,widgetId:n,secrets:r,clearExistingSecrets:i}=e,o=le({recipeId:t,widgetId:n});if(!o)throw new Error(`Widget [${n}] not found in recipe [${t}]`);i&&(o.secrets={});for(const e of r)o.secrets={...o.secrets,[e.name]:e}},ki=e=>{const{recipePoolId:t,widgetId:n}=e,r=le({recipeId:t,widgetId:n});if(!r)throw new Error(`Widget [${n}] not found in recipe [${t}]`);delete r.secrets},Ei={},Ci="value",$i=async e=>{const{recipeUuid:t,secretNames:n,serviceName:r}=e,i=fi(),o=[{recipeUuid:t,secretNames:n,serviceName:r}];let s={};try{const e=await i.executeHubFunction(Se.GetRecipeDecryptedSecretsValues,o);e&&(s=e[0].secrets)}catch(e){if("FNC_NOT_FOUND"===e.errCode)throw new Error("Your Hub does not support dynamic secrets. Please update your Hub to the latest version.");throw new Error(`Failed to read secret "${n.join(", ")}" from Hub: ${e.message}`)}return s},Oi=e=>{const t=ae(e);if(!t)throw new Error(`Recipe [${e}] does not exist]`);return{uuid:t.uuid,recipeType:t.dbInfo?.recipeType}};var Ni={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};if(!i.name||!e)return;const{uuid:o}=Oi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=r.recipeType===me.Desktop,a=Ei[r.id]?.[i.name];let c=a;if(!a||a&&!s){const e=await $i({recipeUuid:o,secretNames:[i.name]});c=e?.[i.name],null!=c&&s&&(Ei[r.id]||(Ei[r.id]={}),Ei[r.id][i.name]=c)}if(null==c)throw new Error(`Secret "${i.name}" not mapped to this recipe`);r.nextWidget(Ci,{type:ye.String,value:c})},getOutputNames:()=>[{name:Ci,type:ye.String}],getInputNames:()=>[{name:"read",type:ye.Anything}],terminate:async e=>{Ei[e.widgetId]={},ki({recipePoolId:e.recipePoolId,widgetId:e.widgetId})},initialize:async e=>{const t={name:"",...e.getState()};t.name&&(Ei[e.widgetId]={},xi({recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:[{name:t.name}]}))}};const Ti={},Ai=e=>{const{recipePoolId:t,thingId:n,scriptWidgetId:r}=e,i=ae(t),o=i?.dbInfo.recipeType,s=Oi(t).uuid,a=ue(t,n,r);return{secretsManager:{requestAccess:e=>{a&&(a.secrets={...a.secrets,[e]:{name:e}})},read:async e=>{if(!a)return e.reduce(((e,t)=>(e[t]=null,e)),{});const t=o===me.Desktop,n={};let i=[];for(const t of e){const e=Ti[r]?.[t];null==e&&i.push(t)}if(t||(i=e),i.length>0){const t=await $i({recipeUuid:s,secretNames:i});for(const i of e){const e=t?.[i],o=Ti[r]?.[i];n[i]=void 0!==e?e:void 0!==o?o:null}Ti[r]={...Ti[r],...n}}else for(const t of e)n[t]=Ti[r]?.[t]||null;return n}},unregisteredSecrets:()=>{a&&(a.secrets={})}}},Mi=new c;let Pi={};const Di="statusValueChanged",ji="keyRemovedFromWidget",Ri=()=>{Pi={}},Li=()=>{Mi.clearListeners()},Fi=e=>{Mi.emit(Di,e)};var Ui=e=>{const{name:t,value:n,sourceWidget:r,widgetId:i,widgetType:o}=e;Pi[i]=Pi[i]||[];const s=Pi[i].find((e=>e.name===t&&e.widgetType===o&&e.widgetId===i));s?s.data=n:Pi[i].push({name:t,data:n,sourceWidget:r,widgetId:i,widgetType:o});let a=n;null===n&&(a={type:ye.Anything,value:""}),Fi({name:t,value:a,sourceWidget:r,statusWidgetId:i,widgetType:o})},Wi=e=>Mi.on(Di,e),Bi=()=>{Ri(),Li()},Gi=e=>{const t=()=>{const e=[];for(const t in Pi)for(const n of Pi[t])e.push(n.name);return e},n=t();delete Pi[e];(e=>{Mi.emit(ji,e)})({before:n,after:t()})};const Vi=e=>{const{scriptWidgetId:t}=e;return{statusManager:{set:(e,n)=>{let r=null;r=n&&"object"==typeof n&&"value"in n&&"type"in n||null==n||void 0===n?n:{type:We(n),value:n},Ui({name:e,sourceWidget:t,widgetId:t,value:r,widgetType:Ke.script})}},clearStatusValues:()=>{Gi(t)}}},Yi=new c,Hi=e=>`globalVariableChange_${e}`,zi=e=>`globalVariableRenamed_${e}`;let qi={};const Ki=e=>{const{name:t,notify:n=!0}=e,r=Zi(t);r&&(n&&Yi.emit("globalVariableRemoved",r),delete qi[t])},Ji=()=>{for(const e in qi)Ki({name:e,notify:!0})},Zi=e=>qi[e]??null,Xi=async e=>{const{value:t,lastDataType:n,controlType:r,widgetId:i,doNotOverrideExisting:o=!1,executionContext:s,helpText:a,order:c,forceValueChangeNotification:l=!1,disableChangeNotifications:u=!1,disableDefineNotifications:d=!1}=e;let{controlSettings:h,name:f}=e;if(!f)throw new Error("name is required");f=f.replace(/-/g,"_");let p=Zi(f);const g=!p;if(g)p={},h||(h=(e=>{switch(e){case"number":case"slider":return{min:0,max:100,step:1};case"dropdown":case"multiSelect":return{options:[]};case"binaryFile":return{allowedMimeTypes:[]};default:return{}}})(r??"anything"));else if(o)return;const m=n??(t?We(t):null),y=t!==p.lastValue;p.lastDataType=m,p.lastValue=t,p.controlType=r??p.controlType??"anything",p.lastChangedByWidgetId=i??null,p.lastExecutionContext=s??null,p.helpText=a??p.helpText,p.controlSettings=h??p.controlSettings,p.name=f,p.order=c??p.order,qi[f]=p,u||null!==t&&(y||l)&&(await Yi.emit(Hi(f),p),await Yi.emit("globalVariableChange_any",p)),g&&!d&&await Yi.emit("globalVariableDefined",p)},Qi={resetAllGlobalVariables:Ji,getGlobalVariable:Zi,setGlobalVariable:Xi,onGlobalVariableChange:(e,t)=>Yi.on(Hi(e),t),deleteGlobalVariable:Ki,onGlobalVariableDefined:e=>Yi.on("globalVariableDefined",e),onGlobalVariableRemoved:e=>Yi.on("globalVariableRemoved",e),onGlobalVariableRenamed:(e,t)=>Yi.on(zi(e),t),onAnyGlobalVariableChange:e=>Yi.on("globalVariableChange_any",e),getAllVariables:()=>Object.values(qi),renameVariable:e=>{const{oldName:t,newName:n}=e,r=Zi(t);if(!r)throw new Error("Global variable not found");Ki({name:t,notify:!1}),Xi({name:n,controlSettings:r.controlSettings,value:r.lastValue,lastDataType:r.lastDataType??null,controlType:r.controlType,widgetId:r.lastChangedByWidgetId??void 0,executionContext:r.lastExecutionContext??void 0,helpText:r.helpText??void 0,order:r.order??void 0}),Yi.emit(zi(t),{oldName:t,newName:n})},registerGlobalVariables:e=>{Ji(),qi={};for(const t of e)qi[t.name]=t}},eo="kemu.io.scriptHttp",to=e=>{const{recipePoolId:t,widgetId:n,httpConfig:r}=e,i=fi();let o;const s=(e=>e.find((e=>e.name===eo&&e.internal))||null)(i.getCachedServices().available);if(!s)throw new Error("HTTP service not found");const a={listener:{recipeId:t},targetService:{serviceName:eo,version:"1.0.0"}};i.subscribeToServiceEvents(a);const c=i.onBroadcastEvent(n,eo,"1.0.0",(e=>{const t=e.outputs?.find((e=>"stream"===e.name));if(t){const e=t.value;o=e.requestId,r.onStream&&r.onStream(e)}})),l=he(t),u={currentState:{},recipe:l,recipeType:l.type,widgetId:n,recipeId:t},d=(e,t)=>i.callProcessorHandler(s.sessionId,u,e,t,{timeout:0});return{promise:d("send",r),abort:async()=>{c(),o&&await d("abort",{requestId:o})}}},no="__command-compile__",ro={};let io;const oo=()=>{throw new Error("Method not implemented")},so=e=>{const{features:t,widgetContext:n,widgetEnvInfo:i}=e,o=(e,...t)=>{const r={...Gr(),...n.getState()}.$$eventListeners[e];r&&r.handler(t)},s={};Object.keys(ye).forEach((e=>{s[e]=ye[e]}));const a=Ai({recipePoolId:i.recipePoolId,thingId:i.thingId,scriptWidgetId:i.widgetId}),c=Vi({scriptWidgetId:i.widgetId}),l=(e=>{const{scriptWidgetId:t}=e,n=(t,n)=>{if(!e.setState)return void console.warn("Cannot subscribe to global variable changes without a setState function");const r={...Gr(),...e.getState()},i=async e=>{const t={name:e.name,value:e.lastValue,type:e.lastDataType,controlType:e.controlType};try{await n(t)}catch(e){console.error("Error in global variable change handler:",e)}},o=t?Qi.onGlobalVariableChange(t,i):Qi.onAnyGlobalVariableChange(i),s=t?`globalVar_${t}`:"anyGlobalVar";t&&r.$$eventListeners[s]&&delete r.$$eventListeners[s],r.$$eventListeners[s]={handler:n,abort:async()=>{o()},name:li},e.setState(r)};return{get:e=>{const t=Qi.getGlobalVariable(e);return t?{name:t.name,value:t.lastValue,type:t.lastDataType,controlType:t.controlType}:null},set:async e=>{const n=e.type?e.type:We(e.value);await Qi.setGlobalVariable({name:e.name,value:e.value,lastDataType:n,helpText:e.helpText,order:e.order,controlType:e.controlType??"anything",controlSettings:e.controlSettings,widgetId:t,disableChangeNotifications:!(e.emitChangeEvent??1),disableDefineNotifications:!(e.emitDefineEvent??1)})},onValueChange:(e,t)=>{n(e,t)},onAnyValueChange:e=>{n(null,e)}}})({scriptWidgetId:i.widgetId,getState:n.getState,setState:n.setState});a.unregisteredSecrets(),c.clearStatusValues(),ro[i.widgetId]?.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}));return{logger:lo(),dataTypesEnum:s,recipePoolId:i.recipePoolId,widgetId:i.widgetId,http:e=>{const{promise:t,abort:n}=to({httpConfig:e,recipePoolId:i.recipePoolId,widgetId:i.widgetId});ro[i.widgetId]={abortHttp:n};return t.abort=async()=>{delete ro[i.widgetId],await n()},t},notify:{success:e=>{n.getState()?.$$managedUI?.notify?.success(e)},error:e=>{n.getState()?.$$managedUI?.notify?.error(e)},info:e=>{n.getState()?.$$managedUI?.notify?.info(e)}},variablesManager:t.variablesManager?ui({recipePoolId:i.recipePoolId,scriptWidgetId:i.widgetId,thingId:i.thingId,getState:n.getState,setState:n.setState}):{get:oo,set:async()=>oo(),onValueChange:oo,onUIValueChange:oo,getUIValue:oo},statusManager:c.statusManager,secretsManager:a.secretsManager,globalVariablesManager:l,setTimeout:(e,o,s)=>{if(t.withTimers&&n&&n.setState&&n.registerInterrupt){const t=r(),a={...Gr(),...n.getState()};a.$$eventListeners[t]={handler:e,rejectHandler:s,name:ai},n.setState(a),n.registerInterrupt({type:"timeout",customTargetPortName:t,sourceWidgetId:i.widgetId,config:{timeout:o},customId:t})}},addEventListener:(e,t)=>{if(n.setState){const i=r(),s={...Gr(),...n.getState()};s.$$eventListeners[i]={handler:t,name:e},n.setState(s),window.addEventListener(e,o.bind(i))}else console.warn(`Cannot remove event listener '${e}' because the widget context is not available.`)},removeEventListener:(e,t)=>{if(n.setState){const r={...Gr(),...n.getState()},i=Object.keys(r.$$eventListeners).find((n=>r.$$eventListeners[n].name===e&&r.$$eventListeners[n].handler===t));n.setState(r),i&&removeEventListener(r.$$eventListeners[i].name,r.$$eventListeners[i].handler)}else console.warn(`Cannot remove event listener '${e}' because the widget context is not available.`)}}},ao=(e,t,n)=>{const r={...Gr(),...n.getState()},i=r.pages[Fr].$$compiledCode;if(i)return{compiledModule:i};{const i=so({features:e,widgetContext:n,widgetEnvInfo:t});return Lr(r.pages[Fr].code,i,n.recipeType)}},co=e=>e.map((e=>({...e,name:e.name.replace("_","")}))),lo=()=>{const e=(e,...t)=>{if(io)try{return io[e](...t)}catch(e){return void console.log("Error in custom logger: ",e)}console[e](...t)};return{log:(...t)=>{e("log",...t)},error:(...t)=>{e("error",...t)},warn:(...t)=>{e("warn",...t)},info:(...t)=>{e("info",...t)}}},uo=async(e,t)=>{const n={...e};for(const r in e){if(e[r].name===ai){const e=n[r]?.rejectHandler;if("function"==typeof e)try{await e("TIMER_ABORTED")}catch(e){console.log("Error in reject interrupt handler: ",e)}t.cancelInterrupt(r),delete n[r]}}return n},ho=async e=>{const t={...e};for(const r in e){if((n=e[r]).name===ci||n.name===li){const n=e[r]?.abort;if("function"==typeof n)try{await n()}catch(e){console.log("Error in abort interrupt handler: ",e)}delete t[r]}}var n;return t},fo=async(e,t,n)=>{let r={...Gr(),...e.getState()};if(void 0!==n){r.pages[Fr]?.$$compiledCode?.onTerminate&&await(r.pages[Fr].$$compiledCode?.onTerminate());let t=await uo(r.$$eventListeners,e);t=await ho(t),r.$$eventListeners=t,r.pages[Fr].$$compiledCode=void 0,r.pages[Fr].code=n,e.setState({...r})}const i=!r.pages[Fr].$$compiledCode,{compiledModule:o,error:s}=ao({variablesManager:!0,withTimers:!0},{recipePoolId:e.recipePoolId,thingId:e.thingRecipeId,widgetId:e.id},{getState:e.getState,setState:e.setState,recipeType:e.recipeType,registerInterrupt:e.registerInterrupt});if(s){console.log("Failed to compile user code");const t=Vr(s,e.recipeType);return Yr(t,e),null}if(o){let n;r={...e.getState()},r.pages[Fr].$$compiledCode=o;const s=po(r.pages[Fr].code);s?.name===r.metadata?.name&&s?.description===r.metadata?.description||(r.metadata=s||void 0);const a=e.nextWidget||e.nextGate;if(a&&o.setSendToPortFun(a),e.invokeNextWidget&&o.setSetOutputFn(e.invokeNextWidget),t)try{await o.recipeInit({setState:e.setState,getState:e.getState})}catch(t){n=Vr(t,e.recipeType)}if(a&&i)try{await o.main()}catch(t){n=Vr(t,e.recipeType)}r.$$lastInputs=o.getWidgetInputs?o.getWidgetInputs():[],r.$$lastOutputs=o.getWidgetOutputs?o.getWidgetOutputs():[],e.setState(r),Yr(n,e)}},po=e=>{const t=e.trimStart().match(/^(?:\/\*\*(?:[^*]|\*(?!\/))*\*\/|\/\*(?:[^*]|\*(?!\/))*\*\/)/);if(!t)return null;const n=t[0].replace(/^\/\*\*?/,"").replace(/\*\/$/,"").split("\n").map((e=>e.replace(/^\s*\*?\s?/,"").trim())).join("\n"),r=n.match(/Name\s*:\s*([^]*?)(?=\n\s*[A-Za-z]+\s*:|$)/i),i=n.match(/Description\s*:\s*([^]*?)(?=\n\s*[A-Za-z]+\s*:|$)/i),o={};return r&&r[1]&&(o.name=r[1].trim()),i&&i[1]&&(o.description=i[1].trim()),Object.keys(o).length>0?o:null};var go={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Gr(),...i};if(!o.pages[Fr])return console.warn("Missing default page");if(Re(e?.name||""))return o.$$eventListeners[t.name]?(await o.$$eventListeners[t.name].handler(),o.$$eventListeners[t.name].name===ai&&delete o.$$eventListeners[t.name],void r.setState({...o})):void console.log(`Unknown interrupt id [${t.name}] `);const s=t.name===no;await fo(r,!1,s?n.data.value:void 0);const a=o.pages[Fr].$$compiledCode;if(e&&e.name!==no&&a)try{await a.asyncProcessEvent(t,e,{...n,executionContext:{currentPath:r.currentPath,eventId:r.eventId}})}catch(e){if("UserCodeError"===e.name){const t=Vr(e,r.recipeType);throw Yr(t,r),t}throw e}},getInputNames:(e,t)=>{const n={...Gr(),...e},{compiledModule:r}=ao({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetInputs){const e=r.getWidgetInputs();return co(e)}return e.$$lastInputs||[]},getOutputNames:(e,t)=>{const n={...Gr(),...e},{compiledModule:r}=ao({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetOutputs){const e=r.getWidgetOutputs();return co(e)}return e.$$lastOutputs||[]},getDefaultState:Gr,initialize:async e=>{const t=e.getState(),n={...Gr(),...t};n.pages[Fr].code&&await fo({getState:e.getState,id:e.widgetId,recipePoolId:e.recipePoolId,recipeType:e.recipeType,registerInterrupt:e.registerInterrupt,setState:e.setState,nextWidget:e.nextWidget,invokeNextWidget:e.invokeNextWidget,thingRecipeId:e.thingRecipeId,cancelInterrupt:()=>!0},!0,n.pages[Fr].code)},terminate:async e=>{try{const t=e.getState();t.pages[Fr].$$compiledCode?.onTerminate&&await t.pages[Fr].$$compiledCode.onTerminate();const n=e=>tt.destroyInterrupt(e),r=await uo(t.$$eventListeners,{cancelInterrupt:n});await ho(r);const i=Vi({scriptWidgetId:e.widgetId});Ai({recipePoolId:e.recipePoolId,thingId:e.thingRecipeId,scriptWidgetId:e.widgetId}).unregisteredSecrets(),i.clearStatusValues();for(const e of Object.values(ro))e.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}))}catch(t){console.warn(`Error terminating script widget ${e.widgetId}: `,t)}}};const mo=new Map,yo=e=>(mo.has(e)||mo.set(e,Ce(320,240)),mo.get(e)),vo=Object.freeze({image:"image"}),bo=Object.freeze({base64:"base64"}),wo=()=>({});var So={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};if(t.name===bo.base64){if("string"!=typeof n.data.value)return;if(n.data.type!==ye.String&&n.data.type!==ye.Anything)return;const e=n.data.value,t=yo(r.id);try{const n=await ze({base64Str:e,memoryCanvas:t,finalW:i.resize?.width,finalH:i.resize?.height});return r.setState(i),r.nextGate(vo.image,{type:ye.ImageData,value:n})}catch(e){console.log("[base64ToImageData] Error: ",e)}}},getInputNames:()=>[{name:bo.base64,type:ye.String}],getOutputNames:()=>[{name:vo.image,type:ye.ImageData}],getDefaultState:wo,initialize:async e=>{yo(e.widgetId)},terminate:async e=>{mo.delete(e.widgetId)}};const _o=Object.freeze({object:"object",error:"error"}),Io=Object.freeze({string:"string"}),xo=()=>({outputIsArray:!1});var ko={onParentEvent:async(e,t,n,r)=>{const i={outputIsArray:!1,...r.getState()};if((n.data.type===ye.String||n.data.type===ye.Anything)&&"string"==typeof n.data.value)try{const e=JSON.parse(n.data.value),t=Array.isArray(e);return t&&!i.outputIsArray?r.setState({...i,outputIsArray:!0}):!t&&i.outputIsArray&&r.setState({...i,outputIsArray:!1}),r.nextGate("object",{type:t?ye.Array:ye.JsonObj,value:e})}catch(e){return r.nextGate("error",{type:ye.Boolean,value:!0})}},getInputNames:()=>[{name:Io.string,type:ye.String}],getOutputNames:e=>[{name:_o.object,type:[ye.JsonObj,ye.Array],label:e.outputIsArray?"array":_o.object},{name:_o.error,type:ye.Boolean}],getDefaultState:xo};const Eo=Object.freeze({string:"string",length:"length"}),Co=Object.freeze({trigger:"trigger",setText:"setText"}),$o=()=>({text:"",dispatchOnSet:!1});var Oo={onParentEvent:async(e,t,n,r)=>{const i={text:"",dispatchOnSet:!1,...r.getState()};if(t.name===Co.setText){if(!((n.data.type===ye.String||n.data.type===ye.Anything)&&"string"==typeof n.data.value))return;if("string"==typeof n.data.value&&(i.text=n.data.value,r.setState(i)),!i.dispatchOnSet)return}const o=r.nextGate(Eo.length,{type:ye.Number,value:i.text.length}),s=r.nextGate(Eo.string,{type:ye.String,value:i.text});await Promise.all([o,s])},getInputNames:e=>{const t=[{name:Co.setText,type:ye.String}];return e.dispatchOnSet||t.push({name:Co.trigger,type:ye.Anything}),t},getOutputNames:()=>[{name:Eo.string,type:ye.String},{name:Eo.length,type:ye.Number}],getDefaultState:$o};const No=Object.freeze({image:"image"}),To=Object.freeze({image:"image",x:"x",y:"y",width:"width",height:"height"}),Ao=()=>({showInputPorts:!1});var Mo={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===To.x&&(i.cropX=n.data.value),t.name===To.y&&(i.cropY=n.data.value),t.name===To.width&&(i.cropWidth=n.data.value),t.name===To.height&&(i.cropHeight=n.data.value),void r.setState(i);if(t.name===To.image){if(n.data.type!==ye.ImageData&&n.data.type!==ye.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ce(320,240),i.$$memCanvasContext=$e(i.$$memCanvas),r.setState(i)),!i.$$memCanvas||!i.$$memCanvasContext)return void console.error("Failed to get canvas or context");let t=e;return i.$$memCanvas.width=e.width,i.$$memCanvas.height=e.height,(i.cropX||i.cropY||i.cropWidth||i.cropHeight)&&(t=((e,t,n,r)=>{if(!n)return e;const i=Math.max(r.x||0,0),o=Math.max(r.y||0,0),s=e.width,a=e.height,c=Math.min(Math.ceil(r.width||s),s),l=Math.min(Math.ceil(r.height||a),a);return t.width=e.width,t.height=e.height,n.putImageData(e,0,0),n.drawImage(t,i,o,c,l,0,0,c,l),n.getImageData(0,0,c,l)})(e,i.$$memCanvas,i.$$memCanvasContext,{x:i.cropX,y:i.cropY,width:i.cropWidth,height:i.cropHeight})),r.nextGate(No.image,{type:ye.ImageData,value:t})}},getInputNames:e=>{const t=[{name:To.image,type:[ye.ImageData]}];return e.showInputPorts&&(t.push({name:To.x,type:ye.Number}),t.push({name:To.y,type:ye.Number}),t.push({name:To.width,type:ye.Number}),t.push({name:To.height,type:ye.Number})),t},getOutputNames:()=>[{name:No.image,type:ye.ImageData}],getDefaultState:Ao};const Po=Object.freeze({image:"image"}),Do=Object.freeze({image:"image",width:"width",height:"height"}),jo=()=>({showInputPorts:!1});var Ro={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===Do.width&&(i.width=n.data.value),t.name===Do.height&&(i.height=n.data.value),void r.setState(i);if(t.name===Do.image){if(n.data.type!==ye.ImageData&&n.data.type!==ye.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ce(320,240),i.$$tempCanvas=Ce(320,240),r.setState(i)),!i.$$memCanvas||!i.$$tempCanvas)return;let t=e;return(i.width||i.height)&&(t=((e,t,n,r,i)=>{if(!r&&!i)return e;r&&!i?i=r*(e.height/e.width):!r&&i&&(r=i*(e.width/e.height));const o=Math.max(1,r||e.width),s=Math.max(1,i||e.height);n.width===e.width&&n.height===e.height||(n.width=e.width,n.height=e.height),t.width=o,t.height=s;const a=$e(t),c=$e(n);if(!a||!c)throw new Error("Failed to get canvas context");return c.putImageData(e,0,0),a.drawImage(n,0,0,e.width,e.height,0,0,o,s),a.getImageData(0,0,o,s)})(e,i.$$memCanvas,i.$$tempCanvas,i.width,i.height)),r.nextGate(Po.image,{type:ye.ImageData,value:t})}},getInputNames:e=>{const t=[{name:Do.image,type:ye.ImageData}];return e.showInputPorts&&(t.push({name:Do.width,type:ye.Number}),t.push({name:Do.height,type:ye.Number})),t},getOutputNames:()=>[{name:Po.image,type:ye.ImageData}],getDefaultState:jo};const Lo=Object.freeze({value:"value"}),Fo=Object.freeze({trigger:"trigger",setValue:"setValue"}),Uo=()=>({value:0,dispatchOnSet:!1});var Wo={onParentEvent:async(e,t,n,r)=>{const i={value:0,dispatchOnSet:!1,...r.getState()};if(t.name===Fo.setValue){const e=n.data.type===ye.Number||n.data.type===ye.Anything||n.data.type===ye.String,t=!isNaN(Number(n.data.value))&&!Array.isArray(n.data.value);if(!e||!t)return;if(i.value=Number(n.data.value),r.setState(i),!i.dispatchOnSet)return}return r.nextGate(Lo.value,{type:ye.Number,value:i.value})},getInputNames:e=>{const t=[{name:Fo.setValue,type:ye.Number}];return e.dispatchOnSet||t.push({name:Fo.trigger,type:ye.Anything}),t},getOutputNames:()=>[{name:Lo.value,type:ye.Number}],getDefaultState:Uo};const Bo=Object.freeze({image:"image"}),Go=Object.freeze({image:"image"}),Vo=()=>({anchors:[],vertices:[],matrix:[]}),Yo={onParentEvent:async(e,t,n,r)=>{const i={anchors:[],vertices:[],matrix:[],...r.getState()},o=window,s=n.data.type===ye.ImageData;if(o.Speedy&&s){const e=o.Speedy,t=n.data.value;let s,u,d,h=i.$$private?.canvas,f=i.$$private?.context,p={...i};const g=4===i.anchors.length;if(i.$$private?.pipeline)s=i.$$private?.pipeline,u=i.$$private?.source;else{s=e.Pipeline(),u=e.Image.Source();const n=e.Image.Sink();d=e.Transform.PerspectiveWarp(),h?h.width===t.width&&h.height===t.height||(h.width=t.width,h.height=t.height,f=h.getContext("2d")):(c=t.width,l=t.height,h=Ce(c,l),f=h.getContext("2d")),u.output().connectTo(d.input()),d.output().connectTo(n.input()),s.init(u,n,d);let r=e.Matrix(3,3,[1,0,0,0,1,0,0,0,1]);if(4===i.anchors.length){const t=e.Matrix(2,4,[(a=i.anchors)[0].x,a[0].y,a[1].x,a[1].y,a[2].x,a[2].y,a[3].x,a[3].y]),n=e.Matrix(2,4,i.vertices.reduce(((e,t)=>e.concat([t.x,t.y])),[])),o=e.Matrix.Zeros(3,3);await e.Matrix.perspective(o,t,n);const s=o.read();r=e.Matrix(3,3,s)}d.transform=r,p={...p,$$private:{...p.$$private,canvas:h,context:f,perspective:d,pipeline:s,source:u}}}let m=t;if(g){const e=await(async(e,t)=>{const n=window,r=e.$$private?.source,i=e.$$private?.pipeline;if(n.Speedy&&r&&i){const e=n.Speedy,o=await createImageBitmap(t),s=await e.load(o);return r.media=s,(await i.run()).image.source}return null})(p,m);e&&(h&&f&&(m=((e,t,n)=>(t.width=e.width,t.height=e.height,n.drawImage(e,0,0),n.getImageData(0,0,e.width,e.height)))(e,h,f)),p.$$private&&r.setState({...p,$$private:{...p.$$private,lastInputImage:t}}))}else p.$$private&&r.setState({...p,$$private:{...p.$$private,lastInputImage:t}});return r.nextGate(Bo.image,{type:ye.ImageData,value:m})}var a,c,l;console.log("Environment not supported")},getInputNames:()=>[{name:Go.image,type:ye.ImageData}],getOutputNames:()=>[{name:Bo.image,type:ye.ImageData}],getDefaultState:Vo,terminate:async e=>{const t=e.getState();t.$$private?.pipeline.release()}},Ho=Object.freeze({event:"event"}),zo="1",qo="2",Ko="3";var Jo={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};r.setState({...i,$$lastEventType:n.data.type}),await r.nextGate(zo,n.data),await r.nextGate(qo,n.data),await r.nextGate(Ko,n.data)},getInputNames:()=>[{name:Ho.event,type:ye.Anything}],getOutputNames:e=>{const t={type:{...e}.$$lastEventType??ye.Anything};return[{name:zo,...t},{name:qo,...t},{name:Ko,...t}]}};const Zo=()=>({name:"myVar",type:ye.Anything,reactive:!0,defaultValue:""}),Xo=Object.freeze({set:"set",read:"read"}),Qo="value";var es={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Zo(),...i};if(t.name!==Xo.set){if(t.name===Xo.read){const e=ii({variableName:o.name,readerWidgetId:r.id}),t=e?e.value:o.defaultValue;await r.nextWidget(Qo,{type:o.type,value:t})}}else{if(n.data.type!==o.type&&o.type!==ye.Anything)return;await ri({variableName:o.name,value:n.data.value,setByWidgetId:r.id,type:o.type})}},getInputNames:e=>{const t={...e};return[{name:Xo.set,type:t.type||ye.Anything},{name:Xo.read,type:ye.Anything}]},getOutputNames:e=>{const t={...e};return[{name:Qo,type:t.type||ye.Anything}]},initialize:async e=>{const t=e.getState(),n={...Zo(),...t};if(n.$$abortListener)try{n.$$abortListener()}catch(t){console.warn(`Error aborting variable listener for widget ${e.widgetId}: `,t)}ti({variableName:n.name,type:n.type,createdByWidgetId:e.widgetId});const r=oi({variableName:n.name,type:n.type,widgetId:e.widgetId,onValueChange:async t=>{const n=e.getState();void 0!==t.value&&(n.type!==ye.Anything&&t.type!==n.type||n.reactive&&await e.nextWidget(Qo,{type:t.type,value:t.value}))}});e.setState({...n,$$abortListener:r})},terminate:async e=>{const t=e.getState(),n={...Zo(),...t};n.$$abortListener&&n.$$abortListener(),ni({variableName:n.name,createdByWidgetId:e.widgetId})}};const ts=async(e,t=!1)=>{const n=fi();let r=e.$$$serviceId;if(!e.service)return console.log("Aborting service initialization, missing property `service` in state."),null;if(!r||t){const t=await n.getCompatibleService(e.service.name,e.service.version,"^");if(!t)return null;r=t.sessionId}return r};var ns={onParentEvent:async(e,t,n,r)=>{const i={dynamicInputs:{},dynamicOutputs:{},customState:{},...r.getState()};if(!e)return;const o=ae(r.recipePoolId);if(!o)throw new Error(`Recipe [${r.recipePoolId}] not found`);const s=fi();let a=i.$$$serviceId;if(!a){const e=s.getCachedServices().available.find((e=>e.name===i.service?.name&&e.version===i.service?.version));if(!e)return;a=e.sessionId,i.$$$serviceId=a,r.setState(i)}const c=i.service?.variants?.find((e=>e.id===i.variantId)),l=c?i.dynamicInputs[c.id]||c?.inputs||[]:i.service?.inputs||[];if(!l?.length)return;if(!c&&i.service?.ignoreParentEvents)return;const u=i.service?.processingTimeoutSec,d=r.eventContext,h=o?.name||"";return s.onParentEvent({recipeId:r.recipePoolId,recipeName:h,data:n.data,targetServiceSessionId:a,currentState:i.customState,targetVariantId:i.variantId,currentPath:r.currentPath,eventId:r.eventId,recipe:{uuid:o.uuid,poolId:r.recipePoolId,name:h,type:r.recipeType,version:o.dbInfo.version,authorId:o.dbInfo.authorId},target:{portName:t.name,widgetId:r.id,widgetType:r.type},source:e,config:{timeout:u?1e3*u:0,async:i.service?.asyncParentEvents},eventContext:d})},getInputNames:async e=>{const t=e.variantId;if(t&&e.dynamicInputs?.[t])return[...e.dynamicInputs[t]||[]];if(!t)return e.service?.inputs||[];{const n=e.service?.variants?.find((e=>e.id===t));if(n)return n.inputs||[]}return[]},getOutputNames:async e=>{const t=e.variantId;if(t&&e.dynamicOutputs?.[t])return[...e.dynamicOutputs[t]||[]];if(!t)return e.service?.outputs||[];{const n=e.service?.variants?.find((e=>e.id===t));if(n)return n.outputs||[]}return[]},initialize:async e=>{const t={dynamicInputs:{},dynamicOutputs:{},customState:{},...e.getState()},n=ae(e.recipePoolId),r=n?.name||"",i=fi(),o=await ts(t);if(o)try{return await i.initializeServiceInstance({recipePoolId:e.recipePoolId,sessionId:o,recipeName:r,widgetId:e.widgetId,recipeType:e.recipeType,variantId:t.variantId})}catch(t){if("FNC_NOT_FOUND"!==t?.errCode){if(!!("string"!=typeof t||!t.match('^Function ".*" not found.$')))throw t;console.warn(`Widget [${e.widgetId}] does not have an init function.`)}}else console.log(`Aborting service initialization, "${t.service?.name}" was not found in the current Hub.`)},terminate:async e=>{const t={dynamicInputs:{},dynamicOutputs:{},customState:{},...e.getState()},n=fi(),r=await ts(t,!0);if(r)return n.terminateServiceInstance(r,e.widgetId,e.recipePoolId,t.variantId)}};const rs=Object.freeze({Image:"image"}),is=Object.freeze({Image:"image"}),os=()=>({filters:[{name:"grayscale",value:"0.5",id:"d-1"}]});var ss={onParentEvent:async(e,t,n,r)=>{const i={filters:[{name:"grayscale",value:"0.5",id:"d-1"}],...r.getState()};if(t.name===rs.Image&&n.data.type===ye.ImageData){if(!Le(n.data.value))return void console.log("ImageFilter: Invalid image data type, aborting process");const e=n.data.value;i.$$memCanvas?.getContext||(i.$$memCanvas=Ce(e.width,e.height)),i.$$context?.drawImage||(i.$$context=i.$$memCanvas.getContext("2d")),i.$$memCanvas.width!==e.width&&(i.$$memCanvas.width=e.width),i.$$memCanvas.height!==e.height&&(i.$$memCanvas.height=e.height),r.setState(i),i.$$context.putImageData(e,0,0),i.filters.length?i.$$context.filter=i.filters.map((e=>{let t="";return"blur"===e.name?t="px":"hue-rotate"===e.name&&(t="deg"),`${e.name}(${parseFloat(e.value)}${t})`})).join(" "):i.$$context.filter="none",i.$$context.drawImage(i.$$memCanvas,0,0);const t=i.$$context.getImageData(0,0,e.width,e.height);return r.nextWidget(is.Image,{type:ye.ImageData,value:t})}},getInputNames:()=>[{name:rs.Image,type:ye.ImageData}],getOutputNames:()=>[{name:is.Image,type:ye.ImageData}],getDefaultState:os};const as="loaded";var cs={onParentEvent:async(e,t,n,r)=>r.nextWidget(as,{value:!0,type:ye.Boolean}),getInputNames:()=>[],getOutputNames:()=>[{name:as,type:ye.Boolean,description:"Triggered when the recipe is fully loaded"}]};var ls={onParentEvent:async()=>{},getInputNames:()=>[],getOutputNames:()=>[],getDefaultState:()=>({text:"",color:"#eac43e",size:{width:300,height:200}})};var us={onParentEvent:async(e,t,n,r)=>{try{const e=((e,t)=>{switch(t){case ye.Number:case ye.Boolean:case ye.String:return String(e);case ye.Array:case ye.JsonObj:case ye.Rect:case ye.Point:return JSON.stringify(e,((e,t)=>"bigint"==typeof t?t.toString():t));case ye.ArrayBuffer:if(e instanceof ArrayBuffer){if(re)return Buffer.from(e).toString("base64");{const t=new Uint8Array(e),n=t.length,r=new Array(n);for(let e=0;e<n;e++)r[e]=String.fromCharCode(t[e]);return btoa(r.join(""))}}throw new Error("Type is ArrayBuffer but value is not an ArrayBuffer");case ye.ImageData:if(!Le(e))throw new Error("Expected ImageData");return He(e);default:return String(e)}})(n.data.value,n.data.type);return r.nextWidget("text",{type:ye.String,value:e})}catch(e){return r.nextWidget("error",{type:ye.String,value:e instanceof Error?e.message:"Failed to stringify object"})}},getInputNames:()=>[{name:"object",type:[ye.Number,ye.String,ye.ArrayBuffer,ye.Array,ye.Boolean,ye.JsonObj,ye.Rect,ye.Point,ye.ImageData]}],getOutputNames:()=>[{name:"text",type:ye.String},{name:"error",type:ye.String}],getDefaultState:()=>({})};const ds=(e,t)=>{if(!Array.isArray(e)||"number"!=typeof t||t<=0)return[e];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},hs=e=>{const{code:t,enableFnTag:n=!1,context:r={},securityOptions:i={}}=e;if(!n)throw new Error("$fn helper is disabled by default for security reasons. Set enableFnTag: true in options to enable.");if("string"!=typeof t)throw new Error("$fn requires a string argument");const o=((e={})=>{const{restrictionLevel:t="strict",allowedGlobals:n=[],blockedGlobals:r=[]}=e,i={Math:"undefined"!=typeof Math?Math:void 0,Date:"undefined"!=typeof Date?Date:void 0,JSON:"undefined"!=typeof JSON?JSON:void 0,Array:"undefined"!=typeof Array?Array:void 0,Object:"undefined"!=typeof Object?Object:void 0,String:"undefined"!=typeof String?String:void 0,Number:"undefined"!=typeof Number?Number:void 0,Boolean:"undefined"!=typeof Boolean?Boolean:void 0,RegExp:"undefined"!=typeof RegExp?RegExp:void 0,Symbol:"undefined"!=typeof Symbol?Symbol:void 0,Map:"undefined"!=typeof Map?Map:void 0,Set:"undefined"!=typeof Set?Set:void 0,Promise:"undefined"!=typeof Promise?Promise:void 0},o={process:void 0,require:void 0,global:void 0,globalThis:void 0,window:void 0,document:void 0,navigator:void 0,console:void 0,eval:void 0,Function:void 0,setTimeout:void 0,setInterval:void 0,setImmediate:void 0,clearTimeout:void 0,clearInterval:void 0,clearImmediate:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,Worker:void 0,SharedWorker:void 0,ServiceWorker:void 0,localStorage:void 0,sessionStorage:void 0,indexedDB:void 0};let s={};switch(t){case"strict":case"moderate":s={...i,...o};break;case"permissive":s={...i,process:void 0,require:void 0,eval:void 0,Function:void 0}}if(n.length>0)for(const e of n)"undefined"!=typeof globalThis&&e in globalThis&&(s[e]=globalThis[e]);for(const e of r)s[e]=void 0;return s})(i);o.$vars=r.$vars,o.date=r.date,o.chunkArray=r.chunkArray;const s=new Set(["Math","Date","JSON","Array","Object","String","Number","Boolean","RegExp","Symbol","Map","Set","Promise","eval","Function","require","process","global","globalThis","window","document","navigator","console","$vars","date","chunkArray"]),a=Object.entries(r).filter((([e])=>!s.has(e))),c=a.map((([e])=>e)),l=a.map((([,e])=>e)),u=`\n // Get sandbox environment from the last argument\n const __sandbox = arguments[arguments.length - 1]; // Last argument is the sandbox\n \n // Shadow dangerous globals at the top level (these will be overridden by sandbox if allowed)\n var eval = undefined;\n var Function = undefined;\n var require = undefined;\n var process = undefined;\n var global = undefined;\n var globalThis = undefined;\n var console = __sandbox.console;\n var window = __sandbox.window;\n var document = __sandbox.document;\n var navigator = __sandbox.navigator;\n \n // Make context variables available in local scope\n ${c.map(((e,t)=>`var ${e} = arguments[${t}];`)).join("\n ")}\n \n // Shadow global references to use sandbox versions\n const Math = __sandbox.Math;\n const Date = __sandbox.Date;\n const JSON = __sandbox.JSON;\n const Array = __sandbox.Array;\n const Object = __sandbox.Object;\n const String = __sandbox.String;\n const Number = __sandbox.Number;\n const Boolean = __sandbox.Boolean;\n const RegExp = __sandbox.RegExp;\n const Symbol = __sandbox.Symbol;\n const Map = __sandbox.Map;\n const Set = __sandbox.Set;\n const Promise = __sandbox.Promise;\n \n // Make special context items available\n const $vars = __sandbox.$vars;\n const date = __sandbox.date;\n const chunkArray = __sandbox.chunkArray;\n \n // Execute the user code in strict mode for additional security\n // Use call(null) to ensure 'this' is null/undefined in strict mode\n return (() => {\n "use strict";\n return ${t};\n }).call(null);\n `;try{return new Function(...c,"sandbox",u).call({},...l,o)}catch(e){throw new Error(`Error executing $fn: ${e instanceof Error?e.message:String(e)}`)}},fs=e=>{const t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return e.replace(/[&<>"'/]/g,(e=>t[e]))},ps=()=>new Proxy({},{get(e,t){if("string"==typeof t){const e=Qi.getGlobalVariable(t);return e?.lastValue??void 0}}}),gs=e=>{const t=new Set,n=e.match(/\$secrets\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g);if(n)for(const e of n){const n=e.substring(9);n&&t.add(n)}const r=e.match(/\$secrets\[['"]([^'"]+)['"]\]/g);if(r)for(const e of r){const n=e.match(/['"]([^'"]+)['"]/);n&&n[1]&&t.add(n[1])}return t},ms=(e=new Date)=>({year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds(),milliseconds:e.getMilliseconds(),time:e.getTime(),dayOfWeek:e.getDay(),dayName:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],shortDayName:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][e.getDay()],date:e.getDate(),fullYear:e.getFullYear(),timezoneOffset:e.getTimezoneOffset(),UTCDate:e.getUTCDate(),UTCDay:e.getUTCDay(),UTCFullYear:e.getUTCFullYear(),UTCHours:e.getUTCHours(),UTCMilliseconds:e.getUTCMilliseconds(),UTCMonth:e.getUTCMonth()+1,UTCMinutes:e.getUTCMinutes(),UTCSeconds:e.getUTCSeconds(),isoString:e.toISOString(),localeString:e.toLocaleString()}),ys={$capitalize:e=>"string"==typeof e&&e.length>0?e.charAt(0).toUpperCase()+e.slice(1):e,$uppercase:e=>"string"==typeof e?e.toUpperCase():e,$lowercase:e=>"string"==typeof e?e.toLowerCase():e,$json:e=>{if("string"==typeof e)try{return JSON.parse(e)}catch{return e}return e},$stringify:(e,t,n)=>{try{return void 0!==t||void 0!==n?JSON.stringify(e,t,n):JSON.stringify(e)}catch{return String(e)}},$length:e=>"string"==typeof e||Array.isArray(e)?e.length:0,$compact:e=>Array.isArray(e)?e.filter((e=>null!=e&&""!==e&&!1!==e)):e,$chunk:e=>{if(!Array.isArray(e))return e;const t=[];for(let n=0;n<e.length;n+=2)t.push(e.slice(n,n+2));return t},$isEmpty:e=>Array.isArray(e)||"string"==typeof e?0===e.length:null==e,$isNotEmpty:e=>Array.isArray(e)||"string"==typeof e?e.length>0:null!=e,$first:e=>Array.isArray(e)?e.length>0?e[0]:void 0:"string"==typeof e&&e.length>0?e.charAt(0):void 0,$last:e=>Array.isArray(e)?e.length>0?e[e.length-1]:void 0:"string"==typeof e&&e.length>0?e.charAt(e.length-1):void 0,$base64Decode:e=>{if("string"!=typeof e)return e;try{return te&&window.atob?window.atob(e):"undefined"!=typeof Buffer?Buffer.from(e,"base64").toString("utf-8"):e}catch{return e}},$base64Encode:e=>{if("string"!=typeof e)return e;try{return"undefined"!=typeof window&&window.btoa?window.btoa(e):"undefined"!=typeof Buffer?Buffer.from(e,"utf-8").toString("base64"):e}catch{return e}},$domain:e=>{if("string"==typeof e)try{const t=e.match(/https?:\/\/[^\s]+/i),n=t?t[0]:e;return new URL(n).hostname}catch{try{const t=new URL("http://"+e.trim());if(t.hostname.includes(".")&&!t.hostname.startsWith("http"))return t.hostname}catch{}return}},$email:e=>{if("string"==typeof e)try{const t=e.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/);return t?t[0]:void 0}catch{return}},$url:e=>{if("string"==typeof e)try{const t=e.match(/https?:\/\/[^\s]+/i);if(t){return new URL(t[0]).toString()}return new URL(e.trim()).toString()}catch{return}},$urlPath:e=>{if("string"==typeof e)try{return new URL(e).pathname}catch{try{return new URL("http://"+e).pathname}catch{return}}},$urlEncode:e=>{if("string"!=typeof e)return e;try{return encodeURIComponent(e)}catch{return e}},$urlDecode:(e,t)=>{if("string"!=typeof e)return e;try{return!0===t?decodeURI(e):decodeURIComponent(e)}catch{return e}}},vs=e=>{const t=[];let n=0;for(;n<e.length;){const r=e.indexOf("{{",n);if(-1===r)break;const i="{{{"===e.slice(r,r+3),o=i?"{{{":"{{",s=i?"}}}":"}}";let a=1,c=!1,l="",u=r+o.length;for(;u<e.length&&a>0;){const t=e[u],n=e[u+1];c?t===l&&"\\"!==e[u-1]&&(c=!1,l=""):'"'===t||"'"===t?(c=!0,l=t):"{"===t&&"{"===n?i&&"{"===e[u+2]?(a++,u+=2):i||(a++,u++):"}"===t&&"}"===n&&(i&&"}"===e[u+2]?(a--,u+=2):i||(a--,u++)),u++}if(0===a){const a=e.slice(r,u),c=e.slice(r+o.length,u-s.length).trim();t.push({expression:c,start:r,end:u,fullMatch:a,escaped:!i}),n=u}else n=r+o.length}return t},bs=e=>{const t=e.match(/\$\w+\(/);if(!t)return{hasFunctionPropertyAccess:!1};const n=((e,t)=>{let n=0,r=!1,i="",o=t;for(;o<e.length&&"("!==e[o];)o++;if(o>=e.length)return null;const s=t;for(o++,n=1;o<e.length&&n>0;){const t=e[o];r?t===i&&"\\"!==e[o-1]&&(r=!1,i=""):'"'===t||"'"===t?(r=!0,i=t):"("===t?n++:")"===t&&n--,o++}return 0===n?{functionCall:e.slice(s,o),endIndex:o}:null})(e,t.index);if(!n)return{hasFunctionPropertyAccess:!1};const{functionCall:r,endIndex:i}=n,o=e.slice(i).match(/^(\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+\]|\[['"'][^'"]*['"']\])(?:\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+\]|\[['"'][^'"]*['"']\])*/);return o?{hasFunctionPropertyAccess:!0,functionCall:r,propertyPath:o[0],fullMatch:r+o[0]}:{hasFunctionPropertyAccess:!1}},ws=(e,t,n,r)=>{const i=n.evaluate(e,r);if(null==i)return;let o=i;const s=t.match(/\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+\]|\[['"'][^'"]*['"']\]/g)||[];for(const e of s){if(null==o)return;if(e.startsWith(".")){o=o[e.slice(1)]}else if(e.startsWith("[")&&e.endsWith("]")){const t=e.slice(1,-1);if(/^\d+$/.test(t)){o=o[parseInt(t,10)]}else{o=o[t.replace(/^['"]|['"]$/g,"")]}}}return o},Ss=e=>{const t=e.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\[/);if(!t)return{hasObjectBracketAccess:!1};const n=t[1],r=t.index;if("vars"===n||e.startsWith("$vars["))return{hasObjectBracketAccess:!1};if("secrets"===n||e.startsWith("$secrets["))return{hasObjectBracketAccess:!1};const i=r+n.length,o=e.slice(i).match(/^(?:\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\])+/);if(o){const e=o[0];return{hasObjectBracketAccess:!0,objectName:n,bracketPath:e,fullMatch:n+e}}return{hasObjectBracketAccess:!1}},_s=(e,t,n,r)=>{const i=r[e];if(null==i)return;const o=t.match(/\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\]/g)||[];if(0===o.length)return;let s=i;for(const e of o){if(null==s)return;const t=e.slice(1,-1);let i;if(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))i=t.slice(1,-1);else if(/^\d+$/.test(t))i=parseInt(t,10);else try{i=n.evaluate(t,r)}catch{return}if("number"==typeof i&&Array.isArray(s))s=s[i];else{if("string"!=typeof i||"object"!=typeof s||null===s)return;s=s[i]}}return s},Is=e=>{const t=e.match(/\$(?:vars|secrets)\[/);if(!t)return{hasVarsBracketAccess:!1};const n=t.index,r="$secrets["===e.slice(n,n+9)?"$secrets":"$vars",i=n+r.length,o=e.slice(i).match(/^(?:\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\])+/);if(o){const e=o[0];return{hasVarsBracketAccess:!0,bracketPath:e,fullMatch:r+e,objectName:r}}return{hasVarsBracketAccess:!1}},xs=(e,t,n,r,i=!1)=>{const o=e.match(/\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\]/g)||[];if(0===o.length)return;const s=o[0],a=s?.slice(1,-1);let c,l;if(a?.startsWith('"')&&a.endsWith('"')||a?.startsWith("'")&&a.endsWith("'"))c=a.slice(1,-1);else if(a&&/^\d+$/.test(a))c=parseInt(a,10);else if(a)try{c=n.evaluate(a,r)}catch{return}if("$vars"===t){if("string"!=typeof c)return;const e=Qi.getGlobalVariable(c);l=e?.lastValue??void 0}else{if("$secrets"!==t)return;{if(!i)return;const e=r.$secrets;if(!e)return;if("string"!=typeof c)return;l=e[c]??void 0}}for(let e=1;e<o.length;e++){if(null==l)return;const t=o[e].slice(1,-1);let i;if(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))i=t.slice(1,-1);else if(/^\d+$/.test(t))i=parseInt(t,10);else try{i=n.evaluate(t,r)}catch{return}if("number"==typeof i&&Array.isArray(l))l=l[i];else{if("string"!=typeof i||"object"!=typeof l)return;l=l[i]}}return l},ks=async e=>{const{template:t,context:n={},options:r={}}=e,{helpers:i={},enableFnTag:o=!1,securityOptions:s={},recipeUuid:a,serviceName:c,enableSecretsBracketNotation:u=!1}=r,d={...ys,...i},h=ps(),f=ms(),p={...n};var g;"input"in p&&(p.input="object"==typeof(g=p.input)&&null!==g?g:{value:g});let m,y={};if(a){const e=(e=>{const t=new Set,n=vs(e);for(const e of n)gs(e.expression).forEach((e=>t.add(e)));return t})(t),n=Array.from(e);if(n.length>0)try{y=await $i({recipeUuid:a,secretNames:n,serviceName:c})}catch(e){console.error("Failed to fetch secrets for template:",e),y={}}m=y}const v={...p,$vars:h,date:f,chunkArray:ds};void 0!==m&&(v.$secrets=m);const b={...d};b.$fn=e=>hs({code:e,enableFnTag:o,context:v,securityOptions:s});const w=new l({operators:{add:!0,comparison:!0,concatenate:!0,conditional:!0,logical:!0,power:!1,assignment:!1}});for(const[e,t]of Object.entries(b))w.functions[e]=t;const S=vs(t);if(0===S.length)return t;let _="",I=0;for(const e of S){_+=t.slice(I,e.start);try{if(!o&&e.expression.includes("$fn"))throw new Error("$fn helper is disabled by default for security reasons. Set enableFnTag: true in options to enable.");let t;const n=Is(e.expression);if(n.hasVarsBracketAccess&&n.bracketPath&&n.objectName)t=xs(n.bracketPath,n.objectName,w,{...v,...b},u);else{const n=Ss(e.expression);if(n.hasObjectBracketAccess&&n.objectName&&n.bracketPath)t=_s(n.objectName,n.bracketPath,w,{...v,...b});else{const n=bs(e.expression);t=n.hasFunctionPropertyAccess&&n.functionCall&&n.propertyPath?ws(n.functionCall,n.propertyPath,w,{...v,...b}):w.evaluate(e.expression,{...v,...b})}}null!==t&&"object"==typeof t&&"then"in t&&(t=await t);let r=null==t?"":String(t);e.escaped&&(r=fs(r)),_+=r}catch(e){if(e instanceof Error&&e.message.includes("undefined variable"))_+="";else{const t=e instanceof Error?e.message:String(e);if(e instanceof Error&&e.message.includes("$fn helper is disabled"))throw e;_+=`[Error: ${t}]`}}I=e.end}return _+=t.slice(I),_},Es=()=>({text:"",format:"Text"});var Cs={onParentEvent:async(e,t,n,r)=>{const i={text:"",format:"Text",...r.getState()},{uuid:o}=Oi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await ks({template:i.text,context:{input:n.data.value},options:{enableFnTag:!0,recipeUuid:o}});return r.nextWidget("text",{type:ye.String,value:s})},getInputNames:()=>[{name:"input",type:ye.Anything}],getOutputNames:()=>[{name:"text",type:ye.String}],getDefaultState:Es};const $s=()=>({expression:""}),Os=async e=>{const{expression:t,recipeUuid:n,serviceName:r,enableFnTag:i=!0,customContext:o={}}=e,s=Symbol("abort");try{const e={restrictionLevel:"strict"},a=ps(),c=ms();let l;if(n&&t.includes("$secrets")){const e=Array.from(gs(t));if(e.length>0)try{l=await $i({recipeUuid:n,secretNames:e,serviceName:r})}catch(e){console.error("Failed to fetch secrets for expression:",e),l={}}}const u={...o,abort:s,$vars:a,date:c,chunkArray:ds,...ys};void 0!==l&&(u.$secrets=l);const d=hs({code:t,enableFnTag:i,context:u,securityOptions:e});return d===s?{value:s,error:null}:{value:d,error:null}}catch(e){let t=e instanceof Error?e.message:String(e);return t.startsWith("Error executing $fn: ")&&(t=t.substring(21)),{error:"Error during expression execution: "+t,value:null}}};var Ns={onParentEvent:async(e,t,n,r)=>{const i={expression:"",...r.getState()},{uuid:o}=Oi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await Os({customContext:{data:n.data.value},expression:i.expression,recipeUuid:o,serviceName:void 0});if("symbol"==typeof s.value)return;if(s.error)throw new Error(s.error);if(Number.isNaN(s.value))throw new Error("Expression resulted in NaN");if(void 0===s.value||null===s.value)return;const a=We(s.value);return a!==i.$$lastResultType&&r.setState({...i,$$lastResultType:a}),r.nextWidget("result",{type:a,value:s.value})},getInputNames:()=>[{name:"data",type:ye.Anything}],getOutputNames:e=>[{name:"result",type:e.$$lastResultType||ye.Anything}],getDefaultState:$s};const Ts={};let As={};const Ms=new c;let Ps=!1,Ds=!1,js=!1,Rs=null,Ls=null;const Fs="processing-state-change",Us="error-event",Ws={abortRequested:!1,isPaused:!1,pausePromise:null,pausePromiseResolve:null,lastPausedWidgetId:null},Bs=e=>(Ls=e,Ms.emit(Fs,e)),Gs=(e,t)=>`${e}-${t}`,Vs=(e,t)=>`state-change:${Gs(e,t)}`,Ys=e=>{const{thingId:t,widgetId:n}=e,r=Gs(t,n);return Ts[r]||{isProcessing:!1}},Hs=e=>{const t=(e=>{let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n);return Math.abs(t).toString(36)})(e.error);return`${e.targetWidgetId}-${e.targetPortName}-${e.sourcePortName}-${t}`};let zs=null;const qs={},Ks=()=>{Ws.abortRequested=!1,Ws.isPaused=!1},Js=e=>(Ws.pausePromise||(Ws.isPaused=!0,Ws.pausePromise=new Promise((e=>{Ws.pausePromiseResolve=e})),e&&(Ws.lastPausedWidgetId=e),Bs({isProcessing:!0,isPaused:!0,...e?{pauseTrapWidgetId:e}:{}})),Ws.pausePromise);var Zs=async e=>{const{thingId:t,widgetId:n}=e,r=Gs(t,n),i=Vs(t,n),o=Ys({thingId:t,widgetId:n});if(o.isProcessing)return;const s={isProcessing:!0,isPaused:!1,startTime:Date.now()};Ts[r]=s,Ps||(Ps=!0,Rs=null,await Bs({isProcessing:!0,isPaused:!1})),await Ms.emit(i,{thingId:t,widgetId:n,prevState:o,newState:s})},Xs=async e=>{const{thingId:t,widgetId:n,error:r}=e,i=Gs(t,n),o=Vs(t,n),s=Ys({thingId:t,widgetId:n}),a={isProcessing:!1,isPaused:!1,startTime:s.startTime,endTime:Date.now(),error:r};Ts[i]=a,await Ms.emit(o,{thingId:t,widgetId:n,prevState:s,newState:a}),r&&(Rs=r,(e=>{const{error:t,stateKey:n}=e,r=Hs(t);qs[r]={error:t,stateKey:n},zs&&clearTimeout(zs),zs=setTimeout((()=>{for(const e in qs)Ms.emit(Us,qs[e].error),delete qs[e]}),250)})({error:r,stateKey:i})),Ps&&0===Object.values(Ts).filter((e=>e.isProcessing)).length&&(Ps=!1,Ds=!1,Ks(),await Bs({isProcessing:!1,isPaused:!1}))},Qs=e=>Ms.on(Fs,e),ea=()=>{Ps=!1;for(const e in Ts)delete Ts[e];Ws.abortRequested=!1,Ws.isPaused=!1,Ws.pausePromise=null,Ws.pausePromiseResolve=null,Ws.lastPausedWidgetId=null,Ms.clearListeners()},ta=()=>Ws.abortRequested,na=e=>{Ws.lastPausedWidgetId=e,Ws.isPaused=!0,Bs({isProcessing:!0,isPaused:!0,pauseTrapWidgetId:e})},ra=()=>Ds||js?null:Ws.pausePromise,ia=e=>js?null:As[e]??null,oa=()=>Ds,sa=e=>Js(e),aa=e=>{const t=Hs(e),n=qs[t];if(r=Rs,i=n?.error,r?.targetWidgetId===i?.targetWidgetId&&r?.targetPortName===i?.targetPortName&&r?.sourcePortName===i?.sourcePortName&&r?.error===i?.error){if(n){const e=n.stateKey;Ts[e].error=null}Rs=null}var r,i;delete qs[t]};var ca={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};r.setState({...i,$$lastEventType:n.data.type});try{await r.nextWidget("event",n.data)}catch(e){const t=e;t.targetWidgetId&&t.targetPortName&&t.sourcePortName&&aa({targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,error:t.message}),await r.nextWidget("error",{type:ye.JsonObj,value:{error:{message:e.message,targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,sourceWidgetId:t.sourceWidgetId,targetWidgetType:t.targetWidgetType,sourceWidgetType:t.sourceWidgetType,stack:e.stack},inputEvent:{type:n.data.type,data:n.data.value}}})}},getInputNames:()=>[{name:"event",type:ye.Anything}],getOutputNames:e=>[{name:"event",type:{...e}.$$lastEventType??ye.Anything},{name:"error",type:ye.JsonObj,jsonShape:{error:ye.JsonObj,inputEvent:ye.JsonObj}}]};const la={},ua=Object.freeze({output:"output"}),da=Object.freeze({read:"read",clear:"clear"}),ha=()=>({$$$time:0,totalInputs:1});var fa={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalInputs:1,...r.getState()};if(la[r.id]||(la[r.id]={}),t.name===da.clear)return la[r.id]={},void r.setState(i);const o=t.name===da.read;if(!(o||n.data.type!==ye.JsonObj&&n.data.type!==ye.Anything&&n.data.type!==ye.Rect||"object"!=typeof n.data.value||null===n.data.value||Array.isArray(n.data.value))){const e=la[r.id]||{};la[r.id]={...e,...n.data.value}}if(o){const e={...la[r.id]};return la[r.id]={},r.setState({...i}),r.nextWidget(ua.output,{type:ye.JsonObj,value:e})}},getInputNames:e=>{const t={$$$time:0,totalInputs:1,...e},n=Array(t.totalInputs||1).fill(0).map(((e,t)=>({name:`input${t+1}`,type:ye.Anything})));return n.push({name:da.clear,type:ye.Anything},{name:da.read,type:ye.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:ua.output,type:ye.JsonObj}],getDefaultState:ha,initialize:async e=>{la[e.widgetId]={}},terminate:async e=>{delete la[e.widgetId]}};const pa={},ga=Object.freeze({output:"output",index:"index",finish:"finish"}),ma=Object.freeze({array:"array",next:"next",clear:"clear"}),ya=()=>({autoLoop:!1,autoClear:!1,$$outputType:ye.Anything,totalItems:0,currentIndex:0});var va={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...ya(),...i};if(t.name===ma.clear)return delete pa[r.id],void r.setState({...ya(),autoLoop:o.autoLoop,autoClear:o.autoClear});if(t.name!==ma.array)t.name===ma.next&&await(async e=>{const t=e.id,n=pa[t],r={...ya(),...e.getState()};if(n&&n.index<n.list.length){const i=n.index,o=n.list[i];await e.nextWidget(ga.index,{type:ye.Number,value:i}),await e.nextWidget(ga.output,{type:r.$$outputType,value:o}),n.index++,e.setState({...r,currentIndex:n.index}),n.index===n.list.length&&(await e.nextWidget(ga.finish,{type:ye.Boolean,value:!0}),r.autoClear?(delete pa[t],e.setState({...ya()})):(n.index=0,e.setState({...r,currentIndex:0})))}})(r);else if((n.data.type===ye.Array||n.data.type===ye.Anything)&&Array.isArray(n.data.value)){const e=n.data.value,t=e[0],i=void 0!==t?We(t):ye.Anything,s={list:e,index:0};pa[r.id]=s;const a={...o,$$outputType:i,totalItems:e.length,currentIndex:0};if(r.setState(a),a.autoLoop&&e.length>0){for(const t of e){const e=s.index;r.setState({...a,currentIndex:e}),await r.nextWidget(ga.index,{type:ye.Number,value:e}),await r.nextWidget(ga.output,{type:a.$$outputType,value:t}),s.index++}await r.nextWidget(ga.finish,{type:ye.Boolean,value:!0}),a.autoClear?(delete pa[r.id],r.setState({...a,$$outputType:ye.Anything,totalItems:0,currentIndex:0})):(s.index=0,r.setState({...a,currentIndex:0}))}}},getInputNames:()=>[{name:ma.array,type:ye.Array},{name:ma.next,type:ye.Anything},{name:ma.clear,type:ye.Anything}],getOutputNames:e=>{const t={...ya(),...e};return[{name:ga.index,type:ye.Number},{name:ga.output,type:t.$$outputType},{name:ga.finish,type:ye.Anything}]},getDefaultState:ya,initialize:async e=>{const t={...ya(),...e.getState()};pa[e.widgetId]={list:[],index:0},e.setState({...t,currentIndex:0,totalItems:0})},terminate:async e=>{delete pa[e.widgetId]}};var ba={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};i.name&&e&&Ui({name:i.name,sourceWidget:e?.sourceWidgetId,widgetId:r.id,widgetType:Ke.status,value:{type:n.data.type,value:n.data.value}})},getOutputNames:()=>[],getInputNames:()=>[{name:"status",type:ye.Anything}],terminate:async e=>{Gi(e.widgetId)},initialize:async e=>{const t={name:"",...e.getState()};Ui({name:t.name||"",sourceWidget:"",widgetType:Ke.status,widgetId:e.widgetId,value:null})}};const wa={onParentEvent:async(e,t,n,r)=>{if(!r.eventContext)return;const i=r.eventContext;if(i?.eventKey)return ct(i.eventKey,n.data.value);console.error("No event key found in context event")},getOutputNames:()=>[],getInputNames:()=>[{name:"event",type:ye.Anything}]},Sa="read",_a="setValue",Ia=new Map,xa=new Map,ka=e=>{const t=Ia.get(e);t&&(t(),Ia.delete(e))};var Ea={onParentEvent:async(e,t,n,r)=>{const i={name:"",reactive:!1,lastConfiguration:null,...r.getState()};if(!i.name)return;const o=Qi.getGlobalVariable(i.name);if(o)if(t.name===Sa)o&&null!==o.lastValue&&null!==o.lastDataType&&await r.invokeNextWidget({port:"value",data:{type:o.lastDataType,value:o.lastValue}});else if(t.name===_a){let e=n.data.value;if(("number"===o.controlType||"slider"===o.controlType)&&(e=Number(e),isNaN(e)))throw new Error("Expected event value to be a number");if("binaryFile"===o.controlType&&n.data.type!==ye.BinaryFile||"image"===o.controlType&&n.data.type!==ye.ImageData||("text"===o.controlType||"multilineText"===o.controlType)&&n.data.type!==ye.String||"checkbox"===o.controlType&&n.data.type!==ye.Boolean&&n.data.type!==ye.Number)throw new Error(`Invalid type, expected event value to be a ${(e=>{switch(e){case"number":case"slider":return"Number";case"text":case"dropdown":case"multilineText":return"String";case"image":return"ImageData";case"binaryFile":return"Binary File";case"checkbox":return"Boolean or Number"}return"Anything"})(o.controlType)}`);i.lastConfiguration?.controlSettings===o.controlSettings&&i.lastConfiguration?.controlType===o.controlType&&i.lastConfiguration?.helpText===o.helpText||(i.lastConfiguration={controlType:o.controlType,controlSettings:o.controlSettings,helpText:o.helpText},r.setState({...i})),xa.set(r.id,{eventId:r.eventId,varName:i.name,type:n.data.type}),await Qi.setGlobalVariable({name:i.name,value:e,lastDataType:n.data.type,widgetId:r.id,executionContext:{eventId:r.eventId,currentPath:r.currentPath}}),i.reactive&&await r.invokeNextWidget({port:"value",executionContext:{currentPath:r.currentPath,eventId:r.eventId},data:{type:n.data.type,value:e}})}},getOutputNames:e=>{const t={name:"",reactive:!1,lastConfiguration:null,...e};let n=ye.Anything;if(t.name){const e=Qi.getGlobalVariable(t.name);e?.lastDataType&&(n=e.lastDataType)}return[{name:"value",type:n}]},getInputNames:()=>[{name:Sa,type:ye.Anything},{name:_a,type:ye.Anything}],terminate:async e=>{ka(e.widgetId),xa.delete(e.widgetId)},initialize:async e=>{const t={name:"",reactive:!1,lastConfiguration:null,...e.getState()};ka(e.widgetId),xa.set(e.widgetId,null);const n=Qi.getGlobalVariable(t.name);if(!n&&t.lastConfiguration?.controlType?await Qi.setGlobalVariable({name:t.name,controlType:t.lastConfiguration.controlType,controlSettings:t.lastConfiguration.controlSettings,value:null,disableChangeNotifications:!0,disableDefineNotifications:!1}):n&&e.setState({...t,lastConfiguration:{controlType:n.controlType,controlSettings:n.controlSettings,helpText:n.helpText}}),t.reactive&&t.name){const n=Qi.onGlobalVariableChange(t.name,(async t=>{const n=e.getState();if(n.lastConfiguration?.controlType===t.controlType&&n.lastConfiguration?.controlSettings===t.controlSettings&&n.lastConfiguration?.helpText===t.helpText||e.setState({...n,lastConfiguration:{controlType:t.controlType,controlSettings:t.controlSettings,helpText:t.helpText}}),null!==t.lastValue&&null!==t.lastDataType){const n=xa.get(e.widgetId);if(n?.varName===t.name&&n.type===t.lastDataType&&n.eventId===t.lastExecutionContext?.eventId)return void xa.set(e.widgetId,null);await e.invokeNextWidget({port:"value",...t.lastExecutionContext?{executionContext:{...t.lastExecutionContext}}:void 0,data:{type:t.lastDataType,value:t.lastValue}})}}));Ia.set(e.widgetId,n)}}};const Ca=Object.freeze({input:"input"}),$a="out",Oa="else",Na=()=>({conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0}),Ta=e=>null!=e&&("number"==typeof e?0!==e&&!Number.isNaN(e):"string"==typeof e?e.length>0:Boolean(e));var Aa={onParentEvent:async(e,t,n,r)=>{const i={conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0,...r.getState()};if(t.name!==Ca.input)return;let o;try{o=Oi(r.recipePoolId).uuid}catch{o=void 0}const s=i.conditions||[];for(let e=0;e<s.length;e++){const t=s[e],a=await Os({customContext:{input:n.data.value},expression:t.expression||"",recipeUuid:o,enableFnTag:!0});if("symbol"!=typeof a.value){if(a.error)throw new Error(a.error);if(Ta(a.value)){let a=n.data.value;if(t.output&&"input"!==t.output){const e=await Os({customContext:{input:n.data.value},expression:t.output,recipeUuid:o,enableFnTag:!0});if(e.error)throw new Error(e.error);"symbol"!=typeof e.value&&(a=e.value)}else a=n.data.value;const c=We(a);if(i.multipleOutputs){const n=[...s];n[e]={...t,$lastOutputType:c},r.setState({...i,conditions:n})}const l=i.multipleOutputs?String(e+1):$a;return i.multipleOutputs||i.$lastOutputType===c||r.setState({...i,$lastOutputType:c}),r.invokeNextWidget({port:l,data:{type:c,value:a}})}}}return r.invokeNextWidget({port:Oa,data:{type:n.data.type,value:n.data.value}})},getInputNames:()=>[{name:Ca.input,type:ye.Anything}],getOutputNames:e=>{if(!e.multipleOutputs)return[{name:$a,type:e.$lastOutputType||ye.Anything},{name:Oa,type:e.$lastElseOutputType||ye.Anything}];const t=Math.max(1,e.conditions?.length||0),n=[];for(let r=0;r<t;r++){const t=e.conditions?.[r]?.$lastOutputType||ye.Anything;n.push({name:String(r+1),type:t})}return n.push({name:Oa,type:e.$lastElseOutputType||ye.Anything}),n},getDefaultState:Na};const Ma=new Map;var Pa={registerFunctionHandler:(e,t)=>{Ma.set(e,t)},invokeFunction:async e=>{const{eventId:t,functionName:n,functionParams:r}=e,i=Ma.get(n);if(i)try{const e=await i(r,t);if("function"==typeof e)throw new Error("Functions are not allowed as return types");return e}catch(e){throw console.error(`Error invoking edge function [${n}]:`,e),e}},unregisterFunctionHandler:e=>{Ma.delete(e)},clearAllHandlers:()=>{Ma.clear()}};const Da=()=>({functionName:""}),ja="result";const Ra={input:dt,counter:pt,elapsed:yt,ifGate:St,skipEvent:kt,between:Ot,map:At,parser:Dt,slider:Lt,suspend:Bt,display:Vt,json:zt,arrayItem:Jt,extractImage:tn,imageConvolution:an,firstEvent:dn,pixelDraw:bn,randomBetween:In,arrayCombine:$n,clock:An,delay:Fn,multiplication:Gn,object:Kn,widgetGroup:Qn,script:go,base64ToImageData:So,jsonParse:ko,text:Oo,imageCrop:Mo,imageResize:Ro,value:Wo,imageWarp:Yo,sequence:Jo,variable:es,hubService:ns,imageFilter:ss,recipeLoad:cs,note:ls,stringify:us,templateString:Cs,expressionEval:Ns,rescue:ca,objectCombine:fa,loop:va,status:ba,secret:Ni,output:wa,globalVariable:Ea,switch:Aa,edgeFunction:{onParentEvent:async(e,t,n,r)=>{const i={functionName:"",...r.getState()};if(!i.functionName||!e)return;const o=r.eventId,s=await Pa.invokeFunction({eventId:o,functionName:i.functionName,functionParams:n.data.value});if(null!=s){const e=We(s);await r.invokeNextWidget({port:ja,data:{type:e,value:s}})}},getOutputNames:()=>[{name:ja,type:ye.Anything}],getInputNames:()=>[{name:"params",type:ye.Anything}],getDefaultState:Da},play:{getInputNames:()=>[],onParentEvent:()=>Promise.resolve(),getOutputNames:()=>[{name:"out",type:ye.Boolean}]}},La={},Fa=async()=>{if(!Object.keys(La).length)for(const e in Ra){const t=Ra[e];La[e]=Object.freeze({...t})}};var Ua,Wa,Ba=e=>{if(La[e])return La[e];throw new Error(it(rt,e))},Ga=Fa;!function(e){e.ServiceCreationLog="service-creation-log"}(Ua||(Ua={})),function(e){e.Service="service",e.ServiceUI="serviceUI"}(Wa||(Wa={}));let Va={},Ya=0,Ha=null;const za=(e,t)=>{if(e.type===Ke.hubService){if(t.type!==Ke.hubService)return!1;const n=e.state,r=t.state,i=n.service?.name,o=r.service?.name;return!(!i||!o||i!==o)}return e.type===Ke.output&&t.type===Ke.input},qa=e=>{const{widgetId:t,widgets:n,currentPath:r}=e,i=n[t];if(!i)return[];const o=new Map;for(let e=0;e<r.length;e++){const t=r.slice(0,e+1),s=t.join("/"),a=Va[s];if(a){const c=n[a.widgetId];if(c){const n=a.path,l=r.join("/").startsWith(n);za(i,c)&&l&&(o.has(s)||o.set(s,{path:s,data:a,pathSegments:t.length,pathIndex:e,invocationOrder:a.invocationOrder,timestamp:a.timestamp}))}}}const s=Array.from(o.values()).sort(((e,t)=>e.pathIndex-t.pathIndex));return s},Ka=e=>{const{context:t,widgetId:n,currentPath:r,executionId:i="default"}=e;if(Ya++,0===r.length)throw new Error("Current path cannot be empty");if(!r[r.length-1].includes(n))throw new Error("The widget id is expected to be part of the path");const o=r.join("/");Va[o]={path:o,eventContext:t,widgetId:n,invocationOrder:Ya,timestamp:Date.now(),executionId:i}},Ja=e=>{const t=qa(e);return t.length>0?t[t.length-1]:null},Za=()=>{Va={},Ya=0},Xa=e=>{Ha=e},Qa=()=>{Va={},Ya=0};let ec,tc,nc,rc=!1,ic=0,oc=0;const sc=async e=>{const{widgetId:t,thingId:n,recipeId:r,targetPortName:i,data:o}=e,s=ce(r,n);if(!s)return;const a=s.gates[t];if(!a||a.disabled)return;const c={...o,timestamp:Date.now()},l=Ba(a.type);oc+=1;const u=dc({gateId:t,originalEvent:c,blockRecipeId:s.recipeId,blockDbId:s.id,blockVersion:s.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:oc});if(u&&l.onParentEvent){const e={name:i};return ec&&await ec({recipeId:r,blockId:s.recipeId,gateId:t,targetPort:e.name,data:o}),l.onParentEvent(null,e,{originalEvent:c,data:{...c}},u)}},ac=async e=>{const{eventContext:t,interruptDriven:n,childGateId:r,recipeId:i,sourcePortName:o,targetPort:s,data:a,sourceOutputNames:c,sourceWidgetId:l,bypassHistoryRecording:u,eventId:d}=e;let{originalEvent:h,block:f}=e;if(!n&&!l)throw new Error("Missing parameter ['sourceGateId']");if(!n&&!h)throw new Error("Missing parameter ['originalEvent']");n&&(h={timestamp:Date.now(),type:ye.Boolean,value:!0});const p=h;if("string"==typeof f){const e=ce(i,f);if(!e)return;f=e}const g=f.gates[r];if(!g||g.disabled)return;const m=c.findIndex((e=>e.name===o)),y=Ba(g.type),v=[...e.currentPath];if(l){0===v.length?v.push(`${l}:${d?.toString()}`):v.push(l)}if(t){const e=le({recipeId:i,widgetId:l});e?.type!==Ke.hubService&&e?.type!==Ke.input||Ka({context:t,widgetId:l,currentPath:v,executionId:d?.toString()})}const b=dc({gateId:r,originalEvent:p,blockRecipeId:f.recipeId,blockDbId:f.id,blockVersion:f.version,recipeId:i,sourceWidgetId:l,currentPath:v,eventId:d});if(b&&y.onParentEvent&&-1!==m){ec&&await ec({recipeId:i,blockId:f.recipeId,gateId:r,targetPort:s.name,data:a,sourceGate:n?"interrupt_widget":l,sourcePort:n?fe:o});const e={name:c[m].name,type:c[m].type,...c[m].jsonShape?{jsonShape:c[m].jsonShape}:void 0,sourceWidgetId:l};return u||_i({thingId:f.recipeId,widgetId:r,sourceOutputNames:c,targetPortName:s.name,currentPath:v,eventId:d,data:a,originalEvent:p,recipeId:i,source:l?{widgetId:l,portName:o}:void 0}),y.onParentEvent(e,s,{originalEvent:p,data:a},b)}},cc=async e=>{const{portName:t,originalEvent:n,data:r,currentGateId:i,blockRecipeId:o,thingDbId:s,thingVersion:a,recipeId:c,eventContext:l,currentPath:u}=e;let{eventId:d}=e;const h=ae(c);if(!h)throw new Error(`Failed to find recipe "${c}" in cache`);const f=h.dbInfo.recipeType,p=ue(c,o,i);if(!p)return;const g={...r,timestamp:n.timestamp},m=Ba(p.type);let y;y=p.type===Ke.input?m.getOutputNames(p.state,{thingRecipeId:o,thingDbId:s,thingVersion:a,id:i,recipeId:c,recipeType:f,recipePoolId:c}):await m.getOutputNames(p.state,{recipePoolId:c,recipeType:f,thingRecipeId:o,widgetId:i});if(-1!==y.findIndex((e=>e.name===t))){const e=ce(c,o);if(!e)return;null===d&&(oc+=1,d=oc),Si({thingId:o,widgetId:i,sourceOutputNames:y,sourcePortName:t,currentPath:u,data:g,recipeId:c,eventId:d});let r=null;const s=p.children.length,a=u;try{for(let u=0;u<s;u++){const s=e.gates[p.children[u].childId];if(s?.disabled)continue;const h=Ve(p.children[u]?.sourcePort),m=Ve(p.children[u]?.targetPort);if(h.portName===t&&s&&!s.disabled){if(rc&&ra()&&(na(s.id),await ra()),ia(s.id)&&!oa()&&"innerInput"!==m?.portType){const e=sa(s.id);await e}if(rc&&ta())break;const u=Ba(s.type);let h;const v={recipePoolId:c,recipeType:f,thingRecipeId:o,widgetId:i};h=s.type===Ke.hubService?await u.getInputNames(s.state,v):u.getInputNames(s.state,v);const b=h.find((e=>e.name===m.portName));if(b){rc&&await Zs({thingId:o,widgetId:s.id}),ic++;if(!await ac({eventContext:l,interruptDriven:!1,childGateId:s.id,block:e,recipeId:c,sourcePortName:t,currentPath:a,eventId:d,targetPort:{name:b.name},data:p.returnOriginalEvent?n:g,sourceOutputNames:y,sourceWidgetId:p.id,originalEvent:n}).then((()=>!0)).catch((e=>{const n=s.type===Ke.hubService&&"CHILD_WIDGET_ERROR"===e.errCode;if(e instanceof Dr)throw e;if(n&&e.errData){const t=e.errData;throw new Dr(e.error||e.message||("string"==typeof e?e:JSON.stringify(e)),{targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,sourceWidgetId:t.sourceWidgetId,targetWidgetType:t.targetWidgetType,sourceWidgetType:t.sourceWidgetType})}if(!r){const n="string"==typeof e?e:e.message||JSON.stringify(e);r={targetWidgetId:s.id,targetPortName:b.name,sourcePortName:t,error:n}}throw new Dr(e.message||("string"==typeof e?e:JSON.stringify(e)),{stack:e.stack,targetWidgetId:s.id,targetPortName:b.name,sourcePortName:t,sourceWidgetId:p.id,targetWidgetType:s.type,sourceWidgetType:p.type})})).finally((()=>{if(ic--,rc)return Xs({thingId:o,widgetId:s.id,error:r})})))break}}}}catch(e){if(e instanceof Dr)throw e;console.error(`Error processing next widget [${i}]: ${e}`)}finally{ic<0&&(console.warn("Active execution counter is negative, this should never happen"),ic=0),0===ic&&Za()}}},lc=async(e,t,n,r)=>{const i=ae(r);if(!i)return null;const o=ce(r,n);if(!o)return o;const s=o.gates,a=o.gates[t],c=Ba(a.type),l=await c.getInputNames(a.state,{recipePoolId:r,recipeType:i.dbInfo.recipeType,thingRecipeId:n,widgetId:t}),u=l.findIndex((t=>t.name===e));if(-1!==u){const e=((e,t,n)=>{for(const r in n){const i=n[r],o=i.children.length;for(let n=0;n<o;n++){const r=i.children[n],o=Ve(r.targetPort);if(r.childId===e&&o.portName===t)return i}}return null})(t,l[u].name,s);if(e){const t=Ba(e.type);return{getValue:()=>"function"==typeof t.getValue?t.getValue():null}}}return null},uc=e=>{const{gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}=e;if(!ae(s))throw new Error(`Failed to find recipe "${s}" in cache`);if(!ue(s,r,t))throw console.warn(`Gate ${t} not found in block ${r} for recipe ${s}`),new Error(`Gate ${t} not found in block ${r} for recipe ${s}`);return async e=>cc({portName:e.port,originalEvent:n||{timestamp:Date.now(),type:e.data.type,value:e.data.value},data:e.data,currentGateId:t,blockRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,eventContext:e.eventContext,currentPath:e.executionContext?.currentPath||a,eventId:e.executionContext?.eventId||c})},dc=e=>{const{gateId:t,originalEvent:n,blockRecipeId:r,blockDbId:i,blockVersion:o,recipeId:s,currentPath:a,eventId:c}=e,l=ae(s);if(!l)throw new Error(`Failed to find recipe "${s}" in cache`);const u=ue(s,r,t);if(!u)return console.warn(`Gate ${t} not found in block ${r} for recipe ${s}`),null;const d=uc({gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}),h=Ja({widgetId:t,widgets:l.blocks[r].gates,currentPath:e.currentPath}),f=(e,t,n,r)=>d({port:e,data:t,eventContext:n,executionContext:r}),p={id:t,type:u.type,recipePoolId:s,thingRecipeId:r,recipeType:l.dbInfo.recipeType,returnOriginalEvent:!!u.returnOriginalEvent,currentPath:e.currentPath,eventId:c,eventContext:h?.data.eventContext||void 0,registerInterrupt:e=>{const{type:n,customTargetPortName:i,config:o,sourceWidgetId:a,interruptData:c,customId:l}=e;return tt.createInterrupt({type:n,recipePoolId:s,thingId:r,targetWidgetId:t,sourceWidgetId:a,portName:i,config:o,data:c,customId:l})},cancelInterrupt:e=>tt.destroyInterrupt(e),invokeNextWidget:d,nextWidget:f,nextGate:f,getParentAtPort:e=>lc(e,t,r,s),getState:()=>Object.freeze({...u.state,...u.type===Ke.input&&{customInputs:[]}}),setState:e=>{if("object"!=typeof e)return void console.warn(`Invalid state type [${typeof e}]. Expected an 'object'`);const n={...e,...u.type===Ke.input&&!e.customInputs&&{customInputs:[]}},i={...u.state};u.state=n,tc&&tc({blockId:r,gateId:t,prevState:i,newState:{...n},recipeId:s})}};return p};tt.setInvokeChildGateCb(ac),tt.setConsumeEventCounterCb((()=>++oc));const hc=(e,t,n,r,i)=>{const o=ue(e,n,r);if(!o)return console.warn(`Gate ${r} not found in block ${n} for recipe ${e}`),null;const s=t=>{const{type:i,customTargetPortName:o,config:s,data:a}=t;return tt.createInterrupt({type:i,recipePoolId:e,thingId:n,targetWidgetId:r,sourceWidgetId:r,portName:o,config:s,data:a})},a=()=>Object.freeze({...o.state,...o.type===Ke.input&&{customInputs:[]}}),c=e=>{if("object"!=typeof e)return void console.warn(`Invalid state type [${typeof e}]. Expected an 'object'`);const t={...e,...o.type===Ke.input&&!e.customInputs&&{customInputs:[]}};o.state=t},l=async t=>{const r=((e,t,n)=>{const r=ae(e);if(!r)throw new Error(`Recipe [${e} does not exist]`);if(!r.storage)return null;const i=ce(e,t);if(!i)throw new Error(`The Thing "${t}" does not exist in recipe ${e}`);if(!(i.storageUnits||[]).includes(n))throw new Error(`The Thing "${t}" has no access to storage unit "${n}"`);return r.storage[n]||null})(e,n,t);return r};if(i){const i=uc({gateId:r,thingRecipeId:n,thingDbId:o.id,thingVersion:"default",recipeId:e,currentPath:[],eventId:null});return{getState:a,setState:c,registerInterrupt:s,getStorageData:l,nextWidget:(e,t,n)=>i({port:e,data:t,eventContext:n}),invokeNextWidget:i,recipePoolId:e,recipeType:t,thingRecipeId:n,widgetId:r}}return{getState:a,setState:c,recipePoolId:e,widgetId:r,thingRecipeId:n}},fc=new c,pc="invoked",gc="state",mc=()=>{tt.destroyAllInterrupts()},yc=async(e,t,n)=>{const r=ae(e),i=ue(e,t,n);if(i&&r){const o=Ba(i.type);if(o&&"function"==typeof o.terminate){const i=((e,t,n,r)=>hc(e,t,n,r))(e,r.dbInfo.recipeType,t,n);if(i)try{await o.terminate(i)}catch(e){console.warn(`Error terminating widget "${n}" in thing "${t}". Failing silently: `,e)}}}},vc=async e=>{const{recipePoolId:t,thingRecipeId:n,widgetRecipeId:r,options:i}=e,o=ae(t),s=ue(t,n,r);if(s&&o){const e=Ba(s.type);if(e&&"function"==typeof e.initialize){const a=((e,t,n,r)=>hc(e,t,n,r,!0))(t,o.dbInfo.recipeType,n,r);if(a){const t=e.initialize;try{(e=>{if(e.type===Ke.script){const t=e.state;if((t.version||0)<2){const n=Object.keys(e.variablesListener||{});for(const t of n)if(e.variablesListener){const n=ei(t);e.variablesListener[n]=e.variablesListener[t],delete e.variablesListener[t],delete e.variables}t.version=2}}})(s),await t(a,i||{})}catch(e){throw console.warn(`Error initializing widget "${r}" in thing "${n}": `,e),e}}}}},bc=(e,t)=>{const n=ae(t);if(n)for(const t in n.blocks){const r=n.blocks[t];for(const t in r.gates)if(t===e)return{widget:r.gates[t],thing:r}}return null},wc=(e,t="",n="")=>`block:${t}:gate:${n||""}:${e}`,Sc=e=>{fc.emit(wc(gc),e),fc.emit(wc(gc,e.blockId,e.gateId),e)};ec=async e=>{await fc.emit(wc(pc),e),await fc.emit(wc(pc,e.blockId,e.gateId),e)},(e=>{tc=e})(Sc);var _c=async(e,t,n,r,i)=>{const o=de(e,{id:t,authorId:r,version:n,recipeType:i});Ii(),Qa(),Xa(i),e.globalVariables&&Qi.registerGlobalVariables(e.globalVariables);const s=ae(o);return s&&(s.startedAt=Date.now(),s.retryAttempts=0,s.execCounter=0,s.status=ee.STARTING,s.addLog("recipe registered")),o},Ic=async e=>{const t=ae(e);if(!t)return null;t.addLog("terminating recipe"),mc(),ea();for(const n in t.blocks){const r=t.blocks[n];for(const t in r.gates)await yc(e,n,t)}(e=>{!!ie[e]&&delete ie[e]})(e)},xc=async(e,t)=>{const n=ae(e),r=[],i=[];if(n){Bi(),si({recipePoolId:e,thingId:ge});for(const o in n.blocks){const s=n.blocks[o];if(!t||!Array.isArray(t)||t.includes(o))for(const t in s.gates)try{if(n.dbInfo?.recipeType===gr.Desktop){const e=s.gates[t];if(e.type===Ke.hubService){const r=e.state;if(r?.service?.webOnly){n?.addLog(`skipping initialization of web-only widget "${t}"`);continue}}e.type===Ke.recipeLoad&&i.push(e)}await vc({recipePoolId:e,thingRecipeId:o,widgetRecipeId:t,options:{keepCurrentState:!0}})}catch(e){r.push({widgetId:t,error:e.message})}}}return{failed:r,sendToInputWidget:t=>{const{inputName:n,data:r,thingId:i=ge,waitForOutputChild:o=!0}=t;return(async e=>{const{inputName:t,data:n,recipePoolId:r,thingId:i,waitForOutputChild:o=!0}=e,s=ae(r),a=ce(r,i),c=Date.now();if(a&&s){oc+=1;for(const e in a.gates){const s=a.gates[e];if(s.type===Ke.input&&!s.disabled){const l=s.state.inputName||"";if(l===t){const t=Ba(s.type),u={...n,timestamp:c},d=dc({gateId:e,originalEvent:u,blockRecipeId:i,blockDbId:a.id,blockVersion:a.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:oc});if(d&&t.processEvent){const s={...d,getState:d.getState,waitForOutputChild:o};if(ec&&await ec({recipeId:r,blockId:i,gateId:e,targetPort:ut,data:n}),!nc)return await t.processEvent(u,s);await nc(i,r,l,n)}continue}}}}})({inputName:n,data:r,recipePoolId:e,thingId:i,waitForOutputChild:o})},invokeRecipeLoadedWidgets:async()=>{for(const t of i)await sc({widgetId:t.id,thingId:ge,recipeId:e,targetPortName:as,data:{type:ye.Boolean,value:!0}})}}},kc=e=>{hi(e)},Ec=(e,t,n,r=!1)=>{const i=bc(t,e);if(i){const{widget:o,thing:s}=i,a={...o.state};o.state=n,r&&Sc({blockId:s.recipeId,gateId:t,recipeId:e,newState:{...n},prevState:a})}},Cc=(e,t)=>{const n=bc(t,e);return n?n.widget.state:null},$c=async e=>{const{recipePoolId:t,currentGateId:n,sourcePortName:r,originalEvent:i,data:o,eventContext:s,currentPath:a,eventId:c}=e,l=bc(n,t);if(l)return cc({portName:r,originalEvent:i,data:o,currentGateId:n,blockRecipeId:l.thing.recipeId,thingDbId:l.thing.id,thingVersion:l.thing.version,recipeId:t,eventContext:s,currentPath:a,eventId:c})},Oc=()=>{rc=!0},Nc=xi;const Tc=(e,t)=>{if(!e.uuid)throw new Error("Recipe file not compatible with this version of the Kemu Edge.");return((e,t,n)=>{const r=Buffer.from(n,"base64"),i=r.subarray(0,16),o=r.subarray(16).toString("base64"),s=d(e,t,32),a=h("aes-256-cbc",s,i);let c=a.update(o,"base64","utf8");return c+=a.final("utf8"),c})(e.uuid,"kemu",t)},Ac=e=>{try{return JSON.parse(e)}catch(e){return null}},Mc="undefined"!=typeof window,Pc={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},Dc={protocolPrefix:4,txtLength:4},jc=Object.values(Pc).reduce(((e,t)=>e+t),0),Rc=Object.values(Dc).reduce(((e,t)=>e+t),0),Lc=["width","height","colorSpace"],Fc=(e,t)=>{const n={},r=[];let i=0,o=Array.isArray(e)?[]:{};const s=(e,o)=>{const a=(e=>{const t="undefined"!=typeof Buffer&&e instanceof Buffer,n=e instanceof ArrayBuffer,r=e instanceof Uint8ClampedArray,i=e instanceof Uint8Array,o=e instanceof Int8Array;return t?"Buffer":n?"ArrayBuffer":r?"Uint8ClampedArray":i?"Uint8Array":o?"Int8Array":null})(e);if(!a){if(Array.isArray(e)){const t=[];for(let n=0;n<e.length;n++)t[n]=s(e[n],`${o}[${n}]`);return t}if("object"==typeof e){const t={},n=(e=>{const t=e instanceof Int16Array,n=e instanceof Uint16Array,r=e instanceof Int32Array,i=e instanceof Uint32Array,o=e instanceof Float32Array,s=e instanceof Float64Array,a=e instanceof BigInt64Array,c=e instanceof BigUint64Array;return t?"Int16Array":n?"Uint16Array":r?"Int32Array":i?"Uint32Array":o?"Float32Array":s?"Float64Array":a?"BigInt64Array":c?"BigUint64Array":null})(e);if(n)throw new Error(`Unsupported binary type [${n}] at path "${o}"`);for(const n in e)Object.hasOwn(e,n)||Lc.includes(n)||console.warn(`Allowing inherited property: ${n} from path: ${o}`),t[n]=s(e[n],`${o.length?`${o}.`:""}${n}`);return t}return e}n[o]={index:i,length:e.byteLength,binaryType:a},"Buffer"===t?r.push(Buffer.from(e)):"ArrayBuffer"===a?r.push(e):r.push(e.buffer),i+=e.byteLength};o=s(e,"");let a=null;if(r.length>1)if("ArrayBuffer"===t){const e=r.reduce(((e,t)=>e+t.byteLength),0),t=new Uint8Array(e);let n=0;for(let e=0;e<r.length;e++)t.set(new Uint8Array(r[e]),n),n+=r[e].byteLength;a=t.buffer}else{a=Buffer.concat(r)}else 1===r.length&&(a=r[0]);return a?{map:n,combinedData:a,sourceCopy:o}:null},Uc=(e,t,n)=>{const r=t.match(/(\[\d+\])|([^[\].]+)/g)||[];let i=e;for(let e=0;e<r.length;e++){let t=r[e];const o=t.startsWith("[")&&t.endsWith("]"),s=e===r.length-1;if(o){t=t.slice(1,-1);const o=parseInt(t,10);if(!Array.isArray(i))throw new Error(`Expected an array at key "${r.slice(0,e).join(".")}" but found an object.`);s?i[o]=n:(i[o]||(i[o]=r[e+1].startsWith("[")?[]:{}),i=i[o])}else s?i[t]=n:(i[t]||(i[t]=r[e+1].startsWith("[")?[]:{}),i=i[t])}return e},Wc=(e,t,n)=>{const r="undefined"!=typeof Buffer,i=t instanceof Uint8Array;for(const o in n)if(Object.hasOwn(n,o)){const{index:s,length:a,binaryType:c}=n[o];let l=null;if(r&&t instanceof Buffer)switch(c){case"Buffer":l=t.subarray(s,s+a);break;case"ArrayBuffer":l=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a);break;case"Uint8Array":l=new Uint8Array(t.subarray(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.subarray(s,s+a));break;case"Int8Array":l=new Int8Array(t.subarray(s,s+a))}else if(t instanceof ArrayBuffer||t instanceof Uint8Array)switch(c){case"Buffer":if(r){l=Buffer.from(t.slice(s,s+a));break}case"ArrayBuffer":l=i?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a):t.slice(s,s+a);break;case"Uint8Array":l=i?t.slice(s,s+a):new Uint8Array(t.slice(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.slice(s,s+a));break;case"Int8Array":l=new Int8Array(t.slice(s,s+a))}l&&Uc(e,o,l)}return e},Bc=e=>g(e),Gc="KMSG",Vc="KCMD",Yc=Bc("klProtocol");var Hc={encode:(e,t,n)=>{const r={json:e.json},i=Fc(r.json,"Buffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=Buffer.from(a),l=c.byteLength,u=Pc.protocolPrefix+Pc.protocolVersion+Pc.jsonLength+Pc.binaryLength+Pc.fromServiceId+Pc.toServiceId+Pc.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write(Gc,f),f+=Pc.protocolPrefix,d.writeUInt8(1,f),f+=Pc.protocolVersion,d.writeUInt32LE(l,f),f+=Pc.jsonLength,d.writeUInt32LE(s,f),f+=Pc.binaryLength,d.writeUInt32LE(t,f),f+=Pc.fromServiceId,d.writeUInt32LE(n,f),f+=Pc.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=Pc.sentAt,c.copy(d,f),f+=l,o&&s&&o.copy(d,f),d},decodeHeader:e=>{let t=0;const n=e.toString("utf-8",t,Pc.protocolPrefix);if(t+=Pc.protocolPrefix,n!==Gc)return null;if(e.byteLength<jc)return Yc(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=Pc.protocolVersion;const i=e.readUInt32LE(t);t+=Pc.jsonLength;const o=e.readUInt32LE(t);t+=Pc.binaryLength;const s=e.readUInt32LE(t);t+=Pc.fromServiceId;const a=e.readUInt32LE(t);t+=Pc.toServiceId;const c=e.readBigInt64LE(t);t+=Pc.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,jc);let h=null;return e.byteLength-jc-i-o>0&&(h=e.subarray(jc+i+o)),{header:{protocolVersion:r,jsonLength:i,binaryLength:o,fromServiceId:s,toServiceId:a,sentAt:new Date(Number(c)),packages:[u],headerPackage:d},remaining:h}},decodeFullKlMessage:e=>{const t=Buffer.concat(e.packages),n=t.subarray(0,e.jsonLength).toString(),r=t.subarray(e.jsonLength,e.jsonLength+e.binaryLength),i=Ac(n);if(!i?.json)return Yc("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&Wc(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=jc+e.jsonLength+e.binaryLength;return o.byteLength>c&&(a=o.subarray(c),s=o.subarray(0,c)),{message:{json:i.json,rawMessage:s},remaining:a}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<jc)return Yc("Invalid Header Size"),e;let n=0;return n+=Pc.protocolPrefix,n+=Pc.protocolVersion,n+=Pc.jsonLength,n+=Pc.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=Pc.fromServiceId,void 0!==t.toServiceId&&e.writeUInt32LE(t.toServiceId,n),e},encodeCommand:e=>{let t=0;const n=Buffer.from(e),r=n.byteLength,i=Rc+r,o=Buffer.alloc(i);return o.write(Vc,t),t+=Dc.protocolPrefix,o.writeUint32LE(r,t),t+=Dc.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<Rc)return{command:null};const n=e.toString("utf-8",t,Dc.protocolPrefix);if(t+=Dc.protocolPrefix,n!==Vc)return{command:null};const r=e.readUInt32LE(t);t+=Dc.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-Rc-r;let s=null;o>0&&(s=e.subarray(Rc+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const zc="KMSG",qc="KCMD",Kc=Bc("klProtocol"),Jc=new TextEncoder;var Zc={encode:(e,t,n)=>{const r={json:e.json},i=Fc(e.json,"ArrayBuffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=Jc.encode(a),l=c.byteLength,u=new ArrayBuffer(Pc.protocolPrefix+Pc.protocolVersion+Pc.jsonLength+Pc.binaryLength+Pc.fromServiceId+Pc.toServiceId+Pc.sentAt+l+s),d=new DataView(u),h=new Uint8Array(u),f=Date.now();let p=0;for(let e=0;e<4;++e)h[p++]=zc.charCodeAt(e);return d.setUint8(p,1),p+=Pc.protocolVersion,d.setUint32(p,l,!0),p+=Pc.jsonLength,d.setUint32(p,s,!0),p+=Pc.binaryLength,d.setUint32(p,t,!0),p+=Pc.fromServiceId,d.setUint32(p,n,!0),p+=Pc.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=Pc.sentAt,h.set(c,p),p+=l,o&&s&&h.set(new Uint8Array(o),p),u},decodeHeader:e=>{const t=new DataView(e);let n=0,r="";for(let e=0;e<Pc.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==zc)return null;if(e.byteLength<jc)return Kc.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=Pc.protocolVersion;const o=t.getUint32(n,!0);n+=Pc.jsonLength;const s=t.getUint32(n,!0);n+=Pc.binaryLength;const a=t.getUint32(n,!0);n+=Pc.fromServiceId;const c=t.getUint32(n,!0);n+=Pc.toServiceId;const l=t.getBigInt64(n,!0);n+=Pc.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,jc);let f=null;if(e.byteLength-jc-o-s>0){f=new Uint8Array(e,jc+o+s).slice().buffer}return{header:{protocolVersion:i,jsonLength:o,binaryLength:s,fromServiceId:a,toServiceId:c,sentAt:new Date(Number(l)),packages:[d],headerPackage:h.slice().buffer},remaining:f}},decodeFullKlMessage:e=>{const t=e.packages.reduce(((e,t)=>e+t.byteLength),0),n=new Uint8Array(t);let r,i=0;for(const t of e.packages)r=new Uint8Array(t),n.set(r,i),i+=r.byteLength;const o=(new TextDecoder).decode(n.subarray(0,e.jsonLength)),s=n.subarray(e.jsonLength,e.jsonLength+e.binaryLength),a=Ac(o);if(!a?.json)return Kc.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&Wc(a.json,s,a.jsonBinaryMap);const c=new Uint8Array(e.headerPackage.byteLength+n.byteLength);c.set(new Uint8Array(e.headerPackage),0),c.set(n,e.headerPackage.byteLength);let l=c,u=null;const d=jc+e.jsonLength+e.binaryLength;return c.byteLength>d&&(u=c.subarray(d),l=c.subarray(0,d)),{message:{json:a.json,...s.length?{binaryData:s.buffer}:{},rawMessage:l.buffer},remaining:u?.buffer??null}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<jc)return Kc("Invalid Header Size"),e;let n=0;n+=Pc.protocolPrefix,n+=Pc.protocolVersion,n+=Pc.jsonLength,n+=Pc.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=Pc.fromServiceId,void 0!==t.toServiceId&&r.setUint32(n,t.toServiceId,!0),e},encodeCommand:e=>{let t=0;const n=Jc.encode(e),r=n.byteLength,i=new ArrayBuffer(Rc+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=qc.charCodeAt(e);return o.setUint32(t,r,!0),t+=Dc.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<Rc)return{command:null};let r="";for(let e=0;e<Dc.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==qc)return{command:null};const i=t.getUint32(n,!0);n+=Dc.txtLength;const o=e.byteLength-Rc-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-Rc)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(Rc+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};let Xc=Hc;Mc&&(Xc=Zc);var Qc,el=Xc;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}(Qc||(Qc={}));let tl=Math.ceil(Date.now()/1e3);let nl,rl,il,ol,sl,al=!1;var cl=()=>{al=!0},ll=()=>{al=!1},ul=(e,t)=>{if(!nl)throw new Error("Memory connection not set.");nl.sendBuf(e,t)},dl=e=>rl=e,hl=e=>sl=e,fl=e=>il=e,pl=e=>ol=e;const gl=async(e,t=2)=>{const n=async(e,r)=>{if(Array.isArray(e))for(let i=0;i<e.length;i++){const o=e[i];if(o&&"object"==typeof o)if(Array.isArray(o))await n(o,r+1);else{const s=o._kemuType;void 0!==s?s===ye.ImageData&&(e[i]=await Ye(o)):r<t&&await n(o,r+1)}}else if("object"==typeof e&&null!==e){const i=Object.keys(e);for(const o of i){const i=e[o];if(i&&"object"==typeof i){const s=i._kemuType;void 0!==s?s===ye.ImageData&&(e[o]=await Ye(i)):r<t&&await n(i,r+1)}}}};return await n(e,1),e};Bc("klTransmissionManager"),Bc("ipcClient"),Bc("kemuWidgetService"),I(process.argv.slice(2));const ml=e=>g(`runner:${e}`),yl=ml("connectionManager"),vl=ml("remoteInvoke"),bl=new function(e){const t={};let n,r=console.log;const i={};let o=e||String(Date.now());const s={},a=e=>!s[e],c=(e,t,n,r,i,o)=>{let s=Mc?new ArrayBuffer(0):Buffer.alloc(0);const c={json:{functionName:e,args:o.success?o.success:[o],messageId:t,type:o.success?"response":"error"}};return a(r)&&(s=el.encode(c,n,r)),i(s,{msg:c,sourceServiceId:n,targetServiceId:r})};return{setLogger:e=>{r=e},processMessage:(e,o,s,a)=>{if(!a)return!1;const l=a;if(t[l.messageId]){const e=t[l.messageId];return e&&(clearTimeout(e.timer),e.fulfilled||(e.fulfilled=!0,"response"===l.type?e.resolve(l.args):"error"===l.type&&e.reject(l.args[0])),delete t[l.messageId]),!0}if("execute"!==l.type&&r&&r(`No pending execution found for message id "${l.messageId}"`),"execute"===l.type){const t=i[l.functionName];if(t){const i=e=>{c(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,e)};if(!(!n||n({args:l.args,functionName:l.functionName,transport:e,messageId:l.messageId,sourceServiceId:s.sourceServiceId,reply:i,send:o})))return r&&r(`Function "${l.functionName}" not allowed to be invoked by client [${s.sourceServiceId}]`),i({error:"Function not allowed",errCode:"FNC_NOT_ALLOWED"}),!0;t({transport:e,args:l.args,reply:i,messageId:l.messageId,sourceServiceId:s.sourceServiceId,send:o})}else{const e=`Function "${l.functionName}" not found.`;r&&r(e),c(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,{error:e,errCode:"FNC_NOT_FOUND"})}return!0}return!1},execute:async(e,n,i,s,c,l)=>{if(!i){const e="No send buffer function provided.";throw r&&r(e),e}tl+=1;const u=`${o}-${tl}-exec-${e.substring(0,10)}`,d={messageId:u,functionName:e,send:i,sourceServiceId:s,targetServiceId:c,args:n||[],fulfilled:!1,resolve:()=>{},reject:()=>{}};d.promise=new Promise(((e,t)=>{d.resolve=e,d.reject=t}));let h=Mc?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:e,args:n,messageId:u,type:"execute"}};a(c)&&(h=el.encode(f,s,c)),t[u]=d,r&&r(`Calling remote function "${e}" with message id "${u}"`);const p="true"===process.env.NO_INVOKE_TIMEOUT;return l?.async?(d.fulfilled=!0,d.resolve([void 0]),delete t[u]):0===l?.timeout||p||(d.timer=setTimeout((()=>{r&&r(`Remote function ${u} timed out`);const n=t[u];n&&!n.fulfilled&&(n.fulfilled=!0,d.reject(`Function ${e} Timed out`)),delete t[u]}),l?.timeout||3e4)),i(h,{sourceServiceId:s,targetServiceId:c,msg:f}),d.promise},sendResponse:c,registerFunction:(e,t)=>{i[e]=t},registerFunctionsMiddleware:e=>{n=e},unregisterAllFunctions:()=>{Object.keys(i).forEach((e=>{delete i[e]}))},getTransportSendFunction:e=>{const n=t[e];return n?n.send:null},setServiceName:e=>{o=e},getPendingExecutions:()=>t,rejectAllPending:e=>{Object.keys(t).forEach((n=>{const r=t[n];r&&!r.fulfilled&&(clearTimeout(r.timer),r.fulfilled=!0,r.reject(e),delete t[n])}))},broadcast:(e,t,n,i)=>{tl+=1;const s=`${o}-${tl}-multicast-${e.substring(0,10)}`;let c=Mc?new ArrayBuffer(0):Buffer.alloc(0);const l={json:{functionName:e,args:t,messageId:s,type:"execute"}};let u=a(n[0].serviceId);u&&(c=el.encode(l,i,n[0].serviceId));for(let t=0;t<n.length;t++)try{const o=n[t];r&&r(`Broadcasting function "${e}" with message id "${s}" to client [${o.serviceId}]`),0!==t&&(u=a(o.serviceId),u&&(c=el.patchEncodedHeader(c,{toServiceId:o.serviceId}))),o.sendFn(c,{msg:l,sourceServiceId:i,targetServiceId:o.serviceId})}catch(e){r&&r(`Error broadcasting to client at index ${t}`)}},disableServiceEncoding:(e,t)=>{s[e]=t}}}("kweb");bl.setLogger(vl);const wl=new c,Sl=new c;let _l,Il=null,xl=null,kl=null,El=null;const Cl={},$l=()=>El?{...El}:null,Ol=(e,t,n)=>{const r=`${e}_${t}`,i={contents:n,lastRequestedAt:Date.now(),contentsChecksum:""};return Cl[r]=i,i},Nl=(e,t)=>Cl[`${e}_${t}`]||null,Tl=async(e,t)=>{if(!Il)return yl("Hub Link has not been acknowledged. Cannot get services."),null;const n=[{serviceName:e,version:t}];return(await bl.execute(Se.GetServiceContents,n,Pl,Il,0))[0]},Al=new Map,Ml=async(e,t,n=!1)=>{if(!e||!t)return null;const r=`${e}:${t}`;if(!n){const e=Al.get(r);if(e)return e}const i=Nl(e,t);if(!i||n){const n=i||Ol(e,t),o=(async()=>{try{const r=await Tl(e,t);return r&&(n.contents=r.uiContent,n.contentsChecksum=r.uiContentsChecksum||""),n.contents||null}catch(n){return yl(`Failed to fetch service contents for ${e} v${t}`,n),null}finally{Al.delete(r)}})();return Al.set(r,o),o}return i?.contents||null},Pl=ul,Dl=()=>{yl("Disconnected from the server"),Il=null,kl=null,bl.rejectAllPending("Disconnected from the server"),wl.emit("disconnected")},jl=()=>{yl("Connected to the server"),wl.emit("connected")},Rl=()=>xl,Ll=(e,t,n,r)=>`${e}_${t}_${n}_${r}`,Fl=async()=>{const e=Rl();if(e){const t=ae(e)?.blocks;if(t){const n={};for(const r in t){const i=t[r];for(const t in i.gates){const r=i.gates[t];if(r.type===Ke.hubService){const t=r.state;if(t.service?.eventEmitter){const r=`${t.service.name}_${t.service.version}`;if(!n[r])try{yl(`Re-issuing subscription for service ${t.service.name} (${t.service.version})`),n[r]=!0,await cu({listener:{recipeId:e},targetService:{serviceName:t.service.name,version:t.service.version}})}catch(e){yl(`Failed to re-issue subscription for service ${t.service.name} (${t.service.version})`,e)}}}}}}}},Ul=async()=>{_l=void 0;const e=await tu();wl.emit("services-changed",e)},Wl=async()=>(yl("Services list changed"),Ul()),Bl=async e=>{if(!e)return void yl("Hub sent ACK request without service id");const t=Rl();if(!t)return void yl("Hub sent ACK request without recipe pool id");if(!ae(t))throw new Error("Hub sent ACK request without recipe");const n=$l(),r={apiKey:n?.apiKey,recipe:he(t),user:n,ackSessionId:e};await bl.execute(Se.SocketAckResponse,[r],Pl,e,0),yl("Hub Link acknowledged"),Il=e,wl.emit("acknowledged"),await yu(),Fl()},Gl=async()=>{await ll()},Vl=async e=>{const t=e.args[0],{widgetId:n,recipePoolId:r,waitForResponse:i}=t;return e.reply({success:[`message received by recipe ok target widget "${n}", recipe pool id "${r}", waitForResponse "${i}"`]})},Yl=async e=>{const t=e.args[0],n=Ll("broadcast",`hub_${t.type}`,(0).toString(),"");await Sl.emit(n,t)},Hl=async e=>{const t=e.args[0],n=Rl(),r=t.targetRecipePoolId||t.targetRecipeId;if(!r||r===n){for(const e of t.outputs||[])e.type===ye.ImageData&&Le(e.value)&&(e.value=await Ye(e.value));if(n){const r=ae(n);if(r){const i=async e=>{const n=Ll("broadcast",t.source.serviceName,t.source.serviceVersion,e);try{await Sl.emit(n,t)}catch(t){yl(`Failed to emit broadcast event for target ${e}`,t)}};await i("app");for(const o in r.blocks){const s=r.blocks[o];for(const r in s.gates){const o=s.gates[r];if(o.disabled)continue;if(t.targetWidgetId&&t.targetWidgetId!==r)continue;const a=o.state;if(o.type!==Ke.script){if(o.type===Ke.hubService&&a.service?.name===t.source.serviceName&&a.service?.version===t.source.serviceVersion&&a.variantId===t.variantId){await i(r);for(const i of t.outputs||[])if(null!==i.value&&void 0!==i.value){const o={type:i.type,value:i.value,timestamp:Date.now()};yl(`Sending data to output ${i.name} requested by messageId ${e.messageId}`),await $c({recipePoolId:n,currentGateId:r,sourcePortName:i.name,originalEvent:o,data:o,eventContext:t.eventContext,currentPath:t.currentPath||[],eventId:t.eventId||null})}}}else await i(r)}}}}}},zl=async e=>{const t=e.args[0],{finalState:n,recipeId:r,widgetId:i}=t,o=Cc(r,i);let s=o;if(n&&s&&o&&(s={...o,customState:n},Ec(r,i,s,!0)),s?.service)try{const e=Ll("setOutputs",s.service.name,s.service.version,i);await Sl.emit(e,t.outputs)}catch(e){yl(`Failed to emit setOutputs event for widget ${i}`,e)}let a=null;for(const n of t.outputs)if(null!==n.value&&void 0!==n.value){if(n.type===ye.ImageData){if(!Le(n.value)){yl(`Invalid ImageData value received for output ${n.name}. Expected an ImageData-like object`);continue}n.value=await Ye(n.value)}else n.type!==ye.JsonObj&&n.type!==ye.Array||await gl(n.value);const o={type:n.type,value:n.value,timestamp:Date.now()};yl(`Sending data to output ${n.name} requested by messageId ${e.messageId}`);try{await $c({recipePoolId:r,currentGateId:i,sourcePortName:n.name,originalEvent:o,data:o,eventContext:t.eventContext,currentPath:t.currentPath||[],eventId:t.eventId||null})}catch(e){yl(`Failed to trigger next global widget for output ${n.name}`,e),a=e;break}}if(a){const t=a instanceof Dr,n=a;e.reply({error:a.message,errCode:t?"CHILD_WIDGET_ERROR":"INVOKING_ERROR",errData:{targetWidgetId:n.targetWidgetId,targetPortName:n.targetPortName,sourcePortName:n.sourcePortName,sourceWidgetId:n.sourceWidgetId,targetWidgetType:n.targetWidgetType,sourceWidgetType:n.sourceWidgetType}})}else e.reply({success:[]})},ql=async e=>{const t=e.args[0],{newState:n,recipeId:r,widgetId:i}=t,o=Cc(r,i);if(o){const t={...o,customState:{...o.customState,...n}};return Ec(r,i,t,!0),e.reply({success:[]})}},Kl=async({args:e,reply:t})=>{const n=e[0],{recipeId:r,widgetId:i,path:o,key:s}=n;yl(`Received request to set a dependency path for "${s}" on widget "${i}" in recipe "${r}"`);const a=Cc(r,i);if(a){const e={...a};e.dependencies=e.dependencies||{},e.dependencies[s]={path:o},Ec(r,i,e,!0)}return t({success:[]})},Jl=async({args:e,reply:t})=>{const n=e[0],{recipeId:r,widgetId:i,key:o}=n;yl(`Received request to get a dependency path for "${o}" on widget "${i}" in recipe "${r}"`);const s=Cc(r,i);if(s){const e=s.dependencies?.[o]?.path;return yl(`Returning dependency path for "${o}" on widget "${i}": "${e}"`),t({success:[e||null]})}return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"})},Zl=async({args:e,reply:t})=>{const n=e[0];if(!n.expressions)return t({error:"Expression is required",errCode:"EXPRESSION_REQUIRED"});const r=le({recipeId:n.recipePoolId,widgetId:n.widgetId});if(!r)return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"});if(r.type!==Ke.hubService)return t({error:"Widget is not a hub service",errCode:"WIDGET_NOT_A_HUB_SERVICE"});const i=r.state,{uuid:o}=(e=>{const t=ae(e);if(!t)throw new Error(`Recipe [${e} does not exist]`);return{uuid:t.uuid,recipeType:t.dbInfo?.recipeType}})(n.recipePoolId);return t({success:[{expressions:await Promise.all(n.expressions.map((async e=>await ks({template:e.text,context:e.context||{},options:{enableFnTag:!1,recipeUuid:o,serviceName:i.service?.name,securityOptions:{restrictionLevel:"strict"}}}))))}]})},Xl=async({args:e,reply:t})=>{const n=e[0],r=Qi.getAllVariables().filter((e=>!n.filterTypes||n.filterTypes.includes(e.controlType))).map((e=>({name:e.name,type:e.controlType})));return t({success:[{variables:r}]})},Ql=async({args:e,reply:t})=>{const n=e[0];if(!n.names||0===n.names.length)return t({error:"Variable names are required",errCode:"VARIABLE_NAMES_REQUIRED"});const r=Qi.getAllVariables().filter((e=>n.names.includes(e.name))).map((e=>({name:e.name,value:e.lastValue})));return t({success:[{values:r}]})},eu=async({args:e,reply:t})=>{const n=e[0];if(!n.values||0===n.values.length)return t({error:"Variable values are required",errCode:"VARIABLE_VALUES_REQUIRED"});try{const{values:e}=n;for(const t of e)await Qi.setGlobalVariable({name:t.name,value:t.value});return t({success:[]})}catch(e){return yl(`Failed to set global variable values: ${e}`),t({error:"Failed to set some of the global variable values",errCode:"FAILED_TO_SET_GLOBAL_VARIABLE_VALUES",errData:e.message})}},tu=async()=>{if(yl(`Requesting services on ${(new Date).toISOString()}`),!Il)return yl("Hub Link has not been acknowledged. Cannot get services."),{available:[],installed:[],failed:[]};const[e]=await bl.execute(Se.GetServices,[],Pl,Il,0);_l=e;for(const t of e.available){if(t.internal)continue;const e=Nl(t.name,t.version);if(!e||e?.contentsChecksum!==t.uiContentChecksum)try{const n=e||Ol(t.name,t.version);yl(`Service ${t.name} v${t.version} contents have changed, fetching new contents`);const r=await Tl(t.name,t.version);r&&(n.contents=r.uiContent,n.contentsChecksum=t.uiContentChecksum||"")}catch(e){yl(`Failed to update service contents for ${t.name} v${t.version}`,e)}}return e},nu=()=>_l||{available:[],installed:[],failed:[]},ru=()=>!!_l,iu=async e=>{const{targetServiceSessionId:t}=e;if(!Il)return void yl("No target service session id provided");yl(`Forwarding "onParentEvent" to service ${t}`);const n=await bl.execute(Se.OnParentEvent,[e],Pl,Il,t,e.config).catch((e=>{throw yl(`Error invoking onParentEvent callback: ${e}`),e.errCode===Qc.ParentEventCallbackError?e.error:e}));return n},ou=async e=>{if(!Il)return yl("Hub Link has not been acknowledged. Cannot get services."),{};const[t]=await bl.execute(Se.GetDefaultState,[],Pl,Il,e);return t},su=async(e,t,n,r,i)=>{if(!Il)return yl("Hub Link has not been acknowledged. Cannot get services."),null;const[o]=await bl.execute(Se.UIEvent,[t,n,r],Pl,Il,e,i);return o},au=(e,t)=>{const n=(...e)=>{t(...e)};return wl.on(e,n),()=>wl.off(e,n)},cu=async e=>{if(Il)return bl.execute(Se.SubscribeToService,[e],Pl,Il,0);yl("Hub Link has not been acknowledged. Cannot subscribe to services.")},lu=async e=>{if(Il)return bl.execute(Se.UnsubscribeFromService,[e],Pl,Il,0);yl("Hub Link has not been acknowledged. Cannot subscribe to services.")},uu=(e,t,n,r)=>{const i=Ll("broadcast",t,n,e);return Sl.on(i,r)},du=(e,t,n,r)=>{const i=Ll("setOutputs",t,n,e);return Sl.on(i,r)},hu=async(e,t,n)=>Il?bl.execute(e,t,Pl,Il,0,n):(yl("Hub Link has not been acknowledged. Cannot execute function."),null),fu=async e=>{if(!Il)return void yl("Hub Link has not been acknowledged. Cannot execute function.");const t=Cc(e.recipePoolId,e.widgetId);if(!t)throw new Error("Widget or recipe pool not found. Cannot initialize service instance.");const n=Object.keys(t.dependencies||{}).reduce(((e,n)=>(e[n]=t.dependencies?.[n]?.path||null,e)),{});if(!ae(e.recipePoolId))throw new Error("Recipe not found. Cannot initialize service instance.");const r=$l(),i=[{currentState:t.customState,recipeId:e.recipePoolId,recipe:he(e.recipePoolId),widgetId:e.widgetId,variantId:e.variantId,recipeType:e.recipeType,recipeName:e.recipeName,currentDependencies:n,kemuApiKey:r?.apiKey}],[o,s,a]=await bl.execute(Se.InitializeInstance,i,Pl,Il,e.sessionId);if(s&&s.length>0){const n=s.filter((e=>e.name&&e.name.length>0)).map((e=>({name:e.name,hubServiceName:t.service?.name})));Nc({clearExistingSecrets:!0,recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:n})}if(a&&a.length>0&&await Promise.all(a.map((async t=>{await Qi.setGlobalVariable({name:t.name,value:t.value,controlType:t.controlType,controlSettings:t.controlSettings,helpText:t.helpText,order:t.order,disableChangeNotifications:!1===t.emitChangeEvent,disableDefineNotifications:!1===t.emitDefineEvent,doNotOverrideExisting:t.doNotOverrideExisting??!1,widgetId:e.widgetId})}))),o){const t=Cc(e.recipePoolId,e.widgetId);if(t){const n={...t,customState:o};Ec(e.recipePoolId,e.widgetId,n,!0)}}},pu=async(e,t,n,r)=>{if(!Il)return void yl("Hub Link has not been acknowledged. Cannot execute function.");const i=Cc(n,t);if(!i)throw new Error("Widget or recipe pool not found. Cannot initialize service instance.");const o=ae(n);if(!o)throw new Error("Recipe not found. Cannot terminate service instance.");const s=[{currentState:i.customState,recipeId:n,recipe:{poolId:n,uuid:o.uuid,name:o.name,type:o.dbInfo.recipeType,dbId:o.dbInfo.id,version:o.dbInfo.version,authorId:o.dbInfo.authorId},widgetId:t,variantId:r}];await bl.execute(Se.TerminateInstance,s,Pl,Il,e)},gu=async(e,t,n="^",r)=>{const i=["^","~",">=",">","<=","<","="];if(!i.includes(n))throw new Error(`Invalid compare mode "${n}". Must be one of ${i.join(", ")}`);const o=ru(),s=r||!o?await tu():nu();for(const r of s.available)if(r.name===e){if(r.version===t)return r;if(p(r.version,`${n}${t}`))return r}return null},mu=async(e=!1)=>{if(!Il)return yl("Hub Link has not been acknowledged. Cannot get services."),null;if(kl&&!e)return kl;const[t]=await bl.execute(Se.GetSystemInfo,[],Pl,Il,0).catch((e=>(yl("Failed to get system info",e),[null])));return kl=t,t},yu=async()=>{kl=await mu()};var vu,bu,wu,Su,_u,Iu,xu,ku,Eu=async e=>{if(!e.apiKey)throw new Error("an API key is required to connect to the hub");El=e,e.apiKey,fl(jl),pl(Dl),hl((({json:e,transmission:t})=>{bl.processMessage("websocket",Pl,t,e)})),await Gl(),bl.unregisterAllFunctions(),bl.registerFunction(Se.SetState,ql),bl.registerFunction(Se.SetOutputs,zl),bl.registerFunction(Se.BroadcastEvent,Hl),bl.registerFunction(Se.HubBroadcastEvent,Yl),bl.registerFunction(Se.SendToRecipe,Vl),bl.registerFunction(_e.SetDependencyPath,Kl),bl.registerFunction(_e.GetDependencyPath,Jl),bl.registerFunction(_e.ParseStringExpression,Zl),bl.registerFunction(_e.GetGlobalVariableNames,Xl),bl.registerFunction(_e.GetGlobalVariableValues,Ql),bl.registerFunction(_e.SetGlobalVariableValues,eu),dl((e=>{((e,t)=>{const n=we.SocketAcknowledge,r=we.IpcAcknowledge,i=e.startsWith(n);if(e===r)return t&&t(),0;if(i){const o=e.split(i?n:r),s=parseInt(o[1]);return t&&t(s),s}})(e,Bl),((e,t)=>{e===we.ServicesListChanged&&(t&&t())})(e,Wl)})),await cl()},Cu=(e,t)=>{wl.on(e,t)},$u=()=>({getServices:tu,getServiceContents:Ml,onParentEvent:iu,onCommand:au,getDefaultState:ou,getCachedServices:nu,areServicesCached:ru,subscribeToServiceEvents:cu,unsubscribeFromServiceEvents:lu,callProcessorHandler:su,onBroadcastEvent:uu,onSetOutputsEvent:du,executeHubFunction:hu,initializeServiceInstance:fu,terminateServiceInstance:pu,getCompatibleService:gu,getHubSystemInfo:mu}),Ou=e=>{xl=e},Nu=()=>bl;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(vu||(vu={})),function(e){e[e.Number=0]="Number",e[e.String=1]="String",e[e.ArrayBuffer=2]="ArrayBuffer",e[e.Array=3]="Array",e[e.Boolean=4]="Boolean",e[e.JsonObj=5]="JsonObj",e[e.Anything=6]="Anything",e[e.ImageData=7]="ImageData",e[e.AudioBuffer=8]="AudioBuffer",e[e.Rect=9]="Rect",e[e.Point=10]="Point",e[e.ImageBitmap=11]="ImageBitmap",e[e.BinaryFile=12]="BinaryFile"}(bu||(bu={})),function(e){e.Number="Number",e.String="String",e.ArrayBuffer="ArrayBuffer",e.Array="Array",e.Boolean="Boolean",e.JsonObj="JsonObj",e.Anything="Anything",e.ImageData="ImageData",e.AudioBuffer="AudioBuffer",e.Rect="Rect",e.Point="Point",e.ImageBitmap="ImageBitmap",e.BinaryFile="BinaryFile"}(wu||(wu={})),function(e){e.Javascript="js",e.Python="py",e.Executable="exe"}(Su||(Su={})),function(e){e.IpcAcknowledge="iack:",e.SocketAcknowledge="sack:",e.AcknowledgeResponse="ackr:",e.ServicesListChanged="update-services",e.SendManifest="send-manifest",e.BroadcastStart="broadcast-start",e.BroadcastEnd="broadcast-end",e.AssumeSession="assume:"}(_u||(_u={})),function(e){e.GetServices="getServices",e.SubscribeToService="subscribeToService",e.UnsubscribeFromService="unsubscribeFromService",e.GetServiceContents="getServiceContents",e.SocketAckResponse="socketAckResponse",e.ShowSecretsConfigScreen="showSecretsConfigScreen",e.GetMappedSecrets="getMappedSecrets",e.GetSecretContexts="getSecretContexts",e.AddServiceSecret="addServiceSecret",e.OnParentEvent="onParentEvent",e.GetDefaultState="getDefaultState",e.BroadcastEvent="broadcastEvent",e.HubBroadcastEvent="hubBroadcastEvent",e.ServiceManifest="serviceManifest",e.SendToRecipe="sendToRecipe",e.KemuComposerDisconnected="kemu-composer-disconnected",e.GetState="getState",e.SetState="setState",e.SetOutputs="setOutputs",e.UIEvent="uiEvent",e.GetSystemInfo="getSystemInfo",e.InitializeInstance="initializeInstance",e.TerminateInstance="terminateInstance",e.UninstallService="uninstallService",e.ChooseDirectoryDialog="chooseDirectoryDialog",e.ChooseFileDialog="chooseFileDialog",e.SaveRecipeToFile="saveRecipeToFile",e.GetUniqueId="getUniqueId",e.RebootToInstallUpdate="rebootToInstallUpdate",e.GetFileContentFromCacheId="getFileContentFromCacheId",e.GetDecryptedEdgeApiKey="getDecryptedEdgeApiKey",e.GetHubConfig="getHubConfig",e.GetRecipeDecryptedSecretsValues="getRecipeDecryptedSecretsValues",e.GetRecipeSecretMappings="getRecipeSecretMappings",e.AddRecipeSecretMapping="addRecipeSecretMapping",e.DeleteRecipeSecretMapping="deleteRecipeSecretMapping",e.GetHubSecrets="getHubSecrets",e.AddHubSecrets="addHubSecrets",e.DeleteHubSecret="deleteHubSecret"}(Iu||(Iu={})),function(e){e.SetDependencyPath="setDependencyPath",e.GetDependencyPath="getDependencyPath"}(xu||(xu={})),function(e){e.IPC="ipc",e.WS="ws"}(ku||(ku={}));const Tu=e=>{try{return JSON.parse(e)}catch(e){return null}},Au=()=>{const e=(()=>{switch(process.arch){case"x64":return"x64";case"ia32":return"x86";case"arm":return"arm";case"arm64":return"arm64";default:return""}})();if(!e)throw new Error(`Unsupported architecture: ${process.arch}`);switch(process.platform){case"win32":return`win-${e}`;case"darwin":return`osx-${e}`;case"linux":{let t="generic";try{const e=$.readFileSync("/etc/os-release","utf-8").split("\n").reduce(((e,t)=>{const[n,...r]=t.split("=");if(n&&r.length>0){let t=r.join("=").trim();t.startsWith('"')&&t.endsWith('"')&&(t=t.substring(1,t.length-1)),e[n.trim()]=t}return e}),{}),n=e.ID,r=e.ID_LIKE?.split(/\s+/)||[];"debian"===n||r.includes("debian")?t="debian":"rhel"===n||"fedora"===n||"centos"===n||r.includes("rhel")||r.includes("fedora")?t="rhel":("arch"===n||r.includes("arch"))&&(t="arch")}catch(e){}return`linux-${t}-${e}`}default:throw new Error(`Unsupported platform: ${process.platform}`)}},Mu=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,Pu=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(Mu);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},Du=e=>"*"===e||"x"===e||"X"===e,ju=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},Ru=(e,t)=>{if(Du(e)||Du(t))return 0;const[n,r]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(ju(e),ju(t));return n>r?1:n<r?-1:0},Lu=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const r=Ru(e[n]||"0",t[n]||"0");if(0!==r)return r}return 0},Fu=(e,t,n)=>{Bu(n);const r=((e,t)=>{const n=Pu(e),r=Pu(t),i=n.pop(),o=r.pop(),s=Lu(n,r);return 0!==s?s:i&&o?Lu(i.split("."),o.split(".")):i||o?i?-1:1:0})(e,t);return Uu[n].includes(r)},Uu={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Wu=Object.keys(Uu),Bu=e=>{if(-1===Wu.indexOf(e))throw new Error(`Invalid operator, expected one of ${Wu.join("|")}`)};var Gu="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Vu(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Yu,Hu,zu,qu,Ku,Ju={exports:{}},Zu={exports:{}};function Xu(){if(Hu)return Yu;Hu=1;var e=1e3,t=60*e,n=60*t,r=24*n,i=7*r;function o(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}return Yu=function(s,a){a=a||{};var c=typeof s;if("string"===c&&s.length>0)return function(o){if(!((o=String(o)).length>100)){var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(o);if(s){var a=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return a*i;case"days":case"day":case"d":return a*r;case"hours":case"hour":case"hrs":case"hr":case"h":return a*n;case"minutes":case"minute":case"mins":case"min":case"m":return a*t;case"seconds":case"second":case"secs":case"sec":case"s":return a*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(s);if("number"===c&&isFinite(s))return a.long?function(i){var s=Math.abs(i);return s>=r?o(i,s,r,"day"):s>=n?o(i,s,n,"hour"):s>=t?o(i,s,t,"minute"):s>=e?o(i,s,e,"second"):i+" ms"}(s):function(i){var o=Math.abs(i);return o>=r?Math.round(i/r)+"d":o>=n?Math.round(i/n)+"h":o>=t?Math.round(i/t)+"m":o>=e?Math.round(i/e)+"s":i+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function Qu(){return qu||(qu=1,zu=function(e){function t(e){let r,i,o,s=null;function a(...e){if(!a.enabled)return;const n=a,i=Number(new Date),o=i-(r||i);n.diff=o,n.prev=r,n.curr=i,r=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,i)=>{if("%%"===r)return"%";s++;const o=t.formatters[i];if("function"==typeof o){const t=e[s];r=o.call(n,t),e.splice(s,1),s--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(i!==t.namespaces&&(i=t.namespaces,o=t.enabled(e)),o),set:e=>{s=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),i=r.length;for(n=0;n<i;n++)r[n]&&("-"===(e=r[n].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let n,r;for(n=0,r=t.skips.length;n<r;n++)if(t.skips[n].test(e))return!1;for(n=0,r=t.names.length;n<r;n++)if(t.names[n].test(e))return!0;return!1},t.humanize=Xu(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((n=>{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t<e.length;t++)n=(n<<5)-n+e.charCodeAt(t),n|=0;return t.colors[Math.abs(n)%t.colors.length]},t.enable(t.load()),t}),zu}var ed,td,nd,rd,id,od={exports:{}};"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Ju.exports=(Ku||(Ku=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(i=r))})),t.splice(i,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Qu()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Zu,Zu.exports)),Zu.exports):Ju.exports=(id||(id=1,function(e,t){const n=N,r=i;t.init=function(e){e.inspectOpts={};const n=Object.keys(t.inspectOpts);for(let r=0;r<n.length;r++)e.inspectOpts[n[r]]=t.inspectOpts[n[r]]},t.log=function(...e){return process.stderr.write(r.formatWithOptions(t.inspectOpts,...e)+"\n")},t.formatArgs=function(n){const{namespace:r,useColors:i}=this;if(i){const t=this.color,i="[3"+(t<8?t:"8;5;"+t),o=` ${i};1m${r} [0m`;n[0]=o+n[0].split("\n").join("\n"+o),n.push(i+"m+"+e.exports.humanize(this.diff)+"[0m")}else n[0]=(t.inspectOpts.hideDate?"":(new Date).toISOString()+" ")+r+" "+n[0]},t.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},t.load=function(){return process.env.DEBUG},t.useColors=function(){return"colors"in t.inspectOpts?Boolean(t.inspectOpts.colors):n.isatty(process.stderr.fd)},t.destroy=r.deprecate((()=>{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if(rd)return nd;rd=1;const e=T,t=N,n=td?ed:(td=1,ed=(e,t=process.argv)=>{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),i=t.indexOf("--");return-1!==r&&(-1===i||r<i)}),{env:r}=process;let i;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function s(t,o){if(0===i)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===i)return 0;const s=i||0;if("dumb"===r.TERM)return s;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:s;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:s}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?i=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(i=1),"FORCE_COLOR"in r&&(i="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),nd={supportsColor:function(e){return o(s(e,e&&e.isTTY))},stdout:o(s(!0,t.isatty(1))),stderr:o(s(!0,t.isatty(2)))},nd}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=Qu()(t);const{formatters:o}=e.exports;o.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},o.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(od,od.exports)),od.exports);var sd=Vu(Ju.exports);const ad=e=>sd(e);var cd={},ld={};class ud extends Error{constructor(e){super(`Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ${e.toString().split("\n")[0]}\n`),Error.captureStackTrace(this,ud)}}var dd,hd,fd,pd,gd,md=e=>{if(e.length>2)throw new ud(e);function t(e={}){this.options=e}function n(e){return new t(e)}return t.prototype.transform=e,n.Format=t,n},yd={exports:{}},vd={exports:{}},bd={exports:{}},wd={exports:{}};function Sd(){if(gd)return pd;gd=1;var e=T,t=fd?hd:(fd=1,hd=function(e,t){var n=(t=t||process.argv||[]).indexOf("--"),r=/^-{1,2}/.test(e)?"":"--",i=t.indexOf(r+e);return-1!==i&&(-1===n||i<n)}),n=process.env,r=void 0;function i(i){var o=function(i){if(!1===r)return 0;if(t("color=16m")||t("color=full")||t("color=truecolor"))return 3;if(t("color=256"))return 2;if(i&&!i.isTTY&&!0!==r)return 0;var o=r?1:0;if("win32"===process.platform){var s=e.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in n)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some((function(e){return e in n}))||"codeship"===n.CI_NAME?1:o;if("TEAMCITY_VERSION"in n)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(n.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in n){var a=parseInt((n.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(n.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(n.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(n.TERM)||"COLORTERM"in n?1:(n.TERM,o)}(i);return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(o)}return t("no-color")||t("no-colors")||t("color=false")?r=!1:(t("color")||t("colors")||t("color=true")||t("color=always"))&&(r=!0),"FORCE_COLOR"in n&&(r=0===n.FORCE_COLOR.length||0!==parseInt(n.FORCE_COLOR,10)),pd={supportsColor:i,stdout:i(process.stdout),stderr:i(process.stderr)}}var _d,Id,xd,kd,Ed,Cd,$d,Od,Nd={exports:{}},Td={exports:{}},Ad={exports:{}},Md={exports:{}},Pd={exports:{}},Dd={exports:{}};function jd(){return $d||($d=1,function(){var e={};bd.exports=e,e.themes={};var t=i,n=e.styles=(dd||(dd=1,function(){var e={};wd.exports=e;var t={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(t).forEach((function(n){var r=t[n],i=e[n]=[];i.open="["+r[0]+"m",i.close="["+r[1]+"m"}))}()),wd.exports),r=Object.defineProperties,o=new RegExp(/[\r\n]+/g);e.supportsColor=Sd().supportsColor,void 0===e.enabled&&(e.enabled=!1!==e.supportsColor()),e.enable=function(){e.enabled=!0},e.disable=function(){e.enabled=!1},e.stripColors=e.strip=function(e){return(""+e).replace(/\x1B\[\d+m/g,"")},e.stylize=function(t,r){if(!e.enabled)return t+"";var i=n[r];return!i&&r in e?e[r](t):i.open+t+i.close};var s=/[|\\{}()[\]^$+*?.]/g;function a(e){var t=function e(){return d.apply(e,arguments)};return t._styles=e,t.__proto__=u,t}var c,l=(c={},n.grey=n.gray,Object.keys(n).forEach((function(e){n[e].closeRe=new RegExp(function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(s,"\\$&")}(n[e].close),"g"),c[e]={get:function(){return a(this._styles.concat(e))}}})),c),u=r((function(){}),l);function d(){var r=Array.prototype.slice.call(arguments).map((function(e){return null!=e&&e.constructor===String?e:t.inspect(e)})).join(" ");if(!e.enabled||!r)return r;for(var i=-1!=r.indexOf("\n"),s=this._styles,a=s.length;a--;){var c=n[s[a]];r=c.open+r.replace(c.closeRe,c.open)+c.close,i&&(r=r.replace(o,(function(e){return c.close+e+c.open})))}return r}e.setTheme=function(t){if("string"!=typeof t)for(var n in t)!function(n){e[n]=function(r){if("object"==typeof t[n]){var i=r;for(var o in t[n])i=e[t[n][o]](i);return i}return e[t[n]](r)}}(n);else console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));")};var h=function(e,t){var n=t.split("");return(n=n.map(e)).join("")};for(var f in e.trap=(_d||(_d=1,Nd.exports=function(e){var t="";e=(e=e||"Run the trap, drop the bass").split("");var n={a:["@","Ą","Ⱥ","Ʌ","Δ","Λ","Д"],b:["ß","Ɓ","Ƀ","ɮ","β","฿"],c:["©","Ȼ","Ͼ"],d:["Ð","Ɗ","Ԁ","ԁ","Ԃ","ԃ"],e:["Ë","ĕ","Ǝ","ɘ","Σ","ξ","Ҽ","੬"],f:["Ӻ"],g:["ɢ"],h:["Ħ","ƕ","Ң","Һ","Ӈ","Ԋ"],i:["༏"],j:["Ĵ"],k:["ĸ","Ҡ","Ӄ","Ԟ"],l:["Ĺ"],m:["ʍ","Ӎ","ӎ","Ԡ","ԡ","൩"],n:["Ñ","ŋ","Ɲ","Ͷ","Π","Ҋ"],o:["Ø","õ","ø","Ǿ","ʘ","Ѻ","ם","","๏"],p:["Ƿ","Ҏ"],q:["্"],r:["®","Ʀ","Ȑ","Ɍ","ʀ","Я"],s:["§","Ϟ","ϟ","Ϩ"],t:["Ł","Ŧ","ͳ"],u:["Ʊ","Ս"],v:["ט"],w:["Ш","Ѡ","Ѽ","൰"],x:["Ҳ","Ӿ","Ӽ","ӽ"],y:["¥","Ұ","Ӌ"],z:["Ƶ","ɀ"]};return e.forEach((function(e){e=e.toLowerCase();var r=n[e]||[" "],i=Math.floor(Math.random()*r.length);t+=void 0!==n[e]?n[e][i]:e})),t}),Nd.exports),e.zalgo=(Id||(Id=1,Td.exports=function(e,t){e=e||" he is here ";var n={up:["̍","̎","̄","̅","̿","̑","̆","̐","͒","͗","͑","̇","̈","̊","͂","̓","̈","͊","͋","͌","̃","̂","̌","͐","̀","́","̋","̏","̒","̓","̔","̽","̉","ͣ","ͤ","ͥ","ͦ","ͧ","ͨ","ͩ","ͪ","ͫ","ͬ","ͭ","ͮ","ͯ","̾","͛","͆","̚"],down:["̖","̗","̘","̙","̜","̝","̞","̟","̠","̤","̥","̦","̩","̪","̫","̬","̭","̮","̯","̰","̱","̲","̳","̹","̺","̻","̼","ͅ","͇","͈","͉","͍","͎","͓","͔","͕","͖","͙","͚","̣"],mid:["̕","̛","̀","́","͘","̡","̢","̧","̨","̴","̵","̶","͜","͝","͞","͟","͠","͢","̸","̷","͡"," ҉"]},r=[].concat(n.up,n.down,n.mid);function i(e){return Math.floor(Math.random()*e)}function o(e){var t=!1;return r.filter((function(n){t=n===e})),t}return function(e,t){var r,s,a="";for(s in(t=t||{}).up=void 0===t.up||t.up,t.mid=void 0===t.mid||t.mid,t.down=void 0===t.down||t.down,t.size=void 0!==t.size?t.size:"maxi",e=e.split(""))if(!o(s)){switch(a+=e[s],r={up:0,down:0,mid:0},t.size){case"mini":r.up=i(8),r.mid=i(2),r.down=i(8);break;case"maxi":r.up=i(16)+3,r.mid=i(4)+1,r.down=i(64)+3;break;default:r.up=i(8)+1,r.mid=i(6)/2,r.down=i(8)+1}var c=["up","mid","down"];for(var l in c)for(var u=c[l],d=0;d<=r[u];d++)t[u]&&(a+=n[u][i(n[u].length)])}return a}(e,t)}),Td.exports),e.maps={},e.maps.america=(xd||(xd=1,Ad.exports=function(e){return function(t,n){if(" "===t)return t;switch(n%3){case 0:return e.red(t);case 1:return e.white(t);case 2:return e.blue(t)}}}),Ad.exports)(e),e.maps.zebra=(kd||(kd=1,Md.exports=function(e){return function(t,n){return n%2==0?t:e.inverse(t)}}),Md.exports)(e),e.maps.rainbow=(Ed||(Ed=1,Pd.exports=function(e){var t=["red","yellow","green","blue","magenta"];return function(n,r){return" "===n?n:e[t[r++%t.length]](n)}}),Pd.exports)(e),e.maps.random=(Cd||(Cd=1,Dd.exports=function(e){var t=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(n){return" "===n?n:e[t[Math.round(Math.random()*(t.length-2))]](n)}}),Dd.exports)(e),e.maps)!function(t){e[t]=function(n){return h(e.maps[t],n)}}(f);r(e,function(){var e={};return Object.keys(l).forEach((function(t){e[t]={get:function(){return a([t])}}})),e}())}()),bd.exports}function Rd(){return Od||(Od=1,function(e){var t=jd();e.exports=t}(vd)),vd.exports}var Ld,Fd,Ud={},Wd={},Bd={};function Gd(){if(Fd)return yd.exports;Fd=1;const e=Rd(),{LEVEL:t,MESSAGE:n}=Ud;e.enabled=!0;const r=/\s+/;class i{constructor(e={}){e.colors&&this.addColors(e.colors),this.options=e}static addColors(e){const t=Object.keys(e).reduce(((t,n)=>(t[n]=r.test(e[n])?e[n].split(r):e[n],t)),{});return i.allColors=Object.assign({},i.allColors||{},t),i.allColors}addColors(e){return i.addColors(e)}colorize(t,n,r){if(void 0===r&&(r=n),!Array.isArray(i.allColors[t]))return e[i.allColors[t]](r);for(let n=0,o=i.allColors[t].length;n<o;n++)r=e[i.allColors[t][n]](r);return r}transform(e,r){return r.all&&"string"==typeof e[n]&&(e[n]=this.colorize(e[t],e.level,e[n])),(r.level||r.all||!r.message)&&(e.level=this.colorize(e[t],e.level)),(r.all||r.message)&&(e.message=this.colorize(e[t],e.level,e.message)),e}}return yd.exports=e=>new i(e),yd.exports.Colorizer=yd.exports.Format=i,yd.exports}Bd.levels={emerg:0,alert:1,crit:2,error:3,warning:4,notice:5,info:6,debug:7},Bd.colors={emerg:"red",alert:"yellow",crit:"red",error:"red",warning:"red",notice:"yellow",info:"green",debug:"blue"},Ld=Wd,Object.defineProperty(Ld,"cli",{value:{levels:{error:0,warn:1,help:2,data:3,info:4,debug:5,prompt:6,verbose:7,input:8,silly:9},colors:{error:"red",warn:"yellow",help:"cyan",data:"grey",info:"green",debug:"blue",prompt:"grey",verbose:"cyan",input:"grey",silly:"magenta"}}}),Object.defineProperty(Ld,"npm",{value:{levels:{error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6},colors:{error:"red",warn:"yellow",info:"green",http:"green",verbose:"cyan",debug:"blue",silly:"magenta"}}}),Object.defineProperty(Ld,"syslog",{value:Bd}),function(e){Object.defineProperty(e,"LEVEL",{value:Symbol.for("level")}),Object.defineProperty(e,"MESSAGE",{value:Symbol.for("message")}),Object.defineProperty(e,"SPLAT",{value:Symbol.for("splat")}),Object.defineProperty(e,"configs",{value:Wd})}(Ud);const{Colorizer:Vd}=Gd();var Yd,Hd,zd,qd,Kd,Jd,Zd={exports:{}},Xd={exports:{}};function Qd(){if(Kd)return Xd.exports;Kd=1;const{configs:e,LEVEL:t,MESSAGE:n}=Ud;class r{constructor(t={levels:e.npm.levels}){this.paddings=r.paddingForLevels(t.levels,t.filler),this.options=t}static getLongestLevel(e){const t=Object.keys(e).map((e=>e.length));return Math.max(...t)}static paddingForLevel(e,t,n){const r=n+1-e.length,i=Math.floor(r/t.length);return`${t}${t.repeat(i)}`.slice(0,r)}static paddingForLevels(e,t=" "){const n=r.getLongestLevel(e);return Object.keys(e).reduce(((e,i)=>(e[i]=r.paddingForLevel(i,t,n),e)),{})}transform(e,r){return e.message=`${this.paddings[e[t]]}${e.message}`,e[n]&&(e[n]=`${this.paddings[e[t]]}${e[n]}`),e}}return Xd.exports=e=>new r(e),Xd.exports.Padder=Xd.exports.Format=r,Xd.exports}var eh,th,nh,rh,ih,oh,sh,ah,ch,lh,uh,dh,hh,fh,ph={exports:{}},gh={exports:{}};function mh(){return th||(th=1,function(e,t){const{hasOwnProperty:n}=Object.prototype,r=h();r.configure=h,r.stringify=r,r.default=r,t.stringify=r,t.configure=h,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]/;function o(e){return e.length<5e3&&!i.test(e)?`"${e}"`:JSON.stringify(e)}function s(e,t){if(e.length>200||t)return e.sort(t);for(let t=1;t<e.length;t++){const n=e[t];let r=t;for(;0!==r&&e[r-1]>n;)e[r]=e[r-1],r--;e[r]=n}return e}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function c(e){return void 0!==a.call(e)&&0!==e.length}function l(e,t,n){e.length<n&&(n=e.length);const r=","===t?"":" ";let i=`"0":${r}${e[0]}`;for(let o=1;o<n;o++)i+=`${t}"${o}":${r}${e[o]}`;return i}function u(e,t){let r;if(n.call(e,t)){if(r=e[t],"number"!=typeof r)throw new TypeError(`The "${t}" argument must be of type number`);if(!Number.isInteger(r))throw new TypeError(`The "${t}" argument must be an integer`);if(r<1)throw new RangeError(`The "${t}" argument must be >= 1`)}return void 0===r?1/0:r}function d(e){return 1===e?"1 item":`${e} items`}function h(e){const t=function(e){if(n.call(e,"strict")){const t=e.strict;if("boolean"!=typeof t)throw new TypeError('The "strict" argument must be of type boolean');if(t)return e=>{let t="Object can not safely be stringified. Received type "+typeof e;throw"function"!=typeof e&&(t+=` (${e.toString()})`),new Error(t)}}}(e={...e});t&&(void 0===e.bigint&&(e.bigint=!1),"circularValue"in e||(e.circularValue=Error));const r=function(e){if(n.call(e,"circularValue")){const t=e.circularValue;if("string"==typeof t)return`"${t}"`;if(null==t)return t;if(t===Error||t===TypeError)return{toString(){throw new TypeError("Converting circular structure to JSON")}};throw new TypeError('The "circularValue" argument must be of type string or the value null or undefined')}return'"[Circular]"'}(e),i=function(e,t){let r;if(n.call(e,t)&&(r=e[t],"boolean"!=typeof r))throw new TypeError(`The "${t}" argument must be of type boolean`);return void 0===r||r}(e,"bigint"),a=function(e){let t;if(n.call(e,"deterministic")&&(t=e.deterministic,"boolean"!=typeof t&&"function"!=typeof t))throw new TypeError('The "deterministic" argument must be of type boolean or comparator function');return void 0===t||t}(e),h="function"==typeof a?a:void 0,f=u(e,"maximumDepth"),p=u(e,"maximumBreadth");function g(e,n,l,u,m,y){let v=n[e];switch("object"==typeof v&&null!==v&&"function"==typeof v.toJSON&&(v=v.toJSON(e)),v=u.call(n,e,v),typeof v){case"string":return o(v);case"object":{if(null===v)return"null";if(-1!==l.indexOf(v))return r;let e="",t=",";const n=y;if(Array.isArray(v)){if(0===v.length)return"[]";if(f<l.length+1)return'"[Array]"';l.push(v),""!==m&&(e+=`\n${y+=m}`,t=`,\n${y}`);const r=Math.min(v.length,p);let i=0;for(;i<r-1;i++){const n=g(String(i),v,l,u,m,y);e+=void 0!==n?n:"null",e+=t}const o=g(String(i),v,l,u,m,y);return e+=void 0!==o?o:"null",v.length-1>p&&(e+=`${t}"... ${d(v.length-p-1)} not stringified"`),""!==m&&(e+=`\n${n}`),l.pop(),`[${e}]`}let i=Object.keys(v);const b=i.length;if(0===b)return"{}";if(f<l.length+1)return'"[Object]"';let w="",S="";""!==m&&(t=`,\n${y+=m}`,w=" ");const _=Math.min(b,p);a&&!c(v)&&(i=s(i,h)),l.push(v);for(let n=0;n<_;n++){const r=i[n],s=g(r,v,l,u,m,y);void 0!==s&&(e+=`${S}${o(r)}:${w}${s}`,S=t)}return b>p&&(e+=`${S}"...":${w}"${d(b-p)} not stringified"`,S=t),""!==m&&S.length>1&&(e=`\n${y}${e}\n${n}`),l.pop(),`{${e}}`}case"number":return isFinite(v)?String(v):t?t(v):"null";case"boolean":return!0===v?"true":"false";case"undefined":return;case"bigint":if(i)return String(v);default:return t?t(v):void 0}}function m(e,n,s,a,c,l){switch("object"==typeof n&&null!==n&&"function"==typeof n.toJSON&&(n=n.toJSON(e)),typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if(-1!==s.indexOf(n))return r;const e=l;let t="",i=",";if(Array.isArray(n)){if(0===n.length)return"[]";if(f<s.length+1)return'"[Array]"';s.push(n),""!==c&&(t+=`\n${l+=c}`,i=`,\n${l}`);const r=Math.min(n.length,p);let o=0;for(;o<r-1;o++){const e=m(String(o),n[o],s,a,c,l);t+=void 0!==e?e:"null",t+=i}const u=m(String(o),n[o],s,a,c,l);return t+=void 0!==u?u:"null",n.length-1>p&&(t+=`${i}"... ${d(n.length-p-1)} not stringified"`),""!==c&&(t+=`\n${e}`),s.pop(),`[${t}]`}s.push(n);let u="";""!==c&&(i=`,\n${l+=c}`,u=" ");let h="";for(const e of a){const r=m(e,n[e],s,a,c,l);void 0!==r&&(t+=`${h}${o(e)}:${u}${r}`,h=i)}return""!==c&&h.length>1&&(t=`\n${l}${t}\n${e}`),s.pop(),`{${t}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}function y(e,n,u,g,m){switch(typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if("function"==typeof n.toJSON){if("object"!=typeof(n=n.toJSON(e)))return y(e,n,u,g,m);if(null===n)return"null"}if(-1!==u.indexOf(n))return r;const t=m;if(Array.isArray(n)){if(0===n.length)return"[]";if(f<u.length+1)return'"[Array]"';u.push(n);let e=`\n${m+=g}`;const r=`,\n${m}`,i=Math.min(n.length,p);let o=0;for(;o<i-1;o++){const t=y(String(o),n[o],u,g,m);e+=void 0!==t?t:"null",e+=r}const s=y(String(o),n[o],u,g,m);return e+=void 0!==s?s:"null",n.length-1>p&&(e+=`${r}"... ${d(n.length-p-1)} not stringified"`),e+=`\n${t}`,u.pop(),`[${e}]`}let i=Object.keys(n);const v=i.length;if(0===v)return"{}";if(f<u.length+1)return'"[Object]"';const b=`,\n${m+=g}`;let w="",S="",_=Math.min(v,p);c(n)&&(w+=l(n,b,p),i=i.slice(n.length),_-=n.length,S=b),a&&(i=s(i,h)),u.push(n);for(let e=0;e<_;e++){const t=i[e],r=y(t,n[t],u,g,m);void 0!==r&&(w+=`${S}${o(t)}: ${r}`,S=b)}return v>p&&(w+=`${S}"...": "${d(v-p)} not stringified"`,S=b),""!==S&&(w=`\n${m}${w}\n${t}`),u.pop(),`{${w}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}function v(e,n,u){switch(typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if("function"==typeof n.toJSON){if("object"!=typeof(n=n.toJSON(e)))return v(e,n,u);if(null===n)return"null"}if(-1!==u.indexOf(n))return r;let t="";const i=void 0!==n.length;if(i&&Array.isArray(n)){if(0===n.length)return"[]";if(f<u.length+1)return'"[Array]"';u.push(n);const e=Math.min(n.length,p);let r=0;for(;r<e-1;r++){const e=v(String(r),n[r],u);t+=void 0!==e?e:"null",t+=","}const i=v(String(r),n[r],u);return t+=void 0!==i?i:"null",n.length-1>p&&(t+=`,"... ${d(n.length-p-1)} not stringified"`),u.pop(),`[${t}]`}let g=Object.keys(n);const m=g.length;if(0===m)return"{}";if(f<u.length+1)return'"[Object]"';let y="",b=Math.min(m,p);i&&c(n)&&(t+=l(n,",",p),g=g.slice(n.length),b-=n.length,y=","),a&&(g=s(g,h)),u.push(n);for(let e=0;e<b;e++){const r=g[e],i=v(r,n[r],u);void 0!==i&&(t+=`${y}${o(r)}:${i}`,y=",")}return m>p&&(t+=`${y}"...":"${d(m-p)} not stringified"`),u.pop(),`{${t}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}return function(e,t,n){if(arguments.length>1){let r="";if("number"==typeof n?r=" ".repeat(Math.min(n,10)):"string"==typeof n&&(r=n.slice(0,10)),null!=t){if("function"==typeof t)return g("",{"":e},[],t,r,"");if(Array.isArray(t))return m("",e,[],function(e){const t=new Set;for(const n of e)"string"!=typeof n&&"number"!=typeof n||t.add(String(n));return t}(t),r,"")}if(0!==r.length)return y("",e,[],r,"")}return v("",e,[])}}}(gh,gh.exports)),gh.exports}function yh(){if(rh)return nh;rh=1;const e=md,{MESSAGE:t}=Ud,n=mh();function r(e,t){return"bigint"==typeof t?t.toString():t}return nh=e(((e,i)=>{const o=n.configure(i);return e[t]=o(e,i.replacer||r,i.space),e}))}var vh,bh,wh,Sh,_h,Ih={exports:{}},xh=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,kh="\\d\\d?",Eh="\\d\\d",Ch="[^\\s]+",$h=/\[([^]*?)\]/gm;function Oh(e,t){for(var n=[],r=0,i=e.length;r<i;r++)n.push(e[r].substr(0,t));return n}var Nh=function(e){return function(t,n){var r=n[e].map((function(e){return e.toLowerCase()})),i=r.indexOf(t.toLowerCase());return i>-1?i:null}};function Th(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=0,i=t;r<i.length;r++){var o=i[r];for(var s in o)e[s]=o[s]}return e}var Ah=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Mh=["January","February","March","April","May","June","July","August","September","October","November","December"],Ph=Oh(Mh,3),Dh={dayNamesShort:Oh(Ah,3),dayNames:Ah,monthNamesShort:Ph,monthNames:Mh,amPm:["am","pm"],DoFn:function(e){return e+["th","st","nd","rd"][e%10>3?0:(e-e%10!=10?1:0)*e%10]}},jh=Th({},Dh),Rh=function(e){return jh=Th(jh,e)},Lh=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},Fh=function(e,t){for(void 0===t&&(t=2),e=String(e);e.length<t;)e="0"+e;return e},Uh={D:function(e){return String(e.getDate())},DD:function(e){return Fh(e.getDate())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return String(e.getDay())},dd:function(e){return Fh(e.getDay())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return String(e.getMonth()+1)},MM:function(e){return Fh(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},YY:function(e){return Fh(String(e.getFullYear()),4).substr(2)},YYYY:function(e){return Fh(e.getFullYear(),4)},h:function(e){return String(e.getHours()%12||12)},hh:function(e){return Fh(e.getHours()%12||12)},H:function(e){return String(e.getHours())},HH:function(e){return Fh(e.getHours())},m:function(e){return String(e.getMinutes())},mm:function(e){return Fh(e.getMinutes())},s:function(e){return String(e.getSeconds())},ss:function(e){return Fh(e.getSeconds())},S:function(e){return String(Math.round(e.getMilliseconds()/100))},SS:function(e){return Fh(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return Fh(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+Fh(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)},Z:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+Fh(Math.floor(Math.abs(t)/60),2)+":"+Fh(Math.abs(t)%60,2)}},Wh=function(e){return+e-1},Bh=[null,kh],Gh=[null,Ch],Vh=["isPm",Ch,function(e,t){var n=e.toLowerCase();return n===t.amPm[0]?0:n===t.amPm[1]?1:null}],Yh=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(e){var t=(e+"").match(/([+-]|\d\d)/gi);if(t){var n=60*+t[1]+parseInt(t[2],10);return"+"===t[0]?n:-n}return 0}],Hh={D:["day",kh],DD:["day",Eh],Do:["day",kh+Ch,function(e){return parseInt(e,10)}],M:["month",kh,Wh],MM:["month",Eh,Wh],YY:["year",Eh,function(e){var t=+(""+(new Date).getFullYear()).substr(0,2);return+(""+(+e>68?t-1:t)+e)}],h:["hour",kh,void 0,"isPm"],hh:["hour",Eh,void 0,"isPm"],H:["hour",kh],HH:["hour",Eh],m:["minute",kh],mm:["minute",Eh],s:["second",kh],ss:["second",Eh],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(e){return 100*+e}],SS:["millisecond",Eh,function(e){return 10*+e}],SSS:["millisecond","\\d{3}"],d:Bh,dd:Bh,ddd:Gh,dddd:Gh,MMM:["month",Ch,Nh("monthNamesShort")],MMMM:["month",Ch,Nh("monthNames")],a:Vh,A:Vh,ZZ:Yh,Z:Yh},zh={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",isoDate:"YYYY-MM-DD",isoDateTime:"YYYY-MM-DDTHH:mm:ssZ",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},qh=function(e){return Th(zh,e)},Kh=function(e,t,n){if(void 0===t&&(t=zh.default),void 0===n&&(n={}),"number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date pass to format");var r=[];t=(t=zh[t]||t).replace($h,(function(e,t){return r.push(t),"@@@"}));var i=Th(Th({},jh),n);return(t=t.replace(xh,(function(t){return Uh[t](e,i)}))).replace(/@@@/g,(function(){return r.shift()}))};function Jh(e,t,n){if(void 0===n&&(n={}),"string"!=typeof t)throw new Error("Invalid format in fecha parse");if(t=zh[t]||t,e.length>1e3)return null;var r={year:(new Date).getFullYear(),month:0,day:1,hour:0,minute:0,second:0,millisecond:0,isPm:null,timezoneOffset:null},i=[],o=[],s=t.replace($h,(function(e,t){return o.push(Lh(t)),"@@@"})),a={},c={};s=Lh(s).replace(xh,(function(e){var t=Hh[e],n=t[0],r=t[1],o=t[3];if(a[n])throw new Error("Invalid format. "+n+" specified twice in format");return a[n]=!0,o&&(c[o]=!0),i.push(t),"("+r+")"})),Object.keys(c).forEach((function(e){if(!a[e])throw new Error("Invalid format. "+e+" is required in specified format")})),s=s.replace(/@@@/g,(function(){return o.shift()}));var l=e.match(new RegExp(s,"i"));if(!l)return null;for(var u,d=Th(Th({},jh),n),h=1;h<l.length;h++){var f=i[h-1],p=f[0],g=f[2],m=g?g(l[h],d):+l[h];if(null==m)return null;r[p]=m}if(1===r.isPm&&null!=r.hour&&12!=+r.hour?r.hour=+r.hour+12:0===r.isPm&&12==+r.hour&&(r.hour=0),null==r.timezoneOffset){u=new Date(r.year,r.month,r.day,r.hour,r.minute,r.second,r.millisecond);for(var y=[["month","getMonth"],["day","getDate"],["hour","getHours"],["minute","getMinutes"],["second","getSeconds"]],v=(h=0,y.length);h<v;h++)if(a[y[h][0]]&&r[y[h][0]]!==u[y[h][1]]())return null}else if(u=new Date(Date.UTC(r.year,r.month,r.day,r.hour,r.minute-r.timezoneOffset,r.second,r.millisecond)),r.month>11||r.month<0||r.day>31||r.day<1||r.hour>23||r.hour<0||r.minute>59||r.minute<0||r.second>59||r.second<0)return null;return u}var Zh,Xh,Qh,ef,tf={format:Kh,parse:Jh,defaultI18n:Dh,setGlobalDateI18n:Rh,setGlobalDateMasks:qh},nf=function(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}(Object.freeze({__proto__:null,assign:Th,default:tf,defaultI18n:Dh,format:Kh,parse:Jh,setGlobalDateI18n:Rh,setGlobalDateMasks:qh}));const rf=ld.format=md;function of(e,t){Object.defineProperty(rf,e,{get:()=>t(),configurable:!0})}ld.levels=e=>(Vd.addColors(e.colors||e),e),of("align",(function(){return Hd?Yd:(Hd=1,Yd=md((e=>(e.message=`\t${e.message}`,e))))})),of("errors",(function(){return function(){if(qd)return zd;qd=1;const e=md,{LEVEL:t,MESSAGE:n}=Ud;return zd=e(((e,{stack:r,cause:i})=>{if(e instanceof Error){const o=Object.assign({},e,{level:e.level,[t]:e[t]||e.level,message:e.message,[n]:e[n]||e.message});return r&&(o.stack=e.stack),i&&(o.cause=e.cause),o}if(!(e.message instanceof Error))return e;const o=e.message;return Object.assign(e,o),e.message=o.message,e[n]=o.message,r&&(e.stack=o.stack),i&&(e.cause=o.cause),e}))}()})),of("cli",(function(){return function(){if(Jd)return Zd.exports;Jd=1;const{Colorizer:e}=Gd(),{Padder:t}=Qd(),{configs:n,MESSAGE:r}=Ud;class i{constructor(r={}){r.levels||(r.levels=n.cli.levels),this.colorizer=new e(r),this.padder=new t(r),this.options=r}transform(e,t){return this.colorizer.transform(this.padder.transform(e,t),t),e[r]=`${e.level}:${e.message}`,e}}return Zd.exports=e=>new i(e),Zd.exports.Format=i,Zd.exports}()})),of("combine",(function(){return function(){if(eh)return ph.exports;eh=1;const e=md;function t(e){if(e.every(n))return t=>{let n=t;for(let t=0;t<e.length;t++)if(n=e[t].transform(n,e[t].options),!n)return!1;return n}}function n(e){if("function"!=typeof e.transform)throw new Error(["No transform function found on format. Did you create a format instance?","const myFormat = format(formatFn);","const instance = myFormat();"].join("\n"));return!0}return ph.exports=(...n)=>{const r=e(t(n)),i=r();return i.Format=r.Format,i},ph.exports.cascade=t,ph.exports}()})),of("colorize",(function(){return Gd()})),of("json",(function(){return yh()})),of("label",(function(){return oh?ih:(oh=1,ih=md(((e,t)=>t.message?(e.message=`[${t.label}] ${e.message}`,e):(e.label=t.label,e))))})),of("logstash",(function(){return function(){if(ah)return sh;ah=1;const e=md,{MESSAGE:t}=Ud,n=mh();return sh=e((e=>{const r={};return e.message&&(r["@message"]=e.message,delete e.message),e.timestamp&&(r["@timestamp"]=e.timestamp,delete e.timestamp),r["@fields"]=e,e[t]=n(r),e}))}()})),of("metadata",(function(){return lh?ch:(lh=1,ch=md(((e,t={})=>{let n="metadata";t.key&&(n=t.key);let r=[];return t.fillExcept||t.fillWith||(r.push("level"),r.push("message")),t.fillExcept&&(r=t.fillExcept),r.length>0?function(e,t,n){const r=t.reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{}),i=Object.keys(e).reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{});return Object.assign(e,r,{[n]:i}),e}(e,r,n):t.fillWith?function(e,t,n){return e[n]=t.reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{}),e}(e,t.fillWith,n):e})))})),of("ms",(function(){return function(){if(dh)return uh;dh=1;const e=md,t=Xu();return uh=e((e=>{const n=+new Date;return this.diff=n-(this.prevTime||n),this.prevTime=n,e.ms=`+${t(this.diff)}`,e}))}()})),of("padLevels",(function(){return Qd()})),of("prettyPrint",(function(){return function(){if(fh)return hh;fh=1;const e=i.inspect,t=md,{LEVEL:n,MESSAGE:r,SPLAT:o}=Ud;return hh=t(((t,i={})=>{const s=Object.assign({},t);return delete s[n],delete s[r],delete s[o],t[r]=e(s,!1,i.depth||null,i.colorize),t}))}()})),of("printf",(function(){return function(){if(vh)return Ih.exports;vh=1;const{MESSAGE:e}=Ud;class t{constructor(e){this.template=e}transform(t){return t[e]=this.template(t),t}}return Ih.exports=e=>new t(e),Ih.exports.Printf=Ih.exports.Format=t,Ih.exports}()})),of("simple",(function(){return function(){if(wh)return bh;wh=1;const e=md,{MESSAGE:t}=Ud,n=mh();return bh=e((e=>{const r=n(Object.assign({},e,{level:void 0,message:void 0,splat:void 0})),i=e.padding&&e.padding[e.level]||"";return e[t]="{}"!==r?`${e.level}:${i} ${e.message} ${r}`:`${e.level}:${i} ${e.message}`,e}))}()})),of("splat",(function(){return function(){if(_h)return Sh;_h=1;const e=i,{SPLAT:t}=Ud,n=/%[scdjifoO%]/g,r=/%%/g;class o{constructor(e){this.options=e}_splat(n,i){const o=n.message,s=n[t]||n.splat||[],a=o.match(r),c=a&&a.length||0,l=i.length-c-s.length,u=l<0?s.splice(l,-1*l):[],d=u.length;if(d)for(let e=0;e<d;e++)Object.assign(n,u[e]);return n.message=e.format(o,...s),n}transform(e){const r=e.message,i=e[t]||e.splat;if(!i||!i.length)return e;const o=r&&r.match&&r.match(n);if(!o&&(i||i.length)){const t=i.length>1?i.splice(0):i,n=t.length;if(n)for(let r=0;r<n;r++)Object.assign(e,t[r]);return e}return o?this._splat(e,o):e}}return Sh=e=>new o(e)}()})),of("timestamp",(function(){return function(){if(Xh)return Zh;Xh=1;const e=nf;return Zh=md(((t,n={})=>(n.format&&(t.timestamp="function"==typeof n.format?n.format():e.format(new Date,n.format)),t.timestamp||(t.timestamp=(new Date).toISOString()),n.alias&&(t[n.alias]=t.timestamp),t)))}()})),of("uncolorize",(function(){return function(){if(ef)return Qh;ef=1;const e=Rd(),t=md,{MESSAGE:n}=Ud;return Qh=t(((t,r)=>(!1!==r.level&&(t.level=e.strip(t.level)),!1!==r.message&&(t.message=e.strip(String(t.message))),!1!==r.raw&&t[n]&&(t[n]=e.strip(String(t[n]))),t)))}()}));var sf={};!function(e){const{format:t}=i;e.warn={deprecated:e=>()=>{throw new Error(t("{ %s } was removed in winston@3.0.0.",e))},useFormat:e=>()=>{throw new Error([t("{ %s } was removed in winston@3.0.0.",e),"Use a custom winston.format = winston.format(function) instead."].join("\n"))},forFunctions(t,n,r){r.forEach((r=>{t[r]=e.warn[n](r)}))},forProperties(t,n,r){r.forEach((r=>{const i=e.warn[n](r);Object.defineProperty(t,r,{get:i,set:i})}))}}}(sf);var af,cf,lf,uf,df,hf,ff={},pf={exports:{}},gf={exports:{}};function mf(){return uf?lf:(uf=1,lf=P)}function yf(){if(hf)return df;function e(e,r){n(e,r),t(e)}function t(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function n(e,t){e.emit("error",t)}return hf=1,df={destroy:function(r,i){var o=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(i?i(r):r&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(n,this,r)):process.nextTick(n,this,r)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(r||null,(function(n){!i&&n?o._writableState?o._writableState.errorEmitted?process.nextTick(t,o):(o._writableState.errorEmitted=!0,process.nextTick(e,o,n)):process.nextTick(e,o,n):i?(process.nextTick(t,o),i(n)):process.nextTick(t,o)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var n=e._readableState,r=e._writableState;n&&n.autoDestroy||r&&r.autoDestroy?e.destroy(t):e.emit("error",t)}},df}var vf,bf,wf,Sf={};function _f(){if(vf)return Sf;vf=1;const e={};function t(t,n,r){r||(r=Error);class i extends r{constructor(e,t,r){super(function(e,t,r){return"string"==typeof n?n:n(e,t,r)}(e,t,r))}}i.prototype.name=r.name,i.prototype.code=t,e[t]=i}function n(e,t){if(Array.isArray(e)){const n=e.length;return e=e.map((e=>String(e))),n>2?`one of ${t} ${e.slice(0,n-1).join(", ")}, or `+e[n-1]:2===n?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}return`of ${t} ${String(e)}`}return t("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),t("ERR_INVALID_ARG_TYPE",(function(e,t,r){let i;var o;let s;if("string"==typeof t&&(o="not ",t.substr(0,4)===o)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,n){return(void 0===n||n>e.length)&&(n=e.length),e.substring(n-9,n)===t}(e," argument"))s=`The ${e} ${i} ${n(t,"type")}`;else{const r=function(e,t,n){return"number"!=typeof n&&(n=0),!(n+1>e.length)&&-1!==e.indexOf(".",n)}(e)?"property":"argument";s=`The "${e}" ${r} ${i} ${n(t,"type")}`}return s+=". Received type "+typeof r,s}),TypeError),t("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),t("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),t("ERR_STREAM_PREMATURE_CLOSE","Premature close"),t("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),t("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),t("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),t("ERR_STREAM_WRITE_AFTER_END","write after end"),t("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),t("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),t("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),Sf.codes=e,Sf}function If(){if(wf)return bf;wf=1;var e=_f().codes.ERR_INVALID_OPT_VALUE;return bf={getHighWaterMark:function(t,n,r,i){var o=function(e,t,n){return null!=e.highWaterMark?e.highWaterMark:t?e[n]:null}(n,i,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new e(i?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}}var xf,kf,Ef,Cf,$f={exports:{}},Of={exports:{}};function Nf(){if(kf)return $f.exports;kf=1;try{var e=require("util");if("function"!=typeof e.inherits)throw"";$f.exports=e.inherits}catch(e){$f.exports=(xf||(xf=1,"function"==typeof Object.create?Of.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Of.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),Of.exports)}return $f.exports}function Tf(){if(Cf)return Ef;function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?e(Object(i),!0).forEach((function(e){n(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function n(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}Cf=1;var o=D.Buffer,s=i.inspect,a=s&&s.custom||"inspect";function c(e,t,n){o.prototype.copy.call(e,t,n)}return Ef=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return function(e,t){t&&function(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1})}(e,[{key:"push",value:function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n}},{key:"concat",value:function(e){if(0===this.length)return o.alloc(0);for(var t=o.allocUnsafe(e>>>0),n=this.head,r=0;n;)c(n.data,t,r),r+=n.data.length,n=n.next;return t}},{key:"consume",value:function(e,t){var n;return e<this.head.data.length?(n=this.head.data.slice(0,e),this.head.data=this.head.data.slice(e)):n=e===this.head.data.length?this.shift():t?this._getString(e):this._getBuffer(e),n}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(e){var t=this.head,n=1,r=t.data;for(e-=r.length;t=t.next;){var i=t.data,o=e>i.length?i.length:e;if(o===i.length?r+=i:r+=i.slice(0,e),0==(e-=o)){o===i.length?(++n,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++n}return this.length-=n,r}},{key:"_getBuffer",value:function(e){var t=o.allocUnsafe(e),n=this.head,r=1;for(n.data.copy(t),e-=n.data.length;n=n.next;){var i=n.data,s=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,s),0==(e-=s)){s===i.length?(++r,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=i.slice(s));break}++r}return this.length-=r,t}},{key:a,value:function(e,n){return s(this,t(t({},n),{},{depth:0,customInspect:!1}))}}]),e}()}var Af,Mf,Pf,Df,jf,Rf,Lf,Ff,Uf,Wf,Bf,Gf,Vf,Yf,Hf={},zf={exports:{}};function qf(){if(Mf)return Hf;Mf=1;var e=(Af||(Af=1,function(e,t){var n=D,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function o(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=o),o.prototype=Object.create(r.prototype),i(r,o),o.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},o.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(zf,zf.exports)),zf.exports).Buffer,t=e.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function n(n){var r;switch(this.encoding=function(n){var r=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(n);if("string"!=typeof r&&(e.isEncoding===t||!t(n)))throw new Error("Unknown encoding: "+n);return r||n}(n),this.encoding){case"utf16le":this.text=o,this.end=s,r=4;break;case"utf8":this.fillLast=i,r=4;break;case"base64":this.text=a,this.end=c,r=3;break;default:return this.write=l,void(this.end=u)}this.lastNeed=0,this.lastTotal=0,this.lastChar=e.allocUnsafe(r)}function r(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function i(e){var t=this.lastTotal-this.lastNeed,n=function(e,t){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function o(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function s(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function a(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function c(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function l(e){return e.toString(this.encoding)}function u(e){return e&&e.length?this.write(e):""}return Hf.StringDecoder=n,n.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},n.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},n.prototype.text=function(e,t){var n=function(e,t,n){var i=t.length-1;if(i<n)return 0;var o=r(t[i]);return o>=0?(o>0&&(e.lastNeed=o-1),o):--i<n||-2===o?0:(o=r(t[i]))>=0?(o>0&&(e.lastNeed=o-2),o):--i<n||-2===o?0:(o=r(t[i]))>=0?(o>0&&(2===o?o=0:e.lastNeed=o-3),o):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var i=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString("utf8",t,i)},n.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},Hf}function Kf(){if(Df)return Pf;Df=1;var e=_f().codes.ERR_STREAM_PREMATURE_CLOSE;function t(){}return Pf=function n(r,i,o){if("function"==typeof i)return n(r,null,i);i||(i={}),o=function(e){var t=!1;return function(){if(!t){t=!0;for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];e.apply(this,r)}}}(o||t);var s=i.readable||!1!==i.readable&&r.readable,a=i.writable||!1!==i.writable&&r.writable,c=function(){r.writable||u()},l=r._writableState&&r._writableState.finished,u=function(){a=!1,l=!0,s||o.call(r)},d=r._readableState&&r._readableState.endEmitted,h=function(){s=!1,d=!0,a||o.call(r)},f=function(e){o.call(r,e)},p=function(){var t;return s&&!d?(r._readableState&&r._readableState.ended||(t=new e),o.call(r,t)):a&&!l?(r._writableState&&r._writableState.ended||(t=new e),o.call(r,t)):void 0},g=function(){r.req.on("finish",u)};return function(e){return e.setHeader&&"function"==typeof e.abort}(r)?(r.on("complete",u),r.on("abort",p),r.req?g():r.on("request",g)):a&&!r._writableState&&(r.on("end",c),r.on("close",c)),r.on("end",h),r.on("finish",u),!1!==i.error&&r.on("error",f),r.on("close",p),function(){r.removeListener("complete",u),r.removeListener("abort",p),r.removeListener("request",g),r.req&&r.req.removeListener("finish",u),r.removeListener("end",c),r.removeListener("close",c),r.removeListener("finish",u),r.removeListener("end",h),r.removeListener("error",f),r.removeListener("close",p)}},Pf}function Jf(){if(Wf)return Uf;var e;Wf=1,Uf=_,_.ReadableState=S,j.EventEmitter;var t,n=function(e,t){return e.listeners(t).length},r=mf(),o=D.Buffer,s=(void 0!==Gu?Gu:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},a=i;t=a&&a.debuglog?a.debuglog("stream"):function(){};var c,l,u,d=Tf(),h=yf(),f=If().getHighWaterMark,p=_f().codes,g=p.ERR_INVALID_ARG_TYPE,m=p.ERR_STREAM_PUSH_AFTER_EOF,y=p.ERR_METHOD_NOT_IMPLEMENTED,v=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;Nf()(_,r);var b=h.errorOrDestroy,w=["error","close","destroy","pause","resume"];function S(t,n,r){e=e||Zf(),t=t||{},"boolean"!=typeof r&&(r=n instanceof e),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=f(this,t,"readableHighWaterMark",r),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(c||(c=qf().StringDecoder),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function _(t){if(e=e||Zf(),!(this instanceof _))return new _(t);var n=this instanceof e;this._readableState=new S(t,this,n),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),r.call(this)}function I(e,n,r,i,a){t("readableAddChunk",n);var c,l=e._readableState;if(null===n)l.reading=!1,function(e,n){if(t("onEofChunk"),!n.ended){if(n.decoder){var r=n.decoder.end();r&&r.length&&(n.buffer.push(r),n.length+=n.objectMode?1:r.length)}n.ended=!0,n.sync?C(e):(n.needReadable=!1,n.emittedReadable||(n.emittedReadable=!0,$(e)))}}(e,l);else if(a||(c=function(e,t){var n,r;return r=t,o.isBuffer(r)||r instanceof s||"string"==typeof t||void 0===t||e.objectMode||(n=new g("chunk",["string","Buffer","Uint8Array"],t)),n}(l,n)),c)b(e,c);else if(l.objectMode||n&&n.length>0)if("string"==typeof n||l.objectMode||Object.getPrototypeOf(n)===o.prototype||(n=function(e){return o.from(e)}(n)),i)l.endEmitted?b(e,new v):x(e,l,n,!0);else if(l.ended)b(e,new m);else{if(l.destroyed)return!1;l.reading=!1,l.decoder&&!r?(n=l.decoder.write(n),l.objectMode||0!==n.length?x(e,l,n,!1):O(e,l)):x(e,l,n,!1)}else i||(l.reading=!1,O(e,l));return!l.ended&&(l.length<l.highWaterMark||0===l.length)}function x(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(t.awaitDrain=0,e.emit("data",n)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&C(e)),O(e,t)}Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),_.prototype.destroy=h.destroy,_.prototype._undestroy=h.undestroy,_.prototype._destroy=function(e,t){t(e)},_.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&((t=t||r.defaultEncoding)!==r.encoding&&(e=o.from(e,t),t=""),n=!0),I(this,e,t,!1,n)},_.prototype.unshift=function(e){return I(this,e,null,!0,!1)},_.prototype.isPaused=function(){return!1===this._readableState.flowing},_.prototype.setEncoding=function(e){c||(c=qf().StringDecoder);var t=new c(e);this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding;for(var n=this._readableState.buffer.head,r="";null!==n;)r+=t.write(n.data),n=n.next;return this._readableState.buffer.clear(),""!==r&&this._readableState.buffer.push(r),this._readableState.length=r.length,this};var k=1073741824;function E(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=k?e=k:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function C(e){var n=e._readableState;t("emitReadable",n.needReadable,n.emittedReadable),n.needReadable=!1,n.emittedReadable||(t("emitReadable",n.flowing),n.emittedReadable=!0,process.nextTick($,e))}function $(e){var n=e._readableState;t("emitReadable_",n.destroyed,n.length,n.ended),n.destroyed||!n.length&&!n.ended||(e.emit("readable"),n.emittedReadable=!1),n.needReadable=!n.flowing&&!n.ended&&n.length<=n.highWaterMark,P(e)}function O(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(N,e,t))}function N(e,n){for(;!n.reading&&!n.ended&&(n.length<n.highWaterMark||n.flowing&&0===n.length);){var r=n.length;if(t("maybeReadMore read 0"),e.read(0),r===n.length)break}n.readingMore=!1}function T(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function A(e){t("readable nexttick read 0"),e.read(0)}function M(e,n){t("resume",n.reading),n.reading||e.read(0),n.resumeScheduled=!1,e.emit("resume"),P(e),n.flowing&&!n.reading&&e.read(0)}function P(e){var n=e._readableState;for(t("flow",n.flowing);n.flowing&&null!==e.read(););}function R(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):n=t.buffer.consume(e,t.decoder),n);var n}function L(e){var n=e._readableState;t("endReadable",n.endEmitted),n.endEmitted||(n.ended=!0,process.nextTick(F,n,e))}function F(e,n){if(t("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,n.readable=!1,n.emit("end"),e.autoDestroy)){var r=n._writableState;(!r||r.autoDestroy&&r.finished)&&n.destroy()}}function U(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}return _.prototype.read=function(e){t("read",e),e=parseInt(e,10);var n=this._readableState,r=e;if(0!==e&&(n.emittedReadable=!1),0===e&&n.needReadable&&((0!==n.highWaterMark?n.length>=n.highWaterMark:n.length>0)||n.ended))return t("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?L(this):C(this),null;if(0===(e=E(e,n))&&n.ended)return 0===n.length&&L(this),null;var i,o=n.needReadable;return t("need readable",o),(0===n.length||n.length-e<n.highWaterMark)&&t("length less than watermark",o=!0),n.ended||n.reading?t("reading or ended",o=!1):o&&(t("do read"),n.reading=!0,n.sync=!0,0===n.length&&(n.needReadable=!0),this._read(n.highWaterMark),n.sync=!1,n.reading||(e=E(r,n))),null===(i=e>0?R(e,n):null)?(n.needReadable=n.length<=n.highWaterMark,e=0):(n.length-=e,n.awaitDrain=0),0===n.length&&(n.ended||(n.needReadable=!0),r!==e&&n.ended&&L(this)),null!==i&&this.emit("data",i),i},_.prototype._read=function(){b(this,new y("_read()"))},_.prototype.pipe=function(e,r){var i=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,t("pipe count=%d opts=%j",o.pipesCount,r);var s=r&&!1===r.end||e===process.stdout||e===process.stderr?p:a;function a(){t("onend"),e.end()}o.endEmitted?process.nextTick(s):i.once("end",s),e.on("unpipe",(function n(r,s){t("onunpipe"),r===i&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,t("cleanup"),e.removeListener("close",h),e.removeListener("finish",f),e.removeListener("drain",c),e.removeListener("error",d),e.removeListener("unpipe",n),i.removeListener("end",a),i.removeListener("end",p),i.removeListener("data",u),l=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}));var c=function(e){return function(){var r=e._readableState;t("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,0===r.awaitDrain&&n(e,"data")&&(r.flowing=!0,P(e))}}(i);e.on("drain",c);var l=!1;function u(n){t("ondata");var r=e.write(n);t("dest.write",r),!1===r&&((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==U(o.pipes,e))&&!l&&(t("false write response, pause",o.awaitDrain),o.awaitDrain++),i.pause())}function d(r){t("onerror",r),p(),e.removeListener("error",d),0===n(e,"error")&&b(e,r)}function h(){e.removeListener("finish",f),p()}function f(){t("onfinish"),e.removeListener("close",h),p()}function p(){t("unpipe"),i.unpipe(e)}return i.on("data",u),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",d),e.once("close",h),e.once("finish",f),e.emit("pipe",i),o.flowing||(t("pipe resume"),i.resume()),e},_.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<i;o++)r[o].emit("unpipe",this,{hasUnpiped:!1});return this}var s=U(t.pipes,e);return-1===s||(t.pipes.splice(s,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,n)),this},_.prototype.on=function(e,n){var i=r.prototype.on.call(this,e,n),o=this._readableState;return"data"===e?(o.readableListening=this.listenerCount("readable")>0,!1!==o.flowing&&this.resume()):"readable"===e&&(o.endEmitted||o.readableListening||(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,t("on readable",o.length,o.reading),o.length?C(this):o.reading||process.nextTick(A,this))),i},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(e,t){var n=r.prototype.removeListener.call(this,e,t);return"readable"===e&&process.nextTick(T,this),n},_.prototype.removeAllListeners=function(e){var t=r.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||process.nextTick(T,this),t},_.prototype.resume=function(){var e=this._readableState;return e.flowing||(t("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(M,e,t))}(this,e)),e.paused=!1,this},_.prototype.pause=function(){return t("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(t("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(e){var n=this,r=this._readableState,i=!1;for(var o in e.on("end",(function(){if(t("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&n.push(e)}n.push(null)})),e.on("data",(function(o){t("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(n.push(o)||(i=!0,e.pause()))})),e)void 0===this[o]&&"function"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var s=0;s<w.length;s++)e.on(w[s],this.emit.bind(this,w[s]));return this._read=function(n){t("wrapped _read",n),i&&(i=!1,e.resume())},this},"function"==typeof Symbol&&(_.prototype[Symbol.asyncIterator]=function(){return void 0===l&&(l=function(){if(Rf)return jf;var e;function t(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Rf=1;var n=Kf(),r=Symbol("lastResolve"),i=Symbol("lastReject"),o=Symbol("error"),s=Symbol("ended"),a=Symbol("lastPromise"),c=Symbol("handlePromise"),l=Symbol("stream");function u(e,t){return{value:e,done:t}}function d(e){var t=e[r];if(null!==t){var n=e[l].read();null!==n&&(e[a]=null,e[r]=null,e[i]=null,t(u(n,!1)))}}function h(e){process.nextTick(d,e)}var f=Object.getPrototypeOf((function(){})),p=Object.setPrototypeOf((e={get stream(){return this[l]},next:function(){var e=this,t=this[o];if(null!==t)return Promise.reject(t);if(this[s])return Promise.resolve(u(void 0,!0));if(this[l].destroyed)return new Promise((function(t,n){process.nextTick((function(){e[o]?n(e[o]):t(u(void 0,!0))}))}));var n,r=this[a];if(r)n=new Promise(function(e,t){return function(n,r){e.then((function(){t[s]?n(u(void 0,!0)):t[c](n,r)}),r)}}(r,this));else{var i=this[l].read();if(null!==i)return Promise.resolve(u(i,!1));n=new Promise(this[c])}return this[a]=n,n}},t(e,Symbol.asyncIterator,(function(){return this})),t(e,"return",(function(){var e=this;return new Promise((function(t,n){e[l].destroy(null,(function(e){e?n(e):t(u(void 0,!0))}))}))})),e),f);return jf=function(e){var d,f=Object.create(p,(t(d={},l,{value:e,writable:!0}),t(d,r,{value:null,writable:!0}),t(d,i,{value:null,writable:!0}),t(d,o,{value:null,writable:!0}),t(d,s,{value:e._readableState.endEmitted,writable:!0}),t(d,c,{value:function(e,t){var n=f[l].read();n?(f[a]=null,f[r]=null,f[i]=null,e(u(n,!1))):(f[r]=e,f[i]=t)},writable:!0}),d));return f[a]=null,n(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=f[i];return null!==t&&(f[a]=null,f[r]=null,f[i]=null,t(e)),void(f[o]=e)}var n=f[r];null!==n&&(f[a]=null,f[r]=null,f[i]=null,n(u(void 0,!0))),f[s]=!0})),e.on("readable",h.bind(null,f)),f},jf}()),l(this)}),Object.defineProperty(_.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(_.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(_.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}}),_._fromList=R,Object.defineProperty(_.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(_.from=function(e,t){return void 0===u&&(u=function(){if(Ff)return Lf;function e(e,t,n,r,i,o,s){try{var a=e[o](s),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(r,i)}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Ff=1;var r=_f().codes.ERR_INVALID_ARG_TYPE;return Lf=function(i,o,s){var a;if(o&&"function"==typeof o.next)a=o;else if(o&&o[Symbol.asyncIterator])a=o[Symbol.asyncIterator]();else{if(!o||!o[Symbol.iterator])throw new r("iterable",["Iterable"],o);a=o[Symbol.iterator]()}var c=new i(function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}({objectMode:!0},s)),l=!1;function u(){return d.apply(this,arguments)}function d(){var t;return t=function*(){try{var e=yield a.next(),t=e.value;e.done?c.push(null):c.push(yield t)?u():l=!1}catch(e){c.destroy(e)}},d=function(){var n=this,r=arguments;return new Promise((function(i,o){var s=t.apply(n,r);function a(t){e(s,i,o,a,c,"next",t)}function c(t){e(s,i,o,a,c,"throw",t)}a(void 0)}))},d.apply(this,arguments)}return c._read=function(){l||(l=!0,u())},c},Lf}()),u(_,e,t)}),Uf}function Zf(){if(Gf)return Bf;Gf=1;var e=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};Bf=s;var t=Jf(),n=Xf();Nf()(s,t);for(var r=e(n.prototype),i=0;i<r.length;i++){var o=r[i];s.prototype[o]||(s.prototype[o]=n.prototype[o])}function s(e){if(!(this instanceof s))return new s(e);t.call(this,e),n.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",a)))}function a(){this._writableState.ended||process.nextTick(c,this)}function c(e){e.end()}return Object.defineProperty(s.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(s.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(s.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(s.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),Bf}function Xf(){if(Yf)return Vf;function e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t){var n=e.entry;for(e.entry=null;n;){var r=n.callback;t.pendingcb--,r(undefined),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}var t;Yf=1,Vf=_,_.WritableState=S;var n,r={deprecate:cf?af:(cf=1,af=i.deprecate)},o=mf(),s=D.Buffer,a=(void 0!==Gu?Gu:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},c=yf(),l=If().getHighWaterMark,u=_f().codes,d=u.ERR_INVALID_ARG_TYPE,h=u.ERR_METHOD_NOT_IMPLEMENTED,f=u.ERR_MULTIPLE_CALLBACK,p=u.ERR_STREAM_CANNOT_PIPE,g=u.ERR_STREAM_DESTROYED,m=u.ERR_STREAM_NULL_VALUES,y=u.ERR_STREAM_WRITE_AFTER_END,v=u.ERR_UNKNOWN_ENCODING,b=c.errorOrDestroy;function w(){}function S(n,r,i){t=t||Zf(),n=n||{},"boolean"!=typeof i&&(i=r instanceof t),this.objectMode=!!n.objectMode,i&&(this.objectMode=this.objectMode||!!n.writableObjectMode),this.highWaterMark=l(this,n,"writableHighWaterMark",i),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=!1===n.decodeStrings;this.decodeStrings=!o,this.defaultEncoding=n.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if("function"!=typeof i)throw new f;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(process.nextTick(i,r),process.nextTick($,e,t),e._writableState.errorEmitted=!0,b(e,r)):(i(r),e._writableState.errorEmitted=!0,b(e,r),$(e,t))}(e,n,r,t,i);else{var o=E(n)||e.destroyed;o||n.corked||n.bufferProcessing||!n.bufferedRequest||k(e,n),r?process.nextTick(x,e,n,o,i):x(e,n,o,i)}}(r,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==n.emitClose,this.autoDestroy=!!n.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}function _(e){var r=this instanceof(t=t||Zf());if(!r&&!n.call(_,this))return new _(e);this._writableState=new S(e,this,r),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),o.call(this)}function I(e,t,n,r,i,o,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new g("write")):n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function x(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),$(e,t)}function k(t,n){n.bufferProcessing=!0;var r=n.bufferedRequest;if(t._writev&&r&&r.next){var i=n.bufferedRequestCount,o=new Array(i),s=n.corkedRequestsFree;s.entry=r;for(var a=0,c=!0;r;)o[a]=r,r.isBuf||(c=!1),r=r.next,a+=1;o.allBuffers=c,I(t,n,!0,n.length,o,"",s.finish),n.pendingcb++,n.lastBufferedRequest=null,s.next?(n.corkedRequestsFree=s.next,s.next=null):n.corkedRequestsFree=new e(n),n.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,u=r.encoding,d=r.callback;if(I(t,n,!1,n.objectMode?1:l.length,l,u,d),r=r.next,n.bufferedRequestCount--,n.writing)break}null===r&&(n.lastBufferedRequest=null)}n.bufferedRequest=r,n.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function C(e,t){e._final((function(n){t.pendingcb--,n&&b(e,n),t.prefinished=!0,e.emit("prefinish"),$(e,t)}))}function $(e,t){var n=E(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,process.nextTick(C,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var r=e._readableState;(!r||r.autoDestroy&&r.endEmitted)&&e.destroy()}return n}return Nf()(_,o),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:r.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(n=Function.prototype[Symbol.hasInstance],Object.defineProperty(_,Symbol.hasInstance,{value:function(e){return!!n.call(this,e)||this===_&&e&&e._writableState instanceof S}})):n=function(e){return e instanceof this},_.prototype.pipe=function(){b(this,new p)},_.prototype.write=function(e,t,n){var r,i=this._writableState,o=!1,c=!i.objectMode&&(r=e,s.isBuffer(r)||r instanceof a);return c&&!s.isBuffer(e)&&(e=function(e){return s.from(e)}(e)),"function"==typeof t&&(n=t,t=null),c?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=w),i.ending?function(e,t){var n=new y;b(e,n),process.nextTick(t,n)}(this,n):(c||function(e,t,n,r){var i;return null===n?i=new m:"string"==typeof n||t.objectMode||(i=new d("chunk",["string","Buffer"],n)),!i||(b(e,i),process.nextTick(r,i),!1)}(this,i,e,n))&&(i.pendingcb++,o=function(e,t,n,r,i,o){if(!n){var a=function(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=s.from(t,n)),t}(t,r,i);r!==a&&(n=!0,i="buffer",r=a)}var c=t.objectMode?1:r.length;t.length+=c;var l=t.length<t.highWaterMark;if(l||(t.needDrain=!0),t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:o,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else I(e,t,!1,c,r,i,o);return l}(this,i,c,e,t,n)),o},_.prototype.cork=function(){this._writableState.corked++},_.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||k(this,e))},_.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new v(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(e,t,n){n(new h("_write()"))},_.prototype._writev=null,_.prototype.end=function(e,t,n){var r=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,$(e,t),n&&(t.finished?process.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}(this,r,n),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),_.prototype.destroy=c.destroy,_.prototype._undestroy=c.undestroy,_.prototype._destroy=function(e,t){t(e)},Vf}const Qf=i,ep=Xf(),{LEVEL:tp}=Ud,np=gf.exports=function(e={}){ep.call(this,{objectMode:!0,highWaterMark:e.highWaterMark}),this.format=e.format,this.level=e.level,this.handleExceptions=e.handleExceptions,this.handleRejections=e.handleRejections,this.silent=e.silent,e.log&&(this.log=e.log),e.logv&&(this.logv=e.logv),e.close&&(this.close=e.close),this.once("pipe",(e=>{this.levels=e.levels,this.parent=e})),this.once("unpipe",(e=>{e===this.parent&&(this.parent=null,this.close&&this.close())}))};Qf.inherits(np,ep),np.prototype._write=function(e,t,n){if(this.silent||!0===e.exception&&!this.handleExceptions)return n(null);const r=this.level||this.parent&&this.parent.level;if(!r||this.levels[r]>=this.levels[e[tp]]){if(e&&!this.format)return this.log(e,n);let t,r;try{r=this.format.transform(Object.assign({},e),this.format.options)}catch(e){t=e}if(t||!r){if(n(),t)throw t;return}return this.log(r,n)}return this._writableState.sync=!1,n(null)},np.prototype._writev=function(e,t){if(this.logv){const n=e.filter(this._accept,this);return n.length?this.logv(n,t):t(null)}for(let n=0;n<e.length;n++){if(!this._accept(e[n]))continue;if(e[n].chunk&&!this.format){this.log(e[n].chunk,e[n].callback);continue}let r,i;try{i=this.format.transform(Object.assign({},e[n].chunk),this.format.options)}catch(e){r=e}if(r||!i){if(e[n].callback(),r)throw t(null),r}else this.log(i,e[n].callback)}return t(null)},np.prototype._accept=function(e){const t=e.chunk;if(this.silent)return!1;const n=this.level||this.parent&&this.parent.level;return!(!0!==t.exception&&n&&!(this.levels[n]>=this.levels[t[tp]])||!this.handleExceptions&&!0===t.exception)},np.prototype._nop=function(){};var rp=gf.exports,ip={exports:{}};const op=i,{LEVEL:sp}=Ud,ap=rp,cp=ip.exports=function(e={}){if(ap.call(this,e),!e.transport||"function"!=typeof e.transport.log)throw new Error("Invalid transport, must be an object with a log method.");this.transport=e.transport,this.level=this.level||e.transport.level,this.handleExceptions=this.handleExceptions||e.transport.handleExceptions,this._deprecated(),this.transport.__winstonError||(this.transport.__winstonError=function(e){this.emit("error",e,this.transport)}.bind(this),this.transport.on("error",this.transport.__winstonError))};op.inherits(cp,ap),cp.prototype._write=function(e,t,n){if(this.silent||!0===e.exception&&!this.handleExceptions)return n(null);(!this.level||this.levels[this.level]>=this.levels[e[sp]])&&this.transport.log(e[sp],e.message,e,this._nop),n(null)},cp.prototype._writev=function(e,t){for(let t=0;t<e.length;t++)this._accept(e[t])&&(this.transport.log(e[t].chunk[sp],e[t].chunk.message,e[t].chunk,this._nop),e[t].callback());return t(null)},cp.prototype._deprecated=function(){console.error([`${this.transport.name} is a legacy winston transport. Consider upgrading: `,"- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md"].join("\n"))},cp.prototype.close=function(){this.transport.close&&this.transport.close(),this.transport.__winstonError&&(this.transport.removeListener("error",this.transport.__winstonError),this.transport.__winstonError=null)};var lp=ip.exports;pf.exports=rp,pf.exports.LegacyTransportStream=lp;var up,dp,hp=pf.exports,fp={exports:{}},pp={exports:{}},gp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e&&"number"==typeof e.length&&e.length>=0&&e.length%1==0},e.exports=t.default}(gp,gp.exports);var mp=gp.exports,yp={},vp={exports:{}},bp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return function(...t){var n=t.pop();return e.call(this,t,n)}},e.exports=t.default}(bp,bp.exports);var wp=bp.exports,Sp={};Object.defineProperty(Sp,"__esModule",{value:!0}),Sp.fallback=$p,Sp.wrap=Op;var _p,Ip,xp,kp=Sp.hasQueueMicrotask="function"==typeof queueMicrotask&&queueMicrotask,Ep=Sp.hasSetImmediate="function"==typeof setImmediate&&setImmediate,Cp=Sp.hasNextTick="object"==typeof process&&"function"==typeof process.nextTick;function $p(e){setTimeout(e,0)}function Op(e){return(t,...n)=>e((()=>t(...n)))}function Np(){if(xp)return yp;xp=1,Object.defineProperty(yp,"__esModule",{value:!0}),yp.isAsyncIterable=yp.isAsyncGenerator=yp.isAsync=void 0;var e,t=(Ip||(Ip=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,i.isAsync)(e)?function(...t){const n=t.pop();return s(e.apply(this,t),n)}:(0,n.default)((function(t,n){var r;try{r=e.apply(this,t)}catch(e){return n(e)}if(r&&"function"==typeof r.then)return s(r,n);n(null,r)}))};var n=o(wp),r=o(Sp),i=Np();function o(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return e.then((e=>{a(t,null,e)}),(e=>{a(t,e&&(e instanceof Error||e.message)?e:new Error(e))}))}function a(e,t,n){try{e(t,n)}catch(e){(0,r.default)((e=>{throw e}),e)}}e.exports=t.default}(vp,vp.exports)),vp.exports),n=(e=t)&&e.__esModule?e:{default:e};function r(e){return"AsyncFunction"===e[Symbol.toStringTag]}return yp.default=function(e){if("function"!=typeof e)throw new Error("expected a function");return r(e)?(0,n.default)(e):e},yp.isAsync=r,yp.isAsyncGenerator=function(e){return"AsyncGenerator"===e[Symbol.toStringTag]},yp.isAsyncIterable=function(e){return"function"==typeof e[Symbol.asyncIterator]},yp}_p=kp?queueMicrotask:Ep?setImmediate:Cp?process.nextTick:$p,Sp.default=Op(_p);var Tp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(t||(t=e.length),!t)throw new Error("arity is undefined");return function(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise(((r,i)=>{n[t-1]=(e,...t)=>{if(e)return i(e);r(t.length>1?t:t[0])},e.apply(this,n)}))}},e.exports=t.default}(Tp,Tp.exports);var Ap,Mp=Tp.exports,Pp={exports:{}},Dp={exports:{}},jp={exports:{}},Rp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t},e.exports=t.default}(Rp,Rp.exports);var Lp=Rp.exports,Fp={exports:{}},Up={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e[Symbol.iterator]&&e[Symbol.iterator]()},e.exports=t.default}(Up,Up.exports);var Wp=Up.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if((0,n.default)(e))return function(e){var t=-1,n=e.length;return function(){return++t<n?{value:e[t],key:t}:null}}(e);var t,i,o,s,a=(0,r.default)(e);return a?function(e){var t=-1;return function(){var n=e.next();return n.done?null:(t++,{value:n.value,key:t})}}(a):(i=(t=e)?Object.keys(t):[],o=-1,s=i.length,function e(){var n=i[++o];return"__proto__"===n?e():o<s?{value:t[n],key:n}:null})};var n=i(mp),r=i(Wp);function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(Fp,Fp.exports);var Bp=Fp.exports,Gp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var n=e;e=null,n.apply(this,t)}},e.exports=t.default}(Gp,Gp.exports);var Vp=Gp.exports,Yp={exports:{}},Hp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default={},e.exports=t.default}(Hp,Hp.exports);var zp=Hp.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,i){let o=!1,s=!1,a=!1,c=0,l=0;function u(){c>=t||a||o||(a=!0,e.next().then((({value:e,done:t})=>{if(!s&&!o){if(a=!1,t)return o=!0,void(c<=0&&i(null));c++,n(e,l,d),l++,u()}})).catch(h))}function d(e,t){if(c-=1,!s)return e?h(e):!1===e?(o=!0,void(s=!0)):t===r.default||o&&c<=0?(o=!0,i(null)):void u()}function h(e){s||(a=!1,o=!0,i(e))}u()};var n,r=(n=zp)&&n.__esModule?n:{default:n};e.exports=t.default}(Yp,Yp.exports);var qp=Yp.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=c(Lp),r=c(Bp),i=c(Vp),o=Np(),s=c(qp),a=c(zp);function c(e){return e&&e.__esModule?e:{default:e}}t.default=e=>(t,c,l)=>{if(l=(0,n.default)(l),e<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return l(null);if((0,o.isAsyncGenerator)(t))return(0,s.default)(t,e,c,l);if((0,o.isAsyncIterable)(t))return(0,s.default)(t[Symbol.asyncIterator](),e,c,l);var u=(0,r.default)(t),d=!1,h=!1,f=0,p=!1;function g(e,t){if(!h)if(f-=1,e)d=!0,l(e);else if(!1===e)d=!0,h=!0;else{if(t===a.default||d&&f<=0)return d=!0,l(null);p||m()}}function m(){for(p=!0;f<e&&!d;){var t=u();if(null===t)return d=!0,void(f<=0&&l(null));f+=1,c(t.value,t.key,(0,i.default)(g))}p=!1}m()},e.exports=t.default}(jp,jp.exports);var Kp=jp.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(Kp),r=o(Np()),i=o(Mp);function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)((function(e,t,i,o){return(0,n.default)(t)(e,(0,r.default)(i),o)}),4),e.exports=t.default}(Dp,Dp.exports);var Jp,Zp,Xp=Dp.exports;var Qp,eg,tg,ng,rg,ig,og={exports:{}};function sg(){if(eg)return Qp;eg=1,Qp=a;var e=_f().codes,t=e.ERR_METHOD_NOT_IMPLEMENTED,n=e.ERR_MULTIPLE_CALLBACK,r=e.ERR_TRANSFORM_ALREADY_TRANSFORMING,i=e.ERR_TRANSFORM_WITH_LENGTH_0,o=Zf();function s(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new n);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),i(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&this._read(o.highWaterMark)}function a(e){if(!(this instanceof a))return new a(e);o.call(this,e),this._transformState={afterTransform:s.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",c)}function c(){var e=this;"function"!=typeof this._flush||this._readableState.destroyed?l(this,null,null):this._flush((function(t,n){l(e,t,n)}))}function l(e,t,n){if(t)return e.emit("error",t);if(null!=n&&e.push(n),e._writableState.length)throw new i;if(e._transformState.transforming)throw new r;return e.push(null)}return Nf()(a,o),a.prototype.push=function(e,t){return this._transformState.needTransform=!1,o.prototype.push.call(this,e,t)},a.prototype._transform=function(e,n,r){r(new t("_transform()"))},a.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},a.prototype._read=function(){var e=this._transformState;null===e.writechunk||e.transforming?e.needTransform=!0:(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform))},a.prototype._destroy=function(e,t){o.prototype._destroy.call(this,e,(function(e){t(e)}))},Qp}!function(e,t){var n=P;"disable"===process.env.READABLE_STREAM&&n?(e.exports=n.Readable,Object.assign(e.exports,n),e.exports.Stream=n):((t=e.exports=Jf()).Stream=n||t,t.Readable=t,t.Writable=Xf(),t.Duplex=Zf(),t.Transform=sg(),t.PassThrough=function(){if(ng)return tg;ng=1,tg=t;var e=sg();function t(n){if(!(this instanceof t))return new t(n);e.call(this,n)}return Nf()(t,e),t.prototype._transform=function(e,t,n){n(null,e)},tg}(),t.finished=Kf(),t.pipeline=function(){if(ig)return rg;var e;ig=1;var t=_f().codes,n=t.ERR_MISSING_ARGS,r=t.ERR_STREAM_DESTROYED;function i(e){if(e)throw e}function o(e){e()}function s(e,t){return e.pipe(t)}return rg=function(){for(var t=arguments.length,a=new Array(t),c=0;c<t;c++)a[c]=arguments[c];var l,u=function(e){return e.length?"function"!=typeof e[e.length-1]?i:e.pop():i}(a);if(Array.isArray(a[0])&&(a=a[0]),a.length<2)throw new n("streams");var d=a.map((function(t,n){var i=n<a.length-1;return function(t,n,i,o){o=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(o);var s=!1;t.on("close",(function(){s=!0})),void 0===e&&(e=Kf()),e(t,{readable:n,writable:i},(function(e){if(e)return o(e);s=!0,o()}));var a=!1;return function(e){if(!s&&!a)return a=!0,function(e){return e.setHeader&&"function"==typeof e.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new r("pipe"))}}(t,i,n>0,(function(e){l||(l=e),e&&d.forEach(o),i||(d.forEach(o),u(l))}))}));return a.reduce(s)},rg}())}(og,og.exports);var ag,cg,lg,ug,dg=og.exports,hg={exports:{}};function fg(){if(cg)return ag;cg=1;var e=[],t=[],n=function(){};function r(t){return!~e.indexOf(t)&&(e.push(t),!0)}function i(e){n=e}function o(t){for(var n=[],r=0;r<e.length;r++)if(e[r].async)n.push(e[r]);else if(e[r](t))return!0;return!!n.length&&new Promise((function(e){Promise.all(n.map((function(e){return e(t)}))).then((function(t){e(t.some(Boolean))}))}))}function s(e){return!~t.indexOf(e)&&(t.push(e),!0)}function a(){n.apply(n,arguments)}function c(e){for(var n=0;n<t.length;n++)e=t[n].apply(t[n],arguments);return e}function l(e,t){var n=Object.prototype.hasOwnProperty;for(var r in t)n.call(t,r)&&(e[r]=t[r]);return e}function u(e){return e.enabled=!1,e.modify=s,e.set=i,e.use=r,l((function(){return!1}),e)}function d(e){return e.enabled=!0,e.modify=s,e.set=i,e.use=r,l((function(){var t=Array.prototype.slice.call(arguments,0);return a.call(a,e,c(t,e)),!0}),e)}return ag=function(e){return e.introduce=l,e.enabled=o,e.process=c,e.modify=s,e.write=a,e.nope=u,e.yep=d,e.set=i,e.use=r,e}}var pg,gg,mg,yg,vg,bg,wg={exports:{}},Sg={exports:{}};function _g(){if(bg)return wg.exports;bg=1;var e=gg?pg:(gg=1,pg={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}),t=function(){if(vg)return Sg.exports;vg=1;var e=yg?mg:(yg=1,mg=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}),t=Array.prototype.concat,n=Array.prototype.slice,r=Sg.exports=function(r){for(var i=[],o=0,s=r.length;o<s;o++){var a=r[o];e(a)?i=t.call(i,n.call(a)):i.push(a)}return i};return r.wrap=function(e){return function(){return e(r(arguments))}},Sg.exports}(),n=Object.hasOwnProperty,r=Object.create(null);for(var i in e)n.call(e,i)&&(r[e[i]]=i);var o=wg.exports={to:{},get:{}};function s(e,t,n){return Math.min(Math.max(t,e),n)}function a(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}return o.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=o.get.hsl(e),n="hsl";break;case"hwb":t=o.get.hwb(e),n="hwb";break;default:t=o.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},o.get.rgb=function(t){if(!t)return null;var r,i,o,a=[0,0,0,1];if(r=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(o=r[2],r=r[1],i=0;i<3;i++){var c=2*i;a[i]=parseInt(r.slice(c,c+2),16)}o&&(a[3]=parseInt(o,16)/255)}else if(r=t.match(/^#([a-f0-9]{3,4})$/i)){for(o=(r=r[1])[3],i=0;i<3;i++)a[i]=parseInt(r[i]+r[i],16);o&&(a[3]=parseInt(o+o,16)/255)}else if(r=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(i=0;i<3;i++)a[i]=parseInt(r[i+1],0);r[4]&&(r[5]?a[3]=.01*parseFloat(r[4]):a[3]=parseFloat(r[4]))}else{if(!(r=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(r=t.match(/^(\w+)$/))?"transparent"===r[1]?[0,0,0,0]:n.call(e,r[1])?((a=e[r[1]])[3]=1,a):null:null;for(i=0;i<3;i++)a[i]=Math.round(2.55*parseFloat(r[i+1]));r[4]&&(r[5]?a[3]=.01*parseFloat(r[4]):a[3]=parseFloat(r[4]))}for(i=0;i<3;i++)a[i]=s(a[i],0,255);return a[3]=s(a[3],0,1),a},o.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,0,1)]}return null},o.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,0,1)]}return null},o.to.hex=function(){var e=t(arguments);return"#"+a(e[0])+a(e[1])+a(e[2])+(e[3]<1?a(Math.round(255*e[3])):"")},o.to.rgb=function(){var e=t(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},o.to.rgb.percent=function(){var e=t(arguments),n=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),i=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+n+"%, "+r+"%, "+i+"%)":"rgba("+n+"%, "+r+"%, "+i+"%, "+e[3]+")"},o.to.hsl=function(){var e=t(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},o.to.hwb=function(){var e=t(arguments),n="";return e.length>=4&&1!==e[3]&&(n=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+n+")"},o.to.keyword=function(e){return r[e.slice(0,3)]},wg.exports}var Ig,xg,kg,Eg,Cg,$g,Og,Ng,Tg,Ag,Mg,Pg,Dg,jg,Rg,Lg,Fg,Ug,Wg,Bg,Gg,Vg,Yg,Hg,zg,qg,Kg,Jg={exports:{}};function Zg(){if(kg)return Jg.exports;kg=1;var e=xg?Ig:(xg=1,Ig={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}),t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);var r=Jg.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var i in r)if(r.hasOwnProperty(i)){if(!("channels"in r[i]))throw new Error("missing channels property: "+i);if(!("labels"in r[i]))throw new Error("missing channel labels property: "+i);if(r[i].labels.length!==r[i].channels)throw new Error("channel and label counts mismatch: "+i);var o=r[i].channels,s=r[i].labels;delete r[i].channels,delete r[i].labels,Object.defineProperty(r[i],"channels",{value:o}),Object.defineProperty(r[i],"labels",{value:s})}return r.rgb.hsl=function(e){var t,n,r=e[0]/255,i=e[1]/255,o=e[2]/255,s=Math.min(r,i,o),a=Math.max(r,i,o),c=a-s;return a===s?t=0:r===a?t=(i-o)/c:i===a?t=2+(o-r)/c:o===a&&(t=4+(r-i)/c),(t=Math.min(60*t,360))<0&&(t+=360),n=(s+a)/2,[t,100*(a===s?0:n<=.5?c/(a+s):c/(2-a-s)),100*n]},r.rgb.hsv=function(e){var t,n,r,i,o,s=e[0]/255,a=e[1]/255,c=e[2]/255,l=Math.max(s,a,c),u=l-Math.min(s,a,c),d=function(e){return(l-e)/6/u+.5};return 0===u?i=o=0:(o=u/l,t=d(s),n=d(a),r=d(c),s===l?i=r-n:a===l?i=1/3+t-r:c===l&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*o,100*l]},r.rgb.hwb=function(e){var t=e[0],n=e[1],i=e[2];return[r.rgb.hsl(e)[0],1/255*Math.min(t,Math.min(n,i))*100,100*(i=1-1/255*Math.max(t,Math.max(n,i)))]},r.rgb.cmyk=function(e){var t,n=e[0]/255,r=e[1]/255,i=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-r,1-i)))/(1-t)||0),100*((1-r-t)/(1-t)||0),100*((1-i-t)/(1-t)||0),100*t]},r.rgb.keyword=function(n){var r=t[n];if(r)return r;var i,o,s,a=1/0;for(var c in e)if(e.hasOwnProperty(c)){var l=(o=n,s=e[c],Math.pow(o[0]-s[0],2)+Math.pow(o[1]-s[1],2)+Math.pow(o[2]-s[2],2));l<a&&(a=l,i=c)}return i},r.keyword.rgb=function(t){return e[t]},r.rgb.xyz=function(e){var t=e[0]/255,n=e[1]/255,r=e[2]/255;return[100*(.4124*(t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},r.rgb.lab=function(e){var t=r.rgb.xyz(e),n=t[0],i=t[1],o=t[2];return i/=100,o/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},r.hsl.rgb=function(e){var t,n,r,i,o,s=e[0]/360,a=e[1]/100,c=e[2]/100;if(0===a)return[o=255*c,o,o];t=2*c-(n=c<.5?c*(1+a):c+a-c*a),i=[0,0,0];for(var l=0;l<3;l++)(r=s+1/3*-(l-1))<0&&r++,r>1&&r--,o=6*r<1?t+6*(n-t)*r:2*r<1?n:3*r<2?t+(n-t)*(2/3-r)*6:t,i[l]=255*o;return i},r.hsl.hsv=function(e){var t=e[0],n=e[1]/100,r=e[2]/100,i=n,o=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,i*=o<=1?o:2-o,[t,100*(0===r?2*i/(o+i):2*n/(r+n)),(r+n)/2*100]},r.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,r=e[2]/100,i=Math.floor(t)%6,o=t-Math.floor(t),s=255*r*(1-n),a=255*r*(1-n*o),c=255*r*(1-n*(1-o));switch(r*=255,i){case 0:return[r,c,s];case 1:return[a,r,s];case 2:return[s,r,c];case 3:return[s,a,r];case 4:return[c,s,r];case 5:return[r,s,a]}},r.hsv.hsl=function(e){var t,n,r,i=e[0],o=e[1]/100,s=e[2]/100,a=Math.max(s,.01);return r=(2-o)*s,n=o*a,[i,100*(n=(n/=(t=(2-o)*a)<=1?t:2-t)||0),100*(r/=2)]},r.hwb.rgb=function(e){var t,n,r,i,o,s,a,c=e[0]/360,l=e[1]/100,u=e[2]/100,d=l+u;switch(d>1&&(l/=d,u/=d),r=6*c-(t=Math.floor(6*c)),1&t&&(r=1-r),i=l+r*((n=1-u)-l),t){default:case 6:case 0:o=n,s=i,a=l;break;case 1:o=i,s=n,a=l;break;case 2:o=l,s=n,a=i;break;case 3:o=l,s=i,a=n;break;case 4:o=i,s=l,a=n;break;case 5:o=n,s=l,a=i}return[255*o,255*s,255*a]},r.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},r.xyz.rgb=function(e){var t,n,r,i=e[0]/100,o=e[1]/100,s=e[2]/100;return n=-.9689*i+1.8758*o+.0415*s,r=.0557*i+-.204*o+1.057*s,t=(t=3.2406*i+-1.5372*o+-.4986*s)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},r.xyz.lab=function(e){var t=e[0],n=e[1],r=e[2];return n/=100,r/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},r.lab.xyz=function(e){var t,n,r,i=e[0];t=e[1]/500+(n=(i+16)/116),r=n-e[2]/200;var o=Math.pow(n,3),s=Math.pow(t,3),a=Math.pow(r,3);return n=o>.008856?o:(n-16/116)/7.787,t=s>.008856?s:(t-16/116)/7.787,r=a>.008856?a:(r-16/116)/7.787,[t*=95.047,n*=100,r*=108.883]},r.lab.lch=function(e){var t,n=e[0],r=e[1],i=e[2];return(t=360*Math.atan2(i,r)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(r*r+i*i),t]},r.lch.lab=function(e){var t,n=e[0],r=e[1];return t=e[2]/360*2*Math.PI,[n,r*Math.cos(t),r*Math.sin(t)]},r.rgb.ansi16=function(e){var t=e[0],n=e[1],i=e[2],o=1 in arguments?arguments[1]:r.rgb.hsv(e)[2];if(0===(o=Math.round(o/50)))return 30;var s=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===o&&(s+=60),s},r.hsv.ansi16=function(e){return r.rgb.ansi16(r.hsv.rgb(e),e[2])},r.rgb.ansi256=function(e){var t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},r.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},r.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},r.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},r.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},r.rgb.hcg=function(e){var t,n=e[0]/255,r=e[1]/255,i=e[2]/255,o=Math.max(Math.max(n,r),i),s=Math.min(Math.min(n,r),i),a=o-s;return t=a<=0?0:o===n?(r-i)/a%6:o===r?2+(i-n)/a:4+(n-r)/a+4,t/=6,[360*(t%=1),100*a,100*(a<1?s/(1-a):0)]},r.hsl.hcg=function(e){var t,n=e[1]/100,r=e[2]/100,i=0;return(t=r<.5?2*n*r:2*n*(1-r))<1&&(i=(r-.5*t)/(1-t)),[e[0],100*t,100*i]},r.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,r=t*n,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},r.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];var i,o=[0,0,0],s=t%1*6,a=s%1,c=1-a;switch(Math.floor(s)){case 0:o[0]=1,o[1]=a,o[2]=0;break;case 1:o[0]=c,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=a;break;case 3:o[0]=0,o[1]=c,o[2]=1;break;case 4:o[0]=a,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=c}return i=(1-n)*r,[255*(n*o[0]+i),255*(n*o[1]+i),255*(n*o[2]+i)]},r.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},r.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},r.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},r.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,r=n-t,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},r.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},r.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},r.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},r.gray.hsl=r.gray.hsv=function(e){return[0,0,e[0]]},r.gray.hwb=function(e){return[0,100,e[0]]},r.gray.cmyk=function(e){return[0,0,0,e[0]]},r.gray.lab=function(e){return[e[0],0,0]},r.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},r.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]},Jg.exports}function Xg(){if(Og)return $g;Og=1;var e=Zg(),t=function(){if(Cg)return Eg;Cg=1;var e=Zg();function t(t){var n=function(){for(var t={},n=Object.keys(e),r=n.length,i=0;i<r;i++)t[n[i]]={distance:-1,parent:null};return t}(),r=[t];for(n[t].distance=0;r.length;)for(var i=r.pop(),o=Object.keys(e[i]),s=o.length,a=0;a<s;a++){var c=o[a],l=n[c];-1===l.distance&&(l.distance=n[i].distance+1,l.parent=i,r.unshift(c))}return n}function n(e,t){return function(n){return t(e(n))}}function r(t,r){for(var i=[r[t].parent,t],o=e[r[t].parent][t],s=r[t].parent;r[s].parent;)i.unshift(r[s].parent),o=n(e[r[s].parent][s],o),s=r[s].parent;return o.conversion=i,o}return Eg=function(e){for(var n=t(e),i={},o=Object.keys(n),s=o.length,a=0;a<s;a++){var c=o[a];null!==n[c].parent&&(i[c]=r(c,n))}return i}}(),n={};return Object.keys(e).forEach((function(r){n[r]={},Object.defineProperty(n[r],"channels",{value:e[r].channels}),Object.defineProperty(n[r],"labels",{value:e[r].labels});var i=t(r);Object.keys(i).forEach((function(e){var t=i[e];n[r][e]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var r=n.length,i=0;i<r;i++)n[i]=Math.round(n[i]);return n};return"conversion"in e&&(t.conversion=e.conversion),t}(t),n[r][e].raw=function(e){var t=function(t){return null==t?t:(arguments.length>1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(t)}))})),$g=n}function Qg(){if(Dg)return Pg;Dg=1;var e=function(){if(Tg)return Ng;Tg=1;var e=_g(),t=Xg(),n=[].slice,r=["keyword","gray","hex"],i={};Object.keys(t).forEach((function(e){i[n.call(t[e].labels).sort().join("")]=e}));var o={};function s(a,c){if(!(this instanceof s))return new s(a,c);if(c&&c in r&&(c=null),c&&!(c in t))throw new Error("Unknown model: "+c);var u,d;if(null==a)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(a instanceof s)this.model=a.model,this.color=a.color.slice(),this.valpha=a.valpha;else if("string"==typeof a){var h=e.get(a);if(null===h)throw new Error("Unable to parse color from string: "+a);this.model=h.model,d=t[this.model].channels,this.color=h.value.slice(0,d),this.valpha="number"==typeof h.value[d]?h.value[d]:1}else if(a.length){this.model=c||"rgb",d=t[this.model].channels;var f=n.call(a,0,d);this.color=l(f,d),this.valpha="number"==typeof a[d]?a[d]:1}else if("number"==typeof a)a&=16777215,this.model="rgb",this.color=[a>>16&255,a>>8&255,255&a],this.valpha=1;else{this.valpha=1;var p=Object.keys(a);"alpha"in a&&(p.splice(p.indexOf("alpha"),1),this.valpha="number"==typeof a.alpha?a.alpha:0);var g=p.sort().join("");if(!(g in i))throw new Error("Unable to parse color from object: "+JSON.stringify(a));this.model=i[g];var m=t[this.model].labels,y=[];for(u=0;u<m.length;u++)y.push(a[m[u]]);this.color=l(y)}if(o[this.model])for(d=t[this.model].channels,u=0;u<d;u++){var v=o[this.model][u];v&&(this.color[u]=v(this.color[u]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function a(e,t,n){return(e=Array.isArray(e)?e:[e]).forEach((function(e){(o[e]||(o[e]=[]))[t]=n})),e=e[0],function(r){var i;return arguments.length?(n&&(r=n(r)),(i=this[e]()).color[t]=r,i):(i=this[e]().color[t],n&&(i=n(i)),i)}}function c(e){return function(t){return Math.max(0,Math.min(e,t))}}function l(e,t){for(var n=0;n<t;n++)"number"!=typeof e[n]&&(e[n]=0);return e}return s.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var n=this.model in e.to?this:this.rgb(),r=1===(n=n.round("number"==typeof t?t:1)).valpha?n.color:n.color.concat(this.valpha);return e.to[n.model](r)},percentString:function(t){var n=this.rgb().round("number"==typeof t?t:1),r=1===n.valpha?n.color:n.color.concat(this.valpha);return e.to.rgb.percent(r)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},n=t[this.model].channels,r=t[this.model].labels,i=0;i<n;i++)e[r[i]]=this.color[i];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new s(this.color.map(function(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new s(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:a("rgb",0,c(255)),green:a("rgb",1,c(255)),blue:a("rgb",2,c(255)),hue:a(["hsl","hsv","hsl","hwb","hcg"],0,(function(e){return(e%360+360)%360})),saturationl:a("hsl",1,c(100)),lightness:a("hsl",2,c(100)),saturationv:a("hsv",1,c(100)),value:a("hsv",2,c(100)),chroma:a("hcg",1,c(100)),gray:a("hcg",2,c(100)),white:a("hwb",1,c(100)),wblack:a("hwb",2,c(100)),cyan:a("cmyk",0,c(100)),magenta:a("cmyk",1,c(100)),yellow:a("cmyk",2,c(100)),black:a("cmyk",3,c(100)),x:a("xyz",0,c(100)),y:a("xyz",1,c(100)),z:a("xyz",2,c(100)),l:a("lab",0,c(100)),a:a("lab",1),b:a("lab",2),keyword:function(e){return arguments.length?new s(e):t[this.model].keyword(this.color)},hex:function(t){return arguments.length?new s(t):e.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],n=0;n<e.length;n++){var r=e[n]/255;t[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return s.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var n=e.rgb(),r=this.rgb(),i=void 0===t?.5:t,o=2*i-1,a=n.alpha()-r.alpha(),c=((o*a==-1?o:(o+a)/(1+o*a))+1)/2,l=1-c;return s.rgb(c*n.red()+l*r.red(),c*n.green()+l*r.green(),c*n.blue()+l*r.blue(),n.alpha()*i+r.alpha()*(1-i))}},Object.keys(t).forEach((function(e){if(-1===r.indexOf(e)){var i=t[e].channels;s.prototype[e]=function(){if(this.model===e)return new s(this);if(arguments.length)return new s(arguments,e);var n,r="number"==typeof arguments[i]?i:this.valpha;return new s((n=t[this.model][e].raw(this.color),Array.isArray(n)?n:[n]).concat(r),e)},s[e]=function(t){return"number"==typeof t&&(t=l(n.call(arguments),i)),new s(t,e)}}})),Ng=s}(),t=(Mg||(Mg=1,Ag=function(e){for(var t=0,n=0;t<e.length;n=e.charCodeAt(t++)+((n<<5)-n));var r=Math.floor(Math.abs(1e4*Math.sin(n)%1*16777216)).toString(16);return"#"+Array(6-r.length+1).join("0")+r}),Ag);return Pg=function(n,r){var i=n.split(r||":"),o=t(i[0]);if(!i.length)return o;for(var s=0,a=i.length-1;s<a;s++)o=e(o).mix(e(t(i[s+1]))).saturate(1).hex();return o},Pg}function em(){if(Yg)return Vg;Yg=1;var e=function(){if(Gg)return Bg;Gg=1;var e=(Wg||(Wg=1,Ug=function(e,t){if(!t)return!1;for(var n=t.split(/[\s,]+/),r=0;r<n.length;r++)if("-"!==(t=n[r].replace("*",".*?")).charAt(0)){if(new RegExp("^"+t+"$").test(e))return!0}else if(new RegExp("^"+t.substr(1)+"$").test(e))return!1;return!1}),Ug);return Bg=function(t){return function(n){try{return e(n,t())}catch(e){}return!1}}}();return Vg=e((function(){return process.env.DEBUG||process.env.DIAGNOSTICS}))}"production"===process.env.NODE_ENV?hg.exports=function(){if(ug)return lg;ug=1;var e=fg()((function e(t,n){return(n=n||{}).namespace=t,n.prod=!0,n.dev=!1,n.force||e.force?e.yep(n):e.nope(n)}));return lg=e}():hg.exports=function(){if(Kg)return qg;Kg=1;var e=fg(),t=N.isatty(1),n=e((function e(n,r){return(r=r||{}).colors="colors"in r?r.colors:t,r.namespace=n,r.prod=!1,r.dev=!0,e.enabled(n)||r.force||e.force?e.yep(r):e.nope(r)}));return n.modify(function(){if(Fg)return Lg;Fg=1;var e=Qg(),t=function(){if(Rg)return jg;function e(t,n){return n?new e(t).style(n):this instanceof e?void(this.text=t):new e(t)}return Rg=1,e.prototype.prefix="[",e.prototype.suffix="m",e.prototype.hex=function(e){3===(e="#"===e[0]?e.substring(1):e).length&&((e=e.split(""))[5]=e[2],e[4]=e[2],e[3]=e[1],e[2]=e[1],e[1]=e[0],e=e.join(""));var t=e.substring(0,2),n=e.substring(2,4),r=e.substring(4,6);return[parseInt(t,16),parseInt(n,16),parseInt(r,16)]},e.prototype.rgb=function(e,t,n){var r=e/255*5,i=t/255*5,o=n/255*5;return this.ansi(r,i,o)},e.prototype.ansi=function(e,t,n){return 16+36*Math.round(e)+6*Math.round(t)+Math.round(n)},e.prototype.reset=function(){return this.prefix+"39;49"+this.suffix},e.prototype.style=function(e){return this.prefix+"38;5;"+this.rgb.apply(this,this.hex(e))+this.suffix+this.text+this.reset()},jg=e}();return Lg=function(n,r){var i=r.namespace,o=!1!==r.colors?t(i+":",e(i)):i+":";return n[0]=o+" "+n[0],n}}()),n.use(em()),n.set(zg?Hg:(zg=1,Hg=function(e,t){try{Function.prototype.apply.call(console.log,console,t)}catch(e){}})),qg=n}();var tm,nm,rm,im,om,sm,am=hg.exports;function cm(){if(im)return rm;im=1;const e=O,t=x,n=(Zp||(Zp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,r.default)(o.default,e,t)};var n=(Ap||(Ap=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(mp),r=o(Np()),i=o(Mp);function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(((e,t,i)=>{var o=(0,n.default)(t)?[]:{};e(t,((e,t,n)=>{(0,r.default)(e)(((e,...r)=>{r.length<2&&([r]=r),o[t]=r,n(e)}))}),(e=>i(e,o)))}),3),e.exports=t.default}(pp,pp.exports)),pp.exports),r=s(n),i=(Jp||(Jp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=i(Xp),r=i(Mp);function i(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.default)((function(e,t,r){return(0,n.default)(e,1,t,r)}),3),e.exports=t.default}(Pp,Pp.exports)),Pp.exports),o=s(i);function s(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(fp,fp.exports)),fp.exports),r=R,{MESSAGE:i}=Ud,{Stream:o,PassThrough:s}=dg,a=hp,c=am("winston:file"),l=T,u=function(){if(nm)return tm;nm=1;const e=O,{StringDecoder:t}=L,{Stream:n}=dg;function r(){}return tm=(i,o)=>{const s=Buffer.alloc(65536),a=new t("utf8"),c=new n;let l="",u=0,d=0;return-1===i.start&&delete i.start,c.readable=!0,c.destroy=()=>{c.destroyed=!0,c.emit("end"),c.emit("close")},e.open(i.file,"a+","0644",((t,n)=>{if(t)return o?o(t):c.emit("error",t),void c.destroy();!function t(){if(!c.destroyed)return e.read(n,s,0,s.length,u,((e,n)=>{if(e)return o?o(e):c.emit("error",e),void c.destroy();if(!n)return l&&((null==i.start||d>i.start)&&(o?o(null,l):c.emit("line",l)),d++,l=""),setTimeout(t,1e3);let r=a.write(s.slice(0,n));o||c.emit("data",r),r=(l+r).split(/\n+/);const h=r.length-1;let f=0;for(;f<h;f++)(null==i.start||d>i.start)&&(o?o(null,r[f]):c.emit("line",r[f])),d++;return l=r[h],u+=n,t()}));e.close(n,r)}()})),o?c.destroy:c},tm}();return rm=class extends a{constructor(e={}){function n(t,...n){n.slice(1).forEach((n=>{if(e[n])throw new Error(`Cannot set ${n} and ${t} together`)}))}if(super(e),this.name=e.name||"file",this._stream=new s,this._stream.setMaxListeners(30),this._onError=this._onError.bind(this),e.filename||e.dirname)n("filename or dirname","stream"),this._basename=this.filename=e.filename?t.basename(e.filename):"winston.log",this.dirname=e.dirname||t.dirname(e.filename),this.options=e.options||{flags:"a"};else{if(!e.stream)throw new Error("Cannot log to file without filename or stream.");console.warn("options.stream will be removed in winston@4. Use winston.transports.Stream"),n("stream","filename","maxsize"),this._dest=this._stream.pipe(this._setupStream(e.stream)),this.dirname=t.dirname(this._dest.path)}this.maxsize=e.maxsize||null,this.rotationFormat=e.rotationFormat||!1,this.zippedArchive=e.zippedArchive||!1,this.maxFiles=e.maxFiles||null,this.eol="string"==typeof e.eol?e.eol:l.EOL,this.tailable=e.tailable||!1,this.lazy=e.lazy||!1,this._size=0,this._pendingSize=0,this._created=0,this._drain=!1,this._opening=!1,this._ending=!1,this._fileExist=!1,this.dirname&&this._createLogDirIfNotExist(this.dirname),this.lazy||this.open()}finishIfEnding(){this._ending&&(this._opening?this.once("open",(()=>{this._stream.once("finish",(()=>this.emit("finish"))),setImmediate((()=>this._stream.end()))})):(this._stream.once("finish",(()=>this.emit("finish"))),setImmediate((()=>this._stream.end()))))}log(e,t=()=>{}){if(this.silent)return t(),!0;if(this._drain)return void this._stream.once("drain",(()=>{this._drain=!1,this.log(e,t)}));if(this._rotate)return void this._stream.once("rotate",(()=>{this._rotate=!1,this.log(e,t)}));if(this.lazy){if(!this._fileExist)return this._opening||this.open(),void this.once("open",(()=>{this._fileExist=!0,this.log(e,t)}));if(this._needsNewFile(this._pendingSize))return void this._dest.once("close",(()=>{this._opening||this.open(),this.once("open",(()=>{this.log(e,t)}))}))}const n=`${e[i]}${this.eol}`,r=Buffer.byteLength(n);this._pendingSize+=r,this._opening&&!this.rotatedWhileOpening&&this._needsNewFile(this._size+this._pendingSize)&&(this.rotatedWhileOpening=!0);const o=this._stream.write(n,function(){this._size+=r,this._pendingSize-=r,c("logged %s %s",this._size,n),this.emit("logged",e),this._rotate||this._opening||this._needsNewFile()&&(this.lazy?this._endStream((()=>{this.emit("fileclosed")})):(this._rotate=!0,this._endStream((()=>this._rotateFile()))))}.bind(this));return o?t():(this._drain=!0,this._stream.once("drain",(()=>{this._drain=!1,t()}))),c("written",o,this._drain),this.finishIfEnding(),o}query(n,r){"function"==typeof n&&(r=n,n={}),n=function(e){return(e=e||{}).rows=e.rows||e.limit||10,e.start=e.start||0,e.until=e.until||new Date,"object"!=typeof e.until&&(e.until=new Date(e.until)),e.from=e.from||e.until-864e5,"object"!=typeof e.from&&(e.from=new Date(e.from)),e.order=e.order||"desc",e}(n);const i=t.join(this.dirname,this.filename);let o="",s=[],a=0;const c=e.createReadStream(i,{encoding:"utf8"});function l(e,t){try{const t=JSON.parse(e);(function(e){if(!e)return;if("object"!=typeof e)return;const t=new Date(e.timestamp);return!(n.from&&t<n.from||n.until&&t>n.until||n.level&&n.level!==e.level)||void 0})(t)&&function(e){n.rows&&s.length>=n.rows&&"desc"!==n.order?c.readable&&c.destroy():(n.fields&&(e=n.fields.reduce(((t,n)=>(t[n]=e[n],t)),{})),"desc"===n.order&&s.length>=n.rows&&s.shift(),s.push(e))}(t)}catch(e){t||c.emit("error",e)}}c.on("error",(e=>{if(c.readable&&c.destroy(),r)return"ENOENT"!==e.code?r(e):r(null,s)})),c.on("data",(e=>{const t=(e=(o+e).split(/\n+/)).length-1;let r=0;for(;r<t;r++)(!n.start||a>=n.start)&&l(e[r]),a++;o=e[t]})),c.on("close",(()=>{o&&l(o,!0),"desc"===n.order&&(s=s.reverse()),r&&r(null,s)}))}stream(e={}){const n=t.join(this.dirname,this.filename),r=new o,i={file:n,start:e.start};return r.destroy=u(i,((e,t)=>{if(e)return r.emit("error",e);try{r.emit("data",t),t=JSON.parse(t),r.emit("log",t)}catch(e){r.emit("error",e)}})),r}open(){this.filename&&(this._opening||(this._opening=!0,this.stat(((e,t)=>{if(e)return this.emit("error",e);c("stat done: %s { size: %s }",this.filename,t),this._size=t,this._dest=this._createStream(this._stream),this._opening=!1,this.once("open",(()=>{this._stream.emit("rotate")||(this._rotate=!1)}))}))))}stat(n){const r=this._getFile(),i=t.join(this.dirname,r);e.stat(i,((e,t)=>e&&"ENOENT"===e.code?(c("ENOENT ok",i),this.filename=r,n(null,0)):e?(c(`err ${e.code} ${i}`),n(e)):!t||this._needsNewFile(t.size)?this._incFile((()=>this.stat(n))):(this.filename=r,void n(null,t.size))))}close(e){this._stream&&this._stream.end((()=>{e&&e(),this.emit("flush"),this.emit("closed")}))}_needsNewFile(e){return e=e||this._size,this.maxsize&&e>=this.maxsize}_onError(e){this.emit("error",e)}_setupStream(e){return e.on("error",this._onError),e}_cleanupStream(e){return e.removeListener("error",this._onError),e.destroy(),e}_rotateFile(){this._incFile((()=>this.open()))}_endStream(e=()=>{}){this._dest?(this._stream.unpipe(this._dest),this._dest.end((()=>{this._cleanupStream(this._dest),e()}))):e()}_createStream(n){const r=t.join(this.dirname,this.filename);c("create stream start",r,this.options);const i=e.createWriteStream(r,this.options).on("error",(e=>c(e))).on("close",(()=>c("close",i.path,i.bytesWritten))).on("open",(()=>{c("file open ok",r),this.emit("open",r),n.pipe(i),this.rotatedWhileOpening&&(this._stream=new s,this._stream.setMaxListeners(30),this._rotateFile(),this.rotatedWhileOpening=!1,this._cleanupStream(i),n.end())}));return c("create stream ok",r),i}_incFile(e){c("_incFile",this.filename);const r=t.extname(this._basename),i=t.basename(this._basename,r),o=[];this.zippedArchive&&o.push(function(e){const n=this._created>0&&!this.tailable?this._created:"";this._compressFile(t.join(this.dirname,`${i}${n}${r}`),t.join(this.dirname,`${i}${n}${r}.gz`),e)}.bind(this)),o.push(function(e){this.tailable?this._checkMaxFilesTailable(r,i,e):(this._created+=1,this._checkMaxFilesIncrementing(r,i,e))}.bind(this)),n(o,e)}_getFile(){const e=t.extname(this._basename),n=t.basename(this._basename,e),r=this.rotationFormat?this.rotationFormat():this._created;return!this.tailable&&this._created?`${n}${r}${e}`:`${n}${e}`}_checkMaxFilesIncrementing(n,r,i){if(!this.maxFiles||this._created<this.maxFiles)return setImmediate(i);const o=this._created-this.maxFiles,s=`${r}${0!==o?o:""}${n}${this.zippedArchive?".gz":""}`,a=t.join(this.dirname,s);e.unlink(a,i)}_checkMaxFilesTailable(r,i,o){const s=[];if(!this.maxFiles)return;const a=this.zippedArchive?".gz":"";for(let n=this.maxFiles-1;n>1;n--)s.push(function(n,o){let s=`${i}${n-1}${r}${a}`;const c=t.join(this.dirname,s);e.exists(c,(l=>{if(!l)return o(null);s=`${i}${n}${r}${a}`,e.rename(c,t.join(this.dirname,s),o)}))}.bind(this,n));n(s,(()=>{e.rename(t.join(this.dirname,`${i}${r}${a}`),t.join(this.dirname,`${i}1${r}${a}`),o)}))}_compressFile(t,n,i){e.access(t,e.F_OK,(o=>{if(o)return i();var s=r.createGzip(),a=e.createReadStream(t),c=e.createWriteStream(n);c.on("finish",(()=>{e.unlink(t,i)})),a.pipe(s).pipe(c)}))}_createLogDirIfNotExist(t){e.existsSync(t)||e.mkdirSync(t,{recursive:!0})}},rm}const lm=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;lm.writable=e=>lm(e)&&!1!==e.writable&&"function"==typeof e._write&&"object"==typeof e._writableState,lm.readable=e=>lm(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState,lm.duplex=e=>lm.writable(e)&&lm.readable(e),lm.transform=e=>lm.duplex(e)&&"function"==typeof e._transform;var um,dm,hm=lm;!function(e){Object.defineProperty(e,"Console",{configurable:!0,enumerable:!0,get:()=>function(){if(dp)return up;dp=1;const e=T,{LEVEL:t,MESSAGE:n}=Ud,r=hp;return up=class extends r{constructor(t={}){super(t),this.name=t.name||"console",this.stderrLevels=this._stringArrayToSet(t.stderrLevels),this.consoleWarnLevels=this._stringArrayToSet(t.consoleWarnLevels),this.eol="string"==typeof t.eol?t.eol:e.EOL,this.forceConsole=t.forceConsole||!1,this._consoleLog=console.log.bind(console),this._consoleWarn=console.warn.bind(console),this._consoleError=console.error.bind(console),this.setMaxListeners(30)}log(e,r){return setImmediate((()=>this.emit("logged",e))),this.stderrLevels[e[t]]?(console._stderr&&!this.forceConsole?console._stderr.write(`${e[n]}${this.eol}`):this._consoleError(e[n]),void(r&&r())):this.consoleWarnLevels[e[t]]?(console._stderr&&!this.forceConsole?console._stderr.write(`${e[n]}${this.eol}`):this._consoleWarn(e[n]),void(r&&r())):(console._stdout&&!this.forceConsole?console._stdout.write(`${e[n]}${this.eol}`):this._consoleLog(e[n]),void(r&&r()))}_stringArrayToSet(e,t){if(!e)return{};if(t=t||"Cannot make set from type other than Array of string elements",!Array.isArray(e))throw new Error(t);return e.reduce(((e,n)=>{if("string"!=typeof n)throw new Error(t);return e[n]=!0,e}),{})}}}()}),Object.defineProperty(e,"File",{configurable:!0,enumerable:!0,get:()=>cm()}),Object.defineProperty(e,"Http",{configurable:!0,enumerable:!0,get:()=>function(){if(sm)return om;sm=1;const e=F,t=U,{Stream:n}=dg,r=hp,{configure:i}=mh();return om=class extends r{constructor(e={}){super(e),this.options=e,this.name=e.name||"http",this.ssl=!!e.ssl,this.host=e.host||"localhost",this.port=e.port,this.auth=e.auth,this.path=e.path||"",this.maximumDepth=e.maximumDepth,this.agent=e.agent,this.headers=e.headers||{},this.headers["content-type"]="application/json",this.batch=e.batch||!1,this.batchInterval=e.batchInterval||5e3,this.batchCount=e.batchCount||10,this.batchOptions=[],this.batchTimeoutID=-1,this.batchCallback={},this.port||(this.port=this.ssl?443:80)}log(e,t){this._request(e,null,null,((t,n)=>{n&&200!==n.statusCode&&(t=new Error(`Invalid HTTP Status Code: ${n.statusCode}`)),t?this.emit("warn",t):this.emit("logged",e)})),t&&setImmediate(t)}query(e,t){"function"==typeof e&&(t=e,e={});const n=(e={method:"query",params:this.normalizeQuery(e)}).params.auth||null;delete e.params.auth;const r=e.params.path||null;delete e.params.path,this._request(e,n,r,((e,n,r)=>{if(n&&200!==n.statusCode&&(e=new Error(`Invalid HTTP Status Code: ${n.statusCode}`)),e)return t(e);if("string"==typeof r)try{r=JSON.parse(r)}catch(e){return t(e)}t(null,r)}))}stream(e={}){const t=new n,r=(e={method:"stream",params:e}).params.path||null;delete e.params.path;const i=e.params.auth||null;delete e.params.auth;let o="";const s=this._request(e,i,r);return t.destroy=()=>s.destroy(),s.on("data",(e=>{const n=(e=(o+e).split(/\n+/)).length-1;let r=0;for(;r<n;r++)try{t.emit("log",JSON.parse(e[r]))}catch(e){t.emit("error",e)}o=e[n]})),s.on("error",(e=>t.emit("error",e))),t}_request(e,t,n,r){e=e||{},t=t||this.auth,n=n||this.path||"",this.batch?this._doBatch(e,r,t,n):this._doRequest(e,r,t,n)}_doBatch(e,t,n,r){if(this.batchOptions.push(e),1===this.batchOptions.length){const e=this;this.batchCallback=t,this.batchTimeoutID=setTimeout((function(){e.batchTimeoutID=-1,e._doBatchRequest(e.batchCallback,n,r)}),this.batchInterval)}this.batchOptions.length===this.batchCount&&this._doBatchRequest(this.batchCallback,n,r)}_doBatchRequest(e,t,n){this.batchTimeoutID>0&&(clearTimeout(this.batchTimeoutID),this.batchTimeoutID=-1);const r=this.batchOptions.slice();this.batchOptions=[],this._doRequest(r,e,t,n)}_doRequest(n,r,o,s){const a=Object.assign({},this.headers);o&&o.bearer&&(a.Authorization=`Bearer ${o.bearer}`);const c=(this.ssl?t:e).request({...this.options,method:"POST",host:this.host,port:this.port,path:`/${s.replace(/^\//,"")}`,headers:a,auth:o&&o.username&&o.password?`${o.username}:${o.password}`:"",agent:this.agent});c.on("error",r),c.on("response",(e=>e.on("end",(()=>r(null,e))).resume()));const l=i({...this.maximumDepth&&{maximumDepth:this.maximumDepth}});c.end(Buffer.from(l(n,this.options.replacer),"utf8"))}},om}()}),Object.defineProperty(e,"Stream",{configurable:!0,enumerable:!0,get:()=>function(){if(dm)return um;dm=1;const e=hm,{MESSAGE:t}=Ud,n=T,r=hp;return um=class extends r{constructor(t={}){if(super(t),!t.stream||!e(t.stream))throw new Error("options.stream is required.");this._stream=t.stream,this._stream.setMaxListeners(1/0),this.isObjectMode=t.stream._writableState.objectMode,this.eol="string"==typeof t.eol?t.eol:n.EOL}log(e,n){if(setImmediate((()=>this.emit("logged",e))),this.isObjectMode)return this._stream.write(e),void(n&&n());this._stream.write(`${e[t]}${this.eol}`),n&&n()}}}()})}(ff);var fm={};const pm=ld,{configs:gm}=Ud;fm.cli=pm.levels(gm.cli),fm.npm=pm.levels(gm.npm),fm.syslog=pm.levels(gm.syslog),fm.addColors=pm.levels;var mm={exports:{}},ym={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=l(mp),r=l(zp),i=l(Xp),o=l(Lp),s=l(Vp),a=l(Np()),c=l(Mp);function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t,n){n=(0,o.default)(n);var i=0,a=0,{length:c}=e,l=!1;function u(e,t){!1===e&&(l=!0),!0!==l&&(e?n(e):++a!==c&&t!==r.default||n(null))}for(0===c&&n(null);i<c;i++)t(e[i],i,(0,s.default)(u))}function d(e,t,n){return(0,i.default)(e,1/0,t,n)}t.default=(0,c.default)((function(e,t,r){return((0,n.default)(e)?u:d)(e,(0,a.default)(t),r)}),3),e.exports=t.default}(ym,ym.exports);var vm=ym.exports,bm={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(t,n,r)=>e(t,r)},e.exports=t.default}(bm,bm.exports);var wm=bm.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=s(vm),r=s(wm),i=s(Np()),o=s(Mp);function s(e){return e&&e.__esModule?e:{default:e}}t.default=(0,o.default)((function(e,t,o){return(0,n.default)(e,(0,r.default)((0,i.default)(t)),o)}),3),e.exports=t.default}(mm,mm.exports);var Sm=mm.exports,_m=Object.prototype.toString,Im=function(e){var t,n=0;function r(){return n||(n=1,t=e.apply(this,arguments),e=null),t}return r.displayName=function(e){if("string"==typeof e.displayName&&e.constructor.name)return e.displayName;if("string"==typeof e.name&&e.name)return e.name;if("object"==typeof e&&e.constructor&&"string"==typeof e.constructor.name)return e.constructor.name;var t=e.toString(),n=_m.call(e).slice(8,-1);return(t="Function"===n?t.substring(t.indexOf("(")+1,t.indexOf(")")):n)||"anonymous"}(e),r},xm={};!function(e){function t(e){for(var t in e)this[t]=e[t]}e.get=function(t){var n=Error.stackTraceLimit;Error.stackTraceLimit=1/0;var r={},i=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){return t},Error.captureStackTrace(r,t||e.get);var o=r.stack;return Error.prepareStackTrace=i,Error.stackTraceLimit=n,o},e.parse=function(e){if(!e.stack)return[];var t=this;return e.stack.split("\n").slice(1).map((function(e){if(e.match(/^\s*[-]{4,}$/))return t._createParsedCallSite({fileName:e,lineNumber:null,functionName:null,typeName:null,methodName:null,columnNumber:null,native:null});var n=e.match(/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/);if(n){var r=null,i=null,o=null,s=null,a=null,c="native"===n[5];if(n[1]){var l=(o=n[1]).lastIndexOf(".");if("."==o[l-1]&&l--,l>0){r=o.substr(0,l),i=o.substr(l+1);var u=r.indexOf(".Module");u>0&&(o=o.substr(u+1),r=r.substr(0,u))}s=null}i&&(s=r,a=i),"<anonymous>"===i&&(a=null,o=null);var d={fileName:n[2]||null,lineNumber:parseInt(n[3],10)||null,functionName:o,typeName:s,methodName:a,columnNumber:parseInt(n[4],10)||null,native:c};return t._createParsedCallSite(d)}})).filter((function(e){return!!e}))},["this","typeName","functionName","methodName","fileName","lineNumber","columnNumber","function","evalOrigin"].forEach((function(e){t.prototype[e]=null,t.prototype["get"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}})),["topLevel","eval","native","constructor"].forEach((function(e){t.prototype[e]=!1,t.prototype["is"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}})),e._createParsedCallSite=function(e){return new t(e)}}(xm);const{Writable:km}=dg,Em=T,Cm=Sm,$m=am("winston:exception"),Om=Im,Nm=xm,Tm=class extends km{constructor(e){if(super({objectMode:!0}),!e)throw new Error("ExceptionStream requires a TransportStream instance.");this.handleExceptions=!0,this.transport=e}_write(e,t,n){return e.exception?this.transport.log(e,n):(n(),!0)}};var Am=class{constructor(e){if(!e)throw new Error("Logger is required to handle exceptions");this.logger=e,this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e))return e.forEach((e=>this._addHandler(e)));this._addHandler(e)})),this.catcher||(this.catcher=this._uncaughtException.bind(this),process.on("uncaughtException",this.catcher))}unhandle(){this.catcher&&(process.removeListener("uncaughtException",this.catcher),this.catcher=!1,Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e))))}getAllInfo(e){let t=null;return e&&(t="string"==typeof e?e:e.message),{error:e,level:"error",message:[`uncaughtException: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,exception:!0,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:Em.loadavg(),uptime:Em.uptime()}}getTrace(e){return(e?Nm.parse(e):Nm.get()).map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleExceptions=!0;const t=new Tm(e);this.handlers.set(e,t),this.logger.pipe(t)}}_uncaughtException(e){const t=this.getAllInfo(e),n=this._getExceptionHandlers();let r,i="function"==typeof this.logger.exitOnError?this.logger.exitOnError(e):this.logger.exitOnError;function o(){$m("doExit",i),$m("process._exiting",process._exiting),i&&!process._exiting&&(r&&clearTimeout(r),process.exit(1))}if(!n.length&&i&&(console.warn("winston: exitOnError cannot be true with no exception handlers."),console.warn("winston: not exiting process."),i=!1),!n||0===n.length)return process.nextTick(o);Cm(n,((e,t)=>{const n=Om(t),r=e.transport||e;function i(e){return()=>{$m(e),n()}}r._ending=!0,r.once("finish",i("finished")),r.once("error",i("error"))}),(()=>i&&o())),this.logger.log(t),i&&(r=setTimeout(o,3e3))}_getExceptionHandlers(){return this.logger.transports.filter((e=>(e.transport||e).handleExceptions))}};const{Writable:Mm}=dg,Pm=T,Dm=Sm,jm=am("winston:rejection"),Rm=Im,Lm=xm,Fm=class extends Mm{constructor(e){if(super({objectMode:!0}),!e)throw new Error("RejectionStream requires a TransportStream instance.");this.handleRejections=!0,this.transport=e}_write(e,t,n){return e.rejection?this.transport.log(e,n):(n(),!0)}};var Um,Wm,Bm,Gm,Vm=class{constructor(e){if(!e)throw new Error("Logger is required to handle rejections");this.logger=e,this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e))return e.forEach((e=>this._addHandler(e)));this._addHandler(e)})),this.catcher||(this.catcher=this._unhandledRejection.bind(this),process.on("unhandledRejection",this.catcher))}unhandle(){this.catcher&&(process.removeListener("unhandledRejection",this.catcher),this.catcher=!1,Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e))))}getAllInfo(e){let t=null;return e&&(t="string"==typeof e?e:e.message),{error:e,level:"error",message:[`unhandledRejection: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,rejection:!0,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:Pm.loadavg(),uptime:Pm.uptime()}}getTrace(e){return(e?Lm.parse(e):Lm.get()).map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleRejections=!0;const t=new Fm(e);this.handlers.set(e,t),this.logger.pipe(t)}}_unhandledRejection(e){const t=this.getAllInfo(e),n=this._getRejectionHandlers();let r,i="function"==typeof this.logger.exitOnError?this.logger.exitOnError(e):this.logger.exitOnError;function o(){jm("doExit",i),jm("process._exiting",process._exiting),i&&!process._exiting&&(r&&clearTimeout(r),process.exit(1))}if(!n.length&&i&&(console.warn("winston: exitOnError cannot be true with no rejection handlers."),console.warn("winston: not exiting process."),i=!1),!n||0===n.length)return process.nextTick(o);Dm(n,((e,t)=>{const n=Rm(t),r=e.transport||e;function i(e){return()=>{jm(e),n()}}r._ending=!0,r.once("finish",i("finished")),r.once("error",i("error"))}),(()=>i&&o())),this.logger.log(t),i&&(r=setTimeout(o,3e3))}_getRejectionHandlers(){return this.logger.transports.filter((e=>(e.transport||e).handleRejections))}};function Ym(){if(Gm)return Bm;Gm=1;const{Stream:e,Transform:t}=dg,n=Sm,{LEVEL:r,SPLAT:i}=Ud,o=hm,s=Am,a=Vm,c=lp,l=(Wm||(Wm=1,Um=class{constructor(e){const t=Ym();if("object"!=typeof e||Array.isArray(e)||!(e instanceof t))throw new Error("Logger is required for profiling");this.logger=e,this.start=Date.now()}done(...e){"function"==typeof e[e.length-1]&&(console.warn("Callback function no longer supported as of winston@3.0.0"),e.pop());const t="object"==typeof e[e.length-1]?e.pop():{};return t.level=t.level||"info",t.durationMs=Date.now()-this.start,this.logger.write(t)}}),Um),{warn:u}=sf,d=fm,h=/%[scdjifoO%]/g;class f extends t{constructor(e){super({objectMode:!0}),this.configure(e)}child(e){const t=this;return Object.create(t,{write:{value:function(n){const r=Object.assign({},e,n);n instanceof Error&&(r.stack=n.stack,r.message=n.message),t.write(r)}}})}configure({silent:e,format:t,defaultMeta:n,levels:r,level:i="info",exitOnError:o=!0,transports:c,colors:l,emitErrs:u,formatters:h,padLevels:f,rewriters:p,stripColors:g,exceptionHandlers:m,rejectionHandlers:y}={}){if(this.transports.length&&this.clear(),this.silent=e,this.format=t||this.format||yh()(),this.defaultMeta=n||null,this.levels=r||this.levels||d.npm.levels,this.level=i,this.exceptions&&this.exceptions.unhandle(),this.rejections&&this.rejections.unhandle(),this.exceptions=new s(this),this.rejections=new a(this),this.profilers={},this.exitOnError=o,c&&(c=Array.isArray(c)?c:[c]).forEach((e=>this.add(e))),l||u||h||f||p||g)throw new Error(["{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.","Use a custom winston.format(function) instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"));m&&this.exceptions.handle(m),y&&this.rejections.handle(y)}isLevelEnabled(e){const t=p(this.levels,e);if(null===t)return!1;const n=p(this.levels,this.level);return null!==n&&(this.transports&&0!==this.transports.length?-1!==this.transports.findIndex((e=>{let r=p(this.levels,e.level);return null===r&&(r=n),r>=t})):n>=t)}log(e,t,...n){if(1===arguments.length)return e[r]=e.level,this._addDefaultMeta(e),this.write(e),this;if(2===arguments.length)return t&&"object"==typeof t?(t[r]=t.level=e,this._addDefaultMeta(t),this.write(t),this):(t={[r]:e,level:e,message:t},this._addDefaultMeta(t),this.write(t),this);const[o]=n;if("object"==typeof o&&null!==o&&!(t&&t.match&&t.match(h))){const s=Object.assign({},this.defaultMeta,o,{[r]:e,[i]:n,level:e,message:t});return o.message&&(s.message=`${s.message} ${o.message}`),o.stack&&(s.stack=o.stack),o.cause&&(s.cause=o.cause),this.write(s),this}return this.write(Object.assign({},this.defaultMeta,{[r]:e,[i]:n,level:e,message:t})),this}_transform(e,t,n){if(this.silent)return n();e[r]||(e[r]=e.level),this.levels[e[r]]||0===this.levels[e[r]]||console.error("[winston] Unknown logger level: %s",e[r]),this._readableState.pipes||console.error("[winston] Attempt to write logs with no transports, which can increase memory usage: %j",e);try{this.push(this.format.transform(e,this.format.options))}finally{this._writableState.sync=!1,n()}}_final(e){const t=this.transports.slice();n(t,((e,t)=>{if(!e||e.finished)return setImmediate(t);e.once("finish",t),e.end()}),e)}add(e){const t=!o(e)||e.log.length>2?new c({transport:e}):e;if(!t._writableState||!t._writableState.objectMode)throw new Error("Transports must WritableStreams in objectMode. Set { objectMode: true }.");return this._onEvent("error",t),this._onEvent("warn",t),this.pipe(t),e.handleExceptions&&this.exceptions.handle(),e.handleRejections&&this.rejections.handle(),this}remove(e){if(!e)return this;let t=e;return(!o(e)||e.log.length>2)&&(t=this.transports.filter((t=>t.transport===e))[0]),t&&this.unpipe(t),this}clear(){return this.unpipe(),this}close(){return this.exceptions.unhandle(),this.rejections.unhandle(),this.clear(),this.emit("close"),this}setLevels(){u.deprecated("setLevels")}query(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};const r={},i=Object.assign({},e.query||{});n(this.transports.filter((e=>!!e.query)),(function(t,n){!function(t,n){e.query&&"function"==typeof t.formatQuery&&(e.query=t.formatQuery(i)),t.query(e,((r,i)=>{if(r)return n(r);"function"==typeof t.formatResults&&(i=t.formatResults(i,e.format)),n(null,i)}))}(t,((e,i)=>{n&&((i=e||i)&&(r[t.name]=i),n()),n=null}))}),(()=>t(null,r)))}stream(t={}){const n=new e,r=[];return n._streams=r,n.destroy=()=>{let e=r.length;for(;e--;)r[e].destroy()},this.transports.filter((e=>!!e.stream)).forEach((e=>{const i=e.stream(t);i&&(r.push(i),i.on("log",(t=>{t.transport=t.transport||[],t.transport.push(e.name),n.emit("log",t)})),i.on("error",(t=>{t.transport=t.transport||[],t.transport.push(e.name),n.emit("error",t)})))})),n}startTimer(){return new l(this)}profile(e,...t){const n=Date.now();if(this.profilers[e]){const r=this.profilers[e];delete this.profilers[e],"function"==typeof t[t.length-2]&&(console.warn("Callback function no longer supported as of winston@3.0.0"),t.pop());const i="object"==typeof t[t.length-1]?t.pop():{};return i.level=i.level||"info",i.durationMs=n-r,i.message=i.message||e,this.write(i)}return this.profilers[e]=n,this}handleExceptions(...e){console.warn("Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()"),this.exceptions.handle(...e)}unhandleExceptions(...e){console.warn("Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()"),this.exceptions.unhandle(...e)}cli(){throw new Error(["Logger.cli() was removed in winston@3.0.0","Use a custom winston.formats.cli() instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"))}_onEvent(e,t){t["__winston"+e]||(t["__winston"+e]=function(n){"error"!==e||this.transports.includes(t)||this.add(t),this.emit(e,n,t)}.bind(this),t.on(e,t["__winston"+e]))}_addDefaultMeta(e){this.defaultMeta&&Object.assign(e,this.defaultMeta)}}function p(e,t){const n=e[t];return n||0===n?n:null}return Object.defineProperty(f.prototype,"transports",{configurable:!1,enumerable:!0,get(){const{pipes:e}=this._readableState;return Array.isArray(e)?e:[e].filter(Boolean)}}),Bm=f}const{LEVEL:Hm}=Ud,zm=fm,qm=Ym(),Km=am("winston:create-logger");var Jm=function(e={}){e.levels=e.levels||zm.npm.levels;class t extends qm{constructor(e){super(e)}}const n=new t(e);return Object.keys(e.levels).forEach((function(e){Km('Define prototype method for "%s"',e),"log"!==e?(t.prototype[e]=function(...t){const r=this||n;if(1===t.length){const[i]=t,o=i&&i.message&&i||{message:i};return o.level=o[Hm]=e,r._addDefaultMeta(o),r.write(o),this||n}return 0===t.length?(r.log(e,""),r):r.log(e,...t)},t.prototype[function(e){return"is"+e.charAt(0).toUpperCase()+e.slice(1)+"Enabled"}(e)]=function(){return(this||n).isLevelEnabled(e)}):console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.')})),n};const Zm=Jm;var Xm=class{constructor(e={}){this.loggers=new Map,this.options=e}add(e,t){if(!this.loggers.has(e)){const n=(t=Object.assign({},t||this.options)).transports||this.options.transports;t.transports=n?Array.isArray(n)?n.slice():[n]:[];const r=Zm(t);r.on("close",(()=>this._delete(e))),this.loggers.set(e,r)}return this.loggers.get(e)}get(e,t){return this.add(e,t)}has(e){return!!this.loggers.has(e)}close(e){if(e)return this._removeLogger(e);this.loggers.forEach(((e,t)=>this._removeLogger(t)))}_removeLogger(e){this.loggers.has(e)&&(this.loggers.get(e).close(),this._delete(e))}_delete(e){this.loggers.delete(e)}};!function(e){const t=ld,{warn:n}=sf;e.version="3.17.0",e.transports=ff,e.config=fm,e.addColors=t.levels,e.format=t.format,e.createLogger=Jm,e.Logger=Ym(),e.ExceptionHandler=Am,e.RejectionHandler=Vm,e.Container=Xm,e.Transport=hp,e.loggers=new e.Container;const r=e.createLogger();Object.keys(e.config.npm.levels).concat(["log","query","stream","add","remove","clear","profile","startTimer","handleExceptions","unhandleExceptions","handleRejections","unhandleRejections","configure","child"]).forEach((t=>e[t]=(...e)=>r[t](...e))),Object.defineProperty(e,"level",{get:()=>r.level,set(e){r.level=e}}),Object.defineProperty(e,"exceptions",{get:()=>r.exceptions}),Object.defineProperty(e,"rejections",{get:()=>r.rejections}),["exitOnError"].forEach((t=>{Object.defineProperty(e,t,{get:()=>r[t],set(e){r[t]=e}})})),Object.defineProperty(e,"default",{get:()=>({exceptionHandlers:r.exceptionHandlers,rejectionHandlers:r.rejectionHandlers,transports:r.transports})}),n.deprecated(e,"setLevels"),n.forFunctions(e,"useFormat",["cli"]),n.forProperties(e,"useFormat",["padLevels","stripColors"]),n.forFunctions(e,"deprecated",["addRewriter","addFilter","clone","extend"]),n.forProperties(e,"deprecated",["emitErrs","levelLength"])}(cd);var Qm=Vu(cd),ey={exports:{}};!function(e,t){var n=u;function r(e,t){return function(e,t){var r;if(void 0===(r="passthrough"!==t.algorithm?n.createHash(t.algorithm):new l).write&&(r.write=r.update,r.end=r.update),c(t,r).dispatch(e),r.update||r.end(""),r.digest)return r.digest("buffer"===t.encoding?void 0:t.encoding);var i=r.read();return"buffer"===t.encoding?i:i.toString(t.encoding)}(e,t=s(e,t))}(t=ey.exports=r).sha1=function(e){return r(e)},t.keys=function(e){return r(e,{excludeValues:!0,algorithm:"sha1",encoding:"hex"})},t.MD5=function(e){return r(e,{algorithm:"md5",encoding:"hex"})},t.keysMD5=function(e){return r(e,{algorithm:"md5",encoding:"hex",excludeValues:!0})};var i=n.getHashes?n.getHashes().slice():["sha1","md5"];i.push("passthrough");var o=["buffer","hex","binary","base64"];function s(e,t){t=t||{};var n={};if(n.algorithm=t.algorithm||"sha1",n.encoding=t.encoding||"hex",n.excludeValues=!!t.excludeValues,n.algorithm=n.algorithm.toLowerCase(),n.encoding=n.encoding.toLowerCase(),n.ignoreUnknown=!0===t.ignoreUnknown,n.respectType=!1!==t.respectType,n.respectFunctionNames=!1!==t.respectFunctionNames,n.respectFunctionProperties=!1!==t.respectFunctionProperties,n.unorderedArrays=!0===t.unorderedArrays,n.unorderedSets=!1!==t.unorderedSets,n.unorderedObjects=!1!==t.unorderedObjects,n.replacer=t.replacer||void 0,n.excludeKeys=t.excludeKeys||void 0,void 0===e)throw new Error("Object argument required.");for(var r=0;r<i.length;++r)i[r].toLowerCase()===n.algorithm.toLowerCase()&&(n.algorithm=i[r]);if(-1===i.indexOf(n.algorithm))throw new Error('Algorithm "'+n.algorithm+'" not supported. supported values: '+i.join(", "));if(-1===o.indexOf(n.encoding)&&"passthrough"!==n.algorithm)throw new Error('Encoding "'+n.encoding+'" not supported. supported values: '+o.join(", "));return n}function a(e){return"function"==typeof e&&null!=/^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i.exec(Function.prototype.toString.call(e))}function c(e,t,n){n=n||[];var r=function(e){return t.update?t.update(e,"utf8"):t.write(e,"utf8")};return{dispatch:function(t){e.replacer&&(t=e.replacer(t));var n=typeof t;return null===t&&(n="null"),this["_"+n](t)},_object:function(t){var i,o=Object.prototype.toString.call(t),s=/\[object (.*)\]/i.exec(o);if(s=(s=s?s[1]:"unknown:["+o+"]").toLowerCase(),(i=n.indexOf(t))>=0)return this.dispatch("[CIRCULAR:"+i+"]");if(n.push(t),"undefined"!=typeof Buffer&&Buffer.isBuffer&&Buffer.isBuffer(t))return r("buffer:"),r(t);if("object"===s||"function"===s||"asyncfunction"===s){var c=Object.keys(t);e.unorderedObjects&&(c=c.sort()),!1===e.respectType||a(t)||c.splice(0,0,"prototype","__proto__","constructor"),e.excludeKeys&&(c=c.filter((function(t){return!e.excludeKeys(t)}))),r("object:"+c.length+":");var l=this;return c.forEach((function(n){l.dispatch(n),r(":"),e.excludeValues||l.dispatch(t[n]),r(",")}))}if(!this["_"+s]){if(e.ignoreUnknown)return r("["+s+"]");throw new Error('Unknown object type "'+s+'"')}this["_"+s](t)},_array:function(t,i){i=void 0!==i?i:!1!==e.unorderedArrays;var o=this;if(r("array:"+t.length+":"),!i||t.length<=1)return t.forEach((function(e){return o.dispatch(e)}));var s=[],a=t.map((function(t){var r=new l,i=n.slice();return c(e,r,i).dispatch(t),s=s.concat(i.slice(n.length)),r.read().toString()}));return n=n.concat(s),a.sort(),this._array(a,!1)},_date:function(e){return r("date:"+e.toJSON())},_symbol:function(e){return r("symbol:"+e.toString())},_error:function(e){return r("error:"+e.toString())},_boolean:function(e){return r("bool:"+e.toString())},_string:function(e){r("string:"+e.length+":"),r(e.toString())},_function:function(t){r("fn:"),a(t)?this.dispatch("[native]"):this.dispatch(t.toString()),!1!==e.respectFunctionNames&&this.dispatch("function-name:"+String(t.name)),e.respectFunctionProperties&&this._object(t)},_number:function(e){return r("number:"+e.toString())},_xml:function(e){return r("xml:"+e.toString())},_null:function(){return r("Null")},_undefined:function(){return r("Undefined")},_regexp:function(e){return r("regex:"+e.toString())},_uint8array:function(e){return r("uint8array:"),this.dispatch(Array.prototype.slice.call(e))},_uint8clampedarray:function(e){return r("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(e))},_int8array:function(e){return r("int8array:"),this.dispatch(Array.prototype.slice.call(e))},_uint16array:function(e){return r("uint16array:"),this.dispatch(Array.prototype.slice.call(e))},_int16array:function(e){return r("int16array:"),this.dispatch(Array.prototype.slice.call(e))},_uint32array:function(e){return r("uint32array:"),this.dispatch(Array.prototype.slice.call(e))},_int32array:function(e){return r("int32array:"),this.dispatch(Array.prototype.slice.call(e))},_float32array:function(e){return r("float32array:"),this.dispatch(Array.prototype.slice.call(e))},_float64array:function(e){return r("float64array:"),this.dispatch(Array.prototype.slice.call(e))},_arraybuffer:function(e){return r("arraybuffer:"),this.dispatch(new Uint8Array(e))},_url:function(e){return r("url:"+e.toString())},_map:function(t){r("map:");var n=Array.from(t);return this._array(n,!1!==e.unorderedSets)},_set:function(t){r("set:");var n=Array.from(t);return this._array(n,!1!==e.unorderedSets)},_file:function(e){return r("file:"),this.dispatch([e.name,e.size,e.type,e.lastModfied])},_blob:function(){if(e.ignoreUnknown)return r("[blob]");throw Error('Hashing Blob objects is currently not supported\n(see https://github.com/puleos/object-hash/issues/26)\nUse "options.replacer" or "options.ignoreUnknown"\n')},_domwindow:function(){return r("domwindow")},_bigint:function(e){return r("bigint:"+e.toString())},_process:function(){return r("process")},_timer:function(){return r("timer")},_pipe:function(){return r("pipe")},_tcp:function(){return r("tcp")},_udp:function(){return r("udp")},_tty:function(){return r("tty")},_statwatcher:function(){return r("statwatcher")},_securecontext:function(){return r("securecontext")},_connection:function(){return r("connection")},_zlib:function(){return r("zlib")},_context:function(){return r("context")},_nodescript:function(){return r("nodescript")},_httpparser:function(){return r("httpparser")},_dataview:function(){return r("dataview")},_signal:function(){return r("signal")},_fsevent:function(){return r("fsevent")},_tlswrap:function(){return r("tlswrap")}}}function l(){return{buf:"",write:function(e){this.buf+=e},end:function(e){this.buf+=e},read:function(){return this.buf}}}t.writeToStream=function(e,t,n){return void 0===n&&(n=t,t={}),c(t=s(e,t),n).dispatch(e)}}(0,ey.exports);var ty,ny,ry,iy={exports:{}};function oy(){return ty||(ty=1,(e=iy).exports=function(){var t,n;function r(){return t.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function a(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return!1;return!0}function c(e){return void 0===e}function l(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,r=[],i=e.length;for(n=0;n<i;++n)r.push(t(e[n],n));return r}function h(e,t){for(var n in t)s(t,n)&&(e[n]=t[n]);return s(t,"toString")&&(e.toString=t.toString),s(t,"valueOf")&&(e.valueOf=t.valueOf),e}function f(e,t,n,r){return Dt(e,t,n,r,!0).utc()}function p(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function g(e){var t=null,r=!1,i=e._d&&!isNaN(e._d.getTime());return i&&(t=p(e),r=n.call(t.parsedDateParts,(function(e){return null!=e})),i=t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&r),e._strict&&(i=i&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour)),null!=Object.isFrozen&&Object.isFrozen(e)?i:(e._isValid=i,e._isValid)}function m(e){var t=f(NaN);return null!=e?h(p(t),e):p(t).userInvalidated=!0,t}n=Array.prototype.some?Array.prototype.some:function(e){var t,n=Object(this),r=n.length>>>0;for(t=0;t<r;t++)if(t in n&&e.call(this,n[t],t,n))return!0;return!1};var y=r.momentProperties=[],v=!1;function b(e,t){var n,r,i,o=y.length;if(c(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),c(t._i)||(e._i=t._i),c(t._f)||(e._f=t._f),c(t._l)||(e._l=t._l),c(t._strict)||(e._strict=t._strict),c(t._tzm)||(e._tzm=t._tzm),c(t._isUTC)||(e._isUTC=t._isUTC),c(t._offset)||(e._offset=t._offset),c(t._pf)||(e._pf=p(t)),c(t._locale)||(e._locale=t._locale),o>0)for(n=0;n<o;n++)c(i=t[r=y[n]])||(e[r]=i);return e}function w(e){b(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function S(e){return e instanceof w||null!=e&&null!=e._isAMomentObject}function _(e){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function I(e,t){var n=!0;return h((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,e),n){var i,o,a,c=[],l=arguments.length;for(o=0;o<l;o++){if(i="","object"==typeof arguments[o]){for(a in i+="\n["+o+"] ",arguments[0])s(arguments[0],a)&&(i+=a+": "+arguments[0][a]+", ");i=i.slice(0,-2)}else i=arguments[o];c.push(i)}_(e+"\nArguments: "+Array.prototype.slice.call(c).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var x,k={};function E(e,t){null!=r.deprecationHandler&&r.deprecationHandler(e,t),k[e]||(_(t),k[e]=!0)}function C(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function $(e,t){var n,r=h({},e);for(n in t)s(t,n)&&(o(e[n])&&o(t[n])?(r[n]={},h(r[n],e[n]),h(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)s(e,n)&&!s(t,n)&&o(e[n])&&(r[n]=h({},r[n]));return r}function O(e){null!=e&&this.set(e)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,x=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)s(e,t)&&n.push(t);return n};function N(e,t,n){var r=""+Math.abs(e),i=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var T=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,A=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,M={},P={};function D(e,t,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),e&&(P[e]=i),t&&(P[t[0]]=function(){return N(i.apply(this,arguments),t[1],t[2])}),n&&(P[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function j(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function R(e,t){return e.isValid()?(t=L(t,e.localeData()),M[t]=M[t]||function(e){var t,n,r=e.match(T);for(t=0,n=r.length;t<n;t++)P[r[t]]?r[t]=P[r[t]]:r[t]=j(r[t]);return function(t){var i,o="";for(i=0;i<n;i++)o+=C(r[i])?r[i].call(t,e):r[i];return o}}(t),M[t](e)):e.localeData().invalidDate()}function L(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(A.lastIndex=0;n>=0&&A.test(e);)e=e.replace(A,r),A.lastIndex=0,n-=1;return e}var F={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function U(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function W(e){var t,n,r={};for(n in e)s(e,n)&&(t=U(n))&&(r[t]=e[n]);return r}var B={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};var G,V=/\d/,Y=/\d\d/,H=/\d{3}/,z=/\d{4}/,q=/[+-]?\d{6}/,K=/\d\d?/,J=/\d\d\d\d?/,Z=/\d\d\d\d\d\d?/,X=/\d{1,3}/,Q=/\d{1,4}/,ee=/[+-]?\d{1,6}/,te=/\d+/,ne=/[+-]?\d+/,re=/Z|[+-]\d\d:?\d\d/gi,ie=/Z|[+-]\d\d(?::?\d\d)?/gi,oe=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,se=/^[1-9]\d?/,ae=/^([1-9]\d|\d)/;function ce(e,t,n){G[e]=C(t)?t:function(e){return e&&n?n:t}}function le(e,t){return s(G,e)?G[e](t._strict,t._locale):new RegExp(function(e){return ue(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,i){return t||n||r||i})))}(e))}function ue(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function de(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function he(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=de(t)),n}G={};var fe={};function pe(e,t){var n,r,i=t;for("string"==typeof e&&(e=[e]),l(t)&&(i=function(e,n){n[t]=he(e)}),r=e.length,n=0;n<r;n++)fe[e[n]]=i}function ge(e,t){pe(e,(function(e,n,r,i){r._w=r._w||{},t(e,r._w,r,i)}))}function me(e,t,n){null!=t&&s(fe,e)&&fe[e](t,n._a,n,e)}function ye(e){return e%4==0&&e%100!=0||e%400==0}var ve=0,be=1,we=2,Se=3,_e=4,Ie=5,xe=6,ke=7,Ee=8;function Ce(e){return ye(e)?366:365}D("Y",0,0,(function(){var e=this.year();return e<=9999?N(e,4):"+"+e})),D(0,["YY",2],0,(function(){return this.year()%100})),D(0,["YYYY",4],0,"year"),D(0,["YYYYY",5],0,"year"),D(0,["YYYYYY",6,!0],0,"year"),ce("Y",ne),ce("YY",K,Y),ce("YYYY",Q,z),ce("YYYYY",ee,q),ce("YYYYYY",ee,q),pe(["YYYYY","YYYYYY"],ve),pe("YYYY",(function(e,t){t[ve]=2===e.length?r.parseTwoDigitYear(e):he(e)})),pe("YY",(function(e,t){t[ve]=r.parseTwoDigitYear(e)})),pe("Y",(function(e,t){t[ve]=parseInt(e,10)})),r.parseTwoDigitYear=function(e){return he(e)+(he(e)>68?1900:2e3)};var $e,Oe=Ne("FullYear",!0);function Ne(e,t){return function(n){return null!=n?(Ae(this,e,n),r.updateOffset(this,t),this):Te(this,e)}}function Te(e,t){if(!e.isValid())return NaN;var n=e._d,r=e._isUTC;switch(t){case"Milliseconds":return r?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return r?n.getUTCSeconds():n.getSeconds();case"Minutes":return r?n.getUTCMinutes():n.getMinutes();case"Hours":return r?n.getUTCHours():n.getHours();case"Date":return r?n.getUTCDate():n.getDate();case"Day":return r?n.getUTCDay():n.getDay();case"Month":return r?n.getUTCMonth():n.getMonth();case"FullYear":return r?n.getUTCFullYear():n.getFullYear();default:return NaN}}function Ae(e,t,n){var r,i,o,s,a;if(e.isValid()&&!isNaN(n)){switch(r=e._d,i=e._isUTC,t){case"Milliseconds":return void(i?r.setUTCMilliseconds(n):r.setMilliseconds(n));case"Seconds":return void(i?r.setUTCSeconds(n):r.setSeconds(n));case"Minutes":return void(i?r.setUTCMinutes(n):r.setMinutes(n));case"Hours":return void(i?r.setUTCHours(n):r.setHours(n));case"Date":return void(i?r.setUTCDate(n):r.setDate(n));case"FullYear":break;default:return}o=n,s=e.month(),a=29!==(a=e.date())||1!==s||ye(o)?a:28,i?r.setUTCFullYear(o,s,a):r.setFullYear(o,s,a)}}function Me(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=function(e,t){return(e%t+t)%t}(t,12);return e+=(t-n)/12,1===n?ye(e)?29:28:31-n%7%2}$e=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},D("M",["MM",2],"Mo",(function(){return this.month()+1})),D("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),D("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),ce("M",K,se),ce("MM",K,Y),ce("MMM",(function(e,t){return t.monthsShortRegex(e)})),ce("MMMM",(function(e,t){return t.monthsRegex(e)})),pe(["M","MM"],(function(e,t){t[be]=he(e)-1})),pe(["MMM","MMMM"],(function(e,t,n,r){var i=n._locale.monthsParse(e,r,n._strict);null!=i?t[be]=i:p(n).invalidMonth=e}));var Pe="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),De="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),je=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Re=oe,Le=oe;function Fe(e,t,n){var r,i,o,s=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)o=f([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(o,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(o,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=$e.call(this._shortMonthsParse,s))?i:null:-1!==(i=$e.call(this._longMonthsParse,s))?i:null:"MMM"===t?-1!==(i=$e.call(this._shortMonthsParse,s))||-1!==(i=$e.call(this._longMonthsParse,s))?i:null:-1!==(i=$e.call(this._longMonthsParse,s))||-1!==(i=$e.call(this._shortMonthsParse,s))?i:null}function Ue(e,t){if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=he(t);else if(!l(t=e.localeData().monthsParse(t)))return e;var n=t,r=e.date();return r=r<29?r:Math.min(r,Me(e.year(),n)),e._isUTC?e._d.setUTCMonth(n,r):e._d.setMonth(n,r),e}function We(e){return null!=e?(Ue(this,e),r.updateOffset(this,!0),this):Te(this,"Month")}function Be(){function e(e,t){return t.length-e.length}var t,n,r,i,o=[],s=[],a=[];for(t=0;t<12;t++)n=f([2e3,t]),r=ue(this.monthsShort(n,"")),i=ue(this.months(n,"")),o.push(r),s.push(i),a.push(i),a.push(r);o.sort(e),s.sort(e),a.sort(e),this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Ge(e,t,n,r,i,o,s){var a;return e<100&&e>=0?(a=new Date(e+400,t,n,r,i,o,s),isFinite(a.getFullYear())&&a.setFullYear(e)):a=new Date(e,t,n,r,i,o,s),a}function Ve(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ye(e,t,n){var r=7+t-n;return-(7+Ve(e,0,r).getUTCDay()-t)%7+r-1}function He(e,t,n,r,i){var o,s,a=1+7*(t-1)+(7+n-r)%7+Ye(e,r,i);return a<=0?s=Ce(o=e-1)+a:a>Ce(e)?(o=e+1,s=a-Ce(e)):(o=e,s=a),{year:o,dayOfYear:s}}function ze(e,t,n){var r,i,o=Ye(e.year(),t,n),s=Math.floor((e.dayOfYear()-o-1)/7)+1;return s<1?r=s+qe(i=e.year()-1,t,n):s>qe(e.year(),t,n)?(r=s-qe(e.year(),t,n),i=e.year()+1):(i=e.year(),r=s),{week:r,year:i}}function qe(e,t,n){var r=Ye(e,t,n),i=Ye(e+1,t,n);return(Ce(e)-r+i)/7}D("w",["ww",2],"wo","week"),D("W",["WW",2],"Wo","isoWeek"),ce("w",K,se),ce("ww",K,Y),ce("W",K,se),ce("WW",K,Y),ge(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=he(e)}));function Ke(e,t){return e.slice(t,7).concat(e.slice(0,t))}D("d",0,"do","day"),D("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),D("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),D("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),D("e",0,0,"weekday"),D("E",0,0,"isoWeekday"),ce("d",K),ce("e",K),ce("E",K),ce("dd",(function(e,t){return t.weekdaysMinRegex(e)})),ce("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),ce("dddd",(function(e,t){return t.weekdaysRegex(e)})),ge(["dd","ddd","dddd"],(function(e,t,n,r){var i=n._locale.weekdaysParse(e,r,n._strict);null!=i?t.d=i:p(n).invalidWeekday=e})),ge(["d","e","E"],(function(e,t,n,r){t[r]=he(e)}));var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Qe=oe,et=oe,tt=oe;function nt(e,t,n){var r,i,o,s=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)o=f([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(o,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=$e.call(this._weekdaysParse,s))?i:null:"ddd"===t?-1!==(i=$e.call(this._shortWeekdaysParse,s))?i:null:-1!==(i=$e.call(this._minWeekdaysParse,s))?i:null:"dddd"===t?-1!==(i=$e.call(this._weekdaysParse,s))||-1!==(i=$e.call(this._shortWeekdaysParse,s))||-1!==(i=$e.call(this._minWeekdaysParse,s))?i:null:"ddd"===t?-1!==(i=$e.call(this._shortWeekdaysParse,s))||-1!==(i=$e.call(this._weekdaysParse,s))||-1!==(i=$e.call(this._minWeekdaysParse,s))?i:null:-1!==(i=$e.call(this._minWeekdaysParse,s))||-1!==(i=$e.call(this._weekdaysParse,s))||-1!==(i=$e.call(this._shortWeekdaysParse,s))?i:null}function rt(){function e(e,t){return t.length-e.length}var t,n,r,i,o,s=[],a=[],c=[],l=[];for(t=0;t<7;t++)n=f([2e3,1]).day(t),r=ue(this.weekdaysMin(n,"")),i=ue(this.weekdaysShort(n,"")),o=ue(this.weekdays(n,"")),s.push(r),a.push(i),c.push(o),l.push(r),l.push(i),l.push(o);s.sort(e),a.sort(e),c.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function it(){return this.hours()%12||12}function ot(e,t){D(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function st(e,t){return t._meridiemParse}D("H",["HH",2],0,"hour"),D("h",["hh",2],0,it),D("k",["kk",2],0,(function(){return this.hours()||24})),D("hmm",0,0,(function(){return""+it.apply(this)+N(this.minutes(),2)})),D("hmmss",0,0,(function(){return""+it.apply(this)+N(this.minutes(),2)+N(this.seconds(),2)})),D("Hmm",0,0,(function(){return""+this.hours()+N(this.minutes(),2)})),D("Hmmss",0,0,(function(){return""+this.hours()+N(this.minutes(),2)+N(this.seconds(),2)})),ot("a",!0),ot("A",!1),ce("a",st),ce("A",st),ce("H",K,ae),ce("h",K,se),ce("k",K,se),ce("HH",K,Y),ce("hh",K,Y),ce("kk",K,Y),ce("hmm",J),ce("hmmss",Z),ce("Hmm",J),ce("Hmmss",Z),pe(["H","HH"],Se),pe(["k","kk"],(function(e,t){var n=he(e);t[Se]=24===n?0:n})),pe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),pe(["h","hh"],(function(e,t,n){t[Se]=he(e),p(n).bigHour=!0})),pe("hmm",(function(e,t,n){var r=e.length-2;t[Se]=he(e.substr(0,r)),t[_e]=he(e.substr(r)),p(n).bigHour=!0})),pe("hmmss",(function(e,t,n){var r=e.length-4,i=e.length-2;t[Se]=he(e.substr(0,r)),t[_e]=he(e.substr(r,2)),t[Ie]=he(e.substr(i)),p(n).bigHour=!0})),pe("Hmm",(function(e,t){var n=e.length-2;t[Se]=he(e.substr(0,n)),t[_e]=he(e.substr(n))})),pe("Hmmss",(function(e,t){var n=e.length-4,r=e.length-2;t[Se]=he(e.substr(0,n)),t[_e]=he(e.substr(n,2)),t[Ie]=he(e.substr(r))}));var at=Ne("Hours",!0);var ct,lt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Pe,monthsShort:De,week:{dow:0,doy:6},weekdays:Je,weekdaysMin:Xe,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},ut={},dt={};function ht(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n<r;n+=1)if(e[n]!==t[n])return n;return r}function ft(e){return e?e.toLowerCase().replace("_","-"):e}function pt(t){var n=null;if(void 0===ut[t]&&e&&e.exports&&function(e){return!(!e||!e.match("^[^/\\\\]*$"))}(t))try{n=ct._abbr,function(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}("./locale/"+t),gt(n)}catch(e){ut[t]=null}return ut[t]}function gt(e,t){var n;return e&&((n=c(t)?yt(e):mt(e,t))?ct=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ct._abbr}function mt(e,t){if(null!==t){var n,r=lt;if(t.abbr=e,null!=ut[e])E("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=ut[e]._config;else if(null!=t.parentLocale)if(null!=ut[t.parentLocale])r=ut[t.parentLocale]._config;else{if(null==(n=pt(t.parentLocale)))return dt[t.parentLocale]||(dt[t.parentLocale]=[]),dt[t.parentLocale].push({name:e,config:t}),null;r=n._config}return ut[e]=new O($(r,t)),dt[e]&&dt[e].forEach((function(e){mt(e.name,e.config)})),gt(e),ut[e]}return delete ut[e],null}function yt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ct;if(!i(e)){if(t=pt(e))return t;e=[e]}return function(e){for(var t,n,r,i,o=0;o<e.length;){for(t=(i=ft(e[o]).split("-")).length,n=(n=ft(e[o+1]))?n.split("-"):null;t>0;){if(r=pt(i.slice(0,t).join("-")))return r;if(n&&n.length>=t&&ht(i,n)>=t-1)break;t--}o++}return ct}(e)}function vt(e){var t,n=e._a;return n&&-2===p(e).overflow&&(t=n[be]<0||n[be]>11?be:n[we]<1||n[we]>Me(n[ve],n[be])?we:n[Se]<0||n[Se]>24||24===n[Se]&&(0!==n[_e]||0!==n[Ie]||0!==n[xe])?Se:n[_e]<0||n[_e]>59?_e:n[Ie]<0||n[Ie]>59?Ie:n[xe]<0||n[xe]>999?xe:-1,p(e)._overflowDayOfYear&&(t<ve||t>we)&&(t=we),p(e)._overflowWeeks&&-1===t&&(t=ke),p(e)._overflowWeekday&&-1===t&&(t=Ee),p(e).overflow=t),e}var bt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,St=/Z|[+-]\d\d(?::?\d\d)?/,_t=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],It=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],xt=/^\/?Date\((-?\d+)/i,kt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Et={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ct(e){var t,n,r,i,o,s,a=e._i,c=bt.exec(a)||wt.exec(a),l=_t.length,u=It.length;if(c){for(p(e).iso=!0,t=0,n=l;t<n;t++)if(_t[t][1].exec(c[1])){i=_t[t][0],r=!1!==_t[t][2];break}if(null==i)return void(e._isValid=!1);if(c[3]){for(t=0,n=u;t<n;t++)if(It[t][1].exec(c[3])){o=(c[2]||" ")+It[t][0];break}if(null==o)return void(e._isValid=!1)}if(!r&&null!=o)return void(e._isValid=!1);if(c[4]){if(!St.exec(c[4]))return void(e._isValid=!1);s="Z"}e._f=i+(o||"")+(s||""),Mt(e)}else e._isValid=!1}function $t(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function Ot(e){var t,n=kt.exec(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}(e._i));if(n){if(t=function(e,t,n,r,i,o){var s=[$t(e),De.indexOf(t),parseInt(n,10),parseInt(r,10),parseInt(i,10)];return o&&s.push(parseInt(o,10)),s}(n[4],n[3],n[2],n[5],n[6],n[7]),!function(e,t,n){return!e||Ze.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(p(n).weekdayMismatch=!0,n._isValid=!1,!1)}(n[1],t,e))return;e._a=t,e._tzm=function(e,t,n){if(e)return Et[e];if(t)return 0;var r=parseInt(n,10),i=r%100;return(r-i)/100*60+i}(n[8],n[9],n[10]),e._d=Ve.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),p(e).rfc2822=!0}else e._isValid=!1}function Nt(e,t,n){return null!=e?e:null!=t?t:n}function Tt(e){var t=new Date(r.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function At(e){var t,n,r,i,o,s=[];if(!e._d){for(r=Tt(e),e._w&&null==e._a[we]&&null==e._a[be]&&function(e){var t,n,r,i,o,s,a,c,l;null!=(t=e._w).GG||null!=t.W||null!=t.E?(o=1,s=4,n=Nt(t.GG,e._a[ve],ze(jt(),1,4).year),r=Nt(t.W,1),((i=Nt(t.E,1))<1||i>7)&&(c=!0)):(o=e._locale._week.dow,s=e._locale._week.doy,l=ze(jt(),o,s),n=Nt(t.gg,e._a[ve],l.year),r=Nt(t.w,l.week),null!=t.d?((i=t.d)<0||i>6)&&(c=!0):null!=t.e?(i=t.e+o,(t.e<0||t.e>6)&&(c=!0)):i=o),r<1||r>qe(n,o,s)?p(e)._overflowWeeks=!0:null!=c?p(e)._overflowWeekday=!0:(a=He(n,r,i,o,s),e._a[ve]=a.year,e._dayOfYear=a.dayOfYear)}(e),null!=e._dayOfYear&&(o=Nt(e._a[ve],r[ve]),(e._dayOfYear>Ce(o)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),n=Ve(o,0,e._dayOfYear),e._a[be]=n.getUTCMonth(),e._a[we]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=r[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Se]&&0===e._a[_e]&&0===e._a[Ie]&&0===e._a[xe]&&(e._nextDay=!0,e._a[Se]=0),e._d=(e._useUTC?Ve:Ge).apply(null,s),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Se]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(p(e).weekdayMismatch=!0)}}function Mt(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],p(e).empty=!0;var t,n,i,o,s,a,c,l=""+e._i,u=l.length,d=0;for(c=(i=L(e._f,e._locale).match(T)||[]).length,t=0;t<c;t++)o=i[t],(n=(l.match(le(o,e))||[])[0])&&((s=l.substr(0,l.indexOf(n))).length>0&&p(e).unusedInput.push(s),l=l.slice(l.indexOf(n)+n.length),d+=n.length),P[o]?(n?p(e).empty=!1:p(e).unusedTokens.push(o),me(o,n,e)):e._strict&&!n&&p(e).unusedTokens.push(o);p(e).charsLeftOver=u-d,l.length>0&&p(e).unusedInput.push(l),e._a[Se]<=12&&!0===p(e).bigHour&&e._a[Se]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[Se]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[Se],e._meridiem),null!==(a=p(e).era)&&(e._a[ve]=e._locale.erasConvertYear(a,e._a[ve])),At(e),vt(e)}else Ot(e);else Ct(e)}function Pt(e){var t=e._i,n=e._f;return e._locale=e._locale||yt(e._l),null===t||void 0===n&&""===t?m({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),S(t)?new w(vt(t)):(u(t)?e._d=t:i(n)?function(e){var t,n,r,i,o,s,a=!1,c=e._f.length;if(0===c)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;i<c;i++)o=0,s=!1,t=b({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Mt(t),g(t)&&(s=!0),o+=p(t).charsLeftOver,o+=10*p(t).unusedTokens.length,p(t).score=o,a?o<r&&(r=o,n=t):(null==r||o<r||s)&&(r=o,n=t,s&&(a=!0));h(e,n||t)}(e):n?Mt(e):function(e){var t=e._i;c(t)?e._d=new Date(r.now()):u(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=xt.exec(e._i);null===t?(Ct(e),!1===e._isValid&&(delete e._isValid,Ot(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:r.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):i(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),At(e)):o(t)?function(e){if(!e._d){var t=W(e._i),n=void 0===t.day?t.date:t.day;e._a=d([t.year,t.month,n,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),At(e)}}(e):l(t)?e._d=new Date(t):r.createFromInputFallback(e)}(e),g(e)||(e._d=null),e))}function Dt(e,t,n,r,s){var c={};return!0!==t&&!1!==t||(r=t,t=void 0),!0!==n&&!1!==n||(r=n,n=void 0),(o(e)&&a(e)||i(e)&&0===e.length)&&(e=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=s,c._l=n,c._i=e,c._f=t,c._strict=r,function(e){var t=new w(vt(Pt(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}(c)}function jt(e,t,n,r){return Dt(e,t,n,r,!1)}r.createFromInputFallback=I("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Rt=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=jt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:m()})),Lt=I("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=jt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:m()}));function Ft(e,t){var n,r;if(1===t.length&&i(t[0])&&(t=t[0]),!t.length)return jt();for(n=t[0],r=1;r<t.length;++r)t[r].isValid()&&!t[r][e](n)||(n=t[r]);return n}var Ut=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Wt(e){var t,n,r=!1,i=Ut.length;for(t in e)if(s(e,t)&&(-1===$e.call(Ut,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<i;++n)if(e[Ut[n]]){if(r)return!1;parseFloat(e[Ut[n]])!==he(e[Ut[n]])&&(r=!0)}return!0}function Bt(e){var t=W(e),n=t.year||0,r=t.quarter||0,i=t.month||0,o=t.week||t.isoWeek||0,s=t.day||0,a=t.hour||0,c=t.minute||0,l=t.second||0,u=t.millisecond||0;this._isValid=Wt(t),this._milliseconds=+u+1e3*l+6e4*c+1e3*a*60*60,this._days=+s+7*o,this._months=+i+3*r+12*n,this._data={},this._locale=yt(),this._bubble()}function Gt(e){return e instanceof Bt}function Vt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Yt(e,t){D(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+N(~~(e/60),2)+t+N(~~e%60,2)}))}Yt("Z",":"),Yt("ZZ",""),ce("Z",ie),ce("ZZ",ie),pe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=zt(ie,e)}));var Ht=/([\+\-]|\d\d)/gi;function zt(e,t){var n,r,i=(t||"").match(e);return null===i?null:0===(r=60*(n=((i[i.length-1]||[])+"").match(Ht)||["-",0,0])[1]+he(n[2]))?0:"+"===n[0]?r:-r}function qt(e,t){var n,i;return t._isUTC?(n=t.clone(),i=(S(e)||u(e)?e.valueOf():jt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),r.updateOffset(n,!1),n):jt(e).local()}function Kt(e){return-Math.round(e._d.getTimezoneOffset())}function Jt(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Zt=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Xt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Qt(e,t){var n,r,i,o=e,a=null;return Gt(e)?o={ms:e._milliseconds,d:e._days,M:e._months}:l(e)||!isNaN(+e)?(o={},t?o[t]=+e:o.milliseconds=+e):(a=Zt.exec(e))?(n="-"===a[1]?-1:1,o={y:0,d:he(a[we])*n,h:he(a[Se])*n,m:he(a[_e])*n,s:he(a[Ie])*n,ms:he(Vt(1e3*a[xe]))*n}):(a=Xt.exec(e))?(n="-"===a[1]?-1:1,o={y:en(a[2],n),M:en(a[3],n),w:en(a[4],n),d:en(a[5],n),h:en(a[6],n),m:en(a[7],n),s:en(a[8],n)}):null==o?o={}:"object"==typeof o&&("from"in o||"to"in o)&&(i=function(e,t){var n;return e.isValid()&&t.isValid()?(t=qt(t,e),e.isBefore(t)?n=tn(e,t):((n=tn(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}(jt(o.from),jt(o.to)),(o={}).ms=i.milliseconds,o.M=i.months),r=new Bt(o),Gt(e)&&s(e,"_locale")&&(r._locale=e._locale),Gt(e)&&s(e,"_isValid")&&(r._isValid=e._isValid),r}function en(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function tn(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function nn(e,t){return function(n,r){var i;return null===r||isNaN(+r)||(E(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),rn(this,Qt(n,r),e),this}}function rn(e,t,n,i){var o=t._milliseconds,s=Vt(t._days),a=Vt(t._months);e.isValid()&&(i=null==i||i,a&&Ue(e,Te(e,"Month")+a*n),s&&Ae(e,"Date",Te(e,"Date")+s*n),o&&e._d.setTime(e._d.valueOf()+o*n),i&&r.updateOffset(e,s||a))}Qt.fn=Bt.prototype,Qt.invalid=function(){return Qt(NaN)};var on=nn(1,"add"),sn=nn(-1,"subtract");function an(e){return"string"==typeof e||e instanceof String}function cn(e){return S(e)||u(e)||an(e)||l(e)||function(e){var t=i(e),n=!1;return t&&(n=0===e.filter((function(t){return!l(t)&&an(e)})).length),t&&n}(e)||function(e){var t,n,r=o(e)&&!a(e),i=!1,c=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],l=c.length;for(t=0;t<l;t+=1)n=c[t],i=i||s(e,n);return r&&i}(e)||null==e}function ln(e){var t,n=o(e)&&!a(e),r=!1,i=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<i.length;t+=1)r=r||s(e,i[t]);return n&&r}function un(e,t){if(e.date()<t.date())return-un(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,"months");return-(n+(t-r<0?(t-r)/(r-e.clone().add(n-1,"months")):(t-r)/(e.clone().add(n+1,"months")-r)))||0}function dn(e){var t;return void 0===e?this._locale._abbr:(null!=(t=yt(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var hn=I("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function fn(){return this._locale}var pn=1e3,gn=6e4,mn=60*gn,yn=3506328*mn;function vn(e,t){return(e%t+t)%t}function bn(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-yn:new Date(e,t,n).valueOf()}function wn(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-yn:Date.UTC(e,t,n)}function Sn(e,t){return t.erasAbbrRegex(e)}function _n(){var e,t,n,r,i,o=[],s=[],a=[],c=[],l=this.eras();for(e=0,t=l.length;e<t;++e)n=ue(l[e].name),r=ue(l[e].abbr),i=ue(l[e].narrow),s.push(n),o.push(r),a.push(i),c.push(n),c.push(r),c.push(i);this._erasRegex=new RegExp("^("+c.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+s.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+o.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+a.join("|")+")","i")}function In(e,t){D(0,[e,e.length],0,t)}function xn(e,t,n,r,i){var o;return null==e?ze(this,r,i).year:(t>(o=qe(e,r,i))&&(t=o),kn.call(this,e,t,n,r,i))}function kn(e,t,n,r,i){var o=He(e,t,n,r,i),s=Ve(o.year,0,o.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}D("N",0,0,"eraAbbr"),D("NN",0,0,"eraAbbr"),D("NNN",0,0,"eraAbbr"),D("NNNN",0,0,"eraName"),D("NNNNN",0,0,"eraNarrow"),D("y",["y",1],"yo","eraYear"),D("y",["yy",2],0,"eraYear"),D("y",["yyy",3],0,"eraYear"),D("y",["yyyy",4],0,"eraYear"),ce("N",Sn),ce("NN",Sn),ce("NNN",Sn),ce("NNNN",(function(e,t){return t.erasNameRegex(e)})),ce("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),pe(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var i=n._locale.erasParse(e,r,n._strict);i?p(n).era=i:p(n).invalidEra=e})),ce("y",te),ce("yy",te),ce("yyy",te),ce("yyyy",te),ce("yo",(function(e,t){return t._eraYearOrdinalRegex||te})),pe(["y","yy","yyy","yyyy"],ve),pe(["yo"],(function(e,t,n){var r;n._locale._eraYearOrdinalRegex&&(r=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[ve]=n._locale.eraYearOrdinalParse(e,r):t[ve]=parseInt(e,10)})),D(0,["gg",2],0,(function(){return this.weekYear()%100})),D(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),In("gggg","weekYear"),In("ggggg","weekYear"),In("GGGG","isoWeekYear"),In("GGGGG","isoWeekYear"),ce("G",ne),ce("g",ne),ce("GG",K,Y),ce("gg",K,Y),ce("GGGG",Q,z),ce("gggg",Q,z),ce("GGGGG",ee,q),ce("ggggg",ee,q),ge(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=he(e)})),ge(["gg","GG"],(function(e,t,n,i){t[i]=r.parseTwoDigitYear(e)})),D("Q",0,"Qo","quarter"),ce("Q",V),pe("Q",(function(e,t){t[be]=3*(he(e)-1)})),D("D",["DD",2],"Do","date"),ce("D",K,se),ce("DD",K,Y),ce("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),pe(["D","DD"],we),pe("Do",(function(e,t){t[we]=he(e.match(K)[0])}));var En=Ne("Date",!0);D("DDD",["DDDD",3],"DDDo","dayOfYear"),ce("DDD",X),ce("DDDD",H),pe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=he(e)})),D("m",["mm",2],0,"minute"),ce("m",K,ae),ce("mm",K,Y),pe(["m","mm"],_e);var Cn=Ne("Minutes",!1);D("s",["ss",2],0,"second"),ce("s",K,ae),ce("ss",K,Y),pe(["s","ss"],Ie);var $n,On,Nn=Ne("Seconds",!1);for(D("S",0,0,(function(){return~~(this.millisecond()/100)})),D(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),D(0,["SSS",3],0,"millisecond"),D(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),D(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),D(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),D(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),D(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),D(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),ce("S",X,V),ce("SS",X,Y),ce("SSS",X,H),$n="SSSS";$n.length<=9;$n+="S")ce($n,te);function Tn(e,t){t[xe]=he(1e3*("0."+e))}for($n="S";$n.length<=9;$n+="S")pe($n,Tn);On=Ne("Milliseconds",!1),D("z",0,0,"zoneAbbr"),D("zz",0,0,"zoneName");var An=w.prototype;function Mn(e){return e}An.add=on,An.calendar=function(e,t){1===arguments.length&&(arguments[0]?cn(arguments[0])?(e=arguments[0],t=void 0):ln(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var n=e||jt(),i=qt(n,this).startOf("day"),o=r.calendarFormat(this,i)||"sameElse",s=t&&(C(t[o])?t[o].call(this,n):t[o]);return this.format(s||this.localeData().calendar(o,this,jt(n)))},An.clone=function(){return new w(this)},An.diff=function(e,t,n){var r,i,o;if(!this.isValid())return NaN;if(!(r=qt(e,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),t=U(t)){case"year":o=un(this,r)/12;break;case"month":o=un(this,r);break;case"quarter":o=un(this,r)/3;break;case"second":o=(this-r)/1e3;break;case"minute":o=(this-r)/6e4;break;case"hour":o=(this-r)/36e5;break;case"day":o=(this-r-i)/864e5;break;case"week":o=(this-r-i)/6048e5;break;default:o=this-r}return n?o:de(o)},An.endOf=function(e){var t,n;if(void 0===(e=U(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?wn:bn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=mn-vn(t+(this._isUTC?0:this.utcOffset()*gn),mn)-1;break;case"minute":t=this._d.valueOf(),t+=gn-vn(t,gn)-1;break;case"second":t=this._d.valueOf(),t+=pn-vn(t,pn)-1}return this._d.setTime(t),r.updateOffset(this,!0),this},An.format=function(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=R(this,e);return this.localeData().postformat(t)},An.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||jt(e).isValid())?Qt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.fromNow=function(e){return this.from(jt(),e)},An.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||jt(e).isValid())?Qt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.toNow=function(e){return this.to(jt(),e)},An.get=function(e){return C(this[e=U(e)])?this[e]():this},An.invalidAt=function(){return p(this).overflow},An.isAfter=function(e,t){var n=S(e)?e:jt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=U(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},An.isBefore=function(e,t){var n=S(e)?e:jt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=U(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},An.isBetween=function(e,t,n,r){var i=S(e)?e:jt(e),o=S(t)?t:jt(t);return!!(this.isValid()&&i.isValid()&&o.isValid())&&("("===(r=r||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===r[1]?this.isBefore(o,n):!this.isAfter(o,n))},An.isSame=function(e,t){var n,r=S(e)?e:jt(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=U(t)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},An.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},An.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},An.isValid=function(){return g(this)},An.lang=hn,An.locale=dn,An.localeData=fn,An.max=Lt,An.min=Rt,An.parsingFlags=function(){return h({},p(this))},An.set=function(e,t){if("object"==typeof e){var n,r=function(e){var t,n=[];for(t in e)s(e,t)&&n.push({unit:t,priority:B[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}(e=W(e)),i=r.length;for(n=0;n<i;n++)this[r[n].unit](e[r[n].unit])}else if(C(this[e=U(e)]))return this[e](t);return this},An.startOf=function(e){var t,n;if(void 0===(e=U(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?wn:bn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=vn(t+(this._isUTC?0:this.utcOffset()*gn),mn);break;case"minute":t=this._d.valueOf(),t-=vn(t,gn);break;case"second":t=this._d.valueOf(),t-=vn(t,pn)}return this._d.setTime(t),r.updateOffset(this,!0),this},An.subtract=sn,An.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},An.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},An.toDate=function(){return new Date(this.valueOf())},An.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?R(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):C(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",R(n,"Z")):R(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},An.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r="moment",i="";return this.isLocal()||(r=0===this.utcOffset()?"moment.utc":"moment.parseZone",i="Z"),e="["+r+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=i+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(An[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),An.toJSON=function(){return this.isValid()?this.toISOString():null},An.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},An.unix=function(){return Math.floor(this.valueOf()/1e3)},An.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},An.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},An.eraName=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].name;if(r[e].until<=n&&n<=r[e].since)return r[e].name}return""},An.eraNarrow=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].narrow;if(r[e].until<=n&&n<=r[e].since)return r[e].narrow}return""},An.eraAbbr=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].abbr;if(r[e].until<=n&&n<=r[e].since)return r[e].abbr}return""},An.eraYear=function(){var e,t,n,i,o=this.localeData().eras();for(e=0,t=o.length;e<t;++e)if(n=o[e].since<=o[e].until?1:-1,i=this.clone().startOf("day").valueOf(),o[e].since<=i&&i<=o[e].until||o[e].until<=i&&i<=o[e].since)return(this.year()-r(o[e].since).year())*n+o[e].offset;return this.year()},An.year=Oe,An.isLeapYear=function(){return ye(this.year())},An.weekYear=function(e){return xn.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},An.isoWeekYear=function(e){return xn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},An.quarter=An.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},An.month=We,An.daysInMonth=function(){return Me(this.year(),this.month())},An.week=An.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},An.isoWeek=An.isoWeeks=function(e){var t=ze(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},An.weeksInYear=function(){var e=this.localeData()._week;return qe(this.year(),e.dow,e.doy)},An.weeksInWeekYear=function(){var e=this.localeData()._week;return qe(this.weekYear(),e.dow,e.doy)},An.isoWeeksInYear=function(){return qe(this.year(),1,4)},An.isoWeeksInISOWeekYear=function(){return qe(this.isoWeekYear(),1,4)},An.date=En,An.day=An.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=Te(this,"Day");return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},An.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},An.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},An.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},An.hour=An.hours=at,An.minute=An.minutes=Cn,An.second=An.seconds=Nn,An.millisecond=An.milliseconds=On,An.utcOffset=function(e,t,n){var i,o=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=zt(ie,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(i=Kt(this)),this._offset=e,this._isUTC=!0,null!=i&&this.add(i,"m"),o!==e&&(!t||this._changeInProgress?rn(this,Qt(e-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?o:Kt(this)},An.utc=function(e){return this.utcOffset(0,e)},An.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Kt(this),"m")),this},An.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=zt(re,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},An.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?jt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},An.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},An.isLocal=function(){return!!this.isValid()&&!this._isUTC},An.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},An.isUtc=Jt,An.isUTC=Jt,An.zoneAbbr=function(){return this._isUTC?"UTC":""},An.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},An.dates=I("dates accessor is deprecated. Use date instead.",En),An.months=I("months accessor is deprecated. Use month instead",We),An.years=I("years accessor is deprecated. Use year instead",Oe),An.zone=I("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),An.isDSTShifted=I("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!c(this._isDSTShifted))return this._isDSTShifted;var e,t={};return b(t,this),(t=Pt(t))._a?(e=t._isUTC?f(t._a):jt(t._a),this._isDSTShifted=this.isValid()&&function(e,t){var n,r=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),o=0;for(n=0;n<r;n++)he(e[n])!==he(t[n])&&o++;return o+i}(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}));var Pn=O.prototype;function Dn(e,t,n,r){var i=yt(),o=f().set(r,t);return i[n](o,e)}function jn(e,t,n){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return Dn(e,t,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=Dn(e,r,n,"month");return i}function Rn(e,t,n,r){"boolean"==typeof e?(l(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,l(t)&&(n=t,t=void 0),t=t||"");var i,o=yt(),s=e?o._week.dow:0,a=[];if(null!=n)return Dn(t,(n+s)%7,r,"day");for(i=0;i<7;i++)a[i]=Dn(t,(i+s)%7,r,"day");return a}Pn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return C(r)?r.call(t,n):r},Pn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(T).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},Pn.invalidDate=function(){return this._invalidDate},Pn.ordinal=function(e){return this._ordinal.replace("%d",e)},Pn.preparse=Mn,Pn.postformat=Mn,Pn.relativeTime=function(e,t,n,r){var i=this._relativeTime[n];return C(i)?i(e,t,n,r):i.replace(/%d/i,e)},Pn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return C(n)?n(t):n.replace(/%s/i,t)},Pn.set=function(e){var t,n;for(n in e)s(e,n)&&(C(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Pn.eras=function(){var e,t,n,i=this._eras||yt("en")._eras;for(e=0,t=i.length;e<t;++e)switch("string"==typeof i[e].since&&(n=r(i[e].since).startOf("day"),i[e].since=n.valueOf()),typeof i[e].until){case"undefined":i[e].until=1/0;break;case"string":n=r(i[e].until).startOf("day").valueOf(),i[e].until=n.valueOf()}return i},Pn.erasParse=function(e,t,n){var r,i,o,s,a,c=this.eras();for(e=e.toUpperCase(),r=0,i=c.length;r<i;++r)if(o=c[r].name.toUpperCase(),s=c[r].abbr.toUpperCase(),a=c[r].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(s===e)return c[r];break;case"NNNN":if(o===e)return c[r];break;case"NNNNN":if(a===e)return c[r]}else if([o,s,a].indexOf(e)>=0)return c[r]},Pn.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*n},Pn.erasAbbrRegex=function(e){return s(this,"_erasAbbrRegex")||_n.call(this),e?this._erasAbbrRegex:this._erasRegex},Pn.erasNameRegex=function(e){return s(this,"_erasNameRegex")||_n.call(this),e?this._erasNameRegex:this._erasRegex},Pn.erasNarrowRegex=function(e){return s(this,"_erasNarrowRegex")||_n.call(this),e?this._erasNarrowRegex:this._erasRegex},Pn.months=function(e,t){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||je).test(t)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone},Pn.monthsShort=function(e,t){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[je.test(t)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Pn.monthsParse=function(e,t,n){var r,i,o;if(this._monthsParseExact)return Fe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=f([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(o="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(o.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},Pn.monthsRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||Be.call(this),e?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Pn.monthsShortRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||Be.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=Re),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Pn.week=function(e){return ze(e,this._week.dow,this._week.doy).week},Pn.firstDayOfYear=function(){return this._week.doy},Pn.firstDayOfWeek=function(){return this._week.dow},Pn.weekdays=function(e,t){var n=i(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ke(n,this._week.dow):e?n[e.day()]:n},Pn.weekdaysMin=function(e){return!0===e?Ke(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Pn.weekdaysShort=function(e){return!0===e?Ke(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Pn.weekdaysParse=function(e,t,n){var r,i,o;if(this._weekdaysParseExact)return nt.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=f([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(o.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},Pn.weekdaysRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=Qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Pn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=et),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Pn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=tt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Pn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Pn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},gt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===he(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=I("moment.lang is deprecated. Use moment.locale instead.",gt),r.langData=I("moment.langData is deprecated. Use moment.localeData instead.",yt);var Ln=Math.abs;function Fn(e,t,n,r){var i=Qt(t,n);return e._milliseconds+=r*i._milliseconds,e._days+=r*i._days,e._months+=r*i._months,e._bubble()}function Un(e){return e<0?Math.floor(e):Math.ceil(e)}function Wn(e){return 4800*e/146097}function Bn(e){return 146097*e/4800}function Gn(e){return function(){return this.as(e)}}var Vn=Gn("ms"),Yn=Gn("s"),Hn=Gn("m"),zn=Gn("h"),qn=Gn("d"),Kn=Gn("w"),Jn=Gn("M"),Zn=Gn("Q"),Xn=Gn("y"),Qn=Vn;function er(e){return function(){return this.isValid()?this._data[e]:NaN}}var tr=er("milliseconds"),nr=er("seconds"),rr=er("minutes"),ir=er("hours"),or=er("days"),sr=er("months"),ar=er("years");var cr=Math.round,lr={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ur(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}var dr=Math.abs;function hr(e){return(e>0)-(e<0)||+e}function fr(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,i,o,s,a,c=dr(this._milliseconds)/1e3,l=dr(this._days),u=dr(this._months),d=this.asSeconds();return d?(e=de(c/60),t=de(e/60),c%=60,e%=60,n=de(u/12),u%=12,r=c?c.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",o=hr(this._months)!==hr(d)?"-":"",s=hr(this._days)!==hr(d)?"-":"",a=hr(this._milliseconds)!==hr(d)?"-":"",i+"P"+(n?o+n+"Y":"")+(u?o+u+"M":"")+(l?s+l+"D":"")+(t||e||c?"T":"")+(t?a+t+"H":"")+(e?a+e+"M":"")+(c?a+r+"S":"")):"P0D"}var pr=Bt.prototype;return pr.isValid=function(){return this._isValid},pr.abs=function(){var e=this._data;return this._milliseconds=Ln(this._milliseconds),this._days=Ln(this._days),this._months=Ln(this._months),e.milliseconds=Ln(e.milliseconds),e.seconds=Ln(e.seconds),e.minutes=Ln(e.minutes),e.hours=Ln(e.hours),e.months=Ln(e.months),e.years=Ln(e.years),this},pr.add=function(e,t){return Fn(this,e,t,1)},pr.subtract=function(e,t){return Fn(this,e,t,-1)},pr.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=U(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+Wn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Bn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},pr.asMilliseconds=Vn,pr.asSeconds=Yn,pr.asMinutes=Hn,pr.asHours=zn,pr.asDays=qn,pr.asWeeks=Kn,pr.asMonths=Jn,pr.asQuarters=Zn,pr.asYears=Xn,pr.valueOf=Qn,pr._bubble=function(){var e,t,n,r,i,o=this._milliseconds,s=this._days,a=this._months,c=this._data;return o>=0&&s>=0&&a>=0||o<=0&&s<=0&&a<=0||(o+=864e5*Un(Bn(a)+s),s=0,a=0),c.milliseconds=o%1e3,e=de(o/1e3),c.seconds=e%60,t=de(e/60),c.minutes=t%60,n=de(t/60),c.hours=n%24,s+=de(n/24),a+=i=de(Wn(s)),s-=Un(Bn(i)),r=de(a/12),a%=12,c.days=s,c.months=a,c.years=r,this},pr.clone=function(){return Qt(this)},pr.get=function(e){return e=U(e),this.isValid()?this[e+"s"]():NaN},pr.milliseconds=tr,pr.seconds=nr,pr.minutes=rr,pr.hours=ir,pr.days=or,pr.weeks=function(){return de(this.days()/7)},pr.months=sr,pr.years=ar,pr.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,i=!1,o=lr;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(i=e),"object"==typeof t&&(o=Object.assign({},lr,t),null!=t.s&&null==t.ss&&(o.ss=t.s-1)),r=function(e,t,n,r){var i=Qt(e).abs(),o=cr(i.as("s")),s=cr(i.as("m")),a=cr(i.as("h")),c=cr(i.as("d")),l=cr(i.as("M")),u=cr(i.as("w")),d=cr(i.as("y")),h=o<=n.ss&&["s",o]||o<n.s&&["ss",o]||s<=1&&["m"]||s<n.m&&["mm",s]||a<=1&&["h"]||a<n.h&&["hh",a]||c<=1&&["d"]||c<n.d&&["dd",c];return null!=n.w&&(h=h||u<=1&&["w"]||u<n.w&&["ww",u]),(h=h||l<=1&&["M"]||l<n.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=t,h[3]=+e>0,h[4]=r,ur.apply(null,h)}(this,!i,o,n=this.localeData()),i&&(r=n.pastFuture(+this,r)),n.postformat(r)},pr.toISOString=fr,pr.toString=fr,pr.toJSON=fr,pr.locale=dn,pr.localeData=fn,pr.toIsoString=I("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",fr),pr.lang=hn,D("X",0,0,"unix"),D("x",0,0,"valueOf"),ce("x",ne),ce("X",/[+-]?\d+(\.\d{1,3})?/),pe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),pe("x",(function(e,t,n){n._d=new Date(he(e))})),
|
|
1
|
+
import{config as e}from"dotenv";import{readFile as t,access as n}from"node:fs/promises";import{nanoid as r}from"nanoid";import i from"util";import o from"jsonp";import s from"crypto-js";import{z as a}from"zod";import c from"emittery";import{Parser as l}from"expr-eval";import u,{scryptSync as d,createDecipheriv as h,createHash as f}from"crypto";import{satisfies as p}from"compare-versions";import g from"debug";import m,{mkdir as y,access as v,constants as b,readdir as w,rm as S,readFile as _}from"fs/promises";import I from"minimist";import x,{join as k,dirname as E,resolve as C}from"path";import"node-ipc";import*as $ from"fs";import O from"fs";import N from"tty";import T,{homedir as A,platform as M}from"os";import P from"stream";import D from"buffer";import j from"events";import R from"zlib";import L from"string_decoder";import F from"http";import U from"https";import W from"net";import B from"tls";import G from"dgram";import V,{fileURLToPath as Y}from"url";import H from"node:os";import{spawn as z}from"child_process";import{join as q,resolve as K,dirname as J}from"node:path";import{ImageData as Z,loadImage as X,createCanvas as Q}from"@napi-rs/canvas";var ee;!function(e){e.STARTING="STARTING",e.PENDING="PENDING",e.RUNNING="RUNNING",e.PAUSED="PAUSED",e.DRAINING="DRAINING",e.STOPPED="STOPPED",e.ERROR="ERROR"}(ee||(ee={}));const te="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,ne="object"==typeof self&&self.constructor&&"DedicatedWorkerGlobalScope"===self.constructor.name,re="undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node,ie={};let oe=0,se="";const ae=e=>ie[e]?ie[e]:null,ce=(e,t)=>{const n=ae(e);if(!n)return n;return n.blocks[t]||null},le=e=>{const{recipeId:t,widgetId:n}=e,r=ae(t);if(!r)return null;for(const e in r.blocks){const t=r.blocks[e].gates[n];if(t)return t}return null},ue=(e,t,n)=>{const r=ce(e,t);if(!r)return r;return r.gates[n]},de=(e,t)=>{let n=r(4);for(;ie[n];)n=r(4);const i=(o=e,JSON.parse(JSON.stringify(o)));var o;return i.logs="",i.addLog=e=>{i.logs+=`${(()=>{const e=Date.now();if(e!==oe){const t=new Date;oe=e,se=t.toJSON()}return se})()}:: ${e}\n`},i.dbInfo={...t},ie[n]=i,n},he=e=>{const t=ae(e);if(!t)throw new Error("Recipe not found. Cannot get recipe info.");return{poolId:e,uuid:t.uuid,name:t.name,type:t.dbInfo.recipeType,dbId:t.dbInfo.id,version:t.dbInfo.version,authorId:t.dbInfo.authorId}},fe="interrupt_port",pe="UI:",ge="default";var me,ye,ve,be,we,Se,_e,Ie;let xe;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(me||(me={})),function(e){e[e.Number=0]="Number",e[e.String=1]="String",e[e.ArrayBuffer=2]="ArrayBuffer",e[e.Array=3]="Array",e[e.Boolean=4]="Boolean",e[e.JsonObj=5]="JsonObj",e[e.Anything=6]="Anything",e[e.ImageData=7]="ImageData",e[e.AudioBuffer=8]="AudioBuffer",e[e.Rect=9]="Rect",e[e.Point=10]="Point",e[e.ImageBitmap=11]="ImageBitmap",e[e.BinaryFile=12]="BinaryFile"}(ye||(ye={})),function(e){e.Number="Number",e.String="String",e.ArrayBuffer="ArrayBuffer",e.Array="Array",e.Boolean="Boolean",e.JsonObj="JsonObj",e.Anything="Anything",e.ImageData="ImageData",e.AudioBuffer="AudioBuffer",e.Rect="Rect",e.Point="Point",e.ImageBitmap="ImageBitmap",e.BinaryFile="BinaryFile"}(ve||(ve={})),function(e){e.Javascript="js",e.Python="py",e.Executable="exe"}(be||(be={})),function(e){e.IpcAcknowledge="iack:",e.SocketAcknowledge="sack:",e.AcknowledgeResponse="ackr:",e.ServicesListChanged="update-services",e.SendManifest="send-manifest",e.BroadcastStart="broadcast-start",e.BroadcastEnd="broadcast-end",e.AssumeSession="assume:"}(we||(we={})),function(e){e.GetServices="getServices",e.SubscribeToService="subscribeToService",e.UnsubscribeFromService="unsubscribeFromService",e.GetServiceContents="getServiceContents",e.SocketAckResponse="socketAckResponse",e.ShowSecretsConfigScreen="showSecretsConfigScreen",e.GetMappedSecrets="getMappedSecrets",e.GetSecretContexts="getSecretContexts",e.AddServiceSecret="addServiceSecret",e.OnParentEvent="onParentEvent",e.GetDefaultState="getDefaultState",e.BroadcastEvent="broadcastEvent",e.HubBroadcastEvent="hubBroadcastEvent",e.ServiceManifest="serviceManifest",e.SendToRecipe="sendToRecipe",e.KemuComposerDisconnected="kemu-composer-disconnected",e.GetState="getState",e.SetState="setState",e.SetOutputs="setOutputs",e.UIEvent="uiEvent",e.GetSystemInfo="getSystemInfo",e.InitializeInstance="initializeInstance",e.TerminateInstance="terminateInstance",e.UninstallService="uninstallService",e.ChooseDirectoryDialog="chooseDirectoryDialog",e.ChooseFileDialog="chooseFileDialog",e.SaveRecipeToFile="saveRecipeToFile",e.GetUniqueId="getUniqueId",e.RebootToInstallUpdate="rebootToInstallUpdate",e.GetFileContentFromCacheId="getFileContentFromCacheId",e.GetDecryptedEdgeApiKey="getDecryptedEdgeApiKey",e.GetHubConfig="getHubConfig",e.GetRecipeDecryptedSecretsValues="getRecipeDecryptedSecretsValues",e.GetRecipeSecretMappings="getRecipeSecretMappings",e.AddRecipeSecretMapping="addRecipeSecretMapping",e.DeleteRecipeSecretMapping="deleteRecipeSecretMapping",e.GetHubSecrets="getHubSecrets",e.AddHubSecrets="addHubSecrets",e.DeleteHubSecret="deleteHubSecret"}(Se||(Se={})),function(e){e.SetDependencyPath="setDependencyPath",e.GetDependencyPath="getDependencyPath",e.ParseStringExpression="parseStringExpression",e.GetGlobalVariableNames="getGlobalVariableNames",e.GetGlobalVariableValues="getGlobalVariableValues",e.SetGlobalVariableValues="setGlobalVariableValues"}(_e||(_e={})),function(e){e.IPC="ipc",e.WS="ws"}(Ie||(Ie={}));const ke=()=>{if(!xe)throw new Error("CanvasManager not set");return xe},Ee=e=>{xe=e},Ce=(e,t)=>ke().createCanvas(e,t),$e=e=>te?e.getContext("2d",{willReadFrequently:!0}):e.getContext("2d"),Oe=e=>ke().loadImage(e),Ne="-",Te=`inner${Ne}`,Ae=`outer${Ne}`,Me=`${Ae}input${Ne}`,Pe=`${Ae}output${Ne}`,De=`${Te}input${Ne}`,je=`${Te}output${Ne}`,Re=e=>e===fe,Le=e=>e&&void 0!==e.width&&void 0!==e.height&&void 0!==e.data&&e.data.constructor&&"Uint8ClampedArray"===e.data.constructor.name,Fe=e=>e&&void 0!==e.width&&void 0!==e.height&&void 0!==e.top&&void 0!==e.left&&"number"==typeof e.width&&"number"==typeof e.height&&"number"==typeof e.top&&"number"==typeof e.left,Ue=e=>e&&"number"==typeof e.x&&"number"==typeof e.y,We=e=>"number"==typeof e?ye.Number:"string"==typeof e?ye.String:"boolean"==typeof e?ye.Boolean:Array.isArray(e)?ye.Array:Le(e)?ye.ImageData:e&&void 0!==e.duration&&void 0!==e.length&&void 0!==e.numberOfChannels&&void 0!==e.sampleRate&&"function"==typeof e.getChannelData&&"AudioBuffer"===e.constructor.name?ye.AudioBuffer:e&&void 0!==e.byteLength?ye.ArrayBuffer:Fe(e)?ye.Rect:e&&void 0!==e.x&&void 0!==e.y&&"number"==typeof e.x&&"number"==typeof e.y?ye.Point:(e=>e&&"string"==typeof e.format&&e.data&&e.data instanceof ArrayBuffer)(e)?ye.BinaryFile:ye.JsonObj,Be=e=>{const t={};let n;n=Array.isArray(e)?e[0]:e;for(const e in n){const r=We(n[e]);t[e]=r}return t},Ge=(e,t,n)=>"inner"===e?"input"===t?`${De}${n}`:`${je}${n}`:"input"===t?`${Me}${n}`:`${Pe}${n}`,Ve=e=>{const t=(e||"")?.split("_");if(t.length<3)throw new Error(`Unknown child identifier format [${e}]`);const n=t[0];return{portType:t[1],widgetId:n,portName:t[2]}},Ye=async e=>{try{return new ImageData(e.data,e.width,e.height,{colorSpace:e.colorSpace})}catch(t){console.warn("Failed to create ImageData from info, assuming raw image data",t);return await Oe(e.data)}},He=e=>{const t=(e=>{const t=Ce(e.width,e.height),n=$e(t);if(!n)throw new Error("Failed to get canvas context");n.putImageData(e,0,0);const r=t.toDataURL("image/png");if(!r)throw new Error("Failed to convert canvas to data URL");return r})(e);return t.split(",")[1]},ze=async e=>{const{memoryCanvas:t,finalW:n,finalH:r}=e;let i=e.base64Str;i.startsWith("data:image/")||(i=`data:image/png;base64,${i}`);let o=await Oe(i);return o=(e=>{const{image:t,newWidth:n,newHeight:r}=e;let i=e.resizeCanvas;if(n===t.width&&r===t.height&&t instanceof ImageData)return t;i||(i=Ce(n,r));const o=i.getContext("2d");if(!o)throw new Error("Failed to get canvas context");i.width=n,i.height=r;try{let e;if(t instanceof ImageData){e=Ce(t.width,t.height);const n=e.getContext("2d");if(!n)throw new Error("Failed to get canvas context");n.putImageData(t,0,0)}o.drawImage(e||t,0,0,t.width,t.height,0,0,n,r)}catch(e){throw console.warn("Failed to resize image",e),e}return o.getImageData(0,0,n,r)})({image:o,newWidth:n??o.width,newHeight:r??o.height,resizeCanvas:t}),o};var qe,Ke;!function(e){e.Action="action",e.CustomInput="customInput"}(qe||(qe={})),function(e){e.input="input",e.counter="counter",e.play="play",e.elapsed="elapsed",e.ifGate="ifGate",e.skipEvent="skipEvent",e.between="between",e.map="map",e.parser="parser",e.slider="slider",e.suspend="suspend",e.display="display",e.json="json",e.arrayItem="arrayItem",e.extractImage="extractImage",e.imageConvolution="imageConvolution",e.firstEvent="firstEvent",e.pixelDraw="pixelDraw",e.randomBetween="randomBetween",e.arrayCombine="arrayCombine",e.clock="clock",e.delay="delay",e.multiplication="multiplication",e.object="object",e.widgetGroup="widgetGroup",e.script="script",e.base64ToImageData="base64ToImageData",e.jsonParse="jsonParse",e.text="text",e.imageCrop="imageCrop",e.imageResize="imageResize",e.value="value",e.imageWarp="imageWarp",e.sequence="sequence",e.variable="variable",e.hubService="hubService",e.imageFilter="imageFilter",e.recipeLoad="recipeLoad",e.note="note",e.stringify="stringify",e.templateString="templateString",e.expressionEval="expressionEval",e.rescue="rescue",e.objectCombine="objectCombine",e.loop="loop",e.status="status",e.secret="secret",e.output="output",e.globalVariable="globalVariable",e.switch="switch",e.edgeFunction="edgeFunction"}(Ke||(Ke={}));const Je={};let Ze,Xe=()=>0;const Qe=async e=>{const t=Je[e],n={name:fe,type:ye.Boolean};if(t){const r={name:t.portName},i=t.data||{type:ye.Boolean,value:!0};if(!Xe)throw new Error("consumeEventCounter is not set");const o=Xe();Ze?(await Ze({interruptDriven:!0,childGateId:t.targetWidgetId,sourceWidgetId:t.sourceWidgetId,block:t.thingId,recipeId:t.recipePoolId,sourcePortName:n.name,targetPort:r,data:{...i,timestamp:Date.now()},sourceOutputNames:[n],currentPath:[],eventId:o}),"timeout"===t.type&&et(e)):console.warn("Interrupt service has not been initialized")}},et=e=>{const t=Je[e];return!!t&&(t.timerRef&&("interval"===t.type?clearInterval(t.timerRef):"timeout"===t.type&&clearTimeout(t.timerRef)),delete Je[e],!0)};var tt={interruptHandler:Qe,createInterrupt:e=>{const{type:t,recipePoolId:n,thingId:i,targetWidgetId:o,sourceWidgetId:s,portName:a,config:c,data:l,customId:u}=e;if(u&&Je[u])throw new Error("The given interrupt id already exists");const d=u||r().replace(/_/g,"-");if("interval"===t&&!c.interval)throw new Error(`Invalid interval. Expected a number greater than 0, but got '${c.interval}'`);if("timeout"===t&&!c.timeout)throw new Error(`Invalid timeout. Expected a number greater than 0, but got '${c.timeout}'`);if(Je[d]={data:l,portName:a,recipePoolId:n,targetWidgetId:o,sourceWidgetId:s,thingId:i,type:t},"interval"===t)Je[d].timerRef=setInterval((async()=>await Qe(d)),c.interval);else{if("timeout"!==t)throw new Error(`Invalid interrupt type '${t}'`);Je[d].timerRef=setTimeout((async()=>await Qe(d)),c.timeout)}return d},destroyInterrupt:et,destroyAllInterrupts:()=>{Object.keys(Je).forEach(et)},setInvokeChildGateCb:e=>{Ze=e},setConsumeEventCounterCb:e=>{Xe=e}};const nt=[10001,"Invalid `sourcePort` parameter"],rt=[10002,"The gate [%s] does not exist. Have you called `loadWidgets` yet?"],it=(e,...t)=>JSON.stringify({code:e[0],message:t[0]?i.format(e[1],...t):e[1].replace(/ \[%s\]/g,"")});let ot=0,st={};var at=(e,t)=>{const n=`${e}-${++ot}`,r={event:t,eventKey:n,widgetId:e,resolve:()=>{},reject:()=>{}},i=new Promise(((e,t)=>{r.resolve=e,r.reject=t}));return r.promise=i,st[n]=r,r},ct=(e,t)=>{const n=st[e];n&&(delete st[e],n.resolve(t))};const lt=()=>({inputName:"",dataType:ye.Anything}),ut="output",dt={processEvent:async(e,t)=>{const n=t.getState(),r={...lt(),...n};if(e.type!==r.dataType&&r.dataType!==ye.Anything)return void console.error(`Invalid data type: ${e.type} for input: ${r.inputName}. Expected: ${r.dataType}`);const i=t.waitForOutputChild,o=i?at(t.id,e):void 0,s=i?{eventKey:o?.eventKey}:void 0;if(await t.nextWidget(ut,{type:e.type,value:e.value},s).catch((e=>{console.log("[INPUT] error resolving event: ",e),o?.reject(e)})),o){return await o.promise}},getOutputNames:e=>{const t={...lt(),...e};return[{name:ut,type:t.dataType}]},getInputNames:()=>[]},ht=Object.freeze({in:"in",reset:"reset",increment:"increment"}),ft="output";var pt={onParentEvent:async(e,t,n,r)=>{if(!e)throw new Error(it(nt));const i={currentValue:0,increment:1,...r.getState()};let o=i.increment,s=i.currentValue;const a=await r.getParentAtPort(ht.increment);if(t.name===ht.increment)return void(n.data.type===ye.Number&&r.setState({...i,increment:Number(n.data.value)}));if(a){const e=a.getValue();null!==e&&(o=e)}if(t.name===ht.reset)return r.setState({...i,currentValue:0});s+=o,r.setState({currentValue:s,increment:o});const c={type:ye.Number,value:s};return r.nextGate(ft,c)},getInputNames:()=>[{name:ht.in,type:ye.Anything},{name:ht.reset,type:ye.Anything},{name:ht.increment,type:ye.Number}],getOutputNames:()=>[{name:ft,type:ye.Number}]};const gt=Object.freeze({in:"in",reset:"reset"}),mt="output";var yt={onParentEvent:async(e,t,n,r)=>{const i={updatedAt:0,elapsed:0,...r.getState()},o=Date.now(),s=o-(i.updatedAt||o);return t.name===gt.reset?r.setState({...i,updatedAt:o,elapsed:0}):(r.setState({updatedAt:o,elapsed:s}),r.nextGate(mt,{type:ye.Number,value:s}))},getInputNames:()=>[{name:gt.in,type:ye.Anything},{name:gt.reset,type:ye.Anything}],getOutputNames:()=>[{name:mt,type:ye.Number}]};const vt=Object.freeze({data:"data",evaluation:"evaluation"}),bt="then",wt="else";var St={onParentEvent:async(e,t,n,r)=>{const i={value:5,condition:"Equal",useDataPort:!1,...r.getState()},o=n.data.value,s=!isNaN(Number(o)),a="string"==typeof o;if(!i.useDataPort&&(n.data.type===ye.Number||n.data.type===ye.String||n.data.type===ye.Boolean||n.data.type===ye.Anything&&s||n.data.type===ye.Anything&&a)){let e=!1;return("Equal"===i.condition&&(n.data.value==i.value||n.data.type===ye.Boolean&&n.data.value.toString()===i.value.toString())||"Not Equal"===i.condition&&(n.data.value!==i.value||n.data.type===ye.Boolean&&n.data.value!==i.value.toString())||"Greater"===i.condition&&n.data.type===ye.Number&&n.data.value>Number(i.value)||"Less"===i.condition&&n.data.type===ye.Number&&n.data.value<Number(i.value)||"Starts With"===i.condition&&String(n.data.value).startsWith(String(i.value))||"Ends With"===i.condition&&String(n.data.value).endsWith(String(i.value))||"Includes"===i.condition&&String(n.data.value).includes(String(i.value))||"Matches"===i.condition&&String(n.data.value).match(String(i.value)))&&(e=!0),e?r.nextGate(bt,n.data):r.nextGate(wt,n.data)}if(t.name===vt.evaluation&&(n.data.type===ye.Number||n.data.type===ye.String||n.data.type===ye.Boolean||n.data.type===ye.Anything&&(s||a))&&(i.$lastValue=n.data.value,i.$lastInputDataType=n.data.type,r.setState({...i})),t.name===vt.data){let e=!1;return("Equal"===i.condition&&(i.$lastValue==i.value||i.$lastInputDataType===ye.Boolean&&i.$lastValue?.toString()===i.value.toString())||"Not Equal"===i.condition&&(i.$lastValue!==i.value||i.$lastInputDataType===ye.Boolean&&i.$lastValue!==i.value.toString())||"Greater"===i.condition&&i.$lastInputDataType===ye.Number&&Number(i.$lastValue)>Number(i.value)||"Less"===i.condition&&i.$lastInputDataType===ye.Number&&Number(i.$lastValue)<Number(i.value)||"Starts With"===i.condition&&String(i.$lastValue).startsWith(String(i.value))||"Ends With"===i.condition&&String(i.$lastValue).endsWith(String(i.value))||"Includes"===i.condition&&String(i.$lastValue).includes(String(i.value))||"Matches"===i.condition&&String(i.$lastValue).match(String(i.value)))&&(e=!0),r.setState({...i,$lastValue:void 0,$lastInputDataType:void 0}),e?r.nextGate(bt,n.data):r.nextGate(wt,n.data)}},getInputNames:e=>e.useDataPort?[{name:vt.data,type:ye.Anything,triggerPort:!0},{name:vt.evaluation,type:[ye.Number,ye.String,ye.Boolean]}]:[{name:"in",type:[ye.Number,ye.String,ye.Boolean]}],getOutputNames:e=>e.$lastOutputDataType?[{name:bt,type:e.$lastOutputDataType},{name:wt,type:e.$lastOutputDataType}]:[{name:bt,type:[ye.Number,ye.String]},{name:wt,type:[ye.Number,ye.String]}]};const _t=Object.freeze({in:"in",reset:"reset"}),It="out",xt="skipped";var kt={onParentEvent:async(e,t,n,r)=>{const i={totalCalls:0,callsLimit:1,...r.getState()};return t.name===_t.reset?r.setState({...i,totalCalls:0}):(i.totalCalls=i.totalCalls+1,i.totalCalls>i.callsLimit?(i.totalCalls=0,r.setState(i),r.nextWidget(It,n.data)):(n.data.type!==i.$$lastDetectedType&&(i.$$lastDetectedType=n.data.type),r.setState(i),r.nextWidget(xt,n.data)))},getInputNames:()=>[{name:_t.in,type:ye.Anything},{name:_t.reset,type:ye.Anything}],getOutputNames:e=>[{name:It,type:e.$$lastDetectedType??ye.Anything},{name:xt,type:e.$$lastDetectedType??ye.Anything}]};const Et=Object.freeze({in:"in"}),Ct="then",$t="else";var Ot={onParentEvent:async(e,t,n,r)=>{const i={min:1,max:10,...r.getState()};if(n.data.type===ye.Number)return n.data.value>=i.min&&n.data.value<=i.max?r.nextGate(Ct,n.data):r.nextGate($t,n.data)},getInputNames:()=>[{name:Et.in,type:ye.Number}],getOutputNames:()=>[{name:Ct,type:ye.Number},{name:$t,type:ye.Number}]};const Nt=Object.freeze({in:"in"}),Tt="out";var At={onParentEvent:async(e,t,n,r)=>{const i={clamp:!0,...r.getState()},o=Number(n.data.value);if(void 0!==i.fromMax&&void 0!==i.fromMin&&void 0!==i.toMax&&void 0!==i.toMin&&""!==i.fromMax&&""!==i.fromMin&&""!==i.toMax&&""!==i.toMin&&(n.data.type===ye.Number||n.data.type===ye.Anything&&!isNaN(Number(o)))){let e=((e,t,n,r,i)=>(e-t)*(i-r)/(n-t)+r)(o,Number(i.fromMin),Number(i.fromMax),Number(i.toMin),Number(i.toMax));if(isNaN(e))return;return i.clamp&&(e<Number(i.toMin)&&(e=Number(i.toMin)),e>Number(i.toMax)&&(e=Number(i.toMax))),r.nextGate(Tt,{type:ye.Number,value:Number(e)})}},getInputNames:()=>[{name:Nt.in,type:ye.Number}],getOutputNames:()=>[{name:Tt,type:ye.Number}]};const Mt=Object.freeze({in:"in"}),Pt="out";var Dt={onParentEvent:async(e,t,n,r)=>{const i={convertTo:"Integer",floatPlaces:2,...r.getState()};let o=n.data.value;if(n.data.type===ye.Number||n.data.type===ye.Anything||n.data.type===ye.String){if((!isNaN(Number(o))||"string"==typeof o)&&!Array.isArray(o))return"Integer"===i.convertTo?o=parseInt(o):"Decimal"===i.convertTo?o=parseFloat(Number(o).toFixed(i.floatPlaces)):"String"===i.convertTo?o=String(o):"Abs"===i.convertTo?o=Math.abs(Number(o)):"Round"===i.convertTo&&(o=Math.round(Number(o))),r.nextGate(Pt,{type:"String"===i.convertTo?ye.String:ye.Number,value:o})}},getInputNames:()=>[{name:Mt.in,type:ye.Number}],getOutputNames:e=>{const t="String"===e?.convertTo?ye.String:ye.Number;return[{name:Pt,type:t}]}};const jt=Object.freeze({in:"in"}),Rt="out";var Lt={onParentEvent:async(e,t,n,r)=>{const i={currentValue:50,min:0,max:100,...r.getState()};let o=!1;return i.currentValue<i.min&&(i.currentValue=i.min,o=!0),i.currentValue>i.max&&(i.currentValue=i.max,o=!0),o&&r.setState(i),r.nextWidget(Rt,{type:ye.Number,value:i.currentValue})},getInputNames:()=>[{name:jt.in,type:ye.Anything}],getOutputNames:()=>[{name:Rt,type:ye.Number}]};const Ft=Object.freeze({in:"in",reset:"reset"}),Ut="out",Wt="skipped";var Bt={onParentEvent:async(e,t,n,r)=>{const i={lastCalledAt:0,delayMs:500},o={lastCalledAt:0,delayMs:500,...r.getState()};if(t.name===Ft.reset)return r.setState({...o,lastCalledAt:0});const s=Date.now(),a=s-o.lastCalledAt;return o.lastCalledAt===i.lastCalledAt||a>=o.delayMs&&o.delayMs>0?(o.lastCalledAt=s,r.setState(o),r.nextWidget(Ut,n.data)):(n.data.type!==o.$$lastDetectedType&&(o.$$lastDetectedType=n.data.type),r.setState(o),r.nextWidget(Wt,n.data))},getInputNames:()=>[{name:Ft.in,type:ye.Anything},{name:Ft.reset,type:ye.Anything}],getOutputNames:e=>[{name:Ut,type:e.$$lastDetectedType??ye.Anything},{name:Wt,type:e.$$lastDetectedType??ye.Anything}]};const Gt="in";var Vt={onParentEvent:async()=>{},getInputNames:()=>[{name:Gt,type:[ye.ImageData,ye.Number]}],getOutputNames:()=>[]};const Yt=()=>({properties:[{label:"property1",name:"property1"}],detectedProperties:{}}),Ht=(e,t)=>t.split(".").reduce(((e,t)=>null!=e?e[t]:e),e);var zt={onParentEvent:async(e,t,n,r)=>{const i={properties:[{label:"property1",name:"property1"}],detectedProperties:{},...r.getState()},o=n?.data?.value,s=Array.isArray(o);if(n.data.type===ye.JsonObj||n.data.type===ye.Rect||n.data.type===ye.Point||n.data.type===ye.BinaryFile||n.data.type===ye.Anything||s){let e=!1;for(const t in o){const n=We(o[t]),r=!!i.detectedProperties[t],s=i.detectedProperties[t]?.type!==n;if(!r||s){const r=n===ye.JsonObj||n===ye.Rect||n===ye.Point||n===ye.Array;i.detectedProperties[t]={type:n,...r?{shape:Be(o[t])}:void 0},e=!0}}if(s&&void 0===i.detectedProperties.length&&(i.detectedProperties.length={type:ye.Number}),e&&r.setState(i),o){const e=[];for(const t of i.properties||[]){const n=Ht(o,t.label),s=t.label.includes(".");if(void 0!==n){const o=s?We(n):void 0!==i.detectedProperties[t.label]?.type?i.detectedProperties[t.label].type:ye.Anything;e.push(r.nextGate(t.name,{type:o,value:n}))}}await Promise.allSettled(e)}}},getInputNames:()=>[{name:"in",type:ye.JsonObj}],getOutputNames:e=>{const t={properties:[{label:"property1",name:"property1"}],detectedProperties:{},...e};return t.properties.map((e=>{const n=void 0!==t.detectedProperties[e.label]?t.detectedProperties[e.label]?.type:ye.Anything,r=t.detectedProperties[e.label]?.shape||void 0,i="string"==typeof e;return{name:i?e:e.name,label:i?e:e.label,type:n,jsonShape:r}}))},getDefaultState:Yt};const qt="output",Kt="noItem";var Jt={onParentEvent:async(e,t,n,r)=>{const i={index:0,...r.getState()};let o=i.index;const s=n.data.value,a="string"==typeof n.data.value,c=Array.isArray(n.data.value);if(n.data.type===ye.Anything&&(c||a)||n.data.type===ye.String&&a||n.data.type===ye.Array&&c){o<0&&(o=s.length+o);const e=a?ye.String:We(s[o]);return e!==i.$$lastDetectedType&&r.setState({...i,$$lastDetectedType:e}),void 0!==s[o]?r.nextGate(qt,{value:s[o],type:e}):r.nextGate(Kt,{value:!0,type:ye.Boolean})}},getInputNames:()=>[{name:"in",type:[ye.Array,ye.String]}],getOutputNames:e=>[{name:qt,type:e.$$lastDetectedType??ye.Anything},{name:Kt,type:ye.Boolean}]};const Zt={},Xt=e=>(Zt[e]||(Zt[e]={canvasFrom:Ce(320,240),canvasTo:Ce(320,240)}),Zt[e]),Qt=Object.freeze({image:"image",rect:"rect"}),en="image";var tn={onParentEvent:async(e,t,n,r)=>{const i=Xt(r.id),o={offset:{height:0,left:0,top:0,width:0},...r.getState()},s=[ye.Anything,ye.Rect,ye.JsonObj];if(t.name===Qt.rect&&Fe(n.data.value)&&s.includes(n.data.type)&&(o.rect=n.data.value,r.setState({...o})),t.name===Qt.image){if(!((n.data.type===ye.ImageData||n.data.type===ye.Anything)&&Le(n.data.value)))throw new Error("Invalid image data. Expected a valid ImageData type");i.lastImage=n.data.value}if(i.lastImage&&o.rect){const e=((e,t,n,r,i)=>{if(r&&r.getContext){const o=r.getContext("2d"),s=n.getContext("2d");if(o&&s){n.width=e.width,n.height=e.height,s.putImageData(e,0,0);const a={...i};i&&(a.height=Number(i.height),a.width=Number(i.width),a.left=Number(i.left),a.top=Number(i.top));const c={top:0,width:0,left:0,height:0,...a};return i&&(Number.isInteger(c.width)||(c.width=t.width*c.width),Number.isInteger(c.height)||(c.height=t.height*c.height),Number.isInteger(c.left)||(c.left=t.left+t.width*c.left),Number.isInteger(c.top)||(c.top=t.top+t.height*c.top)),r.width=t.width+c.width,r.height=t.height+c.height,o.drawImage(n,t.left+c.left,t.top+c.top,t.width+c.width,t.height+c.height,0,0,r.width+c.width,r.height+c.height),o.getImageData(0,0,r.width||1,r.height||1)}}return e})(i.lastImage,o.rect,i.canvasFrom,i.canvasTo,o.offset);r.setState({...o,rect:null}),i.lastImage=void 0,await r.nextWidget(en,{type:ye.ImageData,value:e})}},getInputNames:()=>[{name:Qt.image,type:ye.ImageData},{name:Qt.rect,type:[ye.Rect,ye.JsonObj]}],getOutputNames:()=>[{name:en,type:ye.ImageData}],initialize:async e=>{Xt(e.widgetId)},terminate:async e=>{delete Zt[e.widgetId]}};const nn=(e,t)=>{const n=Math.round(Math.sqrt(t.length)),r=Math.floor(n/2),i=e.data,o=e.width,s=e.height,a=o,c=s,l=((e,t,n)=>{if(te)return new ImageData(t,n);return console.warn("Node environment detected. Aborting new ImageData creation"),e})(e,a,c),u=l.data;for(let e=0;e<c;e++)for(let c=0;c<a;c++){const l=e,d=c,h=4*(e*a+c);let f=0,p=0,g=0,m=0;for(let e=0;e<n;e++)for(let a=0;a<n;a++){const c=l+e-r,u=d+a-r;if(c>=0&&c<s&&u>=0&&u<o){const r=4*(c*o+u),s=t[e*n+a];f+=i[r]*s,p+=i[r+1]*s,g+=i[r+2]*s,m+=i[r+3]*s}}u[h]=f,u[h+1]=p,u[h+2]=g,u[h+3]=m+1*(255-m)}return l},rn=[-1,0,1,-2,0,2,1,0,1],on=Object.freeze({image:"image"}),sn="image";var an={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={matrix:[...rn],...i};if(n.data.type===ye.ImageData||n.data.type===ye.Anything&&Le(n.data.value)){const e=nn(n.data.value,o.matrix);return r.nextGate(sn,{type:ye.ImageData,value:e})}},getInputNames:()=>[{name:on.image,type:ye.ImageData}],getOutputNames:()=>[{name:sn,type:ye.ImageData}]};const cn=Object.freeze({output:"output",aborted:"aborted"}),ln=()=>({inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0}),un=e=>{const t={inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0,...e},n=Array(t.inputs).fill(0).map(((e,t)=>({name:`input${t+1}`,type:ye.Anything})));return n.push({name:"reset",type:ye.Anything}),n};var dn={onParentEvent:async(e,t,n,r)=>{const i={inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0,...r.getState()};if("reset"===t.name)return r.setState({...i,triggeredAt:0});const o=Date.now(),s=o-i.triggeredAt;if(i.triggeredAt&&!(s>=i.delayMs&&i.delayMs>0)&&i.delayMs)return r.nextGate(cn.aborted,n.data);{i.triggeredAt=o;const e=un(i,(r.recipePoolId,r.recipeType,r.thingRecipeId,r.id)).findIndex((e=>e.name===t.name));-1!==e&&(i.lastInputIndex=e),i.matchingOutputs?-1!==e&&await r.nextGate(`output${e+1}`,n.data):await r.nextGate(cn.output,n.data),r.setState(i)}},getInputNames:un,getOutputNames:e=>{const t={inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0,...e};if(e.matchingOutputs){const e=Array(t.inputs).fill(0).map(((e,t)=>({name:`output${t+1}`,type:ye.Anything})));return e.push({name:cn.aborted,type:ye.Anything}),e}return[{name:cn.output,type:ye.Anything},{name:cn.aborted,type:ye.Anything}]},getDefaultState:ln};const hn=(e,t,n,r,i,o)=>{if(i){const s=e.measureText(i),a=s.fontBoundingBoxAscent+s.fontBoundingBoxDescent;e.fillStyle=r,e.fillRect(t,n-o,1.1*s.width,a),e.font=`${o}px Arial`,e.fillStyle="black",e.fillText(i,t,n)}},fn=(e,t,n,r,i,o,s)=>{e.fillStyle=i,e.fillRect(t,n,r,r),hn(e,t,n,i,o,s)},pn=(e,t,n,r,i,o)=>{e.beginPath(),e.strokeStyle=r,e.lineWidth=n,e.rect(t.left,t.top,t.width,t.height),e.stroke();const s=n/2;hn(e,t.left-s,t.top-s,r,i,o)},gn={},mn=e=>(gn[e]||(gn[e]={memCanvas:Ce(320,240),lastFrame:void 0,pixels:void 0}),gn[e]),yn=Object.freeze({image:"image",pixels:"pixels"}),vn="image";var bn={onParentEvent:async(e,t,n,r)=>{const i=mn(r.id),o={fontSize:12,color:"#00ff00",size:2,...r.getState()},s=(n.data.type===ye.ImageData||n.data.type===ye.Anything)&&Le(n.data.value);if(t.name===yn.pixels){const e=(e=>Ue(e)||Fe(e)||Array.isArray(e)&&e[0]&&(Ue(e[0])||Fe(e[0])))(n.data.value);if(!e)return;i.pixels=n.data.value}if(t.name===yn.image&&s){const e=n.data.value;i.lastFrame=e}if(i.lastFrame&&i.pixels&&i.memCanvas){const e=(e=>{const{sourceImage:t,pixels:n,memCanvas:r,size:i,color:o,labelProp:s,fontSize:a}=e;if(r){const e=$e(r);if(e){r.width!==t.width&&(r.width=t.width),r.height!==t.height&&(r.height=t.height),e.putImageData(t,0,0);const c=Array.isArray(n)?n:[n];for(let t=0;t<c.length;t++){const n=c[t],r=s?n[s]:"";Fe(n)?pn(e,n,i,o,r,a):Ue(n)&&fn(e,n.x,n.y,i,o,r,a)}return e.getImageData(0,0,r.width,r.height)}}return t})({sourceImage:i.lastFrame,pixels:i.pixels||[],memCanvas:i.memCanvas,size:o.size,color:o.color,labelProp:o.labelProp,fontSize:o.fontSize});return i.lastFrame=void 0,i.pixels=void 0,r.setState({...o}),r.nextWidget(vn,{type:ye.ImageData,value:e})}r.setState(o)},getInputNames:()=>[{name:yn.image,type:ye.ImageData},{name:yn.pixels,type:[ye.Rect,ye.Point,ye.Array,ye.JsonObj]}],getOutputNames:()=>[{name:vn,type:ye.ImageData}],initialize:async e=>{mn(e.widgetId)},terminate:async e=>{delete gn[e.widgetId]}};const wn=Object.freeze({in:"in"}),Sn="output",_n=e=>{const t=String(e).split(".");return t.length<2?0:t[1].length};var In={onParentEvent:async(e,t,n,r)=>{const i={min:1,max:100,...r.getState()},o=!Number.isInteger(i.min),s=!Number.isInteger(i.max),a=o||s;let c=(l=i.min,u=i.max,Math.random()*(u-l)+l);var l,u;if(a){let e=0;if(o&&(e=_n(i.min)),s){const t=_n(i.max);t>e&&(e=t)}c=Number(c.toFixed(e))}else c=Math.floor(c);return r.nextGate(Sn,{type:ye.Number,value:c})},getInputNames:()=>[{name:wn.in,type:ye.Anything}],getOutputNames:()=>[{name:Sn,type:ye.Number}]};const xn=Object.freeze({output:"output",totalItems:"totalItems"}),kn=Object.freeze({trigger:"trigger",clear:"clear"}),En=()=>({$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1}),Cn=async(e,t)=>t.nextGate(xn.totalItems,{type:ye.Number,value:e});var $n={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1,...r.getState()};if(t.name===kn.clear)return i.$$list=[],i.properties?.autoFilled&&delete i.properties,r.setState(i),Cn(i.$$list.length,r);const o=t.name===kn.trigger;if(!o)if(Array.isArray(n.data.value))n.data.type!==ye.Array&&n.data.type!==ye.Anything||(i.$$outputShape={...i.$$outputShape,...e?.jsonShape},i.$$list=i.$$list.concat(n.data.value),r.setState({...i}),await Cn(i.$$list.length,r));else{const t=`$$primitive_${Object.keys(i.$$outputShape).length}`;n.data.type===ye.JsonObj?i.$$outputShape={...i.$$outputShape,...e?.jsonShape?e.jsonShape:void 0}:i.$$outputShape={...i.$$outputShape,[t]:n.data.type},i.$$list.push(n.data.value),r.setState({...i}),await Cn(i.$$list.length,r)}if(o){Object.keys(i.$$outputShape).length&&(i.properties={autoFilled:!0,jsonShape:{...i.$$outputShape}});const e=i.$$list.length,t=[...i.$$list];return i.$$list=[],r.setState({...i}),await Cn(e,r),r.nextGate(xn.output,{type:ye.Array,value:t})}},getInputNames:e=>{const t={$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1,...e},n=Array(t.totalInputs||1).fill(0).map(((e,t)=>({name:`input${t+1}`,type:ye.Anything})));return n.push({name:kn.clear,type:ye.Anything},{name:kn.trigger,type:ye.Anything}),n},getOutputNames:e=>[{name:xn.output,type:ye.Array,...e.properties?{jsonShape:e.properties?.jsonShape}:void 0},{name:xn.totalItems,label:"Total Items",type:ye.Number}],getDefaultState:En};const On=Object.freeze({start:"start",stop:"stop"}),Nn="output",Tn="clock_interrupt";var An={onParentEvent:async(e,t,n,r)=>{const i={enabled:!1,interval:1e3,intervalMode:"ms",...r.getState()};if(Re(e?.name||"")&&t.name===Tn)return r.nextGate(Nn,{type:ye.Boolean,value:!0});if(t.name===On.stop&&i.enabled&&i.$$interruptId){r.cancelInterrupt(i.$$interruptId)?(i.enabled=!1,i.$$interruptId=void 0,r.setState(i)):console.warn(`Failed to cancel interrupt [${i.$$interruptId}]`)}else t.name!==On.start||i.enabled||i.$$interruptId||(i.$$interruptId=r.registerInterrupt({type:"interval",sourceWidgetId:r.id,customTargetPortName:Tn,config:{interval:i.interval}}),i.enabled=!0,r.setState(i))},getInputNames:()=>[{name:On.start,type:ye.Anything},{name:On.stop,type:ye.Anything}],getOutputNames:()=>[{name:Nn,type:ye.Boolean}],initialize:async e=>{const t=e.getState();if(t.enabled&&!t.$$interruptId){const n=e.registerInterrupt({type:"interval",sourceWidgetId:e.widgetId,customTargetPortName:Tn,config:{interval:t.interval}});e.setState({...t,$$interruptId:n})}}};const Mn=864e5;var Pn;!function(e){e.ABORTED="DELAY_ABORTED",e.CONTINUED="DELAY_CONTINUED",e.TERMINATED="WIDGET_TERMINATED"}(Pn||(Pn={}));const Dn={},jn=Object.freeze({in:"in",abort:"abort",continue:"continue"}),Rn="out",Ln=(e,t)=>{const n=e.getState();e.setState({...n,pendingDelaysCount:Math.max(0,n.pendingDelaysCount+t)})};var Fn={onParentEvent:async(e,t,n,i)=>{const o={enabled:!1,interval:1e3,intervalMode:"ms",pendingDelaysCount:0,...i.getState()},s=i.id;Dn[s]||(Dn[s]=new Map);const a=Dn[s];if(t.name!==jn.abort)if(t.name!==jn.continue){if(t.name===jn.in){const e=o.interval;if(!((c=e)>=1&&c<=Mn))throw new Error(`Invalid interval: ${e}ms. Must be between 1ms and 86400000ms`);const t={...n.data},s=r();Ln(i,1);const l=new Promise(((n,r)=>{const o=setTimeout((()=>{n(t),a.delete(s),Ln(i,-1)}),e);a.set(s,{id:s,eventData:t,timeoutId:o,resolve:n,reject:r})}));try{const e=await l;return i.invokeNextWidget({port:Rn,data:e})}catch{Ln(i,-1)}}var c}else{const e=Array.from(a.entries());for(const[t,n]of e)clearTimeout(n.timeoutId),n.reject(new Error(Pn.CONTINUED)),a.delete(t);for(const[,t]of e)await i.invokeNextWidget({port:Rn,data:t.eventData});Ln(i,-i.getState().pendingDelaysCount)}else{for(const[e,t]of a)clearTimeout(t.timeoutId),t.reject(new Error(Pn.ABORTED)),a.delete(e);Ln(i,-i.getState().pendingDelaysCount)}},getInputNames:()=>[{name:jn.in,type:ye.Anything},{name:jn.abort,type:ye.Anything},{name:jn.continue,type:ye.Anything}],getOutputNames:()=>[{name:Rn,type:ye.Anything}],initialize:async e=>{const t=e.getState();0!==t.pendingDelaysCount&&e.setState({...t,pendingDelaysCount:0})},terminate:async e=>{const t=e.widgetId;if(Dn[t]){for(const[,e]of Dn[t])clearTimeout(e.timeoutId),e.reject(new Error(Pn.TERMINATED));delete Dn[t]}}};const Un=Object.freeze({in:"in"}),Wn="output",Bn=(e,t,n)=>"number"==typeof e?Number((e*t).toFixed(n)):e;var Gn={onParentEvent:async(e,t,n,r)=>{const i={userProperties:[],factor:2,decimalPoints:2,...r.getState()},o=n.data.type;let s=n.data.value,a=!1;return e?.jsonShape&&(i.detectedInputJson={...i.detectedInputJson,...e?.jsonShape},a=!0),i.detectedInputType||(i.detectedInputType=o,a=!0),n.data.type===ye.Array&&("number"==typeof n.data.value?.[0]?s=((e,t,n)=>{const r=(e||[]).map((e=>Bn(e,t,n)));return r})(n.data.value,i.factor,i.decimalPoints):"object"==typeof n.data.value?.[0]&&(s=((e,t,n,r)=>{const i=(e||[]).map((e=>{const i={...e};return Object.keys(i).forEach((e=>{r?.length&&!r?.includes(e)||(i[e]=Bn(i[e],t,n))})),i}));return i})(n.data.value,i.factor,i.decimalPoints,i.userProperties))),n.data.type===ye.Number&&(s=Bn(n.data.value,i.factor,i.decimalPoints)),a&&r.setState(i),r.nextGate(Wn,{type:o,value:s})},getInputNames:()=>[{name:Un.in,type:[ye.Array,ye.Number]}],getOutputNames:e=>[{name:Wn,type:e.detectedInputType||ye.Number,jsonShape:e.detectedInputJson}]};const Vn={},Yn=Object.freeze({output:"output"}),Hn=Object.freeze({trigger:"trigger"}),zn=()=>({useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}]}),qn=(e,t)=>{const n={};Vn[t]=Vn[t]||{};for(let r=0;r<e.properties.length;r++){const i=Vn[t][e.properties[r].name];n[e.properties[r].label]=i}return n};var Kn={onParentEvent:async(e,t,n,r)=>{const i={useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}],...r.getState()};if(t.name===Hn.trigger){const e=qn(i,r.id);return r.nextWidget(Yn.output,{type:ye.JsonObj,value:e})}const o=i.properties.findIndex((e=>e.name===t.name));if(-1!==o){const e=i.properties[o];if(Vn[r.id]=Vn[r.id]||{},Vn[r.id][e.name]=n.data.value,!i.useTriggerPort){const e=qn(i,r.id);return r.nextWidget(Yn.output,{type:ye.JsonObj,value:e})}}},getInputNames:e=>{const t={useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}],...e},n=t.properties.map((e=>({name:e.name,label:e.label,type:ye.Anything})));return t.useTriggerPort&&n.push({name:Hn.trigger,label:Hn.trigger,type:ye.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:Yn.output,label:Yn.output,type:ye.JsonObj}],getDefaultState:zn,initialize:async e=>{Vn[e.widgetId]={}},terminate:async e=>{delete Vn[e.widgetId]}};const Jn=async e=>{const t=(e,t)=>e.split(t)[1];if(e.startsWith(Me)){const n=t(e,Me);return Ge("inner","input",n)}if(e.startsWith(je)){const n=t(e,je);return Ge("outer","output",n)}return null},Zn=()=>({canvasPosition:{x:0,y:0},canvasZoom:1,inputs:[{name:"input",type:[ye.Anything],index:0}],outputs:[{name:"output",type:[ye.Anything],index:0}],name:"Custom Widget 1",description:"",type:"custom"}),Xn=e=>{const t={...Zn(),...e},n=t.inputs.map(((e,t)=>({name:Ge("outer","input",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!1,index:t}))),r=t.outputs.map(((e,t)=>({name:Ge("inner","output",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!0,index:n.length+t})));return[...n,...r]};var Qn={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Zn(),...i},s=Xn(o,(r.recipePoolId,r.recipeType,r.thingRecipeId,r.id));for(let e=0;e<s.length;e++){const i=s[e];if(t.name===i.name&&(i.type.includes(ye.Anything)||i.type.includes(n.data.type))){const e=await Jn(t.name);e&&await r.nextWidget(e,{type:n.data.type,value:n.data.value})}}},getInputNames:Xn,getOutputNames:e=>{const t={...Zn(),...e},n=t.outputs.map(((e,t)=>({name:Ge("outer","output",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!1,index:t})));return[...t.inputs.map(((e,t)=>({name:Ge("inner","input",e.name),type:e.type,...e.jsonShape?{jsonShape:e.jsonShape}:void 0,...e.position?{position:e.position}:void 0,label:e.label,isInner:!0,index:t+n.length}))),...n]},getDefaultState:Zn};const er=(e,t,n,r,i)=>{const o=4*(t*n.width+e),s=n.data[o],a=n.data[o+1],c=n.data[o+2];return Math.abs(s-r.r)<=i&&Math.abs(a-r.g)<=i&&Math.abs(c-r.b)<=i};var tr={image:{getPixelValueAtIndex:(e,t)=>{const n=e.data,r=n[t]||0,i=n[t+1]||0,o=n[t+2]||0;return{avr:(r+i+o)/3,r:r,g:i,b:o}},getBoundingBox:(e,t,n)=>{const r=e.width,i=e.height,o=new Set,s=Number(n.threshold||0),a=isNaN(s)?10:s,c=(n,s)=>{const c=[[n,s]];let l=n,u=n,d=s,h=s;for(;c.length>0;){const n=c.shift();if(!n)continue;const[s,f]=n;s<0||f<0||s>=r||f>=i||o.has(`${s},${f}`)||!er(s,f,e,t,a||0)||(o.add(`${s},${f}`),l=Math.min(l,s),u=Math.max(u,s),d=Math.min(d,f),h=Math.max(h,f),c.push([s+1,f],[s-1,f],[s,f+1],[s,f-1]))}return{minX:l,maxX:u,minY:d,maxY:h}},l=[];for(let s=0;s<i;s+=4)for(let i=0;i<r;i+=4)if(!o.has(`${i},${s}`)&&er(i,s,e,t,a)){const{minX:e,maxX:t,minY:r,maxY:o}=c(i,s),a=t-e,u=o-r;if(a>=(n.minWidth||1)&&u>=(n.minHeight||1)&&l.push({left:e,top:r,width:a,height:u}),n.maxBoxes&&l.length>=n.maxBoxes)return l}return l},copyImageData:e=>new ImageData(new Uint8ClampedArray(e.data),e.width,e.height),setPixelValueAtIndex:(e,t,n)=>{const r=e.data,i="object"==typeof n,o=i?n.r:n,s=i?n.g:n,a=i?n.b:n;r[t]=o,r[t+1]=s,r[t+2]=a,r[t+3]=255}}};const nr=e=>We(e),rr=a.enum(["Read","Modify","Comment"]),ir=a.object({email:a.email(),name:a.string(),accessMode:rr});var or;!function(e){e.Seats="seats",e.RecipeInvocations="recipe_invocations",e.HubServices="hub_services",e.RecipeExports="recipe_exports",e.RecipeHistory="recipe_history",e.AssistedCodeGeneration="assisted_code_generation",e.CustomServices="custom_services",e.OnDeviceSecretManagement="on_device_secret_management",e.PrivateRecipes="private_recipes",e.InBrowserRecipeExecution="in_browser_recipe_execution",e.EventLoggerLogsRetention="event_logger_logs_retention",e.AgenticExecutions="agentic_executions",e.PrivateSnippets="private_snippets",e.SnippetHistory="snippet_history",e.LogHistoryRetentionDays="log_history_retention_days",e.LogHistoryMonthlyEvents="log_history_monthly_events",e.FileStorageRetentionHours="file_storage_retention_hours",e.FileStorageSizeMB="file_storage_size_mb",e.PrivateWidgets="private_widgets",e.WidgetHistory="widget_history"}(or||(or={}));const sr=a.enum(["active","inactive"]),ar=a.enum(["Owner","Admin","Member"]),cr=a.object({apiKey:a.string(),createdAt:a.string(),createdBy:a.string()}),lr=a.object({country:a.string(),city:a.string(),address1:a.string(),address2:a.string(),postCode:a.string()}),ur=a.object({id:a.string(),name:a.string(),groups:a.array(a.string()),logo:a.string().optional(),industry:a.string().optional(),accountOwner:a.string(),stripeCustomerId:a.string(),stripeSubscription:a.custom(),apiKeys:a.array(cr).optional(),domain:a.string().optional(),createdAt:a.string(),updatedAt:a.string(),accountState:a.custom(),location:lr.optional()}),dr=a.object({id:a.string(),firstName:a.string(),lastName:a.string(),email:a.email().optional(),loginId:a.string().optional(),role:ar,groups:a.array(a.string()).optional().default([]),status:sr,lastSeenAt:a.string().optional(),createdAt:a.string()});var hr,fr,pr,gr;ur.pick({id:!0,name:!0,stripeSubscription:!0,stripeCustomerId:!0}),a.object({member:a.object({firstName:a.string().optional(),lastName:a.string().optional(),email:a.string().optional(),role:ar.optional(),groups:a.array(a.string()).optional(),status:sr})}),dr.omit({id:!0,createdAt:!0,lastSeenAt:!0}),a.object({name:a.string(),location:lr.optional()}),function(e){e.Cpu_128M="kmu-cpu-128m",e.Cpu_256M="kmu-cpu-256m",e.Cpu_512M="kmu-cpu-512m",e.Cpu_1024M="kmu-cpu-1024m",e.Cpu_2048M="kmu-cpu-2048m",e.Cpu_4096M="kmu-cpu-4096m"}(hr||(hr={})),function(e){e.Hardware="hardware",e.Virtual="virtual"}(fr||(fr={})),function(e){e.Cloud="cloud",e.Web="web"}(pr||(pr={})),function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(gr||(gr={}));const mr=a.object({name:a.string(),category:a.string(),id:a.string(),type:a.enum(pr),version:a.string()}),yr=a.object({version:a.number(),contents:a.string(),contentsLength:a.number(),createdAt:a.string(),comments:a.string().optional()}),vr=a.object({id:a.string(),name:a.string(),uuid:a.string().optional(),version:a.number(),dataSources:a.array(a.object({host:a.string().optional(),stream:a.string(),blocks:a.array(a.string())})).optional(),protocolVersion:a.string(),linkedTutorial:a.string().optional(),blocks:a.array(mr),widgets:a.array(a.object({type:a.string(),name:a.string(),thingId:a.string()})).optional(),contents:a.string(),storage:a.string().optional(),history:a.array(yr).optional(),cloud:a.object({environment:a.enum(hr),enabled:a.boolean()}).optional()}),br=a.object({recipeId:a.string(),version:a.number()});vr.extend({userId:a.string(),author:a.object({name:a.string(),id:a.string()}),copiedFrom:br.optional(),updatedAt:a.string(),createdAt:a.string(),preview:a.string(),isPublic:a.boolean(),isDefault:a.boolean(),meta:a.object({contentsLength:a.number(),storageLength:a.number(),storageChecksum:a.string().optional()}),sharedWith:a.array(ir),publicSharedId:a.string().optional(),marketplacePublication:a.string().optional()});const wr=vr.omit({id:!0,version:!0,contents:!0,storage:!0});var Sr,_r,Ir,xr,kr,Er,Cr,$r;a.object({rawContents:a.string(),recipe:wr.extend({contentLength:a.number(),copiedFrom:br.optional()}),storageSize:a.number().optional(),storageChecksum:a.string().optional(),comments:a.string().optional(),currentVersion:a.number().optional()}),a.object({message:a.string(),recipeId:a.string(),version:a.number(),versionHistory:a.array(yr)}),function(e){e.Bundle="bundle",e.Group="group"}(Sr||(Sr={})),function(e){e.Gateway="gateway",e.Timer="timer"}(_r||(_r={})),function(e){e.InstallInProgress="installation-in-progress"}(Ir||(Ir={})),function(e){e.InstallDependencies="install-dependencies",e.GetInstalledDependencies="get-installed-dep"}(xr||(xr={})),function(e){e.Success="success",e.Error="error",e.Pending="pending"}(kr||(kr={})),function(e){e.NotFound="not-found",e.BadRequest="bad-request",e.Forbidden="forbidden",e.InternalError="internal-error"}(Er||(Er={})),function(e){e.UserFriendlyName="user_friendly_name",e.UserFriendlyDescription="user_friendly_description",e.InternalDescription="internal_description",e.TierLevel="tier_level",e.ProductFeatures="product_features",e.UserSubscribeCode="subscription_code",e.IsCustomTier="is_custom_tier"}(Cr||(Cr={})),function(e){e.KeyCreated="key_created",e.ValidateKey="validate_key",e.ExecuteRecipe="execute_recipe",e.InstallHubService="install_hub_service",e.UninstallHubService="uninstall_hub_service",e.ExportRecipe="export_recipe"}($r||($r={}));const Or=a.object({id:a.string(),name:a.string(),organizationId:a.string()}),Nr=a.object({version:a.number(),contents:a.string(),contentsLength:a.number(),createdAt:a.string(),title:a.string(),shortDescription:a.string(),comments:a.string().optional()}),Tr=a.object({id:a.string(),title:a.string(),author:Or,shortDescription:a.string(),authorId:a.string(),category:a.string(),tags:a.array(a.string()),createdAt:a.string(),downloads:a.number().default(0),updatedAt:a.string(),iconSvg:a.string(),contents:a.string(),descriptionMarkdown:a.string(),githubUrl:a.string().optional(),visibility:a.enum(["public","private","organization"]),version:a.number(),history:a.array(Nr).default([]),deletedAt:a.string().optional()}),Ar=Tr.extend({rating:a.object({average:a.number(),total:a.number()}).optional()});a.object({id:a.string(),author:a.object({id:a.string(),name:a.string()}).optional(),description:a.string(),createdAt:a.string(),updatedAt:a.string(),snippetId:a.string(),deletedAt:a.string().optional(),isAbuseReport:a.boolean().optional(),reportReason:a.enum(["spam","inappropriate","not-working","security","other"]).optional()}),a.object({query:a.string().optional(),category:a.string().optional(),featured:a.boolean().optional(),recommended:a.boolean().optional(),sortBy:a.enum(["most_recent","most_liked","alphabetical"]).optional(),visibility:a.enum(["public","private","organization"]).optional(),page:a.number().optional(),limit:a.number().optional()}),a.object({snippets:a.array(Ar),total:a.number(),page:a.number(),limit:a.number(),hasMore:a.boolean()}),a.object({snippetId:a.string(),rating:a.number(),off:a.boolean().optional()}),a.object({average:a.number(),total:a.number()}),a.object({success:a.boolean(),error:a.string().optional()}),a.object({snippet:a.lazy((()=>a.object({title:a.string(),shortDescription:a.string(),category:a.string(),tags:a.array(a.string()),iconSvg:a.string(),contents:a.string(),descriptionMarkdown:a.string(),githubUrl:a.string().optional(),visibility:a.enum(["public","private","organization"]),deletedAt:a.string().optional()})))}),a.object({snippet:a.lazy((()=>a.object({title:a.string(),shortDescription:a.string(),category:a.string(),tags:a.array(a.string()),iconSvg:a.string(),contents:a.string(),descriptionMarkdown:a.string(),githubUrl:a.string().optional(),visibility:a.enum(["public","private","organization"])})))}),a.object({snippet:Tr}),a.object({snippet:Tr}),a.object({snippetId:a.string(),version:a.number()}),a.object({snippet:Tr});let Mr=null;var Pr=()=>{if(!Mr)throw new Error("Required function is not set");return Mr};class Dr extends Error{targetWidgetId;targetPortName;sourcePortName;sourceWidgetId;targetWidgetType;sourceWidgetType;constructor(e,t){super(e),this.name="ChildWidgetError",t.stack&&(this.stack=t.stack),this.targetWidgetId=t.targetWidgetId,this.targetPortName=t.targetPortName,this.sourcePortName=t.sourcePortName,this.sourceWidgetId=t.sourceWidgetId,this.targetWidgetType=t.targetWidgetType,this.sourceWidgetType=t.sourceWidgetType}}class jr extends Error{constructor(e,t){super(e),this.name="UserCodeError",t&&(this.stack=t)}}const Rr=(e,t)=>`\n\t\tfunction _user_code_(){\n\t\t\t${t===gr.Browser?"\n\t\t\tvar global = {\n\t\t\t\t__user_code: true\n\t\t\t};\n\t\t\tvar process = {};\n\t\t\tvar globalThis = global;\n\t\t\tvar require = this.___notSupportedMethod;\n\t\t\t":"\n\t\t\tvar require = this.require;\n\t\t\tvar process = this.kemuProcess;\n\t\t\t"}\n\t\t\t\n\t\t\tvar console = this.console;\n\t\t\tvar eval = () => {};\n\t\t\tvar document = {};\n\t\t\tvar navigator = {};\n\t\t\tvar window = this.window;\n\t\t\tvar alert = this.notify.info;\n\t\t\tvar DataType = this.dataTypesEnum;\n\t\t\tvar setInterval = this.setInterval;\n\t\t\tvar setTimeout = this.setTimeout;\n\t\t\tvar addEventListener = this.addEventListener;\n\t\t\tvar removeEventListener = this.removeEventListener;\n\t\t\tvar requestAnimationFrame = this.___notSupportedMethod;\n\t\t\tvar __delay = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms, reject));\n\t\t\tvar sendToPort;\n\t\t\t// Updated function to send data to the next widget using new object syntax\n\t\t\tvar setOutput;\n\n\t\t\tvar Kemu = {\n\t\t\t\timage: this.imageHelpers,\n\t\t\t\tvariable: this.variablesManager,\n\t\t\t\tstatus: this.statusManager,\n\t\t\t\tsecrets: this.secretsManager,\n\t\t\t\tglobalVars: this.globalVariablesManager,\n\t\t\t\thelpers: {\n\t\t\t\t\tdecodeDataType: this.decodeDataType,\n\t\t\t\t\tcryptoJS: this.CryptoJS,\n\t\t\t\t\tjsonp: this.jsonp,\n\t\t\t\t\thttp: this.http,\n\t\t\t\t\tdelay: __delay,\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t\n\n\t\t\t// --- User Methods Start ---\n\t\t\t${e||""};\n\t\t\t// --- User Methods End ---\n\t\t\t\n\t\t\t// Processes the user code asynchronously.\n\t\t\tconst asyncProcessEvent = async (targetPort, sourcePort, event) => {\n\t\t\t\tlet userProcessEvent = typeof processEvent === 'undefined' ? undefined : processEvent;\n\t\t\t\tlet userOnParentEvent = typeof onParentEvent === 'undefined' ? undefined : onParentEvent;\n\t\t\t\t\n\n\t\t\t\tif(userProcessEvent || userOnParentEvent) {\n\t\t\t\t\ttry{\n\t\t\t\t\t\tif(userProcessEvent) {\n\t\t\t\t\t\t\treturn await userProcessEvent(targetPort, sourcePort, event);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn await userOnParentEvent({ targetPort, sourcePort, event });\n\t\t\t\t\t\t}\n\t\t\t\t\t}catch(e){\n\t\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** invoked the very first time the recipe is initialized */\n\t\t\tconst asyncRecipeInit = async (context) => {\n\t\t\t\ttry {\n\t\t\t\t\tif(typeof recipeInit === 'function') {\n\t\t\t\t\t\treturn recipeInit(context);\n\t\t\t\t\t}\n\t\t\t\t}catch(e){\n\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** invoked every time the code is about to be replaced */\n\t\t\tconst asyncOnTerminate = async (context) => {\n\t\t\t\ttry {\n\t\t\t\t\tif(typeof onTerminate === 'function') {\n\t\t\t\t\t\treturn onTerminate(context);\n\t\t\t\t\t}\n\t\t\t\t}catch(e){\n\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/** updates the function that allows widget contexts to send data to the next widget */\n\t\t\tconst setSendToPort = (sendNextFun) => {\n\t\t\t\tsendToPort = sendNextFun;\n\t\t\t}\n\n\t\t\t/** updates the function that allows widget contexts to send data to the next widget with the new object argument syntax */\n\t\t\tconst setSetOutputFn = (setOutputFn) => {\n\t\t\t\tsetOutput = setOutputFn;\n\t\t\t}\n\n\t\t\t/** invoked the every time the user code is compiled. */\n\t\t\tconst asyncMainEvent = async (sendNextFun) => {\n\t\t\t\ttry{\n\t\t\t\t\t// setSendToPort(sendNextFun);\n\t\t\t\t\tif(typeof main === 'function'){\n\t\t\t\t\t\treturn main();\n\t\t\t\t\t}\n\t\t\t\t}catch(e){\n\t\t\t\t\tthis.__errorTracer(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tasyncProcessEvent: asyncProcessEvent,\n\t\t\t\tmain: asyncMainEvent,\n\t\t\t\trecipeInit: asyncRecipeInit,\n\t\t\t\tsetSendToPortFun: setSendToPort,\n\t\t\t\tsetSetOutputFn: setSetOutputFn,\n\t\t\t\tonTerminate: asyncOnTerminate,\n\t\t\t\tgetLocalContext: () => global,\n\t\t\t\tgetWidgetInputs: typeof getWidgetInputs === 'undefined' ? undefined : getWidgetInputs,\n\t\t\t\tgetWidgetOutputs: typeof getWidgetOutputs === 'undefined' ? undefined : getWidgetOutputs,\n\t\t\t};\n\t\t}\n\t\t\n\t\treturn function compiler(context){\n\t\t\treturn _user_code_.call(context)\n\t\t}\n\n\t\treturn compiler;\n\t`,Lr=(e,t,n,r)=>{const i=Rr(e,n),a={...t,document:{},__errorTracer:e=>{if(e instanceof Dr)throw e;throw new jr(e.message,e.stack)},__jest:void 0===globalThis.__jest?void 0:globalThis.__jest,___notSupportedMethod:()=>r?.error("This method is not supported."),console:{...t.logger},setInterval:()=>r?.error("'setInterval' is not supported. Please use a \"Timer\" widget instead."),setTimeout:t?.setTimeout,imageHelpers:tr.image,...n===gr.Cloud?{require:Pr(),kemuProcess:process.env.KEMU_PROCESS?process.env.KEMU_PROCESS:{}}:{},jsonp:o,CryptoJS:s,decodeDataType:nr,window:{addEventListener:t?.addEventListener,removeEventListener:t?.removeEventListener}};try{const e="browser"===(()=>{if(te)return"browser";if(re)return"node";if(ne)return"worker";throw new Error("Unsupported environment")})()?(e=>e.replace(/[//]{2}[ ]*@kemu-cloud[ \t]*\{[\s\S]*?[//]{2}[ ]*@kemu-cloud[ \t]*\}/gim,""))(i):(e=>e.replace(/[//]{2}[ ]*@kemu-browser[ \t]*\{[\s\S]*?[//]{2}[ ]*@kemu-browser[ \t]*\}/gim,""))(i),t=new Function(e);return{compiledModule:t()(a)}}catch(e){return{error:{name:"CompileError",message:e.message,stack:e.stack}}}},Fr="main",Ur="My Script",Wr="This is a test script.",Br=`\n/**\n * Name: ${Ur}\n * Description: ${Wr}\n */\n\nconst getWidgetInputs = () => [\n\t{ name: 'Input 1', type: DataType.Number }\n];\n\nconst getWidgetOutputs = () => [\n\t{ name: 'Output 1', type: DataType.Number }\n]\n\nlet counter = 0;\n\nconst onParentEvent = async ({ targetPort, sourceWidget, event }) => {\n\tif(targetPort.name === 'Input 1'){\n\t\treturn setOutput({\n\t\t\tport: 'Output 1',\n\t\t\tdata: {\n\t\t\t\ttype: DataType.Number,\n\t\t\t\tvalue: counter++,\n\t\t\t}\n\t\t});\n\t}\n}\n`.trim(),Gr=()=>({pauseExecution:!1,autoPauseOnError:!0,$$eventListeners:{},version:2,metadata:{name:Ur,description:Wr},pages:{[Fr]:{code:Br,language:"javascript",name:"My First Script"}}}),Vr=(e,t)=>{const n={message:"Unknown Error"};if(e?.stack){const r=e?.stack?.split(":")[0].trim();n.type=r;const i=(e=>{const t=/,[ ]?<anonymous>:([0-9]+:[0-9]+)\)/gm;let n;for(;null!==(n=t.exec(e));){n.index===t.lastIndex&&t.lastIndex++;const e=n[1].split(":");if(2===e.length)return{line:Number(e[0])||0,column:Number(e[1])||0}}return null})(e.stack);i&&(n.line=i.line-(e=>{const t="___user_code_section___";return Rr(t,e).split(t)[0].split("\n").length+2})(t),n.column=i.column)}return e.message&&(n.message=e.message),n},Yr=(e,t)=>{const n={...{...Gr(),...t.getState()},$$error:e||void 0};e&&console.error(e.message),t.setState(n)},Hr=new c;let zr,qr,Kr={},Jr={};const Zr=e=>{const t=ue(zr,qr,e);if(!t)throw new Error(`Widget ${e} not found in thing ${qr}`);return t},Xr=(e,t)=>`${e}:${t}`,Qr=e=>`${Zr(e.createdByWidgetId).id}::${e.variableName}`,ei=e=>`${pe}${e}`;var ti=e=>{const t=Zr(e.createdByWidgetId),n=Qr({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});Jr[n]={type:e.type,subscriberWidgetId:t.id,subscriberWidgetType:t.type}},ni=e=>{const t=Qr({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});delete Jr[t]},ri=async e=>{const t=Zr(e.setByWidgetId);if(!t)throw new Error(`Widget ${e.setByWidgetId} not found in thing ${qr} in recipe ${zr}`);const n=e.variableName.startsWith(pe)?Qr({variableName:e.variableName,createdByWidgetId:e.setByWidgetId}):e.variableName;Kr[n]={value:e.value,type:e.type};const r={value:e.value,type:e.type,varName:e.variableName,isUIElement:e.variableName.startsWith(pe),setByWidgetType:t.type,setByWidgetId:e.setByWidgetId};await Hr.emit(Xr(e.variableName,e.type),r),e.type!==ye.Anything&&await Hr.emit(Xr(e.variableName,ye.Anything),r)},ii=e=>{const{readerWidgetId:t,variableName:n}=e;if(!Zr(t))throw new Error(`Widget ${t} not found in thing ${qr} in recipe ${zr}`);const r=n.startsWith(pe)?Qr({variableName:e.variableName,createdByWidgetId:e.readerWidgetId}):n,i=Kr[r];if(i)return{type:i.type,value:i.value}},oi=e=>{const{widgetId:t,variableName:n,type:r}=e;if(!Zr(t))throw new Error(`Widget ${t} not found in thing ${qr} in recipe ${zr}`);const i=Xr(n,r);let o;return o=Hr.on(i,(async r=>{ue(zr,qr,t)?await e.onValueChange(r):(console.warn(`Zombie widget ${t} detected, unsubscribing from variable events "${n}"`),o?.())})),o},si=e=>{Jr={},Kr={},zr=e.recipePoolId,qr=e.thingId};const ai="setTimeout",ci="variableChanged",li="globalVariableChanged",ui=e=>{const{recipePoolId:t,thingId:n,scriptWidgetId:r}=e,i=ue(t,n,r);if(!i)throw new Error(`Widget "${r}" not found in recipe "${t}"`);const o=(e,t)=>{const n=ii({readerWidgetId:r,variableName:e});if(n||t)return void 0===n?{value:t?.value??t,type:t?.type??We(t)}:{value:n.value,type:n.type}},s=(t,n,o)=>{if(!e.setState)return void console.warn("Cannot subscribe to variable changes without a setState function");const s={...Gr(),...e.getState()},a=oi({variableName:t,type:ye.Anything,widgetId:r,onValueChange:async e=>{n?e.setByWidgetType===Ke.widgetGroup&&e.setByWidgetId===i.groupId&&await o(e):o(e)}});delete s.$$eventListeners[t],s.$$eventListeners[t]={handler:o,abort:async()=>{a()},name:ci},e.setState(s)};return{get:o,set:async(e,t,n)=>{await ri({variableName:e,type:n||We(t),setByWidgetId:r,value:t})},onValueChange:(e,t)=>{s(e,!1,t)},onUIValueChange:(e,t)=>{const n=ei(e);s(n,!0,t)},getUIValue:e=>{const r=ei(e),s=o(r);if(s)return{value:s.value,type:s.type};const a=i.groupId;if(!a)throw new Error("You can only read UI variables from inside a widgetGroup");const c=ue(t,n,a);if(!c)throw new Error(`Widget "${a}" not found in recipe "${t}"`);const l=c.state,u=(l.settings||[]).find((t=>t.variableName===e));if(!u)throw new Error(`Field "${e}" not found in widgetGroup "${l.name}"`);const d=u.config.defaultValue;if(void 0===d)throw new Error(`Field "${e}" in widgetGroup "${l.name}" has no default value`);return{value:d,type:We(d)}}}};let di;var hi=e=>{di=e},fi=()=>{if(!di)throw new Error("Hub Connector not set");return di};const pi=new c,gi="invoked";let mi={},yi={},vi={},bi={};const wi=(e,t,n)=>`${e}-${t}${n?`-${n}`:""}`;var Si=e=>{const{data:t,thingId:n,widgetId:r,sourcePortName:i,recipeId:o,target:s,sourceOutputNames:a,currentPath:c,eventId:l}=e,u=wi(n,r,i),d=wi(n,r),h=wi(n,r,"produced"),f=vi[d],p=Date.now();bi[d]=p,mi[u]={data:t,recipeId:o,currentPath:c,eventId:l,source:{widgetId:r,portName:i},sourceOutputNames:a,...s?{target:{widgetId:s.widgetId,portName:s.portName}}:{}},pi.emit(h,{currentTime:p,prevTime:f,...s?{targetPort:s?.portName}:{}})},_i=e=>{const{thingId:t,widgetId:n,targetPortName:r,data:i,source:o,originalEvent:s,recipeId:a,sourceOutputNames:c,currentPath:l,eventId:u}=e,d=wi(t,n,r),h=wi(t,n),f=wi(t,n,gi),p=vi[h],g=Date.now();vi[h]=g,yi[d]={data:i,recipeId:a,originalEvent:s,sourceOutputNames:c,currentPath:l,eventId:u,target:{widgetId:n,portName:r},...o?{source:{widgetId:o.widgetId,portName:o.portName}}:{}},pi.emit(f,{prevTime:p,currentTime:g,targetPort:r,sourceInfo:o})},Ii=()=>{mi={},yi={},vi={},bi={},pi.clearListeners()};const xi=e=>{const{recipePoolId:t,widgetId:n,secrets:r,clearExistingSecrets:i}=e,o=le({recipeId:t,widgetId:n});if(!o)throw new Error(`Widget [${n}] not found in recipe [${t}]`);i&&(o.secrets={});for(const e of r)o.secrets={...o.secrets,[e.name]:e}},ki=e=>{const{recipePoolId:t,widgetId:n}=e,r=le({recipeId:t,widgetId:n});if(!r)throw new Error(`Widget [${n}] not found in recipe [${t}]`);delete r.secrets},Ei={},Ci="value",$i=async e=>{const{recipeUuid:t,secretNames:n,serviceName:r}=e,i=fi(),o=[{recipeUuid:t,secretNames:n,serviceName:r}];let s={};try{const e=await i.executeHubFunction(Se.GetRecipeDecryptedSecretsValues,o);e&&(s=e[0].secrets)}catch(e){if("FNC_NOT_FOUND"===e.errCode)throw new Error("Your Hub does not support dynamic secrets. Please update your Hub to the latest version.");throw new Error(`Failed to read secret "${n.join(", ")}" from Hub: ${e.message}`)}return s},Oi=e=>{const t=ae(e);if(!t)throw new Error(`Recipe [${e}] does not exist]`);return{uuid:t.uuid,recipeType:t.dbInfo?.recipeType}};var Ni={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};if(!i.name||!e)return;const{uuid:o}=Oi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=r.recipeType===me.Desktop,a=Ei[r.id]?.[i.name];let c=a;if(!a||a&&!s){const e=await $i({recipeUuid:o,secretNames:[i.name]});c=e?.[i.name],null!=c&&s&&(Ei[r.id]||(Ei[r.id]={}),Ei[r.id][i.name]=c)}if(null==c)throw new Error(`Secret "${i.name}" not mapped to this recipe`);r.nextWidget(Ci,{type:ye.String,value:c})},getOutputNames:()=>[{name:Ci,type:ye.String}],getInputNames:()=>[{name:"read",type:ye.Anything}],terminate:async e=>{Ei[e.widgetId]={},ki({recipePoolId:e.recipePoolId,widgetId:e.widgetId})},initialize:async e=>{const t={name:"",...e.getState()};t.name&&(Ei[e.widgetId]={},xi({recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:[{name:t.name}]}))}};const Ti={},Ai=e=>{const{recipePoolId:t,thingId:n,scriptWidgetId:r}=e,i=ae(t),o=i?.dbInfo.recipeType,s=Oi(t).uuid,a=ue(t,n,r);return{secretsManager:{requestAccess:e=>{a&&(a.secrets={...a.secrets,[e]:{name:e}})},read:async e=>{if(!a)return e.reduce(((e,t)=>(e[t]=null,e)),{});const t=o===me.Desktop,n={};let i=[];for(const t of e){const e=Ti[r]?.[t];null==e&&i.push(t)}if(t||(i=e),i.length>0){const t=await $i({recipeUuid:s,secretNames:i});for(const i of e){const e=t?.[i],o=Ti[r]?.[i];n[i]=void 0!==e?e:void 0!==o?o:null}Ti[r]={...Ti[r],...n}}else for(const t of e)n[t]=Ti[r]?.[t]||null;return n}},unregisteredSecrets:()=>{a&&(a.secrets={})}}},Mi=new c;let Pi={};const Di="statusValueChanged",ji="keyRemovedFromWidget",Ri=()=>{Pi={}},Li=()=>{Mi.clearListeners()},Fi=e=>{Mi.emit(Di,e)};var Ui=e=>{const{name:t,value:n,sourceWidget:r,widgetId:i,widgetType:o}=e;Pi[i]=Pi[i]||[];const s=Pi[i].find((e=>e.name===t&&e.widgetType===o&&e.widgetId===i));s?s.data=n:Pi[i].push({name:t,data:n,sourceWidget:r,widgetId:i,widgetType:o});let a=n;null===n&&(a={type:ye.Anything,value:""}),Fi({name:t,value:a,sourceWidget:r,statusWidgetId:i,widgetType:o})},Wi=e=>Mi.on(Di,e),Bi=()=>{Ri(),Li()},Gi=e=>{const t=()=>{const e=[];for(const t in Pi)for(const n of Pi[t])e.push(n.name);return e},n=t();delete Pi[e];(e=>{Mi.emit(ji,e)})({before:n,after:t()})};const Vi=e=>{const{scriptWidgetId:t}=e;return{statusManager:{set:(e,n)=>{let r=null;r=n&&"object"==typeof n&&"value"in n&&"type"in n||null==n||void 0===n?n:{type:We(n),value:n},Ui({name:e,sourceWidget:t,widgetId:t,value:r,widgetType:Ke.script})}},clearStatusValues:()=>{Gi(t)}}},Yi=new c,Hi=e=>`globalVariableChange_${e}`,zi=e=>`globalVariableGroupChange_${e}`,qi=e=>`globalVariableParentGroupStateChange_${e}`,Ki=e=>`globalVariableRenamed_${e}`;let Ji={};const Zi=e=>{const{name:t,notify:n=!0}=e,r=Qi(t);if(!r)return;if("group"===r.controlType){const e=to().filter((e=>e.group===t));for(const t of e)Zi({name:t.name,notify:n})}n&&Yi.emit("globalVariableRemoved",r),delete Ji[t]},Xi=()=>{for(const e in Ji)Zi({name:e,notify:!0})},Qi=e=>Ji[e]??null,eo=async e=>{const{value:t,lastDataType:n,controlType:r,widgetId:i,doNotOverrideExisting:o=!1,executionContext:s,helpText:a,order:c,forceValueChangeNotification:l=!1,disableChangeNotifications:u=!1,disableDefineNotifications:d=!1,group:h}=e;let{controlSettings:f,name:p}=e;if(!p)throw new Error("name is required");p=p.replace(/-/g,"_");let g=Qi(p);const m=!g,y=!!g;if(m)g={},f||(f=(e=>{switch(e){case"number":case"slider":return{min:0,max:100,step:1};case"dropdown":case"multiSelect":return{options:[]};case"binaryFile":return{allowedMimeTypes:[]};default:return{}}})(r??"anything"));else if(o)return;const v=n??(t?We(t):null),b=t!==g.lastValue,w=h!==g.group&&void 0!==h;g.lastDataType=v,g.lastValue=t,g.controlType=r??g.controlType??"anything",g.lastChangedByWidgetId=i??null,g.lastExecutionContext=s??null,g.helpText=a??g.helpText,g.controlSettings=f??g.controlSettings,g.name=p,g.order=c??g.order,g.group=void 0!==h?h:g.group,Ji[p]=g,u||null!==t&&(b||l)&&(await Yi.emit(Hi(p),g),await Yi.emit("globalVariableChange_any",g)),y&&w&&await Yi.emit(zi(p),g),m&&!d&&await Yi.emit("globalVariableDefined",g)},to=()=>Object.values(Ji),no=e=>to().filter((t=>t.group===e)),ro={resetAllGlobalVariables:Xi,getGlobalVariable:Qi,setGlobalVariable:eo,onGlobalVariableChange:(e,t)=>Yi.on(Hi(e),t),onGlobalVariableParentGroupChange:(e,t)=>Yi.on(zi(e),t),onVarParentGroupStateChange:(e,t)=>Yi.on(qi(e),t),notifyGroupMembersOfParentGroupChange:async e=>{const t=no(e),n=Qi(e);if(n)for(const e of t)await Yi.emit(qi(e.name),{variable:e,parentGroup:n})},deleteGlobalVariable:Zi,onGlobalVariableDefined:e=>Yi.on("globalVariableDefined",e),onGlobalVariableRemoved:e=>Yi.on("globalVariableRemoved",e),onGlobalVariableRenamed:(e,t)=>Yi.on(Ki(e),t),onAnyGlobalVariableChange:e=>Yi.on("globalVariableChange_any",e),getAllVariables:to,renameVariable:e=>{const{oldName:t,newName:n}=e,r=Qi(t);if(!r)throw new Error("Global variable not found");if("group"===r.controlType){const e=no(t);for(const t of e)eo({name:t.name,value:t.lastValue,lastDataType:t.lastDataType??null,controlType:t.controlType,controlSettings:t.controlSettings,widgetId:t.lastChangedByWidgetId??void 0,executionContext:t.lastExecutionContext??void 0,helpText:t.helpText??void 0,order:t.order??void 0,group:n,disableChangeNotifications:!0,disableDefineNotifications:!0})}Zi({name:t,notify:!1}),eo({name:n,controlSettings:r.controlSettings,value:r.lastValue,lastDataType:r.lastDataType??null,controlType:r.controlType,widgetId:r.lastChangedByWidgetId??void 0,executionContext:r.lastExecutionContext??void 0,helpText:r.helpText??void 0,order:r.order??void 0,group:r.group??void 0}),Yi.emit(Ki(t),{oldName:t,newName:n})},registerGlobalVariables:e=>{Xi(),Ji={};for(const t of e)Ji[t.name]=t},getVariablesInGroup:no,isGroupVariable:e=>"group"===e.controlType},io="kemu.io.scriptHttp",oo=e=>{const{recipePoolId:t,widgetId:n,httpConfig:r}=e,i=fi();let o;const s=(e=>e.find((e=>e.name===io&&e.internal))||null)(i.getCachedServices().available);if(!s)throw new Error("HTTP service not found");const a={listener:{recipeId:t},targetService:{serviceName:io,version:"1.0.0"}};i.subscribeToServiceEvents(a);const c=i.onBroadcastEvent(n,io,"1.0.0",(e=>{const t=e.outputs?.find((e=>"stream"===e.name));if(t){const e=t.value;o=e.requestId,r.onStream&&r.onStream(e)}})),l=he(t),u={currentState:{},recipe:l,recipeType:l.type,widgetId:n,recipeId:t},d=(e,t)=>i.callProcessorHandler(s.sessionId,u,e,t,{timeout:0});return{promise:d("send",r),abort:async()=>{c(),o&&await d("abort",{requestId:o})}}},so="__command-compile__",ao={};let co;const lo=()=>{throw new Error("Method not implemented")},uo=e=>{const{features:t,widgetContext:n,widgetEnvInfo:i}=e,o=(e,...t)=>{const r={...Gr(),...n.getState()}.$$eventListeners[e];r&&r.handler(t)},s={};Object.keys(ye).forEach((e=>{s[e]=ye[e]}));const a=Ai({recipePoolId:i.recipePoolId,thingId:i.thingId,scriptWidgetId:i.widgetId}),c=Vi({scriptWidgetId:i.widgetId}),l=(e=>{const{scriptWidgetId:t}=e,n=(t,n)=>{if(!e.setState)return void console.warn("Cannot subscribe to global variable changes without a setState function");const r={...Gr(),...e.getState()},i=async e=>{const t={name:e.name,value:e.lastValue,type:e.lastDataType,controlType:e.controlType};try{await n(t)}catch(e){console.error("Error in global variable change handler:",e)}},o=t?ro.onGlobalVariableChange(t,i):ro.onAnyGlobalVariableChange(i),s=t?`globalVar_${t}`:"anyGlobalVar";t&&r.$$eventListeners[s]&&delete r.$$eventListeners[s],r.$$eventListeners[s]={handler:n,abort:async()=>{o()},name:li},e.setState(r)};return{get:e=>{const t=ro.getGlobalVariable(e);return t?{name:t.name,value:t.lastValue,type:t.lastDataType,controlType:t.controlType}:null},set:async e=>{const n=e.type?e.type:We(e.value);e.group&&(ro.getGlobalVariable(e.group)||await ro.setGlobalVariable({name:e.group,value:null,controlType:"group",controlSettings:{},helpText:e.groupHelpText||void 0})),await ro.setGlobalVariable({name:e.name,value:e.value,lastDataType:n,helpText:e.helpText,order:e.order,controlType:e.controlType??"anything",controlSettings:e.controlSettings,widgetId:t,disableChangeNotifications:!(e.emitChangeEvent??1),disableDefineNotifications:!(e.emitDefineEvent??1),group:e.group})},onValueChange:(e,t)=>{n(e,t)},onAnyValueChange:e=>{n(null,e)}}})({scriptWidgetId:i.widgetId,getState:n.getState,setState:n.setState});a.unregisteredSecrets(),c.clearStatusValues(),ao[i.widgetId]?.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}));return{logger:po(),dataTypesEnum:s,recipePoolId:i.recipePoolId,widgetId:i.widgetId,http:e=>{const{promise:t,abort:n}=oo({httpConfig:e,recipePoolId:i.recipePoolId,widgetId:i.widgetId});ao[i.widgetId]={abortHttp:n};return t.abort=async()=>{delete ao[i.widgetId],await n()},t},notify:{success:e=>{n.getState()?.$$managedUI?.notify?.success(e)},error:e=>{n.getState()?.$$managedUI?.notify?.error(e)},info:e=>{n.getState()?.$$managedUI?.notify?.info(e)}},variablesManager:t.variablesManager?ui({recipePoolId:i.recipePoolId,scriptWidgetId:i.widgetId,thingId:i.thingId,getState:n.getState,setState:n.setState}):{get:lo,set:async()=>lo(),onValueChange:lo,onUIValueChange:lo,getUIValue:lo},statusManager:c.statusManager,secretsManager:a.secretsManager,globalVariablesManager:l,setTimeout:(e,o,s)=>{if(t.withTimers&&n&&n.setState&&n.registerInterrupt){const t=r(),a={...Gr(),...n.getState()};a.$$eventListeners[t]={handler:e,rejectHandler:s,name:ai},n.setState(a),n.registerInterrupt({type:"timeout",customTargetPortName:t,sourceWidgetId:i.widgetId,config:{timeout:o},customId:t})}},addEventListener:(e,t)=>{if(n.setState){const i=r(),s={...Gr(),...n.getState()};s.$$eventListeners[i]={handler:t,name:e},n.setState(s),window.addEventListener(e,o.bind(i))}else console.warn(`Cannot remove event listener '${e}' because the widget context is not available.`)},removeEventListener:(e,t)=>{if(n.setState){const r={...Gr(),...n.getState()},i=Object.keys(r.$$eventListeners).find((n=>r.$$eventListeners[n].name===e&&r.$$eventListeners[n].handler===t));n.setState(r),i&&removeEventListener(r.$$eventListeners[i].name,r.$$eventListeners[i].handler)}else console.warn(`Cannot remove event listener '${e}' because the widget context is not available.`)}}},ho=(e,t,n)=>{const r={...Gr(),...n.getState()},i=r.pages[Fr].$$compiledCode;if(i)return{compiledModule:i};{const i=uo({features:e,widgetContext:n,widgetEnvInfo:t});return Lr(r.pages[Fr].code,i,n.recipeType)}},fo=e=>e.map((e=>({...e,name:e.name.replace("_","")}))),po=()=>{const e=(e,...t)=>{if(co)try{return co[e](...t)}catch(e){return void console.log("Error in custom logger: ",e)}console[e](...t)};return{log:(...t)=>{e("log",...t)},error:(...t)=>{e("error",...t)},warn:(...t)=>{e("warn",...t)},info:(...t)=>{e("info",...t)}}},go=async(e,t)=>{const n={...e};for(const r in e){if(e[r].name===ai){const e=n[r]?.rejectHandler;if("function"==typeof e)try{await e("TIMER_ABORTED")}catch(e){console.log("Error in reject interrupt handler: ",e)}t.cancelInterrupt(r),delete n[r]}}return n},mo=async e=>{const t={...e};for(const r in e){if((n=e[r]).name===ci||n.name===li){const n=e[r]?.abort;if("function"==typeof n)try{await n()}catch(e){console.log("Error in abort interrupt handler: ",e)}delete t[r]}}var n;return t},yo=async(e,t,n)=>{let r={...Gr(),...e.getState()};if(void 0!==n){r.pages[Fr]?.$$compiledCode?.onTerminate&&await(r.pages[Fr].$$compiledCode?.onTerminate());let t=await go(r.$$eventListeners,e);t=await mo(t),r.$$eventListeners=t,r.pages[Fr].$$compiledCode=void 0,r.pages[Fr].code=n,e.setState({...r})}const i=!r.pages[Fr].$$compiledCode,{compiledModule:o,error:s}=ho({variablesManager:!0,withTimers:!0},{recipePoolId:e.recipePoolId,thingId:e.thingRecipeId,widgetId:e.id},{getState:e.getState,setState:e.setState,recipeType:e.recipeType,registerInterrupt:e.registerInterrupt});if(s){console.log("Failed to compile user code");const t=Vr(s,e.recipeType);return Yr(t,e),null}if(o){let n;r={...e.getState()},r.pages[Fr].$$compiledCode=o;const s=vo(r.pages[Fr].code);s?.name===r.metadata?.name&&s?.description===r.metadata?.description||(r.metadata=s||void 0);const a=e.nextWidget||e.nextGate;if(a&&o.setSendToPortFun(a),e.invokeNextWidget&&o.setSetOutputFn(e.invokeNextWidget),t)try{await o.recipeInit({setState:e.setState,getState:e.getState})}catch(t){n=Vr(t,e.recipeType)}if(a&&i)try{await o.main()}catch(t){n=Vr(t,e.recipeType)}r.$$lastInputs=o.getWidgetInputs?o.getWidgetInputs():[],r.$$lastOutputs=o.getWidgetOutputs?o.getWidgetOutputs():[],e.setState(r),Yr(n,e)}},vo=e=>{const t=e.trimStart().match(/^(?:\/\*\*(?:[^*]|\*(?!\/))*\*\/|\/\*(?:[^*]|\*(?!\/))*\*\/)/);if(!t)return null;const n=t[0].replace(/^\/\*\*?/,"").replace(/\*\/$/,"").split("\n").map((e=>e.replace(/^\s*\*?\s?/,"").trim())).join("\n"),r=n.match(/Name\s*:\s*([^]*?)(?=\n\s*[A-Za-z]+\s*:|$)/i),i=n.match(/Description\s*:\s*([^]*?)(?=\n\s*[A-Za-z]+\s*:|$)/i),o={};return r&&r[1]&&(o.name=r[1].trim()),i&&i[1]&&(o.description=i[1].trim()),Object.keys(o).length>0?o:null};var bo={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Gr(),...i};if(!o.pages[Fr])return console.warn("Missing default page");if(Re(e?.name||""))return o.$$eventListeners[t.name]?(await o.$$eventListeners[t.name].handler(),o.$$eventListeners[t.name].name===ai&&delete o.$$eventListeners[t.name],void r.setState({...o})):void console.log(`Unknown interrupt id [${t.name}] `);const s=t.name===so;await yo(r,!1,s?n.data.value:void 0);const a=o.pages[Fr].$$compiledCode;if(e&&e.name!==so&&a)try{await a.asyncProcessEvent(t,e,{...n,executionContext:{currentPath:r.currentPath,eventId:r.eventId}})}catch(e){if("UserCodeError"===e.name){const t=Vr(e,r.recipeType);throw Yr(t,r),t}throw e}},getInputNames:(e,t)=>{const n={...Gr(),...e},{compiledModule:r}=ho({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetInputs){const e=r.getWidgetInputs();return fo(e)}return e.$$lastInputs||[]},getOutputNames:(e,t)=>{const n={...Gr(),...e},{compiledModule:r}=ho({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetOutputs){const e=r.getWidgetOutputs();return fo(e)}return e.$$lastOutputs||[]},getDefaultState:Gr,initialize:async e=>{const t=e.getState(),n={...Gr(),...t};n.pages[Fr].code&&await yo({getState:e.getState,id:e.widgetId,recipePoolId:e.recipePoolId,recipeType:e.recipeType,registerInterrupt:e.registerInterrupt,setState:e.setState,nextWidget:e.nextWidget,invokeNextWidget:e.invokeNextWidget,thingRecipeId:e.thingRecipeId,cancelInterrupt:()=>!0},!0,n.pages[Fr].code)},terminate:async e=>{try{const t=e.getState();t.pages[Fr].$$compiledCode?.onTerminate&&await t.pages[Fr].$$compiledCode.onTerminate();const n=e=>tt.destroyInterrupt(e),r=await go(t.$$eventListeners,{cancelInterrupt:n});await mo(r);const i=Vi({scriptWidgetId:e.widgetId});Ai({recipePoolId:e.recipePoolId,thingId:e.thingRecipeId,scriptWidgetId:e.widgetId}).unregisteredSecrets(),i.clearStatusValues();for(const e of Object.values(ao))e.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}))}catch(t){console.warn(`Error terminating script widget ${e.widgetId}: `,t)}}};const wo=new Map,So=e=>(wo.has(e)||wo.set(e,Ce(320,240)),wo.get(e)),_o=Object.freeze({image:"image"}),Io=Object.freeze({base64:"base64"}),xo=()=>({});var ko={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};if(t.name===Io.base64){if("string"!=typeof n.data.value)return;if(n.data.type!==ye.String&&n.data.type!==ye.Anything)return;const e=n.data.value,t=So(r.id);try{const n=await ze({base64Str:e,memoryCanvas:t,finalW:i.resize?.width,finalH:i.resize?.height});return r.setState(i),r.nextGate(_o.image,{type:ye.ImageData,value:n})}catch(e){console.log("[base64ToImageData] Error: ",e)}}},getInputNames:()=>[{name:Io.base64,type:ye.String}],getOutputNames:()=>[{name:_o.image,type:ye.ImageData}],getDefaultState:xo,initialize:async e=>{So(e.widgetId)},terminate:async e=>{wo.delete(e.widgetId)}};const Eo=Object.freeze({object:"object",error:"error"}),Co=Object.freeze({string:"string"}),$o=()=>({outputIsArray:!1});var Oo={onParentEvent:async(e,t,n,r)=>{const i={outputIsArray:!1,...r.getState()};if((n.data.type===ye.String||n.data.type===ye.Anything)&&"string"==typeof n.data.value)try{const e=JSON.parse(n.data.value),t=Array.isArray(e);return t&&!i.outputIsArray?r.setState({...i,outputIsArray:!0}):!t&&i.outputIsArray&&r.setState({...i,outputIsArray:!1}),r.nextGate("object",{type:t?ye.Array:ye.JsonObj,value:e})}catch(e){return r.nextGate("error",{type:ye.Boolean,value:!0})}},getInputNames:()=>[{name:Co.string,type:ye.String}],getOutputNames:e=>[{name:Eo.object,type:[ye.JsonObj,ye.Array],label:e.outputIsArray?"array":Eo.object},{name:Eo.error,type:ye.Boolean}],getDefaultState:$o};const No=Object.freeze({string:"string",length:"length"}),To=Object.freeze({trigger:"trigger",setText:"setText"}),Ao=()=>({text:"",dispatchOnSet:!1});var Mo={onParentEvent:async(e,t,n,r)=>{const i={text:"",dispatchOnSet:!1,...r.getState()};if(t.name===To.setText){if(!((n.data.type===ye.String||n.data.type===ye.Anything)&&"string"==typeof n.data.value))return;if("string"==typeof n.data.value&&(i.text=n.data.value,r.setState(i)),!i.dispatchOnSet)return}const o=r.nextGate(No.length,{type:ye.Number,value:i.text.length}),s=r.nextGate(No.string,{type:ye.String,value:i.text});await Promise.all([o,s])},getInputNames:e=>{const t=[{name:To.setText,type:ye.String}];return e.dispatchOnSet||t.push({name:To.trigger,type:ye.Anything}),t},getOutputNames:()=>[{name:No.string,type:ye.String},{name:No.length,type:ye.Number}],getDefaultState:Ao};const Po=Object.freeze({image:"image"}),Do=Object.freeze({image:"image",x:"x",y:"y",width:"width",height:"height"}),jo=()=>({showInputPorts:!1});var Ro={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===Do.x&&(i.cropX=n.data.value),t.name===Do.y&&(i.cropY=n.data.value),t.name===Do.width&&(i.cropWidth=n.data.value),t.name===Do.height&&(i.cropHeight=n.data.value),void r.setState(i);if(t.name===Do.image){if(n.data.type!==ye.ImageData&&n.data.type!==ye.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ce(320,240),i.$$memCanvasContext=$e(i.$$memCanvas),r.setState(i)),!i.$$memCanvas||!i.$$memCanvasContext)return void console.error("Failed to get canvas or context");let t=e;return i.$$memCanvas.width=e.width,i.$$memCanvas.height=e.height,(i.cropX||i.cropY||i.cropWidth||i.cropHeight)&&(t=((e,t,n,r)=>{if(!n)return e;const i=Math.max(r.x||0,0),o=Math.max(r.y||0,0),s=e.width,a=e.height,c=Math.min(Math.ceil(r.width||s),s),l=Math.min(Math.ceil(r.height||a),a);return t.width=e.width,t.height=e.height,n.putImageData(e,0,0),n.drawImage(t,i,o,c,l,0,0,c,l),n.getImageData(0,0,c,l)})(e,i.$$memCanvas,i.$$memCanvasContext,{x:i.cropX,y:i.cropY,width:i.cropWidth,height:i.cropHeight})),r.nextGate(Po.image,{type:ye.ImageData,value:t})}},getInputNames:e=>{const t=[{name:Do.image,type:[ye.ImageData]}];return e.showInputPorts&&(t.push({name:Do.x,type:ye.Number}),t.push({name:Do.y,type:ye.Number}),t.push({name:Do.width,type:ye.Number}),t.push({name:Do.height,type:ye.Number})),t},getOutputNames:()=>[{name:Po.image,type:ye.ImageData}],getDefaultState:jo};const Lo=Object.freeze({image:"image"}),Fo=Object.freeze({image:"image",width:"width",height:"height"}),Uo=()=>({showInputPorts:!1});var Wo={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===Fo.width&&(i.width=n.data.value),t.name===Fo.height&&(i.height=n.data.value),void r.setState(i);if(t.name===Fo.image){if(n.data.type!==ye.ImageData&&n.data.type!==ye.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ce(320,240),i.$$tempCanvas=Ce(320,240),r.setState(i)),!i.$$memCanvas||!i.$$tempCanvas)return;let t=e;return(i.width||i.height)&&(t=((e,t,n,r,i)=>{if(!r&&!i)return e;r&&!i?i=r*(e.height/e.width):!r&&i&&(r=i*(e.width/e.height));const o=Math.max(1,r||e.width),s=Math.max(1,i||e.height);n.width===e.width&&n.height===e.height||(n.width=e.width,n.height=e.height),t.width=o,t.height=s;const a=$e(t),c=$e(n);if(!a||!c)throw new Error("Failed to get canvas context");return c.putImageData(e,0,0),a.drawImage(n,0,0,e.width,e.height,0,0,o,s),a.getImageData(0,0,o,s)})(e,i.$$memCanvas,i.$$tempCanvas,i.width,i.height)),r.nextGate(Lo.image,{type:ye.ImageData,value:t})}},getInputNames:e=>{const t=[{name:Fo.image,type:ye.ImageData}];return e.showInputPorts&&(t.push({name:Fo.width,type:ye.Number}),t.push({name:Fo.height,type:ye.Number})),t},getOutputNames:()=>[{name:Lo.image,type:ye.ImageData}],getDefaultState:Uo};const Bo=Object.freeze({value:"value"}),Go=Object.freeze({trigger:"trigger",setValue:"setValue"}),Vo=()=>({value:0,dispatchOnSet:!1});var Yo={onParentEvent:async(e,t,n,r)=>{const i={value:0,dispatchOnSet:!1,...r.getState()};if(t.name===Go.setValue){const e=n.data.type===ye.Number||n.data.type===ye.Anything||n.data.type===ye.String,t=!isNaN(Number(n.data.value))&&!Array.isArray(n.data.value);if(!e||!t)return;if(i.value=Number(n.data.value),r.setState(i),!i.dispatchOnSet)return}return r.nextGate(Bo.value,{type:ye.Number,value:i.value})},getInputNames:e=>{const t=[{name:Go.setValue,type:ye.Number}];return e.dispatchOnSet||t.push({name:Go.trigger,type:ye.Anything}),t},getOutputNames:()=>[{name:Bo.value,type:ye.Number}],getDefaultState:Vo};const Ho=Object.freeze({image:"image"}),zo=Object.freeze({image:"image"}),qo=()=>({anchors:[],vertices:[],matrix:[]}),Ko={onParentEvent:async(e,t,n,r)=>{const i={anchors:[],vertices:[],matrix:[],...r.getState()},o=window,s=n.data.type===ye.ImageData;if(o.Speedy&&s){const e=o.Speedy,t=n.data.value;let s,u,d,h=i.$$private?.canvas,f=i.$$private?.context,p={...i};const g=4===i.anchors.length;if(i.$$private?.pipeline)s=i.$$private?.pipeline,u=i.$$private?.source;else{s=e.Pipeline(),u=e.Image.Source();const n=e.Image.Sink();d=e.Transform.PerspectiveWarp(),h?h.width===t.width&&h.height===t.height||(h.width=t.width,h.height=t.height,f=h.getContext("2d")):(c=t.width,l=t.height,h=Ce(c,l),f=h.getContext("2d")),u.output().connectTo(d.input()),d.output().connectTo(n.input()),s.init(u,n,d);let r=e.Matrix(3,3,[1,0,0,0,1,0,0,0,1]);if(4===i.anchors.length){const t=e.Matrix(2,4,[(a=i.anchors)[0].x,a[0].y,a[1].x,a[1].y,a[2].x,a[2].y,a[3].x,a[3].y]),n=e.Matrix(2,4,i.vertices.reduce(((e,t)=>e.concat([t.x,t.y])),[])),o=e.Matrix.Zeros(3,3);await e.Matrix.perspective(o,t,n);const s=o.read();r=e.Matrix(3,3,s)}d.transform=r,p={...p,$$private:{...p.$$private,canvas:h,context:f,perspective:d,pipeline:s,source:u}}}let m=t;if(g){const e=await(async(e,t)=>{const n=window,r=e.$$private?.source,i=e.$$private?.pipeline;if(n.Speedy&&r&&i){const e=n.Speedy,o=await createImageBitmap(t),s=await e.load(o);return r.media=s,(await i.run()).image.source}return null})(p,m);e&&(h&&f&&(m=((e,t,n)=>(t.width=e.width,t.height=e.height,n.drawImage(e,0,0),n.getImageData(0,0,e.width,e.height)))(e,h,f)),p.$$private&&r.setState({...p,$$private:{...p.$$private,lastInputImage:t}}))}else p.$$private&&r.setState({...p,$$private:{...p.$$private,lastInputImage:t}});return r.nextGate(Ho.image,{type:ye.ImageData,value:m})}var a,c,l;console.log("Environment not supported")},getInputNames:()=>[{name:zo.image,type:ye.ImageData}],getOutputNames:()=>[{name:Ho.image,type:ye.ImageData}],getDefaultState:qo,terminate:async e=>{const t=e.getState();t.$$private?.pipeline.release()}},Jo=Object.freeze({event:"event"}),Zo="1",Xo="2",Qo="3";var es={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};r.setState({...i,$$lastEventType:n.data.type}),await r.nextGate(Zo,n.data),await r.nextGate(Xo,n.data),await r.nextGate(Qo,n.data)},getInputNames:()=>[{name:Jo.event,type:ye.Anything}],getOutputNames:e=>{const t={type:{...e}.$$lastEventType??ye.Anything};return[{name:Zo,...t},{name:Xo,...t},{name:Qo,...t}]}};const ts=()=>({name:"myVar",type:ye.Anything,reactive:!0,defaultValue:""}),ns=Object.freeze({set:"set",read:"read"}),rs="value";var is={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...ts(),...i};if(t.name!==ns.set){if(t.name===ns.read){const e=ii({variableName:o.name,readerWidgetId:r.id}),t=e?e.value:o.defaultValue;await r.nextWidget(rs,{type:o.type,value:t})}}else{if(n.data.type!==o.type&&o.type!==ye.Anything)return;await ri({variableName:o.name,value:n.data.value,setByWidgetId:r.id,type:o.type})}},getInputNames:e=>{const t={...e};return[{name:ns.set,type:t.type||ye.Anything},{name:ns.read,type:ye.Anything}]},getOutputNames:e=>{const t={...e};return[{name:rs,type:t.type||ye.Anything}]},initialize:async e=>{const t=e.getState(),n={...ts(),...t};if(n.$$abortListener)try{n.$$abortListener()}catch(t){console.warn(`Error aborting variable listener for widget ${e.widgetId}: `,t)}ti({variableName:n.name,type:n.type,createdByWidgetId:e.widgetId});const r=oi({variableName:n.name,type:n.type,widgetId:e.widgetId,onValueChange:async t=>{const n=e.getState();void 0!==t.value&&(n.type!==ye.Anything&&t.type!==n.type||n.reactive&&await e.nextWidget(rs,{type:t.type,value:t.value}))}});e.setState({...n,$$abortListener:r})},terminate:async e=>{const t=e.getState(),n={...ts(),...t};n.$$abortListener&&n.$$abortListener(),ni({variableName:n.name,createdByWidgetId:e.widgetId})}};const os=async(e,t=!1)=>{const n=fi();let r=e.$$$serviceId;if(!e.service)return console.log("Aborting service initialization, missing property `service` in state."),null;if(!r||t){const t=await n.getCompatibleService(e.service.name,e.service.version,"^");if(!t)return null;r=t.sessionId}return r};var ss={onParentEvent:async(e,t,n,r)=>{const i={dynamicInputs:{},dynamicOutputs:{},customState:{},...r.getState()};if(!e)return;const o=ae(r.recipePoolId);if(!o)throw new Error(`Recipe [${r.recipePoolId}] not found`);const s=fi();let a=i.$$$serviceId;if(!a){const e=s.getCachedServices().available.find((e=>e.name===i.service?.name&&e.version===i.service?.version));if(!e)return;a=e.sessionId,i.$$$serviceId=a,r.setState(i)}const c=i.service?.variants?.find((e=>e.id===i.variantId)),l=c?i.dynamicInputs[c.id]||c?.inputs||[]:i.service?.inputs||[];if(!l?.length)return;if(!c&&i.service?.ignoreParentEvents)return;const u=i.service?.processingTimeoutSec,d=r.eventContext,h=o?.name||"";return s.onParentEvent({recipeId:r.recipePoolId,recipeName:h,data:n.data,targetServiceSessionId:a,currentState:i.customState,targetVariantId:i.variantId,currentPath:r.currentPath,eventId:r.eventId,recipe:{uuid:o.uuid,poolId:r.recipePoolId,name:h,type:r.recipeType,version:o.dbInfo.version,authorId:o.dbInfo.authorId},target:{portName:t.name,widgetId:r.id,widgetType:r.type},source:e,config:{timeout:u?1e3*u:0,async:i.service?.asyncParentEvents},eventContext:d})},getInputNames:async e=>{const t=e.variantId;if(t&&e.dynamicInputs?.[t])return[...e.dynamicInputs[t]||[]];if(!t)return e.service?.inputs||[];{const n=e.service?.variants?.find((e=>e.id===t));if(n)return n.inputs||[]}return[]},getOutputNames:async e=>{const t=e.variantId;if(t&&e.dynamicOutputs?.[t])return[...e.dynamicOutputs[t]||[]];if(!t)return e.service?.outputs||[];{const n=e.service?.variants?.find((e=>e.id===t));if(n)return n.outputs||[]}return[]},initialize:async e=>{const t={dynamicInputs:{},dynamicOutputs:{},customState:{},...e.getState()},n=ae(e.recipePoolId),r=n?.name||"",i=fi(),o=await os(t);if(o)try{return await i.initializeServiceInstance({recipePoolId:e.recipePoolId,sessionId:o,recipeName:r,widgetId:e.widgetId,recipeType:e.recipeType,variantId:t.variantId})}catch(t){if("FNC_NOT_FOUND"!==t?.errCode){if(!!("string"!=typeof t||!t.match('^Function ".*" not found.$')))throw t;console.warn(`Widget [${e.widgetId}] does not have an init function.`)}}else console.log(`Aborting service initialization, "${t.service?.name}" was not found in the current Hub.`)},terminate:async e=>{const t={dynamicInputs:{},dynamicOutputs:{},customState:{},...e.getState()},n=fi(),r=await os(t,!0);if(r)return n.terminateServiceInstance(r,e.widgetId,e.recipePoolId,t.variantId)}};const as=Object.freeze({Image:"image"}),cs=Object.freeze({Image:"image"}),ls=()=>({filters:[{name:"grayscale",value:"0.5",id:"d-1"}]});var us={onParentEvent:async(e,t,n,r)=>{const i={filters:[{name:"grayscale",value:"0.5",id:"d-1"}],...r.getState()};if(t.name===as.Image&&n.data.type===ye.ImageData){if(!Le(n.data.value))return void console.log("ImageFilter: Invalid image data type, aborting process");const e=n.data.value;i.$$memCanvas?.getContext||(i.$$memCanvas=Ce(e.width,e.height)),i.$$context?.drawImage||(i.$$context=i.$$memCanvas.getContext("2d")),i.$$memCanvas.width!==e.width&&(i.$$memCanvas.width=e.width),i.$$memCanvas.height!==e.height&&(i.$$memCanvas.height=e.height),r.setState(i),i.$$context.putImageData(e,0,0),i.filters.length?i.$$context.filter=i.filters.map((e=>{let t="";return"blur"===e.name?t="px":"hue-rotate"===e.name&&(t="deg"),`${e.name}(${parseFloat(e.value)}${t})`})).join(" "):i.$$context.filter="none",i.$$context.drawImage(i.$$memCanvas,0,0);const t=i.$$context.getImageData(0,0,e.width,e.height);return r.nextWidget(cs.Image,{type:ye.ImageData,value:t})}},getInputNames:()=>[{name:as.Image,type:ye.ImageData}],getOutputNames:()=>[{name:cs.Image,type:ye.ImageData}],getDefaultState:ls};const ds="loaded";var hs={onParentEvent:async(e,t,n,r)=>r.nextWidget(ds,{value:!0,type:ye.Boolean}),getInputNames:()=>[],getOutputNames:()=>[{name:ds,type:ye.Boolean,description:"Triggered when the recipe is fully loaded"}]};var fs={onParentEvent:async()=>{},getInputNames:()=>[],getOutputNames:()=>[],getDefaultState:()=>({text:"",color:"#eac43e",size:{width:300,height:200}})};var ps={onParentEvent:async(e,t,n,r)=>{try{const e=((e,t)=>{switch(t){case ye.Number:case ye.Boolean:case ye.String:return String(e);case ye.Array:case ye.JsonObj:case ye.Rect:case ye.Point:return JSON.stringify(e,((e,t)=>"bigint"==typeof t?t.toString():t));case ye.ArrayBuffer:if(e instanceof ArrayBuffer){if(re)return Buffer.from(e).toString("base64");{const t=new Uint8Array(e),n=t.length,r=new Array(n);for(let e=0;e<n;e++)r[e]=String.fromCharCode(t[e]);return btoa(r.join(""))}}throw new Error("Type is ArrayBuffer but value is not an ArrayBuffer");case ye.ImageData:if(!Le(e))throw new Error("Expected ImageData");return He(e);default:return String(e)}})(n.data.value,n.data.type);return r.nextWidget("text",{type:ye.String,value:e})}catch(e){return r.nextWidget("error",{type:ye.String,value:e instanceof Error?e.message:"Failed to stringify object"})}},getInputNames:()=>[{name:"object",type:[ye.Number,ye.String,ye.ArrayBuffer,ye.Array,ye.Boolean,ye.JsonObj,ye.Rect,ye.Point,ye.ImageData]}],getOutputNames:()=>[{name:"text",type:ye.String},{name:"error",type:ye.String}],getDefaultState:()=>({})};const gs=(e,t)=>{if(!Array.isArray(e)||"number"!=typeof t||t<=0)return[e];const n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n},ms=e=>{const{code:t,enableFnTag:n=!1,context:r={},securityOptions:i={}}=e;if(!n)throw new Error("$fn helper is disabled by default for security reasons. Set enableFnTag: true in options to enable.");if("string"!=typeof t)throw new Error("$fn requires a string argument");const o=((e={})=>{const{restrictionLevel:t="strict",allowedGlobals:n=[],blockedGlobals:r=[]}=e,i={Math:"undefined"!=typeof Math?Math:void 0,Date:"undefined"!=typeof Date?Date:void 0,JSON:"undefined"!=typeof JSON?JSON:void 0,Array:"undefined"!=typeof Array?Array:void 0,Object:"undefined"!=typeof Object?Object:void 0,String:"undefined"!=typeof String?String:void 0,Number:"undefined"!=typeof Number?Number:void 0,Boolean:"undefined"!=typeof Boolean?Boolean:void 0,RegExp:"undefined"!=typeof RegExp?RegExp:void 0,Symbol:"undefined"!=typeof Symbol?Symbol:void 0,Map:"undefined"!=typeof Map?Map:void 0,Set:"undefined"!=typeof Set?Set:void 0,Promise:"undefined"!=typeof Promise?Promise:void 0},o={process:void 0,require:void 0,global:void 0,globalThis:void 0,window:void 0,document:void 0,navigator:void 0,console:void 0,eval:void 0,Function:void 0,setTimeout:void 0,setInterval:void 0,setImmediate:void 0,clearTimeout:void 0,clearInterval:void 0,clearImmediate:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,Worker:void 0,SharedWorker:void 0,ServiceWorker:void 0,localStorage:void 0,sessionStorage:void 0,indexedDB:void 0};let s={};switch(t){case"strict":case"moderate":s={...i,...o};break;case"permissive":s={...i,process:void 0,require:void 0,eval:void 0,Function:void 0}}if(n.length>0)for(const e of n)"undefined"!=typeof globalThis&&e in globalThis&&(s[e]=globalThis[e]);for(const e of r)s[e]=void 0;return s})(i);o.$vars=r.$vars,o.date=r.date,o.chunkArray=r.chunkArray;const s=new Set(["Math","Date","JSON","Array","Object","String","Number","Boolean","RegExp","Symbol","Map","Set","Promise","eval","Function","require","process","global","globalThis","window","document","navigator","console","$vars","date","chunkArray"]),a=Object.entries(r).filter((([e])=>!s.has(e))),c=a.map((([e])=>e)),l=a.map((([,e])=>e)),u=`\n // Get sandbox environment from the last argument\n const __sandbox = arguments[arguments.length - 1]; // Last argument is the sandbox\n \n // Shadow dangerous globals at the top level (these will be overridden by sandbox if allowed)\n var eval = undefined;\n var Function = undefined;\n var require = undefined;\n var process = undefined;\n var global = undefined;\n var globalThis = undefined;\n var console = __sandbox.console;\n var window = __sandbox.window;\n var document = __sandbox.document;\n var navigator = __sandbox.navigator;\n \n // Make context variables available in local scope\n ${c.map(((e,t)=>`var ${e} = arguments[${t}];`)).join("\n ")}\n \n // Shadow global references to use sandbox versions\n const Math = __sandbox.Math;\n const Date = __sandbox.Date;\n const JSON = __sandbox.JSON;\n const Array = __sandbox.Array;\n const Object = __sandbox.Object;\n const String = __sandbox.String;\n const Number = __sandbox.Number;\n const Boolean = __sandbox.Boolean;\n const RegExp = __sandbox.RegExp;\n const Symbol = __sandbox.Symbol;\n const Map = __sandbox.Map;\n const Set = __sandbox.Set;\n const Promise = __sandbox.Promise;\n \n // Make special context items available\n const $vars = __sandbox.$vars;\n const date = __sandbox.date;\n const chunkArray = __sandbox.chunkArray;\n \n // Execute the user code in strict mode for additional security\n // Use call(null) to ensure 'this' is null/undefined in strict mode\n return (() => {\n "use strict";\n return ${t};\n }).call(null);\n `;try{return new Function(...c,"sandbox",u).call({},...l,o)}catch(e){throw new Error(`Error executing $fn: ${e instanceof Error?e.message:String(e)}`)}},ys=e=>{const t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return e.replace(/[&<>"'/]/g,(e=>t[e]))},vs=()=>new Proxy({},{get(e,t){if("string"==typeof t){const e=ro.getGlobalVariable(t);return e?.lastValue??void 0}}}),bs=e=>{const t=new Set,n=e.match(/\$secrets\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g);if(n)for(const e of n){const n=e.substring(9);n&&t.add(n)}const r=e.match(/\$secrets\[['"]([^'"]+)['"]\]/g);if(r)for(const e of r){const n=e.match(/['"]([^'"]+)['"]/);n&&n[1]&&t.add(n[1])}return t},ws=(e=new Date)=>({year:e.getFullYear(),month:e.getMonth()+1,day:e.getDate(),hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds(),milliseconds:e.getMilliseconds(),time:e.getTime(),dayOfWeek:e.getDay(),dayName:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][e.getDay()],shortDayName:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][e.getDay()],date:e.getDate(),fullYear:e.getFullYear(),timezoneOffset:e.getTimezoneOffset(),UTCDate:e.getUTCDate(),UTCDay:e.getUTCDay(),UTCFullYear:e.getUTCFullYear(),UTCHours:e.getUTCHours(),UTCMilliseconds:e.getUTCMilliseconds(),UTCMonth:e.getUTCMonth()+1,UTCMinutes:e.getUTCMinutes(),UTCSeconds:e.getUTCSeconds(),isoString:e.toISOString(),localeString:e.toLocaleString()}),Ss={$capitalize:e=>"string"==typeof e&&e.length>0?e.charAt(0).toUpperCase()+e.slice(1):e,$uppercase:e=>"string"==typeof e?e.toUpperCase():e,$lowercase:e=>"string"==typeof e?e.toLowerCase():e,$json:e=>{if("string"==typeof e)try{return JSON.parse(e)}catch{return e}return e},$stringify:(e,t,n)=>{try{return void 0!==t||void 0!==n?JSON.stringify(e,t,n):JSON.stringify(e)}catch{return String(e)}},$length:e=>"string"==typeof e||Array.isArray(e)?e.length:0,$compact:e=>Array.isArray(e)?e.filter((e=>null!=e&&""!==e&&!1!==e)):e,$chunk:e=>{if(!Array.isArray(e))return e;const t=[];for(let n=0;n<e.length;n+=2)t.push(e.slice(n,n+2));return t},$isEmpty:e=>Array.isArray(e)||"string"==typeof e?0===e.length:null==e,$isNotEmpty:e=>Array.isArray(e)||"string"==typeof e?e.length>0:null!=e,$first:e=>Array.isArray(e)?e.length>0?e[0]:void 0:"string"==typeof e&&e.length>0?e.charAt(0):void 0,$last:e=>Array.isArray(e)?e.length>0?e[e.length-1]:void 0:"string"==typeof e&&e.length>0?e.charAt(e.length-1):void 0,$base64Decode:e=>{if("string"!=typeof e)return e;try{return te&&window.atob?window.atob(e):"undefined"!=typeof Buffer?Buffer.from(e,"base64").toString("utf-8"):e}catch{return e}},$base64Encode:e=>{if("string"!=typeof e)return e;try{return"undefined"!=typeof window&&window.btoa?window.btoa(e):"undefined"!=typeof Buffer?Buffer.from(e,"utf-8").toString("base64"):e}catch{return e}},$domain:e=>{if("string"==typeof e)try{const t=e.match(/https?:\/\/[^\s]+/i),n=t?t[0]:e;return new URL(n).hostname}catch{try{const t=new URL("http://"+e.trim());if(t.hostname.includes(".")&&!t.hostname.startsWith("http"))return t.hostname}catch{}return}},$email:e=>{if("string"==typeof e)try{const t=e.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/);return t?t[0]:void 0}catch{return}},$url:e=>{if("string"==typeof e)try{const t=e.match(/https?:\/\/[^\s]+/i);if(t){return new URL(t[0]).toString()}return new URL(e.trim()).toString()}catch{return}},$urlPath:e=>{if("string"==typeof e)try{return new URL(e).pathname}catch{try{return new URL("http://"+e).pathname}catch{return}}},$urlEncode:e=>{if("string"!=typeof e)return e;try{return encodeURIComponent(e)}catch{return e}},$urlDecode:(e,t)=>{if("string"!=typeof e)return e;try{return!0===t?decodeURI(e):decodeURIComponent(e)}catch{return e}}},_s=e=>{const t=[];let n=0;for(;n<e.length;){const r=e.indexOf("{{",n);if(-1===r)break;const i="{{{"===e.slice(r,r+3),o=i?"{{{":"{{",s=i?"}}}":"}}";let a=1,c=!1,l="",u=r+o.length;for(;u<e.length&&a>0;){const t=e[u],n=e[u+1];c?t===l&&"\\"!==e[u-1]&&(c=!1,l=""):'"'===t||"'"===t?(c=!0,l=t):"{"===t&&"{"===n?i&&"{"===e[u+2]?(a++,u+=2):i||(a++,u++):"}"===t&&"}"===n&&(i&&"}"===e[u+2]?(a--,u+=2):i||(a--,u++)),u++}if(0===a){const a=e.slice(r,u),c=e.slice(r+o.length,u-s.length).trim();t.push({expression:c,start:r,end:u,fullMatch:a,escaped:!i}),n=u}else n=r+o.length}return t},Is=e=>{const t=e.match(/\$\w+\(/);if(!t)return{hasFunctionPropertyAccess:!1};const n=((e,t)=>{let n=0,r=!1,i="",o=t;for(;o<e.length&&"("!==e[o];)o++;if(o>=e.length)return null;const s=t;for(o++,n=1;o<e.length&&n>0;){const t=e[o];r?t===i&&"\\"!==e[o-1]&&(r=!1,i=""):'"'===t||"'"===t?(r=!0,i=t):"("===t?n++:")"===t&&n--,o++}return 0===n?{functionCall:e.slice(s,o),endIndex:o}:null})(e,t.index);if(!n)return{hasFunctionPropertyAccess:!1};const{functionCall:r,endIndex:i}=n,o=e.slice(i).match(/^(\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+\]|\[['"'][^'"]*['"']\])(?:\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+\]|\[['"'][^'"]*['"']\])*/);return o?{hasFunctionPropertyAccess:!0,functionCall:r,propertyPath:o[0],fullMatch:r+o[0]}:{hasFunctionPropertyAccess:!1}},xs=(e,t,n,r)=>{const i=n.evaluate(e,r);if(null==i)return;let o=i;const s=t.match(/\.[a-zA-Z_$][a-zA-Z0-9_$]*|\[\d+\]|\[['"'][^'"]*['"']\]/g)||[];for(const e of s){if(null==o)return;if(e.startsWith(".")){o=o[e.slice(1)]}else if(e.startsWith("[")&&e.endsWith("]")){const t=e.slice(1,-1);if(/^\d+$/.test(t)){o=o[parseInt(t,10)]}else{o=o[t.replace(/^['"]|['"]$/g,"")]}}}return o},ks=e=>{const t=e.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\[/);if(!t)return{hasObjectBracketAccess:!1};const n=t[1],r=t.index;if("vars"===n||e.startsWith("$vars["))return{hasObjectBracketAccess:!1};if("secrets"===n||e.startsWith("$secrets["))return{hasObjectBracketAccess:!1};const i=r+n.length,o=e.slice(i).match(/^(?:\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\])+/);if(o){const e=o[0];return{hasObjectBracketAccess:!0,objectName:n,bracketPath:e,fullMatch:n+e}}return{hasObjectBracketAccess:!1}},Es=(e,t,n,r)=>{const i=r[e];if(null==i)return;const o=t.match(/\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\]/g)||[];if(0===o.length)return;let s=i;for(const e of o){if(null==s)return;const t=e.slice(1,-1);let i;if(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))i=t.slice(1,-1);else if(/^\d+$/.test(t))i=parseInt(t,10);else try{i=n.evaluate(t,r)}catch{return}if("number"==typeof i&&Array.isArray(s))s=s[i];else{if("string"!=typeof i||"object"!=typeof s||null===s)return;s=s[i]}}return s},Cs=e=>{const t=e.match(/\$(?:vars|secrets)\[/);if(!t)return{hasVarsBracketAccess:!1};const n=t.index,r="$secrets["===e.slice(n,n+9)?"$secrets":"$vars",i=n+r.length,o=e.slice(i).match(/^(?:\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\])+/);if(o){const e=o[0];return{hasVarsBracketAccess:!0,bracketPath:e,fullMatch:r+e,objectName:r}}return{hasVarsBracketAccess:!1}},$s=(e,t,n,r,i=!1)=>{const o=e.match(/\[(?:['"'][^'"]*['"]|\d+|[^\]]+)\]/g)||[];if(0===o.length)return;const s=o[0],a=s?.slice(1,-1);let c,l;if(a?.startsWith('"')&&a.endsWith('"')||a?.startsWith("'")&&a.endsWith("'"))c=a.slice(1,-1);else if(a&&/^\d+$/.test(a))c=parseInt(a,10);else if(a)try{c=n.evaluate(a,r)}catch{return}if("$vars"===t){if("string"!=typeof c)return;const e=ro.getGlobalVariable(c);l=e?.lastValue??void 0}else{if("$secrets"!==t)return;{if(!i)return;const e=r.$secrets;if(!e)return;if("string"!=typeof c)return;l=e[c]??void 0}}for(let e=1;e<o.length;e++){if(null==l)return;const t=o[e].slice(1,-1);let i;if(t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'"))i=t.slice(1,-1);else if(/^\d+$/.test(t))i=parseInt(t,10);else try{i=n.evaluate(t,r)}catch{return}if("number"==typeof i&&Array.isArray(l))l=l[i];else{if("string"!=typeof i||"object"!=typeof l)return;l=l[i]}}return l},Os=async e=>{const{template:t,context:n={},options:r={}}=e,{helpers:i={},enableFnTag:o=!1,securityOptions:s={},recipeUuid:a,serviceName:c,enableSecretsBracketNotation:u=!1}=r,d={...Ss,...i},h=vs(),f=ws(),p={...n};var g;"input"in p&&(p.input="object"==typeof(g=p.input)&&null!==g?g:{value:g});let m,y={};if(a){const e=(e=>{const t=new Set,n=_s(e);for(const e of n)bs(e.expression).forEach((e=>t.add(e)));return t})(t),n=Array.from(e);if(n.length>0)try{y=await $i({recipeUuid:a,secretNames:n,serviceName:c})}catch(e){console.error("Failed to fetch secrets for template:",e),y={}}m=y}const v={...p,$vars:h,date:f,chunkArray:gs};void 0!==m&&(v.$secrets=m);const b={...d};b.$fn=e=>ms({code:e,enableFnTag:o,context:v,securityOptions:s});const w=new l({operators:{add:!0,comparison:!0,concatenate:!0,conditional:!0,logical:!0,power:!1,assignment:!1}});for(const[e,t]of Object.entries(b))w.functions[e]=t;const S=_s(t);if(0===S.length)return t;let _="",I=0;for(const e of S){_+=t.slice(I,e.start);try{if(!o&&e.expression.includes("$fn"))throw new Error("$fn helper is disabled by default for security reasons. Set enableFnTag: true in options to enable.");let t;const n=Cs(e.expression);if(n.hasVarsBracketAccess&&n.bracketPath&&n.objectName)t=$s(n.bracketPath,n.objectName,w,{...v,...b},u);else{const n=ks(e.expression);if(n.hasObjectBracketAccess&&n.objectName&&n.bracketPath)t=Es(n.objectName,n.bracketPath,w,{...v,...b});else{const n=Is(e.expression);t=n.hasFunctionPropertyAccess&&n.functionCall&&n.propertyPath?xs(n.functionCall,n.propertyPath,w,{...v,...b}):w.evaluate(e.expression,{...v,...b})}}null!==t&&"object"==typeof t&&"then"in t&&(t=await t);let r=null==t?"":String(t);e.escaped&&(r=ys(r)),_+=r}catch(e){if(e instanceof Error&&e.message.includes("undefined variable"))_+="";else{const t=e instanceof Error?e.message:String(e);if(e instanceof Error&&e.message.includes("$fn helper is disabled"))throw e;_+=`[Error: ${t}]`}}I=e.end}return _+=t.slice(I),_},Ns=()=>({text:"",format:"Text"});var Ts={onParentEvent:async(e,t,n,r)=>{const i={text:"",format:"Text",...r.getState()},{uuid:o}=Oi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await Os({template:i.text,context:{input:n.data.value},options:{enableFnTag:!0,recipeUuid:o}});return r.nextWidget("text",{type:ye.String,value:s})},getInputNames:()=>[{name:"input",type:ye.Anything}],getOutputNames:()=>[{name:"text",type:ye.String}],getDefaultState:Ns};const As=()=>({expression:""}),Ms=async e=>{const{expression:t,recipeUuid:n,serviceName:r,enableFnTag:i=!0,customContext:o={}}=e,s=Symbol("abort");try{const e={restrictionLevel:"strict"},a=vs(),c=ws();let l;if(n&&t.includes("$secrets")){const e=Array.from(bs(t));if(e.length>0)try{l=await $i({recipeUuid:n,secretNames:e,serviceName:r})}catch(e){console.error("Failed to fetch secrets for expression:",e),l={}}}const u={...o,abort:s,$vars:a,date:c,chunkArray:gs,...Ss};void 0!==l&&(u.$secrets=l);const d=ms({code:t,enableFnTag:i,context:u,securityOptions:e});return d===s?{value:s,error:null}:{value:d,error:null}}catch(e){let t=e instanceof Error?e.message:String(e);return t.startsWith("Error executing $fn: ")&&(t=t.substring(21)),{error:"Error during expression execution: "+t,value:null}}};var Ps={onParentEvent:async(e,t,n,r)=>{const i={expression:"",...r.getState()},{uuid:o}=Oi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await Ms({customContext:{data:n.data.value},expression:i.expression,recipeUuid:o,serviceName:void 0});if("symbol"==typeof s.value)return;if(s.error)throw new Error(s.error);if(Number.isNaN(s.value))throw new Error("Expression resulted in NaN");if(void 0===s.value||null===s.value)return;const a=We(s.value);return a!==i.$$lastResultType&&r.setState({...i,$$lastResultType:a}),r.nextWidget("result",{type:a,value:s.value})},getInputNames:()=>[{name:"data",type:ye.Anything}],getOutputNames:e=>[{name:"result",type:e.$$lastResultType||ye.Anything}],getDefaultState:As};const Ds={};let js={};const Rs=new c;let Ls=!1,Fs=!1,Us=!1,Ws=null,Bs=null;const Gs="processing-state-change",Vs="error-event",Ys={abortRequested:!1,isPaused:!1,pausePromise:null,pausePromiseResolve:null,lastPausedWidgetId:null},Hs=e=>(Bs=e,Rs.emit(Gs,e)),zs=(e,t)=>`${e}-${t}`,qs=(e,t)=>`state-change:${zs(e,t)}`,Ks=e=>{const{thingId:t,widgetId:n}=e,r=zs(t,n);return Ds[r]||{isProcessing:!1}},Js=e=>{const t=(e=>{let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n);return Math.abs(t).toString(36)})(e.error);return`${e.targetWidgetId}-${e.targetPortName}-${e.sourcePortName}-${t}`};let Zs=null;const Xs={},Qs=()=>{Ys.abortRequested=!1,Ys.isPaused=!1},ea=e=>(Ys.pausePromise||(Ys.isPaused=!0,Ys.pausePromise=new Promise((e=>{Ys.pausePromiseResolve=e})),e&&(Ys.lastPausedWidgetId=e),Hs({isProcessing:!0,isPaused:!0,...e?{pauseTrapWidgetId:e}:{}})),Ys.pausePromise);var ta=async e=>{const{thingId:t,widgetId:n}=e,r=zs(t,n),i=qs(t,n),o=Ks({thingId:t,widgetId:n});if(o.isProcessing)return;const s={isProcessing:!0,isPaused:!1,startTime:Date.now()};Ds[r]=s,Ls||(Ls=!0,Ws=null,await Hs({isProcessing:!0,isPaused:!1})),await Rs.emit(i,{thingId:t,widgetId:n,prevState:o,newState:s})},na=async e=>{const{thingId:t,widgetId:n,error:r}=e,i=zs(t,n),o=qs(t,n),s=Ks({thingId:t,widgetId:n}),a={isProcessing:!1,isPaused:!1,startTime:s.startTime,endTime:Date.now(),error:r};Ds[i]=a,await Rs.emit(o,{thingId:t,widgetId:n,prevState:s,newState:a}),r&&(Ws=r,(e=>{const{error:t,stateKey:n}=e,r=Js(t);Xs[r]={error:t,stateKey:n},Zs&&clearTimeout(Zs),Zs=setTimeout((()=>{for(const e in Xs)Rs.emit(Vs,Xs[e].error),delete Xs[e]}),250)})({error:r,stateKey:i})),Ls&&0===Object.values(Ds).filter((e=>e.isProcessing)).length&&(Ls=!1,Fs=!1,Qs(),await Hs({isProcessing:!1,isPaused:!1}))},ra=e=>Rs.on(Gs,e),ia=()=>{Ls=!1;for(const e in Ds)delete Ds[e];Ys.abortRequested=!1,Ys.isPaused=!1,Ys.pausePromise=null,Ys.pausePromiseResolve=null,Ys.lastPausedWidgetId=null,Rs.clearListeners()},oa=()=>Ys.abortRequested,sa=e=>{Ys.lastPausedWidgetId=e,Ys.isPaused=!0,Hs({isProcessing:!0,isPaused:!0,pauseTrapWidgetId:e})},aa=()=>Fs||Us?null:Ys.pausePromise,ca=e=>Us?null:js[e]??null,la=()=>Fs,ua=e=>ea(e),da=e=>{const t=Js(e),n=Xs[t];if(r=Ws,i=n?.error,r?.targetWidgetId===i?.targetWidgetId&&r?.targetPortName===i?.targetPortName&&r?.sourcePortName===i?.sourcePortName&&r?.error===i?.error){if(n){const e=n.stateKey;Ds[e].error=null}Ws=null}var r,i;delete Xs[t]};var ha={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};r.setState({...i,$$lastEventType:n.data.type});try{await r.nextWidget("event",n.data)}catch(e){const t=e;t.targetWidgetId&&t.targetPortName&&t.sourcePortName&&da({targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,error:t.message}),await r.nextWidget("error",{type:ye.JsonObj,value:{error:{message:e.message,targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,sourceWidgetId:t.sourceWidgetId,targetWidgetType:t.targetWidgetType,sourceWidgetType:t.sourceWidgetType,stack:e.stack},inputEvent:{type:n.data.type,data:n.data.value}}})}},getInputNames:()=>[{name:"event",type:ye.Anything}],getOutputNames:e=>[{name:"event",type:{...e}.$$lastEventType??ye.Anything},{name:"error",type:ye.JsonObj,jsonShape:{error:ye.JsonObj,inputEvent:ye.JsonObj}}]};const fa={},pa=Object.freeze({output:"output"}),ga=Object.freeze({read:"read",clear:"clear"}),ma=()=>({$$$time:0,totalInputs:1});var ya={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalInputs:1,...r.getState()};if(fa[r.id]||(fa[r.id]={}),t.name===ga.clear)return fa[r.id]={},void r.setState(i);const o=t.name===ga.read;if(!(o||n.data.type!==ye.JsonObj&&n.data.type!==ye.Anything&&n.data.type!==ye.Rect||"object"!=typeof n.data.value||null===n.data.value||Array.isArray(n.data.value))){const e=fa[r.id]||{};fa[r.id]={...e,...n.data.value}}if(o){const e={...fa[r.id]};return fa[r.id]={},r.setState({...i}),r.nextWidget(pa.output,{type:ye.JsonObj,value:e})}},getInputNames:e=>{const t={$$$time:0,totalInputs:1,...e},n=Array(t.totalInputs||1).fill(0).map(((e,t)=>({name:`input${t+1}`,type:ye.Anything})));return n.push({name:ga.clear,type:ye.Anything},{name:ga.read,type:ye.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:pa.output,type:ye.JsonObj}],getDefaultState:ma,initialize:async e=>{fa[e.widgetId]={}},terminate:async e=>{delete fa[e.widgetId]}};const va={},ba=Object.freeze({output:"output",index:"index",finish:"finish"}),wa=Object.freeze({array:"array",next:"next",clear:"clear"}),Sa=()=>({autoLoop:!1,autoClear:!1,$$outputType:ye.Anything,totalItems:0,currentIndex:0});var _a={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Sa(),...i};if(t.name===wa.clear)return delete va[r.id],void r.setState({...Sa(),autoLoop:o.autoLoop,autoClear:o.autoClear});if(t.name!==wa.array)t.name===wa.next&&await(async e=>{const t=e.id,n=va[t],r={...Sa(),...e.getState()};if(n&&n.index<n.list.length){const i=n.index,o=n.list[i];await e.nextWidget(ba.index,{type:ye.Number,value:i}),await e.nextWidget(ba.output,{type:r.$$outputType,value:o}),n.index++,e.setState({...r,currentIndex:n.index}),n.index===n.list.length&&(await e.nextWidget(ba.finish,{type:ye.Boolean,value:!0}),r.autoClear?(delete va[t],e.setState({...Sa()})):(n.index=0,e.setState({...r,currentIndex:0})))}})(r);else if((n.data.type===ye.Array||n.data.type===ye.Anything)&&Array.isArray(n.data.value)){const e=n.data.value,t=e[0],i=void 0!==t?We(t):ye.Anything,s={list:e,index:0};va[r.id]=s;const a={...o,$$outputType:i,totalItems:e.length,currentIndex:0};if(r.setState(a),a.autoLoop&&e.length>0){for(const t of e){const e=s.index;r.setState({...a,currentIndex:e}),await r.nextWidget(ba.index,{type:ye.Number,value:e}),await r.nextWidget(ba.output,{type:a.$$outputType,value:t}),s.index++}await r.nextWidget(ba.finish,{type:ye.Boolean,value:!0}),a.autoClear?(delete va[r.id],r.setState({...a,$$outputType:ye.Anything,totalItems:0,currentIndex:0})):(s.index=0,r.setState({...a,currentIndex:0}))}}},getInputNames:()=>[{name:wa.array,type:ye.Array},{name:wa.next,type:ye.Anything},{name:wa.clear,type:ye.Anything}],getOutputNames:e=>{const t={...Sa(),...e};return[{name:ba.index,type:ye.Number},{name:ba.output,type:t.$$outputType},{name:ba.finish,type:ye.Anything}]},getDefaultState:Sa,initialize:async e=>{const t={...Sa(),...e.getState()};va[e.widgetId]={list:[],index:0},e.setState({...t,currentIndex:0,totalItems:0})},terminate:async e=>{delete va[e.widgetId]}};var Ia={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};i.name&&e&&Ui({name:i.name,sourceWidget:e?.sourceWidgetId,widgetId:r.id,widgetType:Ke.status,value:{type:n.data.type,value:n.data.value}})},getOutputNames:()=>[],getInputNames:()=>[{name:"status",type:ye.Anything}],terminate:async e=>{Gi(e.widgetId)},initialize:async e=>{const t={name:"",...e.getState()};Ui({name:t.name||"",sourceWidget:"",widgetType:Ke.status,widgetId:e.widgetId,value:null})}};const xa={onParentEvent:async(e,t,n,r)=>{if(!r.eventContext)return;const i=r.eventContext;if(i?.eventKey)return ct(i.eventKey,n.data.value);console.error("No event key found in context event")},getOutputNames:()=>[],getInputNames:()=>[{name:"event",type:ye.Anything}]},ka="read",Ea="setValue",Ca=new Map,$a=new Map,Oa=(e,t)=>{const n=`${e}_${t}`,r=Ca.get(n);r&&(r(),Ca.delete(n))},Na=(e,t,n)=>{const r=`${e}_${t}`;n?Ca.set(r,n):Ca.delete(r)};var Ta={onParentEvent:async(e,t,n,r)=>{const i={name:"",reactive:!1,lastConfiguration:null,...r.getState()};if(!i.name)return;const o=ro.getGlobalVariable(i.name);if(o)if(t.name===ka)o&&null!==o.lastValue&&null!==o.lastDataType&&await r.invokeNextWidget({port:"value",data:{type:o.lastDataType,value:o.lastValue}});else if(t.name===Ea){let e=n.data.value;if(("number"===o.controlType||"slider"===o.controlType)&&(e=Number(e),isNaN(e)))throw new Error("Expected event value to be a number");if("binaryFile"===o.controlType&&n.data.type!==ye.BinaryFile||"image"===o.controlType&&n.data.type!==ye.ImageData||("text"===o.controlType||"multilineText"===o.controlType)&&n.data.type!==ye.String||"checkbox"===o.controlType&&n.data.type!==ye.Boolean&&n.data.type!==ye.Number||"button"===o.controlType&&n.data.type!==ye.Boolean)throw new Error(`Invalid type, expected event value to be a ${(e=>{switch(e){case"number":case"slider":return"Number";case"text":case"dropdown":case"multilineText":return"String";case"image":return"ImageData";case"binaryFile":return"Binary File";case"checkbox":return"Boolean or Number";case"button":return"Boolean"}return"Anything"})(o.controlType)}`);i.lastConfiguration?.controlSettings===o.controlSettings&&i.lastConfiguration?.controlType===o.controlType&&i.lastConfiguration?.helpText===o.helpText&&i.lastConfiguration?.group===o.group||(i.lastConfiguration={controlType:o.controlType,controlSettings:o.controlSettings,helpText:o.helpText,group:o.group},r.setState({...i})),$a.set(r.id,{eventId:r.eventId,varName:i.name,type:n.data.type}),await ro.setGlobalVariable({name:i.name,value:e,lastDataType:n.data.type,widgetId:r.id,executionContext:{eventId:r.eventId,currentPath:r.currentPath}}),i.reactive&&await r.invokeNextWidget({port:"value",executionContext:{currentPath:r.currentPath,eventId:r.eventId},data:{type:n.data.type,value:e}})}},getOutputNames:e=>{const t={name:"",reactive:!1,lastConfiguration:null,...e};let n=ye.Anything;if(t.name){const e=ro.getGlobalVariable(t.name);e?.lastDataType&&(n=e.lastDataType)}return[{name:"value",type:n}]},getInputNames:()=>[{name:ka,type:ye.Anything},{name:Ea,type:ye.Anything}],terminate:async e=>{Oa(e.widgetId,"variable"),Oa(e.widgetId,"group"),Oa(e.widgetId,"parentGroup"),$a.delete(e.widgetId)},initialize:async e=>{const t={name:"",reactive:!1,lastConfiguration:null,...e.getState()};Oa(e.widgetId,"variable"),Oa(e.widgetId,"group"),Oa(e.widgetId,"parentGroup"),$a.set(e.widgetId,null);const n=ro.getGlobalVariable(t.name);if(!n&&t.lastConfiguration?.controlType){if(t.lastConfiguration.group){ro.getGlobalVariable(t.lastConfiguration.group)||await ro.setGlobalVariable({name:t.lastConfiguration.group,helpText:t.lastConfiguration.groupHelpText??void 0,controlType:"group",value:null,disableChangeNotifications:!0,disableDefineNotifications:!1})}await ro.setGlobalVariable({name:t.name,helpText:t.lastConfiguration.helpText,controlType:t.lastConfiguration.controlType,controlSettings:t.lastConfiguration.controlSettings,value:null,group:t.lastConfiguration.group,disableChangeNotifications:!0,disableDefineNotifications:!1})}else n&&e.setState({...t,lastConfiguration:{...t.lastConfiguration,controlType:n.controlType,controlSettings:n.controlSettings,helpText:n.helpText,group:n.group}});if(t.name){const n=ro.onGlobalVariableParentGroupChange(t.name,(async t=>{const n=e.getState();let r;if(t.group){const e=ro.getGlobalVariable(t.group);e&&(r=e.helpText??void 0)}e.setState({...n,lastConfiguration:{controlType:t.controlType,controlSettings:t.controlSettings,helpText:t.helpText,group:t.group,groupHelpText:r}})}));Na(e.widgetId,"group",n)}if(t.name){const n=ro.onVarParentGroupStateChange(t.name,(async t=>{const n=e.getState();e.setState({...n,lastConfiguration:{...n.lastConfiguration??{},group:t.parentGroup.name,groupHelpText:t.parentGroup.helpText??void 0}})}));Na(e.widgetId,"parentGroup",n)}if(t.reactive&&t.name){const n=ro.onGlobalVariableChange(t.name,(async t=>{const n=e.getState();if(n.lastConfiguration?.controlType===t.controlType&&n.lastConfiguration?.controlSettings===t.controlSettings&&n.lastConfiguration?.helpText===t.helpText&&n.lastConfiguration?.group===t.group||e.setState({...n,lastConfiguration:{controlType:t.controlType,controlSettings:t.controlSettings,helpText:t.helpText,group:t.group}}),null!==t.lastValue&&null!==t.lastDataType){const n=$a.get(e.widgetId);if(n?.varName===t.name&&n.type===t.lastDataType&&n.eventId===t.lastExecutionContext?.eventId)return void $a.set(e.widgetId,null);await e.invokeNextWidget({port:"value",...t.lastExecutionContext?{executionContext:{...t.lastExecutionContext}}:void 0,data:{type:t.lastDataType,value:t.lastValue}})}}));Na(e.widgetId,"variable",n)}}};const Aa=Object.freeze({input:"input"}),Ma="out",Pa="else",Da=()=>({conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0}),ja=e=>null!=e&&("number"==typeof e?0!==e&&!Number.isNaN(e):"string"==typeof e?e.length>0:Boolean(e));var Ra={onParentEvent:async(e,t,n,r)=>{const i={conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0,...r.getState()};if(t.name!==Aa.input)return;let o;try{o=Oi(r.recipePoolId).uuid}catch{o=void 0}const s=i.conditions||[];for(let e=0;e<s.length;e++){const t=s[e],a=await Ms({customContext:{input:n.data.value},expression:t.expression||"",recipeUuid:o,enableFnTag:!0});if("symbol"!=typeof a.value){if(a.error)throw new Error(a.error);if(ja(a.value)){let a=n.data.value;if(t.output&&"input"!==t.output){const e=await Ms({customContext:{input:n.data.value},expression:t.output,recipeUuid:o,enableFnTag:!0});if(e.error)throw new Error(e.error);"symbol"!=typeof e.value&&(a=e.value)}else a=n.data.value;const c=We(a);if(i.multipleOutputs){const n=[...s];n[e]={...t,$lastOutputType:c},r.setState({...i,conditions:n})}const l=i.multipleOutputs?String(e+1):Ma;return i.multipleOutputs||i.$lastOutputType===c||r.setState({...i,$lastOutputType:c}),r.invokeNextWidget({port:l,data:{type:c,value:a}})}}}return r.invokeNextWidget({port:Pa,data:{type:n.data.type,value:n.data.value}})},getInputNames:()=>[{name:Aa.input,type:ye.Anything}],getOutputNames:e=>{if(!e.multipleOutputs)return[{name:Ma,type:e.$lastOutputType||ye.Anything},{name:Pa,type:e.$lastElseOutputType||ye.Anything}];const t=Math.max(1,e.conditions?.length||0),n=[];for(let r=0;r<t;r++){const t=e.conditions?.[r]?.$lastOutputType||ye.Anything;n.push({name:String(r+1),type:t})}return n.push({name:Pa,type:e.$lastElseOutputType||ye.Anything}),n},getDefaultState:Da};const La=new Map;var Fa={registerFunctionHandler:(e,t)=>{La.set(e,t)},invokeFunction:async e=>{const{eventId:t,functionName:n,functionParams:r}=e,i=La.get(n);if(i)try{const e=await i(r,t);if("function"==typeof e)throw new Error("Functions are not allowed as return types");return e}catch(e){throw console.error(`Error invoking edge function [${n}]:`,e),e}},unregisterFunctionHandler:e=>{La.delete(e)},clearAllHandlers:()=>{La.clear()}};const Ua=()=>({functionName:""}),Wa="result";const Ba={input:dt,counter:pt,elapsed:yt,ifGate:St,skipEvent:kt,between:Ot,map:At,parser:Dt,slider:Lt,suspend:Bt,display:Vt,json:zt,arrayItem:Jt,extractImage:tn,imageConvolution:an,firstEvent:dn,pixelDraw:bn,randomBetween:In,arrayCombine:$n,clock:An,delay:Fn,multiplication:Gn,object:Kn,widgetGroup:Qn,script:bo,base64ToImageData:ko,jsonParse:Oo,text:Mo,imageCrop:Ro,imageResize:Wo,value:Yo,imageWarp:Ko,sequence:es,variable:is,hubService:ss,imageFilter:us,recipeLoad:hs,note:fs,stringify:ps,templateString:Ts,expressionEval:Ps,rescue:ha,objectCombine:ya,loop:_a,status:Ia,secret:Ni,output:xa,globalVariable:Ta,switch:Ra,edgeFunction:{onParentEvent:async(e,t,n,r)=>{const i={functionName:"",...r.getState()};if(!i.functionName||!e)return;const o=r.eventId,s=await Fa.invokeFunction({eventId:o,functionName:i.functionName,functionParams:n.data.value});if(null!=s){const e=We(s);await r.invokeNextWidget({port:Wa,data:{type:e,value:s}})}},getOutputNames:()=>[{name:Wa,type:ye.Anything}],getInputNames:()=>[{name:"params",type:ye.Anything}],getDefaultState:Ua},play:{getInputNames:()=>[],onParentEvent:()=>Promise.resolve(),getOutputNames:()=>[{name:"out",type:ye.Boolean}]}},Ga={},Va=async()=>{if(!Object.keys(Ga).length)for(const e in Ba){const t=Ba[e];Ga[e]=Object.freeze({...t})}};var Ya,Ha,za=e=>{if(Ga[e])return Ga[e];throw new Error(it(rt,e))},qa=Va;!function(e){e.ServiceCreationLog="service-creation-log"}(Ya||(Ya={})),function(e){e.Service="service",e.ServiceUI="serviceUI"}(Ha||(Ha={}));let Ka={},Ja=0,Za=null;const Xa=(e,t)=>{if(e.type===Ke.hubService){if(t.type!==Ke.hubService)return!1;const n=e.state,r=t.state,i=n.service?.name,o=r.service?.name;return!(!i||!o||i!==o)}return e.type===Ke.output&&t.type===Ke.input},Qa=e=>{const{widgetId:t,widgets:n,currentPath:r}=e,i=n[t];if(!i)return[];const o=new Map;for(let e=0;e<r.length;e++){const t=r.slice(0,e+1),s=t.join("/"),a=Ka[s];if(a){const c=n[a.widgetId];if(c){const n=a.path,l=r.join("/").startsWith(n);Xa(i,c)&&l&&(o.has(s)||o.set(s,{path:s,data:a,pathSegments:t.length,pathIndex:e,invocationOrder:a.invocationOrder,timestamp:a.timestamp}))}}}const s=Array.from(o.values()).sort(((e,t)=>e.pathIndex-t.pathIndex));return s},ec=e=>{const{context:t,widgetId:n,currentPath:r,executionId:i="default"}=e;if(Ja++,0===r.length)throw new Error("Current path cannot be empty");if(!r[r.length-1].includes(n))throw new Error("The widget id is expected to be part of the path");const o=r.join("/");Ka[o]={path:o,eventContext:t,widgetId:n,invocationOrder:Ja,timestamp:Date.now(),executionId:i}},tc=e=>{const t=Qa(e);return t.length>0?t[t.length-1]:null},nc=()=>{Ka={},Ja=0},rc=e=>{Za=e},ic=()=>{Ka={},Ja=0};let oc,sc,ac,cc=!1,lc=0,uc=0;const dc=async e=>{const{widgetId:t,thingId:n,recipeId:r,targetPortName:i,data:o}=e,s=ce(r,n);if(!s)return;const a=s.gates[t];if(!a||a.disabled)return;const c={...o,timestamp:Date.now()},l=za(a.type);uc+=1;const u=mc({gateId:t,originalEvent:c,blockRecipeId:s.recipeId,blockDbId:s.id,blockVersion:s.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:uc});if(u&&l.onParentEvent){const e={name:i};return oc&&await oc({recipeId:r,blockId:s.recipeId,gateId:t,targetPort:e.name,data:o}),l.onParentEvent(null,e,{originalEvent:c,data:{...c}},u)}},hc=async e=>{const{eventContext:t,interruptDriven:n,childGateId:r,recipeId:i,sourcePortName:o,targetPort:s,data:a,sourceOutputNames:c,sourceWidgetId:l,bypassHistoryRecording:u,eventId:d}=e;let{originalEvent:h,block:f}=e;if(!n&&!l)throw new Error("Missing parameter ['sourceGateId']");if(!n&&!h)throw new Error("Missing parameter ['originalEvent']");n&&(h={timestamp:Date.now(),type:ye.Boolean,value:!0});const p=h;if("string"==typeof f){const e=ce(i,f);if(!e)return;f=e}const g=f.gates[r];if(!g||g.disabled)return;const m=c.findIndex((e=>e.name===o)),y=za(g.type),v=[...e.currentPath];if(l){0===v.length?v.push(`${l}:${d?.toString()}`):v.push(l)}if(t){const e=le({recipeId:i,widgetId:l});e?.type!==Ke.hubService&&e?.type!==Ke.input||ec({context:t,widgetId:l,currentPath:v,executionId:d?.toString()})}const b=mc({gateId:r,originalEvent:p,blockRecipeId:f.recipeId,blockDbId:f.id,blockVersion:f.version,recipeId:i,sourceWidgetId:l,currentPath:v,eventId:d});if(b&&y.onParentEvent&&-1!==m){oc&&await oc({recipeId:i,blockId:f.recipeId,gateId:r,targetPort:s.name,data:a,sourceGate:n?"interrupt_widget":l,sourcePort:n?fe:o});const e={name:c[m].name,type:c[m].type,...c[m].jsonShape?{jsonShape:c[m].jsonShape}:void 0,sourceWidgetId:l};return u||_i({thingId:f.recipeId,widgetId:r,sourceOutputNames:c,targetPortName:s.name,currentPath:v,eventId:d,data:a,originalEvent:p,recipeId:i,source:l?{widgetId:l,portName:o}:void 0}),y.onParentEvent(e,s,{originalEvent:p,data:a},b)}},fc=async e=>{const{portName:t,originalEvent:n,data:r,currentGateId:i,blockRecipeId:o,thingDbId:s,thingVersion:a,recipeId:c,eventContext:l,currentPath:u}=e;let{eventId:d}=e;const h=ae(c);if(!h)throw new Error(`Failed to find recipe "${c}" in cache`);const f=h.dbInfo.recipeType,p=ue(c,o,i);if(!p)return;const g={...r,timestamp:n.timestamp},m=za(p.type);let y;y=p.type===Ke.input?m.getOutputNames(p.state,{thingRecipeId:o,thingDbId:s,thingVersion:a,id:i,recipeId:c,recipeType:f,recipePoolId:c}):await m.getOutputNames(p.state,{recipePoolId:c,recipeType:f,thingRecipeId:o,widgetId:i});if(-1!==y.findIndex((e=>e.name===t))){const e=ce(c,o);if(!e)return;null===d&&(uc+=1,d=uc),Si({thingId:o,widgetId:i,sourceOutputNames:y,sourcePortName:t,currentPath:u,data:g,recipeId:c,eventId:d});let r=null;const s=p.children.length,a=u;try{for(let u=0;u<s;u++){const s=e.gates[p.children[u].childId];if(s?.disabled)continue;const h=Ve(p.children[u]?.sourcePort),m=Ve(p.children[u]?.targetPort);if(h.portName===t&&s&&!s.disabled){if(cc&&aa()&&(sa(s.id),await aa()),ca(s.id)&&!la()&&"innerInput"!==m?.portType){const e=ua(s.id);await e}if(cc&&oa())break;const u=za(s.type);let h;const v={recipePoolId:c,recipeType:f,thingRecipeId:o,widgetId:i};h=s.type===Ke.hubService?await u.getInputNames(s.state,v):u.getInputNames(s.state,v);const b=h.find((e=>e.name===m.portName));if(b){cc&&await ta({thingId:o,widgetId:s.id}),lc++;if(!await hc({eventContext:l,interruptDriven:!1,childGateId:s.id,block:e,recipeId:c,sourcePortName:t,currentPath:a,eventId:d,targetPort:{name:b.name},data:p.returnOriginalEvent?n:g,sourceOutputNames:y,sourceWidgetId:p.id,originalEvent:n}).then((()=>!0)).catch((e=>{const n=s.type===Ke.hubService&&"CHILD_WIDGET_ERROR"===e.errCode;if(e instanceof Dr)throw e;if(n&&e.errData){const t=e.errData;throw new Dr(e.error||e.message||("string"==typeof e?e:JSON.stringify(e)),{targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,sourceWidgetId:t.sourceWidgetId,targetWidgetType:t.targetWidgetType,sourceWidgetType:t.sourceWidgetType})}if(!r){const n="string"==typeof e?e:e.message||JSON.stringify(e);r={targetWidgetId:s.id,targetPortName:b.name,sourcePortName:t,error:n}}throw new Dr(e.message||("string"==typeof e?e:JSON.stringify(e)),{stack:e.stack,targetWidgetId:s.id,targetPortName:b.name,sourcePortName:t,sourceWidgetId:p.id,targetWidgetType:s.type,sourceWidgetType:p.type})})).finally((()=>{if(lc--,cc)return na({thingId:o,widgetId:s.id,error:r})})))break}}}}catch(e){if(e instanceof Dr)throw e;console.error(`Error processing next widget [${i}]: ${e}`)}finally{lc<0&&(console.warn("Active execution counter is negative, this should never happen"),lc=0),0===lc&&nc()}}},pc=async(e,t,n,r)=>{const i=ae(r);if(!i)return null;const o=ce(r,n);if(!o)return o;const s=o.gates,a=o.gates[t],c=za(a.type),l=await c.getInputNames(a.state,{recipePoolId:r,recipeType:i.dbInfo.recipeType,thingRecipeId:n,widgetId:t}),u=l.findIndex((t=>t.name===e));if(-1!==u){const e=((e,t,n)=>{for(const r in n){const i=n[r],o=i.children.length;for(let n=0;n<o;n++){const r=i.children[n],o=Ve(r.targetPort);if(r.childId===e&&o.portName===t)return i}}return null})(t,l[u].name,s);if(e){const t=za(e.type);return{getValue:()=>"function"==typeof t.getValue?t.getValue():null}}}return null},gc=e=>{const{gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}=e;if(!ae(s))throw new Error(`Failed to find recipe "${s}" in cache`);if(!ue(s,r,t))throw console.warn(`Gate ${t} not found in block ${r} for recipe ${s}`),new Error(`Gate ${t} not found in block ${r} for recipe ${s}`);return async e=>fc({portName:e.port,originalEvent:n||{timestamp:Date.now(),type:e.data.type,value:e.data.value},data:e.data,currentGateId:t,blockRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,eventContext:e.eventContext,currentPath:e.executionContext?.currentPath||a,eventId:e.executionContext?.eventId||c})},mc=e=>{const{gateId:t,originalEvent:n,blockRecipeId:r,blockDbId:i,blockVersion:o,recipeId:s,currentPath:a,eventId:c}=e,l=ae(s);if(!l)throw new Error(`Failed to find recipe "${s}" in cache`);const u=ue(s,r,t);if(!u)return console.warn(`Gate ${t} not found in block ${r} for recipe ${s}`),null;const d=gc({gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}),h=tc({widgetId:t,widgets:l.blocks[r].gates,currentPath:e.currentPath}),f=(e,t,n,r)=>d({port:e,data:t,eventContext:n,executionContext:r}),p={id:t,type:u.type,recipePoolId:s,thingRecipeId:r,recipeType:l.dbInfo.recipeType,returnOriginalEvent:!!u.returnOriginalEvent,currentPath:e.currentPath,eventId:c,eventContext:h?.data.eventContext||void 0,registerInterrupt:e=>{const{type:n,customTargetPortName:i,config:o,sourceWidgetId:a,interruptData:c,customId:l}=e;return tt.createInterrupt({type:n,recipePoolId:s,thingId:r,targetWidgetId:t,sourceWidgetId:a,portName:i,config:o,data:c,customId:l})},cancelInterrupt:e=>tt.destroyInterrupt(e),invokeNextWidget:d,nextWidget:f,nextGate:f,getParentAtPort:e=>pc(e,t,r,s),getState:()=>Object.freeze({...u.state,...u.type===Ke.input&&{customInputs:[]}}),setState:e=>{if("object"!=typeof e)return void console.warn(`Invalid state type [${typeof e}]. Expected an 'object'`);const n={...e,...u.type===Ke.input&&!e.customInputs&&{customInputs:[]}},i={...u.state};u.state=n,sc&&sc({blockId:r,gateId:t,prevState:i,newState:{...n},recipeId:s})}};return p};tt.setInvokeChildGateCb(hc),tt.setConsumeEventCounterCb((()=>++uc));const yc=(e,t,n,r,i)=>{const o=ue(e,n,r);if(!o)return console.warn(`Gate ${r} not found in block ${n} for recipe ${e}`),null;const s=t=>{const{type:i,customTargetPortName:o,config:s,data:a}=t;return tt.createInterrupt({type:i,recipePoolId:e,thingId:n,targetWidgetId:r,sourceWidgetId:r,portName:o,config:s,data:a})},a=()=>Object.freeze({...o.state,...o.type===Ke.input&&{customInputs:[]}}),c=e=>{if("object"!=typeof e)return void console.warn(`Invalid state type [${typeof e}]. Expected an 'object'`);const t={...e,...o.type===Ke.input&&!e.customInputs&&{customInputs:[]}};o.state=t},l=async t=>{const r=((e,t,n)=>{const r=ae(e);if(!r)throw new Error(`Recipe [${e} does not exist]`);if(!r.storage)return null;const i=ce(e,t);if(!i)throw new Error(`The Thing "${t}" does not exist in recipe ${e}`);if(!(i.storageUnits||[]).includes(n))throw new Error(`The Thing "${t}" has no access to storage unit "${n}"`);return r.storage[n]||null})(e,n,t);return r};if(i){const i=gc({gateId:r,thingRecipeId:n,thingDbId:o.id,thingVersion:"default",recipeId:e,currentPath:[],eventId:null});return{getState:a,setState:c,registerInterrupt:s,getStorageData:l,nextWidget:(e,t,n)=>i({port:e,data:t,eventContext:n}),invokeNextWidget:i,recipePoolId:e,recipeType:t,thingRecipeId:n,widgetId:r}}return{getState:a,setState:c,recipePoolId:e,widgetId:r,thingRecipeId:n}},vc=new c,bc="invoked",wc="state",Sc=()=>{tt.destroyAllInterrupts()},_c=async(e,t,n)=>{const r=ae(e),i=ue(e,t,n);if(i&&r){const o=za(i.type);if(o&&"function"==typeof o.terminate){const i=((e,t,n,r)=>yc(e,t,n,r))(e,r.dbInfo.recipeType,t,n);if(i)try{await o.terminate(i)}catch(e){console.warn(`Error terminating widget "${n}" in thing "${t}". Failing silently: `,e)}}}},Ic=async e=>{const{recipePoolId:t,thingRecipeId:n,widgetRecipeId:r,options:i}=e,o=ae(t),s=ue(t,n,r);if(s&&o){const e=za(s.type);if(e&&"function"==typeof e.initialize){const a=((e,t,n,r)=>yc(e,t,n,r,!0))(t,o.dbInfo.recipeType,n,r);if(a){const t=e.initialize;try{(e=>{if(e.type===Ke.script){const t=e.state;if((t.version||0)<2){const n=Object.keys(e.variablesListener||{});for(const t of n)if(e.variablesListener){const n=ei(t);e.variablesListener[n]=e.variablesListener[t],delete e.variablesListener[t],delete e.variables}t.version=2}}})(s),await t(a,i||{})}catch(e){throw console.warn(`Error initializing widget "${r}" in thing "${n}": `,e),e}}}}},xc=(e,t)=>{const n=ae(t);if(n)for(const t in n.blocks){const r=n.blocks[t];for(const t in r.gates)if(t===e)return{widget:r.gates[t],thing:r}}return null},kc=(e,t="",n="")=>`block:${t}:gate:${n||""}:${e}`,Ec=e=>{vc.emit(kc(wc),e),vc.emit(kc(wc,e.blockId,e.gateId),e)};oc=async e=>{await vc.emit(kc(bc),e),await vc.emit(kc(bc,e.blockId,e.gateId),e)},(e=>{sc=e})(Ec);var Cc=async(e,t,n,r,i)=>{const o=de(e,{id:t,authorId:r,version:n,recipeType:i});Ii(),ic(),rc(i),e.globalVariables&&ro.registerGlobalVariables(e.globalVariables);const s=ae(o);return s&&(s.startedAt=Date.now(),s.retryAttempts=0,s.execCounter=0,s.status=ee.STARTING,s.addLog("recipe registered")),o},$c=async e=>{const t=ae(e);if(!t)return null;t.addLog("terminating recipe"),Sc(),ia();for(const n in t.blocks){const r=t.blocks[n];for(const t in r.gates)await _c(e,n,t)}(e=>{!!ie[e]&&delete ie[e]})(e)},Oc=async(e,t)=>{const n=ae(e),r=[],i=[];if(n){Bi(),si({recipePoolId:e,thingId:ge});for(const o in n.blocks){const s=n.blocks[o];if(!t||!Array.isArray(t)||t.includes(o))for(const t in s.gates)try{if(n.dbInfo?.recipeType===gr.Desktop){const e=s.gates[t];if(e.type===Ke.hubService){const r=e.state;if(r?.service?.webOnly){n?.addLog(`skipping initialization of web-only widget "${t}"`);continue}}e.type===Ke.recipeLoad&&i.push(e)}await Ic({recipePoolId:e,thingRecipeId:o,widgetRecipeId:t,options:{keepCurrentState:!0}})}catch(e){r.push({widgetId:t,error:e.message})}}}return{failed:r,sendToInputWidget:t=>{const{inputName:n,data:r,thingId:i=ge,waitForOutputChild:o=!0}=t;return(async e=>{const{inputName:t,data:n,recipePoolId:r,thingId:i,waitForOutputChild:o=!0}=e,s=ae(r),a=ce(r,i),c=Date.now();if(a&&s){uc+=1;for(const e in a.gates){const s=a.gates[e];if(s.type===Ke.input&&!s.disabled){const l=s.state.inputName||"";if(l===t){const t=za(s.type),u={...n,timestamp:c},d=mc({gateId:e,originalEvent:u,blockRecipeId:i,blockDbId:a.id,blockVersion:a.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:uc});if(d&&t.processEvent){const s={...d,getState:d.getState,waitForOutputChild:o};if(oc&&await oc({recipeId:r,blockId:i,gateId:e,targetPort:ut,data:n}),!ac)return await t.processEvent(u,s);await ac(i,r,l,n)}continue}}}}})({inputName:n,data:r,recipePoolId:e,thingId:i,waitForOutputChild:o})},invokeRecipeLoadedWidgets:async()=>{for(const t of i)await dc({widgetId:t.id,thingId:ge,recipeId:e,targetPortName:ds,data:{type:ye.Boolean,value:!0}})}}},Nc=e=>{hi(e)},Tc=(e,t,n,r=!1)=>{const i=xc(t,e);if(i){const{widget:o,thing:s}=i,a={...o.state};o.state=n,r&&Ec({blockId:s.recipeId,gateId:t,recipeId:e,newState:{...n},prevState:a})}},Ac=(e,t)=>{const n=xc(t,e);return n?n.widget.state:null},Mc=async e=>{const{recipePoolId:t,currentGateId:n,sourcePortName:r,originalEvent:i,data:o,eventContext:s,currentPath:a,eventId:c}=e,l=xc(n,t);if(l)return fc({portName:r,originalEvent:i,data:o,currentGateId:n,blockRecipeId:l.thing.recipeId,thingDbId:l.thing.id,thingVersion:l.thing.version,recipeId:t,eventContext:s,currentPath:a,eventId:c})},Pc=()=>{cc=!0},Dc=xi;const jc=(e,t)=>{if(!e.uuid)throw new Error("Recipe file not compatible with this version of the Kemu Edge.");return((e,t,n)=>{const r=Buffer.from(n,"base64"),i=r.subarray(0,16),o=r.subarray(16).toString("base64"),s=d(e,t,32),a=h("aes-256-cbc",s,i);let c=a.update(o,"base64","utf8");return c+=a.final("utf8"),c})(e.uuid,"kemu",t)},Rc=e=>{try{return JSON.parse(e)}catch(e){return null}},Lc="undefined"!=typeof window,Fc={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},Uc={protocolPrefix:4,txtLength:4},Wc=Object.values(Fc).reduce(((e,t)=>e+t),0),Bc=Object.values(Uc).reduce(((e,t)=>e+t),0),Gc=["width","height","colorSpace"],Vc=(e,t)=>{const n={},r=[];let i=0,o=Array.isArray(e)?[]:{};const s=(e,o)=>{const a=(e=>{const t="undefined"!=typeof Buffer&&e instanceof Buffer,n=e instanceof ArrayBuffer,r=e instanceof Uint8ClampedArray,i=e instanceof Uint8Array,o=e instanceof Int8Array;return t?"Buffer":n?"ArrayBuffer":r?"Uint8ClampedArray":i?"Uint8Array":o?"Int8Array":null})(e);if(!a){if(Array.isArray(e)){const t=[];for(let n=0;n<e.length;n++)t[n]=s(e[n],`${o}[${n}]`);return t}if("object"==typeof e){const t={},n=(e=>{const t=e instanceof Int16Array,n=e instanceof Uint16Array,r=e instanceof Int32Array,i=e instanceof Uint32Array,o=e instanceof Float32Array,s=e instanceof Float64Array,a=e instanceof BigInt64Array,c=e instanceof BigUint64Array;return t?"Int16Array":n?"Uint16Array":r?"Int32Array":i?"Uint32Array":o?"Float32Array":s?"Float64Array":a?"BigInt64Array":c?"BigUint64Array":null})(e);if(n)throw new Error(`Unsupported binary type [${n}] at path "${o}"`);for(const n in e)Object.hasOwn(e,n)||Gc.includes(n)||console.warn(`Allowing inherited property: ${n} from path: ${o}`),t[n]=s(e[n],`${o.length?`${o}.`:""}${n}`);return t}return e}n[o]={index:i,length:e.byteLength,binaryType:a},"Buffer"===t?r.push(Buffer.from(e)):"ArrayBuffer"===a?r.push(e):r.push(e.buffer),i+=e.byteLength};o=s(e,"");let a=null;if(r.length>1)if("ArrayBuffer"===t){const e=r.reduce(((e,t)=>e+t.byteLength),0),t=new Uint8Array(e);let n=0;for(let e=0;e<r.length;e++)t.set(new Uint8Array(r[e]),n),n+=r[e].byteLength;a=t.buffer}else{a=Buffer.concat(r)}else 1===r.length&&(a=r[0]);return a?{map:n,combinedData:a,sourceCopy:o}:null},Yc=(e,t,n)=>{const r=t.match(/(\[\d+\])|([^[\].]+)/g)||[];let i=e;for(let e=0;e<r.length;e++){let t=r[e];const o=t.startsWith("[")&&t.endsWith("]"),s=e===r.length-1;if(o){t=t.slice(1,-1);const o=parseInt(t,10);if(!Array.isArray(i))throw new Error(`Expected an array at key "${r.slice(0,e).join(".")}" but found an object.`);s?i[o]=n:(i[o]||(i[o]=r[e+1].startsWith("[")?[]:{}),i=i[o])}else s?i[t]=n:(i[t]||(i[t]=r[e+1].startsWith("[")?[]:{}),i=i[t])}return e},Hc=(e,t,n)=>{const r="undefined"!=typeof Buffer,i=t instanceof Uint8Array;for(const o in n)if(Object.hasOwn(n,o)){const{index:s,length:a,binaryType:c}=n[o];let l=null;if(r&&t instanceof Buffer)switch(c){case"Buffer":l=t.subarray(s,s+a);break;case"ArrayBuffer":l=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a);break;case"Uint8Array":l=new Uint8Array(t.subarray(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.subarray(s,s+a));break;case"Int8Array":l=new Int8Array(t.subarray(s,s+a))}else if(t instanceof ArrayBuffer||t instanceof Uint8Array)switch(c){case"Buffer":if(r){l=Buffer.from(t.slice(s,s+a));break}case"ArrayBuffer":l=i?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a):t.slice(s,s+a);break;case"Uint8Array":l=i?t.slice(s,s+a):new Uint8Array(t.slice(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.slice(s,s+a));break;case"Int8Array":l=new Int8Array(t.slice(s,s+a))}l&&Yc(e,o,l)}return e},zc=e=>g(e),qc="KMSG",Kc="KCMD",Jc=zc("klProtocol");var Zc={encode:(e,t,n)=>{const r={json:e.json},i=Vc(r.json,"Buffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=Buffer.from(a),l=c.byteLength,u=Fc.protocolPrefix+Fc.protocolVersion+Fc.jsonLength+Fc.binaryLength+Fc.fromServiceId+Fc.toServiceId+Fc.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write(qc,f),f+=Fc.protocolPrefix,d.writeUInt8(1,f),f+=Fc.protocolVersion,d.writeUInt32LE(l,f),f+=Fc.jsonLength,d.writeUInt32LE(s,f),f+=Fc.binaryLength,d.writeUInt32LE(t,f),f+=Fc.fromServiceId,d.writeUInt32LE(n,f),f+=Fc.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=Fc.sentAt,c.copy(d,f),f+=l,o&&s&&o.copy(d,f),d},decodeHeader:e=>{let t=0;const n=e.toString("utf-8",t,Fc.protocolPrefix);if(t+=Fc.protocolPrefix,n!==qc)return null;if(e.byteLength<Wc)return Jc(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=Fc.protocolVersion;const i=e.readUInt32LE(t);t+=Fc.jsonLength;const o=e.readUInt32LE(t);t+=Fc.binaryLength;const s=e.readUInt32LE(t);t+=Fc.fromServiceId;const a=e.readUInt32LE(t);t+=Fc.toServiceId;const c=e.readBigInt64LE(t);t+=Fc.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,Wc);let h=null;return e.byteLength-Wc-i-o>0&&(h=e.subarray(Wc+i+o)),{header:{protocolVersion:r,jsonLength:i,binaryLength:o,fromServiceId:s,toServiceId:a,sentAt:new Date(Number(c)),packages:[u],headerPackage:d},remaining:h}},decodeFullKlMessage:e=>{const t=Buffer.concat(e.packages),n=t.subarray(0,e.jsonLength).toString(),r=t.subarray(e.jsonLength,e.jsonLength+e.binaryLength),i=Rc(n);if(!i?.json)return Jc("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&Hc(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=Wc+e.jsonLength+e.binaryLength;return o.byteLength>c&&(a=o.subarray(c),s=o.subarray(0,c)),{message:{json:i.json,rawMessage:s},remaining:a}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<Wc)return Jc("Invalid Header Size"),e;let n=0;return n+=Fc.protocolPrefix,n+=Fc.protocolVersion,n+=Fc.jsonLength,n+=Fc.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=Fc.fromServiceId,void 0!==t.toServiceId&&e.writeUInt32LE(t.toServiceId,n),e},encodeCommand:e=>{let t=0;const n=Buffer.from(e),r=n.byteLength,i=Bc+r,o=Buffer.alloc(i);return o.write(Kc,t),t+=Uc.protocolPrefix,o.writeUint32LE(r,t),t+=Uc.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<Bc)return{command:null};const n=e.toString("utf-8",t,Uc.protocolPrefix);if(t+=Uc.protocolPrefix,n!==Kc)return{command:null};const r=e.readUInt32LE(t);t+=Uc.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-Bc-r;let s=null;o>0&&(s=e.subarray(Bc+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const Xc="KMSG",Qc="KCMD",el=zc("klProtocol"),tl=new TextEncoder;var nl={encode:(e,t,n)=>{const r={json:e.json},i=Vc(e.json,"ArrayBuffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=tl.encode(a),l=c.byteLength,u=new ArrayBuffer(Fc.protocolPrefix+Fc.protocolVersion+Fc.jsonLength+Fc.binaryLength+Fc.fromServiceId+Fc.toServiceId+Fc.sentAt+l+s),d=new DataView(u),h=new Uint8Array(u),f=Date.now();let p=0;for(let e=0;e<4;++e)h[p++]=Xc.charCodeAt(e);return d.setUint8(p,1),p+=Fc.protocolVersion,d.setUint32(p,l,!0),p+=Fc.jsonLength,d.setUint32(p,s,!0),p+=Fc.binaryLength,d.setUint32(p,t,!0),p+=Fc.fromServiceId,d.setUint32(p,n,!0),p+=Fc.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=Fc.sentAt,h.set(c,p),p+=l,o&&s&&h.set(new Uint8Array(o),p),u},decodeHeader:e=>{const t=new DataView(e);let n=0,r="";for(let e=0;e<Fc.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Xc)return null;if(e.byteLength<Wc)return el.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=Fc.protocolVersion;const o=t.getUint32(n,!0);n+=Fc.jsonLength;const s=t.getUint32(n,!0);n+=Fc.binaryLength;const a=t.getUint32(n,!0);n+=Fc.fromServiceId;const c=t.getUint32(n,!0);n+=Fc.toServiceId;const l=t.getBigInt64(n,!0);n+=Fc.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,Wc);let f=null;if(e.byteLength-Wc-o-s>0){f=new Uint8Array(e,Wc+o+s).slice().buffer}return{header:{protocolVersion:i,jsonLength:o,binaryLength:s,fromServiceId:a,toServiceId:c,sentAt:new Date(Number(l)),packages:[d],headerPackage:h.slice().buffer},remaining:f}},decodeFullKlMessage:e=>{const t=e.packages.reduce(((e,t)=>e+t.byteLength),0),n=new Uint8Array(t);let r,i=0;for(const t of e.packages)r=new Uint8Array(t),n.set(r,i),i+=r.byteLength;const o=(new TextDecoder).decode(n.subarray(0,e.jsonLength)),s=n.subarray(e.jsonLength,e.jsonLength+e.binaryLength),a=Rc(o);if(!a?.json)return el.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&Hc(a.json,s,a.jsonBinaryMap);const c=new Uint8Array(e.headerPackage.byteLength+n.byteLength);c.set(new Uint8Array(e.headerPackage),0),c.set(n,e.headerPackage.byteLength);let l=c,u=null;const d=Wc+e.jsonLength+e.binaryLength;return c.byteLength>d&&(u=c.subarray(d),l=c.subarray(0,d)),{message:{json:a.json,...s.length?{binaryData:s.buffer}:{},rawMessage:l.buffer},remaining:u?.buffer??null}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<Wc)return el("Invalid Header Size"),e;let n=0;n+=Fc.protocolPrefix,n+=Fc.protocolVersion,n+=Fc.jsonLength,n+=Fc.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=Fc.fromServiceId,void 0!==t.toServiceId&&r.setUint32(n,t.toServiceId,!0),e},encodeCommand:e=>{let t=0;const n=tl.encode(e),r=n.byteLength,i=new ArrayBuffer(Bc+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=Qc.charCodeAt(e);return o.setUint32(t,r,!0),t+=Uc.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<Bc)return{command:null};let r="";for(let e=0;e<Uc.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Qc)return{command:null};const i=t.getUint32(n,!0);n+=Uc.txtLength;const o=e.byteLength-Bc-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-Bc)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(Bc+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};let rl=Zc;Lc&&(rl=nl);var il,ol=rl;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}(il||(il={}));let sl=Math.ceil(Date.now()/1e3);let al,cl,ll,ul,dl,hl=!1;var fl=()=>{hl=!0},pl=()=>{hl=!1},gl=(e,t)=>{if(!al)throw new Error("Memory connection not set.");al.sendBuf(e,t)},ml=e=>cl=e,yl=e=>dl=e,vl=e=>ll=e,bl=e=>ul=e;const wl=async(e,t=2)=>{const n=async(e,r)=>{if(Array.isArray(e))for(let i=0;i<e.length;i++){const o=e[i];if(o&&"object"==typeof o)if(Array.isArray(o))await n(o,r+1);else{const s=o._kemuType;void 0!==s?s===ye.ImageData&&(e[i]=await Ye(o)):r<t&&await n(o,r+1)}}else if("object"==typeof e&&null!==e){const i=Object.keys(e);for(const o of i){const i=e[o];if(i&&"object"==typeof i){const s=i._kemuType;void 0!==s?s===ye.ImageData&&(e[o]=await Ye(i)):r<t&&await n(i,r+1)}}}};return await n(e,1),e};zc("klTransmissionManager"),zc("ipcClient"),zc("kemuWidgetService"),I(process.argv.slice(2));const Sl=e=>g(`runner:${e}`),_l=Sl("connectionManager"),Il=Sl("remoteInvoke"),xl=new function(e){const t={};let n,r=console.log;const i={};let o=e||String(Date.now());const s={},a=e=>!s[e],c=(e,t,n,r,i,o)=>{let s=Lc?new ArrayBuffer(0):Buffer.alloc(0);const c={json:{functionName:e,args:o.success?o.success:[o],messageId:t,type:o.success?"response":"error"}};return a(r)&&(s=ol.encode(c,n,r)),i(s,{msg:c,sourceServiceId:n,targetServiceId:r})};return{setLogger:e=>{r=e},processMessage:(e,o,s,a)=>{if(!a)return!1;const l=a;if(t[l.messageId]){const e=t[l.messageId];return e&&(clearTimeout(e.timer),e.fulfilled||(e.fulfilled=!0,"response"===l.type?e.resolve(l.args):"error"===l.type&&e.reject(l.args[0])),delete t[l.messageId]),!0}if("execute"!==l.type&&r&&r(`No pending execution found for message id "${l.messageId}"`),"execute"===l.type){const t=i[l.functionName];if(t){const i=e=>{c(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,e)};if(!(!n||n({args:l.args,functionName:l.functionName,transport:e,messageId:l.messageId,sourceServiceId:s.sourceServiceId,reply:i,send:o})))return r&&r(`Function "${l.functionName}" not allowed to be invoked by client [${s.sourceServiceId}]`),i({error:"Function not allowed",errCode:"FNC_NOT_ALLOWED"}),!0;t({transport:e,args:l.args,reply:i,messageId:l.messageId,sourceServiceId:s.sourceServiceId,send:o})}else{const e=`Function "${l.functionName}" not found.`;r&&r(e),c(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,{error:e,errCode:"FNC_NOT_FOUND"})}return!0}return!1},execute:async(e,n,i,s,c,l)=>{if(!i){const e="No send buffer function provided.";throw r&&r(e),e}sl+=1;const u=`${o}-${sl}-exec-${e.substring(0,10)}`,d={messageId:u,functionName:e,send:i,sourceServiceId:s,targetServiceId:c,args:n||[],fulfilled:!1,resolve:()=>{},reject:()=>{}};d.promise=new Promise(((e,t)=>{d.resolve=e,d.reject=t}));let h=Lc?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:e,args:n,messageId:u,type:"execute"}};a(c)&&(h=ol.encode(f,s,c)),t[u]=d,r&&r(`Calling remote function "${e}" with message id "${u}"`);const p="true"===process.env.NO_INVOKE_TIMEOUT;return l?.async?(d.fulfilled=!0,d.resolve([void 0]),delete t[u]):0===l?.timeout||p||(d.timer=setTimeout((()=>{r&&r(`Remote function ${u} timed out`);const n=t[u];n&&!n.fulfilled&&(n.fulfilled=!0,d.reject(`Function ${e} Timed out`)),delete t[u]}),l?.timeout||3e4)),i(h,{sourceServiceId:s,targetServiceId:c,msg:f}),d.promise},sendResponse:c,registerFunction:(e,t)=>{i[e]=t},registerFunctionsMiddleware:e=>{n=e},unregisterAllFunctions:()=>{Object.keys(i).forEach((e=>{delete i[e]}))},getTransportSendFunction:e=>{const n=t[e];return n?n.send:null},setServiceName:e=>{o=e},getPendingExecutions:()=>t,rejectAllPending:e=>{Object.keys(t).forEach((n=>{const r=t[n];r&&!r.fulfilled&&(clearTimeout(r.timer),r.fulfilled=!0,r.reject(e),delete t[n])}))},broadcast:(e,t,n,i)=>{sl+=1;const s=`${o}-${sl}-multicast-${e.substring(0,10)}`;let c=Lc?new ArrayBuffer(0):Buffer.alloc(0);const l={json:{functionName:e,args:t,messageId:s,type:"execute"}};let u=a(n[0].serviceId);u&&(c=ol.encode(l,i,n[0].serviceId));for(let t=0;t<n.length;t++)try{const o=n[t];r&&r(`Broadcasting function "${e}" with message id "${s}" to client [${o.serviceId}]`),0!==t&&(u=a(o.serviceId),u&&(c=ol.patchEncodedHeader(c,{toServiceId:o.serviceId}))),o.sendFn(c,{msg:l,sourceServiceId:i,targetServiceId:o.serviceId})}catch(e){r&&r(`Error broadcasting to client at index ${t}`)}},disableServiceEncoding:(e,t)=>{s[e]=t}}}("kweb");xl.setLogger(Il);const kl=new c,El=new c;let Cl,$l=null,Ol=null,Nl=null,Tl=null;const Al={},Ml=()=>Tl?{...Tl}:null,Pl=(e,t,n)=>{const r=`${e}_${t}`,i={contents:n,lastRequestedAt:Date.now(),contentsChecksum:""};return Al[r]=i,i},Dl=(e,t)=>Al[`${e}_${t}`]||null,jl=async(e,t)=>{if(!$l)return _l("Hub Link has not been acknowledged. Cannot get services."),null;const n=[{serviceName:e,version:t}];return(await xl.execute(Se.GetServiceContents,n,Fl,$l,0))[0]},Rl=new Map,Ll=async(e,t,n=!1)=>{if(!e||!t)return null;const r=`${e}:${t}`;if(!n){const e=Rl.get(r);if(e)return e}const i=Dl(e,t);if(!i||n){const n=i||Pl(e,t),o=(async()=>{try{const r=await jl(e,t);return r&&(n.contents=r.uiContent,n.contentsChecksum=r.uiContentsChecksum||""),n.contents||null}catch(n){return _l(`Failed to fetch service contents for ${e} v${t}`,n),null}finally{Rl.delete(r)}})();return Rl.set(r,o),o}return i?.contents||null},Fl=gl,Ul=()=>{_l("Disconnected from the server"),$l=null,Nl=null,xl.rejectAllPending("Disconnected from the server"),kl.emit("disconnected")},Wl=()=>{_l("Connected to the server"),kl.emit("connected")},Bl=()=>Ol,Gl=(e,t,n,r)=>`${e}_${t}_${n}_${r}`,Vl=async()=>{const e=Bl();if(e){const t=ae(e)?.blocks;if(t){const n={};for(const r in t){const i=t[r];for(const t in i.gates){const r=i.gates[t];if(r.type===Ke.hubService){const t=r.state;if(t.service?.eventEmitter){const r=`${t.service.name}_${t.service.version}`;if(!n[r])try{_l(`Re-issuing subscription for service ${t.service.name} (${t.service.version})`),n[r]=!0,await fu({listener:{recipeId:e},targetService:{serviceName:t.service.name,version:t.service.version}})}catch(e){_l(`Failed to re-issue subscription for service ${t.service.name} (${t.service.version})`,e)}}}}}}}},Yl=async()=>{Cl=void 0;const e=await su();kl.emit("services-changed",e)},Hl=async()=>(_l("Services list changed"),Yl()),zl=async e=>{if(!e)return void _l("Hub sent ACK request without service id");const t=Bl();if(!t)return void _l("Hub sent ACK request without recipe pool id");if(!ae(t))throw new Error("Hub sent ACK request without recipe");const n=Ml(),r={apiKey:n?.apiKey,recipe:he(t),user:n,ackSessionId:e};await xl.execute(Se.SocketAckResponse,[r],Fl,e,0),_l("Hub Link acknowledged"),$l=e,kl.emit("acknowledged"),await _u(),Vl()},ql=async()=>{await pl()},Kl=async e=>{const t=e.args[0],{widgetId:n,recipePoolId:r,waitForResponse:i}=t;return e.reply({success:[`message received by recipe ok target widget "${n}", recipe pool id "${r}", waitForResponse "${i}"`]})},Jl=async e=>{const t=e.args[0],n=Gl("broadcast",`hub_${t.type}`,(0).toString(),"");await El.emit(n,t)},Zl=async e=>{const t=e.args[0],n=Bl(),r=t.targetRecipePoolId||t.targetRecipeId;if(!r||r===n){for(const e of t.outputs||[])e.type===ye.ImageData&&Le(e.value)&&(e.value=await Ye(e.value));if(n){const r=ae(n);if(r){const i=async e=>{const n=Gl("broadcast",t.source.serviceName,t.source.serviceVersion,e);try{await El.emit(n,t)}catch(t){_l(`Failed to emit broadcast event for target ${e}`,t)}};await i("app");for(const o in r.blocks){const s=r.blocks[o];for(const r in s.gates){const o=s.gates[r];if(o.disabled)continue;if(t.targetWidgetId&&t.targetWidgetId!==r)continue;const a=o.state;if(o.type!==Ke.script){if(o.type===Ke.hubService&&a.service?.name===t.source.serviceName&&a.service?.version===t.source.serviceVersion&&a.variantId===t.variantId){await i(r);for(const i of t.outputs||[])if(null!==i.value&&void 0!==i.value){const o={type:i.type,value:i.value,timestamp:Date.now()};_l(`Sending data to output ${i.name} requested by messageId ${e.messageId}`),await Mc({recipePoolId:n,currentGateId:r,sourcePortName:i.name,originalEvent:o,data:o,eventContext:t.eventContext,currentPath:t.currentPath||[],eventId:t.eventId||null})}}}else await i(r)}}}}}},Xl=async e=>{const t=e.args[0],{finalState:n,recipeId:r,widgetId:i}=t,o=Ac(r,i);let s=o;if(n&&s&&o&&(s={...o,customState:n},Tc(r,i,s,!0)),s?.service)try{const e=Gl("setOutputs",s.service.name,s.service.version,i);await El.emit(e,t.outputs)}catch(e){_l(`Failed to emit setOutputs event for widget ${i}`,e)}let a=null;for(const n of t.outputs)if(null!==n.value&&void 0!==n.value){if(n.type===ye.ImageData){if(!Le(n.value)){_l(`Invalid ImageData value received for output ${n.name}. Expected an ImageData-like object`);continue}n.value=await Ye(n.value)}else n.type!==ye.JsonObj&&n.type!==ye.Array||await wl(n.value);const o={type:n.type,value:n.value,timestamp:Date.now()};_l(`Sending data to output ${n.name} requested by messageId ${e.messageId}`);try{await Mc({recipePoolId:r,currentGateId:i,sourcePortName:n.name,originalEvent:o,data:o,eventContext:t.eventContext,currentPath:t.currentPath||[],eventId:t.eventId||null})}catch(e){_l(`Failed to trigger next global widget for output ${n.name}`,e),a=e;break}}if(a){const t=a instanceof Dr,n=a;e.reply({error:a.message,errCode:t?"CHILD_WIDGET_ERROR":"INVOKING_ERROR",errData:{targetWidgetId:n.targetWidgetId,targetPortName:n.targetPortName,sourcePortName:n.sourcePortName,sourceWidgetId:n.sourceWidgetId,targetWidgetType:n.targetWidgetType,sourceWidgetType:n.sourceWidgetType}})}else e.reply({success:[]})},Ql=async e=>{const t=e.args[0],{newState:n,recipeId:r,widgetId:i}=t,o=Ac(r,i);if(o){const t={...o,customState:{...o.customState,...n}};return Tc(r,i,t,!0),e.reply({success:[]})}},eu=async({args:e,reply:t})=>{const n=e[0],{recipeId:r,widgetId:i,path:o,key:s}=n;_l(`Received request to set a dependency path for "${s}" on widget "${i}" in recipe "${r}"`);const a=Ac(r,i);if(a){const e={...a};e.dependencies=e.dependencies||{},e.dependencies[s]={path:o},Tc(r,i,e,!0)}return t({success:[]})},tu=async({args:e,reply:t})=>{const n=e[0],{recipeId:r,widgetId:i,key:o}=n;_l(`Received request to get a dependency path for "${o}" on widget "${i}" in recipe "${r}"`);const s=Ac(r,i);if(s){const e=s.dependencies?.[o]?.path;return _l(`Returning dependency path for "${o}" on widget "${i}": "${e}"`),t({success:[e||null]})}return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"})},nu=async({args:e,reply:t})=>{const n=e[0];if(!n.expressions)return t({error:"Expression is required",errCode:"EXPRESSION_REQUIRED"});const r=le({recipeId:n.recipePoolId,widgetId:n.widgetId});if(!r)return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"});if(r.type!==Ke.hubService)return t({error:"Widget is not a hub service",errCode:"WIDGET_NOT_A_HUB_SERVICE"});const i=r.state,{uuid:o}=(e=>{const t=ae(e);if(!t)throw new Error(`Recipe [${e} does not exist]`);return{uuid:t.uuid,recipeType:t.dbInfo?.recipeType}})(n.recipePoolId);return t({success:[{expressions:await Promise.all(n.expressions.map((async e=>await Os({template:e.text,context:e.context||{},options:{enableFnTag:!1,recipeUuid:o,serviceName:i.service?.name,securityOptions:{restrictionLevel:"strict"}}}))))}]})},ru=async({args:e,reply:t})=>{const n=e[0],r=ro.getAllVariables().filter((e=>!n.filterTypes||n.filterTypes.includes(e.controlType))).map((e=>({name:e.name,type:e.controlType})));return t({success:[{variables:r}]})},iu=async({args:e,reply:t})=>{const n=e[0];if(!n.names||0===n.names.length)return t({error:"Variable names are required",errCode:"VARIABLE_NAMES_REQUIRED"});const r=ro.getAllVariables().filter((e=>n.names.includes(e.name))).map((e=>({name:e.name,value:e.lastValue})));return t({success:[{values:r}]})},ou=async({args:e,reply:t})=>{const n=e[0];if(!n.values||0===n.values.length)return t({error:"Variable values are required",errCode:"VARIABLE_VALUES_REQUIRED"});try{const{values:e}=n;for(const t of e)await ro.setGlobalVariable({name:t.name,value:t.value});return t({success:[]})}catch(e){return _l(`Failed to set global variable values: ${e}`),t({error:"Failed to set some of the global variable values",errCode:"FAILED_TO_SET_GLOBAL_VARIABLE_VALUES",errData:e.message})}},su=async()=>{if(_l(`Requesting services on ${(new Date).toISOString()}`),!$l)return _l("Hub Link has not been acknowledged. Cannot get services."),{available:[],installed:[],failed:[]};const[e]=await xl.execute(Se.GetServices,[],Fl,$l,0);Cl=e;for(const t of e.available){if(t.internal)continue;const e=Dl(t.name,t.version);if(!e||e?.contentsChecksum!==t.uiContentChecksum)try{const n=e||Pl(t.name,t.version);_l(`Service ${t.name} v${t.version} contents have changed, fetching new contents`);const r=await jl(t.name,t.version);r&&(n.contents=r.uiContent,n.contentsChecksum=t.uiContentChecksum||"")}catch(e){_l(`Failed to update service contents for ${t.name} v${t.version}`,e)}}return e},au=()=>Cl||{available:[],installed:[],failed:[]},cu=()=>!!Cl,lu=async e=>{const{targetServiceSessionId:t}=e;if(!$l)return void _l("No target service session id provided");_l(`Forwarding "onParentEvent" to service ${t}`);const n=await xl.execute(Se.OnParentEvent,[e],Fl,$l,t,e.config).catch((e=>{throw _l(`Error invoking onParentEvent callback: ${e}`),e.errCode===il.ParentEventCallbackError?e.error:e}));return n},uu=async e=>{if(!$l)return _l("Hub Link has not been acknowledged. Cannot get services."),{};const[t]=await xl.execute(Se.GetDefaultState,[],Fl,$l,e);return t},du=async(e,t,n,r,i)=>{if(!$l)return _l("Hub Link has not been acknowledged. Cannot get services."),null;const[o]=await xl.execute(Se.UIEvent,[t,n,r],Fl,$l,e,i);return o},hu=(e,t)=>{const n=(...e)=>{t(...e)};return kl.on(e,n),()=>kl.off(e,n)},fu=async e=>{if($l)return xl.execute(Se.SubscribeToService,[e],Fl,$l,0);_l("Hub Link has not been acknowledged. Cannot subscribe to services.")},pu=async e=>{if($l)return xl.execute(Se.UnsubscribeFromService,[e],Fl,$l,0);_l("Hub Link has not been acknowledged. Cannot subscribe to services.")},gu=(e,t,n,r)=>{const i=Gl("broadcast",t,n,e);return El.on(i,r)},mu=(e,t,n,r)=>{const i=Gl("setOutputs",t,n,e);return El.on(i,r)},yu=async(e,t,n)=>$l?xl.execute(e,t,Fl,$l,0,n):(_l("Hub Link has not been acknowledged. Cannot execute function."),null),vu=async e=>{if(!$l)return void _l("Hub Link has not been acknowledged. Cannot execute function.");const t=Ac(e.recipePoolId,e.widgetId);if(!t)throw new Error("Widget or recipe pool not found. Cannot initialize service instance.");const n=Object.keys(t.dependencies||{}).reduce(((e,n)=>(e[n]=t.dependencies?.[n]?.path||null,e)),{});if(!ae(e.recipePoolId))throw new Error("Recipe not found. Cannot initialize service instance.");const r=Ml(),i=[{currentState:t.customState,recipeId:e.recipePoolId,recipe:he(e.recipePoolId),widgetId:e.widgetId,variantId:e.variantId,recipeType:e.recipeType,recipeName:e.recipeName,currentDependencies:n,kemuApiKey:r?.apiKey}],[o,s,a]=await xl.execute(Se.InitializeInstance,i,Fl,$l,e.sessionId);if(s&&s.length>0){const n=s.filter((e=>e.name&&e.name.length>0)).map((e=>({...e,hubServiceName:t.service?.name})));Dc({clearExistingSecrets:!0,recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:n})}if(a&&a.length>0&&await Promise.all(a.map((async t=>{await ro.setGlobalVariable({name:t.name,value:t.value,controlType:t.controlType,controlSettings:t.controlSettings,helpText:t.helpText,order:t.order,disableChangeNotifications:!1===t.emitChangeEvent,disableDefineNotifications:!1===t.emitDefineEvent,doNotOverrideExisting:t.doNotOverrideExisting??!1,widgetId:e.widgetId})}))),o){const t=Ac(e.recipePoolId,e.widgetId);if(t){const n={...t,customState:o};Tc(e.recipePoolId,e.widgetId,n,!0)}}},bu=async(e,t,n,r)=>{if(!$l)return void _l("Hub Link has not been acknowledged. Cannot execute function.");const i=Ac(n,t);if(!i)throw new Error("Widget or recipe pool not found. Cannot initialize service instance.");const o=ae(n);if(!o)throw new Error("Recipe not found. Cannot terminate service instance.");const s=[{currentState:i.customState,recipeId:n,recipe:{poolId:n,uuid:o.uuid,name:o.name,type:o.dbInfo.recipeType,dbId:o.dbInfo.id,version:o.dbInfo.version,authorId:o.dbInfo.authorId},widgetId:t,variantId:r}];await xl.execute(Se.TerminateInstance,s,Fl,$l,e)},wu=async(e,t,n="^",r)=>{const i=["^","~",">=",">","<=","<","="];if(!i.includes(n))throw new Error(`Invalid compare mode "${n}". Must be one of ${i.join(", ")}`);const o=cu(),s=r||!o?await su():au();for(const r of s.available)if(r.name===e){if(r.version===t)return r;if(p(r.version,`${n}${t}`))return r}return null},Su=async(e=!1)=>{if(!$l)return _l("Hub Link has not been acknowledged. Cannot get services."),null;if(Nl&&!e)return Nl;const[t]=await xl.execute(Se.GetSystemInfo,[],Fl,$l,0).catch((e=>(_l("Failed to get system info",e),[null])));return Nl=t,t},_u=async()=>{Nl=await Su()};var Iu,xu,ku,Eu,Cu,$u,Ou,Nu,Tu=async e=>{if(!e.apiKey)throw new Error("an API key is required to connect to the hub");Tl=e,e.apiKey,vl(Wl),bl(Ul),yl((({json:e,transmission:t})=>{xl.processMessage("websocket",Fl,t,e)})),await ql(),xl.unregisterAllFunctions(),xl.registerFunction(Se.SetState,Ql),xl.registerFunction(Se.SetOutputs,Xl),xl.registerFunction(Se.BroadcastEvent,Zl),xl.registerFunction(Se.HubBroadcastEvent,Jl),xl.registerFunction(Se.SendToRecipe,Kl),xl.registerFunction(_e.SetDependencyPath,eu),xl.registerFunction(_e.GetDependencyPath,tu),xl.registerFunction(_e.ParseStringExpression,nu),xl.registerFunction(_e.GetGlobalVariableNames,ru),xl.registerFunction(_e.GetGlobalVariableValues,iu),xl.registerFunction(_e.SetGlobalVariableValues,ou),ml((e=>{((e,t)=>{const n=we.SocketAcknowledge,r=we.IpcAcknowledge,i=e.startsWith(n);if(e===r)return t&&t(),0;if(i){const o=e.split(i?n:r),s=parseInt(o[1]);return t&&t(s),s}})(e,zl),((e,t)=>{e===we.ServicesListChanged&&(t&&t())})(e,Hl)})),await fl()},Au=(e,t)=>{kl.on(e,t)},Mu=()=>({getServices:su,getServiceContents:Ll,onParentEvent:lu,onCommand:hu,getDefaultState:uu,getCachedServices:au,areServicesCached:cu,subscribeToServiceEvents:fu,unsubscribeFromServiceEvents:pu,callProcessorHandler:du,onBroadcastEvent:gu,onSetOutputsEvent:mu,executeHubFunction:yu,initializeServiceInstance:vu,terminateServiceInstance:bu,getCompatibleService:wu,getHubSystemInfo:Su}),Pu=e=>{Ol=e},Du=()=>xl;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(Iu||(Iu={})),function(e){e[e.Number=0]="Number",e[e.String=1]="String",e[e.ArrayBuffer=2]="ArrayBuffer",e[e.Array=3]="Array",e[e.Boolean=4]="Boolean",e[e.JsonObj=5]="JsonObj",e[e.Anything=6]="Anything",e[e.ImageData=7]="ImageData",e[e.AudioBuffer=8]="AudioBuffer",e[e.Rect=9]="Rect",e[e.Point=10]="Point",e[e.ImageBitmap=11]="ImageBitmap",e[e.BinaryFile=12]="BinaryFile"}(xu||(xu={})),function(e){e.Number="Number",e.String="String",e.ArrayBuffer="ArrayBuffer",e.Array="Array",e.Boolean="Boolean",e.JsonObj="JsonObj",e.Anything="Anything",e.ImageData="ImageData",e.AudioBuffer="AudioBuffer",e.Rect="Rect",e.Point="Point",e.ImageBitmap="ImageBitmap",e.BinaryFile="BinaryFile"}(ku||(ku={})),function(e){e.Javascript="js",e.Python="py",e.Executable="exe"}(Eu||(Eu={})),function(e){e.IpcAcknowledge="iack:",e.SocketAcknowledge="sack:",e.AcknowledgeResponse="ackr:",e.ServicesListChanged="update-services",e.SendManifest="send-manifest",e.BroadcastStart="broadcast-start",e.BroadcastEnd="broadcast-end",e.AssumeSession="assume:"}(Cu||(Cu={})),function(e){e.GetServices="getServices",e.SubscribeToService="subscribeToService",e.UnsubscribeFromService="unsubscribeFromService",e.GetServiceContents="getServiceContents",e.SocketAckResponse="socketAckResponse",e.ShowSecretsConfigScreen="showSecretsConfigScreen",e.GetMappedSecrets="getMappedSecrets",e.GetSecretContexts="getSecretContexts",e.AddServiceSecret="addServiceSecret",e.OnParentEvent="onParentEvent",e.GetDefaultState="getDefaultState",e.BroadcastEvent="broadcastEvent",e.HubBroadcastEvent="hubBroadcastEvent",e.ServiceManifest="serviceManifest",e.SendToRecipe="sendToRecipe",e.KemuComposerDisconnected="kemu-composer-disconnected",e.GetState="getState",e.SetState="setState",e.SetOutputs="setOutputs",e.UIEvent="uiEvent",e.GetSystemInfo="getSystemInfo",e.InitializeInstance="initializeInstance",e.TerminateInstance="terminateInstance",e.UninstallService="uninstallService",e.ChooseDirectoryDialog="chooseDirectoryDialog",e.ChooseFileDialog="chooseFileDialog",e.SaveRecipeToFile="saveRecipeToFile",e.GetUniqueId="getUniqueId",e.RebootToInstallUpdate="rebootToInstallUpdate",e.GetFileContentFromCacheId="getFileContentFromCacheId",e.GetDecryptedEdgeApiKey="getDecryptedEdgeApiKey",e.GetHubConfig="getHubConfig",e.GetRecipeDecryptedSecretsValues="getRecipeDecryptedSecretsValues",e.GetRecipeSecretMappings="getRecipeSecretMappings",e.AddRecipeSecretMapping="addRecipeSecretMapping",e.DeleteRecipeSecretMapping="deleteRecipeSecretMapping",e.GetHubSecrets="getHubSecrets",e.AddHubSecrets="addHubSecrets",e.DeleteHubSecret="deleteHubSecret"}($u||($u={})),function(e){e.SetDependencyPath="setDependencyPath",e.GetDependencyPath="getDependencyPath"}(Ou||(Ou={})),function(e){e.IPC="ipc",e.WS="ws"}(Nu||(Nu={}));const ju=e=>{try{return JSON.parse(e)}catch(e){return null}},Ru=()=>{const e=(()=>{switch(process.arch){case"x64":return"x64";case"ia32":return"x86";case"arm":return"arm";case"arm64":return"arm64";default:return""}})();if(!e)throw new Error(`Unsupported architecture: ${process.arch}`);switch(process.platform){case"win32":return`win-${e}`;case"darwin":return`osx-${e}`;case"linux":{let t="generic";try{const e=$.readFileSync("/etc/os-release","utf-8").split("\n").reduce(((e,t)=>{const[n,...r]=t.split("=");if(n&&r.length>0){let t=r.join("=").trim();t.startsWith('"')&&t.endsWith('"')&&(t=t.substring(1,t.length-1)),e[n.trim()]=t}return e}),{}),n=e.ID,r=e.ID_LIKE?.split(/\s+/)||[];"debian"===n||r.includes("debian")?t="debian":"rhel"===n||"fedora"===n||"centos"===n||r.includes("rhel")||r.includes("fedora")?t="rhel":("arch"===n||r.includes("arch"))&&(t="arch")}catch(e){}return`linux-${t}-${e}`}default:throw new Error(`Unsupported platform: ${process.platform}`)}},Lu=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,Fu=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(Lu);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},Uu=e=>"*"===e||"x"===e||"X"===e,Wu=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},Bu=(e,t)=>{if(Uu(e)||Uu(t))return 0;const[n,r]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(Wu(e),Wu(t));return n>r?1:n<r?-1:0},Gu=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const r=Bu(e[n]||"0",t[n]||"0");if(0!==r)return r}return 0},Vu=(e,t,n)=>{zu(n);const r=((e,t)=>{const n=Fu(e),r=Fu(t),i=n.pop(),o=r.pop(),s=Gu(n,r);return 0!==s?s:i&&o?Gu(i.split("."),o.split(".")):i||o?i?-1:1:0})(e,t);return Yu[n].includes(r)},Yu={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},Hu=Object.keys(Yu),zu=e=>{if(-1===Hu.indexOf(e))throw new Error(`Invalid operator, expected one of ${Hu.join("|")}`)};var qu="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Ku(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ju,Zu,Xu,Qu,ed,td={exports:{}},nd={exports:{}};function rd(){if(Zu)return Ju;Zu=1;var e=1e3,t=60*e,n=60*t,r=24*n,i=7*r;function o(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}return Ju=function(s,a){a=a||{};var c=typeof s;if("string"===c&&s.length>0)return function(o){if(!((o=String(o)).length>100)){var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(o);if(s){var a=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return a*i;case"days":case"day":case"d":return a*r;case"hours":case"hour":case"hrs":case"hr":case"h":return a*n;case"minutes":case"minute":case"mins":case"min":case"m":return a*t;case"seconds":case"second":case"secs":case"sec":case"s":return a*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(s);if("number"===c&&isFinite(s))return a.long?function(i){var s=Math.abs(i);return s>=r?o(i,s,r,"day"):s>=n?o(i,s,n,"hour"):s>=t?o(i,s,t,"minute"):s>=e?o(i,s,e,"second"):i+" ms"}(s):function(i){var o=Math.abs(i);return o>=r?Math.round(i/r)+"d":o>=n?Math.round(i/n)+"h":o>=t?Math.round(i/t)+"m":o>=e?Math.round(i/e)+"s":i+"ms"}(s);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(s))}}function id(){return Qu||(Qu=1,Xu=function(e){function t(e){let r,i,o,s=null;function a(...e){if(!a.enabled)return;const n=a,i=Number(new Date),o=i-(r||i);n.diff=o,n.prev=r,n.curr=i,r=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,i)=>{if("%%"===r)return"%";s++;const o=t.formatters[i];if("function"==typeof o){const t=e[s];r=o.call(n,t),e.splice(s,1),s--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(i!==t.namespaces&&(i=t.namespaces,o=t.enabled(e)),o),set:e=>{s=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,n){const r=t(this.namespace+(void 0===n?":":n)+e);return r.log=this.log,r}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").split(/[\s,]+/),i=r.length;for(n=0;n<i;n++)r[n]&&("-"===(e=r[n].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let n,r;for(n=0,r=t.skips.length;n<r;n++)if(t.skips[n].test(e))return!1;for(n=0,r=t.names.length;n<r;n++)if(t.names[n].test(e))return!0;return!1},t.humanize=rd(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((n=>{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t<e.length;t++)n=(n<<5)-n+e.charCodeAt(t),n|=0;return t.colors[Math.abs(n)%t.colors.length]},t.enable(t.load()),t}),Xu}var od,sd,ad,cd,ld,ud={exports:{}};"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?td.exports=(ed||(ed=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let r=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(i=r))})),t.splice(i,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=id()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(nd,nd.exports)),nd.exports):td.exports=(ld||(ld=1,function(e,t){const n=N,r=i;t.init=function(e){e.inspectOpts={};const n=Object.keys(t.inspectOpts);for(let r=0;r<n.length;r++)e.inspectOpts[n[r]]=t.inspectOpts[n[r]]},t.log=function(...e){return process.stderr.write(r.formatWithOptions(t.inspectOpts,...e)+"\n")},t.formatArgs=function(n){const{namespace:r,useColors:i}=this;if(i){const t=this.color,i="[3"+(t<8?t:"8;5;"+t),o=` ${i};1m${r} [0m`;n[0]=o+n[0].split("\n").join("\n"+o),n.push(i+"m+"+e.exports.humanize(this.diff)+"[0m")}else n[0]=(t.inspectOpts.hideDate?"":(new Date).toISOString()+" ")+r+" "+n[0]},t.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},t.load=function(){return process.env.DEBUG},t.useColors=function(){return"colors"in t.inspectOpts?Boolean(t.inspectOpts.colors):n.isatty(process.stderr.fd)},t.destroy=r.deprecate((()=>{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=function(){if(cd)return ad;cd=1;const e=T,t=N,n=sd?od:(sd=1,od=(e,t=process.argv)=>{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),i=t.indexOf("--");return-1!==r&&(-1===i||r<i)}),{env:r}=process;let i;function o(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function s(t,o){if(0===i)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(t&&!o&&void 0===i)return 0;const s=i||0;if("dumb"===r.TERM)return s;if("win32"===process.platform){const t=e.release().split(".");return Number(t[0])>=10&&Number(t[2])>=10586?Number(t[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((e=>e in r))||"codeship"===r.CI_NAME?1:s;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if("truecolor"===r.COLORTERM)return 3;if("TERM_PROGRAM"in r){const e=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:s}return n("no-color")||n("no-colors")||n("color=false")||n("color=never")?i=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(i=1),"FORCE_COLOR"in r&&(i="true"===r.FORCE_COLOR?1:"false"===r.FORCE_COLOR?0:0===r.FORCE_COLOR.length?1:Math.min(parseInt(r.FORCE_COLOR,10),3)),ad={supportsColor:function(e){return o(s(e,e&&e.isTTY))},stdout:o(s(!0,t.isatty(1))),stderr:o(s(!0,t.isatty(2)))},ad}();e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const n=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let r=process.env[t];return r=!!/^(yes|on|true|enabled)$/i.test(r)||!/^(no|off|false|disabled)$/i.test(r)&&("null"===r?null:Number(r)),e[n]=r,e}),{}),e.exports=id()(t);const{formatters:o}=e.exports;o.o=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},o.O=function(e){return this.inspectOpts.colors=this.useColors,r.inspect(e,this.inspectOpts)}}(ud,ud.exports)),ud.exports);var dd=Ku(td.exports);const hd=e=>dd(e);var fd={},pd={};class gd extends Error{constructor(e){super(`Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ${e.toString().split("\n")[0]}\n`),Error.captureStackTrace(this,gd)}}var md,yd,vd,bd,wd,Sd=e=>{if(e.length>2)throw new gd(e);function t(e={}){this.options=e}function n(e){return new t(e)}return t.prototype.transform=e,n.Format=t,n},_d={exports:{}},Id={exports:{}},xd={exports:{}},kd={exports:{}};function Ed(){if(wd)return bd;wd=1;var e=T,t=vd?yd:(vd=1,yd=function(e,t){var n=(t=t||process.argv||[]).indexOf("--"),r=/^-{1,2}/.test(e)?"":"--",i=t.indexOf(r+e);return-1!==i&&(-1===n||i<n)}),n=process.env,r=void 0;function i(i){var o=function(i){if(!1===r)return 0;if(t("color=16m")||t("color=full")||t("color=truecolor"))return 3;if(t("color=256"))return 2;if(i&&!i.isTTY&&!0!==r)return 0;var o=r?1:0;if("win32"===process.platform){var s=e.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in n)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some((function(e){return e in n}))||"codeship"===n.CI_NAME?1:o;if("TEAMCITY_VERSION"in n)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(n.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in n){var a=parseInt((n.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(n.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(n.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(n.TERM)||"COLORTERM"in n?1:(n.TERM,o)}(i);return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(o)}return t("no-color")||t("no-colors")||t("color=false")?r=!1:(t("color")||t("colors")||t("color=true")||t("color=always"))&&(r=!0),"FORCE_COLOR"in n&&(r=0===n.FORCE_COLOR.length||0!==parseInt(n.FORCE_COLOR,10)),bd={supportsColor:i,stdout:i(process.stdout),stderr:i(process.stderr)}}var Cd,$d,Od,Nd,Td,Ad,Md,Pd,Dd={exports:{}},jd={exports:{}},Rd={exports:{}},Ld={exports:{}},Fd={exports:{}},Ud={exports:{}};function Wd(){return Md||(Md=1,function(){var e={};xd.exports=e,e.themes={};var t=i,n=e.styles=(md||(md=1,function(){var e={};kd.exports=e;var t={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(t).forEach((function(n){var r=t[n],i=e[n]=[];i.open="["+r[0]+"m",i.close="["+r[1]+"m"}))}()),kd.exports),r=Object.defineProperties,o=new RegExp(/[\r\n]+/g);e.supportsColor=Ed().supportsColor,void 0===e.enabled&&(e.enabled=!1!==e.supportsColor()),e.enable=function(){e.enabled=!0},e.disable=function(){e.enabled=!1},e.stripColors=e.strip=function(e){return(""+e).replace(/\x1B\[\d+m/g,"")},e.stylize=function(t,r){if(!e.enabled)return t+"";var i=n[r];return!i&&r in e?e[r](t):i.open+t+i.close};var s=/[|\\{}()[\]^$+*?.]/g;function a(e){var t=function e(){return d.apply(e,arguments)};return t._styles=e,t.__proto__=u,t}var c,l=(c={},n.grey=n.gray,Object.keys(n).forEach((function(e){n[e].closeRe=new RegExp(function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(s,"\\$&")}(n[e].close),"g"),c[e]={get:function(){return a(this._styles.concat(e))}}})),c),u=r((function(){}),l);function d(){var r=Array.prototype.slice.call(arguments).map((function(e){return null!=e&&e.constructor===String?e:t.inspect(e)})).join(" ");if(!e.enabled||!r)return r;for(var i=-1!=r.indexOf("\n"),s=this._styles,a=s.length;a--;){var c=n[s[a]];r=c.open+r.replace(c.closeRe,c.open)+c.close,i&&(r=r.replace(o,(function(e){return c.close+e+c.open})))}return r}e.setTheme=function(t){if("string"!=typeof t)for(var n in t)!function(n){e[n]=function(r){if("object"==typeof t[n]){var i=r;for(var o in t[n])i=e[t[n][o]](i);return i}return e[t[n]](r)}}(n);else console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));")};var h=function(e,t){var n=t.split("");return(n=n.map(e)).join("")};for(var f in e.trap=(Cd||(Cd=1,Dd.exports=function(e){var t="";e=(e=e||"Run the trap, drop the bass").split("");var n={a:["@","Ą","Ⱥ","Ʌ","Δ","Λ","Д"],b:["ß","Ɓ","Ƀ","ɮ","β","฿"],c:["©","Ȼ","Ͼ"],d:["Ð","Ɗ","Ԁ","ԁ","Ԃ","ԃ"],e:["Ë","ĕ","Ǝ","ɘ","Σ","ξ","Ҽ","੬"],f:["Ӻ"],g:["ɢ"],h:["Ħ","ƕ","Ң","Һ","Ӈ","Ԋ"],i:["༏"],j:["Ĵ"],k:["ĸ","Ҡ","Ӄ","Ԟ"],l:["Ĺ"],m:["ʍ","Ӎ","ӎ","Ԡ","ԡ","൩"],n:["Ñ","ŋ","Ɲ","Ͷ","Π","Ҋ"],o:["Ø","õ","ø","Ǿ","ʘ","Ѻ","ם","","๏"],p:["Ƿ","Ҏ"],q:["্"],r:["®","Ʀ","Ȑ","Ɍ","ʀ","Я"],s:["§","Ϟ","ϟ","Ϩ"],t:["Ł","Ŧ","ͳ"],u:["Ʊ","Ս"],v:["ט"],w:["Ш","Ѡ","Ѽ","൰"],x:["Ҳ","Ӿ","Ӽ","ӽ"],y:["¥","Ұ","Ӌ"],z:["Ƶ","ɀ"]};return e.forEach((function(e){e=e.toLowerCase();var r=n[e]||[" "],i=Math.floor(Math.random()*r.length);t+=void 0!==n[e]?n[e][i]:e})),t}),Dd.exports),e.zalgo=($d||($d=1,jd.exports=function(e,t){e=e||" he is here ";var n={up:["̍","̎","̄","̅","̿","̑","̆","̐","͒","͗","͑","̇","̈","̊","͂","̓","̈","͊","͋","͌","̃","̂","̌","͐","̀","́","̋","̏","̒","̓","̔","̽","̉","ͣ","ͤ","ͥ","ͦ","ͧ","ͨ","ͩ","ͪ","ͫ","ͬ","ͭ","ͮ","ͯ","̾","͛","͆","̚"],down:["̖","̗","̘","̙","̜","̝","̞","̟","̠","̤","̥","̦","̩","̪","̫","̬","̭","̮","̯","̰","̱","̲","̳","̹","̺","̻","̼","ͅ","͇","͈","͉","͍","͎","͓","͔","͕","͖","͙","͚","̣"],mid:["̕","̛","̀","́","͘","̡","̢","̧","̨","̴","̵","̶","͜","͝","͞","͟","͠","͢","̸","̷","͡"," ҉"]},r=[].concat(n.up,n.down,n.mid);function i(e){return Math.floor(Math.random()*e)}function o(e){var t=!1;return r.filter((function(n){t=n===e})),t}return function(e,t){var r,s,a="";for(s in(t=t||{}).up=void 0===t.up||t.up,t.mid=void 0===t.mid||t.mid,t.down=void 0===t.down||t.down,t.size=void 0!==t.size?t.size:"maxi",e=e.split(""))if(!o(s)){switch(a+=e[s],r={up:0,down:0,mid:0},t.size){case"mini":r.up=i(8),r.mid=i(2),r.down=i(8);break;case"maxi":r.up=i(16)+3,r.mid=i(4)+1,r.down=i(64)+3;break;default:r.up=i(8)+1,r.mid=i(6)/2,r.down=i(8)+1}var c=["up","mid","down"];for(var l in c)for(var u=c[l],d=0;d<=r[u];d++)t[u]&&(a+=n[u][i(n[u].length)])}return a}(e,t)}),jd.exports),e.maps={},e.maps.america=(Od||(Od=1,Rd.exports=function(e){return function(t,n){if(" "===t)return t;switch(n%3){case 0:return e.red(t);case 1:return e.white(t);case 2:return e.blue(t)}}}),Rd.exports)(e),e.maps.zebra=(Nd||(Nd=1,Ld.exports=function(e){return function(t,n){return n%2==0?t:e.inverse(t)}}),Ld.exports)(e),e.maps.rainbow=(Td||(Td=1,Fd.exports=function(e){var t=["red","yellow","green","blue","magenta"];return function(n,r){return" "===n?n:e[t[r++%t.length]](n)}}),Fd.exports)(e),e.maps.random=(Ad||(Ad=1,Ud.exports=function(e){var t=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(n){return" "===n?n:e[t[Math.round(Math.random()*(t.length-2))]](n)}}),Ud.exports)(e),e.maps)!function(t){e[t]=function(n){return h(e.maps[t],n)}}(f);r(e,function(){var e={};return Object.keys(l).forEach((function(t){e[t]={get:function(){return a([t])}}})),e}())}()),xd.exports}function Bd(){return Pd||(Pd=1,function(e){var t=Wd();e.exports=t}(Id)),Id.exports}var Gd,Vd,Yd={},Hd={},zd={};function qd(){if(Vd)return _d.exports;Vd=1;const e=Bd(),{LEVEL:t,MESSAGE:n}=Yd;e.enabled=!0;const r=/\s+/;class i{constructor(e={}){e.colors&&this.addColors(e.colors),this.options=e}static addColors(e){const t=Object.keys(e).reduce(((t,n)=>(t[n]=r.test(e[n])?e[n].split(r):e[n],t)),{});return i.allColors=Object.assign({},i.allColors||{},t),i.allColors}addColors(e){return i.addColors(e)}colorize(t,n,r){if(void 0===r&&(r=n),!Array.isArray(i.allColors[t]))return e[i.allColors[t]](r);for(let n=0,o=i.allColors[t].length;n<o;n++)r=e[i.allColors[t][n]](r);return r}transform(e,r){return r.all&&"string"==typeof e[n]&&(e[n]=this.colorize(e[t],e.level,e[n])),(r.level||r.all||!r.message)&&(e.level=this.colorize(e[t],e.level)),(r.all||r.message)&&(e.message=this.colorize(e[t],e.level,e.message)),e}}return _d.exports=e=>new i(e),_d.exports.Colorizer=_d.exports.Format=i,_d.exports}zd.levels={emerg:0,alert:1,crit:2,error:3,warning:4,notice:5,info:6,debug:7},zd.colors={emerg:"red",alert:"yellow",crit:"red",error:"red",warning:"red",notice:"yellow",info:"green",debug:"blue"},Gd=Hd,Object.defineProperty(Gd,"cli",{value:{levels:{error:0,warn:1,help:2,data:3,info:4,debug:5,prompt:6,verbose:7,input:8,silly:9},colors:{error:"red",warn:"yellow",help:"cyan",data:"grey",info:"green",debug:"blue",prompt:"grey",verbose:"cyan",input:"grey",silly:"magenta"}}}),Object.defineProperty(Gd,"npm",{value:{levels:{error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6},colors:{error:"red",warn:"yellow",info:"green",http:"green",verbose:"cyan",debug:"blue",silly:"magenta"}}}),Object.defineProperty(Gd,"syslog",{value:zd}),function(e){Object.defineProperty(e,"LEVEL",{value:Symbol.for("level")}),Object.defineProperty(e,"MESSAGE",{value:Symbol.for("message")}),Object.defineProperty(e,"SPLAT",{value:Symbol.for("splat")}),Object.defineProperty(e,"configs",{value:Hd})}(Yd);const{Colorizer:Kd}=qd();var Jd,Zd,Xd,Qd,eh,th,nh={exports:{}},rh={exports:{}};function ih(){if(eh)return rh.exports;eh=1;const{configs:e,LEVEL:t,MESSAGE:n}=Yd;class r{constructor(t={levels:e.npm.levels}){this.paddings=r.paddingForLevels(t.levels,t.filler),this.options=t}static getLongestLevel(e){const t=Object.keys(e).map((e=>e.length));return Math.max(...t)}static paddingForLevel(e,t,n){const r=n+1-e.length,i=Math.floor(r/t.length);return`${t}${t.repeat(i)}`.slice(0,r)}static paddingForLevels(e,t=" "){const n=r.getLongestLevel(e);return Object.keys(e).reduce(((e,i)=>(e[i]=r.paddingForLevel(i,t,n),e)),{})}transform(e,r){return e.message=`${this.paddings[e[t]]}${e.message}`,e[n]&&(e[n]=`${this.paddings[e[t]]}${e[n]}`),e}}return rh.exports=e=>new r(e),rh.exports.Padder=rh.exports.Format=r,rh.exports}var oh,sh,ah,ch,lh,uh,dh,hh,fh,ph,gh,mh,yh,vh,bh={exports:{}},wh={exports:{}};function Sh(){return sh||(sh=1,function(e,t){const{hasOwnProperty:n}=Object.prototype,r=h();r.configure=h,r.stringify=r,r.default=r,t.stringify=r,t.configure=h,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]/;function o(e){return e.length<5e3&&!i.test(e)?`"${e}"`:JSON.stringify(e)}function s(e,t){if(e.length>200||t)return e.sort(t);for(let t=1;t<e.length;t++){const n=e[t];let r=t;for(;0!==r&&e[r-1]>n;)e[r]=e[r-1],r--;e[r]=n}return e}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function c(e){return void 0!==a.call(e)&&0!==e.length}function l(e,t,n){e.length<n&&(n=e.length);const r=","===t?"":" ";let i=`"0":${r}${e[0]}`;for(let o=1;o<n;o++)i+=`${t}"${o}":${r}${e[o]}`;return i}function u(e,t){let r;if(n.call(e,t)){if(r=e[t],"number"!=typeof r)throw new TypeError(`The "${t}" argument must be of type number`);if(!Number.isInteger(r))throw new TypeError(`The "${t}" argument must be an integer`);if(r<1)throw new RangeError(`The "${t}" argument must be >= 1`)}return void 0===r?1/0:r}function d(e){return 1===e?"1 item":`${e} items`}function h(e){const t=function(e){if(n.call(e,"strict")){const t=e.strict;if("boolean"!=typeof t)throw new TypeError('The "strict" argument must be of type boolean');if(t)return e=>{let t="Object can not safely be stringified. Received type "+typeof e;throw"function"!=typeof e&&(t+=` (${e.toString()})`),new Error(t)}}}(e={...e});t&&(void 0===e.bigint&&(e.bigint=!1),"circularValue"in e||(e.circularValue=Error));const r=function(e){if(n.call(e,"circularValue")){const t=e.circularValue;if("string"==typeof t)return`"${t}"`;if(null==t)return t;if(t===Error||t===TypeError)return{toString(){throw new TypeError("Converting circular structure to JSON")}};throw new TypeError('The "circularValue" argument must be of type string or the value null or undefined')}return'"[Circular]"'}(e),i=function(e,t){let r;if(n.call(e,t)&&(r=e[t],"boolean"!=typeof r))throw new TypeError(`The "${t}" argument must be of type boolean`);return void 0===r||r}(e,"bigint"),a=function(e){let t;if(n.call(e,"deterministic")&&(t=e.deterministic,"boolean"!=typeof t&&"function"!=typeof t))throw new TypeError('The "deterministic" argument must be of type boolean or comparator function');return void 0===t||t}(e),h="function"==typeof a?a:void 0,f=u(e,"maximumDepth"),p=u(e,"maximumBreadth");function g(e,n,l,u,m,y){let v=n[e];switch("object"==typeof v&&null!==v&&"function"==typeof v.toJSON&&(v=v.toJSON(e)),v=u.call(n,e,v),typeof v){case"string":return o(v);case"object":{if(null===v)return"null";if(-1!==l.indexOf(v))return r;let e="",t=",";const n=y;if(Array.isArray(v)){if(0===v.length)return"[]";if(f<l.length+1)return'"[Array]"';l.push(v),""!==m&&(e+=`\n${y+=m}`,t=`,\n${y}`);const r=Math.min(v.length,p);let i=0;for(;i<r-1;i++){const n=g(String(i),v,l,u,m,y);e+=void 0!==n?n:"null",e+=t}const o=g(String(i),v,l,u,m,y);return e+=void 0!==o?o:"null",v.length-1>p&&(e+=`${t}"... ${d(v.length-p-1)} not stringified"`),""!==m&&(e+=`\n${n}`),l.pop(),`[${e}]`}let i=Object.keys(v);const b=i.length;if(0===b)return"{}";if(f<l.length+1)return'"[Object]"';let w="",S="";""!==m&&(t=`,\n${y+=m}`,w=" ");const _=Math.min(b,p);a&&!c(v)&&(i=s(i,h)),l.push(v);for(let n=0;n<_;n++){const r=i[n],s=g(r,v,l,u,m,y);void 0!==s&&(e+=`${S}${o(r)}:${w}${s}`,S=t)}return b>p&&(e+=`${S}"...":${w}"${d(b-p)} not stringified"`,S=t),""!==m&&S.length>1&&(e=`\n${y}${e}\n${n}`),l.pop(),`{${e}}`}case"number":return isFinite(v)?String(v):t?t(v):"null";case"boolean":return!0===v?"true":"false";case"undefined":return;case"bigint":if(i)return String(v);default:return t?t(v):void 0}}function m(e,n,s,a,c,l){switch("object"==typeof n&&null!==n&&"function"==typeof n.toJSON&&(n=n.toJSON(e)),typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if(-1!==s.indexOf(n))return r;const e=l;let t="",i=",";if(Array.isArray(n)){if(0===n.length)return"[]";if(f<s.length+1)return'"[Array]"';s.push(n),""!==c&&(t+=`\n${l+=c}`,i=`,\n${l}`);const r=Math.min(n.length,p);let o=0;for(;o<r-1;o++){const e=m(String(o),n[o],s,a,c,l);t+=void 0!==e?e:"null",t+=i}const u=m(String(o),n[o],s,a,c,l);return t+=void 0!==u?u:"null",n.length-1>p&&(t+=`${i}"... ${d(n.length-p-1)} not stringified"`),""!==c&&(t+=`\n${e}`),s.pop(),`[${t}]`}s.push(n);let u="";""!==c&&(i=`,\n${l+=c}`,u=" ");let h="";for(const e of a){const r=m(e,n[e],s,a,c,l);void 0!==r&&(t+=`${h}${o(e)}:${u}${r}`,h=i)}return""!==c&&h.length>1&&(t=`\n${l}${t}\n${e}`),s.pop(),`{${t}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}function y(e,n,u,g,m){switch(typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if("function"==typeof n.toJSON){if("object"!=typeof(n=n.toJSON(e)))return y(e,n,u,g,m);if(null===n)return"null"}if(-1!==u.indexOf(n))return r;const t=m;if(Array.isArray(n)){if(0===n.length)return"[]";if(f<u.length+1)return'"[Array]"';u.push(n);let e=`\n${m+=g}`;const r=`,\n${m}`,i=Math.min(n.length,p);let o=0;for(;o<i-1;o++){const t=y(String(o),n[o],u,g,m);e+=void 0!==t?t:"null",e+=r}const s=y(String(o),n[o],u,g,m);return e+=void 0!==s?s:"null",n.length-1>p&&(e+=`${r}"... ${d(n.length-p-1)} not stringified"`),e+=`\n${t}`,u.pop(),`[${e}]`}let i=Object.keys(n);const v=i.length;if(0===v)return"{}";if(f<u.length+1)return'"[Object]"';const b=`,\n${m+=g}`;let w="",S="",_=Math.min(v,p);c(n)&&(w+=l(n,b,p),i=i.slice(n.length),_-=n.length,S=b),a&&(i=s(i,h)),u.push(n);for(let e=0;e<_;e++){const t=i[e],r=y(t,n[t],u,g,m);void 0!==r&&(w+=`${S}${o(t)}: ${r}`,S=b)}return v>p&&(w+=`${S}"...": "${d(v-p)} not stringified"`,S=b),""!==S&&(w=`\n${m}${w}\n${t}`),u.pop(),`{${w}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}function v(e,n,u){switch(typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if("function"==typeof n.toJSON){if("object"!=typeof(n=n.toJSON(e)))return v(e,n,u);if(null===n)return"null"}if(-1!==u.indexOf(n))return r;let t="";const i=void 0!==n.length;if(i&&Array.isArray(n)){if(0===n.length)return"[]";if(f<u.length+1)return'"[Array]"';u.push(n);const e=Math.min(n.length,p);let r=0;for(;r<e-1;r++){const e=v(String(r),n[r],u);t+=void 0!==e?e:"null",t+=","}const i=v(String(r),n[r],u);return t+=void 0!==i?i:"null",n.length-1>p&&(t+=`,"... ${d(n.length-p-1)} not stringified"`),u.pop(),`[${t}]`}let g=Object.keys(n);const m=g.length;if(0===m)return"{}";if(f<u.length+1)return'"[Object]"';let y="",b=Math.min(m,p);i&&c(n)&&(t+=l(n,",",p),g=g.slice(n.length),b-=n.length,y=","),a&&(g=s(g,h)),u.push(n);for(let e=0;e<b;e++){const r=g[e],i=v(r,n[r],u);void 0!==i&&(t+=`${y}${o(r)}:${i}`,y=",")}return m>p&&(t+=`${y}"...":"${d(m-p)} not stringified"`),u.pop(),`{${t}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}return function(e,t,n){if(arguments.length>1){let r="";if("number"==typeof n?r=" ".repeat(Math.min(n,10)):"string"==typeof n&&(r=n.slice(0,10)),null!=t){if("function"==typeof t)return g("",{"":e},[],t,r,"");if(Array.isArray(t))return m("",e,[],function(e){const t=new Set;for(const n of e)"string"!=typeof n&&"number"!=typeof n||t.add(String(n));return t}(t),r,"")}if(0!==r.length)return y("",e,[],r,"")}return v("",e,[])}}}(wh,wh.exports)),wh.exports}function _h(){if(ch)return ah;ch=1;const e=Sd,{MESSAGE:t}=Yd,n=Sh();function r(e,t){return"bigint"==typeof t?t.toString():t}return ah=e(((e,i)=>{const o=n.configure(i);return e[t]=o(e,i.replacer||r,i.space),e}))}var Ih,xh,kh,Eh,Ch,$h={exports:{}},Oh=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,Nh="\\d\\d?",Th="\\d\\d",Ah="[^\\s]+",Mh=/\[([^]*?)\]/gm;function Ph(e,t){for(var n=[],r=0,i=e.length;r<i;r++)n.push(e[r].substr(0,t));return n}var Dh=function(e){return function(t,n){var r=n[e].map((function(e){return e.toLowerCase()})),i=r.indexOf(t.toLowerCase());return i>-1?i:null}};function jh(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=0,i=t;r<i.length;r++){var o=i[r];for(var s in o)e[s]=o[s]}return e}var Rh=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Lh=["January","February","March","April","May","June","July","August","September","October","November","December"],Fh=Ph(Lh,3),Uh={dayNamesShort:Ph(Rh,3),dayNames:Rh,monthNamesShort:Fh,monthNames:Lh,amPm:["am","pm"],DoFn:function(e){return e+["th","st","nd","rd"][e%10>3?0:(e-e%10!=10?1:0)*e%10]}},Wh=jh({},Uh),Bh=function(e){return Wh=jh(Wh,e)},Gh=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},Vh=function(e,t){for(void 0===t&&(t=2),e=String(e);e.length<t;)e="0"+e;return e},Yh={D:function(e){return String(e.getDate())},DD:function(e){return Vh(e.getDate())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return String(e.getDay())},dd:function(e){return Vh(e.getDay())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return String(e.getMonth()+1)},MM:function(e){return Vh(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},YY:function(e){return Vh(String(e.getFullYear()),4).substr(2)},YYYY:function(e){return Vh(e.getFullYear(),4)},h:function(e){return String(e.getHours()%12||12)},hh:function(e){return Vh(e.getHours()%12||12)},H:function(e){return String(e.getHours())},HH:function(e){return Vh(e.getHours())},m:function(e){return String(e.getMinutes())},mm:function(e){return Vh(e.getMinutes())},s:function(e){return String(e.getSeconds())},ss:function(e){return Vh(e.getSeconds())},S:function(e){return String(Math.round(e.getMilliseconds()/100))},SS:function(e){return Vh(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return Vh(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+Vh(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)},Z:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+Vh(Math.floor(Math.abs(t)/60),2)+":"+Vh(Math.abs(t)%60,2)}},Hh=function(e){return+e-1},zh=[null,Nh],qh=[null,Ah],Kh=["isPm",Ah,function(e,t){var n=e.toLowerCase();return n===t.amPm[0]?0:n===t.amPm[1]?1:null}],Jh=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(e){var t=(e+"").match(/([+-]|\d\d)/gi);if(t){var n=60*+t[1]+parseInt(t[2],10);return"+"===t[0]?n:-n}return 0}],Zh={D:["day",Nh],DD:["day",Th],Do:["day",Nh+Ah,function(e){return parseInt(e,10)}],M:["month",Nh,Hh],MM:["month",Th,Hh],YY:["year",Th,function(e){var t=+(""+(new Date).getFullYear()).substr(0,2);return+(""+(+e>68?t-1:t)+e)}],h:["hour",Nh,void 0,"isPm"],hh:["hour",Th,void 0,"isPm"],H:["hour",Nh],HH:["hour",Th],m:["minute",Nh],mm:["minute",Th],s:["second",Nh],ss:["second",Th],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(e){return 100*+e}],SS:["millisecond",Th,function(e){return 10*+e}],SSS:["millisecond","\\d{3}"],d:zh,dd:zh,ddd:qh,dddd:qh,MMM:["month",Ah,Dh("monthNamesShort")],MMMM:["month",Ah,Dh("monthNames")],a:Kh,A:Kh,ZZ:Jh,Z:Jh},Xh={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",isoDate:"YYYY-MM-DD",isoDateTime:"YYYY-MM-DDTHH:mm:ssZ",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},Qh=function(e){return jh(Xh,e)},ef=function(e,t,n){if(void 0===t&&(t=Xh.default),void 0===n&&(n={}),"number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date pass to format");var r=[];t=(t=Xh[t]||t).replace(Mh,(function(e,t){return r.push(t),"@@@"}));var i=jh(jh({},Wh),n);return(t=t.replace(Oh,(function(t){return Yh[t](e,i)}))).replace(/@@@/g,(function(){return r.shift()}))};function tf(e,t,n){if(void 0===n&&(n={}),"string"!=typeof t)throw new Error("Invalid format in fecha parse");if(t=Xh[t]||t,e.length>1e3)return null;var r={year:(new Date).getFullYear(),month:0,day:1,hour:0,minute:0,second:0,millisecond:0,isPm:null,timezoneOffset:null},i=[],o=[],s=t.replace(Mh,(function(e,t){return o.push(Gh(t)),"@@@"})),a={},c={};s=Gh(s).replace(Oh,(function(e){var t=Zh[e],n=t[0],r=t[1],o=t[3];if(a[n])throw new Error("Invalid format. "+n+" specified twice in format");return a[n]=!0,o&&(c[o]=!0),i.push(t),"("+r+")"})),Object.keys(c).forEach((function(e){if(!a[e])throw new Error("Invalid format. "+e+" is required in specified format")})),s=s.replace(/@@@/g,(function(){return o.shift()}));var l=e.match(new RegExp(s,"i"));if(!l)return null;for(var u,d=jh(jh({},Wh),n),h=1;h<l.length;h++){var f=i[h-1],p=f[0],g=f[2],m=g?g(l[h],d):+l[h];if(null==m)return null;r[p]=m}if(1===r.isPm&&null!=r.hour&&12!=+r.hour?r.hour=+r.hour+12:0===r.isPm&&12==+r.hour&&(r.hour=0),null==r.timezoneOffset){u=new Date(r.year,r.month,r.day,r.hour,r.minute,r.second,r.millisecond);for(var y=[["month","getMonth"],["day","getDate"],["hour","getHours"],["minute","getMinutes"],["second","getSeconds"]],v=(h=0,y.length);h<v;h++)if(a[y[h][0]]&&r[y[h][0]]!==u[y[h][1]]())return null}else if(u=new Date(Date.UTC(r.year,r.month,r.day,r.hour,r.minute-r.timezoneOffset,r.second,r.millisecond)),r.month>11||r.month<0||r.day>31||r.day<1||r.hour>23||r.hour<0||r.minute>59||r.minute<0||r.second>59||r.second<0)return null;return u}var nf,rf,of,sf,af={format:ef,parse:tf,defaultI18n:Uh,setGlobalDateI18n:Bh,setGlobalDateMasks:Qh},cf=function(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}(Object.freeze({__proto__:null,assign:jh,default:af,defaultI18n:Uh,format:ef,parse:tf,setGlobalDateI18n:Bh,setGlobalDateMasks:Qh}));const lf=pd.format=Sd;function uf(e,t){Object.defineProperty(lf,e,{get:()=>t(),configurable:!0})}pd.levels=e=>(Kd.addColors(e.colors||e),e),uf("align",(function(){return Zd?Jd:(Zd=1,Jd=Sd((e=>(e.message=`\t${e.message}`,e))))})),uf("errors",(function(){return function(){if(Qd)return Xd;Qd=1;const e=Sd,{LEVEL:t,MESSAGE:n}=Yd;return Xd=e(((e,{stack:r,cause:i})=>{if(e instanceof Error){const o=Object.assign({},e,{level:e.level,[t]:e[t]||e.level,message:e.message,[n]:e[n]||e.message});return r&&(o.stack=e.stack),i&&(o.cause=e.cause),o}if(!(e.message instanceof Error))return e;const o=e.message;return Object.assign(e,o),e.message=o.message,e[n]=o.message,r&&(e.stack=o.stack),i&&(e.cause=o.cause),e}))}()})),uf("cli",(function(){return function(){if(th)return nh.exports;th=1;const{Colorizer:e}=qd(),{Padder:t}=ih(),{configs:n,MESSAGE:r}=Yd;class i{constructor(r={}){r.levels||(r.levels=n.cli.levels),this.colorizer=new e(r),this.padder=new t(r),this.options=r}transform(e,t){return this.colorizer.transform(this.padder.transform(e,t),t),e[r]=`${e.level}:${e.message}`,e}}return nh.exports=e=>new i(e),nh.exports.Format=i,nh.exports}()})),uf("combine",(function(){return function(){if(oh)return bh.exports;oh=1;const e=Sd;function t(e){if(e.every(n))return t=>{let n=t;for(let t=0;t<e.length;t++)if(n=e[t].transform(n,e[t].options),!n)return!1;return n}}function n(e){if("function"!=typeof e.transform)throw new Error(["No transform function found on format. Did you create a format instance?","const myFormat = format(formatFn);","const instance = myFormat();"].join("\n"));return!0}return bh.exports=(...n)=>{const r=e(t(n)),i=r();return i.Format=r.Format,i},bh.exports.cascade=t,bh.exports}()})),uf("colorize",(function(){return qd()})),uf("json",(function(){return _h()})),uf("label",(function(){return uh?lh:(uh=1,lh=Sd(((e,t)=>t.message?(e.message=`[${t.label}] ${e.message}`,e):(e.label=t.label,e))))})),uf("logstash",(function(){return function(){if(hh)return dh;hh=1;const e=Sd,{MESSAGE:t}=Yd,n=Sh();return dh=e((e=>{const r={};return e.message&&(r["@message"]=e.message,delete e.message),e.timestamp&&(r["@timestamp"]=e.timestamp,delete e.timestamp),r["@fields"]=e,e[t]=n(r),e}))}()})),uf("metadata",(function(){return ph?fh:(ph=1,fh=Sd(((e,t={})=>{let n="metadata";t.key&&(n=t.key);let r=[];return t.fillExcept||t.fillWith||(r.push("level"),r.push("message")),t.fillExcept&&(r=t.fillExcept),r.length>0?function(e,t,n){const r=t.reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{}),i=Object.keys(e).reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{});return Object.assign(e,r,{[n]:i}),e}(e,r,n):t.fillWith?function(e,t,n){return e[n]=t.reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{}),e}(e,t.fillWith,n):e})))})),uf("ms",(function(){return function(){if(mh)return gh;mh=1;const e=Sd,t=rd();return gh=e((e=>{const n=+new Date;return this.diff=n-(this.prevTime||n),this.prevTime=n,e.ms=`+${t(this.diff)}`,e}))}()})),uf("padLevels",(function(){return ih()})),uf("prettyPrint",(function(){return function(){if(vh)return yh;vh=1;const e=i.inspect,t=Sd,{LEVEL:n,MESSAGE:r,SPLAT:o}=Yd;return yh=t(((t,i={})=>{const s=Object.assign({},t);return delete s[n],delete s[r],delete s[o],t[r]=e(s,!1,i.depth||null,i.colorize),t}))}()})),uf("printf",(function(){return function(){if(Ih)return $h.exports;Ih=1;const{MESSAGE:e}=Yd;class t{constructor(e){this.template=e}transform(t){return t[e]=this.template(t),t}}return $h.exports=e=>new t(e),$h.exports.Printf=$h.exports.Format=t,$h.exports}()})),uf("simple",(function(){return function(){if(kh)return xh;kh=1;const e=Sd,{MESSAGE:t}=Yd,n=Sh();return xh=e((e=>{const r=n(Object.assign({},e,{level:void 0,message:void 0,splat:void 0})),i=e.padding&&e.padding[e.level]||"";return e[t]="{}"!==r?`${e.level}:${i} ${e.message} ${r}`:`${e.level}:${i} ${e.message}`,e}))}()})),uf("splat",(function(){return function(){if(Ch)return Eh;Ch=1;const e=i,{SPLAT:t}=Yd,n=/%[scdjifoO%]/g,r=/%%/g;class o{constructor(e){this.options=e}_splat(n,i){const o=n.message,s=n[t]||n.splat||[],a=o.match(r),c=a&&a.length||0,l=i.length-c-s.length,u=l<0?s.splice(l,-1*l):[],d=u.length;if(d)for(let e=0;e<d;e++)Object.assign(n,u[e]);return n.message=e.format(o,...s),n}transform(e){const r=e.message,i=e[t]||e.splat;if(!i||!i.length)return e;const o=r&&r.match&&r.match(n);if(!o&&(i||i.length)){const t=i.length>1?i.splice(0):i,n=t.length;if(n)for(let r=0;r<n;r++)Object.assign(e,t[r]);return e}return o?this._splat(e,o):e}}return Eh=e=>new o(e)}()})),uf("timestamp",(function(){return function(){if(rf)return nf;rf=1;const e=cf;return nf=Sd(((t,n={})=>(n.format&&(t.timestamp="function"==typeof n.format?n.format():e.format(new Date,n.format)),t.timestamp||(t.timestamp=(new Date).toISOString()),n.alias&&(t[n.alias]=t.timestamp),t)))}()})),uf("uncolorize",(function(){return function(){if(sf)return of;sf=1;const e=Bd(),t=Sd,{MESSAGE:n}=Yd;return of=t(((t,r)=>(!1!==r.level&&(t.level=e.strip(t.level)),!1!==r.message&&(t.message=e.strip(String(t.message))),!1!==r.raw&&t[n]&&(t[n]=e.strip(String(t[n]))),t)))}()}));var df={};!function(e){const{format:t}=i;e.warn={deprecated:e=>()=>{throw new Error(t("{ %s } was removed in winston@3.0.0.",e))},useFormat:e=>()=>{throw new Error([t("{ %s } was removed in winston@3.0.0.",e),"Use a custom winston.format = winston.format(function) instead."].join("\n"))},forFunctions(t,n,r){r.forEach((r=>{t[r]=e.warn[n](r)}))},forProperties(t,n,r){r.forEach((r=>{const i=e.warn[n](r);Object.defineProperty(t,r,{get:i,set:i})}))}}}(df);var hf,ff,pf,gf,mf,yf,vf={},bf={exports:{}},wf={exports:{}};function Sf(){return gf?pf:(gf=1,pf=P)}function _f(){if(yf)return mf;function e(e,r){n(e,r),t(e)}function t(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function n(e,t){e.emit("error",t)}return yf=1,mf={destroy:function(r,i){var o=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(i?i(r):r&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(n,this,r)):process.nextTick(n,this,r)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(r||null,(function(n){!i&&n?o._writableState?o._writableState.errorEmitted?process.nextTick(t,o):(o._writableState.errorEmitted=!0,process.nextTick(e,o,n)):process.nextTick(e,o,n):i?(process.nextTick(t,o),i(n)):process.nextTick(t,o)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var n=e._readableState,r=e._writableState;n&&n.autoDestroy||r&&r.autoDestroy?e.destroy(t):e.emit("error",t)}},mf}var If,xf,kf,Ef={};function Cf(){if(If)return Ef;If=1;const e={};function t(t,n,r){r||(r=Error);class i extends r{constructor(e,t,r){super(function(e,t,r){return"string"==typeof n?n:n(e,t,r)}(e,t,r))}}i.prototype.name=r.name,i.prototype.code=t,e[t]=i}function n(e,t){if(Array.isArray(e)){const n=e.length;return e=e.map((e=>String(e))),n>2?`one of ${t} ${e.slice(0,n-1).join(", ")}, or `+e[n-1]:2===n?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}return`of ${t} ${String(e)}`}return t("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),t("ERR_INVALID_ARG_TYPE",(function(e,t,r){let i;var o;let s;if("string"==typeof t&&(o="not ",t.substr(0,4)===o)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,n){return(void 0===n||n>e.length)&&(n=e.length),e.substring(n-9,n)===t}(e," argument"))s=`The ${e} ${i} ${n(t,"type")}`;else{const r=function(e,t,n){return"number"!=typeof n&&(n=0),!(n+1>e.length)&&-1!==e.indexOf(".",n)}(e)?"property":"argument";s=`The "${e}" ${r} ${i} ${n(t,"type")}`}return s+=". Received type "+typeof r,s}),TypeError),t("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),t("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),t("ERR_STREAM_PREMATURE_CLOSE","Premature close"),t("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),t("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),t("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),t("ERR_STREAM_WRITE_AFTER_END","write after end"),t("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),t("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),t("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),Ef.codes=e,Ef}function $f(){if(kf)return xf;kf=1;var e=Cf().codes.ERR_INVALID_OPT_VALUE;return xf={getHighWaterMark:function(t,n,r,i){var o=function(e,t,n){return null!=e.highWaterMark?e.highWaterMark:t?e[n]:null}(n,i,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new e(i?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}}var Of,Nf,Tf,Af,Mf={exports:{}},Pf={exports:{}};function Df(){if(Nf)return Mf.exports;Nf=1;try{var e=require("util");if("function"!=typeof e.inherits)throw"";Mf.exports=e.inherits}catch(e){Mf.exports=(Of||(Of=1,"function"==typeof Object.create?Pf.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Pf.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),Pf.exports)}return Mf.exports}function jf(){if(Af)return Tf;function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?e(Object(i),!0).forEach((function(e){n(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function n(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}Af=1;var o=D.Buffer,s=i.inspect,a=s&&s.custom||"inspect";function c(e,t,n){o.prototype.copy.call(e,t,n)}return Tf=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return function(e,t){t&&function(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,r(i.key),i)}}(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1})}(e,[{key:"push",value:function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n}},{key:"concat",value:function(e){if(0===this.length)return o.alloc(0);for(var t=o.allocUnsafe(e>>>0),n=this.head,r=0;n;)c(n.data,t,r),r+=n.data.length,n=n.next;return t}},{key:"consume",value:function(e,t){var n;return e<this.head.data.length?(n=this.head.data.slice(0,e),this.head.data=this.head.data.slice(e)):n=e===this.head.data.length?this.shift():t?this._getString(e):this._getBuffer(e),n}},{key:"first",value:function(){return this.head.data}},{key:"_getString",value:function(e){var t=this.head,n=1,r=t.data;for(e-=r.length;t=t.next;){var i=t.data,o=e>i.length?i.length:e;if(o===i.length?r+=i:r+=i.slice(0,e),0==(e-=o)){o===i.length?(++n,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++n}return this.length-=n,r}},{key:"_getBuffer",value:function(e){var t=o.allocUnsafe(e),n=this.head,r=1;for(n.data.copy(t),e-=n.data.length;n=n.next;){var i=n.data,s=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,s),0==(e-=s)){s===i.length?(++r,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=i.slice(s));break}++r}return this.length-=r,t}},{key:a,value:function(e,n){return s(this,t(t({},n),{},{depth:0,customInspect:!1}))}}]),e}()}var Rf,Lf,Ff,Uf,Wf,Bf,Gf,Vf,Yf,Hf,zf,qf,Kf,Jf,Zf={},Xf={exports:{}};function Qf(){if(Lf)return Zf;Lf=1;var e=(Rf||(Rf=1,function(e,t){var n=D,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function o(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=o),o.prototype=Object.create(r.prototype),i(r,o),o.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},o.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},o.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},o.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(Xf,Xf.exports)),Xf.exports).Buffer,t=e.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function n(n){var r;switch(this.encoding=function(n){var r=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(n);if("string"!=typeof r&&(e.isEncoding===t||!t(n)))throw new Error("Unknown encoding: "+n);return r||n}(n),this.encoding){case"utf16le":this.text=o,this.end=s,r=4;break;case"utf8":this.fillLast=i,r=4;break;case"base64":this.text=a,this.end=c,r=3;break;default:return this.write=l,void(this.end=u)}this.lastNeed=0,this.lastTotal=0,this.lastChar=e.allocUnsafe(r)}function r(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function i(e){var t=this.lastTotal-this.lastNeed,n=function(e,t){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function o(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function s(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function a(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function c(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function l(e){return e.toString(this.encoding)}function u(e){return e&&e.length?this.write(e):""}return Zf.StringDecoder=n,n.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},n.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"�":t},n.prototype.text=function(e,t){var n=function(e,t,n){var i=t.length-1;if(i<n)return 0;var o=r(t[i]);return o>=0?(o>0&&(e.lastNeed=o-1),o):--i<n||-2===o?0:(o=r(t[i]))>=0?(o>0&&(e.lastNeed=o-2),o):--i<n||-2===o?0:(o=r(t[i]))>=0?(o>0&&(2===o?o=0:e.lastNeed=o-3),o):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var i=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,i),e.toString("utf8",t,i)},n.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length},Zf}function ep(){if(Uf)return Ff;Uf=1;var e=Cf().codes.ERR_STREAM_PREMATURE_CLOSE;function t(){}return Ff=function n(r,i,o){if("function"==typeof i)return n(r,null,i);i||(i={}),o=function(e){var t=!1;return function(){if(!t){t=!0;for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];e.apply(this,r)}}}(o||t);var s=i.readable||!1!==i.readable&&r.readable,a=i.writable||!1!==i.writable&&r.writable,c=function(){r.writable||u()},l=r._writableState&&r._writableState.finished,u=function(){a=!1,l=!0,s||o.call(r)},d=r._readableState&&r._readableState.endEmitted,h=function(){s=!1,d=!0,a||o.call(r)},f=function(e){o.call(r,e)},p=function(){var t;return s&&!d?(r._readableState&&r._readableState.ended||(t=new e),o.call(r,t)):a&&!l?(r._writableState&&r._writableState.ended||(t=new e),o.call(r,t)):void 0},g=function(){r.req.on("finish",u)};return function(e){return e.setHeader&&"function"==typeof e.abort}(r)?(r.on("complete",u),r.on("abort",p),r.req?g():r.on("request",g)):a&&!r._writableState&&(r.on("end",c),r.on("close",c)),r.on("end",h),r.on("finish",u),!1!==i.error&&r.on("error",f),r.on("close",p),function(){r.removeListener("complete",u),r.removeListener("abort",p),r.removeListener("request",g),r.req&&r.req.removeListener("finish",u),r.removeListener("end",c),r.removeListener("close",c),r.removeListener("finish",u),r.removeListener("end",h),r.removeListener("error",f),r.removeListener("close",p)}},Ff}function tp(){if(Hf)return Yf;var e;Hf=1,Yf=_,_.ReadableState=S,j.EventEmitter;var t,n=function(e,t){return e.listeners(t).length},r=Sf(),o=D.Buffer,s=(void 0!==qu?qu:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},a=i;t=a&&a.debuglog?a.debuglog("stream"):function(){};var c,l,u,d=jf(),h=_f(),f=$f().getHighWaterMark,p=Cf().codes,g=p.ERR_INVALID_ARG_TYPE,m=p.ERR_STREAM_PUSH_AFTER_EOF,y=p.ERR_METHOD_NOT_IMPLEMENTED,v=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;Df()(_,r);var b=h.errorOrDestroy,w=["error","close","destroy","pause","resume"];function S(t,n,r){e=e||np(),t=t||{},"boolean"!=typeof r&&(r=n instanceof e),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=f(this,t,"readableHighWaterMark",r),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(c||(c=Qf().StringDecoder),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function _(t){if(e=e||np(),!(this instanceof _))return new _(t);var n=this instanceof e;this._readableState=new S(t,this,n),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),r.call(this)}function I(e,n,r,i,a){t("readableAddChunk",n);var c,l=e._readableState;if(null===n)l.reading=!1,function(e,n){if(t("onEofChunk"),!n.ended){if(n.decoder){var r=n.decoder.end();r&&r.length&&(n.buffer.push(r),n.length+=n.objectMode?1:r.length)}n.ended=!0,n.sync?C(e):(n.needReadable=!1,n.emittedReadable||(n.emittedReadable=!0,$(e)))}}(e,l);else if(a||(c=function(e,t){var n,r;return r=t,o.isBuffer(r)||r instanceof s||"string"==typeof t||void 0===t||e.objectMode||(n=new g("chunk",["string","Buffer","Uint8Array"],t)),n}(l,n)),c)b(e,c);else if(l.objectMode||n&&n.length>0)if("string"==typeof n||l.objectMode||Object.getPrototypeOf(n)===o.prototype||(n=function(e){return o.from(e)}(n)),i)l.endEmitted?b(e,new v):x(e,l,n,!0);else if(l.ended)b(e,new m);else{if(l.destroyed)return!1;l.reading=!1,l.decoder&&!r?(n=l.decoder.write(n),l.objectMode||0!==n.length?x(e,l,n,!1):O(e,l)):x(e,l,n,!1)}else i||(l.reading=!1,O(e,l));return!l.ended&&(l.length<l.highWaterMark||0===l.length)}function x(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(t.awaitDrain=0,e.emit("data",n)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&C(e)),O(e,t)}Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),_.prototype.destroy=h.destroy,_.prototype._undestroy=h.undestroy,_.prototype._destroy=function(e,t){t(e)},_.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&((t=t||r.defaultEncoding)!==r.encoding&&(e=o.from(e,t),t=""),n=!0),I(this,e,t,!1,n)},_.prototype.unshift=function(e){return I(this,e,null,!0,!1)},_.prototype.isPaused=function(){return!1===this._readableState.flowing},_.prototype.setEncoding=function(e){c||(c=Qf().StringDecoder);var t=new c(e);this._readableState.decoder=t,this._readableState.encoding=this._readableState.decoder.encoding;for(var n=this._readableState.buffer.head,r="";null!==n;)r+=t.write(n.data),n=n.next;return this._readableState.buffer.clear(),""!==r&&this._readableState.buffer.push(r),this._readableState.length=r.length,this};var k=1073741824;function E(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=k?e=k:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function C(e){var n=e._readableState;t("emitReadable",n.needReadable,n.emittedReadable),n.needReadable=!1,n.emittedReadable||(t("emitReadable",n.flowing),n.emittedReadable=!0,process.nextTick($,e))}function $(e){var n=e._readableState;t("emitReadable_",n.destroyed,n.length,n.ended),n.destroyed||!n.length&&!n.ended||(e.emit("readable"),n.emittedReadable=!1),n.needReadable=!n.flowing&&!n.ended&&n.length<=n.highWaterMark,P(e)}function O(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(N,e,t))}function N(e,n){for(;!n.reading&&!n.ended&&(n.length<n.highWaterMark||n.flowing&&0===n.length);){var r=n.length;if(t("maybeReadMore read 0"),e.read(0),r===n.length)break}n.readingMore=!1}function T(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function A(e){t("readable nexttick read 0"),e.read(0)}function M(e,n){t("resume",n.reading),n.reading||e.read(0),n.resumeScheduled=!1,e.emit("resume"),P(e),n.flowing&&!n.reading&&e.read(0)}function P(e){var n=e._readableState;for(t("flow",n.flowing);n.flowing&&null!==e.read(););}function R(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):n=t.buffer.consume(e,t.decoder),n);var n}function L(e){var n=e._readableState;t("endReadable",n.endEmitted),n.endEmitted||(n.ended=!0,process.nextTick(F,n,e))}function F(e,n){if(t("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,n.readable=!1,n.emit("end"),e.autoDestroy)){var r=n._writableState;(!r||r.autoDestroy&&r.finished)&&n.destroy()}}function U(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}return _.prototype.read=function(e){t("read",e),e=parseInt(e,10);var n=this._readableState,r=e;if(0!==e&&(n.emittedReadable=!1),0===e&&n.needReadable&&((0!==n.highWaterMark?n.length>=n.highWaterMark:n.length>0)||n.ended))return t("read: emitReadable",n.length,n.ended),0===n.length&&n.ended?L(this):C(this),null;if(0===(e=E(e,n))&&n.ended)return 0===n.length&&L(this),null;var i,o=n.needReadable;return t("need readable",o),(0===n.length||n.length-e<n.highWaterMark)&&t("length less than watermark",o=!0),n.ended||n.reading?t("reading or ended",o=!1):o&&(t("do read"),n.reading=!0,n.sync=!0,0===n.length&&(n.needReadable=!0),this._read(n.highWaterMark),n.sync=!1,n.reading||(e=E(r,n))),null===(i=e>0?R(e,n):null)?(n.needReadable=n.length<=n.highWaterMark,e=0):(n.length-=e,n.awaitDrain=0),0===n.length&&(n.ended||(n.needReadable=!0),r!==e&&n.ended&&L(this)),null!==i&&this.emit("data",i),i},_.prototype._read=function(){b(this,new y("_read()"))},_.prototype.pipe=function(e,r){var i=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,t("pipe count=%d opts=%j",o.pipesCount,r);var s=r&&!1===r.end||e===process.stdout||e===process.stderr?p:a;function a(){t("onend"),e.end()}o.endEmitted?process.nextTick(s):i.once("end",s),e.on("unpipe",(function n(r,s){t("onunpipe"),r===i&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,t("cleanup"),e.removeListener("close",h),e.removeListener("finish",f),e.removeListener("drain",c),e.removeListener("error",d),e.removeListener("unpipe",n),i.removeListener("end",a),i.removeListener("end",p),i.removeListener("data",u),l=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}));var c=function(e){return function(){var r=e._readableState;t("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,0===r.awaitDrain&&n(e,"data")&&(r.flowing=!0,P(e))}}(i);e.on("drain",c);var l=!1;function u(n){t("ondata");var r=e.write(n);t("dest.write",r),!1===r&&((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==U(o.pipes,e))&&!l&&(t("false write response, pause",o.awaitDrain),o.awaitDrain++),i.pause())}function d(r){t("onerror",r),p(),e.removeListener("error",d),0===n(e,"error")&&b(e,r)}function h(){e.removeListener("finish",f),p()}function f(){t("onfinish"),e.removeListener("close",h),p()}function p(){t("unpipe"),i.unpipe(e)}return i.on("data",u),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",d),e.once("close",h),e.once("finish",f),e.emit("pipe",i),o.flowing||(t("pipe resume"),i.resume()),e},_.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<i;o++)r[o].emit("unpipe",this,{hasUnpiped:!1});return this}var s=U(t.pipes,e);return-1===s||(t.pipes.splice(s,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,n)),this},_.prototype.on=function(e,n){var i=r.prototype.on.call(this,e,n),o=this._readableState;return"data"===e?(o.readableListening=this.listenerCount("readable")>0,!1!==o.flowing&&this.resume()):"readable"===e&&(o.endEmitted||o.readableListening||(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,t("on readable",o.length,o.reading),o.length?C(this):o.reading||process.nextTick(A,this))),i},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(e,t){var n=r.prototype.removeListener.call(this,e,t);return"readable"===e&&process.nextTick(T,this),n},_.prototype.removeAllListeners=function(e){var t=r.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||process.nextTick(T,this),t},_.prototype.resume=function(){var e=this._readableState;return e.flowing||(t("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(M,e,t))}(this,e)),e.paused=!1,this},_.prototype.pause=function(){return t("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(t("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(e){var n=this,r=this._readableState,i=!1;for(var o in e.on("end",(function(){if(t("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&n.push(e)}n.push(null)})),e.on("data",(function(o){t("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(n.push(o)||(i=!0,e.pause()))})),e)void 0===this[o]&&"function"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var s=0;s<w.length;s++)e.on(w[s],this.emit.bind(this,w[s]));return this._read=function(n){t("wrapped _read",n),i&&(i=!1,e.resume())},this},"function"==typeof Symbol&&(_.prototype[Symbol.asyncIterator]=function(){return void 0===l&&(l=function(){if(Bf)return Wf;var e;function t(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Bf=1;var n=ep(),r=Symbol("lastResolve"),i=Symbol("lastReject"),o=Symbol("error"),s=Symbol("ended"),a=Symbol("lastPromise"),c=Symbol("handlePromise"),l=Symbol("stream");function u(e,t){return{value:e,done:t}}function d(e){var t=e[r];if(null!==t){var n=e[l].read();null!==n&&(e[a]=null,e[r]=null,e[i]=null,t(u(n,!1)))}}function h(e){process.nextTick(d,e)}var f=Object.getPrototypeOf((function(){})),p=Object.setPrototypeOf((e={get stream(){return this[l]},next:function(){var e=this,t=this[o];if(null!==t)return Promise.reject(t);if(this[s])return Promise.resolve(u(void 0,!0));if(this[l].destroyed)return new Promise((function(t,n){process.nextTick((function(){e[o]?n(e[o]):t(u(void 0,!0))}))}));var n,r=this[a];if(r)n=new Promise(function(e,t){return function(n,r){e.then((function(){t[s]?n(u(void 0,!0)):t[c](n,r)}),r)}}(r,this));else{var i=this[l].read();if(null!==i)return Promise.resolve(u(i,!1));n=new Promise(this[c])}return this[a]=n,n}},t(e,Symbol.asyncIterator,(function(){return this})),t(e,"return",(function(){var e=this;return new Promise((function(t,n){e[l].destroy(null,(function(e){e?n(e):t(u(void 0,!0))}))}))})),e),f);return Wf=function(e){var d,f=Object.create(p,(t(d={},l,{value:e,writable:!0}),t(d,r,{value:null,writable:!0}),t(d,i,{value:null,writable:!0}),t(d,o,{value:null,writable:!0}),t(d,s,{value:e._readableState.endEmitted,writable:!0}),t(d,c,{value:function(e,t){var n=f[l].read();n?(f[a]=null,f[r]=null,f[i]=null,e(u(n,!1))):(f[r]=e,f[i]=t)},writable:!0}),d));return f[a]=null,n(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=f[i];return null!==t&&(f[a]=null,f[r]=null,f[i]=null,t(e)),void(f[o]=e)}var n=f[r];null!==n&&(f[a]=null,f[r]=null,f[i]=null,n(u(void 0,!0))),f[s]=!0})),e.on("readable",h.bind(null,f)),f},Wf}()),l(this)}),Object.defineProperty(_.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),Object.defineProperty(_.prototype,"readableBuffer",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}}),Object.defineProperty(_.prototype,"readableFlowing",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}}),_._fromList=R,Object.defineProperty(_.prototype,"readableLength",{enumerable:!1,get:function(){return this._readableState.length}}),"function"==typeof Symbol&&(_.from=function(e,t){return void 0===u&&(u=function(){if(Vf)return Gf;function e(e,t,n,r,i,o,s){try{var a=e[o](s),c=a.value}catch(e){return void n(e)}a.done?t(c):Promise.resolve(c).then(r,i)}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Vf=1;var r=Cf().codes.ERR_INVALID_ARG_TYPE;return Gf=function(i,o,s){var a;if(o&&"function"==typeof o.next)a=o;else if(o&&o[Symbol.asyncIterator])a=o[Symbol.asyncIterator]();else{if(!o||!o[Symbol.iterator])throw new r("iterable",["Iterable"],o);a=o[Symbol.iterator]()}var c=new i(function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(Object(i),!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}({objectMode:!0},s)),l=!1;function u(){return d.apply(this,arguments)}function d(){var t;return t=function*(){try{var e=yield a.next(),t=e.value;e.done?c.push(null):c.push(yield t)?u():l=!1}catch(e){c.destroy(e)}},d=function(){var n=this,r=arguments;return new Promise((function(i,o){var s=t.apply(n,r);function a(t){e(s,i,o,a,c,"next",t)}function c(t){e(s,i,o,a,c,"throw",t)}a(void 0)}))},d.apply(this,arguments)}return c._read=function(){l||(l=!0,u())},c},Gf}()),u(_,e,t)}),Yf}function np(){if(qf)return zf;qf=1;var e=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};zf=s;var t=tp(),n=rp();Df()(s,t);for(var r=e(n.prototype),i=0;i<r.length;i++){var o=r[i];s.prototype[o]||(s.prototype[o]=n.prototype[o])}function s(e){if(!(this instanceof s))return new s(e);t.call(this,e),n.call(this,e),this.allowHalfOpen=!0,e&&(!1===e.readable&&(this.readable=!1),!1===e.writable&&(this.writable=!1),!1===e.allowHalfOpen&&(this.allowHalfOpen=!1,this.once("end",a)))}function a(){this._writableState.ended||process.nextTick(c,this)}function c(e){e.end()}return Object.defineProperty(s.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(s.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(s.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(s.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),zf}function rp(){if(Jf)return Kf;function e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t){var n=e.entry;for(e.entry=null;n;){var r=n.callback;t.pendingcb--,r(undefined),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}var t;Jf=1,Kf=_,_.WritableState=S;var n,r={deprecate:ff?hf:(ff=1,hf=i.deprecate)},o=Sf(),s=D.Buffer,a=(void 0!==qu?qu:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},c=_f(),l=$f().getHighWaterMark,u=Cf().codes,d=u.ERR_INVALID_ARG_TYPE,h=u.ERR_METHOD_NOT_IMPLEMENTED,f=u.ERR_MULTIPLE_CALLBACK,p=u.ERR_STREAM_CANNOT_PIPE,g=u.ERR_STREAM_DESTROYED,m=u.ERR_STREAM_NULL_VALUES,y=u.ERR_STREAM_WRITE_AFTER_END,v=u.ERR_UNKNOWN_ENCODING,b=c.errorOrDestroy;function w(){}function S(n,r,i){t=t||np(),n=n||{},"boolean"!=typeof i&&(i=r instanceof t),this.objectMode=!!n.objectMode,i&&(this.objectMode=this.objectMode||!!n.writableObjectMode),this.highWaterMark=l(this,n,"writableHighWaterMark",i),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=!1===n.decodeStrings;this.decodeStrings=!o,this.defaultEncoding=n.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if("function"!=typeof i)throw new f;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(process.nextTick(i,r),process.nextTick($,e,t),e._writableState.errorEmitted=!0,b(e,r)):(i(r),e._writableState.errorEmitted=!0,b(e,r),$(e,t))}(e,n,r,t,i);else{var o=E(n)||e.destroyed;o||n.corked||n.bufferProcessing||!n.bufferedRequest||k(e,n),r?process.nextTick(x,e,n,o,i):x(e,n,o,i)}}(r,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==n.emitClose,this.autoDestroy=!!n.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new e(this)}function _(e){var r=this instanceof(t=t||np());if(!r&&!n.call(_,this))return new _(e);this._writableState=new S(e,this,r),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),o.call(this)}function I(e,t,n,r,i,o,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new g("write")):n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function x(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),$(e,t)}function k(t,n){n.bufferProcessing=!0;var r=n.bufferedRequest;if(t._writev&&r&&r.next){var i=n.bufferedRequestCount,o=new Array(i),s=n.corkedRequestsFree;s.entry=r;for(var a=0,c=!0;r;)o[a]=r,r.isBuf||(c=!1),r=r.next,a+=1;o.allBuffers=c,I(t,n,!0,n.length,o,"",s.finish),n.pendingcb++,n.lastBufferedRequest=null,s.next?(n.corkedRequestsFree=s.next,s.next=null):n.corkedRequestsFree=new e(n),n.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,u=r.encoding,d=r.callback;if(I(t,n,!1,n.objectMode?1:l.length,l,u,d),r=r.next,n.bufferedRequestCount--,n.writing)break}null===r&&(n.lastBufferedRequest=null)}n.bufferedRequest=r,n.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function C(e,t){e._final((function(n){t.pendingcb--,n&&b(e,n),t.prefinished=!0,e.emit("prefinish"),$(e,t)}))}function $(e,t){var n=E(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,process.nextTick(C,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var r=e._readableState;(!r||r.autoDestroy&&r.endEmitted)&&e.destroy()}return n}return Df()(_,o),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:r.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(n=Function.prototype[Symbol.hasInstance],Object.defineProperty(_,Symbol.hasInstance,{value:function(e){return!!n.call(this,e)||this===_&&e&&e._writableState instanceof S}})):n=function(e){return e instanceof this},_.prototype.pipe=function(){b(this,new p)},_.prototype.write=function(e,t,n){var r,i=this._writableState,o=!1,c=!i.objectMode&&(r=e,s.isBuffer(r)||r instanceof a);return c&&!s.isBuffer(e)&&(e=function(e){return s.from(e)}(e)),"function"==typeof t&&(n=t,t=null),c?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=w),i.ending?function(e,t){var n=new y;b(e,n),process.nextTick(t,n)}(this,n):(c||function(e,t,n,r){var i;return null===n?i=new m:"string"==typeof n||t.objectMode||(i=new d("chunk",["string","Buffer"],n)),!i||(b(e,i),process.nextTick(r,i),!1)}(this,i,e,n))&&(i.pendingcb++,o=function(e,t,n,r,i,o){if(!n){var a=function(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=s.from(t,n)),t}(t,r,i);r!==a&&(n=!0,i="buffer",r=a)}var c=t.objectMode?1:r.length;t.length+=c;var l=t.length<t.highWaterMark;if(l||(t.needDrain=!0),t.writing||t.corked){var u=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:o,next:null},u?u.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else I(e,t,!1,c,r,i,o);return l}(this,i,c,e,t,n)),o},_.prototype.cork=function(){this._writableState.corked++},_.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.bufferProcessing||!e.bufferedRequest||k(this,e))},_.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new v(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(e,t,n){n(new h("_write()"))},_.prototype._writev=null,_.prototype.end=function(e,t,n){var r=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,$(e,t),n&&(t.finished?process.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}(this,r,n),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),_.prototype.destroy=c.destroy,_.prototype._undestroy=c.undestroy,_.prototype._destroy=function(e,t){t(e)},Kf}const ip=i,op=rp(),{LEVEL:sp}=Yd,ap=wf.exports=function(e={}){op.call(this,{objectMode:!0,highWaterMark:e.highWaterMark}),this.format=e.format,this.level=e.level,this.handleExceptions=e.handleExceptions,this.handleRejections=e.handleRejections,this.silent=e.silent,e.log&&(this.log=e.log),e.logv&&(this.logv=e.logv),e.close&&(this.close=e.close),this.once("pipe",(e=>{this.levels=e.levels,this.parent=e})),this.once("unpipe",(e=>{e===this.parent&&(this.parent=null,this.close&&this.close())}))};ip.inherits(ap,op),ap.prototype._write=function(e,t,n){if(this.silent||!0===e.exception&&!this.handleExceptions)return n(null);const r=this.level||this.parent&&this.parent.level;if(!r||this.levels[r]>=this.levels[e[sp]]){if(e&&!this.format)return this.log(e,n);let t,r;try{r=this.format.transform(Object.assign({},e),this.format.options)}catch(e){t=e}if(t||!r){if(n(),t)throw t;return}return this.log(r,n)}return this._writableState.sync=!1,n(null)},ap.prototype._writev=function(e,t){if(this.logv){const n=e.filter(this._accept,this);return n.length?this.logv(n,t):t(null)}for(let n=0;n<e.length;n++){if(!this._accept(e[n]))continue;if(e[n].chunk&&!this.format){this.log(e[n].chunk,e[n].callback);continue}let r,i;try{i=this.format.transform(Object.assign({},e[n].chunk),this.format.options)}catch(e){r=e}if(r||!i){if(e[n].callback(),r)throw t(null),r}else this.log(i,e[n].callback)}return t(null)},ap.prototype._accept=function(e){const t=e.chunk;if(this.silent)return!1;const n=this.level||this.parent&&this.parent.level;return!(!0!==t.exception&&n&&!(this.levels[n]>=this.levels[t[sp]])||!this.handleExceptions&&!0===t.exception)},ap.prototype._nop=function(){};var cp=wf.exports,lp={exports:{}};const up=i,{LEVEL:dp}=Yd,hp=cp,fp=lp.exports=function(e={}){if(hp.call(this,e),!e.transport||"function"!=typeof e.transport.log)throw new Error("Invalid transport, must be an object with a log method.");this.transport=e.transport,this.level=this.level||e.transport.level,this.handleExceptions=this.handleExceptions||e.transport.handleExceptions,this._deprecated(),this.transport.__winstonError||(this.transport.__winstonError=function(e){this.emit("error",e,this.transport)}.bind(this),this.transport.on("error",this.transport.__winstonError))};up.inherits(fp,hp),fp.prototype._write=function(e,t,n){if(this.silent||!0===e.exception&&!this.handleExceptions)return n(null);(!this.level||this.levels[this.level]>=this.levels[e[dp]])&&this.transport.log(e[dp],e.message,e,this._nop),n(null)},fp.prototype._writev=function(e,t){for(let t=0;t<e.length;t++)this._accept(e[t])&&(this.transport.log(e[t].chunk[dp],e[t].chunk.message,e[t].chunk,this._nop),e[t].callback());return t(null)},fp.prototype._deprecated=function(){console.error([`${this.transport.name} is a legacy winston transport. Consider upgrading: `,"- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md"].join("\n"))},fp.prototype.close=function(){this.transport.close&&this.transport.close(),this.transport.__winstonError&&(this.transport.removeListener("error",this.transport.__winstonError),this.transport.__winstonError=null)};var pp=lp.exports;bf.exports=cp,bf.exports.LegacyTransportStream=pp;var gp,mp,yp=bf.exports,vp={exports:{}},bp={exports:{}},wp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e&&"number"==typeof e.length&&e.length>=0&&e.length%1==0},e.exports=t.default}(wp,wp.exports);var Sp=wp.exports,_p={},Ip={exports:{}},xp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return function(...t){var n=t.pop();return e.call(this,t,n)}},e.exports=t.default}(xp,xp.exports);var kp=xp.exports,Ep={};Object.defineProperty(Ep,"__esModule",{value:!0}),Ep.fallback=Mp,Ep.wrap=Pp;var Cp,$p,Op,Np=Ep.hasQueueMicrotask="function"==typeof queueMicrotask&&queueMicrotask,Tp=Ep.hasSetImmediate="function"==typeof setImmediate&&setImmediate,Ap=Ep.hasNextTick="object"==typeof process&&"function"==typeof process.nextTick;function Mp(e){setTimeout(e,0)}function Pp(e){return(t,...n)=>e((()=>t(...n)))}function Dp(){if(Op)return _p;Op=1,Object.defineProperty(_p,"__esModule",{value:!0}),_p.isAsyncIterable=_p.isAsyncGenerator=_p.isAsync=void 0;var e,t=($p||($p=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,i.isAsync)(e)?function(...t){const n=t.pop();return s(e.apply(this,t),n)}:(0,n.default)((function(t,n){var r;try{r=e.apply(this,t)}catch(e){return n(e)}if(r&&"function"==typeof r.then)return s(r,n);n(null,r)}))};var n=o(kp),r=o(Ep),i=Dp();function o(e){return e&&e.__esModule?e:{default:e}}function s(e,t){return e.then((e=>{a(t,null,e)}),(e=>{a(t,e&&(e instanceof Error||e.message)?e:new Error(e))}))}function a(e,t,n){try{e(t,n)}catch(e){(0,r.default)((e=>{throw e}),e)}}e.exports=t.default}(Ip,Ip.exports)),Ip.exports),n=(e=t)&&e.__esModule?e:{default:e};function r(e){return"AsyncFunction"===e[Symbol.toStringTag]}return _p.default=function(e){if("function"!=typeof e)throw new Error("expected a function");return r(e)?(0,n.default)(e):e},_p.isAsync=r,_p.isAsyncGenerator=function(e){return"AsyncGenerator"===e[Symbol.toStringTag]},_p.isAsyncIterable=function(e){return"function"==typeof e[Symbol.asyncIterator]},_p}Cp=Np?queueMicrotask:Tp?setImmediate:Ap?process.nextTick:Mp,Ep.default=Pp(Cp);var jp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(t||(t=e.length),!t)throw new Error("arity is undefined");return function(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise(((r,i)=>{n[t-1]=(e,...t)=>{if(e)return i(e);r(t.length>1?t:t[0])},e.apply(this,n)}))}},e.exports=t.default}(jp,jp.exports);var Rp,Lp=jp.exports,Fp={exports:{}},Up={exports:{}},Wp={exports:{}},Bp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t},e.exports=t.default}(Bp,Bp.exports);var Gp=Bp.exports,Vp={exports:{}},Yp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e[Symbol.iterator]&&e[Symbol.iterator]()},e.exports=t.default}(Yp,Yp.exports);var Hp=Yp.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if((0,n.default)(e))return function(e){var t=-1,n=e.length;return function(){return++t<n?{value:e[t],key:t}:null}}(e);var t,i,o,s,a=(0,r.default)(e);return a?function(e){var t=-1;return function(){var n=e.next();return n.done?null:(t++,{value:n.value,key:t})}}(a):(i=(t=e)?Object.keys(t):[],o=-1,s=i.length,function e(){var n=i[++o];return"__proto__"===n?e():o<s?{value:t[n],key:n}:null})};var n=i(Sp),r=i(Hp);function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(Vp,Vp.exports);var zp=Vp.exports,qp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var n=e;e=null,n.apply(this,t)}},e.exports=t.default}(qp,qp.exports);var Kp=qp.exports,Jp={exports:{}},Zp={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default={},e.exports=t.default}(Zp,Zp.exports);var Xp=Zp.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,i){let o=!1,s=!1,a=!1,c=0,l=0;function u(){c>=t||a||o||(a=!0,e.next().then((({value:e,done:t})=>{if(!s&&!o){if(a=!1,t)return o=!0,void(c<=0&&i(null));c++,n(e,l,d),l++,u()}})).catch(h))}function d(e,t){if(c-=1,!s)return e?h(e):!1===e?(o=!0,void(s=!0)):t===r.default||o&&c<=0?(o=!0,i(null)):void u()}function h(e){s||(a=!1,o=!0,i(e))}u()};var n,r=(n=Xp)&&n.__esModule?n:{default:n};e.exports=t.default}(Jp,Jp.exports);var Qp=Jp.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=c(Gp),r=c(zp),i=c(Kp),o=Dp(),s=c(Qp),a=c(Xp);function c(e){return e&&e.__esModule?e:{default:e}}t.default=e=>(t,c,l)=>{if(l=(0,n.default)(l),e<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return l(null);if((0,o.isAsyncGenerator)(t))return(0,s.default)(t,e,c,l);if((0,o.isAsyncIterable)(t))return(0,s.default)(t[Symbol.asyncIterator](),e,c,l);var u=(0,r.default)(t),d=!1,h=!1,f=0,p=!1;function g(e,t){if(!h)if(f-=1,e)d=!0,l(e);else if(!1===e)d=!0,h=!0;else{if(t===a.default||d&&f<=0)return d=!0,l(null);p||m()}}function m(){for(p=!0;f<e&&!d;){var t=u();if(null===t)return d=!0,void(f<=0&&l(null));f+=1,c(t.value,t.key,(0,i.default)(g))}p=!1}m()},e.exports=t.default}(Wp,Wp.exports);var eg=Wp.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(eg),r=o(Dp()),i=o(Lp);function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)((function(e,t,i,o){return(0,n.default)(t)(e,(0,r.default)(i),o)}),4),e.exports=t.default}(Up,Up.exports);var tg,ng,rg=Up.exports;var ig,og,sg,ag,cg,lg,ug={exports:{}};function dg(){if(og)return ig;og=1,ig=a;var e=Cf().codes,t=e.ERR_METHOD_NOT_IMPLEMENTED,n=e.ERR_MULTIPLE_CALLBACK,r=e.ERR_TRANSFORM_ALREADY_TRANSFORMING,i=e.ERR_TRANSFORM_WITH_LENGTH_0,o=np();function s(e,t){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new n);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),i(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length<o.highWaterMark)&&this._read(o.highWaterMark)}function a(e){if(!(this instanceof a))return new a(e);o.call(this,e),this._transformState={afterTransform:s.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",c)}function c(){var e=this;"function"!=typeof this._flush||this._readableState.destroyed?l(this,null,null):this._flush((function(t,n){l(e,t,n)}))}function l(e,t,n){if(t)return e.emit("error",t);if(null!=n&&e.push(n),e._writableState.length)throw new i;if(e._transformState.transforming)throw new r;return e.push(null)}return Df()(a,o),a.prototype.push=function(e,t){return this._transformState.needTransform=!1,o.prototype.push.call(this,e,t)},a.prototype._transform=function(e,n,r){r(new t("_transform()"))},a.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},a.prototype._read=function(){var e=this._transformState;null===e.writechunk||e.transforming?e.needTransform=!0:(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform))},a.prototype._destroy=function(e,t){o.prototype._destroy.call(this,e,(function(e){t(e)}))},ig}!function(e,t){var n=P;"disable"===process.env.READABLE_STREAM&&n?(e.exports=n.Readable,Object.assign(e.exports,n),e.exports.Stream=n):((t=e.exports=tp()).Stream=n||t,t.Readable=t,t.Writable=rp(),t.Duplex=np(),t.Transform=dg(),t.PassThrough=function(){if(ag)return sg;ag=1,sg=t;var e=dg();function t(n){if(!(this instanceof t))return new t(n);e.call(this,n)}return Df()(t,e),t.prototype._transform=function(e,t,n){n(null,e)},sg}(),t.finished=ep(),t.pipeline=function(){if(lg)return cg;var e;lg=1;var t=Cf().codes,n=t.ERR_MISSING_ARGS,r=t.ERR_STREAM_DESTROYED;function i(e){if(e)throw e}function o(e){e()}function s(e,t){return e.pipe(t)}return cg=function(){for(var t=arguments.length,a=new Array(t),c=0;c<t;c++)a[c]=arguments[c];var l,u=function(e){return e.length?"function"!=typeof e[e.length-1]?i:e.pop():i}(a);if(Array.isArray(a[0])&&(a=a[0]),a.length<2)throw new n("streams");var d=a.map((function(t,n){var i=n<a.length-1;return function(t,n,i,o){o=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(o);var s=!1;t.on("close",(function(){s=!0})),void 0===e&&(e=ep()),e(t,{readable:n,writable:i},(function(e){if(e)return o(e);s=!0,o()}));var a=!1;return function(e){if(!s&&!a)return a=!0,function(e){return e.setHeader&&"function"==typeof e.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new r("pipe"))}}(t,i,n>0,(function(e){l||(l=e),e&&d.forEach(o),i||(d.forEach(o),u(l))}))}));return a.reduce(s)},cg}())}(ug,ug.exports);var hg,fg,pg,gg,mg=ug.exports,yg={exports:{}};function vg(){if(fg)return hg;fg=1;var e=[],t=[],n=function(){};function r(t){return!~e.indexOf(t)&&(e.push(t),!0)}function i(e){n=e}function o(t){for(var n=[],r=0;r<e.length;r++)if(e[r].async)n.push(e[r]);else if(e[r](t))return!0;return!!n.length&&new Promise((function(e){Promise.all(n.map((function(e){return e(t)}))).then((function(t){e(t.some(Boolean))}))}))}function s(e){return!~t.indexOf(e)&&(t.push(e),!0)}function a(){n.apply(n,arguments)}function c(e){for(var n=0;n<t.length;n++)e=t[n].apply(t[n],arguments);return e}function l(e,t){var n=Object.prototype.hasOwnProperty;for(var r in t)n.call(t,r)&&(e[r]=t[r]);return e}function u(e){return e.enabled=!1,e.modify=s,e.set=i,e.use=r,l((function(){return!1}),e)}function d(e){return e.enabled=!0,e.modify=s,e.set=i,e.use=r,l((function(){var t=Array.prototype.slice.call(arguments,0);return a.call(a,e,c(t,e)),!0}),e)}return hg=function(e){return e.introduce=l,e.enabled=o,e.process=c,e.modify=s,e.write=a,e.nope=u,e.yep=d,e.set=i,e.use=r,e}}var bg,wg,Sg,_g,Ig,xg,kg={exports:{}},Eg={exports:{}};function Cg(){if(xg)return kg.exports;xg=1;var e=wg?bg:(wg=1,bg={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}),t=function(){if(Ig)return Eg.exports;Ig=1;var e=_g?Sg:(_g=1,Sg=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}),t=Array.prototype.concat,n=Array.prototype.slice,r=Eg.exports=function(r){for(var i=[],o=0,s=r.length;o<s;o++){var a=r[o];e(a)?i=t.call(i,n.call(a)):i.push(a)}return i};return r.wrap=function(e){return function(){return e(r(arguments))}},Eg.exports}(),n=Object.hasOwnProperty,r=Object.create(null);for(var i in e)n.call(e,i)&&(r[e[i]]=i);var o=kg.exports={to:{},get:{}};function s(e,t,n){return Math.min(Math.max(t,e),n)}function a(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}return o.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case"hsl":t=o.get.hsl(e),n="hsl";break;case"hwb":t=o.get.hwb(e),n="hwb";break;default:t=o.get.rgb(e),n="rgb"}return t?{model:n,value:t}:null},o.get.rgb=function(t){if(!t)return null;var r,i,o,a=[0,0,0,1];if(r=t.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(o=r[2],r=r[1],i=0;i<3;i++){var c=2*i;a[i]=parseInt(r.slice(c,c+2),16)}o&&(a[3]=parseInt(o,16)/255)}else if(r=t.match(/^#([a-f0-9]{3,4})$/i)){for(o=(r=r[1])[3],i=0;i<3;i++)a[i]=parseInt(r[i]+r[i],16);o&&(a[3]=parseInt(o+o,16)/255)}else if(r=t.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(i=0;i<3;i++)a[i]=parseInt(r[i+1],0);r[4]&&(r[5]?a[3]=.01*parseFloat(r[4]):a[3]=parseFloat(r[4]))}else{if(!(r=t.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(r=t.match(/^(\w+)$/))?"transparent"===r[1]?[0,0,0,0]:n.call(e,r[1])?((a=e[r[1]])[3]=1,a):null:null;for(i=0;i<3;i++)a[i]=Math.round(2.55*parseFloat(r[i+1]));r[4]&&(r[5]?a[3]=.01*parseFloat(r[4]):a[3]=parseFloat(r[4]))}for(i=0;i<3;i++)a[i]=s(a[i],0,255);return a[3]=s(a[3],0,1),a},o.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,0,1)]}return null},o.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,s(parseFloat(t[2]),0,100),s(parseFloat(t[3]),0,100),s(isNaN(n)?1:n,0,1)]}return null},o.to.hex=function(){var e=t(arguments);return"#"+a(e[0])+a(e[1])+a(e[2])+(e[3]<1?a(Math.round(255*e[3])):"")},o.to.rgb=function(){var e=t(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},o.to.rgb.percent=function(){var e=t(arguments),n=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),i=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+n+"%, "+r+"%, "+i+"%)":"rgba("+n+"%, "+r+"%, "+i+"%, "+e[3]+")"},o.to.hsl=function(){var e=t(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},o.to.hwb=function(){var e=t(arguments),n="";return e.length>=4&&1!==e[3]&&(n=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+n+")"},o.to.keyword=function(e){return r[e.slice(0,3)]},kg.exports}var $g,Og,Ng,Tg,Ag,Mg,Pg,Dg,jg,Rg,Lg,Fg,Ug,Wg,Bg,Gg,Vg,Yg,Hg,zg,qg,Kg,Jg,Zg,Xg,Qg,em,tm={exports:{}};function nm(){if(Ng)return tm.exports;Ng=1;var e=Og?$g:(Og=1,$g={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}),t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);var r=tm.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var i in r)if(r.hasOwnProperty(i)){if(!("channels"in r[i]))throw new Error("missing channels property: "+i);if(!("labels"in r[i]))throw new Error("missing channel labels property: "+i);if(r[i].labels.length!==r[i].channels)throw new Error("channel and label counts mismatch: "+i);var o=r[i].channels,s=r[i].labels;delete r[i].channels,delete r[i].labels,Object.defineProperty(r[i],"channels",{value:o}),Object.defineProperty(r[i],"labels",{value:s})}return r.rgb.hsl=function(e){var t,n,r=e[0]/255,i=e[1]/255,o=e[2]/255,s=Math.min(r,i,o),a=Math.max(r,i,o),c=a-s;return a===s?t=0:r===a?t=(i-o)/c:i===a?t=2+(o-r)/c:o===a&&(t=4+(r-i)/c),(t=Math.min(60*t,360))<0&&(t+=360),n=(s+a)/2,[t,100*(a===s?0:n<=.5?c/(a+s):c/(2-a-s)),100*n]},r.rgb.hsv=function(e){var t,n,r,i,o,s=e[0]/255,a=e[1]/255,c=e[2]/255,l=Math.max(s,a,c),u=l-Math.min(s,a,c),d=function(e){return(l-e)/6/u+.5};return 0===u?i=o=0:(o=u/l,t=d(s),n=d(a),r=d(c),s===l?i=r-n:a===l?i=1/3+t-r:c===l&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*o,100*l]},r.rgb.hwb=function(e){var t=e[0],n=e[1],i=e[2];return[r.rgb.hsl(e)[0],1/255*Math.min(t,Math.min(n,i))*100,100*(i=1-1/255*Math.max(t,Math.max(n,i)))]},r.rgb.cmyk=function(e){var t,n=e[0]/255,r=e[1]/255,i=e[2]/255;return[100*((1-n-(t=Math.min(1-n,1-r,1-i)))/(1-t)||0),100*((1-r-t)/(1-t)||0),100*((1-i-t)/(1-t)||0),100*t]},r.rgb.keyword=function(n){var r=t[n];if(r)return r;var i,o,s,a=1/0;for(var c in e)if(e.hasOwnProperty(c)){var l=(o=n,s=e[c],Math.pow(o[0]-s[0],2)+Math.pow(o[1]-s[1],2)+Math.pow(o[2]-s[2],2));l<a&&(a=l,i=c)}return i},r.keyword.rgb=function(t){return e[t]},r.rgb.xyz=function(e){var t=e[0]/255,n=e[1]/255,r=e[2]/255;return[100*(.4124*(t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},r.rgb.lab=function(e){var t=r.rgb.xyz(e),n=t[0],i=t[1],o=t[2];return i/=100,o/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116))]},r.hsl.rgb=function(e){var t,n,r,i,o,s=e[0]/360,a=e[1]/100,c=e[2]/100;if(0===a)return[o=255*c,o,o];t=2*c-(n=c<.5?c*(1+a):c+a-c*a),i=[0,0,0];for(var l=0;l<3;l++)(r=s+1/3*-(l-1))<0&&r++,r>1&&r--,o=6*r<1?t+6*(n-t)*r:2*r<1?n:3*r<2?t+(n-t)*(2/3-r)*6:t,i[l]=255*o;return i},r.hsl.hsv=function(e){var t=e[0],n=e[1]/100,r=e[2]/100,i=n,o=Math.max(r,.01);return n*=(r*=2)<=1?r:2-r,i*=o<=1?o:2-o,[t,100*(0===r?2*i/(o+i):2*n/(r+n)),(r+n)/2*100]},r.hsv.rgb=function(e){var t=e[0]/60,n=e[1]/100,r=e[2]/100,i=Math.floor(t)%6,o=t-Math.floor(t),s=255*r*(1-n),a=255*r*(1-n*o),c=255*r*(1-n*(1-o));switch(r*=255,i){case 0:return[r,c,s];case 1:return[a,r,s];case 2:return[s,r,c];case 3:return[s,a,r];case 4:return[c,s,r];case 5:return[r,s,a]}},r.hsv.hsl=function(e){var t,n,r,i=e[0],o=e[1]/100,s=e[2]/100,a=Math.max(s,.01);return r=(2-o)*s,n=o*a,[i,100*(n=(n/=(t=(2-o)*a)<=1?t:2-t)||0),100*(r/=2)]},r.hwb.rgb=function(e){var t,n,r,i,o,s,a,c=e[0]/360,l=e[1]/100,u=e[2]/100,d=l+u;switch(d>1&&(l/=d,u/=d),r=6*c-(t=Math.floor(6*c)),1&t&&(r=1-r),i=l+r*((n=1-u)-l),t){default:case 6:case 0:o=n,s=i,a=l;break;case 1:o=i,s=n,a=l;break;case 2:o=l,s=n,a=i;break;case 3:o=l,s=i,a=n;break;case 4:o=i,s=l,a=n;break;case 5:o=n,s=l,a=i}return[255*o,255*s,255*a]},r.cmyk.rgb=function(e){var t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},r.xyz.rgb=function(e){var t,n,r,i=e[0]/100,o=e[1]/100,s=e[2]/100;return n=-.9689*i+1.8758*o+.0415*s,r=.0557*i+-.204*o+1.057*s,t=(t=3.2406*i+-1.5372*o+-.4986*s)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,[255*(t=Math.min(Math.max(0,t),1)),255*(n=Math.min(Math.max(0,n),1)),255*(r=Math.min(Math.max(0,r),1))]},r.xyz.lab=function(e){var t=e[0],n=e[1],r=e[2];return n/=100,r/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(t-n),200*(n-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},r.lab.xyz=function(e){var t,n,r,i=e[0];t=e[1]/500+(n=(i+16)/116),r=n-e[2]/200;var o=Math.pow(n,3),s=Math.pow(t,3),a=Math.pow(r,3);return n=o>.008856?o:(n-16/116)/7.787,t=s>.008856?s:(t-16/116)/7.787,r=a>.008856?a:(r-16/116)/7.787,[t*=95.047,n*=100,r*=108.883]},r.lab.lch=function(e){var t,n=e[0],r=e[1],i=e[2];return(t=360*Math.atan2(i,r)/2/Math.PI)<0&&(t+=360),[n,Math.sqrt(r*r+i*i),t]},r.lch.lab=function(e){var t,n=e[0],r=e[1];return t=e[2]/360*2*Math.PI,[n,r*Math.cos(t),r*Math.sin(t)]},r.rgb.ansi16=function(e){var t=e[0],n=e[1],i=e[2],o=1 in arguments?arguments[1]:r.rgb.hsv(e)[2];if(0===(o=Math.round(o/50)))return 30;var s=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(t/255));return 2===o&&(s+=60),s},r.hsv.ansi16=function(e){return r.rgb.ansi16(r.hsv.rgb(e),e[2])},r.rgb.ansi256=function(e){var t=e[0],n=e[1],r=e[2];return t===n&&n===r?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},r.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},r.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var n;return e-=16,[Math.floor(e/36)/5*255,Math.floor((n=e%36)/6)/5*255,n%6/5*255]},r.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},r.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var n=t[0];3===t[0].length&&(n=n.split("").map((function(e){return e+e})).join(""));var r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},r.rgb.hcg=function(e){var t,n=e[0]/255,r=e[1]/255,i=e[2]/255,o=Math.max(Math.max(n,r),i),s=Math.min(Math.min(n,r),i),a=o-s;return t=a<=0?0:o===n?(r-i)/a%6:o===r?2+(i-n)/a:4+(n-r)/a+4,t/=6,[360*(t%=1),100*a,100*(a<1?s/(1-a):0)]},r.hsl.hcg=function(e){var t,n=e[1]/100,r=e[2]/100,i=0;return(t=r<.5?2*n*r:2*n*(1-r))<1&&(i=(r-.5*t)/(1-t)),[e[0],100*t,100*i]},r.hsv.hcg=function(e){var t=e[1]/100,n=e[2]/100,r=t*n,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},r.hcg.rgb=function(e){var t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];var i,o=[0,0,0],s=t%1*6,a=s%1,c=1-a;switch(Math.floor(s)){case 0:o[0]=1,o[1]=a,o[2]=0;break;case 1:o[0]=c,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=a;break;case 3:o[0]=0,o[1]=c,o[2]=1;break;case 4:o[0]=a,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=c}return i=(1-n)*r,[255*(n*o[0]+i),255*(n*o[1]+i),255*(n*o[2]+i)]},r.hcg.hsv=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t),r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},r.hcg.hsl=function(e){var t=e[1]/100,n=e[2]/100*(1-t)+.5*t,r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},r.hcg.hwb=function(e){var t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},r.hwb.hcg=function(e){var t=e[1]/100,n=1-e[2]/100,r=n-t,i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},r.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},r.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},r.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},r.gray.hsl=r.gray.hsv=function(e){return[0,0,e[0]]},r.gray.hwb=function(e){return[0,100,e[0]]},r.gray.cmyk=function(e){return[0,0,0,e[0]]},r.gray.lab=function(e){return[e[0],0,0]},r.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},r.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]},tm.exports}function rm(){if(Pg)return Mg;Pg=1;var e=nm(),t=function(){if(Ag)return Tg;Ag=1;var e=nm();function t(t){var n=function(){for(var t={},n=Object.keys(e),r=n.length,i=0;i<r;i++)t[n[i]]={distance:-1,parent:null};return t}(),r=[t];for(n[t].distance=0;r.length;)for(var i=r.pop(),o=Object.keys(e[i]),s=o.length,a=0;a<s;a++){var c=o[a],l=n[c];-1===l.distance&&(l.distance=n[i].distance+1,l.parent=i,r.unshift(c))}return n}function n(e,t){return function(n){return t(e(n))}}function r(t,r){for(var i=[r[t].parent,t],o=e[r[t].parent][t],s=r[t].parent;r[s].parent;)i.unshift(r[s].parent),o=n(e[r[s].parent][s],o),s=r[s].parent;return o.conversion=i,o}return Tg=function(e){for(var n=t(e),i={},o=Object.keys(n),s=o.length,a=0;a<s;a++){var c=o[a];null!==n[c].parent&&(i[c]=r(c,n))}return i}}(),n={};return Object.keys(e).forEach((function(r){n[r]={},Object.defineProperty(n[r],"channels",{value:e[r].channels}),Object.defineProperty(n[r],"labels",{value:e[r].labels});var i=t(r);Object.keys(i).forEach((function(e){var t=i[e];n[r][e]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var n=e(t);if("object"==typeof n)for(var r=n.length,i=0;i<r;i++)n[i]=Math.round(n[i]);return n};return"conversion"in e&&(t.conversion=e.conversion),t}(t),n[r][e].raw=function(e){var t=function(t){return null==t?t:(arguments.length>1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(t)}))})),Mg=n}function im(){if(Ug)return Fg;Ug=1;var e=function(){if(jg)return Dg;jg=1;var e=Cg(),t=rm(),n=[].slice,r=["keyword","gray","hex"],i={};Object.keys(t).forEach((function(e){i[n.call(t[e].labels).sort().join("")]=e}));var o={};function s(a,c){if(!(this instanceof s))return new s(a,c);if(c&&c in r&&(c=null),c&&!(c in t))throw new Error("Unknown model: "+c);var u,d;if(null==a)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(a instanceof s)this.model=a.model,this.color=a.color.slice(),this.valpha=a.valpha;else if("string"==typeof a){var h=e.get(a);if(null===h)throw new Error("Unable to parse color from string: "+a);this.model=h.model,d=t[this.model].channels,this.color=h.value.slice(0,d),this.valpha="number"==typeof h.value[d]?h.value[d]:1}else if(a.length){this.model=c||"rgb",d=t[this.model].channels;var f=n.call(a,0,d);this.color=l(f,d),this.valpha="number"==typeof a[d]?a[d]:1}else if("number"==typeof a)a&=16777215,this.model="rgb",this.color=[a>>16&255,a>>8&255,255&a],this.valpha=1;else{this.valpha=1;var p=Object.keys(a);"alpha"in a&&(p.splice(p.indexOf("alpha"),1),this.valpha="number"==typeof a.alpha?a.alpha:0);var g=p.sort().join("");if(!(g in i))throw new Error("Unable to parse color from object: "+JSON.stringify(a));this.model=i[g];var m=t[this.model].labels,y=[];for(u=0;u<m.length;u++)y.push(a[m[u]]);this.color=l(y)}if(o[this.model])for(d=t[this.model].channels,u=0;u<d;u++){var v=o[this.model][u];v&&(this.color[u]=v(this.color[u]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function a(e,t,n){return(e=Array.isArray(e)?e:[e]).forEach((function(e){(o[e]||(o[e]=[]))[t]=n})),e=e[0],function(r){var i;return arguments.length?(n&&(r=n(r)),(i=this[e]()).color[t]=r,i):(i=this[e]().color[t],n&&(i=n(i)),i)}}function c(e){return function(t){return Math.max(0,Math.min(e,t))}}function l(e,t){for(var n=0;n<t;n++)"number"!=typeof e[n]&&(e[n]=0);return e}return s.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(t){var n=this.model in e.to?this:this.rgb(),r=1===(n=n.round("number"==typeof t?t:1)).valpha?n.color:n.color.concat(this.valpha);return e.to[n.model](r)},percentString:function(t){var n=this.rgb().round("number"==typeof t?t:1),r=1===n.valpha?n.color:n.color.concat(this.valpha);return e.to.rgb.percent(r)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},n=t[this.model].channels,r=t[this.model].labels,i=0;i<n;i++)e[r[i]]=this.color[i];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new s(this.color.map(function(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new s(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:a("rgb",0,c(255)),green:a("rgb",1,c(255)),blue:a("rgb",2,c(255)),hue:a(["hsl","hsv","hsl","hwb","hcg"],0,(function(e){return(e%360+360)%360})),saturationl:a("hsl",1,c(100)),lightness:a("hsl",2,c(100)),saturationv:a("hsv",1,c(100)),value:a("hsv",2,c(100)),chroma:a("hcg",1,c(100)),gray:a("hcg",2,c(100)),white:a("hwb",1,c(100)),wblack:a("hwb",2,c(100)),cyan:a("cmyk",0,c(100)),magenta:a("cmyk",1,c(100)),yellow:a("cmyk",2,c(100)),black:a("cmyk",3,c(100)),x:a("xyz",0,c(100)),y:a("xyz",1,c(100)),z:a("xyz",2,c(100)),l:a("lab",0,c(100)),a:a("lab",1),b:a("lab",2),keyword:function(e){return arguments.length?new s(e):t[this.model].keyword(this.color)},hex:function(t){return arguments.length?new s(t):e.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],n=0;n<e.length;n++){var r=e[n]/255;t[n]=r<=.03928?r/12.92:Math.pow((r+.055)/1.055,2.4)}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return s.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),n=t.color[0];return n=(n=(n+e)%360)<0?360+n:n,t.color[0]=n,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var n=e.rgb(),r=this.rgb(),i=void 0===t?.5:t,o=2*i-1,a=n.alpha()-r.alpha(),c=((o*a==-1?o:(o+a)/(1+o*a))+1)/2,l=1-c;return s.rgb(c*n.red()+l*r.red(),c*n.green()+l*r.green(),c*n.blue()+l*r.blue(),n.alpha()*i+r.alpha()*(1-i))}},Object.keys(t).forEach((function(e){if(-1===r.indexOf(e)){var i=t[e].channels;s.prototype[e]=function(){if(this.model===e)return new s(this);if(arguments.length)return new s(arguments,e);var n,r="number"==typeof arguments[i]?i:this.valpha;return new s((n=t[this.model][e].raw(this.color),Array.isArray(n)?n:[n]).concat(r),e)},s[e]=function(t){return"number"==typeof t&&(t=l(n.call(arguments),i)),new s(t,e)}}})),Dg=s}(),t=(Lg||(Lg=1,Rg=function(e){for(var t=0,n=0;t<e.length;n=e.charCodeAt(t++)+((n<<5)-n));var r=Math.floor(Math.abs(1e4*Math.sin(n)%1*16777216)).toString(16);return"#"+Array(6-r.length+1).join("0")+r}),Rg);return Fg=function(n,r){var i=n.split(r||":"),o=t(i[0]);if(!i.length)return o;for(var s=0,a=i.length-1;s<a;s++)o=e(o).mix(e(t(i[s+1]))).saturate(1).hex();return o},Fg}function om(){if(Jg)return Kg;Jg=1;var e=function(){if(qg)return zg;qg=1;var e=(Hg||(Hg=1,Yg=function(e,t){if(!t)return!1;for(var n=t.split(/[\s,]+/),r=0;r<n.length;r++)if("-"!==(t=n[r].replace("*",".*?")).charAt(0)){if(new RegExp("^"+t+"$").test(e))return!0}else if(new RegExp("^"+t.substr(1)+"$").test(e))return!1;return!1}),Yg);return zg=function(t){return function(n){try{return e(n,t())}catch(e){}return!1}}}();return Kg=e((function(){return process.env.DEBUG||process.env.DIAGNOSTICS}))}"production"===process.env.NODE_ENV?yg.exports=function(){if(gg)return pg;gg=1;var e=vg()((function e(t,n){return(n=n||{}).namespace=t,n.prod=!0,n.dev=!1,n.force||e.force?e.yep(n):e.nope(n)}));return pg=e}():yg.exports=function(){if(em)return Qg;em=1;var e=vg(),t=N.isatty(1),n=e((function e(n,r){return(r=r||{}).colors="colors"in r?r.colors:t,r.namespace=n,r.prod=!1,r.dev=!0,e.enabled(n)||r.force||e.force?e.yep(r):e.nope(r)}));return n.modify(function(){if(Vg)return Gg;Vg=1;var e=im(),t=function(){if(Bg)return Wg;function e(t,n){return n?new e(t).style(n):this instanceof e?void(this.text=t):new e(t)}return Bg=1,e.prototype.prefix="[",e.prototype.suffix="m",e.prototype.hex=function(e){3===(e="#"===e[0]?e.substring(1):e).length&&((e=e.split(""))[5]=e[2],e[4]=e[2],e[3]=e[1],e[2]=e[1],e[1]=e[0],e=e.join(""));var t=e.substring(0,2),n=e.substring(2,4),r=e.substring(4,6);return[parseInt(t,16),parseInt(n,16),parseInt(r,16)]},e.prototype.rgb=function(e,t,n){var r=e/255*5,i=t/255*5,o=n/255*5;return this.ansi(r,i,o)},e.prototype.ansi=function(e,t,n){return 16+36*Math.round(e)+6*Math.round(t)+Math.round(n)},e.prototype.reset=function(){return this.prefix+"39;49"+this.suffix},e.prototype.style=function(e){return this.prefix+"38;5;"+this.rgb.apply(this,this.hex(e))+this.suffix+this.text+this.reset()},Wg=e}();return Gg=function(n,r){var i=r.namespace,o=!1!==r.colors?t(i+":",e(i)):i+":";return n[0]=o+" "+n[0],n}}()),n.use(om()),n.set(Xg?Zg:(Xg=1,Zg=function(e,t){try{Function.prototype.apply.call(console.log,console,t)}catch(e){}})),Qg=n}();var sm,am,cm,lm,um,dm,hm=yg.exports;function fm(){if(lm)return cm;lm=1;const e=O,t=x,n=(ng||(ng=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,r.default)(o.default,e,t)};var n=(Rp||(Rp=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(Sp),r=o(Dp()),i=o(Lp);function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)(((e,t,i)=>{var o=(0,n.default)(t)?[]:{};e(t,((e,t,n)=>{(0,r.default)(e)(((e,...r)=>{r.length<2&&([r]=r),o[t]=r,n(e)}))}),(e=>i(e,o)))}),3),e.exports=t.default}(bp,bp.exports)),bp.exports),r=s(n),i=(tg||(tg=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=i(rg),r=i(Lp);function i(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.default)((function(e,t,r){return(0,n.default)(e,1,t,r)}),3),e.exports=t.default}(Fp,Fp.exports)),Fp.exports),o=s(i);function s(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(vp,vp.exports)),vp.exports),r=R,{MESSAGE:i}=Yd,{Stream:o,PassThrough:s}=mg,a=yp,c=hm("winston:file"),l=T,u=function(){if(am)return sm;am=1;const e=O,{StringDecoder:t}=L,{Stream:n}=mg;function r(){}return sm=(i,o)=>{const s=Buffer.alloc(65536),a=new t("utf8"),c=new n;let l="",u=0,d=0;return-1===i.start&&delete i.start,c.readable=!0,c.destroy=()=>{c.destroyed=!0,c.emit("end"),c.emit("close")},e.open(i.file,"a+","0644",((t,n)=>{if(t)return o?o(t):c.emit("error",t),void c.destroy();!function t(){if(!c.destroyed)return e.read(n,s,0,s.length,u,((e,n)=>{if(e)return o?o(e):c.emit("error",e),void c.destroy();if(!n)return l&&((null==i.start||d>i.start)&&(o?o(null,l):c.emit("line",l)),d++,l=""),setTimeout(t,1e3);let r=a.write(s.slice(0,n));o||c.emit("data",r),r=(l+r).split(/\n+/);const h=r.length-1;let f=0;for(;f<h;f++)(null==i.start||d>i.start)&&(o?o(null,r[f]):c.emit("line",r[f])),d++;return l=r[h],u+=n,t()}));e.close(n,r)}()})),o?c.destroy:c},sm}();return cm=class extends a{constructor(e={}){function n(t,...n){n.slice(1).forEach((n=>{if(e[n])throw new Error(`Cannot set ${n} and ${t} together`)}))}if(super(e),this.name=e.name||"file",this._stream=new s,this._stream.setMaxListeners(30),this._onError=this._onError.bind(this),e.filename||e.dirname)n("filename or dirname","stream"),this._basename=this.filename=e.filename?t.basename(e.filename):"winston.log",this.dirname=e.dirname||t.dirname(e.filename),this.options=e.options||{flags:"a"};else{if(!e.stream)throw new Error("Cannot log to file without filename or stream.");console.warn("options.stream will be removed in winston@4. Use winston.transports.Stream"),n("stream","filename","maxsize"),this._dest=this._stream.pipe(this._setupStream(e.stream)),this.dirname=t.dirname(this._dest.path)}this.maxsize=e.maxsize||null,this.rotationFormat=e.rotationFormat||!1,this.zippedArchive=e.zippedArchive||!1,this.maxFiles=e.maxFiles||null,this.eol="string"==typeof e.eol?e.eol:l.EOL,this.tailable=e.tailable||!1,this.lazy=e.lazy||!1,this._size=0,this._pendingSize=0,this._created=0,this._drain=!1,this._opening=!1,this._ending=!1,this._fileExist=!1,this.dirname&&this._createLogDirIfNotExist(this.dirname),this.lazy||this.open()}finishIfEnding(){this._ending&&(this._opening?this.once("open",(()=>{this._stream.once("finish",(()=>this.emit("finish"))),setImmediate((()=>this._stream.end()))})):(this._stream.once("finish",(()=>this.emit("finish"))),setImmediate((()=>this._stream.end()))))}log(e,t=()=>{}){if(this.silent)return t(),!0;if(this._drain)return void this._stream.once("drain",(()=>{this._drain=!1,this.log(e,t)}));if(this._rotate)return void this._stream.once("rotate",(()=>{this._rotate=!1,this.log(e,t)}));if(this.lazy){if(!this._fileExist)return this._opening||this.open(),void this.once("open",(()=>{this._fileExist=!0,this.log(e,t)}));if(this._needsNewFile(this._pendingSize))return void this._dest.once("close",(()=>{this._opening||this.open(),this.once("open",(()=>{this.log(e,t)}))}))}const n=`${e[i]}${this.eol}`,r=Buffer.byteLength(n);this._pendingSize+=r,this._opening&&!this.rotatedWhileOpening&&this._needsNewFile(this._size+this._pendingSize)&&(this.rotatedWhileOpening=!0);const o=this._stream.write(n,function(){this._size+=r,this._pendingSize-=r,c("logged %s %s",this._size,n),this.emit("logged",e),this._rotate||this._opening||this._needsNewFile()&&(this.lazy?this._endStream((()=>{this.emit("fileclosed")})):(this._rotate=!0,this._endStream((()=>this._rotateFile()))))}.bind(this));return o?t():(this._drain=!0,this._stream.once("drain",(()=>{this._drain=!1,t()}))),c("written",o,this._drain),this.finishIfEnding(),o}query(n,r){"function"==typeof n&&(r=n,n={}),n=function(e){return(e=e||{}).rows=e.rows||e.limit||10,e.start=e.start||0,e.until=e.until||new Date,"object"!=typeof e.until&&(e.until=new Date(e.until)),e.from=e.from||e.until-864e5,"object"!=typeof e.from&&(e.from=new Date(e.from)),e.order=e.order||"desc",e}(n);const i=t.join(this.dirname,this.filename);let o="",s=[],a=0;const c=e.createReadStream(i,{encoding:"utf8"});function l(e,t){try{const t=JSON.parse(e);(function(e){if(!e)return;if("object"!=typeof e)return;const t=new Date(e.timestamp);return!(n.from&&t<n.from||n.until&&t>n.until||n.level&&n.level!==e.level)||void 0})(t)&&function(e){n.rows&&s.length>=n.rows&&"desc"!==n.order?c.readable&&c.destroy():(n.fields&&(e=n.fields.reduce(((t,n)=>(t[n]=e[n],t)),{})),"desc"===n.order&&s.length>=n.rows&&s.shift(),s.push(e))}(t)}catch(e){t||c.emit("error",e)}}c.on("error",(e=>{if(c.readable&&c.destroy(),r)return"ENOENT"!==e.code?r(e):r(null,s)})),c.on("data",(e=>{const t=(e=(o+e).split(/\n+/)).length-1;let r=0;for(;r<t;r++)(!n.start||a>=n.start)&&l(e[r]),a++;o=e[t]})),c.on("close",(()=>{o&&l(o,!0),"desc"===n.order&&(s=s.reverse()),r&&r(null,s)}))}stream(e={}){const n=t.join(this.dirname,this.filename),r=new o,i={file:n,start:e.start};return r.destroy=u(i,((e,t)=>{if(e)return r.emit("error",e);try{r.emit("data",t),t=JSON.parse(t),r.emit("log",t)}catch(e){r.emit("error",e)}})),r}open(){this.filename&&(this._opening||(this._opening=!0,this.stat(((e,t)=>{if(e)return this.emit("error",e);c("stat done: %s { size: %s }",this.filename,t),this._size=t,this._dest=this._createStream(this._stream),this._opening=!1,this.once("open",(()=>{this._stream.emit("rotate")||(this._rotate=!1)}))}))))}stat(n){const r=this._getFile(),i=t.join(this.dirname,r);e.stat(i,((e,t)=>e&&"ENOENT"===e.code?(c("ENOENT ok",i),this.filename=r,n(null,0)):e?(c(`err ${e.code} ${i}`),n(e)):!t||this._needsNewFile(t.size)?this._incFile((()=>this.stat(n))):(this.filename=r,void n(null,t.size))))}close(e){this._stream&&this._stream.end((()=>{e&&e(),this.emit("flush"),this.emit("closed")}))}_needsNewFile(e){return e=e||this._size,this.maxsize&&e>=this.maxsize}_onError(e){this.emit("error",e)}_setupStream(e){return e.on("error",this._onError),e}_cleanupStream(e){return e.removeListener("error",this._onError),e.destroy(),e}_rotateFile(){this._incFile((()=>this.open()))}_endStream(e=()=>{}){this._dest?(this._stream.unpipe(this._dest),this._dest.end((()=>{this._cleanupStream(this._dest),e()}))):e()}_createStream(n){const r=t.join(this.dirname,this.filename);c("create stream start",r,this.options);const i=e.createWriteStream(r,this.options).on("error",(e=>c(e))).on("close",(()=>c("close",i.path,i.bytesWritten))).on("open",(()=>{c("file open ok",r),this.emit("open",r),n.pipe(i),this.rotatedWhileOpening&&(this._stream=new s,this._stream.setMaxListeners(30),this._rotateFile(),this.rotatedWhileOpening=!1,this._cleanupStream(i),n.end())}));return c("create stream ok",r),i}_incFile(e){c("_incFile",this.filename);const r=t.extname(this._basename),i=t.basename(this._basename,r),o=[];this.zippedArchive&&o.push(function(e){const n=this._created>0&&!this.tailable?this._created:"";this._compressFile(t.join(this.dirname,`${i}${n}${r}`),t.join(this.dirname,`${i}${n}${r}.gz`),e)}.bind(this)),o.push(function(e){this.tailable?this._checkMaxFilesTailable(r,i,e):(this._created+=1,this._checkMaxFilesIncrementing(r,i,e))}.bind(this)),n(o,e)}_getFile(){const e=t.extname(this._basename),n=t.basename(this._basename,e),r=this.rotationFormat?this.rotationFormat():this._created;return!this.tailable&&this._created?`${n}${r}${e}`:`${n}${e}`}_checkMaxFilesIncrementing(n,r,i){if(!this.maxFiles||this._created<this.maxFiles)return setImmediate(i);const o=this._created-this.maxFiles,s=`${r}${0!==o?o:""}${n}${this.zippedArchive?".gz":""}`,a=t.join(this.dirname,s);e.unlink(a,i)}_checkMaxFilesTailable(r,i,o){const s=[];if(!this.maxFiles)return;const a=this.zippedArchive?".gz":"";for(let n=this.maxFiles-1;n>1;n--)s.push(function(n,o){let s=`${i}${n-1}${r}${a}`;const c=t.join(this.dirname,s);e.exists(c,(l=>{if(!l)return o(null);s=`${i}${n}${r}${a}`,e.rename(c,t.join(this.dirname,s),o)}))}.bind(this,n));n(s,(()=>{e.rename(t.join(this.dirname,`${i}${r}${a}`),t.join(this.dirname,`${i}1${r}${a}`),o)}))}_compressFile(t,n,i){e.access(t,e.F_OK,(o=>{if(o)return i();var s=r.createGzip(),a=e.createReadStream(t),c=e.createWriteStream(n);c.on("finish",(()=>{e.unlink(t,i)})),a.pipe(s).pipe(c)}))}_createLogDirIfNotExist(t){e.existsSync(t)||e.mkdirSync(t,{recursive:!0})}},cm}const pm=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;pm.writable=e=>pm(e)&&!1!==e.writable&&"function"==typeof e._write&&"object"==typeof e._writableState,pm.readable=e=>pm(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState,pm.duplex=e=>pm.writable(e)&&pm.readable(e),pm.transform=e=>pm.duplex(e)&&"function"==typeof e._transform;var gm,mm,ym=pm;!function(e){Object.defineProperty(e,"Console",{configurable:!0,enumerable:!0,get:()=>function(){if(mp)return gp;mp=1;const e=T,{LEVEL:t,MESSAGE:n}=Yd,r=yp;return gp=class extends r{constructor(t={}){super(t),this.name=t.name||"console",this.stderrLevels=this._stringArrayToSet(t.stderrLevels),this.consoleWarnLevels=this._stringArrayToSet(t.consoleWarnLevels),this.eol="string"==typeof t.eol?t.eol:e.EOL,this.forceConsole=t.forceConsole||!1,this._consoleLog=console.log.bind(console),this._consoleWarn=console.warn.bind(console),this._consoleError=console.error.bind(console),this.setMaxListeners(30)}log(e,r){return setImmediate((()=>this.emit("logged",e))),this.stderrLevels[e[t]]?(console._stderr&&!this.forceConsole?console._stderr.write(`${e[n]}${this.eol}`):this._consoleError(e[n]),void(r&&r())):this.consoleWarnLevels[e[t]]?(console._stderr&&!this.forceConsole?console._stderr.write(`${e[n]}${this.eol}`):this._consoleWarn(e[n]),void(r&&r())):(console._stdout&&!this.forceConsole?console._stdout.write(`${e[n]}${this.eol}`):this._consoleLog(e[n]),void(r&&r()))}_stringArrayToSet(e,t){if(!e)return{};if(t=t||"Cannot make set from type other than Array of string elements",!Array.isArray(e))throw new Error(t);return e.reduce(((e,n)=>{if("string"!=typeof n)throw new Error(t);return e[n]=!0,e}),{})}}}()}),Object.defineProperty(e,"File",{configurable:!0,enumerable:!0,get:()=>fm()}),Object.defineProperty(e,"Http",{configurable:!0,enumerable:!0,get:()=>function(){if(dm)return um;dm=1;const e=F,t=U,{Stream:n}=mg,r=yp,{configure:i}=Sh();return um=class extends r{constructor(e={}){super(e),this.options=e,this.name=e.name||"http",this.ssl=!!e.ssl,this.host=e.host||"localhost",this.port=e.port,this.auth=e.auth,this.path=e.path||"",this.maximumDepth=e.maximumDepth,this.agent=e.agent,this.headers=e.headers||{},this.headers["content-type"]="application/json",this.batch=e.batch||!1,this.batchInterval=e.batchInterval||5e3,this.batchCount=e.batchCount||10,this.batchOptions=[],this.batchTimeoutID=-1,this.batchCallback={},this.port||(this.port=this.ssl?443:80)}log(e,t){this._request(e,null,null,((t,n)=>{n&&200!==n.statusCode&&(t=new Error(`Invalid HTTP Status Code: ${n.statusCode}`)),t?this.emit("warn",t):this.emit("logged",e)})),t&&setImmediate(t)}query(e,t){"function"==typeof e&&(t=e,e={});const n=(e={method:"query",params:this.normalizeQuery(e)}).params.auth||null;delete e.params.auth;const r=e.params.path||null;delete e.params.path,this._request(e,n,r,((e,n,r)=>{if(n&&200!==n.statusCode&&(e=new Error(`Invalid HTTP Status Code: ${n.statusCode}`)),e)return t(e);if("string"==typeof r)try{r=JSON.parse(r)}catch(e){return t(e)}t(null,r)}))}stream(e={}){const t=new n,r=(e={method:"stream",params:e}).params.path||null;delete e.params.path;const i=e.params.auth||null;delete e.params.auth;let o="";const s=this._request(e,i,r);return t.destroy=()=>s.destroy(),s.on("data",(e=>{const n=(e=(o+e).split(/\n+/)).length-1;let r=0;for(;r<n;r++)try{t.emit("log",JSON.parse(e[r]))}catch(e){t.emit("error",e)}o=e[n]})),s.on("error",(e=>t.emit("error",e))),t}_request(e,t,n,r){e=e||{},t=t||this.auth,n=n||this.path||"",this.batch?this._doBatch(e,r,t,n):this._doRequest(e,r,t,n)}_doBatch(e,t,n,r){if(this.batchOptions.push(e),1===this.batchOptions.length){const e=this;this.batchCallback=t,this.batchTimeoutID=setTimeout((function(){e.batchTimeoutID=-1,e._doBatchRequest(e.batchCallback,n,r)}),this.batchInterval)}this.batchOptions.length===this.batchCount&&this._doBatchRequest(this.batchCallback,n,r)}_doBatchRequest(e,t,n){this.batchTimeoutID>0&&(clearTimeout(this.batchTimeoutID),this.batchTimeoutID=-1);const r=this.batchOptions.slice();this.batchOptions=[],this._doRequest(r,e,t,n)}_doRequest(n,r,o,s){const a=Object.assign({},this.headers);o&&o.bearer&&(a.Authorization=`Bearer ${o.bearer}`);const c=(this.ssl?t:e).request({...this.options,method:"POST",host:this.host,port:this.port,path:`/${s.replace(/^\//,"")}`,headers:a,auth:o&&o.username&&o.password?`${o.username}:${o.password}`:"",agent:this.agent});c.on("error",r),c.on("response",(e=>e.on("end",(()=>r(null,e))).resume()));const l=i({...this.maximumDepth&&{maximumDepth:this.maximumDepth}});c.end(Buffer.from(l(n,this.options.replacer),"utf8"))}},um}()}),Object.defineProperty(e,"Stream",{configurable:!0,enumerable:!0,get:()=>function(){if(mm)return gm;mm=1;const e=ym,{MESSAGE:t}=Yd,n=T,r=yp;return gm=class extends r{constructor(t={}){if(super(t),!t.stream||!e(t.stream))throw new Error("options.stream is required.");this._stream=t.stream,this._stream.setMaxListeners(1/0),this.isObjectMode=t.stream._writableState.objectMode,this.eol="string"==typeof t.eol?t.eol:n.EOL}log(e,n){if(setImmediate((()=>this.emit("logged",e))),this.isObjectMode)return this._stream.write(e),void(n&&n());this._stream.write(`${e[t]}${this.eol}`),n&&n()}}}()})}(vf);var vm={};const bm=pd,{configs:wm}=Yd;vm.cli=bm.levels(wm.cli),vm.npm=bm.levels(wm.npm),vm.syslog=bm.levels(wm.syslog),vm.addColors=bm.levels;var Sm={exports:{}},_m={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=l(Sp),r=l(Xp),i=l(rg),o=l(Gp),s=l(Kp),a=l(Dp()),c=l(Lp);function l(e){return e&&e.__esModule?e:{default:e}}function u(e,t,n){n=(0,o.default)(n);var i=0,a=0,{length:c}=e,l=!1;function u(e,t){!1===e&&(l=!0),!0!==l&&(e?n(e):++a!==c&&t!==r.default||n(null))}for(0===c&&n(null);i<c;i++)t(e[i],i,(0,s.default)(u))}function d(e,t,n){return(0,i.default)(e,1/0,t,n)}t.default=(0,c.default)((function(e,t,r){return((0,n.default)(e)?u:d)(e,(0,a.default)(t),r)}),3),e.exports=t.default}(_m,_m.exports);var Im=_m.exports,xm={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(t,n,r)=>e(t,r)},e.exports=t.default}(xm,xm.exports);var km=xm.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=s(Im),r=s(km),i=s(Dp()),o=s(Lp);function s(e){return e&&e.__esModule?e:{default:e}}t.default=(0,o.default)((function(e,t,o){return(0,n.default)(e,(0,r.default)((0,i.default)(t)),o)}),3),e.exports=t.default}(Sm,Sm.exports);var Em=Sm.exports,Cm=Object.prototype.toString,$m=function(e){var t,n=0;function r(){return n||(n=1,t=e.apply(this,arguments),e=null),t}return r.displayName=function(e){if("string"==typeof e.displayName&&e.constructor.name)return e.displayName;if("string"==typeof e.name&&e.name)return e.name;if("object"==typeof e&&e.constructor&&"string"==typeof e.constructor.name)return e.constructor.name;var t=e.toString(),n=Cm.call(e).slice(8,-1);return(t="Function"===n?t.substring(t.indexOf("(")+1,t.indexOf(")")):n)||"anonymous"}(e),r},Om={};!function(e){function t(e){for(var t in e)this[t]=e[t]}e.get=function(t){var n=Error.stackTraceLimit;Error.stackTraceLimit=1/0;var r={},i=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){return t},Error.captureStackTrace(r,t||e.get);var o=r.stack;return Error.prepareStackTrace=i,Error.stackTraceLimit=n,o},e.parse=function(e){if(!e.stack)return[];var t=this;return e.stack.split("\n").slice(1).map((function(e){if(e.match(/^\s*[-]{4,}$/))return t._createParsedCallSite({fileName:e,lineNumber:null,functionName:null,typeName:null,methodName:null,columnNumber:null,native:null});var n=e.match(/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/);if(n){var r=null,i=null,o=null,s=null,a=null,c="native"===n[5];if(n[1]){var l=(o=n[1]).lastIndexOf(".");if("."==o[l-1]&&l--,l>0){r=o.substr(0,l),i=o.substr(l+1);var u=r.indexOf(".Module");u>0&&(o=o.substr(u+1),r=r.substr(0,u))}s=null}i&&(s=r,a=i),"<anonymous>"===i&&(a=null,o=null);var d={fileName:n[2]||null,lineNumber:parseInt(n[3],10)||null,functionName:o,typeName:s,methodName:a,columnNumber:parseInt(n[4],10)||null,native:c};return t._createParsedCallSite(d)}})).filter((function(e){return!!e}))},["this","typeName","functionName","methodName","fileName","lineNumber","columnNumber","function","evalOrigin"].forEach((function(e){t.prototype[e]=null,t.prototype["get"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}})),["topLevel","eval","native","constructor"].forEach((function(e){t.prototype[e]=!1,t.prototype["is"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}})),e._createParsedCallSite=function(e){return new t(e)}}(Om);const{Writable:Nm}=mg,Tm=T,Am=Em,Mm=hm("winston:exception"),Pm=$m,Dm=Om,jm=class extends Nm{constructor(e){if(super({objectMode:!0}),!e)throw new Error("ExceptionStream requires a TransportStream instance.");this.handleExceptions=!0,this.transport=e}_write(e,t,n){return e.exception?this.transport.log(e,n):(n(),!0)}};var Rm=class{constructor(e){if(!e)throw new Error("Logger is required to handle exceptions");this.logger=e,this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e))return e.forEach((e=>this._addHandler(e)));this._addHandler(e)})),this.catcher||(this.catcher=this._uncaughtException.bind(this),process.on("uncaughtException",this.catcher))}unhandle(){this.catcher&&(process.removeListener("uncaughtException",this.catcher),this.catcher=!1,Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e))))}getAllInfo(e){let t=null;return e&&(t="string"==typeof e?e:e.message),{error:e,level:"error",message:[`uncaughtException: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,exception:!0,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:Tm.loadavg(),uptime:Tm.uptime()}}getTrace(e){return(e?Dm.parse(e):Dm.get()).map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleExceptions=!0;const t=new jm(e);this.handlers.set(e,t),this.logger.pipe(t)}}_uncaughtException(e){const t=this.getAllInfo(e),n=this._getExceptionHandlers();let r,i="function"==typeof this.logger.exitOnError?this.logger.exitOnError(e):this.logger.exitOnError;function o(){Mm("doExit",i),Mm("process._exiting",process._exiting),i&&!process._exiting&&(r&&clearTimeout(r),process.exit(1))}if(!n.length&&i&&(console.warn("winston: exitOnError cannot be true with no exception handlers."),console.warn("winston: not exiting process."),i=!1),!n||0===n.length)return process.nextTick(o);Am(n,((e,t)=>{const n=Pm(t),r=e.transport||e;function i(e){return()=>{Mm(e),n()}}r._ending=!0,r.once("finish",i("finished")),r.once("error",i("error"))}),(()=>i&&o())),this.logger.log(t),i&&(r=setTimeout(o,3e3))}_getExceptionHandlers(){return this.logger.transports.filter((e=>(e.transport||e).handleExceptions))}};const{Writable:Lm}=mg,Fm=T,Um=Em,Wm=hm("winston:rejection"),Bm=$m,Gm=Om,Vm=class extends Lm{constructor(e){if(super({objectMode:!0}),!e)throw new Error("RejectionStream requires a TransportStream instance.");this.handleRejections=!0,this.transport=e}_write(e,t,n){return e.rejection?this.transport.log(e,n):(n(),!0)}};var Ym,Hm,zm,qm,Km=class{constructor(e){if(!e)throw new Error("Logger is required to handle rejections");this.logger=e,this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e))return e.forEach((e=>this._addHandler(e)));this._addHandler(e)})),this.catcher||(this.catcher=this._unhandledRejection.bind(this),process.on("unhandledRejection",this.catcher))}unhandle(){this.catcher&&(process.removeListener("unhandledRejection",this.catcher),this.catcher=!1,Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e))))}getAllInfo(e){let t=null;return e&&(t="string"==typeof e?e:e.message),{error:e,level:"error",message:[`unhandledRejection: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,rejection:!0,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:Fm.loadavg(),uptime:Fm.uptime()}}getTrace(e){return(e?Gm.parse(e):Gm.get()).map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleRejections=!0;const t=new Vm(e);this.handlers.set(e,t),this.logger.pipe(t)}}_unhandledRejection(e){const t=this.getAllInfo(e),n=this._getRejectionHandlers();let r,i="function"==typeof this.logger.exitOnError?this.logger.exitOnError(e):this.logger.exitOnError;function o(){Wm("doExit",i),Wm("process._exiting",process._exiting),i&&!process._exiting&&(r&&clearTimeout(r),process.exit(1))}if(!n.length&&i&&(console.warn("winston: exitOnError cannot be true with no rejection handlers."),console.warn("winston: not exiting process."),i=!1),!n||0===n.length)return process.nextTick(o);Um(n,((e,t)=>{const n=Bm(t),r=e.transport||e;function i(e){return()=>{Wm(e),n()}}r._ending=!0,r.once("finish",i("finished")),r.once("error",i("error"))}),(()=>i&&o())),this.logger.log(t),i&&(r=setTimeout(o,3e3))}_getRejectionHandlers(){return this.logger.transports.filter((e=>(e.transport||e).handleRejections))}};function Jm(){if(qm)return zm;qm=1;const{Stream:e,Transform:t}=mg,n=Em,{LEVEL:r,SPLAT:i}=Yd,o=ym,s=Rm,a=Km,c=pp,l=(Hm||(Hm=1,Ym=class{constructor(e){const t=Jm();if("object"!=typeof e||Array.isArray(e)||!(e instanceof t))throw new Error("Logger is required for profiling");this.logger=e,this.start=Date.now()}done(...e){"function"==typeof e[e.length-1]&&(console.warn("Callback function no longer supported as of winston@3.0.0"),e.pop());const t="object"==typeof e[e.length-1]?e.pop():{};return t.level=t.level||"info",t.durationMs=Date.now()-this.start,this.logger.write(t)}}),Ym),{warn:u}=df,d=vm,h=/%[scdjifoO%]/g;class f extends t{constructor(e){super({objectMode:!0}),this.configure(e)}child(e){const t=this;return Object.create(t,{write:{value:function(n){const r=Object.assign({},e,n);n instanceof Error&&(r.stack=n.stack,r.message=n.message),t.write(r)}}})}configure({silent:e,format:t,defaultMeta:n,levels:r,level:i="info",exitOnError:o=!0,transports:c,colors:l,emitErrs:u,formatters:h,padLevels:f,rewriters:p,stripColors:g,exceptionHandlers:m,rejectionHandlers:y}={}){if(this.transports.length&&this.clear(),this.silent=e,this.format=t||this.format||_h()(),this.defaultMeta=n||null,this.levels=r||this.levels||d.npm.levels,this.level=i,this.exceptions&&this.exceptions.unhandle(),this.rejections&&this.rejections.unhandle(),this.exceptions=new s(this),this.rejections=new a(this),this.profilers={},this.exitOnError=o,c&&(c=Array.isArray(c)?c:[c]).forEach((e=>this.add(e))),l||u||h||f||p||g)throw new Error(["{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.","Use a custom winston.format(function) instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"));m&&this.exceptions.handle(m),y&&this.rejections.handle(y)}isLevelEnabled(e){const t=p(this.levels,e);if(null===t)return!1;const n=p(this.levels,this.level);return null!==n&&(this.transports&&0!==this.transports.length?-1!==this.transports.findIndex((e=>{let r=p(this.levels,e.level);return null===r&&(r=n),r>=t})):n>=t)}log(e,t,...n){if(1===arguments.length)return e[r]=e.level,this._addDefaultMeta(e),this.write(e),this;if(2===arguments.length)return t&&"object"==typeof t?(t[r]=t.level=e,this._addDefaultMeta(t),this.write(t),this):(t={[r]:e,level:e,message:t},this._addDefaultMeta(t),this.write(t),this);const[o]=n;if("object"==typeof o&&null!==o&&!(t&&t.match&&t.match(h))){const s=Object.assign({},this.defaultMeta,o,{[r]:e,[i]:n,level:e,message:t});return o.message&&(s.message=`${s.message} ${o.message}`),o.stack&&(s.stack=o.stack),o.cause&&(s.cause=o.cause),this.write(s),this}return this.write(Object.assign({},this.defaultMeta,{[r]:e,[i]:n,level:e,message:t})),this}_transform(e,t,n){if(this.silent)return n();e[r]||(e[r]=e.level),this.levels[e[r]]||0===this.levels[e[r]]||console.error("[winston] Unknown logger level: %s",e[r]),this._readableState.pipes||console.error("[winston] Attempt to write logs with no transports, which can increase memory usage: %j",e);try{this.push(this.format.transform(e,this.format.options))}finally{this._writableState.sync=!1,n()}}_final(e){const t=this.transports.slice();n(t,((e,t)=>{if(!e||e.finished)return setImmediate(t);e.once("finish",t),e.end()}),e)}add(e){const t=!o(e)||e.log.length>2?new c({transport:e}):e;if(!t._writableState||!t._writableState.objectMode)throw new Error("Transports must WritableStreams in objectMode. Set { objectMode: true }.");return this._onEvent("error",t),this._onEvent("warn",t),this.pipe(t),e.handleExceptions&&this.exceptions.handle(),e.handleRejections&&this.rejections.handle(),this}remove(e){if(!e)return this;let t=e;return(!o(e)||e.log.length>2)&&(t=this.transports.filter((t=>t.transport===e))[0]),t&&this.unpipe(t),this}clear(){return this.unpipe(),this}close(){return this.exceptions.unhandle(),this.rejections.unhandle(),this.clear(),this.emit("close"),this}setLevels(){u.deprecated("setLevels")}query(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};const r={},i=Object.assign({},e.query||{});n(this.transports.filter((e=>!!e.query)),(function(t,n){!function(t,n){e.query&&"function"==typeof t.formatQuery&&(e.query=t.formatQuery(i)),t.query(e,((r,i)=>{if(r)return n(r);"function"==typeof t.formatResults&&(i=t.formatResults(i,e.format)),n(null,i)}))}(t,((e,i)=>{n&&((i=e||i)&&(r[t.name]=i),n()),n=null}))}),(()=>t(null,r)))}stream(t={}){const n=new e,r=[];return n._streams=r,n.destroy=()=>{let e=r.length;for(;e--;)r[e].destroy()},this.transports.filter((e=>!!e.stream)).forEach((e=>{const i=e.stream(t);i&&(r.push(i),i.on("log",(t=>{t.transport=t.transport||[],t.transport.push(e.name),n.emit("log",t)})),i.on("error",(t=>{t.transport=t.transport||[],t.transport.push(e.name),n.emit("error",t)})))})),n}startTimer(){return new l(this)}profile(e,...t){const n=Date.now();if(this.profilers[e]){const r=this.profilers[e];delete this.profilers[e],"function"==typeof t[t.length-2]&&(console.warn("Callback function no longer supported as of winston@3.0.0"),t.pop());const i="object"==typeof t[t.length-1]?t.pop():{};return i.level=i.level||"info",i.durationMs=n-r,i.message=i.message||e,this.write(i)}return this.profilers[e]=n,this}handleExceptions(...e){console.warn("Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()"),this.exceptions.handle(...e)}unhandleExceptions(...e){console.warn("Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()"),this.exceptions.unhandle(...e)}cli(){throw new Error(["Logger.cli() was removed in winston@3.0.0","Use a custom winston.formats.cli() instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"))}_onEvent(e,t){t["__winston"+e]||(t["__winston"+e]=function(n){"error"!==e||this.transports.includes(t)||this.add(t),this.emit(e,n,t)}.bind(this),t.on(e,t["__winston"+e]))}_addDefaultMeta(e){this.defaultMeta&&Object.assign(e,this.defaultMeta)}}function p(e,t){const n=e[t];return n||0===n?n:null}return Object.defineProperty(f.prototype,"transports",{configurable:!1,enumerable:!0,get(){const{pipes:e}=this._readableState;return Array.isArray(e)?e:[e].filter(Boolean)}}),zm=f}const{LEVEL:Zm}=Yd,Xm=vm,Qm=Jm(),ey=hm("winston:create-logger");var ty=function(e={}){e.levels=e.levels||Xm.npm.levels;class t extends Qm{constructor(e){super(e)}}const n=new t(e);return Object.keys(e.levels).forEach((function(e){ey('Define prototype method for "%s"',e),"log"!==e?(t.prototype[e]=function(...t){const r=this||n;if(1===t.length){const[i]=t,o=i&&i.message&&i||{message:i};return o.level=o[Zm]=e,r._addDefaultMeta(o),r.write(o),this||n}return 0===t.length?(r.log(e,""),r):r.log(e,...t)},t.prototype[function(e){return"is"+e.charAt(0).toUpperCase()+e.slice(1)+"Enabled"}(e)]=function(){return(this||n).isLevelEnabled(e)}):console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.')})),n};const ny=ty;var ry=class{constructor(e={}){this.loggers=new Map,this.options=e}add(e,t){if(!this.loggers.has(e)){const n=(t=Object.assign({},t||this.options)).transports||this.options.transports;t.transports=n?Array.isArray(n)?n.slice():[n]:[];const r=ny(t);r.on("close",(()=>this._delete(e))),this.loggers.set(e,r)}return this.loggers.get(e)}get(e,t){return this.add(e,t)}has(e){return!!this.loggers.has(e)}close(e){if(e)return this._removeLogger(e);this.loggers.forEach(((e,t)=>this._removeLogger(t)))}_removeLogger(e){this.loggers.has(e)&&(this.loggers.get(e).close(),this._delete(e))}_delete(e){this.loggers.delete(e)}};!function(e){const t=pd,{warn:n}=df;e.version="3.17.0",e.transports=vf,e.config=vm,e.addColors=t.levels,e.format=t.format,e.createLogger=ty,e.Logger=Jm(),e.ExceptionHandler=Rm,e.RejectionHandler=Km,e.Container=ry,e.Transport=yp,e.loggers=new e.Container;const r=e.createLogger();Object.keys(e.config.npm.levels).concat(["log","query","stream","add","remove","clear","profile","startTimer","handleExceptions","unhandleExceptions","handleRejections","unhandleRejections","configure","child"]).forEach((t=>e[t]=(...e)=>r[t](...e))),Object.defineProperty(e,"level",{get:()=>r.level,set(e){r.level=e}}),Object.defineProperty(e,"exceptions",{get:()=>r.exceptions}),Object.defineProperty(e,"rejections",{get:()=>r.rejections}),["exitOnError"].forEach((t=>{Object.defineProperty(e,t,{get:()=>r[t],set(e){r[t]=e}})})),Object.defineProperty(e,"default",{get:()=>({exceptionHandlers:r.exceptionHandlers,rejectionHandlers:r.rejectionHandlers,transports:r.transports})}),n.deprecated(e,"setLevels"),n.forFunctions(e,"useFormat",["cli"]),n.forProperties(e,"useFormat",["padLevels","stripColors"]),n.forFunctions(e,"deprecated",["addRewriter","addFilter","clone","extend"]),n.forProperties(e,"deprecated",["emitErrs","levelLength"])}(fd);var iy=Ku(fd),oy={exports:{}};!function(e,t){var n=u;function r(e,t){return function(e,t){var r;if(void 0===(r="passthrough"!==t.algorithm?n.createHash(t.algorithm):new l).write&&(r.write=r.update,r.end=r.update),c(t,r).dispatch(e),r.update||r.end(""),r.digest)return r.digest("buffer"===t.encoding?void 0:t.encoding);var i=r.read();return"buffer"===t.encoding?i:i.toString(t.encoding)}(e,t=s(e,t))}(t=oy.exports=r).sha1=function(e){return r(e)},t.keys=function(e){return r(e,{excludeValues:!0,algorithm:"sha1",encoding:"hex"})},t.MD5=function(e){return r(e,{algorithm:"md5",encoding:"hex"})},t.keysMD5=function(e){return r(e,{algorithm:"md5",encoding:"hex",excludeValues:!0})};var i=n.getHashes?n.getHashes().slice():["sha1","md5"];i.push("passthrough");var o=["buffer","hex","binary","base64"];function s(e,t){t=t||{};var n={};if(n.algorithm=t.algorithm||"sha1",n.encoding=t.encoding||"hex",n.excludeValues=!!t.excludeValues,n.algorithm=n.algorithm.toLowerCase(),n.encoding=n.encoding.toLowerCase(),n.ignoreUnknown=!0===t.ignoreUnknown,n.respectType=!1!==t.respectType,n.respectFunctionNames=!1!==t.respectFunctionNames,n.respectFunctionProperties=!1!==t.respectFunctionProperties,n.unorderedArrays=!0===t.unorderedArrays,n.unorderedSets=!1!==t.unorderedSets,n.unorderedObjects=!1!==t.unorderedObjects,n.replacer=t.replacer||void 0,n.excludeKeys=t.excludeKeys||void 0,void 0===e)throw new Error("Object argument required.");for(var r=0;r<i.length;++r)i[r].toLowerCase()===n.algorithm.toLowerCase()&&(n.algorithm=i[r]);if(-1===i.indexOf(n.algorithm))throw new Error('Algorithm "'+n.algorithm+'" not supported. supported values: '+i.join(", "));if(-1===o.indexOf(n.encoding)&&"passthrough"!==n.algorithm)throw new Error('Encoding "'+n.encoding+'" not supported. supported values: '+o.join(", "));return n}function a(e){return"function"==typeof e&&null!=/^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i.exec(Function.prototype.toString.call(e))}function c(e,t,n){n=n||[];var r=function(e){return t.update?t.update(e,"utf8"):t.write(e,"utf8")};return{dispatch:function(t){e.replacer&&(t=e.replacer(t));var n=typeof t;return null===t&&(n="null"),this["_"+n](t)},_object:function(t){var i,o=Object.prototype.toString.call(t),s=/\[object (.*)\]/i.exec(o);if(s=(s=s?s[1]:"unknown:["+o+"]").toLowerCase(),(i=n.indexOf(t))>=0)return this.dispatch("[CIRCULAR:"+i+"]");if(n.push(t),"undefined"!=typeof Buffer&&Buffer.isBuffer&&Buffer.isBuffer(t))return r("buffer:"),r(t);if("object"===s||"function"===s||"asyncfunction"===s){var c=Object.keys(t);e.unorderedObjects&&(c=c.sort()),!1===e.respectType||a(t)||c.splice(0,0,"prototype","__proto__","constructor"),e.excludeKeys&&(c=c.filter((function(t){return!e.excludeKeys(t)}))),r("object:"+c.length+":");var l=this;return c.forEach((function(n){l.dispatch(n),r(":"),e.excludeValues||l.dispatch(t[n]),r(",")}))}if(!this["_"+s]){if(e.ignoreUnknown)return r("["+s+"]");throw new Error('Unknown object type "'+s+'"')}this["_"+s](t)},_array:function(t,i){i=void 0!==i?i:!1!==e.unorderedArrays;var o=this;if(r("array:"+t.length+":"),!i||t.length<=1)return t.forEach((function(e){return o.dispatch(e)}));var s=[],a=t.map((function(t){var r=new l,i=n.slice();return c(e,r,i).dispatch(t),s=s.concat(i.slice(n.length)),r.read().toString()}));return n=n.concat(s),a.sort(),this._array(a,!1)},_date:function(e){return r("date:"+e.toJSON())},_symbol:function(e){return r("symbol:"+e.toString())},_error:function(e){return r("error:"+e.toString())},_boolean:function(e){return r("bool:"+e.toString())},_string:function(e){r("string:"+e.length+":"),r(e.toString())},_function:function(t){r("fn:"),a(t)?this.dispatch("[native]"):this.dispatch(t.toString()),!1!==e.respectFunctionNames&&this.dispatch("function-name:"+String(t.name)),e.respectFunctionProperties&&this._object(t)},_number:function(e){return r("number:"+e.toString())},_xml:function(e){return r("xml:"+e.toString())},_null:function(){return r("Null")},_undefined:function(){return r("Undefined")},_regexp:function(e){return r("regex:"+e.toString())},_uint8array:function(e){return r("uint8array:"),this.dispatch(Array.prototype.slice.call(e))},_uint8clampedarray:function(e){return r("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(e))},_int8array:function(e){return r("int8array:"),this.dispatch(Array.prototype.slice.call(e))},_uint16array:function(e){return r("uint16array:"),this.dispatch(Array.prototype.slice.call(e))},_int16array:function(e){return r("int16array:"),this.dispatch(Array.prototype.slice.call(e))},_uint32array:function(e){return r("uint32array:"),this.dispatch(Array.prototype.slice.call(e))},_int32array:function(e){return r("int32array:"),this.dispatch(Array.prototype.slice.call(e))},_float32array:function(e){return r("float32array:"),this.dispatch(Array.prototype.slice.call(e))},_float64array:function(e){return r("float64array:"),this.dispatch(Array.prototype.slice.call(e))},_arraybuffer:function(e){return r("arraybuffer:"),this.dispatch(new Uint8Array(e))},_url:function(e){return r("url:"+e.toString())},_map:function(t){r("map:");var n=Array.from(t);return this._array(n,!1!==e.unorderedSets)},_set:function(t){r("set:");var n=Array.from(t);return this._array(n,!1!==e.unorderedSets)},_file:function(e){return r("file:"),this.dispatch([e.name,e.size,e.type,e.lastModfied])},_blob:function(){if(e.ignoreUnknown)return r("[blob]");throw Error('Hashing Blob objects is currently not supported\n(see https://github.com/puleos/object-hash/issues/26)\nUse "options.replacer" or "options.ignoreUnknown"\n')},_domwindow:function(){return r("domwindow")},_bigint:function(e){return r("bigint:"+e.toString())},_process:function(){return r("process")},_timer:function(){return r("timer")},_pipe:function(){return r("pipe")},_tcp:function(){return r("tcp")},_udp:function(){return r("udp")},_tty:function(){return r("tty")},_statwatcher:function(){return r("statwatcher")},_securecontext:function(){return r("securecontext")},_connection:function(){return r("connection")},_zlib:function(){return r("zlib")},_context:function(){return r("context")},_nodescript:function(){return r("nodescript")},_httpparser:function(){return r("httpparser")},_dataview:function(){return r("dataview")},_signal:function(){return r("signal")},_fsevent:function(){return r("fsevent")},_tlswrap:function(){return r("tlswrap")}}}function l(){return{buf:"",write:function(e){this.buf+=e},end:function(e){this.buf+=e},read:function(){return this.buf}}}t.writeToStream=function(e,t,n){return void 0===n&&(n=t,t={}),c(t=s(e,t),n).dispatch(e)}}(0,oy.exports);var sy,ay,cy,ly={exports:{}};function uy(){return sy||(sy=1,(e=ly).exports=function(){var t,n;function r(){return t.apply(null,arguments)}function i(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function a(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return!1;return!0}function c(e){return void 0===e}function l(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var n,r=[],i=e.length;for(n=0;n<i;++n)r.push(t(e[n],n));return r}function h(e,t){for(var n in t)s(t,n)&&(e[n]=t[n]);return s(t,"toString")&&(e.toString=t.toString),s(t,"valueOf")&&(e.valueOf=t.valueOf),e}function f(e,t,n,r){return Dt(e,t,n,r,!0).utc()}function p(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function g(e){var t=null,r=!1,i=e._d&&!isNaN(e._d.getTime());return i&&(t=p(e),r=n.call(t.parsedDateParts,(function(e){return null!=e})),i=t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&r),e._strict&&(i=i&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour)),null!=Object.isFrozen&&Object.isFrozen(e)?i:(e._isValid=i,e._isValid)}function m(e){var t=f(NaN);return null!=e?h(p(t),e):p(t).userInvalidated=!0,t}n=Array.prototype.some?Array.prototype.some:function(e){var t,n=Object(this),r=n.length>>>0;for(t=0;t<r;t++)if(t in n&&e.call(this,n[t],t,n))return!0;return!1};var y=r.momentProperties=[],v=!1;function b(e,t){var n,r,i,o=y.length;if(c(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),c(t._i)||(e._i=t._i),c(t._f)||(e._f=t._f),c(t._l)||(e._l=t._l),c(t._strict)||(e._strict=t._strict),c(t._tzm)||(e._tzm=t._tzm),c(t._isUTC)||(e._isUTC=t._isUTC),c(t._offset)||(e._offset=t._offset),c(t._pf)||(e._pf=p(t)),c(t._locale)||(e._locale=t._locale),o>0)for(n=0;n<o;n++)c(i=t[r=y[n]])||(e[r]=i);return e}function w(e){b(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function S(e){return e instanceof w||null!=e&&null!=e._isAMomentObject}function _(e){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function I(e,t){var n=!0;return h((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,e),n){var i,o,a,c=[],l=arguments.length;for(o=0;o<l;o++){if(i="","object"==typeof arguments[o]){for(a in i+="\n["+o+"] ",arguments[0])s(arguments[0],a)&&(i+=a+": "+arguments[0][a]+", ");i=i.slice(0,-2)}else i=arguments[o];c.push(i)}_(e+"\nArguments: "+Array.prototype.slice.call(c).join("")+"\n"+(new Error).stack),n=!1}return t.apply(this,arguments)}),t)}var x,k={};function E(e,t){null!=r.deprecationHandler&&r.deprecationHandler(e,t),k[e]||(_(t),k[e]=!0)}function C(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function $(e,t){var n,r=h({},e);for(n in t)s(t,n)&&(o(e[n])&&o(t[n])?(r[n]={},h(r[n],e[n]),h(r[n],t[n])):null!=t[n]?r[n]=t[n]:delete r[n]);for(n in e)s(e,n)&&!s(t,n)&&o(e[n])&&(r[n]=h({},r[n]));return r}function O(e){null!=e&&this.set(e)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,x=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)s(e,t)&&n.push(t);return n};function N(e,t,n){var r=""+Math.abs(e),i=t-r.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var T=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,A=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,M={},P={};function D(e,t,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),e&&(P[e]=i),t&&(P[t[0]]=function(){return N(i.apply(this,arguments),t[1],t[2])}),n&&(P[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function j(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function R(e,t){return e.isValid()?(t=L(t,e.localeData()),M[t]=M[t]||function(e){var t,n,r=e.match(T);for(t=0,n=r.length;t<n;t++)P[r[t]]?r[t]=P[r[t]]:r[t]=j(r[t]);return function(t){var i,o="";for(i=0;i<n;i++)o+=C(r[i])?r[i].call(t,e):r[i];return o}}(t),M[t](e)):e.localeData().invalidDate()}function L(e,t){var n=5;function r(e){return t.longDateFormat(e)||e}for(A.lastIndex=0;n>=0&&A.test(e);)e=e.replace(A,r),A.lastIndex=0,n-=1;return e}var F={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function U(e){return"string"==typeof e?F[e]||F[e.toLowerCase()]:void 0}function W(e){var t,n,r={};for(n in e)s(e,n)&&(t=U(n))&&(r[t]=e[n]);return r}var B={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};var G,V=/\d/,Y=/\d\d/,H=/\d{3}/,z=/\d{4}/,q=/[+-]?\d{6}/,K=/\d\d?/,J=/\d\d\d\d?/,Z=/\d\d\d\d\d\d?/,X=/\d{1,3}/,Q=/\d{1,4}/,ee=/[+-]?\d{1,6}/,te=/\d+/,ne=/[+-]?\d+/,re=/Z|[+-]\d\d:?\d\d/gi,ie=/Z|[+-]\d\d(?::?\d\d)?/gi,oe=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,se=/^[1-9]\d?/,ae=/^([1-9]\d|\d)/;function ce(e,t,n){G[e]=C(t)?t:function(e){return e&&n?n:t}}function le(e,t){return s(G,e)?G[e](t._strict,t._locale):new RegExp(function(e){return ue(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,n,r,i){return t||n||r||i})))}(e))}function ue(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function de(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function he(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=de(t)),n}G={};var fe={};function pe(e,t){var n,r,i=t;for("string"==typeof e&&(e=[e]),l(t)&&(i=function(e,n){n[t]=he(e)}),r=e.length,n=0;n<r;n++)fe[e[n]]=i}function ge(e,t){pe(e,(function(e,n,r,i){r._w=r._w||{},t(e,r._w,r,i)}))}function me(e,t,n){null!=t&&s(fe,e)&&fe[e](t,n._a,n,e)}function ye(e){return e%4==0&&e%100!=0||e%400==0}var ve=0,be=1,we=2,Se=3,_e=4,Ie=5,xe=6,ke=7,Ee=8;function Ce(e){return ye(e)?366:365}D("Y",0,0,(function(){var e=this.year();return e<=9999?N(e,4):"+"+e})),D(0,["YY",2],0,(function(){return this.year()%100})),D(0,["YYYY",4],0,"year"),D(0,["YYYYY",5],0,"year"),D(0,["YYYYYY",6,!0],0,"year"),ce("Y",ne),ce("YY",K,Y),ce("YYYY",Q,z),ce("YYYYY",ee,q),ce("YYYYYY",ee,q),pe(["YYYYY","YYYYYY"],ve),pe("YYYY",(function(e,t){t[ve]=2===e.length?r.parseTwoDigitYear(e):he(e)})),pe("YY",(function(e,t){t[ve]=r.parseTwoDigitYear(e)})),pe("Y",(function(e,t){t[ve]=parseInt(e,10)})),r.parseTwoDigitYear=function(e){return he(e)+(he(e)>68?1900:2e3)};var $e,Oe=Ne("FullYear",!0);function Ne(e,t){return function(n){return null!=n?(Ae(this,e,n),r.updateOffset(this,t),this):Te(this,e)}}function Te(e,t){if(!e.isValid())return NaN;var n=e._d,r=e._isUTC;switch(t){case"Milliseconds":return r?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return r?n.getUTCSeconds():n.getSeconds();case"Minutes":return r?n.getUTCMinutes():n.getMinutes();case"Hours":return r?n.getUTCHours():n.getHours();case"Date":return r?n.getUTCDate():n.getDate();case"Day":return r?n.getUTCDay():n.getDay();case"Month":return r?n.getUTCMonth():n.getMonth();case"FullYear":return r?n.getUTCFullYear():n.getFullYear();default:return NaN}}function Ae(e,t,n){var r,i,o,s,a;if(e.isValid()&&!isNaN(n)){switch(r=e._d,i=e._isUTC,t){case"Milliseconds":return void(i?r.setUTCMilliseconds(n):r.setMilliseconds(n));case"Seconds":return void(i?r.setUTCSeconds(n):r.setSeconds(n));case"Minutes":return void(i?r.setUTCMinutes(n):r.setMinutes(n));case"Hours":return void(i?r.setUTCHours(n):r.setHours(n));case"Date":return void(i?r.setUTCDate(n):r.setDate(n));case"FullYear":break;default:return}o=n,s=e.month(),a=29!==(a=e.date())||1!==s||ye(o)?a:28,i?r.setUTCFullYear(o,s,a):r.setFullYear(o,s,a)}}function Me(e,t){if(isNaN(e)||isNaN(t))return NaN;var n=function(e,t){return(e%t+t)%t}(t,12);return e+=(t-n)/12,1===n?ye(e)?29:28:31-n%7%2}$e=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},D("M",["MM",2],"Mo",(function(){return this.month()+1})),D("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),D("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),ce("M",K,se),ce("MM",K,Y),ce("MMM",(function(e,t){return t.monthsShortRegex(e)})),ce("MMMM",(function(e,t){return t.monthsRegex(e)})),pe(["M","MM"],(function(e,t){t[be]=he(e)-1})),pe(["MMM","MMMM"],(function(e,t,n,r){var i=n._locale.monthsParse(e,r,n._strict);null!=i?t[be]=i:p(n).invalidMonth=e}));var Pe="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),De="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),je=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Re=oe,Le=oe;function Fe(e,t,n){var r,i,o,s=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)o=f([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(o,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(o,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=$e.call(this._shortMonthsParse,s))?i:null:-1!==(i=$e.call(this._longMonthsParse,s))?i:null:"MMM"===t?-1!==(i=$e.call(this._shortMonthsParse,s))||-1!==(i=$e.call(this._longMonthsParse,s))?i:null:-1!==(i=$e.call(this._longMonthsParse,s))||-1!==(i=$e.call(this._shortMonthsParse,s))?i:null}function Ue(e,t){if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=he(t);else if(!l(t=e.localeData().monthsParse(t)))return e;var n=t,r=e.date();return r=r<29?r:Math.min(r,Me(e.year(),n)),e._isUTC?e._d.setUTCMonth(n,r):e._d.setMonth(n,r),e}function We(e){return null!=e?(Ue(this,e),r.updateOffset(this,!0),this):Te(this,"Month")}function Be(){function e(e,t){return t.length-e.length}var t,n,r,i,o=[],s=[],a=[];for(t=0;t<12;t++)n=f([2e3,t]),r=ue(this.monthsShort(n,"")),i=ue(this.months(n,"")),o.push(r),s.push(i),a.push(i),a.push(r);o.sort(e),s.sort(e),a.sort(e),this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Ge(e,t,n,r,i,o,s){var a;return e<100&&e>=0?(a=new Date(e+400,t,n,r,i,o,s),isFinite(a.getFullYear())&&a.setFullYear(e)):a=new Date(e,t,n,r,i,o,s),a}function Ve(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Ye(e,t,n){var r=7+t-n;return-(7+Ve(e,0,r).getUTCDay()-t)%7+r-1}function He(e,t,n,r,i){var o,s,a=1+7*(t-1)+(7+n-r)%7+Ye(e,r,i);return a<=0?s=Ce(o=e-1)+a:a>Ce(e)?(o=e+1,s=a-Ce(e)):(o=e,s=a),{year:o,dayOfYear:s}}function ze(e,t,n){var r,i,o=Ye(e.year(),t,n),s=Math.floor((e.dayOfYear()-o-1)/7)+1;return s<1?r=s+qe(i=e.year()-1,t,n):s>qe(e.year(),t,n)?(r=s-qe(e.year(),t,n),i=e.year()+1):(i=e.year(),r=s),{week:r,year:i}}function qe(e,t,n){var r=Ye(e,t,n),i=Ye(e+1,t,n);return(Ce(e)-r+i)/7}D("w",["ww",2],"wo","week"),D("W",["WW",2],"Wo","isoWeek"),ce("w",K,se),ce("ww",K,Y),ce("W",K,se),ce("WW",K,Y),ge(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=he(e)}));function Ke(e,t){return e.slice(t,7).concat(e.slice(0,t))}D("d",0,"do","day"),D("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),D("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),D("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),D("e",0,0,"weekday"),D("E",0,0,"isoWeekday"),ce("d",K),ce("e",K),ce("E",K),ce("dd",(function(e,t){return t.weekdaysMinRegex(e)})),ce("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),ce("dddd",(function(e,t){return t.weekdaysRegex(e)})),ge(["dd","ddd","dddd"],(function(e,t,n,r){var i=n._locale.weekdaysParse(e,r,n._strict);null!=i?t.d=i:p(n).invalidWeekday=e})),ge(["d","e","E"],(function(e,t,n,r){t[r]=he(e)}));var Je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Xe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Qe=oe,et=oe,tt=oe;function nt(e,t,n){var r,i,o,s=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)o=f([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(o,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=$e.call(this._weekdaysParse,s))?i:null:"ddd"===t?-1!==(i=$e.call(this._shortWeekdaysParse,s))?i:null:-1!==(i=$e.call(this._minWeekdaysParse,s))?i:null:"dddd"===t?-1!==(i=$e.call(this._weekdaysParse,s))||-1!==(i=$e.call(this._shortWeekdaysParse,s))||-1!==(i=$e.call(this._minWeekdaysParse,s))?i:null:"ddd"===t?-1!==(i=$e.call(this._shortWeekdaysParse,s))||-1!==(i=$e.call(this._weekdaysParse,s))||-1!==(i=$e.call(this._minWeekdaysParse,s))?i:null:-1!==(i=$e.call(this._minWeekdaysParse,s))||-1!==(i=$e.call(this._weekdaysParse,s))||-1!==(i=$e.call(this._shortWeekdaysParse,s))?i:null}function rt(){function e(e,t){return t.length-e.length}var t,n,r,i,o,s=[],a=[],c=[],l=[];for(t=0;t<7;t++)n=f([2e3,1]).day(t),r=ue(this.weekdaysMin(n,"")),i=ue(this.weekdaysShort(n,"")),o=ue(this.weekdays(n,"")),s.push(r),a.push(i),c.push(o),l.push(r),l.push(i),l.push(o);s.sort(e),a.sort(e),c.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function it(){return this.hours()%12||12}function ot(e,t){D(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function st(e,t){return t._meridiemParse}D("H",["HH",2],0,"hour"),D("h",["hh",2],0,it),D("k",["kk",2],0,(function(){return this.hours()||24})),D("hmm",0,0,(function(){return""+it.apply(this)+N(this.minutes(),2)})),D("hmmss",0,0,(function(){return""+it.apply(this)+N(this.minutes(),2)+N(this.seconds(),2)})),D("Hmm",0,0,(function(){return""+this.hours()+N(this.minutes(),2)})),D("Hmmss",0,0,(function(){return""+this.hours()+N(this.minutes(),2)+N(this.seconds(),2)})),ot("a",!0),ot("A",!1),ce("a",st),ce("A",st),ce("H",K,ae),ce("h",K,se),ce("k",K,se),ce("HH",K,Y),ce("hh",K,Y),ce("kk",K,Y),ce("hmm",J),ce("hmmss",Z),ce("Hmm",J),ce("Hmmss",Z),pe(["H","HH"],Se),pe(["k","kk"],(function(e,t){var n=he(e);t[Se]=24===n?0:n})),pe(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),pe(["h","hh"],(function(e,t,n){t[Se]=he(e),p(n).bigHour=!0})),pe("hmm",(function(e,t,n){var r=e.length-2;t[Se]=he(e.substr(0,r)),t[_e]=he(e.substr(r)),p(n).bigHour=!0})),pe("hmmss",(function(e,t,n){var r=e.length-4,i=e.length-2;t[Se]=he(e.substr(0,r)),t[_e]=he(e.substr(r,2)),t[Ie]=he(e.substr(i)),p(n).bigHour=!0})),pe("Hmm",(function(e,t){var n=e.length-2;t[Se]=he(e.substr(0,n)),t[_e]=he(e.substr(n))})),pe("Hmmss",(function(e,t){var n=e.length-4,r=e.length-2;t[Se]=he(e.substr(0,n)),t[_e]=he(e.substr(n,2)),t[Ie]=he(e.substr(r))}));var at=Ne("Hours",!0);var ct,lt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Pe,monthsShort:De,week:{dow:0,doy:6},weekdays:Je,weekdaysMin:Xe,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},ut={},dt={};function ht(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n<r;n+=1)if(e[n]!==t[n])return n;return r}function ft(e){return e?e.toLowerCase().replace("_","-"):e}function pt(t){var n=null;if(void 0===ut[t]&&e&&e.exports&&function(e){return!(!e||!e.match("^[^/\\\\]*$"))}(t))try{n=ct._abbr,function(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}("./locale/"+t),gt(n)}catch(e){ut[t]=null}return ut[t]}function gt(e,t){var n;return e&&((n=c(t)?yt(e):mt(e,t))?ct=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ct._abbr}function mt(e,t){if(null!==t){var n,r=lt;if(t.abbr=e,null!=ut[e])E("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=ut[e]._config;else if(null!=t.parentLocale)if(null!=ut[t.parentLocale])r=ut[t.parentLocale]._config;else{if(null==(n=pt(t.parentLocale)))return dt[t.parentLocale]||(dt[t.parentLocale]=[]),dt[t.parentLocale].push({name:e,config:t}),null;r=n._config}return ut[e]=new O($(r,t)),dt[e]&&dt[e].forEach((function(e){mt(e.name,e.config)})),gt(e),ut[e]}return delete ut[e],null}function yt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ct;if(!i(e)){if(t=pt(e))return t;e=[e]}return function(e){for(var t,n,r,i,o=0;o<e.length;){for(t=(i=ft(e[o]).split("-")).length,n=(n=ft(e[o+1]))?n.split("-"):null;t>0;){if(r=pt(i.slice(0,t).join("-")))return r;if(n&&n.length>=t&&ht(i,n)>=t-1)break;t--}o++}return ct}(e)}function vt(e){var t,n=e._a;return n&&-2===p(e).overflow&&(t=n[be]<0||n[be]>11?be:n[we]<1||n[we]>Me(n[ve],n[be])?we:n[Se]<0||n[Se]>24||24===n[Se]&&(0!==n[_e]||0!==n[Ie]||0!==n[xe])?Se:n[_e]<0||n[_e]>59?_e:n[Ie]<0||n[Ie]>59?Ie:n[xe]<0||n[xe]>999?xe:-1,p(e)._overflowDayOfYear&&(t<ve||t>we)&&(t=we),p(e)._overflowWeeks&&-1===t&&(t=ke),p(e)._overflowWeekday&&-1===t&&(t=Ee),p(e).overflow=t),e}var bt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,St=/Z|[+-]\d\d(?::?\d\d)?/,_t=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],It=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],xt=/^\/?Date\((-?\d+)/i,kt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Et={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ct(e){var t,n,r,i,o,s,a=e._i,c=bt.exec(a)||wt.exec(a),l=_t.length,u=It.length;if(c){for(p(e).iso=!0,t=0,n=l;t<n;t++)if(_t[t][1].exec(c[1])){i=_t[t][0],r=!1!==_t[t][2];break}if(null==i)return void(e._isValid=!1);if(c[3]){for(t=0,n=u;t<n;t++)if(It[t][1].exec(c[3])){o=(c[2]||" ")+It[t][0];break}if(null==o)return void(e._isValid=!1)}if(!r&&null!=o)return void(e._isValid=!1);if(c[4]){if(!St.exec(c[4]))return void(e._isValid=!1);s="Z"}e._f=i+(o||"")+(s||""),Mt(e)}else e._isValid=!1}function $t(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function Ot(e){var t,n=kt.exec(function(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}(e._i));if(n){if(t=function(e,t,n,r,i,o){var s=[$t(e),De.indexOf(t),parseInt(n,10),parseInt(r,10),parseInt(i,10)];return o&&s.push(parseInt(o,10)),s}(n[4],n[3],n[2],n[5],n[6],n[7]),!function(e,t,n){return!e||Ze.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(p(n).weekdayMismatch=!0,n._isValid=!1,!1)}(n[1],t,e))return;e._a=t,e._tzm=function(e,t,n){if(e)return Et[e];if(t)return 0;var r=parseInt(n,10),i=r%100;return(r-i)/100*60+i}(n[8],n[9],n[10]),e._d=Ve.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),p(e).rfc2822=!0}else e._isValid=!1}function Nt(e,t,n){return null!=e?e:null!=t?t:n}function Tt(e){var t=new Date(r.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}function At(e){var t,n,r,i,o,s=[];if(!e._d){for(r=Tt(e),e._w&&null==e._a[we]&&null==e._a[be]&&function(e){var t,n,r,i,o,s,a,c,l;null!=(t=e._w).GG||null!=t.W||null!=t.E?(o=1,s=4,n=Nt(t.GG,e._a[ve],ze(jt(),1,4).year),r=Nt(t.W,1),((i=Nt(t.E,1))<1||i>7)&&(c=!0)):(o=e._locale._week.dow,s=e._locale._week.doy,l=ze(jt(),o,s),n=Nt(t.gg,e._a[ve],l.year),r=Nt(t.w,l.week),null!=t.d?((i=t.d)<0||i>6)&&(c=!0):null!=t.e?(i=t.e+o,(t.e<0||t.e>6)&&(c=!0)):i=o),r<1||r>qe(n,o,s)?p(e)._overflowWeeks=!0:null!=c?p(e)._overflowWeekday=!0:(a=He(n,r,i,o,s),e._a[ve]=a.year,e._dayOfYear=a.dayOfYear)}(e),null!=e._dayOfYear&&(o=Nt(e._a[ve],r[ve]),(e._dayOfYear>Ce(o)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),n=Ve(o,0,e._dayOfYear),e._a[be]=n.getUTCMonth(),e._a[we]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=r[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Se]&&0===e._a[_e]&&0===e._a[Ie]&&0===e._a[xe]&&(e._nextDay=!0,e._a[Se]=0),e._d=(e._useUTC?Ve:Ge).apply(null,s),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Se]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(p(e).weekdayMismatch=!0)}}function Mt(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],p(e).empty=!0;var t,n,i,o,s,a,c,l=""+e._i,u=l.length,d=0;for(c=(i=L(e._f,e._locale).match(T)||[]).length,t=0;t<c;t++)o=i[t],(n=(l.match(le(o,e))||[])[0])&&((s=l.substr(0,l.indexOf(n))).length>0&&p(e).unusedInput.push(s),l=l.slice(l.indexOf(n)+n.length),d+=n.length),P[o]?(n?p(e).empty=!1:p(e).unusedTokens.push(o),me(o,n,e)):e._strict&&!n&&p(e).unusedTokens.push(o);p(e).charsLeftOver=u-d,l.length>0&&p(e).unusedInput.push(l),e._a[Se]<=12&&!0===p(e).bigHour&&e._a[Se]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[Se]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[Se],e._meridiem),null!==(a=p(e).era)&&(e._a[ve]=e._locale.erasConvertYear(a,e._a[ve])),At(e),vt(e)}else Ot(e);else Ct(e)}function Pt(e){var t=e._i,n=e._f;return e._locale=e._locale||yt(e._l),null===t||void 0===n&&""===t?m({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),S(t)?new w(vt(t)):(u(t)?e._d=t:i(n)?function(e){var t,n,r,i,o,s,a=!1,c=e._f.length;if(0===c)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;i<c;i++)o=0,s=!1,t=b({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],Mt(t),g(t)&&(s=!0),o+=p(t).charsLeftOver,o+=10*p(t).unusedTokens.length,p(t).score=o,a?o<r&&(r=o,n=t):(null==r||o<r||s)&&(r=o,n=t,s&&(a=!0));h(e,n||t)}(e):n?Mt(e):function(e){var t=e._i;c(t)?e._d=new Date(r.now()):u(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=xt.exec(e._i);null===t?(Ct(e),!1===e._isValid&&(delete e._isValid,Ot(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:r.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):i(t)?(e._a=d(t.slice(0),(function(e){return parseInt(e,10)})),At(e)):o(t)?function(e){if(!e._d){var t=W(e._i),n=void 0===t.day?t.date:t.day;e._a=d([t.year,t.month,n,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),At(e)}}(e):l(t)?e._d=new Date(t):r.createFromInputFallback(e)}(e),g(e)||(e._d=null),e))}function Dt(e,t,n,r,s){var c={};return!0!==t&&!1!==t||(r=t,t=void 0),!0!==n&&!1!==n||(r=n,n=void 0),(o(e)&&a(e)||i(e)&&0===e.length)&&(e=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=s,c._l=n,c._i=e,c._f=t,c._strict=r,function(e){var t=new w(vt(Pt(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}(c)}function jt(e,t,n,r){return Dt(e,t,n,r,!1)}r.createFromInputFallback=I("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Rt=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=jt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:m()})),Lt=I("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=jt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:m()}));function Ft(e,t){var n,r;if(1===t.length&&i(t[0])&&(t=t[0]),!t.length)return jt();for(n=t[0],r=1;r<t.length;++r)t[r].isValid()&&!t[r][e](n)||(n=t[r]);return n}var Ut=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Wt(e){var t,n,r=!1,i=Ut.length;for(t in e)if(s(e,t)&&(-1===$e.call(Ut,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<i;++n)if(e[Ut[n]]){if(r)return!1;parseFloat(e[Ut[n]])!==he(e[Ut[n]])&&(r=!0)}return!0}function Bt(e){var t=W(e),n=t.year||0,r=t.quarter||0,i=t.month||0,o=t.week||t.isoWeek||0,s=t.day||0,a=t.hour||0,c=t.minute||0,l=t.second||0,u=t.millisecond||0;this._isValid=Wt(t),this._milliseconds=+u+1e3*l+6e4*c+1e3*a*60*60,this._days=+s+7*o,this._months=+i+3*r+12*n,this._data={},this._locale=yt(),this._bubble()}function Gt(e){return e instanceof Bt}function Vt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Yt(e,t){D(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+N(~~(e/60),2)+t+N(~~e%60,2)}))}Yt("Z",":"),Yt("ZZ",""),ce("Z",ie),ce("ZZ",ie),pe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=zt(ie,e)}));var Ht=/([\+\-]|\d\d)/gi;function zt(e,t){var n,r,i=(t||"").match(e);return null===i?null:0===(r=60*(n=((i[i.length-1]||[])+"").match(Ht)||["-",0,0])[1]+he(n[2]))?0:"+"===n[0]?r:-r}function qt(e,t){var n,i;return t._isUTC?(n=t.clone(),i=(S(e)||u(e)?e.valueOf():jt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),r.updateOffset(n,!1),n):jt(e).local()}function Kt(e){return-Math.round(e._d.getTimezoneOffset())}function Jt(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Zt=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Xt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Qt(e,t){var n,r,i,o=e,a=null;return Gt(e)?o={ms:e._milliseconds,d:e._days,M:e._months}:l(e)||!isNaN(+e)?(o={},t?o[t]=+e:o.milliseconds=+e):(a=Zt.exec(e))?(n="-"===a[1]?-1:1,o={y:0,d:he(a[we])*n,h:he(a[Se])*n,m:he(a[_e])*n,s:he(a[Ie])*n,ms:he(Vt(1e3*a[xe]))*n}):(a=Xt.exec(e))?(n="-"===a[1]?-1:1,o={y:en(a[2],n),M:en(a[3],n),w:en(a[4],n),d:en(a[5],n),h:en(a[6],n),m:en(a[7],n),s:en(a[8],n)}):null==o?o={}:"object"==typeof o&&("from"in o||"to"in o)&&(i=function(e,t){var n;return e.isValid()&&t.isValid()?(t=qt(t,e),e.isBefore(t)?n=tn(e,t):((n=tn(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}(jt(o.from),jt(o.to)),(o={}).ms=i.milliseconds,o.M=i.months),r=new Bt(o),Gt(e)&&s(e,"_locale")&&(r._locale=e._locale),Gt(e)&&s(e,"_isValid")&&(r._isValid=e._isValid),r}function en(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function tn(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function nn(e,t){return function(n,r){var i;return null===r||isNaN(+r)||(E(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),rn(this,Qt(n,r),e),this}}function rn(e,t,n,i){var o=t._milliseconds,s=Vt(t._days),a=Vt(t._months);e.isValid()&&(i=null==i||i,a&&Ue(e,Te(e,"Month")+a*n),s&&Ae(e,"Date",Te(e,"Date")+s*n),o&&e._d.setTime(e._d.valueOf()+o*n),i&&r.updateOffset(e,s||a))}Qt.fn=Bt.prototype,Qt.invalid=function(){return Qt(NaN)};var on=nn(1,"add"),sn=nn(-1,"subtract");function an(e){return"string"==typeof e||e instanceof String}function cn(e){return S(e)||u(e)||an(e)||l(e)||function(e){var t=i(e),n=!1;return t&&(n=0===e.filter((function(t){return!l(t)&&an(e)})).length),t&&n}(e)||function(e){var t,n,r=o(e)&&!a(e),i=!1,c=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],l=c.length;for(t=0;t<l;t+=1)n=c[t],i=i||s(e,n);return r&&i}(e)||null==e}function ln(e){var t,n=o(e)&&!a(e),r=!1,i=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<i.length;t+=1)r=r||s(e,i[t]);return n&&r}function un(e,t){if(e.date()<t.date())return-un(t,e);var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,"months");return-(n+(t-r<0?(t-r)/(r-e.clone().add(n-1,"months")):(t-r)/(e.clone().add(n+1,"months")-r)))||0}function dn(e){var t;return void 0===e?this._locale._abbr:(null!=(t=yt(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var hn=I("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function fn(){return this._locale}var pn=1e3,gn=6e4,mn=60*gn,yn=3506328*mn;function vn(e,t){return(e%t+t)%t}function bn(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-yn:new Date(e,t,n).valueOf()}function wn(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-yn:Date.UTC(e,t,n)}function Sn(e,t){return t.erasAbbrRegex(e)}function _n(){var e,t,n,r,i,o=[],s=[],a=[],c=[],l=this.eras();for(e=0,t=l.length;e<t;++e)n=ue(l[e].name),r=ue(l[e].abbr),i=ue(l[e].narrow),s.push(n),o.push(r),a.push(i),c.push(n),c.push(r),c.push(i);this._erasRegex=new RegExp("^("+c.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+s.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+o.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+a.join("|")+")","i")}function In(e,t){D(0,[e,e.length],0,t)}function xn(e,t,n,r,i){var o;return null==e?ze(this,r,i).year:(t>(o=qe(e,r,i))&&(t=o),kn.call(this,e,t,n,r,i))}function kn(e,t,n,r,i){var o=He(e,t,n,r,i),s=Ve(o.year,0,o.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}D("N",0,0,"eraAbbr"),D("NN",0,0,"eraAbbr"),D("NNN",0,0,"eraAbbr"),D("NNNN",0,0,"eraName"),D("NNNNN",0,0,"eraNarrow"),D("y",["y",1],"yo","eraYear"),D("y",["yy",2],0,"eraYear"),D("y",["yyy",3],0,"eraYear"),D("y",["yyyy",4],0,"eraYear"),ce("N",Sn),ce("NN",Sn),ce("NNN",Sn),ce("NNNN",(function(e,t){return t.erasNameRegex(e)})),ce("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),pe(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var i=n._locale.erasParse(e,r,n._strict);i?p(n).era=i:p(n).invalidEra=e})),ce("y",te),ce("yy",te),ce("yyy",te),ce("yyyy",te),ce("yo",(function(e,t){return t._eraYearOrdinalRegex||te})),pe(["y","yy","yyy","yyyy"],ve),pe(["yo"],(function(e,t,n){var r;n._locale._eraYearOrdinalRegex&&(r=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[ve]=n._locale.eraYearOrdinalParse(e,r):t[ve]=parseInt(e,10)})),D(0,["gg",2],0,(function(){return this.weekYear()%100})),D(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),In("gggg","weekYear"),In("ggggg","weekYear"),In("GGGG","isoWeekYear"),In("GGGGG","isoWeekYear"),ce("G",ne),ce("g",ne),ce("GG",K,Y),ce("gg",K,Y),ce("GGGG",Q,z),ce("gggg",Q,z),ce("GGGGG",ee,q),ce("ggggg",ee,q),ge(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=he(e)})),ge(["gg","GG"],(function(e,t,n,i){t[i]=r.parseTwoDigitYear(e)})),D("Q",0,"Qo","quarter"),ce("Q",V),pe("Q",(function(e,t){t[be]=3*(he(e)-1)})),D("D",["DD",2],"Do","date"),ce("D",K,se),ce("DD",K,Y),ce("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),pe(["D","DD"],we),pe("Do",(function(e,t){t[we]=he(e.match(K)[0])}));var En=Ne("Date",!0);D("DDD",["DDDD",3],"DDDo","dayOfYear"),ce("DDD",X),ce("DDDD",H),pe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=he(e)})),D("m",["mm",2],0,"minute"),ce("m",K,ae),ce("mm",K,Y),pe(["m","mm"],_e);var Cn=Ne("Minutes",!1);D("s",["ss",2],0,"second"),ce("s",K,ae),ce("ss",K,Y),pe(["s","ss"],Ie);var $n,On,Nn=Ne("Seconds",!1);for(D("S",0,0,(function(){return~~(this.millisecond()/100)})),D(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),D(0,["SSS",3],0,"millisecond"),D(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),D(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),D(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),D(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),D(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),D(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),ce("S",X,V),ce("SS",X,Y),ce("SSS",X,H),$n="SSSS";$n.length<=9;$n+="S")ce($n,te);function Tn(e,t){t[xe]=he(1e3*("0."+e))}for($n="S";$n.length<=9;$n+="S")pe($n,Tn);On=Ne("Milliseconds",!1),D("z",0,0,"zoneAbbr"),D("zz",0,0,"zoneName");var An=w.prototype;function Mn(e){return e}An.add=on,An.calendar=function(e,t){1===arguments.length&&(arguments[0]?cn(arguments[0])?(e=arguments[0],t=void 0):ln(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var n=e||jt(),i=qt(n,this).startOf("day"),o=r.calendarFormat(this,i)||"sameElse",s=t&&(C(t[o])?t[o].call(this,n):t[o]);return this.format(s||this.localeData().calendar(o,this,jt(n)))},An.clone=function(){return new w(this)},An.diff=function(e,t,n){var r,i,o;if(!this.isValid())return NaN;if(!(r=qt(e,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),t=U(t)){case"year":o=un(this,r)/12;break;case"month":o=un(this,r);break;case"quarter":o=un(this,r)/3;break;case"second":o=(this-r)/1e3;break;case"minute":o=(this-r)/6e4;break;case"hour":o=(this-r)/36e5;break;case"day":o=(this-r-i)/864e5;break;case"week":o=(this-r-i)/6048e5;break;default:o=this-r}return n?o:de(o)},An.endOf=function(e){var t,n;if(void 0===(e=U(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?wn:bn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=mn-vn(t+(this._isUTC?0:this.utcOffset()*gn),mn)-1;break;case"minute":t=this._d.valueOf(),t+=gn-vn(t,gn)-1;break;case"second":t=this._d.valueOf(),t+=pn-vn(t,pn)-1}return this._d.setTime(t),r.updateOffset(this,!0),this},An.format=function(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=R(this,e);return this.localeData().postformat(t)},An.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||jt(e).isValid())?Qt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.fromNow=function(e){return this.from(jt(),e)},An.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||jt(e).isValid())?Qt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.toNow=function(e){return this.to(jt(),e)},An.get=function(e){return C(this[e=U(e)])?this[e]():this},An.invalidAt=function(){return p(this).overflow},An.isAfter=function(e,t){var n=S(e)?e:jt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=U(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},An.isBefore=function(e,t){var n=S(e)?e:jt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=U(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},An.isBetween=function(e,t,n,r){var i=S(e)?e:jt(e),o=S(t)?t:jt(t);return!!(this.isValid()&&i.isValid()&&o.isValid())&&("("===(r=r||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===r[1]?this.isBefore(o,n):!this.isAfter(o,n))},An.isSame=function(e,t){var n,r=S(e)?e:jt(e);return!(!this.isValid()||!r.isValid())&&("millisecond"===(t=U(t)||"millisecond")?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},An.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},An.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},An.isValid=function(){return g(this)},An.lang=hn,An.locale=dn,An.localeData=fn,An.max=Lt,An.min=Rt,An.parsingFlags=function(){return h({},p(this))},An.set=function(e,t){if("object"==typeof e){var n,r=function(e){var t,n=[];for(t in e)s(e,t)&&n.push({unit:t,priority:B[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}(e=W(e)),i=r.length;for(n=0;n<i;n++)this[r[n].unit](e[r[n].unit])}else if(C(this[e=U(e)]))return this[e](t);return this},An.startOf=function(e){var t,n;if(void 0===(e=U(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?wn:bn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=vn(t+(this._isUTC?0:this.utcOffset()*gn),mn);break;case"minute":t=this._d.valueOf(),t-=vn(t,gn);break;case"second":t=this._d.valueOf(),t-=vn(t,pn)}return this._d.setTime(t),r.updateOffset(this,!0),this},An.subtract=sn,An.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},An.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},An.toDate=function(){return new Date(this.valueOf())},An.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||n.year()>9999?R(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):C(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",R(n,"Z")):R(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},An.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r="moment",i="";return this.isLocal()||(r=0===this.utcOffset()?"moment.utc":"moment.parseZone",i="Z"),e="["+r+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=i+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+n)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(An[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),An.toJSON=function(){return this.isValid()?this.toISOString():null},An.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},An.unix=function(){return Math.floor(this.valueOf()/1e3)},An.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},An.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},An.eraName=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].name;if(r[e].until<=n&&n<=r[e].since)return r[e].name}return""},An.eraNarrow=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].narrow;if(r[e].until<=n&&n<=r[e].since)return r[e].narrow}return""},An.eraAbbr=function(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e<t;++e){if(n=this.clone().startOf("day").valueOf(),r[e].since<=n&&n<=r[e].until)return r[e].abbr;if(r[e].until<=n&&n<=r[e].since)return r[e].abbr}return""},An.eraYear=function(){var e,t,n,i,o=this.localeData().eras();for(e=0,t=o.length;e<t;++e)if(n=o[e].since<=o[e].until?1:-1,i=this.clone().startOf("day").valueOf(),o[e].since<=i&&i<=o[e].until||o[e].until<=i&&i<=o[e].since)return(this.year()-r(o[e].since).year())*n+o[e].offset;return this.year()},An.year=Oe,An.isLeapYear=function(){return ye(this.year())},An.weekYear=function(e){return xn.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},An.isoWeekYear=function(e){return xn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},An.quarter=An.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},An.month=We,An.daysInMonth=function(){return Me(this.year(),this.month())},An.week=An.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},An.isoWeek=An.isoWeeks=function(e){var t=ze(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},An.weeksInYear=function(){var e=this.localeData()._week;return qe(this.year(),e.dow,e.doy)},An.weeksInWeekYear=function(){var e=this.localeData()._week;return qe(this.weekYear(),e.dow,e.doy)},An.isoWeeksInYear=function(){return qe(this.year(),1,4)},An.isoWeeksInISOWeekYear=function(){return qe(this.isoWeekYear(),1,4)},An.date=En,An.day=An.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=Te(this,"Day");return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},An.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},An.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},An.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},An.hour=An.hours=at,An.minute=An.minutes=Cn,An.second=An.seconds=Nn,An.millisecond=An.milliseconds=On,An.utcOffset=function(e,t,n){var i,o=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=zt(ie,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(i=Kt(this)),this._offset=e,this._isUTC=!0,null!=i&&this.add(i,"m"),o!==e&&(!t||this._changeInProgress?rn(this,Qt(e-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?o:Kt(this)},An.utc=function(e){return this.utcOffset(0,e)},An.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Kt(this),"m")),this},An.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=zt(re,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},An.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?jt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},An.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},An.isLocal=function(){return!!this.isValid()&&!this._isUTC},An.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},An.isUtc=Jt,An.isUTC=Jt,An.zoneAbbr=function(){return this._isUTC?"UTC":""},An.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},An.dates=I("dates accessor is deprecated. Use date instead.",En),An.months=I("months accessor is deprecated. Use month instead",We),An.years=I("years accessor is deprecated. Use year instead",Oe),An.zone=I("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),An.isDSTShifted=I("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!c(this._isDSTShifted))return this._isDSTShifted;var e,t={};return b(t,this),(t=Pt(t))._a?(e=t._isUTC?f(t._a):jt(t._a),this._isDSTShifted=this.isValid()&&function(e,t){var n,r=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),o=0;for(n=0;n<r;n++)he(e[n])!==he(t[n])&&o++;return o+i}(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}));var Pn=O.prototype;function Dn(e,t,n,r){var i=yt(),o=f().set(r,t);return i[n](o,e)}function jn(e,t,n){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return Dn(e,t,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=Dn(e,r,n,"month");return i}function Rn(e,t,n,r){"boolean"==typeof e?(l(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,l(t)&&(n=t,t=void 0),t=t||"");var i,o=yt(),s=e?o._week.dow:0,a=[];if(null!=n)return Dn(t,(n+s)%7,r,"day");for(i=0;i<7;i++)a[i]=Dn(t,(i+s)%7,r,"day");return a}Pn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return C(r)?r.call(t,n):r},Pn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(T).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},Pn.invalidDate=function(){return this._invalidDate},Pn.ordinal=function(e){return this._ordinal.replace("%d",e)},Pn.preparse=Mn,Pn.postformat=Mn,Pn.relativeTime=function(e,t,n,r){var i=this._relativeTime[n];return C(i)?i(e,t,n,r):i.replace(/%d/i,e)},Pn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return C(n)?n(t):n.replace(/%s/i,t)},Pn.set=function(e){var t,n;for(n in e)s(e,n)&&(C(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Pn.eras=function(){var e,t,n,i=this._eras||yt("en")._eras;for(e=0,t=i.length;e<t;++e)switch("string"==typeof i[e].since&&(n=r(i[e].since).startOf("day"),i[e].since=n.valueOf()),typeof i[e].until){case"undefined":i[e].until=1/0;break;case"string":n=r(i[e].until).startOf("day").valueOf(),i[e].until=n.valueOf()}return i},Pn.erasParse=function(e,t,n){var r,i,o,s,a,c=this.eras();for(e=e.toUpperCase(),r=0,i=c.length;r<i;++r)if(o=c[r].name.toUpperCase(),s=c[r].abbr.toUpperCase(),a=c[r].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(s===e)return c[r];break;case"NNNN":if(o===e)return c[r];break;case"NNNNN":if(a===e)return c[r]}else if([o,s,a].indexOf(e)>=0)return c[r]},Pn.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*n},Pn.erasAbbrRegex=function(e){return s(this,"_erasAbbrRegex")||_n.call(this),e?this._erasAbbrRegex:this._erasRegex},Pn.erasNameRegex=function(e){return s(this,"_erasNameRegex")||_n.call(this),e?this._erasNameRegex:this._erasRegex},Pn.erasNarrowRegex=function(e){return s(this,"_erasNarrowRegex")||_n.call(this),e?this._erasNarrowRegex:this._erasRegex},Pn.months=function(e,t){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||je).test(t)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone},Pn.monthsShort=function(e,t){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[je.test(t)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Pn.monthsParse=function(e,t,n){var r,i,o;if(this._monthsParseExact)return Fe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=f([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(o="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(o.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},Pn.monthsRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||Be.call(this),e?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Pn.monthsShortRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||Be.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=Re),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Pn.week=function(e){return ze(e,this._week.dow,this._week.doy).week},Pn.firstDayOfYear=function(){return this._week.doy},Pn.firstDayOfWeek=function(){return this._week.dow},Pn.weekdays=function(e,t){var n=i(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ke(n,this._week.dow):e?n[e.day()]:n},Pn.weekdaysMin=function(e){return!0===e?Ke(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Pn.weekdaysShort=function(e){return!0===e?Ke(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Pn.weekdaysParse=function(e,t,n){var r,i,o;if(this._weekdaysParseExact)return nt.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=f([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(o="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(o.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},Pn.weekdaysRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=Qe),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Pn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=et),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Pn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=tt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Pn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Pn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},gt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===he(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=I("moment.lang is deprecated. Use moment.locale instead.",gt),r.langData=I("moment.langData is deprecated. Use moment.localeData instead.",yt);var Ln=Math.abs;function Fn(e,t,n,r){var i=Qt(t,n);return e._milliseconds+=r*i._milliseconds,e._days+=r*i._days,e._months+=r*i._months,e._bubble()}function Un(e){return e<0?Math.floor(e):Math.ceil(e)}function Wn(e){return 4800*e/146097}function Bn(e){return 146097*e/4800}function Gn(e){return function(){return this.as(e)}}var Vn=Gn("ms"),Yn=Gn("s"),Hn=Gn("m"),zn=Gn("h"),qn=Gn("d"),Kn=Gn("w"),Jn=Gn("M"),Zn=Gn("Q"),Xn=Gn("y"),Qn=Vn;function er(e){return function(){return this.isValid()?this._data[e]:NaN}}var tr=er("milliseconds"),nr=er("seconds"),rr=er("minutes"),ir=er("hours"),or=er("days"),sr=er("months"),ar=er("years");var cr=Math.round,lr={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ur(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}var dr=Math.abs;function hr(e){return(e>0)-(e<0)||+e}function fr(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,i,o,s,a,c=dr(this._milliseconds)/1e3,l=dr(this._days),u=dr(this._months),d=this.asSeconds();return d?(e=de(c/60),t=de(e/60),c%=60,e%=60,n=de(u/12),u%=12,r=c?c.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",o=hr(this._months)!==hr(d)?"-":"",s=hr(this._days)!==hr(d)?"-":"",a=hr(this._milliseconds)!==hr(d)?"-":"",i+"P"+(n?o+n+"Y":"")+(u?o+u+"M":"")+(l?s+l+"D":"")+(t||e||c?"T":"")+(t?a+t+"H":"")+(e?a+e+"M":"")+(c?a+r+"S":"")):"P0D"}var pr=Bt.prototype;return pr.isValid=function(){return this._isValid},pr.abs=function(){var e=this._data;return this._milliseconds=Ln(this._milliseconds),this._days=Ln(this._days),this._months=Ln(this._months),e.milliseconds=Ln(e.milliseconds),e.seconds=Ln(e.seconds),e.minutes=Ln(e.minutes),e.hours=Ln(e.hours),e.months=Ln(e.months),e.years=Ln(e.years),this},pr.add=function(e,t){return Fn(this,e,t,1)},pr.subtract=function(e,t){return Fn(this,e,t,-1)},pr.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=U(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+Wn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Bn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},pr.asMilliseconds=Vn,pr.asSeconds=Yn,pr.asMinutes=Hn,pr.asHours=zn,pr.asDays=qn,pr.asWeeks=Kn,pr.asMonths=Jn,pr.asQuarters=Zn,pr.asYears=Xn,pr.valueOf=Qn,pr._bubble=function(){var e,t,n,r,i,o=this._milliseconds,s=this._days,a=this._months,c=this._data;return o>=0&&s>=0&&a>=0||o<=0&&s<=0&&a<=0||(o+=864e5*Un(Bn(a)+s),s=0,a=0),c.milliseconds=o%1e3,e=de(o/1e3),c.seconds=e%60,t=de(e/60),c.minutes=t%60,n=de(t/60),c.hours=n%24,s+=de(n/24),a+=i=de(Wn(s)),s-=Un(Bn(i)),r=de(a/12),a%=12,c.days=s,c.months=a,c.years=r,this},pr.clone=function(){return Qt(this)},pr.get=function(e){return e=U(e),this.isValid()?this[e+"s"]():NaN},pr.milliseconds=tr,pr.seconds=nr,pr.minutes=rr,pr.hours=ir,pr.days=or,pr.weeks=function(){return de(this.days()/7)},pr.months=sr,pr.years=ar,pr.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,i=!1,o=lr;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(i=e),"object"==typeof t&&(o=Object.assign({},lr,t),null!=t.s&&null==t.ss&&(o.ss=t.s-1)),r=function(e,t,n,r){var i=Qt(e).abs(),o=cr(i.as("s")),s=cr(i.as("m")),a=cr(i.as("h")),c=cr(i.as("d")),l=cr(i.as("M")),u=cr(i.as("w")),d=cr(i.as("y")),h=o<=n.ss&&["s",o]||o<n.s&&["ss",o]||s<=1&&["m"]||s<n.m&&["mm",s]||a<=1&&["h"]||a<n.h&&["hh",a]||c<=1&&["d"]||c<n.d&&["dd",c];return null!=n.w&&(h=h||u<=1&&["w"]||u<n.w&&["ww",u]),(h=h||l<=1&&["M"]||l<n.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=t,h[3]=+e>0,h[4]=r,ur.apply(null,h)}(this,!i,o,n=this.localeData()),i&&(r=n.pastFuture(+this,r)),n.postformat(r)},pr.toISOString=fr,pr.toString=fr,pr.toJSON=fr,pr.locale=dn,pr.localeData=fn,pr.toIsoString=I("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",fr),pr.lang=hn,D("X",0,0,"unix"),D("x",0,0,"valueOf"),ce("x",ne),ce("X",/[+-]?\d+(\.\d{1,3})?/),pe("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),pe("x",(function(e,t,n){n._d=new Date(he(e))})),
|
|
2
2
|
//! moment.js
|
|
3
|
-
r.version="2.30.1",function(e){t=e}(jt),r.fn=An,r.min=function(){return Ft("isBefore",[].slice.call(arguments,0))},r.max=function(){return Ft("isAfter",[].slice.call(arguments,0))},r.now=function(){return Date.now?Date.now():+new Date},r.utc=f,r.unix=function(e){return jt(1e3*e)},r.months=function(e,t){return jn(e,t,"months")},r.isDate=u,r.locale=gt,r.invalid=m,r.duration=Qt,r.isMoment=S,r.weekdays=function(e,t,n){return Rn(e,t,n,"weekdays")},r.parseZone=function(){return jt.apply(null,arguments).parseZone()},r.localeData=yt,r.isDuration=Gt,r.monthsShort=function(e,t){return jn(e,t,"monthsShort")},r.weekdaysMin=function(e,t,n){return Rn(e,t,n,"weekdaysMin")},r.defineLocale=mt,r.updateLocale=function(e,t){if(null!=t){var n,r,i=lt;null!=ut[e]&&null!=ut[e].parentLocale?ut[e].set($(ut[e]._config,t)):(null!=(r=pt(e))&&(i=r._config),t=$(i,t),null==r&&(t.abbr=e),(n=new O(t)).parentLocale=ut[e],ut[e]=n),gt(e)}else null!=ut[e]&&(null!=ut[e].parentLocale?(ut[e]=ut[e].parentLocale,e===gt()&>(e)):null!=ut[e]&&delete ut[e]);return ut[e]},r.locales=function(){return x(ut)},r.weekdaysShort=function(e,t,n){return Rn(e,t,n,"weekdaysShort")},r.normalizeUnits=U,r.relativeTimeRounding=function(e){return void 0===e?cr:"function"==typeof e&&(cr=e,!0)},r.relativeTimeThreshold=function(e,t){return void 0!==lr[e]&&(void 0===t?lr[e]:(lr[e]=t,"s"===e&&(lr.ss=t-1),!0))},r.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=An,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()),
|
|
3
|
+
r.version="2.30.1",function(e){t=e}(jt),r.fn=An,r.min=function(){return Ft("isBefore",[].slice.call(arguments,0))},r.max=function(){return Ft("isAfter",[].slice.call(arguments,0))},r.now=function(){return Date.now?Date.now():+new Date},r.utc=f,r.unix=function(e){return jt(1e3*e)},r.months=function(e,t){return jn(e,t,"months")},r.isDate=u,r.locale=gt,r.invalid=m,r.duration=Qt,r.isMoment=S,r.weekdays=function(e,t,n){return Rn(e,t,n,"weekdays")},r.parseZone=function(){return jt.apply(null,arguments).parseZone()},r.localeData=yt,r.isDuration=Gt,r.monthsShort=function(e,t){return jn(e,t,"monthsShort")},r.weekdaysMin=function(e,t,n){return Rn(e,t,n,"weekdaysMin")},r.defineLocale=mt,r.updateLocale=function(e,t){if(null!=t){var n,r,i=lt;null!=ut[e]&&null!=ut[e].parentLocale?ut[e].set($(ut[e]._config,t)):(null!=(r=pt(e))&&(i=r._config),t=$(i,t),null==r&&(t.abbr=e),(n=new O(t)).parentLocale=ut[e],ut[e]=n),gt(e)}else null!=ut[e]&&(null!=ut[e].parentLocale?(ut[e]=ut[e].parentLocale,e===gt()&>(e)):null!=ut[e]&&delete ut[e]);return ut[e]},r.locales=function(){return x(ut)},r.weekdaysShort=function(e,t,n){return Rn(e,t,n,"weekdaysShort")},r.normalizeUnits=U,r.relativeTimeRounding=function(e){return void 0===e?cr:"function"==typeof e&&(cr=e,!0)},r.relativeTimeThreshold=function(e,t){return void 0!==lr[e]&&(void 0===t?lr[e]:(lr[e]=t,"s"===e&&(lr.ss=t-1),!0))},r.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=An,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()),ly.exports;var e}function dy(){if(cy)return ay;cy=1;
|
|
4
4
|
/*!
|
|
5
5
|
* FileStreamRotator
|
|
6
6
|
* Copyright(c) 2012-2017 Holiday Extras.
|
|
7
7
|
* Copyright(c) 2017 Roger C.
|
|
8
8
|
* MIT Licensed
|
|
9
9
|
*/
|
|
10
|
-
var e=O,t=x,n=oy(),r=u,o=j,s={};ny=s;var a=["daily","test","m","h","custom"],c="YYYYMMDDHHmm";function l(t,n){if(t.hash===r.createHash(t.hashType).update(t.name+"LOG_FILE"+t.date).digest("hex"))try{e.existsSync(t.name)&&e.unlinkSync(t.name)}catch(e){n&&console.error(new Date,"[FileStreamRotator] Could not remove old log file: ",t.name)}}s.getFrequency=function(e){var t=e.toLowerCase().match(/^(\d+)([mh])$/);if(t)return function(e,t){if("number"==typeof t){switch(e){case"m":if(t<0||t>60)return!1;break;case"h":if(t<0||t>24)return!1}return{type:e,digit:t}}}(t[2],parseInt(t[1]));var n=function(e){switch(e){case"custom":case"daily":return{type:e,digit:void 0};case"test":return{type:e,digit:0}}return!1}(e);return n||!1},s.parseFileSize=function(e){if(e&&"string"==typeof e){var t=e.toLowerCase().match(/^((?:0\.)?\d+)([kmg])$/);if(t)switch(t[2]){case"k":return 1024*t[1];case"m":return 1024*t[1]*1024;case"g":return 1024*t[1]*1024*1024}}return null},s.getDate=function(e,t,r){t=t||c;let i=r?n.utc():n().local();if(e&&-1!==a.indexOf(e.type))switch(e.type){case"m":var o=Math.floor(i.minutes()/e.digit)*e.digit;return i.minutes(o).format(t);case"h":var s=Math.floor(i.hour()/e.digit)*e.digit;return i.hour(s).format(t);case"daily":case"custom":case"test":return i.format(t)}return i.format(t)},s.setAuditLog=function(n,r,i){var o=null;if(n){var s=n.toString().substr(-1),a=n.toString().match(/^(\d+)/);if(Number(a[1])>0){var c=t.dirname(i.replace(/%DATE%.+/,"_filename"));try{if(r){var l=t.resolve(r);o=JSON.parse(e.readFileSync(l,{encoding:"utf-8"}))}else l=t.resolve(c+"/.audit.json"),o=JSON.parse(e.readFileSync(l,{encoding:"utf-8"}))}catch(n){if("ENOENT"!==n.code)return null;o={keep:{days:!1,amount:Number(a[1])},auditLog:r||c+"/.audit.json",files:[]}}o.keep={days:"d"===s,amount:Number(a[1])}}}return o},s.writeAuditLog=function(t,n){try{d(t.auditLog),e.writeFileSync(t.auditLog,JSON.stringify(t,null,4))}catch(e){n&&console.error(new Date,"[FileStreamRotator] Failed to store log audit at:",t.auditLog,"Error:",e)}},s.addLogToAudit=function(e,t,i,o){if(t&&t.files){if(-1!==t.files.findIndex((function(t){return t.name===e})))return t;var a=Date.now();if(t.files.push({date:a,name:e,hash:r.createHash(t.hashType).update(e+"LOG_FILE"+a).digest("hex")}),t.keep.days){var c=n().subtract(t.keep.amount,"days").valueOf(),u=t.files.filter((function(e){return e.date>c||(e.hashType=t.hashType,l(e,o),i.emit("logRemoved",e),!1)}));t.files=u}else{var d=t.files.splice(-t.keep.amount);t.files.length>0&&t.files.filter((function(e){return e.hashType=t.hashType,l(e,o),i.emit("logRemoved",e),!1})),t.files=d}s.writeAuditLog(t,o)}return t},s.getStream=function(r){var l=null,u=null,f=this;if(!r.filename)return console.error(new Date,"[FileStreamRotator] No filename supplied. Defaulting to STDOUT"),process.stdout;r.frequency&&(l=f.getFrequency(r.frequency));let p=f.setAuditLog(r.max_logs,r.audit_file,r.filename);null!=p&&(p.hashType=void 0!==r.audit_hash_type?r.audit_hash_type:"md5"),f.verbose=void 0===r.verbose||r.verbose;var g=null,m=0,y=0;r.size&&(g=s.parseFileSize(r.size));var v=r.date_format||c;l&&"daily"==l.type&&(r.date_format||(v="YYYY-MM-DD"),n().format(v)==n().endOf("day").format(v)&&n().format(v)!=n().add(1,"day").format(v)||(f.verbose&&console.log(new Date,"[FileStreamRotator] Changing type to custom as date format changes more often than once a day or not every day"),l.type="custom")),l&&(u=r.frequency?f.getDate(l,v,r.utc):""),r.create_symlink=r.create_symlink||!1,r.extension=r.extension||"";var b=r.filename,w=null,S=b+(u?"."+u:"");if(b.match(/%DATE%/)&&(S=b.replace(/%DATE%/g,u||f.getDate(null,v,r.utc))),g){var _=null,I=S;if(p&&p.files&&p.files instanceof Array&&p.files.length>0){var x=p.files[p.files.length-1].name;if(x.match(I)){var k=x.match(I+"\\.(\\d+)");k&&(I=x,m=k[1])}}for(0==m&&I==S&&(I+=r.extension);e.existsSync(I);)_=I,m++,I=S+"."+m+r.extension;if(_){var E=e.statSync(_);E.size<g&&(I=_,m--,y=E.size)}S=I}else S+=r.extension;f.verbose&&console.log(new Date,"[FileStreamRotator] Logging to: ",S),d(S);var C=r.file_options||{flags:"a"},$=e.createWriteStream(S,C);if(u&&l&&a.indexOf(l.type)>-1||g>0){f.verbose&&console.log(new Date,"[FileStreamRotator] Rotating file: ",l?l.type:"",g?"size: "+g:"");var O,N=new o;return N.auditLog=p,N.end=function(){$.end.apply($,arguments)},h($,N),N.on("close",(function(){O&&O.close()})),N.on("new",(function(n){N.auditLog=f.addLogToAudit(n,N.auditLog,N,f.verbose),r.create_symlink&&function(n,r,i){let o=r||"current.log",s=t.dirname(n),a=t.basename(n),c=s+"/"+o;try{e.lstatSync(c).isSymbolicLink()&&(e.unlinkSync(c),e.symlinkSync(a,c))}catch(n){if(n&&"ENOENT"==n.code)try{e.symlinkSync(a,c)}catch(n){i&&console.error(new Date,"[FileStreamRotator] Could not create symlink file: ",c," -> ",a)}}}(n,r.symlink_name,f.verbose),r.watch_log&&N.emit("addWatcher",n)})),N.on("addWatcher",(function(t){O&&O.close(),r.watch_log&&(O=function(t,n){if(!t)return null;try{return e.lstatSync(t),e.watch(t,(function(n){if("rename"==n)try{e.lstatSync(t)}catch(e){!function(e,t){N.emit("createLog",t)}(0,t)}}))}catch(e){n&&console.log(new Date,"[FileStreamRotator] Could not add watcher for "+t)}}(t,f.verbose))})),N.on("createLog",(function(t){try{e.lstatSync(t)}catch(n){$&&"function"==$.end&&$.end(),$=e.createWriteStream(t,C),N.emit("new",t),h($,N)}})),N.write=function(t,n){var o=l?this.getDate(l,v,r.utc):u;if(o!=u||g&&y>g){var s=b+(u&&l?"."+o:"");b.match(/%DATE%/)&&u&&(s=b.replace(/%DATE%/g,o)),g&&y>g?s+="."+ ++m+r.extension:(m=0,s+=r.extension),y=0,f.verbose&&console.log(new Date,i.format("[FileStreamRotator] Changing logs from %s to %s",S,s)),u=o,w=S,S=s,!0===r.end_stream?$.end():$.destroy(),d(S),$=e.createWriteStream(s,C),N.emit("new",s),N.emit("rotate",w,s),h($,N)}$.write(t,n),y+=Buffer.byteLength(t,n)}.bind(this),process.nextTick((function(){N.emit("new",S)})),N.emit("new",S),N}return f.verbose&&console.log(new Date,"[FileStreamRotator] File won't be rotated: ",r.frequency,r.size),process.nextTick((function(){$.emit("new",S)})),$};var d=function(n){t.dirname(n).split(t.sep).reduce((function(n,r){if(n+=r+t.sep,!e.existsSync(n))try{e.mkdirSync(n)}catch(n){if("EEXIST"!==n.code)throw n}return n}),"")},h=function(e,t){e.on("close",(function(){t.emit("close")})),e.on("finish",(function(){t.emit("finish")})),e.on("error",(function(e){t.emit("error",e)})),e.on("open",(function(e){t.emit("open",e)}))};return ny}const ay=O,cy=T,ly=x,uy=i,dy=R,hy=ey.exports,fy=Ud.MESSAGE,py=P.PassThrough,gy=hp,my={json:!1,colorize:!1,eol:cy.EOL,logstash:null,prettyPrint:!1,label:null,stringify:!1,depth:null,showLevel:!0,timestamp:()=>(new Date).toISOString()},yy=function(e){if(e=e||{},gy.call(this,e),this.options=Object.assign({},my,e),e.stream)!function(t){Array.prototype.slice.call(arguments,1).forEach((n=>{if(e[n])throw new Error("Cannot set "+n+" and "+t+" together")}))}("stream","filename","maxsize"),this.logStream=new py,this.logStream.pipe(e.stream);else{if(this.filename=e.filename?ly.basename(e.filename):"winston.log",this.dirname=e.dirname||ly.dirname(e.filename),t=this.filename,/["<>|:*?\\/\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]/g.test(t)||!function(e){return!/["<>|\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]/g.test(e)}(this.dirname))throw new Error("Your path or filename contain an invalid character.");this.logStream=sy().getStream({filename:ly.join(this.dirname,this.filename),frequency:e.frequency?e.frequency:"custom",date_format:e.datePattern?e.datePattern:"YYYY-MM-DD",verbose:!1,size:function(e){if(e&&"string"==typeof e){if(e.toLowerCase().match(/^((?:0\.)?\d+)([kmg])$/))return e}else if(e&&Number.isInteger(e)){const t=Math.round(e/1024);return 0===t?"1k":t+"k"}return null}(e.maxSize),max_logs:e.maxFiles,end_stream:!0,audit_file:e.auditFile?e.auditFile:ly.join(this.dirname,"."+hy(e)+"-audit.json"),file_options:e.options?e.options:{flags:"a"},utc:!!e.utc&&e.utc,extension:e.extension?e.extension:"",create_symlink:!!e.createSymlink&&e.createSymlink,symlink_name:e.symlinkName?e.symlinkName:"current.log",watch_log:!!e.watchLog&&e.watchLog,audit_hash_type:e.auditHashType?e.auditHashType:"sha256"}),this.logStream.on("new",(e=>{this.emit("new",e)})),this.logStream.on("rotate",((e,t)=>{this.emit("rotate",e,t)})),this.logStream.on("logRemoved",(t=>{if(e.zippedArchive){const e=t.name+".gz";try{ay.unlinkSync(e)}catch(t){if("ENOENT"!==t.code)return t.message=`Error occurred while removing ${e}: ${t.message}`,void this.emit("error",t)}this.emit("logRemoved",e)}else this.emit("logRemoved",t.name)})),e.zippedArchive&&this.logStream.on("rotate",(e=>{try{if(!ay.existsSync(e))return}catch(t){return t.message=`Error occurred while checking existence of ${e}: ${t.message}`,void this.emit("error",t)}try{if(ay.existsSync(`${e}.gz`))return}catch(t){return t.message=`Error occurred while checking existence of ${e}.gz: ${t.message}`,void this.emit("error",t)}const t=dy.createGzip(),n=ay.createReadStream(e);n.on("error",(t=>{t.message=`Error occurred while reading ${e}: ${t.message}`,this.emit("error",t)}));const r=ay.createWriteStream(e+".gz");r.on("error",(t=>{t.message=`Error occurred while writing ${e}.gz: ${t.message}`,this.emit("error",t)})),n.pipe(t).pipe(r).on("finish",(()=>{try{ay.unlinkSync(e)}catch(t){if("ENOENT"!==t.code)return t.message=`Error occurred while removing ${e}: ${t.message}`,void this.emit("error",t)}this.emit("archive",e+".gz")}))})),e.watchLog&&this.logStream.on("addWatcher",(e=>{this.emit("addWatcher",e)}))}var t};var vy=yy;uy.inherits(yy,gy),yy.prototype.name="dailyRotateFile";const by=function(){};yy.prototype.log=function(e,t){t=t||by,this.logStream.write(e[fy]+this.options.eol),this.emit("logged",e),t(null,!0)},yy.prototype.close=function(){this.logStream&&this.logStream.end((()=>{this.emit("finish")}))},yy.prototype.query=function(e,t){if("function"==typeof e&&(t=e,e={}),!this.options.json)throw new Error("query() may not be used without the json option being set to true");if(!this.filename)throw new Error("query() may not be used when initializing with a stream");let n=[];(e=e||{}).rows=e.rows||e.limit||10,e.start=e.start||0,e.until=e.until||new Date,"object"!=typeof e.until&&(e.until=new Date(e.until)),e.from=e.from||e.until-864e5,"object"!=typeof e.from&&(e.from=new Date(e.from)),e.order=e.order||"desc";const r=(()=>{const e=new RegExp(this.filename.replace("%DATE%",".*"),"i");return ay.readdirSync(this.dirname).filter((t=>ly.basename(t).match(e)))})();0===r.length&&t&&t(null,n);const i=o=>{if(!o)return;const s=ly.join(this.dirname,o);let a,c="";if(o.endsWith(".gz")){a=new py;const e=ay.createReadStream(s);e.on("error",(e=>{e.message=`Error occurred while reading ${s}: ${e.message}`,a.emit("error",e)})),e.pipe(dy.createGunzip()).pipe(a)}else a=ay.createReadStream(s,{encoding:"utf8"});function l(t,r){try{const r=JSON.parse(t);if(!r||"object"!=typeof r)return;const i=new Date(r.timestamp);if(e.from&&i<e.from||e.until&&i>e.until||e.level&&e.level!==r.level)return;n.push(r)}catch(e){r||a.emit("error",e)}}a.on("error",(e=>{if(a.readable&&a.destroy(),t)return"ENOENT"===e.code?t(null,n):t(e)})),a.on("data",(e=>{const t=(e=(c+e).split(/\n+/)).length-1;for(let n=0;n<t;n++)l(e[n]);c=e[t]})),a.on("end",(()=>{if(c&&l(c,!0),r.length)i(r.shift());else if(t){n.sort(((e,t)=>{const n=new Date(e.timestamp).getTime(),r=new Date(t.timestamp).getTime();return n>r?1:n<r?-1:0})),"desc"===e.order&&(n=n.reverse());const r=e.start||0,i=e.limit||n.length;n=n.slice(r,r+i),e.fields&&(n=n.map((t=>{const n={};return e.fields.forEach((e=>{n[e]=t[e]})),n}))),t(null,n)}}))};i(r.shift())};const wy=vy;cd.transports.DailyRotateFile=wy;var Sy=Vu(wy);const _y=Date.now();let Iy=Math.ceil(_y/1e3);var xy=()=>Iy+=1;const ky=k(A(),"kemu-user-services"),Ey=k(A(),"kemu-test-services"),Cy="KMU-CB-v1",$y=process.env.HUB_PKG_VERSION||'"1.10.1"';var Oy;!function(e){e.input="input",e.counter="counter",e.play="play",e.elapsed="elapsed",e.ifGate="ifGate",e.skipEvent="skipEvent",e.between="between",e.map="map",e.parser="parser",e.slider="slider",e.suspend="suspend",e.display="display",e.pixelfy="pixelfy",e.json="json",e.arrayItem="arrayItem",e.extractImage="extractImage",e.imageConvolution="imageConvolution",e.firstEvent="firstEvent",e.pixelDraw="pixelDraw",e.randomBetween="randomBetween",e.arrayCombine="arrayCombine",e.clock="clock",e.multiplication="multiplication",e.object="object",e.widgetGroup="widgetGroup",e.script="script",e.base64ToImageData="base64ToImageData",e.jsonParse="jsonParse",e.text="text",e.imageCrop="imageCrop",e.imageResize="imageResize",e.value="value",e.imageWarp="imageWarp",e.widgetBundle="widgetBundle",e.sequence="sequence",e.variable="variable",e.hubService="hubService"}(Oy||(Oy={}));const Ny=e=>({...e,type:Array.isArray(e.type)?e.type.map((e=>bu[e])):bu[e.type]}),Ty=async e=>{try{return await _(e,"utf-8")}catch(e){return null}},Ay=e=>{if(e&&e.startsWith(Cy)){const t=e.slice(9),n=decodeURI(t);return Tu(n)}return null},My=async(e,t,n)=>{let r=[];e.variants?.length&&(r=e.variants.map((e=>({...e,...e.inputs?{inputs:e.inputs.map(Ny)}:{},...e.outputs?{outputs:e.outputs.map(Ny)}:{}}))));const i={...e,path:t,customWidgets:[],...e.inputs?{inputs:e.inputs.map(Ny)}:{inputs:[]},...e.outputs?{outputs:e.outputs.map(Ny)}:{outputs:[]},variants:r,...e.widgetUI&&n?.widgetUIContents?{widgetUIContents:n.widgetUIContents}:{}},o=await(async(e,t,n=console.log)=>{const r=[];if(t.customWidgets?.length)for(const i of t.customWidgets){const t=await Ty(k(e,i));if(!t){n(`Error loading custom widget file ${i}`);continue}const o=t.startsWith(Cy)?t:`${Cy}${t}`,s=Ay(o);if(!s){n(`Custom widget file "${i}" is not a valid Kemu Clipboard item`);continue}const a=Object.values(s).filter((e=>e.type===Oy.widgetGroup&&!e.groupId));if(a.length>1){n(`Custom widget file "${i}" contains more than one top level widgetGroup`);continue}const c=a[0];if(!c){n(`Custom widget file "${i}" does not contain a top level widgetGroup`);continue}const l=c.state,u={name:l.name,color:l.color,description:l.description,contents:o,rootGroupId:c.id,icon:l.icon,protocolVersion:l.protocolVersion||"2"};r.push(u)}return r})(t,e,n?.log);if(o.length?i.customWidgets=o:delete i.customWidgets,i.variants?.length)for(const e of i.variants)if(e.svgIcon)try{const n=await _(k(t,e.svgIcon),"utf-8");e.svgIcon=n}catch(t){n?.log&&n?.log(`Error loading svgIcon for variant ${e.id}: ${t}`)}return i},Py=async e=>{try{return await v(e,b.F_OK),!0}catch{return!1}};let Dy=null,jy=null;const Ry=()=>Dy||ky,Ly=()=>jy||Ey;let Fy=null;const Uy={setGlobalUserId:e=>Fy?.setGlobalUserId?.(e),captureError:e=>Fy?.captureError?.(e),flushMessages:async()=>Fy?.flushMessages?.(),isEnabled:()=>!!Fy};var Wy={...Uy,setTracker:e=>{Fy=e}};const By=ad("servicesManager"),Gy={};let Vy=null,Yy=null,Hy=null,zy=!1;class qy extends Error{code;originalError;constructor(e,t,n){super(e),this.code=t,this.originalError=n,this.name="ServiceError"}}const Ky=async e=>{try{return await v(e),!0}catch{return!1}},Jy=async e=>{if(!Vy)throw new Error('IPC config not set, call "setHubIpcConfig" first.');let t;if(e.info.internal)if("linux"===M()){const n=process.env.XDG_STATE_HOME||x.join(A(),".local","state");t=x.join(n,"kemu-hub","service-logs",e.info.name);try{await y(t,{recursive:!0})}catch(n){By(`Failed to create log directory ${t}, falling back to service path`),t=e.info.path}}else t=e.info.path;else t=x.join(e.info.path,"..");const n=e.logsEnabled?((e,t)=>{const n=Qm.createLogger({level:"info",format:Qm.format.combine(Qm.format.timestamp(),Qm.format.errors({stack:!0}),Qm.format.json()),defaultMeta:{service:e},transports:[new Sy({filename:x.join(t,"service-%DATE%.log"),datePattern:"YYYY-MM-DD",maxSize:"5m",maxFiles:"5d",auditFile:x.join(t,".service-log-audit.json")})]});return n.getLastLogs=async(n=100)=>{try{const r=x.join(t,".service-log-audit.json"),i=await m.readFile(r,"utf-8"),o=Tu(i);if(!o)return console.warn(`Missing audit file for ${e}, skipping log retrieval.`),[];const s=async e=>(await m.readFile(e,"utf-8")).split("\n").filter((e=>e.trim())),a=[],c=[...o.files].reverse();for(const e of c){const t=await s(e.name);if(a.push(...t),a.length>=n)break}return a}catch(t){return console.warn(`Failed to read service logs for ${e}: `,t),[]}},n})(e.info.name,t):null,r=t=>{if(!e.devMode){const{childProcess:r,...i}=e;Wy.isEnabled()&&Wy.captureError({error:t,data:{logs:n?.getLastLogs(),service:{...i,spawnargs:r?.spawnargs,info:void 0,name:e.info.name,version:e.info.version}}})}};try{if(e.info.processor===Su.Javascript){By(`Spawning service ${e.info.name} with sessionId ${e.info.sessionId}`);const t=x.join(e.info.path,"processor.js"),i=x.join(e.info.path,"processor.mjs"),o=await Ky(t)?t:i,s=[`--sessionId=${e.info.sessionId.toString()}`,`--ipcSpace=${Vy.appSpace}`,`--ipcId=${Vy?.id}`,`--recipePath=${Vy.recipePath||""}`];if(e.info.internal&&s.push("--internal=true"),!Hy)throw new Error('Get secrets function not set, call "setGetSecretsFunction" first.');const a=await Hy({name:e.info.name,version:e.info.version,requiredSecrets:e.info.requiredSecrets||{}}),c=Object.entries(e.info.requiredSecrets||{}).filter((([e,t])=>null==a[e]&&!t.optional)).map((([e])=>e));if(c?.length)throw new qy(`Missing required environment variables: ${c.join(", ")}`,"MISSING_REQUIRED_SECRETS");return new Promise(((t,i)=>{if(!Yy)throw new Error('Spawn function not set, call "setSpawnNodeFunction" first.');const c=Yy({args:[o,...s],serviceInfo:{name:e.info.name,version:e.info.version},options:{env:{...a}}});c.stdout.on("data",(t=>{const r=t.toString().trim();r&&(n?.info(r),By(`[${e.info.name}] - stdout: ${r}`))})),c.stderr.on("data",(t=>{const i=t.toString().trim();i&&(n?.error(i),r(new Error(i)),By(`[${e.info.name}] - stderr: ${i}`))})),c.on("exit",(t=>{const r=`exited with code ${t}`;n?.info(r,{code:t}),By(`[${e.info.name}] ${r}`)})),c.on("spawn",(()=>{const r=`spawned with PID ${c.pid}`;n?.info(r,{pid:c.pid}),By(`[${e.info.name}] ${r}`),t(c)})),c.on("error",(t=>{n?.error(`[${e.info.name}] error`,t),By(`[${e.info.name}] error: ${t}`),r(t),i(new qy(`Error spawning service ${e.info.name}: ${t}`,"SPAWN_ERROR"))}))}))}throw`Unsupported processor type ${e.info.processor}`}catch(t){if(r(t),t instanceof qy)throw t;throw`Error spawning service ${e.info.name}: ${t}`}},Zy=e=>e?.name?e?.version?e?.description?e?.processor?[Su.Javascript,Su.Executable,Su.Python].includes(e?.processor)?null:"Invalid processor":"Missing processor":"Missing description":"Missing version":"Missing name",Xy=async(e,t)=>{const n=x.join(e,"manifest.json");if(!await Ky(n)){const t=`Missing manifest for service ${e}. Aborting.`;return By(t),{error:t}}const r=await _(n,"utf-8"),i=Tu(r),o=Zy(i);if(!i||o){const t=`Invalid service manifest [${e}]: ${o}. Aborting.`;return By(t),{error:t}}let s;if(delete i.internal,t?.singleServiceName&&i.name!==t.singleServiceName)return{error:`Skipping service ${i.name} as it does not match the singleServiceName option`};await Promise.all([(async()=>{if(i.widgetUI)try{s=await _(x.join(e,"widgetUI.js"))}catch(e){const t=`Error loading widgetUI file ${i.name}: ${e}`;return By(t),{error:t}}})(),(async()=>{if(i.svgIcon){const t=await Ty(x.join(e,i.svgIcon));if(!t)return{error:`Error loading icon for service ${i.name}`};i.svgIcon=t}})(),(async()=>{if(i.subServices?.length)for(const t of i.subServices){const n=x.join(e,t),{error:r,service:o}=await Xy(n);r?By(`Error loading sub-service ${t}: ${r}`):o&&(o.info.parentService={name:i.name,version:i.version})}delete i.subServices})(),(async()=>{if(i.variants?.length)for(const t of i.variants)if(t.svgIcon)try{const n=await _(x.join(e,t.svgIcon),"utf-8");t.svgIcon=n}catch(e){By(`Error loading svgIcon for variant ${t.id}: ${e}`)}})()]);const a=xy(),c=t?.fixedSession||a;By(`Loaded service ${i.name} with sessionId ${c}`);const l=await My(i,e,{widgetUIContents:s});return Qy(l),Gy[c]={info:{...l,path:e,sessionId:c},status:"loaded",childProcess:null,logsEnabled:t?.logsEnabled},{service:Gy[c]}},Qy=e=>{e.widgetUIContents?e.uiContentChecksum=(e=>{const t=f("sha256");return t.update(e),t.digest("hex")})(e.widgetUIContents):e.uiContentChecksum=void 0},ev=async e=>{try{return e.childProcess=await Jy(e),e.status="started",e.errorMsg=void 0,e.errorCode=void 0,!0}catch(t){return By(`Service [${e.info.name}] error: ${t}`),e.status="error",t instanceof qy?(e.errorMsg=t.message,e.errorCode=t.code):(e.errorMsg="string"==typeof t?t:JSON.stringify(t),e.errorCode="UNKNOWN_ERROR"),!1}},tv=e=>{const{path:t,...n}=e.info;return{...n}},nv=()=>Object.values(Gy).filter((e=>"running"===e.status)).map(tv),rv=e=>{if(!e?.kill)return By(`Failed to kill service ${e?.pid} because it is not a child process`),!1;let t=e.kill("SIGINT");return t||(By(`Failed to send SIGINT to service ${e.pid} using SIGINT`),t=e.kill("SIGTERM"),t||(By(`Failed to send SIGTERM to service ${e.pid} using SIGTERM`),t=e.kill("SIGKILL"),t||By(`Failed to send SIGKILL to service ${e.pid} using SIGKILL`))),t},iv=async e=>{const{serviceName:t,version:n,force:r,timeout:i=15e3}=e,o=Object.values(Gy).find((t=>t.info.name===e.serviceName&&t.info.version===e.version));if(!o)return null;if(o.info.internal&&!r)throw`Cannot stop internal service ${t}`;if(o.childProcess){By(`Stopping service "${t} (v${n})"`);const r=new Promise(((e,n)=>{const r=setTimeout((()=>{n(new Error(`Timeout waiting for service ${t} to stop after ${i}ms`))}),i);o.childProcess.once("exit",((n,i)=>{clearTimeout(r),By(`Service ${t} process exited with code ${n} and signal ${i}`),e()})),o.childProcess.once("error",(n=>{clearTimeout(r),By(`Service ${t} process error: ${n.message}`),e()}))}));rv(o.childProcess);try{await r,By(`Service ${t} process successfully terminated`)}catch(e){By(`Warning: ${e instanceof Error?e.message:"Unknown error"} while waiting for service ${t} to stop`)}}return o.status="stopped",By(`Service ${t} stopped`),o},ov=e=>e.info.internal?e.info.path:x.join(e.info.path,".."),sv=e=>!!e.internal;var av={isOfficialKemuService:e=>e.name.startsWith("kemu.io"),loadServices:async(e,t)=>{if(!await Py(e))return void By(`Failed to load services from "${e}". Directory does not exist.`);const n=(await w(e,{withFileTypes:!0})).filter((e=>e.isDirectory())).map((e=>e.name));By(`Found ${n.length} services in "${e}"`);for(let r=0;r<n.length;r++){const i=n[r],o=x.join(e,i),{error:s,service:a}=await Xy(`${o}${t?.internalServices?"":"/dist"}`,{...t,logsEnabled:Array.isArray(t?.enableLogs)?t?.enableLogs.includes(i):t?.enableLogs});s&&By(`Failed to load service ${o}. Please check logs`),a&&t?.internalServices&&(a.info.internal=!0)}},launchServices:async e=>{if(By("Initializing services"),!Vy)throw new Error('IPC config not set, call "setHubIpcConfig" first.');for(const t in Gy){const n=Gy[t];e.noSpawningList&&e.noSpawningList.includes(n.info.name)?By(`Service ${n.info.name} is in the noSpawningList. Skipping.`):ev(n)}By("Services initialized")},setServiceStatus:(e,t)=>{const n=Gy[e];return n?(n.status=t,!0):(By(`Service with serviceId ${e} not found`),!1)},getActiveServices:nv,getMatchingService:(e,t)=>{const n=Object.values(Gy).filter((e=>"running"===e.status));for(const r of n)if(r.info.name===e){if(r.info.version===t)return r;if(Fu(r.info.version,t,">="))return r}return null},getServiceBySessionId:e=>Gy[e]||null,killAllServices:()=>{for(const e in Gy){const t=Gy[e];if(t.childProcess)try{By(`Killing service ${t.info.name} with PID ${t.childProcess.pid}`),rv(t.childProcess)}catch(e){By(`Error killing service ${t.info.name}: ${e}`)}}},addDevService:async(e,t,n)=>{const r={info:{...await My(t,t.path),sessionId:e},status:n,startedAt:new Date,devMode:!0,childProcess:null};Gy[e]=r,Qy(Gy[e].info)},setServiceManifest:(e,t,n)=>{const r=Gy[e];if(!r)return By(`Service with sessionId ${e} not found`),!1;const i=Zy(t);if(i)return By(`Invalid manifest for service ${r.info.name}: ${i}`),!1;Qy(t),r.info={...r.info,...t},n&&(r.status=n)},getMatchingDevService:(e,t,n)=>{const r=Object.values(Gy).filter((e=>e.devMode));for(const i of r)if(i.info.name===e&&i.status===n&&i.info.version===t)return i;return null},getInternalServices:()=>nv().filter((e=>e.internal)),getAllServices:()=>Object.values(Gy),stopService:iv,uninstallService:async(e,t)=>{By(`Uninstalling service ${e} v${t}`);const n=await iv({serviceName:e,version:t});if(!n)return!1;By(`Service ${e} stopped. Removing from disk...`);const r=ov(n),i=Ry();return r.startsWith(i)?(await S(r,{recursive:!0,force:!0,maxRetries:3}),By(`Service ${e} successfully removed from disk`),(e=>{Gy[e],delete Gy[e]})(n.info.sessionId),!0):(By(`Service ${e} is not installed in the user services directory. Aborting.`),!1)},getAllServiceVersions:e=>Object.values(Gy).filter((t=>t.info.name===e)),setHubIpcConfig:e=>{Vy={...e}},setEnableServiceLogsConfig:e=>{zy=e},loadAndLaunch:async(e,t,n)=>{const r=C(e,t),{error:i,service:o}=await Xy(r,{logsEnabled:zy});if(i||!o)return{errorMsg:i};try{o.info.internal=!!n,o.childProcess=await Jy(o),o.status="started"}catch(e){o.status="error",e instanceof qy?(By(`Service spawning error: ${e.message} (${e.code})`),o.errorMsg=e.message,o.errorCode=e.code):(By(`Error launching service ${o.info.name}: ${e}`),o.errorMsg="string"==typeof e?e:JSON.stringify(e))}return{service:o,errorCode:o.errorCode,errorMsg:o.errorMsg}},getServiceRootDirectory:ov,setSpawnNodeFunction:e=>{Yy=e},setGetSecretsFunction:e=>{Hy=e},restartService:async(e,t)=>{By(`Restarting service ${e} v${t}`);const n=await iv({serviceName:e,version:t,force:!0});return!!n&&ev(n)},getFailedServices:()=>Object.values(Gy).filter((e=>"error"===e.status)).map((e=>({...tv(e),errorMsg:e.errorMsg||"",errorCode:e.errorCode,status:e.status}))),isInternalKemuService:sv,isNotInternalKemuService:e=>!sv(e),isNotDevService:e=>!e.devMode};class cv{constructor(){}appspace="app.";socketRoot="/tmp/";id=T.hostname();encoding="utf8";rawBuffer=!1;sync=!1;unlink=!0;delimiter="\f";silent=!1;logDepth=5;logInColor=!0;logger=console.log.bind(console);maxConnections=100;retry=500;maxRetries=1/0;stopRetrying=!1;IPType=function(){const e=T.networkInterfaces();let t="";return e&&Array.isArray(e)&&e.length>0&&(t=e[Object.keys(e)[0]][0].family),t}();tls=!1;networkHost="IPv6"==this.IPType?"::1":"127.0.0.1";networkPort=8e3;readableAll=!1;writableAll=!1;interface={localAddress:!1,localPort:!1,family:!1,hints:!1,lookup:!1}}class lv{constructor(e){e||(e=new cv),this.delimiter=e.delimiter}format(e){return e.data||!1===e.data||0===e.data||(e.data={}),e.data._maxListeners&&(e.data={}),e.JSON+this.delimiter}parse(e){let t=e.split(this.delimiter);return t.pop(),t}}var uv=Vu((function(){Object.defineProperties(this,{data:{enumerable:!0,get:function(){return t},set:function(e){t=e}},type:{enumerable:!0,get:function(){return e},set:function(t){e=t}},load:{enumerable:!0,writable:!1,value:function(n){try{n=JSON.parse(n),e=n.type,t=n.data}catch(r){e="error",t={message:"Invalid JSON response format",err:r,response:n}}}},JSON:{enumerable:!0,get:function(){return JSON.stringify({type:e,data:t})}}});var e="",t={}})),dv=Vu((function(){Object.defineProperties(this,{add:{enumerable:!0,writable:!1,value:function(){for(var n in arguments)e.push(arguments[n]);t||this.stop||!this.autoRun||this.next()}},next:{enumerable:!0,writable:!1,value:function(){t=!0,e.length<1||this.stop?t=!1:e.shift().bind(this)()}},clear:{enumerable:!0,writable:!1,value:function(){return e=[]}},contents:{enumerable:!1,get:function(){return e},set:function(t){return e=t}},autoRun:{enumerable:!0,writable:!0,value:!0},stop:{enumerable:!0,writable:!0,value:!1}});var e=[],t=!1}));class hv{}class fv{}const pv=new class{constructor(e=!0){this.strict=e}throw(e,t){let n=new TypeError;if(n.message=`expected type of ${e} to be ${t}`,!this.strict)return!1;throw n}typeCheck(e,t){return typeof e===t||this.throw(typeof e,t)}instanceCheck(e=new hv,t=fv){return e instanceof t||this.throw(typeof e,t.name)}symbolStringCheck(e,t){return Object.prototype.toString.call(e)==`[object ${t}]`||this.throw(Object.prototype.toString.call(e),`[object ${t}]`)}compare(e,t,n){return e==t||this.throw(typeof e,n)}finite(e){return!!isFinite(e)||this.throw(typeof e,"finite")}NaN(e){return this.number(e)?!!isNaN(e)||this.throw(typeof e,"NaN"):this.number(e)}null(e){return this.compare(e,null,"null")}array(e){return this.instanceCheck(e,Array)}boolean(e){return this.typeCheck(e,"boolean")}bigint(e){return this.typeCheck(e,"bigint")}date(e){return this.instanceCheck(e,Date)}generator(e){return this.symbolStringCheck(e,"Generator")}asyncGenerator(e){return this.symbolStringCheck(e,"AsyncGenerator")}globalThis(e){return this.compare(e,globalThis,"explicitly globalThis, not window, global nor self")}infinity(e){return this.compare(e,1/0,"Infinity")}map(e){return this.instanceCheck(e,Map)}weakMap(e){return this.instanceCheck(e,WeakMap)}number(e){return this.typeCheck(e,"number")}object(e){return this.typeCheck(e,"object")}promise(e){return this.instanceCheck(e,Promise)}regExp(e){return this.instanceCheck(e,RegExp)}undefined(e){return this.typeCheck(e,"undefined")}set(e){return this.instanceCheck(e,Set)}weakSet(e){return this.instanceCheck(e,WeakSet)}string(e){return this.typeCheck(e,"string")}symbol(e){return this.typeCheck(e,"symbol")}function(e){return this.typeCheck(e,"function")}asyncFunction(e){return this.symbolStringCheck(e,"AsyncFunction")}generatorFunction(e){return this.symbolStringCheck(e,"GeneratorFunction")}asyncGeneratorFunction(e){return this.symbolStringCheck(e,"AsyncGeneratorFunction")}error(e){return this.instanceCheck(e,Error)}evalError(e){return this.instanceCheck(e,EvalError)}rangeError(e){return this.instanceCheck(e,RangeError)}referenceError(e){return this.instanceCheck(e,ReferenceError)}syntaxError(e){return this.instanceCheck(e,SyntaxError)}typeError(e){return this.instanceCheck(e,TypeError)}URIError(e){return this.instanceCheck(e,URIError)}bigInt64Array(e){return this.instanceCheck(e,BigInt64Array)}bigUint64Array(e){return this.instanceCheck(e,BigUint64Array)}float32Array(e){return this.instanceCheck(e,Float32Array)}float64Array(e){return this.instanceCheck(e,Float64Array)}int8Array(e){return this.instanceCheck(e,Int8Array)}int16Array(e){return this.instanceCheck(e,Int16Array)}int32Array(e){return this.instanceCheck(e,Int32Array)}uint8Array(e){return this.instanceCheck(e,Uint8Array)}uint8ClampedArray(e){return this.instanceCheck(e,Uint8ClampedArray)}uint16Array(e){return this.instanceCheck(e,Uint16Array)}uint32Array(e){return this.instanceCheck(e,Uint32Array)}arrayBuffer(e){return this.instanceCheck(e,ArrayBuffer)}dataView(e){return this.instanceCheck(e,DataView)}sharedArrayBuffer(e){return this.instanceCheck(e,function(){try{return SharedArrayBuffer}catch{return hv}}())}intlDateTimeFormat(e){return this.instanceCheck(e,Intl.DateTimeFormat)}intlCollator(e){return this.instanceCheck(e,Intl.Collator)}intlDisplayNames(e){return this.instanceCheck(e,Intl.DisplayNames)}intlListFormat(e){return this.instanceCheck(e,Intl.ListFormat)}intlLocale(e){return this.instanceCheck(e,Intl.Locale)}intlNumberFormat(e){return this.instanceCheck(e,Intl.NumberFormat)}intlPluralRules(e){return this.instanceCheck(e,Intl.PluralRules)}intlRelativeTimeFormat(e){return this.instanceCheck(e,Intl.RelativeTimeFormat)}intlRelativeTimeFormat(e){return this.instanceCheck(e,Intl.RelativeTimeFormat)}finalizationRegistry(e){return this.instanceCheck(e,FinalizationRegistry)}weakRef(e){return this.instanceCheck(e,WeakRef)}};class gv{constructor(){}on(e,t,n=!1){return pv.string(e),pv.function(t),pv.boolean(n),"*"==e&&(e=this.#e),this.#t[e]||(this.#t[e]=[]),t[this.#n]=n,this.#t[e].push(t),this}once(e,t){return this.on(e,t,!0)}off(e="*",t="*"){if(pv.string(e),e!=this.#e.toString()&&"*"!=e||(e=this.#e),!this.#t[e])return this;if("*"==t)return delete this.#t[e],this;pv.function(t);const n=this.#t[e];for(;n.includes(t);)n.splice(n.indexOf(t),1);return n.length<1&&delete this.#t[e],this}emit(e,...t){pv.string(e);const n=this.#t[this.#e]||[];if(this.#r(this.#e.toString(),n,e,...t),!this.#t[e])return this;const r=this.#t[e];return this.#r(e,r,...t),this}reset(){this.off(this.#e.toString());for(let e in this.#t)this.off(e);return this}get list(){return Object.assign({},this.#t)}#r=(e,t,...n)=>{pv.string(e),pv.array(t);const r=[];for(let e of t)e(...n),e[this.#n]&&r.push(e);for(let t of r)this.off(e,t)};#e=Symbol.for("event-pubsub-all");#n=Symbol.for("event-pubsub-once");#t={}}let mv=new lv;class yv extends gv{constructor(e,t){super(),this.config=e,this.log=t,this.publish=super.emit,e.maxRetries&&(this.retriesRemaining=e.maxRetries),mv=new lv(this.config)}Client=yv;queue=new dv;socket=!1;connect=wv;emit=vv;retriesRemaining=0;explicitlyDisconnected=!1}function vv(e,t){this.log("dispatching event to ",this.id,this.path," : ",e,",",t);let n=new uv;n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):mv.format(n),this.config.sync?this.queue.add(bv.bind(this,n)):this.socket.write(n)}function bv(e){this.log("dispatching event to ",this.id,this.path," : ",e),this.socket.write(e)}function wv(){let e=this;if(e.log("requested connection to ",e.id,e.path),!this.path)return void e.log("\n\n######\nerror: ",e.id," client has not specified socket path it wishes to connect to.");const t={};if(e.port)if(t.host=e.path,t.port=e.port,e.config.interface.localAddress&&(t.localAddress=e.config.interface.localAddress),e.config.interface.localPort&&(t.localPort=e.config.interface.localPort),e.config.interface.family&&(t.family=e.config.interface.family),e.config.interface.hints&&(t.hints=e.config.interface.hints),e.config.interface.lookup&&(t.lookup=e.config.interface.lookup),e.config.tls){if(e.log("Connecting client via TLS to",e.path,e.port,e.config.tls),e.config.tls.private&&(e.config.tls.key=O.readFileSync(e.config.tls.private)),e.config.tls.public&&(e.config.tls.cert=O.readFileSync(e.config.tls.public)),e.config.tls.trustedConnections){"string"==typeof e.config.tls.trustedConnections&&(e.config.tls.trustedConnections=[e.config.tls.trustedConnections]),e.config.tls.ca=[];for(let t=0;t<e.config.tls.trustedConnections.length;t++)e.config.tls.ca.push(O.readFileSync(e.config.tls.trustedConnections[t]))}Object.assign(e.config.tls,t),e.socket=B.connect(e.config.tls)}else e.log("Connecting client via TCP to",t),e.socket=W.connect(t);else e.log("Connecting client on Unix Socket :",e.path),t.path=e.path,"win32"!==process.platform||e.path.startsWith("\\\\.\\pipe\\")||(t.path=t.path.replace(/^\//,""),t.path=t.path.replace(/\//g,"-"),t.path=`\\\\.\\pipe\\${t.path}`),e.socket=W.connect(t);e.socket.setEncoding(this.config.encoding),e.socket.on("error",(function(t){e.log("\n\n######\nerror: ",t),e.publish("error",t)})),e.socket.on("connect",(function(){e.publish("connect"),e.retriesRemaining=e.config.maxRetries,e.log("retrying reset")})),e.socket.on("close",(function(){if(e.log("connection closed",e.id,e.path,e.retriesRemaining,"tries remaining of",e.config.maxRetries),e.config.stopRetrying||e.retriesRemaining<1||e.explicitlyDisconnected)return e.publish("disconnect"),e.log(e.config.id,"exceeded connection rety amount of"," or stopRetrying flag set."),e.socket.destroy(),e.publish("destroy"),void(e=void 0);setTimeout(function(){e.explicitlyDisconnected||(e.retriesRemaining--,e.connect())}.bind(null,e),e.config.retry),e.publish("disconnect")})),e.socket.on("data",(function(t){if(e.log("## received events ##"),e.config.rawBuffer){if(e.publish("data",Buffer.from(t,e.config.encoding)),!e.config.sync)return;return void e.queue.next()}if(this.ipcBuffer||(this.ipcBuffer=""),(t=this.ipcBuffer+=t).slice(-1)!=mv.delimiter||-1==t.indexOf(mv.delimiter))return void e.log("Messages are large, You may want to consider smaller messages.");this.ipcBuffer="";const n=mv.parse(t),r=n.length;for(let t=0;t<r;t++){let r=new uv;r.load(n[t]),e.log("detected event",r.type,r.data),e.publish(r.type,r.data)}e.config.sync&&e.queue.next()}))}let Sv=new lv;class _v extends gv{constructor(e,t,n,r){super(),this.config=t,this.path=e,this.port=r,this.log=n,this.publish=super.emit,Sv=new lv(this.config),this.on("close",kv.bind(this))}udp4=!1;udp6=!1;server=!1;sockets=[];emit=Iv;broadcast=xv;onStart(e){this.publish("start",e)}stop(){this.server.close()}start(){this.path?this.config.unlink?O.unlink(this.path,Ov.bind(this)):Ov.bind(this)():this.log("Socket Server Path not specified, refusing to start")}}function Iv(e,t,n){this.log("dispatching event to socket"," : ",t,n);let r=new uv;if(r.type=t,r.data=n,this.config.rawBuffer?(this.log(this.config.encoding),r=Buffer.from(t,this.config.encoding)):r=Sv.format(r),this.udp4||this.udp6)return e.address&&e.port?void this.server.write(r,e):(this.log("Attempting to emit to a single UDP socket without supplying socket address or port. Redispatching event as broadcast to all connected sockets"),void this.broadcast(t,n));e.write(r)}function xv(e,t){this.log("broadcasting event to all known sockets listening to ",this.path," : ",this.port?this.port:"",e,t);let n=new uv;if(n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):Sv.format(n),this.udp4||this.udp6)for(let e=1,t=this.sockets.length;e<t;e++)this.server.write(n,this.sockets[e]);else for(let e=0,t=this.sockets.length;e<t;e++)this.sockets[e].write(n)}function kv(){for(let e=0,t=this.sockets.length;e<t;e++){let t=this.sockets[e],n=!1;if(!t||!t.readable)return t.id&&(n=t.id),this.log("socket disconnected",n.toString()),t&&t.destroy&&t.destroy(),this.sockets.splice(e,1),void this.publish("socket.disconnected",t,n)}}function Ev(e,t,n){let r=this.udp4||this.udp6?n:e;if(this.config.rawBuffer)return t=Buffer.from(t,this.config.encoding),void this.publish("data",t,r);if(r.ipcBuffer||(r.ipcBuffer=""),(t=r.ipcBuffer+=t).slice(-1)==Sv.delimiter&&-1!=t.indexOf(Sv.delimiter))for(r.ipcBuffer="",t=Sv.parse(t);t.length>0;){let e=new uv;e.load(t.shift()),e.data&&e.data.id&&(r.id=e.data.id),this.log("received event of : ",e.type,e.data),this.publish(e.type,e.data,r)}else this.log("Messages are large, You may want to consider smaller messages.")}function Cv(e){this.publish("close",e)}function $v(e){this.sockets.push(e),e.setEncoding&&e.setEncoding(this.config.encoding),this.log("## socket connection to server detected ##"),e.on("close",Cv.bind(this)),e.on("error",function(e){this.log("server socket error",e),this.publish("error",e)}.bind(this)),e.on("data",Ev.bind(this,e)),e.on("message",function(t,n){if(!n)return;let r;this.log("Received UDP message from ",n.address,n.port),r=this.config.rawSocket?Buffer.from(t,this.config.encoding):t.toString(),e.emit("data",r,n)}.bind(this)),this.publish("connect",e),this.config.rawBuffer}function Ov(){return this.log("starting server on ",this.path,this.port?`:${this.port}`:""),this.udp4||this.udp6?(this.server=G.createSocket(this.udp4?"udp4":"udp6"),this.server.write=Tv.bind(this),this.server.on("listening",function(){$v.bind(this)(this.server)}.bind(this))):(this.log("starting TLS server",this.config.tls),this.config.tls?Nv.bind(this)():this.server=W.createServer($v.bind(this))),this.server.on("error",function(e){this.log("server error",e),this.publish("error",e)}.bind(this)),this.server.maxConnections=this.config.maxConnections,this.port?this.udp4||this.udp6?(this.log("starting server as",this.udp4?"udp4":"udp6"),this.server.bind(this.port,this.path),void this.onStart({address:this.path,port:this.port})):(this.log("starting server as",this.config.tls?"TLS":"TCP"),void this.server.listen(this.port,this.path,this.onStart.bind(this))):(this.log("starting server as","Unix || Windows Socket"),"win32"===process.platform&&(this.path=this.path.replace(/^\//,""),this.path=this.path.replace(/\//g,"-"),this.path=`\\\\.\\pipe\\${this.path}`),void this.server.listen({path:this.path,readableAll:this.config.readableAll,writableAll:this.config.writableAll},this.onStart.bind(this)))}function Nv(){if(this.log("starting TLS server",this.config.tls),this.config.tls.private?this.config.tls.key=O.readFileSync(this.config.tls.private):this.config.tls.key=O.readFileSync(`${__dirname}/../local-node-ipc-certs/private/server.key`),this.config.tls.public?this.config.tls.cert=O.readFileSync(this.config.tls.public):this.config.tls.cert=O.readFileSync(`${__dirname}/../local-node-ipc-certs/server.pub`),this.config.tls.dhparam&&(this.config.tls.dhparam=O.readFileSync(this.config.tls.dhparam)),this.config.tls.trustedConnections){"string"==typeof this.config.tls.trustedConnections&&(this.config.tls.trustedConnections=[this.config.tls.trustedConnections]),this.config.tls.ca=[];for(let e=0;e<this.config.tls.trustedConnections.length;e++)this.config.tls.ca.push(O.readFileSync(this.config.tls.trustedConnections[e]))}this.server=B.createServer(this.config.tls,$v.bind(this))}function Tv(e,t){let n=Buffer.from(e,this.config.encoding);this.server.send(n,0,n.length,t.port,t.address,(function(e){e&&(this.log("error writing data to socket",e),this.publish("error",(function(e){this.publish("error",e)})))}))}class Av{constructor(){}config=new cv;of={};server=!1;get connectTo(){return Lv}get connectToNet(){return Fv}get disconnect(){return Pv}get serve(){return Dv}get serveNet(){return Rv}get log(){return Mv}set connectTo(e){return Lv}set connectToNet(e){return Fv}set disconnect(e){return Pv}set serve(e){return Dv}set serveNet(e){return Rv}set log(e){return Mv}}function Mv(...e){if(!this.config.silent){for(let t=0,n=e.length;t<n;t++)"object"==typeof e[t]&&(e[t]=i.inspect(e[t],{depth:this.config.logDepth,colors:this.config.logInColor}));this.config.logger(e.join(" "))}}function Pv(e){this.of[e]&&(this.of[e].explicitlyDisconnected=!0,this.of[e].off("*","*"),this.of[e].socket&&this.of[e].socket.destroy&&this.of[e].socket.destroy(),delete this.of[e])}function Dv(e,t){"function"==typeof e&&(t=e,e=!1),e||(this.log("Server path not specified, so defaulting to","ipc.config.socketRoot + ipc.config.appspace + ipc.config.id",this.config.socketRoot+this.config.appspace+this.config.id),e=this.config.socketRoot+this.config.appspace+this.config.id),t||(t=jv),this.server=new _v(e,this.config,Mv),this.server.on("start",t)}function jv(){}function Rv(e,t,n,r){"number"==typeof e&&(r=n,n=t,t=e,e=!1),"function"==typeof e&&(r=e,n=!1,e=!1,t=!1),e||(this.log("Server host not specified, so defaulting to","ipc.config.networkHost",this.config.networkHost),e=this.config.networkHost),"udp4"!=e.toLowerCase()&&"udp6"!=e.toLowerCase()||(r=t,n=e.toLowerCase(),t=!1,e=this.config.networkHost),"string"==typeof t&&(r=n,n=t,t=!1),"function"==typeof t&&(r=t,n=!1,t=!1),t||(this.log("Server port not specified, so defaulting to","ipc.config.networkPort",this.config.networkPort),t=this.config.networkPort),"function"==typeof n&&(r=n,n=!1),r||(r=jv),this.server=new _v(e,this.config,Mv,t),n&&(this.server[n]=!0,"udp4"===n&&"::1"===e&&(this.server.path="127.0.0.1")),this.server.on("start",r)}function Lv(e,t,n){if("function"==typeof t&&(n=t,t=!1),n||(n=jv),e){if(t||(this.log("Service path not specified, so defaulting to","ipc.config.socketRoot + ipc.config.appspace + id",(this.config.socketRoot+this.config.appspace+e).data),t=this.config.socketRoot+this.config.appspace+e),this.of[e]){if(!this.of[e].socket.destroyed)return this.log("Already Connected to",e,"- So executing success without connection"),void n();this.of[e].socket.destroy()}this.of[e]=new yv(this.config,this.log),this.of[e].id=e,this.of[e].socket&&(this.of[e].socket.id=e),this.of[e].path=t,this.of[e].connect(),n(this)}else this.log("Service id required","Requested service connection without specifying service id. Aborting connection attempt")}function Fv(e,t,n,r){if(e){if("number"==typeof t&&(r=n,n=t,t=!1),"function"==typeof t&&(r=t,t=!1,n=!1),t||(this.log("Server host not specified, so defaulting to","ipc.config.networkHost",this.config.networkHost),t=this.config.networkHost),"function"==typeof n&&(r=n,n=!1),n||(this.log("Server port not specified, so defaulting to","ipc.config.networkPort",this.config.networkPort),n=this.config.networkPort),"string"==typeof r&&(UDPType=r,r=!1),r||(r=jv),this.of[e]){if(!this.of[e].socket.destroyed)return this.log("Already Connected to",e,"- So executing success without connection"),void r();this.of[e].socket.destroy()}this.of[e]=new yv(this.config,this.log),this.of[e].id=e,this.of[e].socket&&(this.of[e].socket.id=e),this.of[e].path=t,this.of[e].port=n,this.of[e].connect(),r(this)}else this.log("Service id required","Requested service connection without specifying service id. Aborting connection attempt")}const Uv=new class extends Av{constructor(){super()}IPC=Av};const Wv=Object.values({protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8}).reduce(((e,t)=>e+t),0),Bv=e=>{try{return JSON.parse(e)}catch(e){return null}},Gv="undefined"!=typeof window,Vv={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},Yv={protocolPrefix:4,txtLength:4},Hv=Object.values(Vv).reduce(((e,t)=>e+t),0),zv=Object.values(Yv).reduce(((e,t)=>e+t),0),qv=["width","height","colorSpace"],Kv=(e,t)=>{const n={},r=[];let i=0,o=Array.isArray(e)?[]:{};const s=(e,o)=>{const a=(e=>{const t="undefined"!=typeof Buffer&&e instanceof Buffer,n=e instanceof ArrayBuffer,r=e instanceof Uint8ClampedArray,i=e instanceof Uint8Array,o=e instanceof Int8Array;return t?"Buffer":n?"ArrayBuffer":r?"Uint8ClampedArray":i?"Uint8Array":o?"Int8Array":null})(e);if(!a){if(Array.isArray(e)){const t=[];for(let n=0;n<e.length;n++)t[n]=s(e[n],`${o}[${n}]`);return t}if("object"==typeof e){const t={},n=(e=>{const t=e instanceof Int16Array,n=e instanceof Uint16Array,r=e instanceof Int32Array,i=e instanceof Uint32Array,o=e instanceof Float32Array,s=e instanceof Float64Array,a=e instanceof BigInt64Array,c=e instanceof BigUint64Array;return t?"Int16Array":n?"Uint16Array":r?"Int32Array":i?"Uint32Array":o?"Float32Array":s?"Float64Array":a?"BigInt64Array":c?"BigUint64Array":null})(e);if(n)throw new Error(`Unsupported binary type [${n}] at path "${o}"`);for(const n in e)Object.hasOwn(e,n)||qv.includes(n)||console.warn(`Allowing inherited property: ${n} from path: ${o}`),t[n]=s(e[n],`${o.length?`${o}.`:""}${n}`);return t}return e}n[o]={index:i,length:e.byteLength,binaryType:a},"Buffer"===t?r.push(Buffer.from(e)):"ArrayBuffer"===a?r.push(e):r.push(e.buffer),i+=e.byteLength};o=s(e,"");let a=null;if(r.length>1)if("ArrayBuffer"===t){const e=r.reduce(((e,t)=>e+t.byteLength),0),t=new Uint8Array(e);let n=0;for(let e=0;e<r.length;e++)t.set(new Uint8Array(r[e]),n),n+=r[e].byteLength;a=t.buffer}else a=Buffer.concat(r);else 1===r.length&&(a=r[0]);return a?{map:n,combinedData:a,sourceCopy:o}:null},Jv=(e,t,n)=>{const r=t.match(/(\[\d+\])|([^[\].]+)/g)||[];let i=e;for(let e=0;e<r.length;e++){let t=r[e];const o=t.startsWith("[")&&t.endsWith("]"),s=e===r.length-1;if(o){t=t.slice(1,-1);const o=parseInt(t,10);if(!Array.isArray(i))throw new Error(`Expected an array at key "${r.slice(0,e).join(".")}" but found an object.`);s?i[o]=n:(i[o]||(i[o]=r[e+1].startsWith("[")?[]:{}),i=i[o])}else s?i[t]=n:(i[t]||(i[t]=r[e+1].startsWith("[")?[]:{}),i=i[t])}return e},Zv=(e,t,n)=>{const r="undefined"!=typeof Buffer,i=t instanceof Uint8Array;for(const o in n)if(Object.hasOwn(n,o)){const{index:s,length:a,binaryType:c}=n[o];let l=null;if(r&&t instanceof Buffer)switch(c){case"Buffer":l=t.subarray(s,s+a);break;case"ArrayBuffer":l=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a);break;case"Uint8Array":l=new Uint8Array(t.subarray(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.subarray(s,s+a));break;case"Int8Array":l=new Int8Array(t.subarray(s,s+a))}else if(t instanceof ArrayBuffer||t instanceof Uint8Array)switch(c){case"Buffer":if(r){l=Buffer.from(t.slice(s,s+a));break}case"ArrayBuffer":l=i?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a):t.slice(s,s+a);break;case"Uint8Array":l=i?t.slice(s,s+a):new Uint8Array(t.slice(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.slice(s,s+a));break;case"Int8Array":l=new Int8Array(t.slice(s,s+a))}l&&Jv(e,o,l)}return e},Xv=e=>sd(e),Qv="KMSG",eb="KCMD",tb=Xv("klProtocol");var nb={encode:(e,t,n)=>{const r={json:e.json},i=Kv(r.json,"Buffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=Buffer.from(a),l=c.byteLength,u=Vv.protocolPrefix+Vv.protocolVersion+Vv.jsonLength+Vv.binaryLength+Vv.fromServiceId+Vv.toServiceId+Vv.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write(Qv,f),f+=Vv.protocolPrefix,d.writeUInt8(1,f),f+=Vv.protocolVersion,d.writeUInt32LE(l,f),f+=Vv.jsonLength,d.writeUInt32LE(s,f),f+=Vv.binaryLength,d.writeUInt32LE(t,f),f+=Vv.fromServiceId,d.writeUInt32LE(n,f),f+=Vv.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=Vv.sentAt,c.copy(d,f),f+=l,o&&s&&o.copy(d,f),d},decodeHeader:e=>{let t=0;const n=e.toString("utf-8",t,Vv.protocolPrefix);if(t+=Vv.protocolPrefix,n!==Qv)return null;if(e.byteLength<Hv)return tb(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=Vv.protocolVersion;const i=e.readUInt32LE(t);t+=Vv.jsonLength;const o=e.readUInt32LE(t);t+=Vv.binaryLength;const s=e.readUInt32LE(t);t+=Vv.fromServiceId;const a=e.readUInt32LE(t);t+=Vv.toServiceId;const c=e.readBigInt64LE(t);t+=Vv.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,Hv);let h=null;return e.byteLength-Hv-i-o>0&&(h=e.subarray(Hv+i+o)),{header:{protocolVersion:r,jsonLength:i,binaryLength:o,fromServiceId:s,toServiceId:a,sentAt:new Date(Number(c)),packages:[u],headerPackage:d},remaining:h}},decodeFullKlMessage:e=>{const t=Buffer.concat(e.packages),n=t.subarray(0,e.jsonLength).toString(),r=t.subarray(e.jsonLength,e.jsonLength+e.binaryLength),i=Bv(n);if(!i?.json)return tb("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&Zv(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=Hv+e.jsonLength+e.binaryLength;return o.byteLength>c&&(a=o.subarray(c),s=o.subarray(0,c)),{message:{json:i.json,rawMessage:s},remaining:a}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<Hv)return tb("Invalid Header Size"),e;let n=0;return n+=Vv.protocolPrefix,n+=Vv.protocolVersion,n+=Vv.jsonLength,n+=Vv.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=Vv.fromServiceId,void 0!==t.toServiceId&&e.writeUInt32LE(t.toServiceId,n),e},encodeCommand:e=>{let t=0;const n=Buffer.from(e),r=n.byteLength,i=zv+r,o=Buffer.alloc(i);return o.write(eb,t),t+=Yv.protocolPrefix,o.writeUint32LE(r,t),t+=Yv.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<zv)return{command:null};const n=e.toString("utf-8",t,Yv.protocolPrefix);if(t+=Yv.protocolPrefix,n!==eb)return{command:null};const r=e.readUInt32LE(t);t+=Yv.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-zv-r;let s=null;o>0&&(s=e.subarray(zv+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const rb="KMSG",ib="KCMD",ob=Xv("klProtocol"),sb=new TextEncoder;var ab={encode:(e,t,n)=>{const r={json:e.json},i=Kv(e.json,"ArrayBuffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=sb.encode(a),l=c.byteLength,u=new ArrayBuffer(Vv.protocolPrefix+Vv.protocolVersion+Vv.jsonLength+Vv.binaryLength+Vv.fromServiceId+Vv.toServiceId+Vv.sentAt+l+s),d=new DataView(u),h=new Uint8Array(u),f=Date.now();let p=0;for(let e=0;e<4;++e)h[p++]=rb.charCodeAt(e);return d.setUint8(p,1),p+=Vv.protocolVersion,d.setUint32(p,l,!0),p+=Vv.jsonLength,d.setUint32(p,s,!0),p+=Vv.binaryLength,d.setUint32(p,t,!0),p+=Vv.fromServiceId,d.setUint32(p,n,!0),p+=Vv.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=Vv.sentAt,h.set(c,p),p+=l,o&&s&&h.set(new Uint8Array(o),p),u},decodeHeader:e=>{const t=new DataView(e);let n=0,r="";for(let e=0;e<Vv.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==rb)return null;if(e.byteLength<Hv)return ob.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=Vv.protocolVersion;const o=t.getUint32(n,!0);n+=Vv.jsonLength;const s=t.getUint32(n,!0);n+=Vv.binaryLength;const a=t.getUint32(n,!0);n+=Vv.fromServiceId;const c=t.getUint32(n,!0);n+=Vv.toServiceId;const l=t.getBigInt64(n,!0);n+=Vv.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,Hv);let f=null;return e.byteLength-Hv-o-s>0&&(f=new Uint8Array(e,Hv+o+s).slice().buffer),{header:{protocolVersion:i,jsonLength:o,binaryLength:s,fromServiceId:a,toServiceId:c,sentAt:new Date(Number(l)),packages:[d],headerPackage:h.slice().buffer},remaining:f}},decodeFullKlMessage:e=>{const t=e.packages.reduce(((e,t)=>e+t.byteLength),0),n=new Uint8Array(t);let r,i=0;for(const t of e.packages)r=new Uint8Array(t),n.set(r,i),i+=r.byteLength;const o=(new TextDecoder).decode(n.subarray(0,e.jsonLength)),s=n.subarray(e.jsonLength,e.jsonLength+e.binaryLength),a=Bv(o);if(!a?.json)return ob.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&Zv(a.json,s,a.jsonBinaryMap);const c=new Uint8Array(e.headerPackage.byteLength+n.byteLength);c.set(new Uint8Array(e.headerPackage),0),c.set(n,e.headerPackage.byteLength);let l=c,u=null;const d=Hv+e.jsonLength+e.binaryLength;return c.byteLength>d&&(u=c.subarray(d),l=c.subarray(0,d)),{message:{json:a.json,...s.length?{binaryData:s.buffer}:{},rawMessage:l.buffer},remaining:u?.buffer??null}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<Hv)return ob("Invalid Header Size"),e;let n=0;n+=Vv.protocolPrefix,n+=Vv.protocolVersion,n+=Vv.jsonLength,n+=Vv.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=Vv.fromServiceId,void 0!==t.toServiceId&&r.setUint32(n,t.toServiceId,!0),e},encodeCommand:e=>{let t=0;const n=sb.encode(e),r=n.byteLength,i=new ArrayBuffer(zv+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=ib.charCodeAt(e);return o.setUint32(t,r,!0),t+=Yv.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<zv)return{command:null};let r="";for(let e=0;e<Yv.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==ib)return{command:null};const i=t.getUint32(n,!0);n+=Yv.txtLength;const o=e.byteLength-zv-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-zv)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(zv+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};const cb=Xv("klTransmissionManager"),lb=()=>{const e=(t,n,r,i)=>{let o=n,s=null;const a=t instanceof ArrayBuffer;if(cb(`RAW: ${t.toString()}`),!o||o.partialHeaderData){let c;if(a?(c=o?.partialHeaderData?new Uint8Array([...new Uint8Array(o.partialHeaderData),...new Uint8Array(t)]).buffer:t,s=ab.decodeHeader(c)):(c=o?.partialHeaderData?Buffer.concat([o.partialHeaderData,t]):t,s=nb.decodeHeader(c)),!s){const{command:t,missing:o,remainingData:s}=a?ab.decodeCommand(c):nb.decodeCommand(c);return t?i({command:t,complete:!0,rawMessage:c}):cb(o?`ERROR: Missing ${o} bytes to complete the command. This partial command will be aborted.`:`ERROR: Invalid state, message was decoded without a header or partial header data. Discarding ${c.byteLength} bytes`),s?(cb(`${s.byteLength} bytes remain after processing command. Re-analyzing...`),e(s,n,r,i)):void 0}if(s.partialHeader)return o={firstPackageAt:Date.now(),partialHeaderData:c},r(o);if(!s.header)return cb(`ERROR: Invalid state, message was decoded without a header or partial header data. Discarding ${c.byteLength} bytes`);const l=s.header;o={firstPackageAt:Date.now(),header:{...l,totalBytesReceived:l.packages[0].byteLength,totalBytesExpected:l.binaryLength+l.jsonLength,remaining:s.remaining}},r(o)}else o.header&&o.header.totalBytesReceived<o.header.totalBytesExpected&&(o.header.packages.push(t),o.header.totalBytesReceived+=t.byteLength,r(o));if(o.header&&o.header.totalBytesReceived>=o.header.totalBytesExpected){const t=Date.now()-o.header.sentAt.getTime(),n=Date.now()-o.firstPackageAt;cb(`Received ${o.header.totalBytesReceived} of ${o.header.totalBytesExpected} expected in ${t} ms, elapsed since first package: ${n}ms`);const s=a?ab.decodeFullKlMessage(o.header):nb.decodeFullKlMessage(o.header),c=o.header.totalBytesReceived,l=o.header.remaining;r(null),s&&i({klMessage:s.message,complete:!0,sourceServiceId:o.header.fromServiceId,targetServiceId:o.header.toServiceId,rawMessage:s.message.rawMessage});let u=l;if(s?.remaining&&(u=a?l?((e,t)=>{const n=e.byteLength+t.byteLength,r=new ArrayBuffer(n),i=new Uint8Array(e),o=new Uint8Array(t),s=new Uint8Array(r);return s.set(i),s.set(o,i.length),r})(l,s.remaining):s.remaining:l?Buffer.concat([l,s.remaining]):s.remaining),u)return cb(`${u.byteLength} bytes remaining after processing message with ${c} bytes of data. Re-analyzing...`),e(u,null,r,i)}};return e};Uv.config={...Uv.config,id:"widgets",retry:1500,silent:!0,rawBuffer:!0,appspace:"kemu.",encoding:"hex"};const ub={info:ad("ipcServer:info"),data:ad("ipcServer:data")};let db,hb,fb,pb,gb={};const mb=lb(),yb=e=>{gb[e]&&(ub.info(`Client disconnected [${e}]`),delete gb[e],hb&&hb(e))};var vb=(e,t)=>{const n=gb[e];if(!n)return ub.info(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=Wv)return ub.info("Message is too long to be a command. Use sendMessage instead."),!1;const r=nb.encodeCommand(t);return n.socket.write(r),!0},bb=(e,t)=>{const n=gb[e];return!!n&&(ub.info(`Renaming socket id [${e}] to [${t}]`),delete gb[e],n.socket.id=t,gb[t]=n,n.socket.removeListener("close",n.disconnectHandler),n.disconnectHandler=()=>yb(t),n.socket.on("close",n.disconnectHandler),!0)};let wb=nb;Gv&&(wb=ab);var Sb,_b=wb;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}(Sb||(Sb={}));let Ib=Math.ceil(Date.now()/1e3);var xb={exports:{}};const kb=["nodebuffer","arraybuffer","fragments"],Eb="undefined"!=typeof Blob;Eb&&kb.push("blob");var Cb={BINARY_TYPES:kb,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Eb,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const{EMPTY_BUFFER:$b}=Cb,Ob=Buffer[Symbol.species];function Nb(e,t,n,r,i){for(let o=0;o<i;o++)n[r+o]=e[o]^t[3&o]}function Tb(e,t){for(let n=0;n<e.length;n++)e[n]^=t[3&n]}if(xb.exports={concat:function(e,t){if(0===e.length)return $b;if(1===e.length)return e[0];const n=Buffer.allocUnsafe(t);let r=0;for(let t=0;t<e.length;t++){const i=e[t];n.set(i,r),r+=i.length}return r<t?new Ob(n.buffer,n.byteOffset,r):n},mask:Nb,toArrayBuffer:function(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)},toBuffer:function e(t){if(e.readOnly=!0,Buffer.isBuffer(t))return t;let n;return t instanceof ArrayBuffer?n=new Ob(t):ArrayBuffer.isView(t)?n=new Ob(t.buffer,t.byteOffset,t.byteLength):(n=Buffer.from(t),e.readOnly=!1),n},unmask:Tb},!process.env.WS_NO_BUFFER_UTIL)try{const e=require("bufferutil");xb.exports.mask=function(t,n,r,i,o){o<48?Nb(t,n,r,i,o):e.mask(t,n,r,i,o)},xb.exports.unmask=function(t,n){t.length<32?Tb(t,n):e.unmask(t,n)}}catch(x){}var Ab=xb.exports;const Mb=Symbol("kDone"),Pb=Symbol("kRun"),Db=R,jb=Ab,Rb=class{constructor(e){this[Mb]=()=>{this.pending--,this[Pb]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Pb]()}[Pb](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[Mb])}}},{kStatusCode:Lb}=Cb,Fb=Buffer[Symbol.species],Ub=Buffer.from([0,0,255,255]),Wb=Symbol("permessage-deflate"),Bb=Symbol("total-length"),Gb=Symbol("callback"),Vb=Symbol("buffers"),Yb=Symbol("error");let Hb;var zb=class{constructor(e,t,n){if(this._maxPayload=0|n,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!Hb){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;Hb=new Rb(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[Gb];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,n=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!n)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(n.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?n.client_max_window_bits=t.clientMaxWindowBits:!0!==n.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete n.client_max_window_bits,n}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let n=e[t];if(n.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(n=n[0],"client_max_window_bits"===t){if(!0!==n){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}else if("server_max_window_bits"===t){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==n)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}e[t]=n}))})),e}decompress(e,t,n){Hb.add((r=>{this._decompress(e,t,((e,t)=>{r(),n(e,t)}))}))}compress(e,t,n){Hb.add((r=>{this._compress(e,t,((e,t)=>{r(),n(e,t)}))}))}_decompress(e,t,n){const r=this._isServer?"client":"server";if(!this._inflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?Db.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=Db.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[Wb]=this,this._inflate[Bb]=0,this._inflate[Vb]=[],this._inflate.on("error",Jb),this._inflate.on("data",Kb)}this._inflate[Gb]=n,this._inflate.write(e),t&&this._inflate.write(Ub),this._inflate.flush((()=>{const e=this._inflate[Yb];if(e)return this._inflate.close(),this._inflate=null,void n(e);const i=jb.concat(this._inflate[Vb],this._inflate[Bb]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Bb]=0,this._inflate[Vb]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),n(null,i)}))}_compress(e,t,n){const r=this._isServer?"server":"client";if(!this._deflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?Db.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=Db.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[Bb]=0,this._deflate[Vb]=[],this._deflate.on("data",qb)}this._deflate[Gb]=n,this._deflate.write(e),this._deflate.flush(Db.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=jb.concat(this._deflate[Vb],this._deflate[Bb]);t&&(e=new Fb(e.buffer,e.byteOffset,e.length-4)),this._deflate[Gb]=null,this._deflate[Bb]=0,this._deflate[Vb]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),n(null,e)}))}};function qb(e){this[Vb].push(e),this[Bb]+=e.length}function Kb(e){this[Bb]+=e.length,this[Wb]._maxPayload<1||this[Bb]<=this[Wb]._maxPayload?this[Vb].push(e):(this[Yb]=new RangeError("Max payload size exceeded"),this[Yb].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Yb][Lb]=1009,this.removeListener("data",Kb),this.reset())}function Jb(e){this[Wb]._inflate=null,e[Lb]=1007,this[Gb](e)}var Zb={exports:{}};const{isUtf8:Xb}=D,{hasBlob:Qb}=Cb;function ew(e){const t=e.length;let n=0;for(;n<t;)if(128&e[n])if(192==(224&e[n])){if(n+1===t||128!=(192&e[n+1])||192==(254&e[n]))return!1;n+=2}else if(224==(240&e[n])){if(n+2>=t||128!=(192&e[n+1])||128!=(192&e[n+2])||224===e[n]&&128==(224&e[n+1])||237===e[n]&&160==(224&e[n+1]))return!1;n+=3}else{if(240!=(248&e[n]))return!1;if(n+3>=t||128!=(192&e[n+1])||128!=(192&e[n+2])||128!=(192&e[n+3])||240===e[n]&&128==(240&e[n+1])||244===e[n]&&e[n+1]>143||e[n]>244)return!1;n+=4}else n++;return!0}if(Zb.exports={isBlob:function(e){return Qb&&"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&("Blob"===e[Symbol.toStringTag]||"File"===e[Symbol.toStringTag])},isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:ew,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},Xb)Zb.exports.isValidUTF8=function(e){return e.length<24?ew(e):Xb(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const e=require("utf-8-validate");Zb.exports.isValidUTF8=function(t){return t.length<32?ew(t):e(t)}}catch(x){}var tw=Zb.exports;const{Writable:nw}=P,rw=zb,{BINARY_TYPES:iw,EMPTY_BUFFER:ow,kStatusCode:sw,kWebSocket:aw}=Cb,{concat:cw,toArrayBuffer:lw,unmask:uw}=Ab,{isValidStatusCode:dw,isValidUTF8:hw}=tw,fw=Buffer[Symbol.species];const{randomFillSync:pw}=u,gw=zb,{EMPTY_BUFFER:mw,kWebSocket:yw,NOOP:vw}=Cb,{isBlob:bw,isValidStatusCode:ww}=tw,{mask:Sw,toBuffer:_w}=Ab,Iw=Symbol("kByteLength"),xw=Buffer.alloc(4),kw=8192;let Ew,Cw=kw;function $w(e,t,n){"function"==typeof n&&n(t);for(let n=0;n<e._queue.length;n++){const r=e._queue[n],i=r[r.length-1];"function"==typeof i&&i(t)}}function Ow(e,t,n){$w(e,t,n),e.onerror(t)}const{kForOnEventAttribute:Nw,kListener:Tw}=Cb,Aw=Symbol("kCode"),Mw=Symbol("kData"),Pw=Symbol("kError"),Dw=Symbol("kMessage"),jw=Symbol("kReason"),Rw=Symbol("kTarget"),Lw=Symbol("kType"),Fw=Symbol("kWasClean");class Uw{constructor(e){this[Rw]=null,this[Lw]=e}get target(){return this[Rw]}get type(){return this[Lw]}}Object.defineProperty(Uw.prototype,"target",{enumerable:!0}),Object.defineProperty(Uw.prototype,"type",{enumerable:!0});class Ww extends Uw{constructor(e,t={}){super(e),this[Aw]=void 0===t.code?0:t.code,this[jw]=void 0===t.reason?"":t.reason,this[Fw]=void 0!==t.wasClean&&t.wasClean}get code(){return this[Aw]}get reason(){return this[jw]}get wasClean(){return this[Fw]}}Object.defineProperty(Ww.prototype,"code",{enumerable:!0}),Object.defineProperty(Ww.prototype,"reason",{enumerable:!0}),Object.defineProperty(Ww.prototype,"wasClean",{enumerable:!0});class Bw extends Uw{constructor(e,t={}){super(e),this[Pw]=void 0===t.error?null:t.error,this[Dw]=void 0===t.message?"":t.message}get error(){return this[Pw]}get message(){return this[Dw]}}Object.defineProperty(Bw.prototype,"error",{enumerable:!0}),Object.defineProperty(Bw.prototype,"message",{enumerable:!0});class Gw extends Uw{constructor(e,t={}){super(e),this[Mw]=void 0===t.data?null:t.data}get data(){return this[Mw]}}Object.defineProperty(Gw.prototype,"data",{enumerable:!0});const Vw={addEventListener(e,t,n={}){for(const r of this.listeners(e))if(!n[Nw]&&r[Tw]===t&&!r[Nw])return;let r;if("message"===e)r=function(e,n){const r=new Gw("message",{data:n?e:e.toString()});r[Rw]=this,Hw(t,this,r)};else if("close"===e)r=function(e,n){const r=new Ww("close",{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[Rw]=this,Hw(t,this,r)};else if("error"===e)r=function(e){const n=new Bw("error",{error:e,message:e.message});n[Rw]=this,Hw(t,this,n)};else{if("open"!==e)return;r=function(){const e=new Uw("open");e[Rw]=this,Hw(t,this,e)}}r[Nw]=!!n[Nw],r[Tw]=t,n.once?this.once(e,r):this.on(e,r)},removeEventListener(e,t){for(const n of this.listeners(e))if(n[Tw]===t&&!n[Nw]){this.removeListener(e,n);break}}};var Yw={CloseEvent:Ww,ErrorEvent:Bw,Event:Uw,EventTarget:Vw,MessageEvent:Gw};function Hw(e,t,n){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}const{tokenChars:zw}=tw;function qw(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}var Kw={format:function(e){return Object.keys(e).map((t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map((e=>[t].concat(Object.keys(e).map((t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let n,r,i=Object.create(null),o=!1,s=!1,a=!1,c=-1,l=-1,u=-1,d=0;for(;d<e.length;d++)if(l=e.charCodeAt(d),void 0===n)if(-1===u&&1===zw[l])-1===c&&(c=d);else if(0===d||32!==l&&9!==l){if(59!==l&&44!==l)throw new SyntaxError(`Unexpected character at index ${d}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${d}`);-1===u&&(u=d);const r=e.slice(c,u);44===l?(qw(t,r,i),i=Object.create(null)):n=r,c=u=-1}}else-1===u&&-1!==c&&(u=d);else if(void 0===r)if(-1===u&&1===zw[l])-1===c&&(c=d);else if(32===l||9===l)-1===u&&-1!==c&&(u=d);else if(59===l||44===l){if(-1===c)throw new SyntaxError(`Unexpected character at index ${d}`);-1===u&&(u=d),qw(i,e.slice(c,u),!0),44===l&&(qw(t,n,i),i=Object.create(null),n=void 0),c=u=-1}else{if(61!==l||-1===c||-1!==u)throw new SyntaxError(`Unexpected character at index ${d}`);r=e.slice(c,d),c=u=-1}else if(s){if(1!==zw[l])throw new SyntaxError(`Unexpected character at index ${d}`);-1===c?c=d:o||(o=!0),s=!1}else if(a)if(1===zw[l])-1===c&&(c=d);else if(34===l&&-1!==c)a=!1,u=d;else{if(92!==l)throw new SyntaxError(`Unexpected character at index ${d}`);s=!0}else if(34===l&&61===e.charCodeAt(d-1))a=!0;else if(-1===u&&1===zw[l])-1===c&&(c=d);else if(-1===c||32!==l&&9!==l){if(59!==l&&44!==l)throw new SyntaxError(`Unexpected character at index ${d}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${d}`);-1===u&&(u=d);let s=e.slice(c,u);o&&(s=s.replace(/\\/g,""),o=!1),qw(i,r,s),44===l&&(qw(t,n,i),i=Object.create(null),n=void 0),r=void 0,c=u=-1}}else-1===u&&(u=d);if(-1===c||a||32===l||9===l)throw new SyntaxError("Unexpected end of input");-1===u&&(u=d);const h=e.slice(c,u);return void 0===n?qw(t,h,i):(void 0===r?qw(i,h,!0):qw(i,r,o?h.replace(/\\/g,""):h),qw(t,n,i)),t}};const Jw=j,Zw=U,Xw=F,Qw=W,eS=B,{randomBytes:tS,createHash:nS}=u,{URL:rS}=V,iS=zb,oS=class extends nw{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||iw[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[aw]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(8===this._opcode&&0==this._state)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){const t=this._buffers[0];return this._buffers[0]=new fw(t.buffer,t.byteOffset+e,t.length-e),new fw(t.buffer,t.byteOffset,e)}const t=Buffer.allocUnsafe(e);do{const n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new fw(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do{switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:return void(this._loop=!1)}}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2)return void(this._loop=!1);const t=this.consume(2);if(48&t[0])return void e(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"));const n=!(64&~t[0]);if(!n||this._extensions[rw.extensionName]){if(this._fin=!(128&~t[0]),this._opcode=15&t[0],this._payloadLength=127&t[1],0===this._opcode){if(n)return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(!this._fragmented)return void e(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"));this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));this._compressed=n}else{if(!(this._opcode>7&&this._opcode<11))return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));if(!this._fin)return void e(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"));if(n)return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return void e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=!(128&~t[1]),this._isServer){if(!this._masked)return void e(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}else if(this._masked)return void e(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"));126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(e)}else e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}getPayloadLength16(e){this._bufferedBytes<2?this._loop=!1:(this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e))}getPayloadLength64(e){if(this._bufferedBytes<8)return void(this._loop=!1);const t=this.consume(8),n=t.readUInt32BE(0);n>Math.pow(2,21)-1?e(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=n*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(e))}haveLength(e){this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)?e(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH")):this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=ow;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength)return void(this._loop=!1);t=this.consume(this._payloadLength),this._masked&&this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3]&&uw(t,this._mask)}if(this._opcode>7)this.controlMessage(t,e);else{if(this._compressed)return this._state=5,void this.decompress(t,e);t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}}decompress(e,t){this._extensions[rw.extensionName].decompress(e,this._fin,((e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){const e=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");return void t(e)}this._fragments.push(n)}this.dataMessage(t),0===this._state&&this.startLoop(t)}))}dataMessage(e){if(!this._fin)return void(this._state=0);const t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?cw(n,t):"arraybuffer"===this._binaryType?lw(cw(n,t)):"blob"===this._binaryType?new Blob(n):n,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!0),this._state=0,this.startLoop(e)})))}else{const r=cw(n,t);if(!this._skipUTF8Validation&&!hw(r)){const t=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void e(t)}5===this._state||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!1),this._state=0,this.startLoop(e)})))}}controlMessage(e,t){if(8!==this._opcode)this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",e),this._state=0):(this._state=6,setImmediate((()=>{this.emit(9===this._opcode?"ping":"pong",e),this._state=0,this.startLoop(t)})));else{if(0===e.length)this._loop=!1,this.emit("conclude",1005,ow),this.end();else{const n=e.readUInt16BE(0);if(!dw(n)){const e=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");return void t(e)}const r=new fw(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!hw(r)){const e=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void t(e)}this._loop=!1,this.emit("conclude",n,r),this.end()}this._state=0}}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;const o=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,this.createError),o.code=i,o[sw]=r,o}},sS=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=vw,this[yw]=void 0}static frame(e,t){let n,r,i=!1,o=2,s=!1;t.mask&&(n=t.maskBuffer||xw,t.generateMask?t.generateMask(n):(Cw===kw&&(void 0===Ew&&(Ew=Buffer.alloc(kw)),pw(Ew,0,kw),Cw=0),n[0]=Ew[Cw++],n[1]=Ew[Cw++],n[2]=Ew[Cw++],n[3]=Ew[Cw++]),s=!(n[0]|n[1]|n[2]|n[3]),o=6),"string"==typeof e?r=t.mask&&!s||void 0===t[Iw]?(e=Buffer.from(e)).length:t[Iw]:(r=e.length,i=t.mask&&t.readOnly&&!s);let a=r;r>=65536?(o+=8,a=127):r>125&&(o+=2,a=126);const c=Buffer.allocUnsafe(i?r+o:o);return c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,126===a?c.writeUInt16BE(r,2):127===a&&(c[2]=c[3]=0,c.writeUIntBE(r,4,6)),t.mask?(c[1]|=128,c[o-4]=n[0],c[o-3]=n[1],c[o-2]=n[2],c[o-1]=n[3],s?[c,e]:i?(Sw(e,n,c,o,r),[c]):(Sw(e,n,e,0,r),[c,e])):[c,e]}close(t,n,r,i){let o;if(void 0===t)o=mw;else{if("number"!=typeof t||!ww(t))throw new TypeError("First argument must be a valid error code number");if(void 0!==n&&n.length){const e=Buffer.byteLength(n);if(e>123)throw new RangeError("The message must not be greater than 123 bytes");o=Buffer.allocUnsafe(2+e),o.writeUInt16BE(t,0),"string"==typeof n?o.write(n,2):o.set(n,2)}else o=Buffer.allocUnsafe(2),o.writeUInt16BE(t,0)}const s={[Iw]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,o,!1,s,i]):this.sendFrame(e.frame(o,s),i)}ping(t,n,r){let i,o;if("string"==typeof t?(i=Buffer.byteLength(t),o=!1):bw(t)?(i=t.size,o=!1):(i=(t=_w(t)).length,o=_w.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[Iw]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};bw(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,s,r]):this.getBlobData(t,!1,s,r):0!==this._state?this.enqueue([this.dispatch,t,!1,s,r]):this.sendFrame(e.frame(t,s),r)}pong(t,n,r){let i,o;if("string"==typeof t?(i=Buffer.byteLength(t),o=!1):bw(t)?(i=t.size,o=!1):(i=(t=_w(t)).length,o=_w.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[Iw]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};bw(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,s,r]):this.getBlobData(t,!1,s,r):0!==this._state?this.enqueue([this.dispatch,t,!1,s,r]):this.sendFrame(e.frame(t,s),r)}send(e,t,n){const r=this._extensions[gw.extensionName];let i,o,s=t.binary?2:1,a=t.compress;"string"==typeof e?(i=Buffer.byteLength(e),o=!1):bw(e)?(i=e.size,o=!1):(i=(e=_w(e)).length,o=_w.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=r._threshold),this._compress=a):(a=!1,s=0),t.fin&&(this._firstFragment=!0);const c={[Iw]:i,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:o,rsv1:a};bw(e)?0!==this._state?this.enqueue([this.getBlobData,e,this._compress,c,n]):this.getBlobData(e,this._compress,c,n):0!==this._state?this.enqueue([this.dispatch,e,this._compress,c,n]):this.dispatch(e,this._compress,c,n)}getBlobData(t,n,r,i){this._bufferedBytes+=r[Iw],this._state=2,t.arrayBuffer().then((t=>{if(this._socket.destroyed){const e=new Error("The socket was closed while the blob was being read");return void process.nextTick($w,this,e,i)}this._bufferedBytes-=r[Iw];const o=_w(t);n?this.dispatch(o,n,r,i):(this._state=0,this.sendFrame(e.frame(o,r),i),this.dequeue())})).catch((e=>{process.nextTick(Ow,this,e,i)}))}dispatch(t,n,r,i){if(!n)return void this.sendFrame(e.frame(t,r),i);const o=this._extensions[gw.extensionName];this._bufferedBytes+=r[Iw],this._state=1,o.compress(t,r.fin,((t,n)=>{this._socket.destroyed?$w(this,new Error("The socket was closed while data was being compressed"),i):(this._bufferedBytes-=r[Iw],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue())}))}dequeue(){for(;0===this._state&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][Iw],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Iw],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}},{isBlob:aS}=tw,{BINARY_TYPES:cS,EMPTY_BUFFER:lS,GUID:uS,kForOnEventAttribute:dS,kListener:hS,kStatusCode:fS,kWebSocket:pS,NOOP:gS}=Cb,{EventTarget:{addEventListener:mS,removeEventListener:yS}}=Yw,{format:vS,parse:bS}=Kw,{toBuffer:wS}=Ab,SS=3e4,_S=Symbol("kAborted"),IS=[8,13],xS=["CONNECTING","OPEN","CLOSING","CLOSED"],kS=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;let ES=class e extends Jw{constructor(t,n,r){super(),this._binaryType=cS[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=lS,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==t?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===n?n=[]:Array.isArray(n)||("object"==typeof n&&null!==n?(r=n,n=[]):n=[n]),$S(this,t,n,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){cS.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){const i=new oS({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),o=new sS(t,this._extensions,r.generateMask);this._receiver=i,this._sender=o,this._socket=t,i[pS]=this,o[pS]=this,t[pS]=this,i.on("conclude",PS),i.on("drain",DS),i.on("error",jS),i.on("message",LS),i.on("ping",FS),i.on("pong",US),o.onerror=BS,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on("close",VS),t.on("data",YS),t.on("end",HS),t.on("error",zS),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=e.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[iS.extensionName]&&this._extensions[iS.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED)if(this.readyState!==e.CONNECTING)this.readyState!==e.CLOSING?(this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),GS(this)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";AS(this,this._req,e)}}pause(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof t?(r=t,t=n=void 0):"function"==typeof n&&(r=n,n=void 0),"number"==typeof t&&(t=t.toString()),this.readyState===e.OPEN?(void 0===n&&(n=!this._isServer),this._sender.ping(t||lS,n,r)):MS(this,t,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof t?(r=t,t=n=void 0):"function"==typeof n&&(r=n,n=void 0),"number"==typeof t&&(t=t.toString()),this.readyState===e.OPEN?(void 0===n&&(n=!this._isServer),this._sender.pong(t||lS,n,r)):MS(this,t,r)}resume(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof n&&(r=n,n={}),"number"==typeof t&&(t=t.toString()),this.readyState!==e.OPEN)return void MS(this,t,r);const i={binary:"string"!=typeof t,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[iS.extensionName]||(i.compress=!1),this._sender.send(t||lS,i,r)}terminate(){if(this.readyState!==e.CLOSED)if(this.readyState!==e.CONNECTING)this._socket&&(this._readyState=e.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";AS(this,this._req,e)}}};Object.defineProperty(ES,"CONNECTING",{enumerable:!0,value:xS.indexOf("CONNECTING")}),Object.defineProperty(ES.prototype,"CONNECTING",{enumerable:!0,value:xS.indexOf("CONNECTING")}),Object.defineProperty(ES,"OPEN",{enumerable:!0,value:xS.indexOf("OPEN")}),Object.defineProperty(ES.prototype,"OPEN",{enumerable:!0,value:xS.indexOf("OPEN")}),Object.defineProperty(ES,"CLOSING",{enumerable:!0,value:xS.indexOf("CLOSING")}),Object.defineProperty(ES.prototype,"CLOSING",{enumerable:!0,value:xS.indexOf("CLOSING")}),Object.defineProperty(ES,"CLOSED",{enumerable:!0,value:xS.indexOf("CLOSED")}),Object.defineProperty(ES.prototype,"CLOSED",{enumerable:!0,value:xS.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(ES.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(ES.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[dS])return t[hS];return null},set(t){for(const t of this.listeners(e))if(t[dS]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[dS]:!0})}})})),ES.prototype.addEventListener=mS,ES.prototype.removeEventListener=yS;var CS=ES;function $S(e,t,n,r){const i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:IS[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,!IS.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${IS.join(", ")})`);let o;if(t instanceof rS)o=t;else try{o=new rS(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}"http:"===o.protocol?o.protocol="ws:":"https:"===o.protocol&&(o.protocol="wss:"),e._url=o.href;const s="wss:"===o.protocol,a="ws+unix:"===o.protocol;let c;if("ws:"===o.protocol||s||a?a&&!o.pathname?c="The URL's pathname is empty":o.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"',c){const t=new SyntaxError(c);if(0===e._redirects)throw t;return void OS(e,t)}const l=s?443:80,u=tS(16).toString("base64"),d=s?Zw.request:Xw.request,h=new Set;let f,p;if(i.createConnection=i.createConnection||(s?TS:NS),i.defaultPort=i.defaultPort||l,i.port=o.port||l,i.host=o.hostname.startsWith("[")?o.hostname.slice(1,-1):o.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},i.path=o.pathname+o.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(f=new iS(!0!==i.perMessageDeflate?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=vS({[iS.extensionName]:f.offer()})),n.length){for(const e of n){if("string"!=typeof e||!kS.test(e)||h.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(e)}i.headers["Sec-WebSocket-Protocol"]=n.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(o.username||o.password)&&(i.auth=`${o.username}:${o.password}`),a){const e=i.path.split(":");i.socketPath=e[0],i.path=e[1]}if(i.followRedirects){if(0===e._redirects){e._originalIpc=a,e._originalSecure=s,e._originalHostOrSocketPath=a?i.socketPath:o.host;const t=r&&r.headers;if(r={...r,headers:{}},t)for(const[e,n]of Object.entries(t))r.headers[e.toLowerCase()]=n}else if(0===e.listenerCount("redirect")){const t=a?!!e._originalIpc&&i.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&o.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!s)&&(delete i.headers.authorization,delete i.headers.cookie,t||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=e._req=d(i),e._redirects&&e.emit("redirect",e.url,p)}else p=e._req=d(i);i.timeout&&p.on("timeout",(()=>{AS(e,p,"Opening handshake has timed out")})),p.on("error",(t=>{null===p||p[_S]||(p=e._req=null,OS(e,t))})),p.on("response",(o=>{const s=o.headers.location,a=o.statusCode;if(s&&i.followRedirects&&a>=300&&a<400){if(++e._redirects>i.maxRedirects)return void AS(e,p,"Maximum redirects exceeded");let o;p.abort();try{o=new rS(s,t)}catch(t){const n=new SyntaxError(`Invalid URL: ${s}`);return void OS(e,n)}$S(e,o,n,r)}else e.emit("unexpected-response",p,o)||AS(e,p,`Unexpected server response: ${o.statusCode}`)})),p.on("upgrade",((t,n,r)=>{if(e.emit("upgrade",t),e.readyState!==ES.CONNECTING)return;p=e._req=null;const o=t.headers.upgrade;if(void 0===o||"websocket"!==o.toLowerCase())return void AS(e,n,"Invalid Upgrade header");const s=nS("sha1").update(u+uS).digest("base64");if(t.headers["sec-websocket-accept"]!==s)return void AS(e,n,"Invalid Sec-WebSocket-Accept header");const a=t.headers["sec-websocket-protocol"];let c;if(void 0!==a?h.size?h.has(a)||(c="Server sent an invalid subprotocol"):c="Server sent a subprotocol but none was requested":h.size&&(c="Server sent no subprotocol"),c)return void AS(e,n,c);a&&(e._protocol=a);const l=t.headers["sec-websocket-extensions"];if(void 0!==l){if(!f)return void AS(e,n,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");let r;try{r=bS(l)}catch(t){return void AS(e,n,"Invalid Sec-WebSocket-Extensions header")}const i=Object.keys(r);if(1!==i.length||i[0]!==iS.extensionName)return void AS(e,n,"Server indicated an extension that was not requested");try{f.accept(r[iS.extensionName])}catch(t){return void AS(e,n,"Invalid Sec-WebSocket-Extensions header")}e._extensions[iS.extensionName]=f}e.setSocket(n,r,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})})),i.finishRequest?i.finishRequest(p,e):p.end()}function OS(e,t){e._readyState=ES.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function NS(e){return e.path=e.socketPath,Qw.connect(e)}function TS(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=Qw.isIP(e.host)?"":e.host),eS.connect(e)}function AS(e,t,n){e._readyState=ES.CLOSING;const r=new Error(n);Error.captureStackTrace(r,AS),t.setHeader?(t[_S]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(OS,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function MS(e,t,n){if(t){const n=aS(t)?t.size:wS(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${xS[e.readyState]})`);process.nextTick(n,t)}}function PS(e,t){const n=this[pS];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,void 0!==n._socket[pS]&&(n._socket.removeListener("data",YS),process.nextTick(WS,n._socket),1005===e?n.close():n.close(e,t))}function DS(){const e=this[pS];e.isPaused||e._socket.resume()}function jS(e){const t=this[pS];void 0!==t._socket[pS]&&(t._socket.removeListener("data",YS),process.nextTick(WS,t._socket),t.close(e[fS])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function RS(){this[pS].emitClose()}function LS(e,t){this[pS].emit("message",e,t)}function FS(e){const t=this[pS];t._autoPong&&t.pong(e,!this._isServer,gS),t.emit("ping",e)}function US(e){this[pS].emit("pong",e)}function WS(e){e.resume()}function BS(e){const t=this[pS];t.readyState!==ES.CLOSED&&(t.readyState===ES.OPEN&&(t._readyState=ES.CLOSING,GS(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function GS(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),SS)}function VS(){const e=this[pS];let t;this.removeListener("close",VS),this.removeListener("data",YS),this.removeListener("end",HS),e._readyState=ES.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[pS]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",RS),e._receiver.on("finish",RS))}function YS(e){this[pS]._receiver.write(e)||this.pause()}function HS(){const e=this[pS];e._readyState=ES.CLOSING,e._receiver.end(),this.end()}function zS(){const e=this[pS];this.removeListener("error",zS),this.on("error",gS),e&&(e._readyState=ES.CLOSING,this.destroy())}const{tokenChars:qS}=tw;var KS={parse:function(e){const t=new Set;let n=-1,r=-1,i=0;for(;i<e.length;i++){const o=e.charCodeAt(i);if(-1===r&&1===qS[o])-1===n&&(n=i);else if(0===i||32!==o&&9!==o){if(44!==o)throw new SyntaxError(`Unexpected character at index ${i}`);{if(-1===n)throw new SyntaxError(`Unexpected character at index ${i}`);-1===r&&(r=i);const o=e.slice(n,r);if(t.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);t.add(o),n=r=-1}}else-1===r&&-1!==n&&(r=i)}if(-1===n||-1!==r)throw new SyntaxError("Unexpected end of input");const o=e.slice(n,i);if(t.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}};const JS=j,ZS=F,{createHash:XS}=u,QS=Kw,e_=zb,t_=KS,n_=CS,{GUID:r_,kWebSocket:i_}=Cb,o_=/^[+/0-9A-Za-z]{22}==$/;function s_(e){e._state=2,e.emit("close")}function a_(){this.destroy()}function c_(e,t,n,r){n=n||ZS.STATUS_CODES[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${ZS.STATUS_CODES[t]}\r\n`+Object.keys(r).map((e=>`${e}: ${r[e]}`)).join("\r\n")+"\r\n\r\n"+n)}function l_(e,t,n,r,i){if(e.listenerCount("wsClientError")){const r=new Error(i);Error.captureStackTrace(r,l_),e.emit("wsClientError",r,n,t)}else c_(n,r,i)}var u_=Vu(class extends JS{constructor(e,t){if(super(),null==(e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:n_,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=ZS.createServer(((e,t)=>{const n=ZS.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),t.end(n)})),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){const e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(const n of Object.keys(t))e.on(n,t[n]);return function(){for(const n of Object.keys(t))e.removeListener(n,t[n])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state)return e&&this.once("close",(()=>{e(new Error("The server is not running"))})),void process.nextTick(s_,this);if(e&&this.once("close",e),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(s_,this);else{const e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close((()=>{s_(this)}))}}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on("error",a_);const i=e.headers["sec-websocket-key"],o=e.headers.upgrade,s=+e.headers["sec-websocket-version"];if("GET"!==e.method)return void l_(this,e,t,405,"Invalid HTTP method");if(void 0===o||"websocket"!==o.toLowerCase())return void l_(this,e,t,400,"Invalid Upgrade header");if(void 0===i||!o_.test(i))return void l_(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");if(8!==s&&13!==s)return void l_(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header");if(!this.shouldHandle(e))return void c_(t,400);const a=e.headers["sec-websocket-protocol"];let c=new Set;if(void 0!==a)try{c=t_.parse(a)}catch(n){return void l_(this,e,t,400,"Invalid Sec-WebSocket-Protocol header")}const l=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&void 0!==l){const r=new e_(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const e=QS.parse(l);e[e_.extensionName]&&(r.accept(e[e_.extensionName]),u[e_.extensionName]=r)}catch(n){return void l_(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header")}}if(this.options.verifyClient){const o={origin:e.headers[8===s?"sec-websocket-origin":"origin"],secure:!(!e.socket.authorized&&!e.socket.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(o,((o,s,a,l)=>{if(!o)return c_(t,s||401,a,l);this.completeUpgrade(u,i,c,e,t,n,r)}));if(!this.options.verifyClient(o))return c_(t,401)}this.completeUpgrade(u,i,c,e,t,n,r)}completeUpgrade(e,t,n,r,i,o,s){if(!i.readable||!i.writable)return i.destroy();if(i[i_])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return c_(i,503);const a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${XS("sha1").update(t+r_).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(n.size){const e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(a.push(`Sec-WebSocket-Protocol: ${e}`),c._protocol=e)}if(e[e_.extensionName]){const t=e[e_.extensionName].params,n=QS.format({[e_.extensionName]:[t]});a.push(`Sec-WebSocket-Extensions: ${n}`),c._extensions=e}this.emit("headers",a,r),i.write(a.concat("\r\n").join("\r\n")),i.removeListener("error",a_),c.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",(()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(s_,this)}))),s(c,r)}});const d_=ad("websocketServer"),h_={},f_=lb();let p_,g_,m_,y_,v_;const b_=["https://app.kemu.io","https://dev.kemu.io","https://stage.kemu.io","https://local.kemu.io:3003"],w_=e=>{const t=h_[e];t&&t.socket.close()};var S_=e=>{v_=new u_({port:e,maxPayload:1048576e3,verifyClient:(e,t)=>{const n=e.req.headers.origin;n&&b_.includes(n)?t(!0):t(!1,401,"Origin not allowed")}}),v_.on("connection",(e=>{const t=xy();d_(`New client connected. Registered as "${t}"`),e.id=t,h_[t]={socket:e,activeMessage:null},p_&&p_(t),e.on("message",(t=>{if(t instanceof Buffer){const n=h_[e.id];f_(t,n.activeMessage,(e=>n.activeMessage=e),(t=>{if(!t.complete)return;const r=t=>{e.send(t),d_(`Writing ${t.byteLength} bytes to socket [${n.socket.id}]: ${t.toString()}`)},i=()=>{w_(n.socket.id)};if(t.command)return d_(`Received command from client [${n.socket.id}]: ${t.command}`),void(m_&&m_(n.socket.id,t.command,r,i));t.klMessage&&y_&&y_({send:r,terminateWebsocket:i,websocketId:n.socket.id,transmission:{sourceServiceId:t.sourceServiceId??-1,targetServiceId:t.targetServiceId??-1,rawMessage:t.rawMessage},json:t.klMessage.json})}))}})),e.on("close",(()=>{d_(`Client disconnected: ${e.id}`),g_&&g_(e.id),delete h_[e.id]})),e.on("error",(()=>{d_(`Error on client connection: ${e.id}`)}))})),console.log(`WebSocket server is running on port ${e}`)},__=e=>{p_=e},I_=e=>{g_=e},x_=e=>{m_=e},k_=(e,t)=>{const n=h_[e];if(!n)return d_(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=Wv)return d_("Message is too long to be a command. Use sendMessage instead."),!1;const r=nb.encodeCommand(t);return n.socket.send(r),!0},E_=e=>y_=e,C_=w_;const $_=ad("stopService"),O_=async e=>{const t=e.args[0];if(!t)return e.reply({error:"No service name provided"});const n=av.getAllServiceVersions(t);$_(`Stopping ${n.length} services with name: ${t}`);for(const e of n)await av.stopService({serviceName:e.info.name,version:e.info.version});const r=n.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[r]})},N_=ad("removeService"),T_=async e=>{const t=e.args[0],n=e.args[1];if(!t)return e.reply({error:"No service name provided"});let r=av.getAllServiceVersions(t);n&&(r=r.filter((e=>e.info.version===n))),N_(`Removing ${r.length} service(s) with name: ${t}`);for(const e of r)await av.uninstallService(e.info.name,e.info.version);const i=r.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[i]})},A_=ad("launchService"),M_=async e=>{const t=e.args[0],n=e.args[1];if(!t)return e.reply({error:"No service name provided"});if(!n)return e.reply({error:"No service version provided"});const r=`${t}@${n}/dist`;try{const i=Ry();A_(`Loading service ${t}@${n} from ${i}`);const{errorMsg:o,service:s,errorCode:a}=await av.loadAndLaunch(i,r,!1);if(o||"started"!==s?.status)return e.reply({error:`Failed to launch service ${t}@${n}: ${o||"error-not-provided"}`,errCode:a});const c=Date.now(),l=3e4,u=async()=>{const r=s.status;return"running"===r?(A_(`Service ${t}@${n} loaded and started`),e.reply({success:[]})):(A_(`Service ${t}@${n} not yet started, status: ${r}`),"stopped"===r||"error"===r?e.reply({error:`Error launching service: "${s.errorMsg||"failed to initiate"}"`}):Date.now()-c>l?e.reply({error:"Timeout waiting for service to start"}):(A_("Retrying in 1 second..."),void setTimeout(u,1e3)))};u()}catch(r){return A_(`Error loading service ${t}@${n}: ${r?.message||r}`),e.reply({error:r?.message||"There was an error loading the service"})}},P_=ad("getMatchingServices"),D_=async e=>{const t=e.args[0],n=[],r=[];P_(`Checking for matching services: ${t.map((e=>e.name)).join(", ")}`);for(const{name:e,version:i}of t){const t=av.getMatchingService(e,i);t?n.push({name:e,version:i,installationPath:av.getServiceRootDirectory(t)}):r.push({name:e,version:i})}P_(`Found ${n.length} available services and ${r.length} missing services.`),e.reply({success:[{available:n,missing:r}]})},j_=ad("getSecretsValues");let R_;var L_=async e=>{const t=e.args[0].services;if(!R_)throw new Error("getSecretValuesFn is not set. Please call setGetSecretValuesFunction before using this function.");j_(`Checking for secrets values for services: ${t.map((e=>`${e.name}@${e.version}`)).join(", ")}`);const n=[];for(const e of t){const t=e.secrets,r=await R_({name:e.name,version:e.version,requiredSecrets:t.reduce(((e,t)=>(e[t]={optional:!1,description:""},e)),{})});n.push({name:e.name,version:e.version,secrets:t.map((e=>({name:e,value:r[e]})))})}const r=[{services:n}];e.reply({success:r})},F_=e=>{R_=e};const U_=ad("getMappedSecrets");let W_;var B_=async e=>{const t=e.args[0].services;U_(`Getting mapped secrets for services: ${t.map((e=>`${e.name}@${e.version}`)).join(", ")}`);const n=await W_(t),r=[{services:t.map((e=>({name:e.name,version:e.version,secrets:n[e.name]||[]})))}];e.reply({success:r})};const G_=ad("getServiceContents"),V_=({reply:e,args:t})=>{const[n]=t;G_(`Received GetServiceContents request for service ${n.serviceName} v${n.version}`);const r=av.getMatchingService(n.serviceName,n.version);if(r)return e({success:[{serviceName:r.info.name,serviceVersion:r.info.version,uiContent:r.info.widgetUIContents,uiContentsChecksum:r.info.uiContentChecksum}]});G_(`Service ${n.serviceName} v${n.version} not found`),e({error:`Service ${n.serviceName} v${n.version} not found`})};let Y_={globalApiKey:void 0,environment:"production"};const H_=()=>({...Y_}),z_=ad("apis"),q_=()=>{const e=H_();if(!e.serviceUrl)throw new Error("Unknown server URL. Please call `edgeConfig.setEdgeConfig` before using the APIs.");return e.serviceUrl},K_=async(e,t,n={})=>{try{const r=await fetch(e,{method:"POST",body:JSON.stringify(t),headers:{...n}});return r.ok?{data:await r.json(),statusCode:r.status,success:!0}:{statusCode:r.status,error:await r.text(),success:!1}}catch(e){return{statusCode:500,error:e instanceof Error?e.message:"Internal server error",success:!1}}},J_={},Z_=async e=>{const t=(e=>{const t=J_[e],n=Date.now()-(t?.lastCheckedAt.getTime()??0);return t&&n<3e5?t.features:null})(e);if(t)return{valid:!0,features:t,error:null};const{valid:n,features:r,error:i}=await(async e=>{const{data:t,error:n}=await K_(`${q_()}/v1/organization/validate/apiKey`,{apiKey:e},{"Content-Type":"application/json"});return n?(z_(`Error validating Kemu API key: ${n}`),{valid:!1,features:{},error:n}):t?.features?{valid:!0,features:t.features,error:null}:{valid:!1,features:{},error:"No features returned from the server"}})(e);return n&&(J_[e]={features:r,lastCheckedAt:new Date}),{valid:n,features:r,error:i}};function X_(e){return"number"==typeof e||!!/^0x[0-9a-f]+$/i.test(e)||/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function Q_(e,t){return"constructor"===t&&"function"==typeof e[t]||"__proto__"===t}var eI=Vu((function(e,t){t||(t={});var n={bools:{},strings:{},unknownFn:null};"function"==typeof t.unknown&&(n.unknownFn=t.unknown),"boolean"==typeof t.boolean&&t.boolean?n.allBools=!0:[].concat(t.boolean).filter(Boolean).forEach((function(e){n.bools[e]=!0}));var r={};function i(e){return r[e].some((function(e){return n.bools[e]}))}Object.keys(t.alias||{}).forEach((function(e){r[e]=[].concat(t.alias[e]),r[e].forEach((function(t){r[t]=[e].concat(r[e].filter((function(e){return t!==e})))}))})),[].concat(t.string).filter(Boolean).forEach((function(e){n.strings[e]=!0,r[e]&&[].concat(r[e]).forEach((function(e){n.strings[e]=!0}))}));var o=t.default||{},s={_:[]};function a(e,t,r){for(var i=e,o=0;o<t.length-1;o++){var s=t[o];if(Q_(i,s))return;void 0===i[s]&&(i[s]={}),i[s]!==Object.prototype&&i[s]!==Number.prototype&&i[s]!==String.prototype||(i[s]={}),i[s]===Array.prototype&&(i[s]=[]),i=i[s]}var a=t[t.length-1];Q_(i,a)||(i!==Object.prototype&&i!==Number.prototype&&i!==String.prototype||(i={}),i===Array.prototype&&(i=[]),void 0===i[a]||n.bools[a]||"boolean"==typeof i[a]?i[a]=r:Array.isArray(i[a])?i[a].push(r):i[a]=[i[a],r])}function c(e,t,i){if(!i||!n.unknownFn||function(e,t){return n.allBools&&/^--[^=]+$/.test(t)||n.strings[e]||n.bools[e]||r[e]}(e,i)||!1!==n.unknownFn(i)){var o=!n.strings[e]&&X_(t)?Number(t):t;a(s,e.split("."),o),(r[e]||[]).forEach((function(e){a(s,e.split("."),o)}))}}Object.keys(n.bools).forEach((function(e){c(e,void 0!==o[e]&&o[e])}));var l=[];-1!==e.indexOf("--")&&(l=e.slice(e.indexOf("--")+1),e=e.slice(0,e.indexOf("--")));for(var u=0;u<e.length;u++){var d,h,f=e[u];if(/^--.+=/.test(f)){var p=f.match(/^--([^=]+)=([\s\S]*)$/);d=p[1];var g=p[2];n.bools[d]&&(g="false"!==g),c(d,g,f)}else if(/^--no-.+/.test(f))c(d=f.match(/^--no-(.+)/)[1],!1,f);else if(/^--.+/.test(f))d=f.match(/^--(.+)/)[1],void 0===(h=e[u+1])||/^(-|--)[^-]/.test(h)||n.bools[d]||n.allBools||r[d]&&i(d)?/^(true|false)$/.test(h)?(c(d,"true"===h,f),u+=1):c(d,!n.strings[d]||"",f):(c(d,h,f),u+=1);else if(/^-[^-]+/.test(f)){for(var m=f.slice(1,-1).split(""),y=!1,v=0;v<m.length;v++)if("-"!==(h=f.slice(v+2))){if(/[A-Za-z]/.test(m[v])&&"="===h[0]){c(m[v],h.slice(1),f),y=!0;break}if(/[A-Za-z]/.test(m[v])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(h)){c(m[v],h,f),y=!0;break}if(m[v+1]&&m[v+1].match(/\W/)){c(m[v],f.slice(v+2),f),y=!0;break}c(m[v],!n.strings[m[v]]||"",f)}else c(m[v],h,f);d=f.slice(-1)[0],y||"-"===d||(!e[u+1]||/^(-|--)[^-]/.test(e[u+1])||n.bools[d]||r[d]&&i(d)?e[u+1]&&/^(true|false)$/.test(e[u+1])?(c(d,"true"===e[u+1],f),u+=1):c(d,!n.strings[d]||"",f):(c(d,e[u+1],f),u+=1))}else if(n.unknownFn&&!1===n.unknownFn(f)||s._.push(n.strings._||!X_(f)?f:Number(f)),t.stopEarly){s._.push.apply(s._,e.slice(u+1));break}}return Object.keys(o).forEach((function(e){var t,n,i;t=s,n=e.split("."),i=t,n.slice(0,-1).forEach((function(e){i=i[e]||{}})),n[n.length-1]in i||(a(s,e.split("."),o[e]),(r[e]||[]).forEach((function(t){a(s,t.split("."),o[e])})))})),t["--"]?s["--"]=l.slice():l.forEach((function(e){s._.push(e)})),s}));Xv("ipcClient"),Xv("kemuWidgetService"),eI(process.argv.slice(2));const tI=ad("activeClients");let nI,rI={},iI={};const oI=(e,t)=>`${e}_${t}`,sI=e=>rI[e]||null,aI=(e,t)=>{const n=oI(e,t);return iI[n]||[]},cI=()=>{for(const e in rI){const t=rI[e];if(t?.transport===ku.WS){const e=nb.encodeCommand(_u.ServicesListChanged);t.send(e)}}},lI=async e=>{const t=[],{serviceSessionId:n,transport:r,send:i,terminateFn:o,extraInfo:s,isDevClient:a}=e,c=e=>{console.warn(e),o&&o()};if(r===ku.WS){if(!s.user?.wsApiKey)return void c(`Attempted to register a WebSocket client without an API key. SessionId: ${n}`);const{valid:e,error:t}=await Z_(s.user?.wsApiKey);if(!e&&!t)return void c(`Attempted to register a WebSocket client with an invalid API key. SessionId: ${n}`);t&&(s.user?.wsApiKey&&Wy.captureError({error:new Error(t),message:`Error validating api key "${s.user?.wsApiKey}"`,data:s}),tI(`Unable to validate API Key, usage will be limited. SessionId: ${n}`))}rI[n]={serviceSessionId:n,transport:r,isDevClient:!!a,broadcastSubscriptions:t,send:i,extraInfo:s,terminate:()=>{o&&o()},addSubscription:e=>{if(!t.some((t=>t.targetService.serviceName===e.serviceName&&t.targetService.version===e.version))){t.push({targetService:e});const r=oI(e.serviceName,e.version);return iI[r]=iI[r]||[],iI[r].some((e=>e.serviceId===n))||iI[r].push({sendFn:i,serviceId:n}),!0}return!1},removeSubscription:e=>{const r=t.findIndex((t=>t.targetService.serviceName===e.serviceName));if(-1!==r){t.splice(r,1);const i=oI(e.serviceName,e.version),o=iI[i]?.findIndex((e=>e.serviceId===n));if(-1!==o&&(iI[i]?.splice(o,1),!iI[i]?.length)){const t=av.getMatchingService(e.serviceName,e.version);if(t?.info.eventEmitter&&"running"===t.status){const e=sI(t.info.sessionId);e?.extraInfo.ipcSocketId&&vb(e?.extraInfo.ipcSocketId,_u.BroadcastEnd)}}}},removeAllSubscriptions:()=>{for(const e of t){const t=oI(e.targetService.serviceName,e.targetService.version),r=iI[t]?.findIndex((e=>e.serviceId===n));-1!==r&&iI[t]?.splice(r,1)}t.length=0}},r===ku.IPC&&(cI(),uI(n))},uI=e=>{const t=av.getServiceBySessionId(e);if(t?.info.eventEmitter&&aI(t.info.name,t.info.version).length){const t=sI(e);t?.extraInfo.ipcSocketId&&vb(t?.extraInfo.ipcSocketId,_u.BroadcastStart)}},dI=e=>{const t=rI[e];var n;t?.transport===ku.IPC?cI():(t?.removeAllSubscriptions(),(()=>{const e=Object.values(rI);for(const t of e)if(t.transport===ku.IPC){const e=t.extraInfo.ipcSocketId,n=av.getServiceBySessionId(t.serviceSessionId);n?.info.eventEmitter&&(aI(n.info.name,n.info.version).length||e&&vb(e,_u.BroadcastEnd))}})(),t?.extraInfo.user?.wsApiKey&&(n=t.extraInfo.user.wsApiKey,delete J_[n]),(e=>{const t=rI[e];if(t?.transport===ku.WS&&t.extraInfo.recipe){const n=[{recipe:t.extraInfo.recipe}];tI(`Notifying IPC clients that a Kemu Compose client [${t.extraInfo.recipe.name} (${t.extraInfo.recipe.poolId})] has disconnected. ServiceSessionId: ${e}`);for(const e in rI){const t=rI[e];t?.transport===ku.IPC&&nI.execute(Iu.KemuComposerDisconnected,n,t.send,0,t.serviceSessionId,{async:!0}).catch((t=>{tI(`Error notifying IPC client [${e}] that a Kemu Compose client has disconnected: ${t?.message||t}`)}))}}})(e)),delete rI[e]},hI=ad("ipc:handleIpcClientCommand"),fI=(e,t,n)=>{const r=((e,t)=>{if(e.startsWith(_u.AcknowledgeResponse)){const n=e.split(":"),r=parseInt(n[1]),i=parseInt(n[2]);return t&&t(r,isNaN(i)?void 0:i),!0}return!1})(t,((e,t)=>{if(!e)return void hI(`Ignoring ACK response from IPC service ${e} with no service id`);hI(`Received ACK from IPC service ${e}. Marking as running.`);let r=e;t&&e&&e!==t&&(bb(e,t),r=t);let i=!1;t&&(i=av.setServiceStatus(t,"running")),i?lI({serviceSessionId:t||e,transport:ku.IPC,send:n,extraInfo:{ipcSocketId:t}}):vb(r,_u.SendManifest)}));!r&&hI(`Received unknown command [${t}] from service ${e}`)};let pI={};H.platform();const gI=async e=>{const t=e.args[0];if(pI.chooseDirectory)try{const n=await pI.chooseDirectory(t);return e.reply({success:[String(n).trim()]})}catch(t){return console.error(t),e.reply({error:t instanceof Error?t.message:"Unknown error"})}return e.reply({error:"This hub does not support showing file dialogs",errCode:"GUI_NOT_SUPPORTED"})},mI=async e=>{const t=e.args[0];if(pI.chooseFile)try{const n=await pI.chooseFile(t);return e.reply({success:[String(n).trim()]})}catch(t){return console.error(t),e.reply({error:t instanceof Error?t.message:"Unknown error"})}return e.reply({error:"This hub does not support showing file dialogs",errCode:"GUI_NOT_SUPPORTED"})};var yI={},vI={},bI={};function wI(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function SI(e){if("boolean"!=typeof e)throw new Error(`boolean expected, not ${e}`)}function _I(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function II(e,...t){if(!_I(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function xI(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");wI(e.outputLen),wI(e.blockLen)}function kI(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function EI(e,t){II(e);const n=t.outputLen;if(e.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}Object.defineProperty(bI,"__esModule",{value:!0}),bI.output=bI.exists=bI.hash=bI.bytes=bI.bool=bI.number=bI.isBytes=void 0,bI.number=wI,bI.bool=SI,bI.isBytes=_I,bI.bytes=II,bI.hash=xI,bI.exists=kI,bI.output=EI;const CI={number:wI,bool:SI,bytes:II,hash:xI,exists:kI,output:EI};bI.default=CI;var $I={};Object.defineProperty($I,"__esModule",{value:!0}),$I.add5L=$I.add5H=$I.add4H=$I.add4L=$I.add3H=$I.add3L=$I.add=$I.rotlBL=$I.rotlBH=$I.rotlSL=$I.rotlSH=$I.rotr32L=$I.rotr32H=$I.rotrBL=$I.rotrBH=$I.rotrSL=$I.rotrSH=$I.shrSL=$I.shrSH=$I.toBig=$I.split=$I.fromBig=void 0;const OI=BigInt(2**32-1),NI=BigInt(32);function TI(e,t=!1){return t?{h:Number(e&OI),l:Number(e>>NI&OI)}:{h:0|Number(e>>NI&OI),l:0|Number(e&OI)}}function AI(e,t=!1){let n=new Uint32Array(e.length),r=new Uint32Array(e.length);for(let i=0;i<e.length;i++){const{h:o,l:s}=TI(e[i],t);[n[i],r[i]]=[o,s]}return[n,r]}$I.fromBig=TI,$I.split=AI;const MI=(e,t)=>BigInt(e>>>0)<<NI|BigInt(t>>>0);$I.toBig=MI;const PI=(e,t,n)=>e>>>n;$I.shrSH=PI;const DI=(e,t,n)=>e<<32-n|t>>>n;$I.shrSL=DI;const jI=(e,t,n)=>e>>>n|t<<32-n;$I.rotrSH=jI;const RI=(e,t,n)=>e<<32-n|t>>>n;$I.rotrSL=RI;const LI=(e,t,n)=>e<<64-n|t>>>n-32;$I.rotrBH=LI;const FI=(e,t,n)=>e>>>n-32|t<<64-n;$I.rotrBL=FI;const UI=(e,t)=>t;$I.rotr32H=UI;const WI=e=>e;$I.rotr32L=WI;const BI=(e,t,n)=>e<<n|t>>>32-n;$I.rotlSH=BI;const GI=(e,t,n)=>t<<n|e>>>32-n;$I.rotlSL=GI;const VI=(e,t,n)=>t<<n-32|e>>>64-n;$I.rotlBH=VI;const YI=(e,t,n)=>e<<n-32|t>>>64-n;function HI(e,t,n,r){const i=(t>>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:0|i}}$I.rotlBL=YI,$I.add=HI;const zI=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0);$I.add3L=zI;const qI=(e,t,n,r)=>t+n+r+(e/2**32|0)|0;$I.add3H=qI;const KI=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0);$I.add4L=KI;const JI=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0;$I.add4H=JI;const ZI=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0);$I.add5L=ZI;const XI=(e,t,n,r,i,o)=>t+n+r+i+o+(e/2**32|0)|0;$I.add5H=XI;const QI={fromBig:TI,split:AI,toBig:MI,shrSH:PI,shrSL:DI,rotrSH:jI,rotrSL:RI,rotrBH:LI,rotrBL:FI,rotr32H:UI,rotr32L:WI,rotlSH:BI,rotlSL:GI,rotlBH:VI,rotlBL:YI,add:HI,add3L:zI,add3H:qI,add4L:KI,add4H:JI,add5H:XI,add5L:ZI};$I.default=QI;var ex={},tx={};Object.defineProperty(tx,"__esModule",{value:!0}),tx.crypto=void 0,tx.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,function(e){
|
|
10
|
+
var e=O,t=x,n=uy(),r=u,o=j,s={};ay=s;var a=["daily","test","m","h","custom"],c="YYYYMMDDHHmm";function l(t,n){if(t.hash===r.createHash(t.hashType).update(t.name+"LOG_FILE"+t.date).digest("hex"))try{e.existsSync(t.name)&&e.unlinkSync(t.name)}catch(e){n&&console.error(new Date,"[FileStreamRotator] Could not remove old log file: ",t.name)}}s.getFrequency=function(e){var t=e.toLowerCase().match(/^(\d+)([mh])$/);if(t)return function(e,t){if("number"==typeof t){switch(e){case"m":if(t<0||t>60)return!1;break;case"h":if(t<0||t>24)return!1}return{type:e,digit:t}}}(t[2],parseInt(t[1]));var n=function(e){switch(e){case"custom":case"daily":return{type:e,digit:void 0};case"test":return{type:e,digit:0}}return!1}(e);return n||!1},s.parseFileSize=function(e){if(e&&"string"==typeof e){var t=e.toLowerCase().match(/^((?:0\.)?\d+)([kmg])$/);if(t)switch(t[2]){case"k":return 1024*t[1];case"m":return 1024*t[1]*1024;case"g":return 1024*t[1]*1024*1024}}return null},s.getDate=function(e,t,r){t=t||c;let i=r?n.utc():n().local();if(e&&-1!==a.indexOf(e.type))switch(e.type){case"m":var o=Math.floor(i.minutes()/e.digit)*e.digit;return i.minutes(o).format(t);case"h":var s=Math.floor(i.hour()/e.digit)*e.digit;return i.hour(s).format(t);case"daily":case"custom":case"test":return i.format(t)}return i.format(t)},s.setAuditLog=function(n,r,i){var o=null;if(n){var s=n.toString().substr(-1),a=n.toString().match(/^(\d+)/);if(Number(a[1])>0){var c=t.dirname(i.replace(/%DATE%.+/,"_filename"));try{if(r){var l=t.resolve(r);o=JSON.parse(e.readFileSync(l,{encoding:"utf-8"}))}else l=t.resolve(c+"/.audit.json"),o=JSON.parse(e.readFileSync(l,{encoding:"utf-8"}))}catch(n){if("ENOENT"!==n.code)return null;o={keep:{days:!1,amount:Number(a[1])},auditLog:r||c+"/.audit.json",files:[]}}o.keep={days:"d"===s,amount:Number(a[1])}}}return o},s.writeAuditLog=function(t,n){try{d(t.auditLog),e.writeFileSync(t.auditLog,JSON.stringify(t,null,4))}catch(e){n&&console.error(new Date,"[FileStreamRotator] Failed to store log audit at:",t.auditLog,"Error:",e)}},s.addLogToAudit=function(e,t,i,o){if(t&&t.files){if(-1!==t.files.findIndex((function(t){return t.name===e})))return t;var a=Date.now();if(t.files.push({date:a,name:e,hash:r.createHash(t.hashType).update(e+"LOG_FILE"+a).digest("hex")}),t.keep.days){var c=n().subtract(t.keep.amount,"days").valueOf(),u=t.files.filter((function(e){return e.date>c||(e.hashType=t.hashType,l(e,o),i.emit("logRemoved",e),!1)}));t.files=u}else{var d=t.files.splice(-t.keep.amount);t.files.length>0&&t.files.filter((function(e){return e.hashType=t.hashType,l(e,o),i.emit("logRemoved",e),!1})),t.files=d}s.writeAuditLog(t,o)}return t},s.getStream=function(r){var l=null,u=null,f=this;if(!r.filename)return console.error(new Date,"[FileStreamRotator] No filename supplied. Defaulting to STDOUT"),process.stdout;r.frequency&&(l=f.getFrequency(r.frequency));let p=f.setAuditLog(r.max_logs,r.audit_file,r.filename);null!=p&&(p.hashType=void 0!==r.audit_hash_type?r.audit_hash_type:"md5"),f.verbose=void 0===r.verbose||r.verbose;var g=null,m=0,y=0;r.size&&(g=s.parseFileSize(r.size));var v=r.date_format||c;l&&"daily"==l.type&&(r.date_format||(v="YYYY-MM-DD"),n().format(v)==n().endOf("day").format(v)&&n().format(v)!=n().add(1,"day").format(v)||(f.verbose&&console.log(new Date,"[FileStreamRotator] Changing type to custom as date format changes more often than once a day or not every day"),l.type="custom")),l&&(u=r.frequency?f.getDate(l,v,r.utc):""),r.create_symlink=r.create_symlink||!1,r.extension=r.extension||"";var b=r.filename,w=null,S=b+(u?"."+u:"");if(b.match(/%DATE%/)&&(S=b.replace(/%DATE%/g,u||f.getDate(null,v,r.utc))),g){var _=null,I=S;if(p&&p.files&&p.files instanceof Array&&p.files.length>0){var x=p.files[p.files.length-1].name;if(x.match(I)){var k=x.match(I+"\\.(\\d+)");k&&(I=x,m=k[1])}}for(0==m&&I==S&&(I+=r.extension);e.existsSync(I);)_=I,m++,I=S+"."+m+r.extension;if(_){var E=e.statSync(_);E.size<g&&(I=_,m--,y=E.size)}S=I}else S+=r.extension;f.verbose&&console.log(new Date,"[FileStreamRotator] Logging to: ",S),d(S);var C=r.file_options||{flags:"a"},$=e.createWriteStream(S,C);if(u&&l&&a.indexOf(l.type)>-1||g>0){f.verbose&&console.log(new Date,"[FileStreamRotator] Rotating file: ",l?l.type:"",g?"size: "+g:"");var O,N=new o;return N.auditLog=p,N.end=function(){$.end.apply($,arguments)},h($,N),N.on("close",(function(){O&&O.close()})),N.on("new",(function(n){N.auditLog=f.addLogToAudit(n,N.auditLog,N,f.verbose),r.create_symlink&&function(n,r,i){let o=r||"current.log",s=t.dirname(n),a=t.basename(n),c=s+"/"+o;try{e.lstatSync(c).isSymbolicLink()&&(e.unlinkSync(c),e.symlinkSync(a,c))}catch(n){if(n&&"ENOENT"==n.code)try{e.symlinkSync(a,c)}catch(n){i&&console.error(new Date,"[FileStreamRotator] Could not create symlink file: ",c," -> ",a)}}}(n,r.symlink_name,f.verbose),r.watch_log&&N.emit("addWatcher",n)})),N.on("addWatcher",(function(t){O&&O.close(),r.watch_log&&(O=function(t,n){if(!t)return null;try{return e.lstatSync(t),e.watch(t,(function(n){if("rename"==n)try{e.lstatSync(t)}catch(e){!function(e,t){N.emit("createLog",t)}(0,t)}}))}catch(e){n&&console.log(new Date,"[FileStreamRotator] Could not add watcher for "+t)}}(t,f.verbose))})),N.on("createLog",(function(t){try{e.lstatSync(t)}catch(n){$&&"function"==$.end&&$.end(),$=e.createWriteStream(t,C),N.emit("new",t),h($,N)}})),N.write=function(t,n){var o=l?this.getDate(l,v,r.utc):u;if(o!=u||g&&y>g){var s=b+(u&&l?"."+o:"");b.match(/%DATE%/)&&u&&(s=b.replace(/%DATE%/g,o)),g&&y>g?s+="."+ ++m+r.extension:(m=0,s+=r.extension),y=0,f.verbose&&console.log(new Date,i.format("[FileStreamRotator] Changing logs from %s to %s",S,s)),u=o,w=S,S=s,!0===r.end_stream?$.end():$.destroy(),d(S),$=e.createWriteStream(s,C),N.emit("new",s),N.emit("rotate",w,s),h($,N)}$.write(t,n),y+=Buffer.byteLength(t,n)}.bind(this),process.nextTick((function(){N.emit("new",S)})),N.emit("new",S),N}return f.verbose&&console.log(new Date,"[FileStreamRotator] File won't be rotated: ",r.frequency,r.size),process.nextTick((function(){$.emit("new",S)})),$};var d=function(n){t.dirname(n).split(t.sep).reduce((function(n,r){if(n+=r+t.sep,!e.existsSync(n))try{e.mkdirSync(n)}catch(n){if("EEXIST"!==n.code)throw n}return n}),"")},h=function(e,t){e.on("close",(function(){t.emit("close")})),e.on("finish",(function(){t.emit("finish")})),e.on("error",(function(e){t.emit("error",e)})),e.on("open",(function(e){t.emit("open",e)}))};return ay}const hy=O,fy=T,py=x,gy=i,my=R,yy=oy.exports,vy=Yd.MESSAGE,by=P.PassThrough,wy=yp,Sy={json:!1,colorize:!1,eol:fy.EOL,logstash:null,prettyPrint:!1,label:null,stringify:!1,depth:null,showLevel:!0,timestamp:()=>(new Date).toISOString()},_y=function(e){if(e=e||{},wy.call(this,e),this.options=Object.assign({},Sy,e),e.stream)!function(t){Array.prototype.slice.call(arguments,1).forEach((n=>{if(e[n])throw new Error("Cannot set "+n+" and "+t+" together")}))}("stream","filename","maxsize"),this.logStream=new by,this.logStream.pipe(e.stream);else{if(this.filename=e.filename?py.basename(e.filename):"winston.log",this.dirname=e.dirname||py.dirname(e.filename),t=this.filename,/["<>|:*?\\/\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]/g.test(t)||!function(e){return!/["<>|\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]/g.test(e)}(this.dirname))throw new Error("Your path or filename contain an invalid character.");this.logStream=dy().getStream({filename:py.join(this.dirname,this.filename),frequency:e.frequency?e.frequency:"custom",date_format:e.datePattern?e.datePattern:"YYYY-MM-DD",verbose:!1,size:function(e){if(e&&"string"==typeof e){if(e.toLowerCase().match(/^((?:0\.)?\d+)([kmg])$/))return e}else if(e&&Number.isInteger(e)){const t=Math.round(e/1024);return 0===t?"1k":t+"k"}return null}(e.maxSize),max_logs:e.maxFiles,end_stream:!0,audit_file:e.auditFile?e.auditFile:py.join(this.dirname,"."+yy(e)+"-audit.json"),file_options:e.options?e.options:{flags:"a"},utc:!!e.utc&&e.utc,extension:e.extension?e.extension:"",create_symlink:!!e.createSymlink&&e.createSymlink,symlink_name:e.symlinkName?e.symlinkName:"current.log",watch_log:!!e.watchLog&&e.watchLog,audit_hash_type:e.auditHashType?e.auditHashType:"sha256"}),this.logStream.on("new",(e=>{this.emit("new",e)})),this.logStream.on("rotate",((e,t)=>{this.emit("rotate",e,t)})),this.logStream.on("logRemoved",(t=>{if(e.zippedArchive){const e=t.name+".gz";try{hy.unlinkSync(e)}catch(t){if("ENOENT"!==t.code)return t.message=`Error occurred while removing ${e}: ${t.message}`,void this.emit("error",t)}this.emit("logRemoved",e)}else this.emit("logRemoved",t.name)})),e.zippedArchive&&this.logStream.on("rotate",(e=>{try{if(!hy.existsSync(e))return}catch(t){return t.message=`Error occurred while checking existence of ${e}: ${t.message}`,void this.emit("error",t)}try{if(hy.existsSync(`${e}.gz`))return}catch(t){return t.message=`Error occurred while checking existence of ${e}.gz: ${t.message}`,void this.emit("error",t)}const t=my.createGzip(),n=hy.createReadStream(e);n.on("error",(t=>{t.message=`Error occurred while reading ${e}: ${t.message}`,this.emit("error",t)}));const r=hy.createWriteStream(e+".gz");r.on("error",(t=>{t.message=`Error occurred while writing ${e}.gz: ${t.message}`,this.emit("error",t)})),n.pipe(t).pipe(r).on("finish",(()=>{try{hy.unlinkSync(e)}catch(t){if("ENOENT"!==t.code)return t.message=`Error occurred while removing ${e}: ${t.message}`,void this.emit("error",t)}this.emit("archive",e+".gz")}))})),e.watchLog&&this.logStream.on("addWatcher",(e=>{this.emit("addWatcher",e)}))}var t};var Iy=_y;gy.inherits(_y,wy),_y.prototype.name="dailyRotateFile";const xy=function(){};_y.prototype.log=function(e,t){t=t||xy,this.logStream.write(e[vy]+this.options.eol),this.emit("logged",e),t(null,!0)},_y.prototype.close=function(){this.logStream&&this.logStream.end((()=>{this.emit("finish")}))},_y.prototype.query=function(e,t){if("function"==typeof e&&(t=e,e={}),!this.options.json)throw new Error("query() may not be used without the json option being set to true");if(!this.filename)throw new Error("query() may not be used when initializing with a stream");let n=[];(e=e||{}).rows=e.rows||e.limit||10,e.start=e.start||0,e.until=e.until||new Date,"object"!=typeof e.until&&(e.until=new Date(e.until)),e.from=e.from||e.until-864e5,"object"!=typeof e.from&&(e.from=new Date(e.from)),e.order=e.order||"desc";const r=(()=>{const e=new RegExp(this.filename.replace("%DATE%",".*"),"i");return hy.readdirSync(this.dirname).filter((t=>py.basename(t).match(e)))})();0===r.length&&t&&t(null,n);const i=o=>{if(!o)return;const s=py.join(this.dirname,o);let a,c="";if(o.endsWith(".gz")){a=new by;const e=hy.createReadStream(s);e.on("error",(e=>{e.message=`Error occurred while reading ${s}: ${e.message}`,a.emit("error",e)})),e.pipe(my.createGunzip()).pipe(a)}else a=hy.createReadStream(s,{encoding:"utf8"});function l(t,r){try{const r=JSON.parse(t);if(!r||"object"!=typeof r)return;const i=new Date(r.timestamp);if(e.from&&i<e.from||e.until&&i>e.until||e.level&&e.level!==r.level)return;n.push(r)}catch(e){r||a.emit("error",e)}}a.on("error",(e=>{if(a.readable&&a.destroy(),t)return"ENOENT"===e.code?t(null,n):t(e)})),a.on("data",(e=>{const t=(e=(c+e).split(/\n+/)).length-1;for(let n=0;n<t;n++)l(e[n]);c=e[t]})),a.on("end",(()=>{if(c&&l(c,!0),r.length)i(r.shift());else if(t){n.sort(((e,t)=>{const n=new Date(e.timestamp).getTime(),r=new Date(t.timestamp).getTime();return n>r?1:n<r?-1:0})),"desc"===e.order&&(n=n.reverse());const r=e.start||0,i=e.limit||n.length;n=n.slice(r,r+i),e.fields&&(n=n.map((t=>{const n={};return e.fields.forEach((e=>{n[e]=t[e]})),n}))),t(null,n)}}))};i(r.shift())};const ky=Iy;fd.transports.DailyRotateFile=ky;var Ey=Ku(ky);const Cy=Date.now();let $y=Math.ceil(Cy/1e3);var Oy=()=>$y+=1;const Ny=k(A(),"kemu-user-services"),Ty=k(A(),"kemu-test-services"),Ay="KMU-CB-v1",My=process.env.HUB_PKG_VERSION||'"1.10.1"';var Py;!function(e){e.input="input",e.counter="counter",e.play="play",e.elapsed="elapsed",e.ifGate="ifGate",e.skipEvent="skipEvent",e.between="between",e.map="map",e.parser="parser",e.slider="slider",e.suspend="suspend",e.display="display",e.pixelfy="pixelfy",e.json="json",e.arrayItem="arrayItem",e.extractImage="extractImage",e.imageConvolution="imageConvolution",e.firstEvent="firstEvent",e.pixelDraw="pixelDraw",e.randomBetween="randomBetween",e.arrayCombine="arrayCombine",e.clock="clock",e.multiplication="multiplication",e.object="object",e.widgetGroup="widgetGroup",e.script="script",e.base64ToImageData="base64ToImageData",e.jsonParse="jsonParse",e.text="text",e.imageCrop="imageCrop",e.imageResize="imageResize",e.value="value",e.imageWarp="imageWarp",e.widgetBundle="widgetBundle",e.sequence="sequence",e.variable="variable",e.hubService="hubService"}(Py||(Py={}));const Dy=e=>({...e,type:Array.isArray(e.type)?e.type.map((e=>xu[e])):xu[e.type]}),jy=async e=>{try{return await _(e,"utf-8")}catch(e){return null}},Ry=e=>{if(e&&e.startsWith(Ay)){const t=e.slice(9),n=decodeURI(t);return ju(n)}return null},Ly=async(e,t,n)=>{let r=[];e.variants?.length&&(r=e.variants.map((e=>({...e,...e.inputs?{inputs:e.inputs.map(Dy)}:{},...e.outputs?{outputs:e.outputs.map(Dy)}:{}}))));const i={...e,path:t,customWidgets:[],...e.inputs?{inputs:e.inputs.map(Dy)}:{inputs:[]},...e.outputs?{outputs:e.outputs.map(Dy)}:{outputs:[]},variants:r,...e.widgetUI&&n?.widgetUIContents?{widgetUIContents:n.widgetUIContents}:{}},o=await(async(e,t,n=console.log)=>{const r=[];if(t.customWidgets?.length)for(const i of t.customWidgets){const t=await jy(k(e,i));if(!t){n(`Error loading custom widget file ${i}`);continue}const o=t.startsWith(Ay)?t:`${Ay}${t}`,s=Ry(o);if(!s){n(`Custom widget file "${i}" is not a valid Kemu Clipboard item`);continue}const a=Object.values(s).filter((e=>e.type===Py.widgetGroup&&!e.groupId));if(a.length>1){n(`Custom widget file "${i}" contains more than one top level widgetGroup`);continue}const c=a[0];if(!c){n(`Custom widget file "${i}" does not contain a top level widgetGroup`);continue}const l=c.state,u={name:l.name,color:l.color,description:l.description,contents:o,rootGroupId:c.id,icon:l.icon,protocolVersion:l.protocolVersion||"2"};r.push(u)}return r})(t,e,n?.log);if(o.length?i.customWidgets=o:delete i.customWidgets,i.variants?.length)for(const e of i.variants)if(e.svgIcon)try{const n=await _(k(t,e.svgIcon),"utf-8");e.svgIcon=n}catch(t){n?.log&&n?.log(`Error loading svgIcon for variant ${e.id}: ${t}`)}return i},Fy=async e=>{try{return await v(e,b.F_OK),!0}catch{return!1}};let Uy=null,Wy=null;const By=()=>Uy||Ny,Gy=()=>Wy||Ty;let Vy=null;const Yy={setGlobalUserId:e=>Vy?.setGlobalUserId?.(e),captureError:e=>Vy?.captureError?.(e),flushMessages:async()=>Vy?.flushMessages?.(),isEnabled:()=>!!Vy};var Hy={...Yy,setTracker:e=>{Vy=e}};const zy=hd("servicesManager"),qy={};let Ky=null,Jy=null,Zy=null,Xy=!1;class Qy extends Error{code;originalError;constructor(e,t,n){super(e),this.code=t,this.originalError=n,this.name="ServiceError"}}const ev=async e=>{try{return await v(e),!0}catch{return!1}},tv=async e=>{if(!Ky)throw new Error('IPC config not set, call "setHubIpcConfig" first.');let t;if(e.info.internal)if("linux"===M()){const n=process.env.XDG_STATE_HOME||x.join(A(),".local","state");t=x.join(n,"kemu-hub","service-logs",e.info.name);try{await y(t,{recursive:!0})}catch(n){zy(`Failed to create log directory ${t}, falling back to service path`),t=e.info.path}}else t=e.info.path;else t=x.join(e.info.path,"..");const n=e.logsEnabled?((e,t)=>{const n=iy.createLogger({level:"info",format:iy.format.combine(iy.format.timestamp(),iy.format.errors({stack:!0}),iy.format.json()),defaultMeta:{service:e},transports:[new Ey({filename:x.join(t,"service-%DATE%.log"),datePattern:"YYYY-MM-DD",maxSize:"5m",maxFiles:"5d",auditFile:x.join(t,".service-log-audit.json")})]});return n.getLastLogs=async(n=100)=>{try{const r=x.join(t,".service-log-audit.json"),i=await m.readFile(r,"utf-8"),o=ju(i);if(!o)return console.warn(`Missing audit file for ${e}, skipping log retrieval.`),[];const s=async e=>(await m.readFile(e,"utf-8")).split("\n").filter((e=>e.trim())),a=[],c=[...o.files].reverse();for(const e of c){const t=await s(e.name);if(a.push(...t),a.length>=n)break}return a}catch(t){return console.warn(`Failed to read service logs for ${e}: `,t),[]}},n})(e.info.name,t):null,r=t=>{if(!e.devMode){const{childProcess:r,...i}=e;Hy.isEnabled()&&Hy.captureError({error:t,data:{logs:n?.getLastLogs(),service:{...i,spawnargs:r?.spawnargs,info:void 0,name:e.info.name,version:e.info.version}}})}};try{if(e.info.processor===Eu.Javascript){zy(`Spawning service ${e.info.name} with sessionId ${e.info.sessionId}`);const t=x.join(e.info.path,"processor.js"),i=x.join(e.info.path,"processor.mjs"),o=await ev(t)?t:i,s=[`--sessionId=${e.info.sessionId.toString()}`,`--ipcSpace=${Ky.appSpace}`,`--ipcId=${Ky?.id}`,`--recipePath=${Ky.recipePath||""}`];if(e.info.internal&&s.push("--internal=true"),!Zy)throw new Error('Get secrets function not set, call "setGetSecretsFunction" first.');const a=await Zy({name:e.info.name,version:e.info.version,requiredSecrets:e.info.requiredSecrets||{}}),c=Object.entries(e.info.requiredSecrets||{}).filter((([e,t])=>null==a[e]&&!t.optional)).map((([e])=>e));if(c?.length)throw new Qy(`Missing required environment variables: ${c.join(", ")}`,"MISSING_REQUIRED_SECRETS");return new Promise(((t,i)=>{if(!Jy)throw new Error('Spawn function not set, call "setSpawnNodeFunction" first.');const c=Jy({args:[o,...s],serviceInfo:{name:e.info.name,version:e.info.version},options:{env:{...a}}});c.stdout.on("data",(t=>{const r=t.toString().trim();r&&(n?.info(r),zy(`[${e.info.name}] - stdout: ${r}`))})),c.stderr.on("data",(t=>{const i=t.toString().trim();i&&(n?.error(i),r(new Error(i)),zy(`[${e.info.name}] - stderr: ${i}`))})),c.on("exit",(t=>{const r=`exited with code ${t}`;n?.info(r,{code:t}),zy(`[${e.info.name}] ${r}`)})),c.on("spawn",(()=>{const r=`spawned with PID ${c.pid}`;n?.info(r,{pid:c.pid}),zy(`[${e.info.name}] ${r}`),t(c)})),c.on("error",(t=>{n?.error(`[${e.info.name}] error`,t),zy(`[${e.info.name}] error: ${t}`),r(t),i(new Qy(`Error spawning service ${e.info.name}: ${t}`,"SPAWN_ERROR"))}))}))}throw`Unsupported processor type ${e.info.processor}`}catch(t){if(r(t),t instanceof Qy)throw t;throw`Error spawning service ${e.info.name}: ${t}`}},nv=e=>e?.name?e?.version?e?.description?e?.processor?[Eu.Javascript,Eu.Executable,Eu.Python].includes(e?.processor)?null:"Invalid processor":"Missing processor":"Missing description":"Missing version":"Missing name",rv=async(e,t)=>{const n=x.join(e,"manifest.json");if(!await ev(n)){const t=`Missing manifest for service ${e}. Aborting.`;return zy(t),{error:t}}const r=await _(n,"utf-8"),i=ju(r),o=nv(i);if(!i||o){const t=`Invalid service manifest [${e}]: ${o}. Aborting.`;return zy(t),{error:t}}let s;if(delete i.internal,t?.singleServiceName&&i.name!==t.singleServiceName)return{error:`Skipping service ${i.name} as it does not match the singleServiceName option`};await Promise.all([(async()=>{if(i.widgetUI)try{s=await _(x.join(e,"widgetUI.js"))}catch(e){const t=`Error loading widgetUI file ${i.name}: ${e}`;return zy(t),{error:t}}})(),(async()=>{if(i.svgIcon){const t=await jy(x.join(e,i.svgIcon));if(!t)return{error:`Error loading icon for service ${i.name}`};i.svgIcon=t}})(),(async()=>{if(i.subServices?.length)for(const t of i.subServices){const n=x.join(e,t),{error:r,service:o}=await rv(n);r?zy(`Error loading sub-service ${t}: ${r}`):o&&(o.info.parentService={name:i.name,version:i.version})}delete i.subServices})(),(async()=>{if(i.variants?.length)for(const t of i.variants)if(t.svgIcon)try{const n=await _(x.join(e,t.svgIcon),"utf-8");t.svgIcon=n}catch(e){zy(`Error loading svgIcon for variant ${t.id}: ${e}`)}})()]);const a=Oy(),c=t?.fixedSession||a;zy(`Loaded service ${i.name} with sessionId ${c}`);const l=await Ly(i,e,{widgetUIContents:s});return iv(l),qy[c]={info:{...l,path:e,sessionId:c},status:"loaded",childProcess:null,logsEnabled:t?.logsEnabled},{service:qy[c]}},iv=e=>{e.widgetUIContents?e.uiContentChecksum=(e=>{const t=f("sha256");return t.update(e),t.digest("hex")})(e.widgetUIContents):e.uiContentChecksum=void 0},ov=async e=>{try{return e.childProcess=await tv(e),e.status="started",e.errorMsg=void 0,e.errorCode=void 0,!0}catch(t){return zy(`Service [${e.info.name}] error: ${t}`),e.status="error",t instanceof Qy?(e.errorMsg=t.message,e.errorCode=t.code):(e.errorMsg="string"==typeof t?t:JSON.stringify(t),e.errorCode="UNKNOWN_ERROR"),!1}},sv=e=>{const{path:t,...n}=e.info;return{...n}},av=()=>Object.values(qy).filter((e=>"running"===e.status)).map(sv),cv=e=>{if(!e?.kill)return zy(`Failed to kill service ${e?.pid} because it is not a child process`),!1;let t=e.kill("SIGINT");return t||(zy(`Failed to send SIGINT to service ${e.pid} using SIGINT`),t=e.kill("SIGTERM"),t||(zy(`Failed to send SIGTERM to service ${e.pid} using SIGTERM`),t=e.kill("SIGKILL"),t||zy(`Failed to send SIGKILL to service ${e.pid} using SIGKILL`))),t},lv=async e=>{const{serviceName:t,version:n,force:r,timeout:i=15e3}=e,o=Object.values(qy).find((t=>t.info.name===e.serviceName&&t.info.version===e.version));if(!o)return null;if(o.info.internal&&!r)throw`Cannot stop internal service ${t}`;if(o.childProcess){zy(`Stopping service "${t} (v${n})"`);const r=new Promise(((e,n)=>{const r=setTimeout((()=>{n(new Error(`Timeout waiting for service ${t} to stop after ${i}ms`))}),i);o.childProcess.once("exit",((n,i)=>{clearTimeout(r),zy(`Service ${t} process exited with code ${n} and signal ${i}`),e()})),o.childProcess.once("error",(n=>{clearTimeout(r),zy(`Service ${t} process error: ${n.message}`),e()}))}));cv(o.childProcess);try{await r,zy(`Service ${t} process successfully terminated`)}catch(e){zy(`Warning: ${e instanceof Error?e.message:"Unknown error"} while waiting for service ${t} to stop`)}}return o.status="stopped",zy(`Service ${t} stopped`),o},uv=e=>e.info.internal?e.info.path:x.join(e.info.path,".."),dv=e=>!!e.internal;var hv={isOfficialKemuService:e=>e.name.startsWith("kemu.io"),loadServices:async(e,t)=>{if(!await Fy(e))return void zy(`Failed to load services from "${e}". Directory does not exist.`);const n=(await w(e,{withFileTypes:!0})).filter((e=>e.isDirectory())).map((e=>e.name));zy(`Found ${n.length} services in "${e}"`);for(let r=0;r<n.length;r++){const i=n[r],o=x.join(e,i),{error:s,service:a}=await rv(`${o}${t?.internalServices?"":"/dist"}`,{...t,logsEnabled:Array.isArray(t?.enableLogs)?t?.enableLogs.includes(i):t?.enableLogs});s&&zy(`Failed to load service ${o}. Please check logs`),a&&t?.internalServices&&(a.info.internal=!0)}},launchServices:async e=>{if(zy("Initializing services"),!Ky)throw new Error('IPC config not set, call "setHubIpcConfig" first.');for(const t in qy){const n=qy[t];e.noSpawningList&&e.noSpawningList.includes(n.info.name)?zy(`Service ${n.info.name} is in the noSpawningList. Skipping.`):ov(n)}zy("Services initialized")},setServiceStatus:(e,t)=>{const n=qy[e];return n?(n.status=t,!0):(zy(`Service with serviceId ${e} not found`),!1)},getActiveServices:av,getMatchingService:(e,t)=>{const n=Object.values(qy).filter((e=>"running"===e.status));for(const r of n)if(r.info.name===e){if(r.info.version===t)return r;if(Vu(r.info.version,t,">="))return r}return null},getServiceBySessionId:e=>qy[e]||null,killAllServices:()=>{for(const e in qy){const t=qy[e];if(t.childProcess)try{zy(`Killing service ${t.info.name} with PID ${t.childProcess.pid}`),cv(t.childProcess)}catch(e){zy(`Error killing service ${t.info.name}: ${e}`)}}},addDevService:async(e,t,n)=>{const r={info:{...await Ly(t,t.path),sessionId:e},status:n,startedAt:new Date,devMode:!0,childProcess:null};qy[e]=r,iv(qy[e].info)},setServiceManifest:(e,t,n)=>{const r=qy[e];if(!r)return zy(`Service with sessionId ${e} not found`),!1;const i=nv(t);if(i)return zy(`Invalid manifest for service ${r.info.name}: ${i}`),!1;iv(t),r.info={...r.info,...t},n&&(r.status=n)},getMatchingDevService:(e,t,n)=>{const r=Object.values(qy).filter((e=>e.devMode));for(const i of r)if(i.info.name===e&&i.status===n&&i.info.version===t)return i;return null},getInternalServices:()=>av().filter((e=>e.internal)),getAllServices:()=>Object.values(qy),stopService:lv,uninstallService:async(e,t)=>{zy(`Uninstalling service ${e} v${t}`);const n=await lv({serviceName:e,version:t});if(!n)return!1;zy(`Service ${e} stopped. Removing from disk...`);const r=uv(n),i=By();return r.startsWith(i)?(await S(r,{recursive:!0,force:!0,maxRetries:3}),zy(`Service ${e} successfully removed from disk`),(e=>{qy[e],delete qy[e]})(n.info.sessionId),!0):(zy(`Service ${e} is not installed in the user services directory. Aborting.`),!1)},getAllServiceVersions:e=>Object.values(qy).filter((t=>t.info.name===e)),setHubIpcConfig:e=>{Ky={...e}},setEnableServiceLogsConfig:e=>{Xy=e},loadAndLaunch:async(e,t,n)=>{const r=C(e,t),{error:i,service:o}=await rv(r,{logsEnabled:Xy});if(i||!o)return{errorMsg:i};try{o.info.internal=!!n,o.childProcess=await tv(o),o.status="started"}catch(e){o.status="error",e instanceof Qy?(zy(`Service spawning error: ${e.message} (${e.code})`),o.errorMsg=e.message,o.errorCode=e.code):(zy(`Error launching service ${o.info.name}: ${e}`),o.errorMsg="string"==typeof e?e:JSON.stringify(e))}return{service:o,errorCode:o.errorCode,errorMsg:o.errorMsg}},getServiceRootDirectory:uv,setSpawnNodeFunction:e=>{Jy=e},setGetSecretsFunction:e=>{Zy=e},restartService:async(e,t)=>{zy(`Restarting service ${e} v${t}`);const n=await lv({serviceName:e,version:t,force:!0});return!!n&&ov(n)},getFailedServices:()=>Object.values(qy).filter((e=>"error"===e.status)).map((e=>({...sv(e),errorMsg:e.errorMsg||"",errorCode:e.errorCode,status:e.status}))),isInternalKemuService:dv,isNotInternalKemuService:e=>!dv(e),isNotDevService:e=>!e.devMode};class fv{constructor(){}appspace="app.";socketRoot="/tmp/";id=T.hostname();encoding="utf8";rawBuffer=!1;sync=!1;unlink=!0;delimiter="\f";silent=!1;logDepth=5;logInColor=!0;logger=console.log.bind(console);maxConnections=100;retry=500;maxRetries=1/0;stopRetrying=!1;IPType=function(){const e=T.networkInterfaces();let t="";return e&&Array.isArray(e)&&e.length>0&&(t=e[Object.keys(e)[0]][0].family),t}();tls=!1;networkHost="IPv6"==this.IPType?"::1":"127.0.0.1";networkPort=8e3;readableAll=!1;writableAll=!1;interface={localAddress:!1,localPort:!1,family:!1,hints:!1,lookup:!1}}class pv{constructor(e){e||(e=new fv),this.delimiter=e.delimiter}format(e){return e.data||!1===e.data||0===e.data||(e.data={}),e.data._maxListeners&&(e.data={}),e.JSON+this.delimiter}parse(e){let t=e.split(this.delimiter);return t.pop(),t}}var gv=Ku((function(){Object.defineProperties(this,{data:{enumerable:!0,get:function(){return t},set:function(e){t=e}},type:{enumerable:!0,get:function(){return e},set:function(t){e=t}},load:{enumerable:!0,writable:!1,value:function(n){try{n=JSON.parse(n),e=n.type,t=n.data}catch(r){e="error",t={message:"Invalid JSON response format",err:r,response:n}}}},JSON:{enumerable:!0,get:function(){return JSON.stringify({type:e,data:t})}}});var e="",t={}})),mv=Ku((function(){Object.defineProperties(this,{add:{enumerable:!0,writable:!1,value:function(){for(var n in arguments)e.push(arguments[n]);t||this.stop||!this.autoRun||this.next()}},next:{enumerable:!0,writable:!1,value:function(){t=!0,e.length<1||this.stop?t=!1:e.shift().bind(this)()}},clear:{enumerable:!0,writable:!1,value:function(){return e=[]}},contents:{enumerable:!1,get:function(){return e},set:function(t){return e=t}},autoRun:{enumerable:!0,writable:!0,value:!0},stop:{enumerable:!0,writable:!0,value:!1}});var e=[],t=!1}));class yv{}class vv{}const bv=new class{constructor(e=!0){this.strict=e}throw(e,t){let n=new TypeError;if(n.message=`expected type of ${e} to be ${t}`,!this.strict)return!1;throw n}typeCheck(e,t){return typeof e===t||this.throw(typeof e,t)}instanceCheck(e=new yv,t=vv){return e instanceof t||this.throw(typeof e,t.name)}symbolStringCheck(e,t){return Object.prototype.toString.call(e)==`[object ${t}]`||this.throw(Object.prototype.toString.call(e),`[object ${t}]`)}compare(e,t,n){return e==t||this.throw(typeof e,n)}finite(e){return!!isFinite(e)||this.throw(typeof e,"finite")}NaN(e){return this.number(e)?!!isNaN(e)||this.throw(typeof e,"NaN"):this.number(e)}null(e){return this.compare(e,null,"null")}array(e){return this.instanceCheck(e,Array)}boolean(e){return this.typeCheck(e,"boolean")}bigint(e){return this.typeCheck(e,"bigint")}date(e){return this.instanceCheck(e,Date)}generator(e){return this.symbolStringCheck(e,"Generator")}asyncGenerator(e){return this.symbolStringCheck(e,"AsyncGenerator")}globalThis(e){return this.compare(e,globalThis,"explicitly globalThis, not window, global nor self")}infinity(e){return this.compare(e,1/0,"Infinity")}map(e){return this.instanceCheck(e,Map)}weakMap(e){return this.instanceCheck(e,WeakMap)}number(e){return this.typeCheck(e,"number")}object(e){return this.typeCheck(e,"object")}promise(e){return this.instanceCheck(e,Promise)}regExp(e){return this.instanceCheck(e,RegExp)}undefined(e){return this.typeCheck(e,"undefined")}set(e){return this.instanceCheck(e,Set)}weakSet(e){return this.instanceCheck(e,WeakSet)}string(e){return this.typeCheck(e,"string")}symbol(e){return this.typeCheck(e,"symbol")}function(e){return this.typeCheck(e,"function")}asyncFunction(e){return this.symbolStringCheck(e,"AsyncFunction")}generatorFunction(e){return this.symbolStringCheck(e,"GeneratorFunction")}asyncGeneratorFunction(e){return this.symbolStringCheck(e,"AsyncGeneratorFunction")}error(e){return this.instanceCheck(e,Error)}evalError(e){return this.instanceCheck(e,EvalError)}rangeError(e){return this.instanceCheck(e,RangeError)}referenceError(e){return this.instanceCheck(e,ReferenceError)}syntaxError(e){return this.instanceCheck(e,SyntaxError)}typeError(e){return this.instanceCheck(e,TypeError)}URIError(e){return this.instanceCheck(e,URIError)}bigInt64Array(e){return this.instanceCheck(e,BigInt64Array)}bigUint64Array(e){return this.instanceCheck(e,BigUint64Array)}float32Array(e){return this.instanceCheck(e,Float32Array)}float64Array(e){return this.instanceCheck(e,Float64Array)}int8Array(e){return this.instanceCheck(e,Int8Array)}int16Array(e){return this.instanceCheck(e,Int16Array)}int32Array(e){return this.instanceCheck(e,Int32Array)}uint8Array(e){return this.instanceCheck(e,Uint8Array)}uint8ClampedArray(e){return this.instanceCheck(e,Uint8ClampedArray)}uint16Array(e){return this.instanceCheck(e,Uint16Array)}uint32Array(e){return this.instanceCheck(e,Uint32Array)}arrayBuffer(e){return this.instanceCheck(e,ArrayBuffer)}dataView(e){return this.instanceCheck(e,DataView)}sharedArrayBuffer(e){return this.instanceCheck(e,function(){try{return SharedArrayBuffer}catch{return yv}}())}intlDateTimeFormat(e){return this.instanceCheck(e,Intl.DateTimeFormat)}intlCollator(e){return this.instanceCheck(e,Intl.Collator)}intlDisplayNames(e){return this.instanceCheck(e,Intl.DisplayNames)}intlListFormat(e){return this.instanceCheck(e,Intl.ListFormat)}intlLocale(e){return this.instanceCheck(e,Intl.Locale)}intlNumberFormat(e){return this.instanceCheck(e,Intl.NumberFormat)}intlPluralRules(e){return this.instanceCheck(e,Intl.PluralRules)}intlRelativeTimeFormat(e){return this.instanceCheck(e,Intl.RelativeTimeFormat)}intlRelativeTimeFormat(e){return this.instanceCheck(e,Intl.RelativeTimeFormat)}finalizationRegistry(e){return this.instanceCheck(e,FinalizationRegistry)}weakRef(e){return this.instanceCheck(e,WeakRef)}};class wv{constructor(){}on(e,t,n=!1){return bv.string(e),bv.function(t),bv.boolean(n),"*"==e&&(e=this.#e),this.#t[e]||(this.#t[e]=[]),t[this.#n]=n,this.#t[e].push(t),this}once(e,t){return this.on(e,t,!0)}off(e="*",t="*"){if(bv.string(e),e!=this.#e.toString()&&"*"!=e||(e=this.#e),!this.#t[e])return this;if("*"==t)return delete this.#t[e],this;bv.function(t);const n=this.#t[e];for(;n.includes(t);)n.splice(n.indexOf(t),1);return n.length<1&&delete this.#t[e],this}emit(e,...t){bv.string(e);const n=this.#t[this.#e]||[];if(this.#r(this.#e.toString(),n,e,...t),!this.#t[e])return this;const r=this.#t[e];return this.#r(e,r,...t),this}reset(){this.off(this.#e.toString());for(let e in this.#t)this.off(e);return this}get list(){return Object.assign({},this.#t)}#r=(e,t,...n)=>{bv.string(e),bv.array(t);const r=[];for(let e of t)e(...n),e[this.#n]&&r.push(e);for(let t of r)this.off(e,t)};#e=Symbol.for("event-pubsub-all");#n=Symbol.for("event-pubsub-once");#t={}}let Sv=new pv;class _v extends wv{constructor(e,t){super(),this.config=e,this.log=t,this.publish=super.emit,e.maxRetries&&(this.retriesRemaining=e.maxRetries),Sv=new pv(this.config)}Client=_v;queue=new mv;socket=!1;connect=kv;emit=Iv;retriesRemaining=0;explicitlyDisconnected=!1}function Iv(e,t){this.log("dispatching event to ",this.id,this.path," : ",e,",",t);let n=new gv;n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):Sv.format(n),this.config.sync?this.queue.add(xv.bind(this,n)):this.socket.write(n)}function xv(e){this.log("dispatching event to ",this.id,this.path," : ",e),this.socket.write(e)}function kv(){let e=this;if(e.log("requested connection to ",e.id,e.path),!this.path)return void e.log("\n\n######\nerror: ",e.id," client has not specified socket path it wishes to connect to.");const t={};if(e.port)if(t.host=e.path,t.port=e.port,e.config.interface.localAddress&&(t.localAddress=e.config.interface.localAddress),e.config.interface.localPort&&(t.localPort=e.config.interface.localPort),e.config.interface.family&&(t.family=e.config.interface.family),e.config.interface.hints&&(t.hints=e.config.interface.hints),e.config.interface.lookup&&(t.lookup=e.config.interface.lookup),e.config.tls){if(e.log("Connecting client via TLS to",e.path,e.port,e.config.tls),e.config.tls.private&&(e.config.tls.key=O.readFileSync(e.config.tls.private)),e.config.tls.public&&(e.config.tls.cert=O.readFileSync(e.config.tls.public)),e.config.tls.trustedConnections){"string"==typeof e.config.tls.trustedConnections&&(e.config.tls.trustedConnections=[e.config.tls.trustedConnections]),e.config.tls.ca=[];for(let t=0;t<e.config.tls.trustedConnections.length;t++)e.config.tls.ca.push(O.readFileSync(e.config.tls.trustedConnections[t]))}Object.assign(e.config.tls,t),e.socket=B.connect(e.config.tls)}else e.log("Connecting client via TCP to",t),e.socket=W.connect(t);else e.log("Connecting client on Unix Socket :",e.path),t.path=e.path,"win32"!==process.platform||e.path.startsWith("\\\\.\\pipe\\")||(t.path=t.path.replace(/^\//,""),t.path=t.path.replace(/\//g,"-"),t.path=`\\\\.\\pipe\\${t.path}`),e.socket=W.connect(t);e.socket.setEncoding(this.config.encoding),e.socket.on("error",(function(t){e.log("\n\n######\nerror: ",t),e.publish("error",t)})),e.socket.on("connect",(function(){e.publish("connect"),e.retriesRemaining=e.config.maxRetries,e.log("retrying reset")})),e.socket.on("close",(function(){if(e.log("connection closed",e.id,e.path,e.retriesRemaining,"tries remaining of",e.config.maxRetries),e.config.stopRetrying||e.retriesRemaining<1||e.explicitlyDisconnected)return e.publish("disconnect"),e.log(e.config.id,"exceeded connection rety amount of"," or stopRetrying flag set."),e.socket.destroy(),e.publish("destroy"),void(e=void 0);setTimeout(function(){e.explicitlyDisconnected||(e.retriesRemaining--,e.connect())}.bind(null,e),e.config.retry),e.publish("disconnect")})),e.socket.on("data",(function(t){if(e.log("## received events ##"),e.config.rawBuffer){if(e.publish("data",Buffer.from(t,e.config.encoding)),!e.config.sync)return;return void e.queue.next()}if(this.ipcBuffer||(this.ipcBuffer=""),(t=this.ipcBuffer+=t).slice(-1)!=Sv.delimiter||-1==t.indexOf(Sv.delimiter))return void e.log("Messages are large, You may want to consider smaller messages.");this.ipcBuffer="";const n=Sv.parse(t),r=n.length;for(let t=0;t<r;t++){let r=new gv;r.load(n[t]),e.log("detected event",r.type,r.data),e.publish(r.type,r.data)}e.config.sync&&e.queue.next()}))}let Ev=new pv;class Cv extends wv{constructor(e,t,n,r){super(),this.config=t,this.path=e,this.port=r,this.log=n,this.publish=super.emit,Ev=new pv(this.config),this.on("close",Nv.bind(this))}udp4=!1;udp6=!1;server=!1;sockets=[];emit=$v;broadcast=Ov;onStart(e){this.publish("start",e)}stop(){this.server.close()}start(){this.path?this.config.unlink?O.unlink(this.path,Pv.bind(this)):Pv.bind(this)():this.log("Socket Server Path not specified, refusing to start")}}function $v(e,t,n){this.log("dispatching event to socket"," : ",t,n);let r=new gv;if(r.type=t,r.data=n,this.config.rawBuffer?(this.log(this.config.encoding),r=Buffer.from(t,this.config.encoding)):r=Ev.format(r),this.udp4||this.udp6)return e.address&&e.port?void this.server.write(r,e):(this.log("Attempting to emit to a single UDP socket without supplying socket address or port. Redispatching event as broadcast to all connected sockets"),void this.broadcast(t,n));e.write(r)}function Ov(e,t){this.log("broadcasting event to all known sockets listening to ",this.path," : ",this.port?this.port:"",e,t);let n=new gv;if(n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):Ev.format(n),this.udp4||this.udp6)for(let e=1,t=this.sockets.length;e<t;e++)this.server.write(n,this.sockets[e]);else for(let e=0,t=this.sockets.length;e<t;e++)this.sockets[e].write(n)}function Nv(){for(let e=0,t=this.sockets.length;e<t;e++){let t=this.sockets[e],n=!1;if(!t||!t.readable)return t.id&&(n=t.id),this.log("socket disconnected",n.toString()),t&&t.destroy&&t.destroy(),this.sockets.splice(e,1),void this.publish("socket.disconnected",t,n)}}function Tv(e,t,n){let r=this.udp4||this.udp6?n:e;if(this.config.rawBuffer)return t=Buffer.from(t,this.config.encoding),void this.publish("data",t,r);if(r.ipcBuffer||(r.ipcBuffer=""),(t=r.ipcBuffer+=t).slice(-1)==Ev.delimiter&&-1!=t.indexOf(Ev.delimiter))for(r.ipcBuffer="",t=Ev.parse(t);t.length>0;){let e=new gv;e.load(t.shift()),e.data&&e.data.id&&(r.id=e.data.id),this.log("received event of : ",e.type,e.data),this.publish(e.type,e.data,r)}else this.log("Messages are large, You may want to consider smaller messages.")}function Av(e){this.publish("close",e)}function Mv(e){this.sockets.push(e),e.setEncoding&&e.setEncoding(this.config.encoding),this.log("## socket connection to server detected ##"),e.on("close",Av.bind(this)),e.on("error",function(e){this.log("server socket error",e),this.publish("error",e)}.bind(this)),e.on("data",Tv.bind(this,e)),e.on("message",function(t,n){if(!n)return;let r;this.log("Received UDP message from ",n.address,n.port),r=this.config.rawSocket?Buffer.from(t,this.config.encoding):t.toString(),e.emit("data",r,n)}.bind(this)),this.publish("connect",e),this.config.rawBuffer}function Pv(){return this.log("starting server on ",this.path,this.port?`:${this.port}`:""),this.udp4||this.udp6?(this.server=G.createSocket(this.udp4?"udp4":"udp6"),this.server.write=jv.bind(this),this.server.on("listening",function(){Mv.bind(this)(this.server)}.bind(this))):(this.log("starting TLS server",this.config.tls),this.config.tls?Dv.bind(this)():this.server=W.createServer(Mv.bind(this))),this.server.on("error",function(e){this.log("server error",e),this.publish("error",e)}.bind(this)),this.server.maxConnections=this.config.maxConnections,this.port?this.udp4||this.udp6?(this.log("starting server as",this.udp4?"udp4":"udp6"),this.server.bind(this.port,this.path),void this.onStart({address:this.path,port:this.port})):(this.log("starting server as",this.config.tls?"TLS":"TCP"),void this.server.listen(this.port,this.path,this.onStart.bind(this))):(this.log("starting server as","Unix || Windows Socket"),"win32"===process.platform&&(this.path=this.path.replace(/^\//,""),this.path=this.path.replace(/\//g,"-"),this.path=`\\\\.\\pipe\\${this.path}`),void this.server.listen({path:this.path,readableAll:this.config.readableAll,writableAll:this.config.writableAll},this.onStart.bind(this)))}function Dv(){if(this.log("starting TLS server",this.config.tls),this.config.tls.private?this.config.tls.key=O.readFileSync(this.config.tls.private):this.config.tls.key=O.readFileSync(`${__dirname}/../local-node-ipc-certs/private/server.key`),this.config.tls.public?this.config.tls.cert=O.readFileSync(this.config.tls.public):this.config.tls.cert=O.readFileSync(`${__dirname}/../local-node-ipc-certs/server.pub`),this.config.tls.dhparam&&(this.config.tls.dhparam=O.readFileSync(this.config.tls.dhparam)),this.config.tls.trustedConnections){"string"==typeof this.config.tls.trustedConnections&&(this.config.tls.trustedConnections=[this.config.tls.trustedConnections]),this.config.tls.ca=[];for(let e=0;e<this.config.tls.trustedConnections.length;e++)this.config.tls.ca.push(O.readFileSync(this.config.tls.trustedConnections[e]))}this.server=B.createServer(this.config.tls,Mv.bind(this))}function jv(e,t){let n=Buffer.from(e,this.config.encoding);this.server.send(n,0,n.length,t.port,t.address,(function(e){e&&(this.log("error writing data to socket",e),this.publish("error",(function(e){this.publish("error",e)})))}))}class Rv{constructor(){}config=new fv;of={};server=!1;get connectTo(){return Gv}get connectToNet(){return Vv}get disconnect(){return Fv}get serve(){return Uv}get serveNet(){return Bv}get log(){return Lv}set connectTo(e){return Gv}set connectToNet(e){return Vv}set disconnect(e){return Fv}set serve(e){return Uv}set serveNet(e){return Bv}set log(e){return Lv}}function Lv(...e){if(!this.config.silent){for(let t=0,n=e.length;t<n;t++)"object"==typeof e[t]&&(e[t]=i.inspect(e[t],{depth:this.config.logDepth,colors:this.config.logInColor}));this.config.logger(e.join(" "))}}function Fv(e){this.of[e]&&(this.of[e].explicitlyDisconnected=!0,this.of[e].off("*","*"),this.of[e].socket&&this.of[e].socket.destroy&&this.of[e].socket.destroy(),delete this.of[e])}function Uv(e,t){"function"==typeof e&&(t=e,e=!1),e||(this.log("Server path not specified, so defaulting to","ipc.config.socketRoot + ipc.config.appspace + ipc.config.id",this.config.socketRoot+this.config.appspace+this.config.id),e=this.config.socketRoot+this.config.appspace+this.config.id),t||(t=Wv),this.server=new Cv(e,this.config,Lv),this.server.on("start",t)}function Wv(){}function Bv(e,t,n,r){"number"==typeof e&&(r=n,n=t,t=e,e=!1),"function"==typeof e&&(r=e,n=!1,e=!1,t=!1),e||(this.log("Server host not specified, so defaulting to","ipc.config.networkHost",this.config.networkHost),e=this.config.networkHost),"udp4"!=e.toLowerCase()&&"udp6"!=e.toLowerCase()||(r=t,n=e.toLowerCase(),t=!1,e=this.config.networkHost),"string"==typeof t&&(r=n,n=t,t=!1),"function"==typeof t&&(r=t,n=!1,t=!1),t||(this.log("Server port not specified, so defaulting to","ipc.config.networkPort",this.config.networkPort),t=this.config.networkPort),"function"==typeof n&&(r=n,n=!1),r||(r=Wv),this.server=new Cv(e,this.config,Lv,t),n&&(this.server[n]=!0,"udp4"===n&&"::1"===e&&(this.server.path="127.0.0.1")),this.server.on("start",r)}function Gv(e,t,n){if("function"==typeof t&&(n=t,t=!1),n||(n=Wv),e){if(t||(this.log("Service path not specified, so defaulting to","ipc.config.socketRoot + ipc.config.appspace + id",(this.config.socketRoot+this.config.appspace+e).data),t=this.config.socketRoot+this.config.appspace+e),this.of[e]){if(!this.of[e].socket.destroyed)return this.log("Already Connected to",e,"- So executing success without connection"),void n();this.of[e].socket.destroy()}this.of[e]=new _v(this.config,this.log),this.of[e].id=e,this.of[e].socket&&(this.of[e].socket.id=e),this.of[e].path=t,this.of[e].connect(),n(this)}else this.log("Service id required","Requested service connection without specifying service id. Aborting connection attempt")}function Vv(e,t,n,r){if(e){if("number"==typeof t&&(r=n,n=t,t=!1),"function"==typeof t&&(r=t,t=!1,n=!1),t||(this.log("Server host not specified, so defaulting to","ipc.config.networkHost",this.config.networkHost),t=this.config.networkHost),"function"==typeof n&&(r=n,n=!1),n||(this.log("Server port not specified, so defaulting to","ipc.config.networkPort",this.config.networkPort),n=this.config.networkPort),"string"==typeof r&&(UDPType=r,r=!1),r||(r=Wv),this.of[e]){if(!this.of[e].socket.destroyed)return this.log("Already Connected to",e,"- So executing success without connection"),void r();this.of[e].socket.destroy()}this.of[e]=new _v(this.config,this.log),this.of[e].id=e,this.of[e].socket&&(this.of[e].socket.id=e),this.of[e].path=t,this.of[e].port=n,this.of[e].connect(),r(this)}else this.log("Service id required","Requested service connection without specifying service id. Aborting connection attempt")}const Yv=new class extends Rv{constructor(){super()}IPC=Rv};const Hv=Object.values({protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8}).reduce(((e,t)=>e+t),0),zv=e=>{try{return JSON.parse(e)}catch(e){return null}},qv="undefined"!=typeof window,Kv={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},Jv={protocolPrefix:4,txtLength:4},Zv=Object.values(Kv).reduce(((e,t)=>e+t),0),Xv=Object.values(Jv).reduce(((e,t)=>e+t),0),Qv=["width","height","colorSpace"],eb=(e,t)=>{const n={},r=[];let i=0,o=Array.isArray(e)?[]:{};const s=(e,o)=>{const a=(e=>{const t="undefined"!=typeof Buffer&&e instanceof Buffer,n=e instanceof ArrayBuffer,r=e instanceof Uint8ClampedArray,i=e instanceof Uint8Array,o=e instanceof Int8Array;return t?"Buffer":n?"ArrayBuffer":r?"Uint8ClampedArray":i?"Uint8Array":o?"Int8Array":null})(e);if(!a){if(Array.isArray(e)){const t=[];for(let n=0;n<e.length;n++)t[n]=s(e[n],`${o}[${n}]`);return t}if("object"==typeof e){const t={},n=(e=>{const t=e instanceof Int16Array,n=e instanceof Uint16Array,r=e instanceof Int32Array,i=e instanceof Uint32Array,o=e instanceof Float32Array,s=e instanceof Float64Array,a=e instanceof BigInt64Array,c=e instanceof BigUint64Array;return t?"Int16Array":n?"Uint16Array":r?"Int32Array":i?"Uint32Array":o?"Float32Array":s?"Float64Array":a?"BigInt64Array":c?"BigUint64Array":null})(e);if(n)throw new Error(`Unsupported binary type [${n}] at path "${o}"`);for(const n in e)Object.hasOwn(e,n)||Qv.includes(n)||console.warn(`Allowing inherited property: ${n} from path: ${o}`),t[n]=s(e[n],`${o.length?`${o}.`:""}${n}`);return t}return e}n[o]={index:i,length:e.byteLength,binaryType:a},"Buffer"===t?r.push(Buffer.from(e)):"ArrayBuffer"===a?r.push(e):r.push(e.buffer),i+=e.byteLength};o=s(e,"");let a=null;if(r.length>1)if("ArrayBuffer"===t){const e=r.reduce(((e,t)=>e+t.byteLength),0),t=new Uint8Array(e);let n=0;for(let e=0;e<r.length;e++)t.set(new Uint8Array(r[e]),n),n+=r[e].byteLength;a=t.buffer}else a=Buffer.concat(r);else 1===r.length&&(a=r[0]);return a?{map:n,combinedData:a,sourceCopy:o}:null},tb=(e,t,n)=>{const r=t.match(/(\[\d+\])|([^[\].]+)/g)||[];let i=e;for(let e=0;e<r.length;e++){let t=r[e];const o=t.startsWith("[")&&t.endsWith("]"),s=e===r.length-1;if(o){t=t.slice(1,-1);const o=parseInt(t,10);if(!Array.isArray(i))throw new Error(`Expected an array at key "${r.slice(0,e).join(".")}" but found an object.`);s?i[o]=n:(i[o]||(i[o]=r[e+1].startsWith("[")?[]:{}),i=i[o])}else s?i[t]=n:(i[t]||(i[t]=r[e+1].startsWith("[")?[]:{}),i=i[t])}return e},nb=(e,t,n)=>{const r="undefined"!=typeof Buffer,i=t instanceof Uint8Array;for(const o in n)if(Object.hasOwn(n,o)){const{index:s,length:a,binaryType:c}=n[o];let l=null;if(r&&t instanceof Buffer)switch(c){case"Buffer":l=t.subarray(s,s+a);break;case"ArrayBuffer":l=t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a);break;case"Uint8Array":l=new Uint8Array(t.subarray(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.subarray(s,s+a));break;case"Int8Array":l=new Int8Array(t.subarray(s,s+a))}else if(t instanceof ArrayBuffer||t instanceof Uint8Array)switch(c){case"Buffer":if(r){l=Buffer.from(t.slice(s,s+a));break}case"ArrayBuffer":l=i?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength).slice(s,s+a):t.slice(s,s+a);break;case"Uint8Array":l=i?t.slice(s,s+a):new Uint8Array(t.slice(s,s+a));break;case"Uint8ClampedArray":l=new Uint8ClampedArray(t.slice(s,s+a));break;case"Int8Array":l=new Int8Array(t.slice(s,s+a))}l&&tb(e,o,l)}return e},rb=e=>dd(e),ib="KMSG",ob="KCMD",sb=rb("klProtocol");var ab={encode:(e,t,n)=>{const r={json:e.json},i=eb(r.json,"Buffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=Buffer.from(a),l=c.byteLength,u=Kv.protocolPrefix+Kv.protocolVersion+Kv.jsonLength+Kv.binaryLength+Kv.fromServiceId+Kv.toServiceId+Kv.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write(ib,f),f+=Kv.protocolPrefix,d.writeUInt8(1,f),f+=Kv.protocolVersion,d.writeUInt32LE(l,f),f+=Kv.jsonLength,d.writeUInt32LE(s,f),f+=Kv.binaryLength,d.writeUInt32LE(t,f),f+=Kv.fromServiceId,d.writeUInt32LE(n,f),f+=Kv.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=Kv.sentAt,c.copy(d,f),f+=l,o&&s&&o.copy(d,f),d},decodeHeader:e=>{let t=0;const n=e.toString("utf-8",t,Kv.protocolPrefix);if(t+=Kv.protocolPrefix,n!==ib)return null;if(e.byteLength<Zv)return sb(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=Kv.protocolVersion;const i=e.readUInt32LE(t);t+=Kv.jsonLength;const o=e.readUInt32LE(t);t+=Kv.binaryLength;const s=e.readUInt32LE(t);t+=Kv.fromServiceId;const a=e.readUInt32LE(t);t+=Kv.toServiceId;const c=e.readBigInt64LE(t);t+=Kv.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,Zv);let h=null;return e.byteLength-Zv-i-o>0&&(h=e.subarray(Zv+i+o)),{header:{protocolVersion:r,jsonLength:i,binaryLength:o,fromServiceId:s,toServiceId:a,sentAt:new Date(Number(c)),packages:[u],headerPackage:d},remaining:h}},decodeFullKlMessage:e=>{const t=Buffer.concat(e.packages),n=t.subarray(0,e.jsonLength).toString(),r=t.subarray(e.jsonLength,e.jsonLength+e.binaryLength),i=zv(n);if(!i?.json)return sb("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&nb(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=Zv+e.jsonLength+e.binaryLength;return o.byteLength>c&&(a=o.subarray(c),s=o.subarray(0,c)),{message:{json:i.json,rawMessage:s},remaining:a}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<Zv)return sb("Invalid Header Size"),e;let n=0;return n+=Kv.protocolPrefix,n+=Kv.protocolVersion,n+=Kv.jsonLength,n+=Kv.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=Kv.fromServiceId,void 0!==t.toServiceId&&e.writeUInt32LE(t.toServiceId,n),e},encodeCommand:e=>{let t=0;const n=Buffer.from(e),r=n.byteLength,i=Xv+r,o=Buffer.alloc(i);return o.write(ob,t),t+=Jv.protocolPrefix,o.writeUint32LE(r,t),t+=Jv.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<Xv)return{command:null};const n=e.toString("utf-8",t,Jv.protocolPrefix);if(t+=Jv.protocolPrefix,n!==ob)return{command:null};const r=e.readUInt32LE(t);t+=Jv.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-Xv-r;let s=null;o>0&&(s=e.subarray(Xv+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const cb="KMSG",lb="KCMD",ub=rb("klProtocol"),db=new TextEncoder;var hb={encode:(e,t,n)=>{const r={json:e.json},i=eb(e.json,"ArrayBuffer"),o=i?.combinedData;i&&(r.jsonBinaryMap=i.map,r.json=i.sourceCopy);const s=o?o.byteLength:0,a=JSON.stringify(r),c=db.encode(a),l=c.byteLength,u=new ArrayBuffer(Kv.protocolPrefix+Kv.protocolVersion+Kv.jsonLength+Kv.binaryLength+Kv.fromServiceId+Kv.toServiceId+Kv.sentAt+l+s),d=new DataView(u),h=new Uint8Array(u),f=Date.now();let p=0;for(let e=0;e<4;++e)h[p++]=cb.charCodeAt(e);return d.setUint8(p,1),p+=Kv.protocolVersion,d.setUint32(p,l,!0),p+=Kv.jsonLength,d.setUint32(p,s,!0),p+=Kv.binaryLength,d.setUint32(p,t,!0),p+=Kv.fromServiceId,d.setUint32(p,n,!0),p+=Kv.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=Kv.sentAt,h.set(c,p),p+=l,o&&s&&h.set(new Uint8Array(o),p),u},decodeHeader:e=>{const t=new DataView(e);let n=0,r="";for(let e=0;e<Kv.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==cb)return null;if(e.byteLength<Zv)return ub.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=Kv.protocolVersion;const o=t.getUint32(n,!0);n+=Kv.jsonLength;const s=t.getUint32(n,!0);n+=Kv.binaryLength;const a=t.getUint32(n,!0);n+=Kv.fromServiceId;const c=t.getUint32(n,!0);n+=Kv.toServiceId;const l=t.getBigInt64(n,!0);n+=Kv.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,Zv);let f=null;return e.byteLength-Zv-o-s>0&&(f=new Uint8Array(e,Zv+o+s).slice().buffer),{header:{protocolVersion:i,jsonLength:o,binaryLength:s,fromServiceId:a,toServiceId:c,sentAt:new Date(Number(l)),packages:[d],headerPackage:h.slice().buffer},remaining:f}},decodeFullKlMessage:e=>{const t=e.packages.reduce(((e,t)=>e+t.byteLength),0),n=new Uint8Array(t);let r,i=0;for(const t of e.packages)r=new Uint8Array(t),n.set(r,i),i+=r.byteLength;const o=(new TextDecoder).decode(n.subarray(0,e.jsonLength)),s=n.subarray(e.jsonLength,e.jsonLength+e.binaryLength),a=zv(o);if(!a?.json)return ub.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&nb(a.json,s,a.jsonBinaryMap);const c=new Uint8Array(e.headerPackage.byteLength+n.byteLength);c.set(new Uint8Array(e.headerPackage),0),c.set(n,e.headerPackage.byteLength);let l=c,u=null;const d=Zv+e.jsonLength+e.binaryLength;return c.byteLength>d&&(u=c.subarray(d),l=c.subarray(0,d)),{message:{json:a.json,...s.length?{binaryData:s.buffer}:{},rawMessage:l.buffer},remaining:u?.buffer??null}},patchEncodedHeader:(e,t)=>{if(null==t.fromServiceId&&void 0===t.toServiceId)return e;if(e.byteLength<Zv)return ub("Invalid Header Size"),e;let n=0;n+=Kv.protocolPrefix,n+=Kv.protocolVersion,n+=Kv.jsonLength,n+=Kv.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=Kv.fromServiceId,void 0!==t.toServiceId&&r.setUint32(n,t.toServiceId,!0),e},encodeCommand:e=>{let t=0;const n=db.encode(e),r=n.byteLength,i=new ArrayBuffer(Xv+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=lb.charCodeAt(e);return o.setUint32(t,r,!0),t+=Jv.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<Xv)return{command:null};let r="";for(let e=0;e<Jv.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==lb)return{command:null};const i=t.getUint32(n,!0);n+=Jv.txtLength;const o=e.byteLength-Xv-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-Xv)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(Xv+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};const fb=rb("klTransmissionManager"),pb=()=>{const e=(t,n,r,i)=>{let o=n,s=null;const a=t instanceof ArrayBuffer;if(fb(`RAW: ${t.toString()}`),!o||o.partialHeaderData){let c;if(a?(c=o?.partialHeaderData?new Uint8Array([...new Uint8Array(o.partialHeaderData),...new Uint8Array(t)]).buffer:t,s=hb.decodeHeader(c)):(c=o?.partialHeaderData?Buffer.concat([o.partialHeaderData,t]):t,s=ab.decodeHeader(c)),!s){const{command:t,missing:o,remainingData:s}=a?hb.decodeCommand(c):ab.decodeCommand(c);return t?i({command:t,complete:!0,rawMessage:c}):fb(o?`ERROR: Missing ${o} bytes to complete the command. This partial command will be aborted.`:`ERROR: Invalid state, message was decoded without a header or partial header data. Discarding ${c.byteLength} bytes`),s?(fb(`${s.byteLength} bytes remain after processing command. Re-analyzing...`),e(s,n,r,i)):void 0}if(s.partialHeader)return o={firstPackageAt:Date.now(),partialHeaderData:c},r(o);if(!s.header)return fb(`ERROR: Invalid state, message was decoded without a header or partial header data. Discarding ${c.byteLength} bytes`);const l=s.header;o={firstPackageAt:Date.now(),header:{...l,totalBytesReceived:l.packages[0].byteLength,totalBytesExpected:l.binaryLength+l.jsonLength,remaining:s.remaining}},r(o)}else o.header&&o.header.totalBytesReceived<o.header.totalBytesExpected&&(o.header.packages.push(t),o.header.totalBytesReceived+=t.byteLength,r(o));if(o.header&&o.header.totalBytesReceived>=o.header.totalBytesExpected){const t=Date.now()-o.header.sentAt.getTime(),n=Date.now()-o.firstPackageAt;fb(`Received ${o.header.totalBytesReceived} of ${o.header.totalBytesExpected} expected in ${t} ms, elapsed since first package: ${n}ms`);const s=a?hb.decodeFullKlMessage(o.header):ab.decodeFullKlMessage(o.header),c=o.header.totalBytesReceived,l=o.header.remaining;r(null),s&&i({klMessage:s.message,complete:!0,sourceServiceId:o.header.fromServiceId,targetServiceId:o.header.toServiceId,rawMessage:s.message.rawMessage});let u=l;if(s?.remaining&&(u=a?l?((e,t)=>{const n=e.byteLength+t.byteLength,r=new ArrayBuffer(n),i=new Uint8Array(e),o=new Uint8Array(t),s=new Uint8Array(r);return s.set(i),s.set(o,i.length),r})(l,s.remaining):s.remaining:l?Buffer.concat([l,s.remaining]):s.remaining),u)return fb(`${u.byteLength} bytes remaining after processing message with ${c} bytes of data. Re-analyzing...`),e(u,null,r,i)}};return e};Yv.config={...Yv.config,id:"widgets",retry:1500,silent:!0,rawBuffer:!0,appspace:"kemu.",encoding:"hex"};const gb={info:hd("ipcServer:info"),data:hd("ipcServer:data")};let mb,yb,vb,bb,wb={};const Sb=pb(),_b=e=>{wb[e]&&(gb.info(`Client disconnected [${e}]`),delete wb[e],yb&&yb(e))};var Ib=(e,t)=>{const n=wb[e];if(!n)return gb.info(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=Hv)return gb.info("Message is too long to be a command. Use sendMessage instead."),!1;const r=ab.encodeCommand(t);return n.socket.write(r),!0},xb=(e,t)=>{const n=wb[e];return!!n&&(gb.info(`Renaming socket id [${e}] to [${t}]`),delete wb[e],n.socket.id=t,wb[t]=n,n.socket.removeListener("close",n.disconnectHandler),n.disconnectHandler=()=>_b(t),n.socket.on("close",n.disconnectHandler),!0)};let kb=ab;qv&&(kb=hb);var Eb,Cb=kb;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}(Eb||(Eb={}));let $b=Math.ceil(Date.now()/1e3);var Ob={exports:{}};const Nb=["nodebuffer","arraybuffer","fragments"],Tb="undefined"!=typeof Blob;Tb&&Nb.push("blob");var Ab={BINARY_TYPES:Nb,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Tb,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const{EMPTY_BUFFER:Mb}=Ab,Pb=Buffer[Symbol.species];function Db(e,t,n,r,i){for(let o=0;o<i;o++)n[r+o]=e[o]^t[3&o]}function jb(e,t){for(let n=0;n<e.length;n++)e[n]^=t[3&n]}if(Ob.exports={concat:function(e,t){if(0===e.length)return Mb;if(1===e.length)return e[0];const n=Buffer.allocUnsafe(t);let r=0;for(let t=0;t<e.length;t++){const i=e[t];n.set(i,r),r+=i.length}return r<t?new Pb(n.buffer,n.byteOffset,r):n},mask:Db,toArrayBuffer:function(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)},toBuffer:function e(t){if(e.readOnly=!0,Buffer.isBuffer(t))return t;let n;return t instanceof ArrayBuffer?n=new Pb(t):ArrayBuffer.isView(t)?n=new Pb(t.buffer,t.byteOffset,t.byteLength):(n=Buffer.from(t),e.readOnly=!1),n},unmask:jb},!process.env.WS_NO_BUFFER_UTIL)try{const e=require("bufferutil");Ob.exports.mask=function(t,n,r,i,o){o<48?Db(t,n,r,i,o):e.mask(t,n,r,i,o)},Ob.exports.unmask=function(t,n){t.length<32?jb(t,n):e.unmask(t,n)}}catch(x){}var Rb=Ob.exports;const Lb=Symbol("kDone"),Fb=Symbol("kRun"),Ub=R,Wb=Rb,Bb=class{constructor(e){this[Lb]=()=>{this.pending--,this[Fb]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Fb]()}[Fb](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[Lb])}}},{kStatusCode:Gb}=Ab,Vb=Buffer[Symbol.species],Yb=Buffer.from([0,0,255,255]),Hb=Symbol("permessage-deflate"),zb=Symbol("total-length"),qb=Symbol("callback"),Kb=Symbol("buffers"),Jb=Symbol("error");let Zb;var Xb=class{constructor(e,t,n){if(this._maxPayload=0|n,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!Zb){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;Zb=new Bb(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[qb];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,n=e.find((e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits)));if(!n)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(n.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?n.client_max_window_bits=t.clientMaxWindowBits:!0!==n.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete n.client_max_window_bits,n}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach((e=>{Object.keys(e).forEach((t=>{let n=e[t];if(n.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(n=n[0],"client_max_window_bits"===t){if(!0!==n){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}else if("server_max_window_bits"===t){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==n)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}e[t]=n}))})),e}decompress(e,t,n){Zb.add((r=>{this._decompress(e,t,((e,t)=>{r(),n(e,t)}))}))}compress(e,t,n){Zb.add((r=>{this._compress(e,t,((e,t)=>{r(),n(e,t)}))}))}_decompress(e,t,n){const r=this._isServer?"client":"server";if(!this._inflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?Ub.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=Ub.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[Hb]=this,this._inflate[zb]=0,this._inflate[Kb]=[],this._inflate.on("error",tw),this._inflate.on("data",ew)}this._inflate[qb]=n,this._inflate.write(e),t&&this._inflate.write(Yb),this._inflate.flush((()=>{const e=this._inflate[Jb];if(e)return this._inflate.close(),this._inflate=null,void n(e);const i=Wb.concat(this._inflate[Kb],this._inflate[zb]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[zb]=0,this._inflate[Kb]=[],t&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),n(null,i)}))}_compress(e,t,n){const r=this._isServer?"server":"client";if(!this._deflate){const e=`${r}_max_window_bits`,t="number"!=typeof this.params[e]?Ub.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=Ub.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[zb]=0,this._deflate[Kb]=[],this._deflate.on("data",Qb)}this._deflate[qb]=n,this._deflate.write(e),this._deflate.flush(Ub.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=Wb.concat(this._deflate[Kb],this._deflate[zb]);t&&(e=new Vb(e.buffer,e.byteOffset,e.length-4)),this._deflate[qb]=null,this._deflate[zb]=0,this._deflate[Kb]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),n(null,e)}))}};function Qb(e){this[Kb].push(e),this[zb]+=e.length}function ew(e){this[zb]+=e.length,this[Hb]._maxPayload<1||this[zb]<=this[Hb]._maxPayload?this[Kb].push(e):(this[Jb]=new RangeError("Max payload size exceeded"),this[Jb].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Jb][Gb]=1009,this.removeListener("data",ew),this.reset())}function tw(e){this[Hb]._inflate=null,e[Gb]=1007,this[qb](e)}var nw={exports:{}};const{isUtf8:rw}=D,{hasBlob:iw}=Ab;function ow(e){const t=e.length;let n=0;for(;n<t;)if(128&e[n])if(192==(224&e[n])){if(n+1===t||128!=(192&e[n+1])||192==(254&e[n]))return!1;n+=2}else if(224==(240&e[n])){if(n+2>=t||128!=(192&e[n+1])||128!=(192&e[n+2])||224===e[n]&&128==(224&e[n+1])||237===e[n]&&160==(224&e[n+1]))return!1;n+=3}else{if(240!=(248&e[n]))return!1;if(n+3>=t||128!=(192&e[n+1])||128!=(192&e[n+2])||128!=(192&e[n+3])||240===e[n]&&128==(240&e[n+1])||244===e[n]&&e[n+1]>143||e[n]>244)return!1;n+=4}else n++;return!0}if(nw.exports={isBlob:function(e){return iw&&"object"==typeof e&&"function"==typeof e.arrayBuffer&&"string"==typeof e.type&&"function"==typeof e.stream&&("Blob"===e[Symbol.toStringTag]||"File"===e[Symbol.toStringTag])},isValidStatusCode:function(e){return e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},isValidUTF8:ow,tokenChars:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0]},rw)nw.exports.isValidUTF8=function(e){return e.length<24?ow(e):rw(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const e=require("utf-8-validate");nw.exports.isValidUTF8=function(t){return t.length<32?ow(t):e(t)}}catch(x){}var sw=nw.exports;const{Writable:aw}=P,cw=Xb,{BINARY_TYPES:lw,EMPTY_BUFFER:uw,kStatusCode:dw,kWebSocket:hw}=Ab,{concat:fw,toArrayBuffer:pw,unmask:gw}=Rb,{isValidStatusCode:mw,isValidUTF8:yw}=sw,vw=Buffer[Symbol.species];const{randomFillSync:bw}=u,ww=Xb,{EMPTY_BUFFER:Sw,kWebSocket:_w,NOOP:Iw}=Ab,{isBlob:xw,isValidStatusCode:kw}=sw,{mask:Ew,toBuffer:Cw}=Rb,$w=Symbol("kByteLength"),Ow=Buffer.alloc(4),Nw=8192;let Tw,Aw=Nw;function Mw(e,t,n){"function"==typeof n&&n(t);for(let n=0;n<e._queue.length;n++){const r=e._queue[n],i=r[r.length-1];"function"==typeof i&&i(t)}}function Pw(e,t,n){Mw(e,t,n),e.onerror(t)}const{kForOnEventAttribute:Dw,kListener:jw}=Ab,Rw=Symbol("kCode"),Lw=Symbol("kData"),Fw=Symbol("kError"),Uw=Symbol("kMessage"),Ww=Symbol("kReason"),Bw=Symbol("kTarget"),Gw=Symbol("kType"),Vw=Symbol("kWasClean");class Yw{constructor(e){this[Bw]=null,this[Gw]=e}get target(){return this[Bw]}get type(){return this[Gw]}}Object.defineProperty(Yw.prototype,"target",{enumerable:!0}),Object.defineProperty(Yw.prototype,"type",{enumerable:!0});class Hw extends Yw{constructor(e,t={}){super(e),this[Rw]=void 0===t.code?0:t.code,this[Ww]=void 0===t.reason?"":t.reason,this[Vw]=void 0!==t.wasClean&&t.wasClean}get code(){return this[Rw]}get reason(){return this[Ww]}get wasClean(){return this[Vw]}}Object.defineProperty(Hw.prototype,"code",{enumerable:!0}),Object.defineProperty(Hw.prototype,"reason",{enumerable:!0}),Object.defineProperty(Hw.prototype,"wasClean",{enumerable:!0});class zw extends Yw{constructor(e,t={}){super(e),this[Fw]=void 0===t.error?null:t.error,this[Uw]=void 0===t.message?"":t.message}get error(){return this[Fw]}get message(){return this[Uw]}}Object.defineProperty(zw.prototype,"error",{enumerable:!0}),Object.defineProperty(zw.prototype,"message",{enumerable:!0});class qw extends Yw{constructor(e,t={}){super(e),this[Lw]=void 0===t.data?null:t.data}get data(){return this[Lw]}}Object.defineProperty(qw.prototype,"data",{enumerable:!0});const Kw={addEventListener(e,t,n={}){for(const r of this.listeners(e))if(!n[Dw]&&r[jw]===t&&!r[Dw])return;let r;if("message"===e)r=function(e,n){const r=new qw("message",{data:n?e:e.toString()});r[Bw]=this,Zw(t,this,r)};else if("close"===e)r=function(e,n){const r=new Hw("close",{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[Bw]=this,Zw(t,this,r)};else if("error"===e)r=function(e){const n=new zw("error",{error:e,message:e.message});n[Bw]=this,Zw(t,this,n)};else{if("open"!==e)return;r=function(){const e=new Yw("open");e[Bw]=this,Zw(t,this,e)}}r[Dw]=!!n[Dw],r[jw]=t,n.once?this.once(e,r):this.on(e,r)},removeEventListener(e,t){for(const n of this.listeners(e))if(n[jw]===t&&!n[Dw]){this.removeListener(e,n);break}}};var Jw={CloseEvent:Hw,ErrorEvent:zw,Event:Yw,EventTarget:Kw,MessageEvent:qw};function Zw(e,t,n){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}const{tokenChars:Xw}=sw;function Qw(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}var eS={format:function(e){return Object.keys(e).map((t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map((e=>[t].concat(Object.keys(e).map((t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map((e=>!0===e?t:`${t}=${e}`)).join("; ")}))).join("; "))).join(", ")})).join(", ")},parse:function(e){const t=Object.create(null);let n,r,i=Object.create(null),o=!1,s=!1,a=!1,c=-1,l=-1,u=-1,d=0;for(;d<e.length;d++)if(l=e.charCodeAt(d),void 0===n)if(-1===u&&1===Xw[l])-1===c&&(c=d);else if(0===d||32!==l&&9!==l){if(59!==l&&44!==l)throw new SyntaxError(`Unexpected character at index ${d}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${d}`);-1===u&&(u=d);const r=e.slice(c,u);44===l?(Qw(t,r,i),i=Object.create(null)):n=r,c=u=-1}}else-1===u&&-1!==c&&(u=d);else if(void 0===r)if(-1===u&&1===Xw[l])-1===c&&(c=d);else if(32===l||9===l)-1===u&&-1!==c&&(u=d);else if(59===l||44===l){if(-1===c)throw new SyntaxError(`Unexpected character at index ${d}`);-1===u&&(u=d),Qw(i,e.slice(c,u),!0),44===l&&(Qw(t,n,i),i=Object.create(null),n=void 0),c=u=-1}else{if(61!==l||-1===c||-1!==u)throw new SyntaxError(`Unexpected character at index ${d}`);r=e.slice(c,d),c=u=-1}else if(s){if(1!==Xw[l])throw new SyntaxError(`Unexpected character at index ${d}`);-1===c?c=d:o||(o=!0),s=!1}else if(a)if(1===Xw[l])-1===c&&(c=d);else if(34===l&&-1!==c)a=!1,u=d;else{if(92!==l)throw new SyntaxError(`Unexpected character at index ${d}`);s=!0}else if(34===l&&61===e.charCodeAt(d-1))a=!0;else if(-1===u&&1===Xw[l])-1===c&&(c=d);else if(-1===c||32!==l&&9!==l){if(59!==l&&44!==l)throw new SyntaxError(`Unexpected character at index ${d}`);{if(-1===c)throw new SyntaxError(`Unexpected character at index ${d}`);-1===u&&(u=d);let s=e.slice(c,u);o&&(s=s.replace(/\\/g,""),o=!1),Qw(i,r,s),44===l&&(Qw(t,n,i),i=Object.create(null),n=void 0),r=void 0,c=u=-1}}else-1===u&&(u=d);if(-1===c||a||32===l||9===l)throw new SyntaxError("Unexpected end of input");-1===u&&(u=d);const h=e.slice(c,u);return void 0===n?Qw(t,h,i):(void 0===r?Qw(i,h,!0):Qw(i,r,o?h.replace(/\\/g,""):h),Qw(t,n,i)),t}};const tS=j,nS=U,rS=F,iS=W,oS=B,{randomBytes:sS,createHash:aS}=u,{URL:cS}=V,lS=Xb,uS=class extends aw{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||lw[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[hw]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=0}_write(e,t,n){if(8===this._opcode&&0==this._state)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){const t=this._buffers[0];return this._buffers[0]=new vw(t.buffer,t.byteOffset+e,t.length-e),new vw(t.buffer,t.byteOffset,e)}const t=Buffer.allocUnsafe(e);do{const n=this._buffers[0],r=t.length-e;e>=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=new vw(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do{switch(this._state){case 0:this.getInfo(e);break;case 1:this.getPayloadLength16(e);break;case 2:this.getPayloadLength64(e);break;case 3:this.getMask();break;case 4:this.getData(e);break;case 5:case 6:return void(this._loop=!1)}}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2)return void(this._loop=!1);const t=this.consume(2);if(48&t[0])return void e(this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3"));const n=!(64&~t[0]);if(!n||this._extensions[cw.extensionName]){if(this._fin=!(128&~t[0]),this._opcode=15&t[0],this._payloadLength=127&t[1],0===this._opcode){if(n)return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(!this._fragmented)return void e(this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE"));this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));this._compressed=n}else{if(!(this._opcode>7&&this._opcode<11))return void e(this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE"));if(!this._fin)return void e(this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN"));if(n)return void e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"));if(this._payloadLength>125||8===this._opcode&&1===this._payloadLength)return void e(this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH"))}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=!(128&~t[1]),this._isServer){if(!this._masked)return void e(this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK"))}else if(this._masked)return void e(this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK"));126===this._payloadLength?this._state=1:127===this._payloadLength?this._state=2:this.haveLength(e)}else e(this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1"))}getPayloadLength16(e){this._bufferedBytes<2?this._loop=!1:(this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e))}getPayloadLength64(e){if(this._bufferedBytes<8)return void(this._loop=!1);const t=this.consume(8),n=t.readUInt32BE(0);n>Math.pow(2,21)-1?e(this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH")):(this._payloadLength=n*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(e))}haveLength(e){this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)?e(this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH")):this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=uw;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength)return void(this._loop=!1);t=this.consume(this._payloadLength),this._masked&&this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3]&&gw(t,this._mask)}if(this._opcode>7)this.controlMessage(t,e);else{if(this._compressed)return this._state=5,void this.decompress(t,e);t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}}decompress(e,t){this._extensions[cw.extensionName].decompress(e,this._fin,((e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0){const e=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");return void t(e)}this._fragments.push(n)}this.dataMessage(t),0===this._state&&this.startLoop(t)}))}dataMessage(e){if(!this._fin)return void(this._state=0);const t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let r;r="nodebuffer"===this._binaryType?fw(n,t):"arraybuffer"===this._binaryType?pw(fw(n,t)):"blob"===this._binaryType?new Blob(n):n,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!0),this._state=0,this.startLoop(e)})))}else{const r=fw(n,t);if(!this._skipUTF8Validation&&!yw(r)){const t=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void e(t)}5===this._state||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=0):(this._state=6,setImmediate((()=>{this.emit("message",r,!1),this._state=0,this.startLoop(e)})))}}controlMessage(e,t){if(8!==this._opcode)this._allowSynchronousEvents?(this.emit(9===this._opcode?"ping":"pong",e),this._state=0):(this._state=6,setImmediate((()=>{this.emit(9===this._opcode?"ping":"pong",e),this._state=0,this.startLoop(t)})));else{if(0===e.length)this._loop=!1,this.emit("conclude",1005,uw),this.end();else{const n=e.readUInt16BE(0);if(!mw(n)){const e=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");return void t(e)}const r=new vw(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!yw(r)){const e=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");return void t(e)}this._loop=!1,this.emit("conclude",n,r),this.end()}this._state=0}}createError(e,t,n,r,i){this._loop=!1,this._errored=!0;const o=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,this.createError),o.code=i,o[dw]=r,o}},dS=class e{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=0,this.onerror=Iw,this[_w]=void 0}static frame(e,t){let n,r,i=!1,o=2,s=!1;t.mask&&(n=t.maskBuffer||Ow,t.generateMask?t.generateMask(n):(Aw===Nw&&(void 0===Tw&&(Tw=Buffer.alloc(Nw)),bw(Tw,0,Nw),Aw=0),n[0]=Tw[Aw++],n[1]=Tw[Aw++],n[2]=Tw[Aw++],n[3]=Tw[Aw++]),s=!(n[0]|n[1]|n[2]|n[3]),o=6),"string"==typeof e?r=t.mask&&!s||void 0===t[$w]?(e=Buffer.from(e)).length:t[$w]:(r=e.length,i=t.mask&&t.readOnly&&!s);let a=r;r>=65536?(o+=8,a=127):r>125&&(o+=2,a=126);const c=Buffer.allocUnsafe(i?r+o:o);return c[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,126===a?c.writeUInt16BE(r,2):127===a&&(c[2]=c[3]=0,c.writeUIntBE(r,4,6)),t.mask?(c[1]|=128,c[o-4]=n[0],c[o-3]=n[1],c[o-2]=n[2],c[o-1]=n[3],s?[c,e]:i?(Ew(e,n,c,o,r),[c]):(Ew(e,n,e,0,r),[c,e])):[c,e]}close(t,n,r,i){let o;if(void 0===t)o=Sw;else{if("number"!=typeof t||!kw(t))throw new TypeError("First argument must be a valid error code number");if(void 0!==n&&n.length){const e=Buffer.byteLength(n);if(e>123)throw new RangeError("The message must not be greater than 123 bytes");o=Buffer.allocUnsafe(2+e),o.writeUInt16BE(t,0),"string"==typeof n?o.write(n,2):o.set(n,2)}else o=Buffer.allocUnsafe(2),o.writeUInt16BE(t,0)}const s={[$w]:o.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};0!==this._state?this.enqueue([this.dispatch,o,!1,s,i]):this.sendFrame(e.frame(o,s),i)}ping(t,n,r){let i,o;if("string"==typeof t?(i=Buffer.byteLength(t),o=!1):xw(t)?(i=t.size,o=!1):(i=(t=Cw(t)).length,o=Cw.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[$w]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};xw(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,s,r]):this.getBlobData(t,!1,s,r):0!==this._state?this.enqueue([this.dispatch,t,!1,s,r]):this.sendFrame(e.frame(t,s),r)}pong(t,n,r){let i,o;if("string"==typeof t?(i=Buffer.byteLength(t),o=!1):xw(t)?(i=t.size,o=!1):(i=(t=Cw(t)).length,o=Cw.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[$w]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};xw(t)?0!==this._state?this.enqueue([this.getBlobData,t,!1,s,r]):this.getBlobData(t,!1,s,r):0!==this._state?this.enqueue([this.dispatch,t,!1,s,r]):this.sendFrame(e.frame(t,s),r)}send(e,t,n){const r=this._extensions[ww.extensionName];let i,o,s=t.binary?2:1,a=t.compress;"string"==typeof e?(i=Buffer.byteLength(e),o=!1):xw(e)?(i=e.size,o=!1):(i=(e=Cw(e)).length,o=Cw.readOnly),this._firstFragment?(this._firstFragment=!1,a&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(a=i>=r._threshold),this._compress=a):(a=!1,s=0),t.fin&&(this._firstFragment=!0);const c={[$w]:i,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:o,rsv1:a};xw(e)?0!==this._state?this.enqueue([this.getBlobData,e,this._compress,c,n]):this.getBlobData(e,this._compress,c,n):0!==this._state?this.enqueue([this.dispatch,e,this._compress,c,n]):this.dispatch(e,this._compress,c,n)}getBlobData(t,n,r,i){this._bufferedBytes+=r[$w],this._state=2,t.arrayBuffer().then((t=>{if(this._socket.destroyed){const e=new Error("The socket was closed while the blob was being read");return void process.nextTick(Mw,this,e,i)}this._bufferedBytes-=r[$w];const o=Cw(t);n?this.dispatch(o,n,r,i):(this._state=0,this.sendFrame(e.frame(o,r),i),this.dequeue())})).catch((e=>{process.nextTick(Pw,this,e,i)}))}dispatch(t,n,r,i){if(!n)return void this.sendFrame(e.frame(t,r),i);const o=this._extensions[ww.extensionName];this._bufferedBytes+=r[$w],this._state=1,o.compress(t,r.fin,((t,n)=>{this._socket.destroyed?Mw(this,new Error("The socket was closed while data was being compressed"),i):(this._bufferedBytes-=r[$w],this._state=0,r.readOnly=!1,this.sendFrame(e.frame(n,r),i),this.dequeue())}))}dequeue(){for(;0===this._state&&this._queue.length;){const e=this._queue.shift();this._bufferedBytes-=e[3][$w],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][$w],this._queue.push(e)}sendFrame(e,t){2===e.length?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}},{isBlob:hS}=sw,{BINARY_TYPES:fS,EMPTY_BUFFER:pS,GUID:gS,kForOnEventAttribute:mS,kListener:yS,kStatusCode:vS,kWebSocket:bS,NOOP:wS}=Ab,{EventTarget:{addEventListener:SS,removeEventListener:_S}}=Jw,{format:IS,parse:xS}=eS,{toBuffer:kS}=Rb,ES=3e4,CS=Symbol("kAborted"),$S=[8,13],OS=["CONNECTING","OPEN","CLOSING","CLOSED"],NS=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;let TS=class e extends tS{constructor(t,n,r){super(),this._binaryType=fS[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=pS,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,null!==t?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,void 0===n?n=[]:Array.isArray(n)||("object"==typeof n&&null!==n?(r=n,n=[]):n=[n]),MS(this,t,n,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){fS.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(t,n,r){const i=new uS({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),o=new dS(t,this._extensions,r.generateMask);this._receiver=i,this._sender=o,this._socket=t,i[bS]=this,o[bS]=this,t[bS]=this,i.on("conclude",FS),i.on("drain",US),i.on("error",WS),i.on("message",GS),i.on("ping",VS),i.on("pong",YS),o.onerror=zS,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on("close",KS),t.on("data",JS),t.on("end",ZS),t.on("error",XS),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this._readyState=e.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[lS.extensionName]&&this._extensions[lS.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(t,n){if(this.readyState!==e.CLOSED)if(this.readyState!==e.CONNECTING)this.readyState!==e.CLOSING?(this._readyState=e.CLOSING,this._sender.close(t,n,!this._isServer,(e=>{e||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())})),qS(this)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";RS(this,this._req,e)}}pause(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!0,this._socket.pause())}ping(t,n,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof t?(r=t,t=n=void 0):"function"==typeof n&&(r=n,n=void 0),"number"==typeof t&&(t=t.toString()),this.readyState===e.OPEN?(void 0===n&&(n=!this._isServer),this._sender.ping(t||pS,n,r)):LS(this,t,r)}pong(t,n,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof t?(r=t,t=n=void 0):"function"==typeof n&&(r=n,n=void 0),"number"==typeof t&&(t=t.toString()),this.readyState===e.OPEN?(void 0===n&&(n=!this._isServer),this._sender.pong(t||pS,n,r)):LS(this,t,r)}resume(){this.readyState!==e.CONNECTING&&this.readyState!==e.CLOSED&&(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(t,n,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof n&&(r=n,n={}),"number"==typeof t&&(t=t.toString()),this.readyState!==e.OPEN)return void LS(this,t,r);const i={binary:"string"!=typeof t,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[lS.extensionName]||(i.compress=!1),this._sender.send(t||pS,i,r)}terminate(){if(this.readyState!==e.CLOSED)if(this.readyState!==e.CONNECTING)this._socket&&(this._readyState=e.CLOSING,this._socket.destroy());else{const e="WebSocket was closed before the connection was established";RS(this,this._req,e)}}};Object.defineProperty(TS,"CONNECTING",{enumerable:!0,value:OS.indexOf("CONNECTING")}),Object.defineProperty(TS.prototype,"CONNECTING",{enumerable:!0,value:OS.indexOf("CONNECTING")}),Object.defineProperty(TS,"OPEN",{enumerable:!0,value:OS.indexOf("OPEN")}),Object.defineProperty(TS.prototype,"OPEN",{enumerable:!0,value:OS.indexOf("OPEN")}),Object.defineProperty(TS,"CLOSING",{enumerable:!0,value:OS.indexOf("CLOSING")}),Object.defineProperty(TS.prototype,"CLOSING",{enumerable:!0,value:OS.indexOf("CLOSING")}),Object.defineProperty(TS,"CLOSED",{enumerable:!0,value:OS.indexOf("CLOSED")}),Object.defineProperty(TS.prototype,"CLOSED",{enumerable:!0,value:OS.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(TS.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(TS.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[mS])return t[yS];return null},set(t){for(const t of this.listeners(e))if(t[mS]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[mS]:!0})}})})),TS.prototype.addEventListener=SS,TS.prototype.removeEventListener=_S;var AS=TS;function MS(e,t,n,r){const i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:$S[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=i.autoPong,!$S.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${$S.join(", ")})`);let o;if(t instanceof cS)o=t;else try{o=new cS(t)}catch(e){throw new SyntaxError(`Invalid URL: ${t}`)}"http:"===o.protocol?o.protocol="ws:":"https:"===o.protocol&&(o.protocol="wss:"),e._url=o.href;const s="wss:"===o.protocol,a="ws+unix:"===o.protocol;let c;if("ws:"===o.protocol||s||a?a&&!o.pathname?c="The URL's pathname is empty":o.hash&&(c="The URL contains a fragment identifier"):c='The URL\'s protocol must be one of "ws:", "wss:", "http:", "https", or "ws+unix:"',c){const t=new SyntaxError(c);if(0===e._redirects)throw t;return void PS(e,t)}const l=s?443:80,u=sS(16).toString("base64"),d=s?nS.request:rS.request,h=new Set;let f,p;if(i.createConnection=i.createConnection||(s?jS:DS),i.defaultPort=i.defaultPort||l,i.port=o.port||l,i.host=o.hostname.startsWith("[")?o.hostname.slice(1,-1):o.hostname,i.headers={...i.headers,"Sec-WebSocket-Version":i.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},i.path=o.pathname+o.search,i.timeout=i.handshakeTimeout,i.perMessageDeflate&&(f=new lS(!0!==i.perMessageDeflate?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=IS({[lS.extensionName]:f.offer()})),n.length){for(const e of n){if("string"!=typeof e||!NS.test(e)||h.has(e))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(e)}i.headers["Sec-WebSocket-Protocol"]=n.join(",")}if(i.origin&&(i.protocolVersion<13?i.headers["Sec-WebSocket-Origin"]=i.origin:i.headers.Origin=i.origin),(o.username||o.password)&&(i.auth=`${o.username}:${o.password}`),a){const e=i.path.split(":");i.socketPath=e[0],i.path=e[1]}if(i.followRedirects){if(0===e._redirects){e._originalIpc=a,e._originalSecure=s,e._originalHostOrSocketPath=a?i.socketPath:o.host;const t=r&&r.headers;if(r={...r,headers:{}},t)for(const[e,n]of Object.entries(t))r.headers[e.toLowerCase()]=n}else if(0===e.listenerCount("redirect")){const t=a?!!e._originalIpc&&i.socketPath===e._originalHostOrSocketPath:!e._originalIpc&&o.host===e._originalHostOrSocketPath;(!t||e._originalSecure&&!s)&&(delete i.headers.authorization,delete i.headers.cookie,t||delete i.headers.host,i.auth=void 0)}i.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(i.auth).toString("base64")),p=e._req=d(i),e._redirects&&e.emit("redirect",e.url,p)}else p=e._req=d(i);i.timeout&&p.on("timeout",(()=>{RS(e,p,"Opening handshake has timed out")})),p.on("error",(t=>{null===p||p[CS]||(p=e._req=null,PS(e,t))})),p.on("response",(o=>{const s=o.headers.location,a=o.statusCode;if(s&&i.followRedirects&&a>=300&&a<400){if(++e._redirects>i.maxRedirects)return void RS(e,p,"Maximum redirects exceeded");let o;p.abort();try{o=new cS(s,t)}catch(t){const n=new SyntaxError(`Invalid URL: ${s}`);return void PS(e,n)}MS(e,o,n,r)}else e.emit("unexpected-response",p,o)||RS(e,p,`Unexpected server response: ${o.statusCode}`)})),p.on("upgrade",((t,n,r)=>{if(e.emit("upgrade",t),e.readyState!==TS.CONNECTING)return;p=e._req=null;const o=t.headers.upgrade;if(void 0===o||"websocket"!==o.toLowerCase())return void RS(e,n,"Invalid Upgrade header");const s=aS("sha1").update(u+gS).digest("base64");if(t.headers["sec-websocket-accept"]!==s)return void RS(e,n,"Invalid Sec-WebSocket-Accept header");const a=t.headers["sec-websocket-protocol"];let c;if(void 0!==a?h.size?h.has(a)||(c="Server sent an invalid subprotocol"):c="Server sent a subprotocol but none was requested":h.size&&(c="Server sent no subprotocol"),c)return void RS(e,n,c);a&&(e._protocol=a);const l=t.headers["sec-websocket-extensions"];if(void 0!==l){if(!f)return void RS(e,n,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");let r;try{r=xS(l)}catch(t){return void RS(e,n,"Invalid Sec-WebSocket-Extensions header")}const i=Object.keys(r);if(1!==i.length||i[0]!==lS.extensionName)return void RS(e,n,"Server indicated an extension that was not requested");try{f.accept(r[lS.extensionName])}catch(t){return void RS(e,n,"Invalid Sec-WebSocket-Extensions header")}e._extensions[lS.extensionName]=f}e.setSocket(n,r,{allowSynchronousEvents:i.allowSynchronousEvents,generateMask:i.generateMask,maxPayload:i.maxPayload,skipUTF8Validation:i.skipUTF8Validation})})),i.finishRequest?i.finishRequest(p,e):p.end()}function PS(e,t){e._readyState=TS.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function DS(e){return e.path=e.socketPath,iS.connect(e)}function jS(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=iS.isIP(e.host)?"":e.host),oS.connect(e)}function RS(e,t,n){e._readyState=TS.CLOSING;const r=new Error(n);Error.captureStackTrace(r,RS),t.setHeader?(t[CS]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(PS,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function LS(e,t,n){if(t){const n=hS(t)?t.size:kS(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${OS[e.readyState]})`);process.nextTick(n,t)}}function FS(e,t){const n=this[bS];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,void 0!==n._socket[bS]&&(n._socket.removeListener("data",JS),process.nextTick(HS,n._socket),1005===e?n.close():n.close(e,t))}function US(){const e=this[bS];e.isPaused||e._socket.resume()}function WS(e){const t=this[bS];void 0!==t._socket[bS]&&(t._socket.removeListener("data",JS),process.nextTick(HS,t._socket),t.close(e[vS])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function BS(){this[bS].emitClose()}function GS(e,t){this[bS].emit("message",e,t)}function VS(e){const t=this[bS];t._autoPong&&t.pong(e,!this._isServer,wS),t.emit("ping",e)}function YS(e){this[bS].emit("pong",e)}function HS(e){e.resume()}function zS(e){const t=this[bS];t.readyState!==TS.CLOSED&&(t.readyState===TS.OPEN&&(t._readyState=TS.CLOSING,qS(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function qS(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),ES)}function KS(){const e=this[bS];let t;this.removeListener("close",KS),this.removeListener("data",JS),this.removeListener("end",ZS),e._readyState=TS.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[bS]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",BS),e._receiver.on("finish",BS))}function JS(e){this[bS]._receiver.write(e)||this.pause()}function ZS(){const e=this[bS];e._readyState=TS.CLOSING,e._receiver.end(),this.end()}function XS(){const e=this[bS];this.removeListener("error",XS),this.on("error",wS),e&&(e._readyState=TS.CLOSING,this.destroy())}const{tokenChars:QS}=sw;var e_={parse:function(e){const t=new Set;let n=-1,r=-1,i=0;for(;i<e.length;i++){const o=e.charCodeAt(i);if(-1===r&&1===QS[o])-1===n&&(n=i);else if(0===i||32!==o&&9!==o){if(44!==o)throw new SyntaxError(`Unexpected character at index ${i}`);{if(-1===n)throw new SyntaxError(`Unexpected character at index ${i}`);-1===r&&(r=i);const o=e.slice(n,r);if(t.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);t.add(o),n=r=-1}}else-1===r&&-1!==n&&(r=i)}if(-1===n||-1!==r)throw new SyntaxError("Unexpected end of input");const o=e.slice(n,i);if(t.has(o))throw new SyntaxError(`The "${o}" subprotocol is duplicated`);return t.add(o),t}};const t_=j,n_=F,{createHash:r_}=u,i_=eS,o_=Xb,s_=e_,a_=AS,{GUID:c_,kWebSocket:l_}=Ab,u_=/^[+/0-9A-Za-z]{22}==$/;function d_(e){e._state=2,e.emit("close")}function h_(){this.destroy()}function f_(e,t,n,r){n=n||n_.STATUS_CODES[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${t} ${n_.STATUS_CODES[t]}\r\n`+Object.keys(r).map((e=>`${e}: ${r[e]}`)).join("\r\n")+"\r\n\r\n"+n)}function p_(e,t,n,r,i){if(e.listenerCount("wsClientError")){const r=new Error(i);Error.captureStackTrace(r,p_),e.emit("wsClientError",r,n,t)}else f_(n,r,i)}var g_=Ku(class extends t_{constructor(e,t){if(super(),null==(e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:a_,...e}).port&&!e.server&&!e.noServer||null!=e.port&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(null!=e.port?(this._server=n_.createServer(((e,t)=>{const n=n_.STATUS_CODES[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),t.end(n)})),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){const e=this.emit.bind(this,"connection");this._removeListeners=function(e,t){for(const n of Object.keys(t))e.on(n,t[n]);return function(){for(const n of Object.keys(t))e.removeListener(n,t[n])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(t,n,r)=>{this.handleUpgrade(t,n,r,e)}})}!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=0}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(2===this._state)return e&&this.once("close",(()=>{e(new Error("The server is not running"))})),void process.nextTick(d_,this);if(e&&this.once("close",e),1!==this._state)if(this._state=1,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients&&this.clients.size?this._shouldEmitClose=!0:process.nextTick(d_,this);else{const e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close((()=>{d_(this)}))}}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on("error",h_);const i=e.headers["sec-websocket-key"],o=e.headers.upgrade,s=+e.headers["sec-websocket-version"];if("GET"!==e.method)return void p_(this,e,t,405,"Invalid HTTP method");if(void 0===o||"websocket"!==o.toLowerCase())return void p_(this,e,t,400,"Invalid Upgrade header");if(void 0===i||!u_.test(i))return void p_(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");if(8!==s&&13!==s)return void p_(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header");if(!this.shouldHandle(e))return void f_(t,400);const a=e.headers["sec-websocket-protocol"];let c=new Set;if(void 0!==a)try{c=s_.parse(a)}catch(n){return void p_(this,e,t,400,"Invalid Sec-WebSocket-Protocol header")}const l=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&void 0!==l){const r=new o_(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const e=i_.parse(l);e[o_.extensionName]&&(r.accept(e[o_.extensionName]),u[o_.extensionName]=r)}catch(n){return void p_(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header")}}if(this.options.verifyClient){const o={origin:e.headers[8===s?"sec-websocket-origin":"origin"],secure:!(!e.socket.authorized&&!e.socket.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(o,((o,s,a,l)=>{if(!o)return f_(t,s||401,a,l);this.completeUpgrade(u,i,c,e,t,n,r)}));if(!this.options.verifyClient(o))return f_(t,401)}this.completeUpgrade(u,i,c,e,t,n,r)}completeUpgrade(e,t,n,r,i,o,s){if(!i.readable||!i.writable)return i.destroy();if(i[l_])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return f_(i,503);const a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${r_("sha1").update(t+c_).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(n.size){const e=this.options.handleProtocols?this.options.handleProtocols(n,r):n.values().next().value;e&&(a.push(`Sec-WebSocket-Protocol: ${e}`),c._protocol=e)}if(e[o_.extensionName]){const t=e[o_.extensionName].params,n=i_.format({[o_.extensionName]:[t]});a.push(`Sec-WebSocket-Extensions: ${n}`),c._extensions=e}this.emit("headers",a,r),i.write(a.concat("\r\n").join("\r\n")),i.removeListener("error",h_),c.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",(()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(d_,this)}))),s(c,r)}});const m_=hd("websocketServer"),y_={},v_=pb();let b_,w_,S_,__,I_;const x_=["https://app.kemu.io","https://dev.kemu.io","https://stage.kemu.io","https://local.kemu.io:3003"],k_=e=>{const t=y_[e];t&&t.socket.close()};var E_=e=>{I_=new g_({port:e,maxPayload:1048576e3,verifyClient:(e,t)=>{const n=e.req.headers.origin;n&&x_.includes(n)?t(!0):t(!1,401,"Origin not allowed")}}),I_.on("connection",(e=>{const t=Oy();m_(`New client connected. Registered as "${t}"`),e.id=t,y_[t]={socket:e,activeMessage:null},b_&&b_(t),e.on("message",(t=>{if(t instanceof Buffer){const n=y_[e.id];v_(t,n.activeMessage,(e=>n.activeMessage=e),(t=>{if(!t.complete)return;const r=t=>{e.send(t),m_(`Writing ${t.byteLength} bytes to socket [${n.socket.id}]: ${t.toString()}`)},i=()=>{k_(n.socket.id)};if(t.command)return m_(`Received command from client [${n.socket.id}]: ${t.command}`),void(S_&&S_(n.socket.id,t.command,r,i));t.klMessage&&__&&__({send:r,terminateWebsocket:i,websocketId:n.socket.id,transmission:{sourceServiceId:t.sourceServiceId??-1,targetServiceId:t.targetServiceId??-1,rawMessage:t.rawMessage},json:t.klMessage.json})}))}})),e.on("close",(()=>{m_(`Client disconnected: ${e.id}`),w_&&w_(e.id),delete y_[e.id]})),e.on("error",(()=>{m_(`Error on client connection: ${e.id}`)}))})),console.log(`WebSocket server is running on port ${e}`)},C_=e=>{b_=e},$_=e=>{w_=e},O_=e=>{S_=e},N_=(e,t)=>{const n=y_[e];if(!n)return m_(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=Hv)return m_("Message is too long to be a command. Use sendMessage instead."),!1;const r=ab.encodeCommand(t);return n.socket.send(r),!0},T_=e=>__=e,A_=k_;const M_=hd("stopService"),P_=async e=>{const t=e.args[0];if(!t)return e.reply({error:"No service name provided"});const n=hv.getAllServiceVersions(t);M_(`Stopping ${n.length} services with name: ${t}`);for(const e of n)await hv.stopService({serviceName:e.info.name,version:e.info.version});const r=n.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[r]})},D_=hd("removeService"),j_=async e=>{const t=e.args[0],n=e.args[1];if(!t)return e.reply({error:"No service name provided"});let r=hv.getAllServiceVersions(t);n&&(r=r.filter((e=>e.info.version===n))),D_(`Removing ${r.length} service(s) with name: ${t}`);for(const e of r)await hv.uninstallService(e.info.name,e.info.version);const i=r.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[i]})},R_=hd("launchService"),L_=async e=>{const t=e.args[0],n=e.args[1];if(!t)return e.reply({error:"No service name provided"});if(!n)return e.reply({error:"No service version provided"});const r=`${t}@${n}/dist`;try{const i=By();R_(`Loading service ${t}@${n} from ${i}`);const{errorMsg:o,service:s,errorCode:a}=await hv.loadAndLaunch(i,r,!1);if(o||"started"!==s?.status)return e.reply({error:`Failed to launch service ${t}@${n}: ${o||"error-not-provided"}`,errCode:a});const c=Date.now(),l=3e4,u=async()=>{const r=s.status;return"running"===r?(R_(`Service ${t}@${n} loaded and started`),e.reply({success:[]})):(R_(`Service ${t}@${n} not yet started, status: ${r}`),"stopped"===r||"error"===r?e.reply({error:`Error launching service: "${s.errorMsg||"failed to initiate"}"`}):Date.now()-c>l?e.reply({error:"Timeout waiting for service to start"}):(R_("Retrying in 1 second..."),void setTimeout(u,1e3)))};u()}catch(r){return R_(`Error loading service ${t}@${n}: ${r?.message||r}`),e.reply({error:r?.message||"There was an error loading the service"})}},F_=hd("getMatchingServices"),U_=async e=>{const t=e.args[0],n=[],r=[];F_(`Checking for matching services: ${t.map((e=>e.name)).join(", ")}`);for(const{name:e,version:i}of t){const t=hv.getMatchingService(e,i);t?n.push({name:e,version:i,installationPath:hv.getServiceRootDirectory(t)}):r.push({name:e,version:i})}F_(`Found ${n.length} available services and ${r.length} missing services.`),e.reply({success:[{available:n,missing:r}]})},W_=hd("getSecretsValues");let B_;var G_=async e=>{const t=e.args[0].services;if(!B_)throw new Error("getSecretValuesFn is not set. Please call setGetSecretValuesFunction before using this function.");W_(`Checking for secrets values for services: ${t.map((e=>`${e.name}@${e.version}`)).join(", ")}`);const n=[];for(const e of t){const t=e.secrets,r=await B_({name:e.name,version:e.version,requiredSecrets:t.reduce(((e,t)=>(e[t]={optional:!1,description:""},e)),{})});n.push({name:e.name,version:e.version,secrets:t.map((e=>({name:e,value:r[e]})))})}const r=[{services:n}];e.reply({success:r})},V_=e=>{B_=e};const Y_=hd("getMappedSecrets");let H_;var z_=async e=>{const t=e.args[0].services;Y_(`Getting mapped secrets for services: ${t.map((e=>`${e.name}@${e.version}`)).join(", ")}`);const n=await H_(t),r=[{services:t.map((e=>({name:e.name,version:e.version,secrets:n[e.name]||[]})))}];e.reply({success:r})};const q_=hd("getServiceContents"),K_=({reply:e,args:t})=>{const[n]=t;q_(`Received GetServiceContents request for service ${n.serviceName} v${n.version}`);const r=hv.getMatchingService(n.serviceName,n.version);if(r)return e({success:[{serviceName:r.info.name,serviceVersion:r.info.version,uiContent:r.info.widgetUIContents,uiContentsChecksum:r.info.uiContentChecksum}]});q_(`Service ${n.serviceName} v${n.version} not found`),e({error:`Service ${n.serviceName} v${n.version} not found`})};let J_={globalApiKey:void 0,environment:"production"};const Z_=()=>({...J_}),X_=hd("apis"),Q_=()=>{const e=Z_();if(!e.serviceUrl)throw new Error("Unknown server URL. Please call `edgeConfig.setEdgeConfig` before using the APIs.");return e.serviceUrl},eI=async(e,t,n={})=>{try{const r=await fetch(e,{method:"POST",body:JSON.stringify(t),headers:{...n}});return r.ok?{data:await r.json(),statusCode:r.status,success:!0}:{statusCode:r.status,error:await r.text(),success:!1}}catch(e){return{statusCode:500,error:e instanceof Error?e.message:"Internal server error",success:!1}}},tI={},nI=async e=>{const t=(e=>{const t=tI[e],n=Date.now()-(t?.lastCheckedAt.getTime()??0);return t&&n<3e5?t.features:null})(e);if(t)return{valid:!0,features:t,error:null};const{valid:n,features:r,error:i}=await(async e=>{const{data:t,error:n}=await eI(`${Q_()}/v1/organization/validate/apiKey`,{apiKey:e},{"Content-Type":"application/json"});return n?(X_(`Error validating Kemu API key: ${n}`),{valid:!1,features:{},error:n}):t?.features?{valid:!0,features:t.features,error:null}:{valid:!1,features:{},error:"No features returned from the server"}})(e);return n&&(tI[e]={features:r,lastCheckedAt:new Date}),{valid:n,features:r,error:i}};function rI(e){return"number"==typeof e||!!/^0x[0-9a-f]+$/i.test(e)||/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function iI(e,t){return"constructor"===t&&"function"==typeof e[t]||"__proto__"===t}var oI=Ku((function(e,t){t||(t={});var n={bools:{},strings:{},unknownFn:null};"function"==typeof t.unknown&&(n.unknownFn=t.unknown),"boolean"==typeof t.boolean&&t.boolean?n.allBools=!0:[].concat(t.boolean).filter(Boolean).forEach((function(e){n.bools[e]=!0}));var r={};function i(e){return r[e].some((function(e){return n.bools[e]}))}Object.keys(t.alias||{}).forEach((function(e){r[e]=[].concat(t.alias[e]),r[e].forEach((function(t){r[t]=[e].concat(r[e].filter((function(e){return t!==e})))}))})),[].concat(t.string).filter(Boolean).forEach((function(e){n.strings[e]=!0,r[e]&&[].concat(r[e]).forEach((function(e){n.strings[e]=!0}))}));var o=t.default||{},s={_:[]};function a(e,t,r){for(var i=e,o=0;o<t.length-1;o++){var s=t[o];if(iI(i,s))return;void 0===i[s]&&(i[s]={}),i[s]!==Object.prototype&&i[s]!==Number.prototype&&i[s]!==String.prototype||(i[s]={}),i[s]===Array.prototype&&(i[s]=[]),i=i[s]}var a=t[t.length-1];iI(i,a)||(i!==Object.prototype&&i!==Number.prototype&&i!==String.prototype||(i={}),i===Array.prototype&&(i=[]),void 0===i[a]||n.bools[a]||"boolean"==typeof i[a]?i[a]=r:Array.isArray(i[a])?i[a].push(r):i[a]=[i[a],r])}function c(e,t,i){if(!i||!n.unknownFn||function(e,t){return n.allBools&&/^--[^=]+$/.test(t)||n.strings[e]||n.bools[e]||r[e]}(e,i)||!1!==n.unknownFn(i)){var o=!n.strings[e]&&rI(t)?Number(t):t;a(s,e.split("."),o),(r[e]||[]).forEach((function(e){a(s,e.split("."),o)}))}}Object.keys(n.bools).forEach((function(e){c(e,void 0!==o[e]&&o[e])}));var l=[];-1!==e.indexOf("--")&&(l=e.slice(e.indexOf("--")+1),e=e.slice(0,e.indexOf("--")));for(var u=0;u<e.length;u++){var d,h,f=e[u];if(/^--.+=/.test(f)){var p=f.match(/^--([^=]+)=([\s\S]*)$/);d=p[1];var g=p[2];n.bools[d]&&(g="false"!==g),c(d,g,f)}else if(/^--no-.+/.test(f))c(d=f.match(/^--no-(.+)/)[1],!1,f);else if(/^--.+/.test(f))d=f.match(/^--(.+)/)[1],void 0===(h=e[u+1])||/^(-|--)[^-]/.test(h)||n.bools[d]||n.allBools||r[d]&&i(d)?/^(true|false)$/.test(h)?(c(d,"true"===h,f),u+=1):c(d,!n.strings[d]||"",f):(c(d,h,f),u+=1);else if(/^-[^-]+/.test(f)){for(var m=f.slice(1,-1).split(""),y=!1,v=0;v<m.length;v++)if("-"!==(h=f.slice(v+2))){if(/[A-Za-z]/.test(m[v])&&"="===h[0]){c(m[v],h.slice(1),f),y=!0;break}if(/[A-Za-z]/.test(m[v])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(h)){c(m[v],h,f),y=!0;break}if(m[v+1]&&m[v+1].match(/\W/)){c(m[v],f.slice(v+2),f),y=!0;break}c(m[v],!n.strings[m[v]]||"",f)}else c(m[v],h,f);d=f.slice(-1)[0],y||"-"===d||(!e[u+1]||/^(-|--)[^-]/.test(e[u+1])||n.bools[d]||r[d]&&i(d)?e[u+1]&&/^(true|false)$/.test(e[u+1])?(c(d,"true"===e[u+1],f),u+=1):c(d,!n.strings[d]||"",f):(c(d,e[u+1],f),u+=1))}else if(n.unknownFn&&!1===n.unknownFn(f)||s._.push(n.strings._||!rI(f)?f:Number(f)),t.stopEarly){s._.push.apply(s._,e.slice(u+1));break}}return Object.keys(o).forEach((function(e){var t,n,i;t=s,n=e.split("."),i=t,n.slice(0,-1).forEach((function(e){i=i[e]||{}})),n[n.length-1]in i||(a(s,e.split("."),o[e]),(r[e]||[]).forEach((function(t){a(s,t.split("."),o[e])})))})),t["--"]?s["--"]=l.slice():l.forEach((function(e){s._.push(e)})),s}));rb("ipcClient"),rb("kemuWidgetService"),oI(process.argv.slice(2));const sI=hd("activeClients");let aI,cI={},lI={};const uI=(e,t)=>`${e}_${t}`,dI=e=>cI[e]||null,hI=(e,t)=>{const n=uI(e,t);return lI[n]||[]},fI=()=>{for(const e in cI){const t=cI[e];if(t?.transport===Nu.WS){const e=ab.encodeCommand(Cu.ServicesListChanged);t.send(e)}}},pI=async e=>{const t=[],{serviceSessionId:n,transport:r,send:i,terminateFn:o,extraInfo:s,isDevClient:a}=e,c=e=>{console.warn(e),o&&o()};if(r===Nu.WS){if(!s.user?.wsApiKey)return void c(`Attempted to register a WebSocket client without an API key. SessionId: ${n}`);const{valid:e,error:t}=await nI(s.user?.wsApiKey);if(!e&&!t)return void c(`Attempted to register a WebSocket client with an invalid API key. SessionId: ${n}`);t&&(s.user?.wsApiKey&&Hy.captureError({error:new Error(t),message:`Error validating api key "${s.user?.wsApiKey}"`,data:s}),sI(`Unable to validate API Key, usage will be limited. SessionId: ${n}`))}cI[n]={serviceSessionId:n,transport:r,isDevClient:!!a,broadcastSubscriptions:t,send:i,extraInfo:s,terminate:()=>{o&&o()},addSubscription:e=>{if(!t.some((t=>t.targetService.serviceName===e.serviceName&&t.targetService.version===e.version))){t.push({targetService:e});const r=uI(e.serviceName,e.version);return lI[r]=lI[r]||[],lI[r].some((e=>e.serviceId===n))||lI[r].push({sendFn:i,serviceId:n}),!0}return!1},removeSubscription:e=>{const r=t.findIndex((t=>t.targetService.serviceName===e.serviceName));if(-1!==r){t.splice(r,1);const i=uI(e.serviceName,e.version),o=lI[i]?.findIndex((e=>e.serviceId===n));if(-1!==o&&(lI[i]?.splice(o,1),!lI[i]?.length)){const t=hv.getMatchingService(e.serviceName,e.version);if(t?.info.eventEmitter&&"running"===t.status){const e=dI(t.info.sessionId);e?.extraInfo.ipcSocketId&&Ib(e?.extraInfo.ipcSocketId,Cu.BroadcastEnd)}}}},removeAllSubscriptions:()=>{for(const e of t){const t=uI(e.targetService.serviceName,e.targetService.version),r=lI[t]?.findIndex((e=>e.serviceId===n));-1!==r&&lI[t]?.splice(r,1)}t.length=0}},r===Nu.IPC&&(fI(),gI(n))},gI=e=>{const t=hv.getServiceBySessionId(e);if(t?.info.eventEmitter&&hI(t.info.name,t.info.version).length){const t=dI(e);t?.extraInfo.ipcSocketId&&Ib(t?.extraInfo.ipcSocketId,Cu.BroadcastStart)}},mI=e=>{const t=cI[e];var n;t?.transport===Nu.IPC?fI():(t?.removeAllSubscriptions(),(()=>{const e=Object.values(cI);for(const t of e)if(t.transport===Nu.IPC){const e=t.extraInfo.ipcSocketId,n=hv.getServiceBySessionId(t.serviceSessionId);n?.info.eventEmitter&&(hI(n.info.name,n.info.version).length||e&&Ib(e,Cu.BroadcastEnd))}})(),t?.extraInfo.user?.wsApiKey&&(n=t.extraInfo.user.wsApiKey,delete tI[n]),(e=>{const t=cI[e];if(t?.transport===Nu.WS&&t.extraInfo.recipe){const n=[{recipe:t.extraInfo.recipe}];sI(`Notifying IPC clients that a Kemu Compose client [${t.extraInfo.recipe.name} (${t.extraInfo.recipe.poolId})] has disconnected. ServiceSessionId: ${e}`);for(const e in cI){const t=cI[e];t?.transport===Nu.IPC&&aI.execute($u.KemuComposerDisconnected,n,t.send,0,t.serviceSessionId,{async:!0}).catch((t=>{sI(`Error notifying IPC client [${e}] that a Kemu Compose client has disconnected: ${t?.message||t}`)}))}}})(e)),delete cI[e]},yI=hd("ipc:handleIpcClientCommand"),vI=(e,t,n)=>{const r=((e,t)=>{if(e.startsWith(Cu.AcknowledgeResponse)){const n=e.split(":"),r=parseInt(n[1]),i=parseInt(n[2]);return t&&t(r,isNaN(i)?void 0:i),!0}return!1})(t,((e,t)=>{if(!e)return void yI(`Ignoring ACK response from IPC service ${e} with no service id`);yI(`Received ACK from IPC service ${e}. Marking as running.`);let r=e;t&&e&&e!==t&&(xb(e,t),r=t);let i=!1;t&&(i=hv.setServiceStatus(t,"running")),i?pI({serviceSessionId:t||e,transport:Nu.IPC,send:n,extraInfo:{ipcSocketId:t}}):Ib(r,Cu.SendManifest)}));!r&&yI(`Received unknown command [${t}] from service ${e}`)};let bI={};H.platform();const wI=async e=>{const t=e.args[0];if(bI.chooseDirectory)try{const n=await bI.chooseDirectory(t);return e.reply({success:[String(n).trim()]})}catch(t){return console.error(t),e.reply({error:t instanceof Error?t.message:"Unknown error"})}return e.reply({error:"This hub does not support showing file dialogs",errCode:"GUI_NOT_SUPPORTED"})},SI=async e=>{const t=e.args[0];if(bI.chooseFile)try{const n=await bI.chooseFile(t);return e.reply({success:[String(n).trim()]})}catch(t){return console.error(t),e.reply({error:t instanceof Error?t.message:"Unknown error"})}return e.reply({error:"This hub does not support showing file dialogs",errCode:"GUI_NOT_SUPPORTED"})};var _I={},II={},xI={};function kI(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function EI(e){if("boolean"!=typeof e)throw new Error(`boolean expected, not ${e}`)}function CI(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function $I(e,...t){if(!CI(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function OI(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");kI(e.outputLen),kI(e.blockLen)}function NI(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function TI(e,t){$I(e);const n=t.outputLen;if(e.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}Object.defineProperty(xI,"__esModule",{value:!0}),xI.output=xI.exists=xI.hash=xI.bytes=xI.bool=xI.number=xI.isBytes=void 0,xI.number=kI,xI.bool=EI,xI.isBytes=CI,xI.bytes=$I,xI.hash=OI,xI.exists=NI,xI.output=TI;const AI={number:kI,bool:EI,bytes:$I,hash:OI,exists:NI,output:TI};xI.default=AI;var MI={};Object.defineProperty(MI,"__esModule",{value:!0}),MI.add5L=MI.add5H=MI.add4H=MI.add4L=MI.add3H=MI.add3L=MI.add=MI.rotlBL=MI.rotlBH=MI.rotlSL=MI.rotlSH=MI.rotr32L=MI.rotr32H=MI.rotrBL=MI.rotrBH=MI.rotrSL=MI.rotrSH=MI.shrSL=MI.shrSH=MI.toBig=MI.split=MI.fromBig=void 0;const PI=BigInt(2**32-1),DI=BigInt(32);function jI(e,t=!1){return t?{h:Number(e&PI),l:Number(e>>DI&PI)}:{h:0|Number(e>>DI&PI),l:0|Number(e&PI)}}function RI(e,t=!1){let n=new Uint32Array(e.length),r=new Uint32Array(e.length);for(let i=0;i<e.length;i++){const{h:o,l:s}=jI(e[i],t);[n[i],r[i]]=[o,s]}return[n,r]}MI.fromBig=jI,MI.split=RI;const LI=(e,t)=>BigInt(e>>>0)<<DI|BigInt(t>>>0);MI.toBig=LI;const FI=(e,t,n)=>e>>>n;MI.shrSH=FI;const UI=(e,t,n)=>e<<32-n|t>>>n;MI.shrSL=UI;const WI=(e,t,n)=>e>>>n|t<<32-n;MI.rotrSH=WI;const BI=(e,t,n)=>e<<32-n|t>>>n;MI.rotrSL=BI;const GI=(e,t,n)=>e<<64-n|t>>>n-32;MI.rotrBH=GI;const VI=(e,t,n)=>e>>>n-32|t<<64-n;MI.rotrBL=VI;const YI=(e,t)=>t;MI.rotr32H=YI;const HI=e=>e;MI.rotr32L=HI;const zI=(e,t,n)=>e<<n|t>>>32-n;MI.rotlSH=zI;const qI=(e,t,n)=>t<<n|e>>>32-n;MI.rotlSL=qI;const KI=(e,t,n)=>t<<n-32|e>>>64-n;MI.rotlBH=KI;const JI=(e,t,n)=>e<<n-32|t>>>64-n;function ZI(e,t,n,r){const i=(t>>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:0|i}}MI.rotlBL=JI,MI.add=ZI;const XI=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0);MI.add3L=XI;const QI=(e,t,n,r)=>t+n+r+(e/2**32|0)|0;MI.add3H=QI;const ex=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0);MI.add4L=ex;const tx=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0;MI.add4H=tx;const nx=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0);MI.add5L=nx;const rx=(e,t,n,r,i,o)=>t+n+r+i+o+(e/2**32|0)|0;MI.add5H=rx;const ix={fromBig:jI,split:RI,toBig:LI,shrSH:FI,shrSL:UI,rotrSH:WI,rotrSL:BI,rotrBH:GI,rotrBL:VI,rotr32H:YI,rotr32L:HI,rotlSH:zI,rotlSL:qI,rotlBH:KI,rotlBL:JI,add:ZI,add3L:XI,add3H:QI,add4L:ex,add4H:tx,add5H:rx,add5L:nx};MI.default=ix;var ox={},sx={};Object.defineProperty(sx,"__esModule",{value:!0}),sx.crypto=void 0,sx.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,function(e){
|
|
11
11
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
12
|
-
Object.defineProperty(e,"__esModule",{value:!0}),e.randomBytes=e.wrapXOFConstructorWithOpts=e.wrapConstructorWithOpts=e.wrapConstructor=e.checkOpts=e.Hash=e.concatBytes=e.toBytes=e.utf8ToBytes=e.asyncLoop=e.nextTick=e.hexToBytes=e.bytesToHex=e.byteSwap32=e.byteSwapIfBE=e.byteSwap=e.isLE=e.rotl=e.rotr=e.createView=e.u32=e.u8=e.isBytes=void 0;const t=tx,n=bI;e.isBytes=function(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name},e.u8=e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength),e.u32=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4)),e.createView=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),e.rotr=(e,t)=>e<<32-t|e>>>t,e.rotl=(e,t)=>e<<t|e>>>32-t>>>0,e.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],e.byteSwap=e=>e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255,e.byteSwapIfBE=e.isLE?e=>e:t=>(0,e.byteSwap)(t),e.byteSwap32=function(t){for(let n=0;n<t.length;n++)t[n]=(0,e.byteSwap)(t[n])};const r=Array.from({length:256},((e,t)=>t.toString(16).padStart(2,"0")));e.bytesToHex=function(e){(0,n.bytes)(e);let t="";for(let n=0;n<e.length;n++)t+=r[e[n]];return t};const i=48,o=57,s=65,a=70,c=97,l=102;function u(e){return e>=i&&e<=o?e-i:e>=s&&e<=a?e-(s-10):e>=c&&e<=l?e-(c-10):void 0}function d(e){if("string"!=typeof e)throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array((new TextEncoder).encode(e))}function h(e){return"string"==typeof e&&(e=d(e)),(0,n.bytes)(e),e}e.hexToBytes=function(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length,n=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){const n=u(e.charCodeAt(i)),o=u(e.charCodeAt(i+1));if(void 0===n||void 0===o){const t=e[i]+e[i+1];throw new Error('hex string expected, got non-hex character "'+t+'" at index '+i)}r[t]=16*n+o}return r},e.nextTick=async()=>{},e.asyncLoop=async function(t,n,r){let i=Date.now();for(let o=0;o<t;o++){r(o);const t=Date.now()-i;t>=0&&t<n||(await(0,e.nextTick)(),i+=t)}},e.utf8ToBytes=d,e.toBytes=h,e.concatBytes=function(...e){let t=0;for(let r=0;r<e.length;r++){const i=e[r];(0,n.bytes)(i),t+=i.length}const r=new Uint8Array(t);for(let t=0,n=0;t<e.length;t++){const i=e[t];r.set(i,n),n+=i.length}return r},e.Hash=class{clone(){return this._cloneInto()}};const f={}.toString;e.checkOpts=function(e,t){if(void 0!==t&&"[object Object]"!==f.call(t))throw new Error("Options should be object or undefined");return Object.assign(e,t)},e.wrapConstructor=function(e){const t=t=>e().update(h(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t},e.wrapConstructorWithOpts=function(e){const t=(t,n)=>e(n).update(h(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t},e.wrapXOFConstructorWithOpts=function(e){const t=(t,n)=>e(n).update(h(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t},e.randomBytes=function(e=32){if(t.crypto&&"function"==typeof t.crypto.getRandomValues)return t.crypto.getRandomValues(new Uint8Array(e));throw new Error("crypto.getRandomValues must be defined")}}(ex),Object.defineProperty(vI,"__esModule",{value:!0}),vI.shake256=vI.shake128=vI.keccak_512=vI.keccak_384=vI.keccak_256=vI.keccak_224=vI.sha3_512=vI.sha3_384=vI.sha3_256=vI.sha3_224=vI.Keccak=vI.keccakP=void 0;const nx=bI,rx=$I,ix=ex,ox=[],sx=[],ax=[],cx=BigInt(0),lx=BigInt(1),ux=BigInt(2),dx=BigInt(7),hx=BigInt(256),fx=BigInt(113);for(let e=0,t=lx,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],ox.push(2*(5*r+n)),sx.push((e+1)*(e+2)/2%64);let i=cx;for(let e=0;e<7;e++)t=(t<<lx^(t>>dx)*fx)%hx,t&ux&&(i^=lx<<(lx<<BigInt(e))-lx);ax.push(i)}const[px,gx]=(0,rx.split)(ax,!0),mx=(e,t,n)=>n>32?(0,rx.rotlBH)(e,t,n):(0,rx.rotlSH)(e,t,n),yx=(e,t,n)=>n>32?(0,rx.rotlBL)(e,t,n):(0,rx.rotlSL)(e,t,n);function vx(e,t=24){const n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){const r=(t+8)%10,i=(t+2)%10,o=n[i],s=n[i+1],a=mx(o,s,1)^n[r],c=yx(o,s,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=a,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){const r=sx[n],o=mx(t,i,r),s=yx(t,i,r),a=ox[n];t=e[a],i=e[a+1],e[a]=o,e[a+1]=s}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=px[r],e[1]^=gx[r]}n.fill(0)}vI.keccakP=vx;class bx extends ix.Hash{constructor(e,t,n,r=!1,i=24){if(super(),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,nx.number)(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,ix.u32)(this.state)}keccak(){ix.isLE||(0,ix.byteSwap32)(this.state32),vx(this.state32,this.rounds),ix.isLE||(0,ix.byteSwap32)(this.state32),this.posOut=0,this.pos=0}update(e){(0,nx.exists)(this);const{blockLen:t,state:n}=this,r=(e=(0,ix.toBytes)(e)).length;for(let i=0;i<r;){const o=Math.min(t-this.pos,r-i);for(let t=0;t<o;t++)n[this.pos++]^=e[i++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:e,suffix:t,pos:n,blockLen:r}=this;e[n]^=t,128&t&&n===r-1&&this.keccak(),e[r-1]^=128,this.keccak()}writeInto(e){(0,nx.exists)(this,!1),(0,nx.bytes)(e),this.finish();const t=this.state,{blockLen:n}=this;for(let r=0,i=e.length;r<i;){this.posOut>=n&&this.keccak();const o=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+o),r),this.posOut+=o,r+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return(0,nx.number)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0,nx.output)(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:r,rounds:i,enableXOF:o}=this;return e||(e=new bx(t,n,r,o,i)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=i,e.suffix=n,e.outputLen=r,e.enableXOF=o,e.destroyed=this.destroyed,e}}vI.Keccak=bx;const wx=(e,t,n)=>(0,ix.wrapConstructor)((()=>new bx(t,e,n)));vI.sha3_224=wx(6,144,28),vI.sha3_256=wx(6,136,32),vI.sha3_384=wx(6,104,48),vI.sha3_512=wx(6,72,64),vI.keccak_224=wx(1,144,28),vI.keccak_256=wx(1,136,32),vI.keccak_384=wx(1,104,48),vI.keccak_512=wx(1,72,64);const Sx=(e,t,n)=>(0,ix.wrapXOFConstructorWithOpts)(((r={})=>new bx(t,e,void 0===r.dkLen?n:r.dkLen,!0)));vI.shake128=Sx(31,168,16),vI.shake256=Sx(31,136,32);const{sha3_512:_x}=vI,Ix=(e=4,t=Math.random)=>{let n="";for(;n.length<e;)n+=Math.floor(36*t()).toString(36);return n};function xx(e){let t=0n;for(const n of e.values())t=(t<<8n)+BigInt(n);return t}const kx=(e="")=>xx(_x(e)).toString(36).slice(1),Ex=Array.from({length:26},((e,t)=>String.fromCharCode(t+97))),Cx=({globalObj:e=(void 0!==Gu?Gu:"undefined"!=typeof window?window:{}),random:t=Math.random}={})=>{const n=Object.keys(e).toString(),r=n.length?n+Ix(32,t):Ix(32,t);return kx(r).substring(0,32)},$x=e=>()=>e++,Ox=({random:e=Math.random,counter:t=$x(Math.floor(476782367*e())),length:n=24,fingerprint:r=Cx({random:e})}={})=>function(){const i=(e=>Ex[Math.floor(e()*Ex.length)])(e),o=Date.now().toString(36),s=t().toString(36),a=Ix(n,e);return`${i+kx(`${o+a+s+r}`).substring(1,n)}`},Nx=Ox();yI.getConstants=()=>({defaultLength:24,bigLength:32}),yI.init=Ox,yI.createId=Nx,yI.bufToBigInt=xx,yI.createCounter=$x,yI.createFingerprint=Cx,yI.isCuid=(e,{minLength:t=2,maxLength:n=32}={})=>{const r=e.length,i=/^[0-9a-z]+$/;try{if("string"==typeof e&&r>=t&&r<=n&&i.test(e))return!0}finally{}return!1};const{createId:Tx,init:Ax,getConstants:Mx,isCuid:Px}=yI;var Dx=Tx;const jx=ad("getUniqueId"),Rx=({reply:e,sourceServiceId:t})=>(jx(`Generating unique id for service "${t}"`),e({success:[Dx()]})),Lx=ad("getActiveServices"),Fx=async({transport:e,sourceServiceId:t,reply:n})=>{if(Lx(`Received GetServices request from ${e} [${t}]`),e===ku.WS){let e=av.getActiveServices();const r=sI(t);if(!r)return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});let i=[];if(r.transport===ku.WS){if(!r?.extraInfo.user?.wsApiKey)return n({error:"Client does not have an API key",errCode:"CLIENT_NO_API_KEY"});const t=e.filter(av.isInternalKemuService),o=e.filter((e=>e.devMode&&av.isNotInternalKemuService(e))),s=e.filter((e=>av.isOfficialKemuService(e)&&av.isNotInternalKemuService(e)&&av.isNotDevService(e))).sort(((e,t)=>e.name.localeCompare(t.name))),a=e.filter((e=>av.isNotDevService(e)&&av.isNotInternalKemuService(e)&&!av.isOfficialKemuService(e))),c=await(async e=>{const{features:t}=await Z_(e);return t})(r.extraInfo.user?.wsApiKey),l=c?.hub_services??0,u=s.slice(0,-1!==l?l:s.length);-1!==l&&(i=s.slice(l).map((e=>({name:e.name,version:e.version,svgIcon:e.svgIcon,color:e.color,description:e.description,title:e.title,shortTitle:e.shortTitle})))),e=[...t,...o,...u,...a]}const o=av.getFailedServices().map((e=>({name:e.name,version:e.version,description:e.description,title:e.title,status:e.status,errorMsg:e.errorMsg,errorCode:e.errorCode,internal:av.isInternalKemuService(e),svgIcon:e.svgIcon,color:e.color,shortTitle:e.shortTitle})));n({success:[{available:e.map((e=>{const{widgetUIContents:t,...n}=e;return{...n}})),failed:o,installed:i}]})}};let Ux="runtime",Wx=null;const Bx=()=>Ux,Gx=ad("getSystemInfo"),Vx=async({reply:e})=>{Gx("Received GetSystemInfo request"),e({success:[await(async()=>({platformArch:Au(),isDesktopHub:"desktop"===Bx(),isRuntimeHub:"runtime"===Bx(),hubVersion:$y,...Wx?{updateAvailable:Wx}:{}}))()]})},Yx=ad("removeService"),Hx=async({args:e,sourceServiceId:t,reply:n})=>{const r=e[0],i=r.serviceName,o=r.version;if(!i)return n({error:"No service name provided"});if(!o)return n({error:"No service version provided"});const s=av.getAllServiceVersions(i),a=s.find((e=>e.info.version===o));if(!a)return n({error:"Service not found"});Yx(`Removing ${s.length} service(s) with name: ${i}`);const c=a.info.publicationId;let l;if(await av.uninstallService(a.info.name,a.info.version),c){const e=sI(t);if(!e)return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});const r=e.extraInfo.user?.wsApiKey;if(!r)return n({error:"Client does not have an API key",errCode:"CLIENT_NO_API_KEY"});Yx(`Updating license details for "${c}"`);const i=await(async e=>{const{data:t,error:n}=await K_(`${q_()}/v1/organization/validate/uninstall_hub_service`,e,{"Content-Type":"application/json"});if(n)throw new Error(n);return t})({apiKey:r,hubService:{id:c}}).catch((e=>(Yx(`Error updating license details for "${c}": ${e}`),{error:e.message,remaining:void 0})));l=i?.remaining}n({success:[{remaining:l,service:{name:i,version:o}}]})},zx=ad("getDecryptedEdgeApiKey"),qx=({reply:e})=>(zx("Getting decrypted edge API key"),e({success:[H_().globalApiKey]})),Kx=({reply:e})=>{zx("Getting hub config");const t=H_();return e({success:[{kemuApiKey:t.globalApiKey,environment:t.environment}]})};let Jx,Zx,Xx,Qx,ek;const tk=e=>e.transport===ku.IPC&&(e.reply({error:"Transport is not allowed to call this function"}),!0);var nk=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretNames;if(!r||!n)return e.reply({error:"Invalid request parameters"});if(!Jx)return e.reply({error:"Get recipe secrets function not set"});const i=await Jx({...t[0]}),o={};for(const e of r)o[e]=e in i?i[e]:null;const s=[{secrets:o}];e.reply({success:s})},rk=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretsMap;if(tk(e))return;if(!Zx)return e.reply({error:"Add recipe secret mapping function not set"});if(!r||!n)return e.reply({error:"Invalid request parameters"});const i=[{secrets:await Zx({recipeUuid:n,secretsMap:r})}];e.reply({success:i})},ik=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretName;if(tk(e))return;if(!Xx)return e.reply({error:"Delete recipe secret mapping function not set"});if(!r||!n)return e.reply({error:"Invalid request parameters"});const i=[{secrets:await Xx({recipeUuid:n,secretName:r})}];e.reply({success:i})},ok=async e=>{const t=e.args[0].recipeUuid;if(!Qx)return e.reply({error:"Get recipe secret mappings function not set"});if(!t)return e.reply({error:"Invalid request parameters"});const n=[{secrets:await Qx({recipeUuid:t})}];e.reply({success:n})},sk=async e=>{const t=e.args,n=t[0].hubServiceName,r=t[0].secrets;return ek?n&&r?Array.isArray(r)?(await ek({hubServiceName:n,secrets:r}),void e.reply({success:[]})):e.reply({error:'Expected "secrets" to be an array'}):e.reply({error:"Invalid request parameters"}):e.reply({error:"Add service secret function not set"})};let ak,ck,lk;const uk=e=>e.transport===ku.IPC&&(e.reply({error:"You are not allowed to manage secrets using this transport"}),!0);var dk=async e=>{if(e.args,uk(e))return;if(!lk)return e.reply({error:"Get hub secrets function not set"});const t=[{contexts:await lk()}];e.reply({success:t})},hk=async e=>{const t=e.args;if(uk(e))return;if(!ak)return e.reply({error:"Add hub secret function not set"});const n=[{contexts:await ak(t[0])}];e.reply({success:n})},fk=async e=>{const t=e.args;if(uk(e))return;if(!ck)return e.reply({error:"Delete hub secret function not set"});const n=[{contexts:await ck(t[0])}];e.reply({success:n})};const pk=E(Y(import.meta.url));let gk=null;const mk=ad("hub"),yk=new function(){const e={};let t,n=console.log;const r={};let i="hub";const o={},s=e=>!o[e],a=(e,t,n,r,i,o)=>{let a=Gv?new ArrayBuffer(0):Buffer.alloc(0);const c={json:{functionName:e,args:o.success?o.success:[o],messageId:t,type:o.success?"response":"error"}};return s(r)&&(a=_b.encode(c,n,r)),i(a,{msg:c,sourceServiceId:n,targetServiceId:r})};return{setLogger:e=>{n=e},processMessage:(i,o,s,c)=>{if(!c)return!1;const l=c;if(e[l.messageId]){const t=e[l.messageId];return t&&(clearTimeout(t.timer),t.fulfilled||(t.fulfilled=!0,"response"===l.type?t.resolve(l.args):"error"===l.type&&t.reject(l.args[0])),delete e[l.messageId]),!0}if("execute"!==l.type&&n&&n(`No pending execution found for message id "${l.messageId}"`),"execute"===l.type){const e=r[l.functionName];if(e){const r=e=>{a(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,e)};if(t&&!t({args:l.args,functionName:l.functionName,transport:i,messageId:l.messageId,sourceServiceId:s.sourceServiceId,reply:r,send:o}))return n&&n(`Function "${l.functionName}" not allowed to be invoked by client [${s.sourceServiceId}]`),r({error:"Function not allowed",errCode:"FNC_NOT_ALLOWED"}),!0;e({transport:i,args:l.args,reply:r,messageId:l.messageId,sourceServiceId:s.sourceServiceId,send:o})}else{const e=`Function "${l.functionName}" not found.`;n&&n(e),a(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,{error:e,errCode:"FNC_NOT_FOUND"})}return!0}return!1},execute:async(t,r,o,a,c,l)=>{if(!o){const e="No send buffer function provided.";throw n&&n(e),e}Ib+=1;const u=`${i}-${Ib}-exec-${t.substring(0,10)}`,d={messageId:u,functionName:t,send:o,sourceServiceId:a,targetServiceId:c,args:r||[],fulfilled:!1,resolve:()=>{},reject:()=>{}};d.promise=new Promise(((e,t)=>{d.resolve=e,d.reject=t}));let h=Gv?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:t,args:r,messageId:u,type:"execute"}};s(c)&&(h=_b.encode(f,a,c)),e[u]=d,n&&n(`Calling remote function "${t}" with message id "${u}"`);const p="true"===process.env.NO_INVOKE_TIMEOUT;return l?.async?(d.fulfilled=!0,d.resolve([void 0]),delete e[u]):0===l?.timeout||p||(d.timer=setTimeout((()=>{n&&n(`Remote function ${u} timed out`);const r=e[u];r&&!r.fulfilled&&(r.fulfilled=!0,d.reject(`Function ${t} Timed out`)),delete e[u]}),l?.timeout||3e4)),o(h,{sourceServiceId:a,targetServiceId:c,msg:f}),d.promise},sendResponse:a,registerFunction:(e,t)=>{r[e]=t},registerFunctionsMiddleware:e=>{t=e},unregisterAllFunctions:()=>{Object.keys(r).forEach((e=>{delete r[e]}))},getTransportSendFunction:t=>{const n=e[t];return n?n.send:null},setServiceName:e=>{i=e},getPendingExecutions:()=>e,rejectAllPending:t=>{Object.keys(e).forEach((n=>{const r=e[n];r&&!r.fulfilled&&(clearTimeout(r.timer),r.fulfilled=!0,r.reject(t),delete e[n])}))},broadcast:(e,t,r,o)=>{Ib+=1;const a=`${i}-${Ib}-multicast-${e.substring(0,10)}`;let c=Gv?new ArrayBuffer(0):Buffer.alloc(0);const l={json:{functionName:e,args:t,messageId:a,type:"execute"}};let u=s(r[0].serviceId);u&&(c=_b.encode(l,o,r[0].serviceId));for(let t=0;t<r.length;t++)try{const i=r[t];n&&n(`Broadcasting function "${e}" with message id "${a}" to client [${i.serviceId}]`),0!==t&&(u=s(i.serviceId),u&&(c=_b.patchEncodedHeader(c,{toServiceId:i.serviceId}))),i.sendFn(c,{msg:l,sourceServiceId:o,targetServiceId:i.serviceId})}catch(e){n&&n(`Error broadcasting to client at index ${t}`)}},disableServiceEncoding:(e,t)=>{o[e]=t}}}("hub");nI=yk,yk.setLogger(mk);const vk={[Iu.RebootToInstallUpdate]:null,[Iu.GetFileContentFromCacheId]:null,[Iu.SaveRecipeToFile]:null},bk=(e,t)=>{const{transmission:n}=t;if(0!==n.targetServiceId){const r=sI(n.targetServiceId);if(!r)return mk(`Service [${e}] ${n.sourceServiceId} is sending data to an unknown service ["${n.targetServiceId}"]`),!0;r.transport,ku.IPC;const i=t.json?.messageId;return mk(`Forwarding message from ${n.sourceServiceId} to ${n.targetServiceId}, msgId: ${i}`),r.send(n.rawMessage,{sourceServiceId:n.sourceServiceId,targetServiceId:n.targetServiceId,msg:{json:t.json}}),!0}return!1},wk=({sourceServiceId:e,args:t})=>{const n=av.getServiceBySessionId(e);if(n){const r=aI(n.info.name,n.info.version),i=aI(n.info.name,"*");if(!r.length&&!i.length)return;const o=[...r,...i],s={...t[0],source:{serviceName:n.info.name,serviceVersion:n.info.version,sessionId:e}};yk.broadcast(Iu.BroadcastEvent,[s],o,0)}},Sk=async({args:e,reply:t})=>{const n=e[0];if(!n)return mk("Invalid config for SendToRecipe"),t({error:"Invalid config for SendToRecipe"});const r=(i=n.recipePoolId,Object.values(rI).find((e=>e.extraInfo.recipe?.poolId===i))||null);var i;if(!r)return mk(`No client found for recipe pool id ${n.recipePoolId}`),t({error:`No client found for recipe pool id "${n.recipePoolId}"`});try{const e=yk.execute(Iu.SendToRecipe,[n],r.send,0,r.serviceSessionId,{async:!n.waitForResponse,timeout:n.timeout});n.waitForResponse?t({success:await e}):t({success:[]})}catch(e){return mk(`Error sending to recipe ${n.recipePoolId}: ${e?.message||e}`),t({error:e?.message||"There was an error sending to the recipe"})}},_k=e=>{const{send:t,transmission:n,json:r}=e;mk(`Raw message Id received from WS: ${r?.messageId}`),bk(ku.WS,e)||yk.processMessage(ku.WS,t,n,r)},Ik=e=>{const t=(n=e,`${_u.SocketAcknowledge}${n}`);var n;k_(e,t)},xk=(e,t)=>{mk(`Received unknown command [${t}] from service ${e}`)},kk=async e=>{const{args:t,sourceServiceId:n,send:r,reply:i}=e,o=n,s=t[0],a=s?.user?.apiKey||H_().globalApiKey;if(!a)return mk(`Received ACK from WS service ${n} but no API key was provided`),i({error:"No API key was provided",errCode:"MISSING_API_KEY"});s.user?.id&&Wy.setGlobalUserId(s.user?.id),await lI({serviceSessionId:n,transport:ku.WS,send:r,terminateFn:()=>{C_(n)},extraInfo:{websocketId:o,recipe:s.recipe,user:{wsApiKey:a,userEmail:s.user?.email,userId:s.user?.id}}}),i({success:[]})},Ek=e=>{mk(`WS Client ${e} disconnected`),dI(e)},Ck=e=>1===e.sourceServiceId?e.functionName===Iu.GetFileContentFromCacheId:e.functionName===Iu.SocketAckResponse||e.functionName===Iu.ServiceManifest||e.functionName===Iu.SubscribeToService||(!!sI(e.sourceServiceId)||(e.reply({error:`Session id "${e.sourceServiceId}" not found. Please acknowledge the session first.`}),!1)),$k=async({sourceServiceId:e,args:t,transport:n,send:r})=>{if(n!==ku.IPC){var i;mk(`Received manifest from non IPC service ${e}.`)}else{const n=t[0];if(n.devMode){const t=av.getMatchingDevService(n.name,n.version,"stopped");if(t){mk(`Found matching previous service ${t.info.name} (${t.info.version}). Reactivating previous client with session id ${t.info.sessionId}`);const o=sI(t.info.sessionId);if(!o)return void mk(`Could not find previous client instance for ${t.info.name} (${t.info.version}). Aborting manifest injection`);o.send=r,rI[i=e]?delete rI[i]:tI(`Could not find source client with session id ${i}`),bb(e,t.info.sessionId);const s=await My(n,n.path);t.info={...t.info,...s},mk(`Updating manifest for dev service ${t.info.sessionId}`),av.setServiceManifest(t.info.sessionId,s,"running"),mk(`Asking service ${e} to assume previous session id ${t.info.sessionId}`),vb(t.info.sessionId,(e=>`${_u.AssumeSession}${e}`)(t.info.sessionId)),(e=>{const t=rI[e];t?t.isDevClient?(t.disconnected=!1,t.transport===ku.IPC&&(cI(),uI(e))):tI(`Client with session id ${e} is not a dev client`):tI(`Could not find source client with session id ${e}`)})(t.info.sessionId)}else{av.addDevService(e,n,"running");const t=sI(e);t?t.isDevClient=!0:lI({serviceSessionId:e,transport:ku.IPC,send:r,extraInfo:{ipcSocketId:e},isDevClient:!0})}return}mk(`Received manifest from non dev service ${e} [${n.name}@(${n.version})]. Ignoring...`)}};var Ok=async e=>{var t;mk("Starting Kemu Hub..."),t=e.desktopMode?"desktop":"runtime",Ux=t;const n=e?.ipc?.appSpace||"kemu.",r=e?.ipc?.id||"widgets";if(!e.serviceUrl)throw new Error("Missing service url, please set the `apiUrl` option.");e.errorTracker&&Wy.setTracker(e.errorTracker),(e=>{Y_={...Y_,...e}})({serviceUrl:e.serviceUrl,globalApiKey:e.globalApiKey,environment:e.environment}),yk.registerFunctionsMiddleware(Ck),e.secrets?.serviceSecrets&&(e=>{ek=e})(e.secrets.serviceSecrets.addServiceSecretFn),e.secrets?.recipeSecrets&&((e=>{Jx=e})(e.secrets.recipeSecrets.getRecipeDecryptedSecretsFn),(e=>{Zx=e})(e.secrets.recipeSecrets.addRecipeSecretFn),(e=>{Xx=e})(e.secrets.recipeSecrets.deleteRecipeSecretFn),(e=>{Qx=e})(e.secrets.recipeSecrets.getRecipeSecretMappingsFn)),e.secrets?.hubSecrets&&((e=>{lk=e})(e.secrets.hubSecrets.getHubSecretsFn),(e=>{ak=e})(e.secrets.hubSecrets.addHubSecretsFn),(e=>{ck=e})(e.secrets.hubSecrets.deleteHubSecretFn)),yk.registerFunction(Iu.GetServiceContents,V_),yk.registerFunction(Iu.GetServices,Fx),yk.registerFunction(Iu.GetSystemInfo,Vx),yk.registerFunction(Iu.ShowSecretsConfigScreen,(async({args:t,reply:n})=>{const[{name:r,version:i}]=t;e?.onShowSecretsScreen?(await e.onShowSecretsScreen(r,i),n({success:[]})):n({error:"This hub does not support showing secrets configuration screens",errCode:"GUI_NOT_SUPPORTED"})})),yk.registerFunction(Iu.UnsubscribeFromService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===ku.WS){const[e]=n,i=sI(r);if(!i)return t({error:`Session id "${r}" not found`});mk(`Service ${r} unsubscribing from "${e.targetService.serviceName} (${e.targetService.version})"`),t({success:[]}),i?.removeSubscription({serviceName:e.targetService.serviceName,version:e.targetService.version})}})),yk.registerFunction(Iu.SubscribeToService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===ku.WS){const[e]=n,i=sI(r),o=e.targetService;if(!i)return t({error:`Session id "${r}" not found`});if(mk(`Service ${r} subscribing to "${o.serviceName} (${o.version})"`),"hub"===o.serviceName)return i.addSubscription(o),void t({success:[]});if(!i.addSubscription(o))return mk(`Service ${r} already subscribed to "${o.serviceName} (${o.version})", ignoring request.`),t({success:[]});const s=av.getMatchingService(o.serviceName,o.version);if(!s)return mk(`Service ${o.serviceName} ${o.version} not active yet`),t({success:[]});if(!s.info.eventEmitter)return mk(`Service ${o.serviceName} ${o.version} does not have an event emitter, removing subscription`),i.removeSubscription(o),t({error:`Service "${o.serviceName} (${o.version})" does not produce events`});const a=sI(s.info.sessionId);return a?.extraInfo.ipcSocketId&&(mk(`Sending Broadcast START command to service ${s.info.sessionId}`),vb(a?.extraInfo.ipcSocketId,_u.BroadcastStart)),t({success:[]})}})),yk.registerFunction("stopService",O_),yk.registerFunction("removeService",T_),yk.registerFunction("launchService",M_),yk.registerFunction("getMatchingServices",D_),yk.registerFunction("getSecretsValues",L_),yk.registerFunction(Iu.GetMappedSecrets,B_),yk.registerFunction(Iu.BroadcastEvent,wk),yk.registerFunction(Iu.ServiceManifest,$k),yk.registerFunction(Iu.ChooseDirectoryDialog,gI),yk.registerFunction(Iu.ChooseFileDialog,mI),yk.registerFunction(Iu.GetUniqueId,Rx),yk.registerFunction(Iu.SendToRecipe,Sk),yk.registerFunction(Iu.GetDecryptedEdgeApiKey,qx),yk.registerFunction(Iu.GetHubConfig,Kx),yk.registerFunction(Iu.SocketAckResponse,kk),yk.registerFunction(Iu.UninstallService,Hx),yk.registerFunction(Iu.GetRecipeDecryptedSecretsValues,nk),yk.registerFunction(Iu.GetRecipeSecretMappings,ok),yk.registerFunction(Iu.AddRecipeSecretMapping,rk),yk.registerFunction(Iu.DeleteRecipeSecretMapping,ik),yk.registerFunction(Iu.GetHubSecrets,dk),yk.registerFunction(Iu.AddHubSecrets,hk),yk.registerFunction(Iu.DeleteHubSecret,fk),yk.registerFunction(Iu.AddServiceSecret,sk),Object.entries(vk).forEach((([e,t])=>{t?yk.registerFunction(e,t):(mk(`Skipping registration of "${e}" because it's not implemented`),yk.registerFunction(e,(({reply:t})=>{t({error:`This hub does not support "${e}"`,errCode:"FUNCTION_NOT_SUPPORTED"})})))})),(e=>{pb=e})((e=>{const{send:t,transmission:n,json:r}=e;mk(`Raw message Id received from IPC: ${r?.messageId}`),bk(ku.IPC,e)||yk.processMessage(ku.IPC,t,n,r)})),E_(_k),__(Ik),x_(xk),I_(Ek),(e=>{fb=e})(fI),(e=>{db=e})((e=>{const t=(e=>`${_u.IpcAcknowledge}${e}`)(e);vb(e,t)})),(e=>{hb=e})((e=>{mk(`IPC socket [${e}] disconnected`);const t=sI(e);if(t){mk(`Found matching service for disconnected socket. SessionId: ${t.serviceSessionId}`);const e=av.getServiceBySessionId(t.serviceSessionId);av.setServiceStatus(t.serviceSessionId,"stopped"),e?.devMode?(t.disconnected=!0,cI()):dI(t.serviceSessionId)}})),await(e=>(e?.ipcId&&(Uv.config.id=e.ipcId),e?.ipcAppSpace&&(Uv.config.appspace=e.ipcAppSpace),new Promise((e=>{Uv.serve((()=>{ub.info("IPC Server Initiated"),Uv.server.on("data",((e,t)=>{const n=gb[t.id];n?(ub.data(`IPC Socket [${t.id}] data ${e.byteLength} bytes`),mb(e,n.activeMessage,(e=>n.activeMessage=e),(e=>{if(!e.complete)return;const n=e=>{t.write(e)};if(e.command)return ub.data(`Received command from client [${t.id}]: ${e.command}`),void(fb&&fb(t.id,e.command,n));e.klMessage&&pb&&pb({send:n,transmission:{sourceServiceId:e.sourceServiceId??-1,targetServiceId:e.targetServiceId??-1,rawMessage:e.rawMessage},json:e.klMessage.json})}))):ub.data(`Received data from unknown client [${t.id}]. Ignoring.`)})),Uv.server.on("connect",(e=>{const t=xy();ub.info(`New client connected. Registered as "${t}"`),e.id=t,gb[t]={socket:e,activeMessage:null,disconnectHandler:()=>yb(t)},e.on("close",gb[t].disconnectHandler),db&&db(t)})),Uv.server.on("disconnect",(e=>{yb(e.id)})),Uv.server.on("error",(e=>{console.log(`IPC Server Error: ${e}`)})),e()})),Uv.server.start()}))))({ipcAppSpace:n,ipcId:r}),e?.ws?.disabled||await S_(e?.ws?.port||5368);const i=e?.defaultServicesPath||x.resolve(pk,"defaultServices");gk=i;const o=process.env.DEV_SESSION_ID;av.setHubIpcConfig({recipePath:e?.recipeRootPath,appSpace:n,id:r}),av.setEnableServiceLogsConfig(!!e?.enableServiceLogs),e?.servicesInstallPath&&(e=>{Dy=e})(e.servicesInstallPath),e?.testServicesInstallPath&&(e=>{jy=e})(e.testServicesInstallPath);const s=Ry(),a=Ly(),c=async({requiredSecrets:e})=>{const t=Object.keys(e).reduce(((e,t)=>({...e,[t]:process.env[t]})),{});return t.__KEMU_USER_SERVICES_PATH=s,t.__KEMU_USER_TEST_SERVICES_PATH=a,t.__KEMU_SERVICE_URL=H_().serviceUrl,t.__KEMU_ENVIRONMENT=H_().environment,t};e?.getServiceSecretsFn?(av.setGetSecretsFunction(e.getServiceSecretsFn),F_(e.getServiceSecretsFn)):(av.setGetSecretsFunction(c),F_(c)),(e=>{W_=e})(e?.getMappedSecretsFn?e.getMappedSecretsFn:async e=>e.reduce(((e,t)=>({...e,[t.name]:[]})),{})),av.setSpawnNodeFunction(e?.spawnFn?e.spawnFn:({args:e,options:t})=>{const n={...process.env};return z("node",e||[],{...t,env:{...n,...t?.env}})}),e?.noDefaultServices||await av.loadServices(i,{fixedSession:o?parseInt(o):void 0,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,internalServices:!0,enableLogs:!0}),null!==e?.servicesInstallPath&&(await Py(s)||await y(s,{recursive:!0}),await av.loadServices(s,{internalServices:!1,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,enableLogs:!!e?.enableServiceLogs}));const l=process.env.DEV_NO_SPAWN_LIST?.split(",");await av.launchServices({noSpawningList:l||[]}),mk("Kemu Hub started"),(e?.onChooseDirectory||e?.onChooseFile)&&(e=>{pI=e})({chooseDirectory:e.onChooseDirectory,chooseFile:e.onChooseFile})},Nk=e=>{if(e===ku.WS)return{handleWebsocketConnectionEvent:Ik,handleWebsocketClientDisconnectionEvent:Ek,handleWebsocketMessage:_k,handleWebsocketClientCommand:xk,getRemoteInvoke:()=>yk}},Tk=(e=[])=>{let t;const n=new Promise((n=>{const r=()=>{if(av.getAllServices().every((e=>"running"===e.status))&&e.every((e=>"running"===av.getMatchingService(e.name,e.version)?.status)))return n();t=setTimeout(r,100)};r()}));return n.abort=()=>{t&&clearTimeout(t)},n};let Ak;const Mk=ml("run"),Pk=$u(),Dk=1e3,jk=I(process.argv.slice(2)),Rk=e=>"number"==typeof e?{type:ye.Number,value:e}:"string"==typeof e?{type:ye.String,value:e}:"boolean"==typeof e?{type:ye.Boolean,value:e}:Array.isArray(e)?{type:ye.Array,value:e}:e;global.ImageData=Z,Ee({createCanvas:(e,t)=>Q(e,t),loadImage:async e=>{const t=await X(e),n=Q(t.width,t.height).getContext("2d");n.drawImage(t,0,0,t.width,t.height);return n.getImageData(0,0,t.width,t.height)}});const Lk=(e,t)=>"*"===e?Qi.onAnyGlobalVariableChange(t):Qi.onGlobalVariableChange(e,t),Fk=(e,t,n)=>Qi.setGlobalVariable({name:e,value:t,disableChangeNotifications:n?.disableChangeNotifications||!1,disableDefineNotifications:n?.disableDefineNotifications||!1,doNotOverrideExisting:n?.doNotOverrideExisting||!1}),Uk=e=>{Qi.deleteGlobalVariable({name:e})},Wk=()=>Qi.getAllVariables(),Bk=e=>Qi.getGlobalVariable(e),Gk=e=>Wi(e),Vk=e=>async()=>{throw new Error(`${e} not implemented`)},Yk={createImageDataLike:(e,t,n,r="srgb")=>{let i;return i=e instanceof Uint8ClampedArray?e:new Uint8ClampedArray(e),{data:i,width:t,height:n,colorSpace:r,_kemuType:ye.ImageData}},loadImageFile:async e=>{const t=await X(e),n=Q(t.width,t.height).getContext("2d");n.drawImage(t,0,0,t.width,t.height);return n.getImageData(0,0,t.width,t.height)},encodeImageData:async(e,t="jpeg",n)=>{const r=Q(e.width,e.height);let i;return r.getContext("2d").putImageData(e,0,0),i="png"===t?await r.encode(t):await r.encode(t,n),i}};var Hk={start:async r=>{r=r||{};const i=r?.recipePath||jk.recipePath||process.env.KEMU_EDGE_RECIPE_PATH||process.cwd();if(!i)throw new Error("`recipePath` not provided. Please specify it in the config object, via a command line argument [--recipePath] or as an environment variable [KEMU_EDGE_RECIPE_PATH].");const{parsed:o}=await e({path:q(K(i),".env")}),s=r.apiKey||process.env.KEMU_API_KEY;if(!s)throw new Error("Missing API key. Please provide it via config.apiKey or KEMU_API_KEY environment variable.");const a=i.endsWith(".json")||i.endsWith(".kemu"),c=a?J(i):i,l=a?i:q(c,"recipe.kemu"),u=(e=>{try{return JSON.parse(e||"")}catch(e){return null}})(await t(K(l),"utf-8"));if(!u)throw new Error("Failed to parse recipe file");if(!u.author?.id)throw new Error("Missing required author ID in recipe file.");const{serviceUrl:d,apiKey:h,environment:f}=((e,t)=>{const n=Tc(e,t),r=Buffer.from(n,"base64").toString("utf8"),[i,o,s]=r.split("<@>");if(!o||!i||!s)throw new Error("Invalid API key.");return{serviceUrl:o,apiKey:i,environment:s}})(u,s);await Ga();const p={id:u.uuid||String(Date.now()),version:1,author:u.author.id};(e=>{io=e})(console);const g=Nk(Ie.WS),m=(e,t)=>{if(t)g?.handleWebsocketMessage({send:v,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg?.json});else{const t=e instanceof Buffer?e.toString():e;g?.handleWebsocketClientCommand(Dk,t)}},y=(nl={instanceServiceId:Dk,sendBuf:m,sendCmd:m,triggerOnCommand:(...e)=>rl(...e),triggerOnConnected:()=>il(),triggerOnDisconnected:()=>ol(),triggerOnMessageReceived:(...e)=>sl(...e)},nl);const v=(e,t)=>{if(t)y.triggerOnMessageReceived({send:m,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg.json});else{const t=e instanceof Buffer?e.toString():e;y.triggerOnCommand(t)}},b=Nu(),w=g.getRemoteInvoke();b.disableServiceEncoding(0,!0),w.disableServiceEncoding(Dk,!0);const S=Object.values(u.blocks[ge].gates).filter((e=>e.type===Ke.hubService&&e.state.service&&!0!==e.state.service?.webOnly)),_=S.map((e=>{const t=e.state.service;return{name:t.name,version:t.version}})),I=q(c,"services"),x=await n(I).then((()=>!0)).catch((()=>!1));await Ok({globalApiKey:h,serviceUrl:d,recipeRootPath:c,servicesInstallPath:x?q(c,"services"):null,noDefaultServices:!0,environment:f,ws:{disabled:!0},secrets:{recipeSecrets:{getRecipeDecryptedSecretsFn:async()=>({...o}),getRecipeSecretMappingsFn:Vk("getRecipeSecretMappingsFn"),addRecipeSecretFn:Vk("addRecipeSecretFn"),deleteRecipeSecretFn:Vk("deleteRecipeSecretFn")}},ipc:{appSpace:"kemu-runner.",id:p.id}}),Mk("Waiting for services to run"),await Tk(_),Mk("All services are running"),kc(Pk),Oc(),Qs((e=>{Mk("Global processing state changed: ",e)}));const k=await _c(u,"runner",p.version,p.author,gr.Desktop);return Ak=k,Ou(k),await Eu({apiKey:h,id:u.author.id}),new Promise(((e,t)=>{var n;Cu("acknowledged",(async()=>{await Pk.getServices();const{failed:n,sendToInputWidget:r,invokeRecipeLoadedWidgets:i}=await xc(k);if(n.length>0){const e=`Some widgets failed to initialize: ${n.join(", ")}`;return t(e)}await i().catch((e=>{console.error("Error invoking recipe loaded widgets: ",e)})),Mk("Recipe started"),e({sendToInputWidgetAndWaitForOutput:(e,t)=>{const n=Rk(t);return r({inputName:e,data:n,waitForOutputChild:!0})},sendToInputWidget:(e,t)=>{const n=Rk(t);return r({inputName:e,data:n,waitForOutputChild:!1})},globalVariables:{onChange:Lk,setValue:Fk,getValue:Bk,delete:Uk,getAll:Wk},status:{onChange:Gk},edgeFunctions:{register:Pa.registerFunctionHandler,unregister:Pa.unregisterFunctionHandler,clearAll:Pa.clearAllHandlers}})})),y.triggerOnConnected(),y.triggerOnCommand((n=Dk,`${we.SocketAcknowledge}${n}`))}))},terminate:async()=>{Ak&&await Ic(Ak)}};export{ye as DataType,Hk as default,Yk as utils};
|
|
12
|
+
Object.defineProperty(e,"__esModule",{value:!0}),e.randomBytes=e.wrapXOFConstructorWithOpts=e.wrapConstructorWithOpts=e.wrapConstructor=e.checkOpts=e.Hash=e.concatBytes=e.toBytes=e.utf8ToBytes=e.asyncLoop=e.nextTick=e.hexToBytes=e.bytesToHex=e.byteSwap32=e.byteSwapIfBE=e.byteSwap=e.isLE=e.rotl=e.rotr=e.createView=e.u32=e.u8=e.isBytes=void 0;const t=sx,n=xI;e.isBytes=function(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name},e.u8=e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength),e.u32=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4)),e.createView=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),e.rotr=(e,t)=>e<<32-t|e>>>t,e.rotl=(e,t)=>e<<t|e>>>32-t>>>0,e.isLE=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0],e.byteSwap=e=>e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255,e.byteSwapIfBE=e.isLE?e=>e:t=>(0,e.byteSwap)(t),e.byteSwap32=function(t){for(let n=0;n<t.length;n++)t[n]=(0,e.byteSwap)(t[n])};const r=Array.from({length:256},((e,t)=>t.toString(16).padStart(2,"0")));e.bytesToHex=function(e){(0,n.bytes)(e);let t="";for(let n=0;n<e.length;n++)t+=r[e[n]];return t};const i=48,o=57,s=65,a=70,c=97,l=102;function u(e){return e>=i&&e<=o?e-i:e>=s&&e<=a?e-(s-10):e>=c&&e<=l?e-(c-10):void 0}function d(e){if("string"!=typeof e)throw new Error("utf8ToBytes expected string, got "+typeof e);return new Uint8Array((new TextEncoder).encode(e))}function h(e){return"string"==typeof e&&(e=d(e)),(0,n.bytes)(e),e}e.hexToBytes=function(e){if("string"!=typeof e)throw new Error("hex string expected, got "+typeof e);const t=e.length,n=t/2;if(t%2)throw new Error("padded hex string expected, got unpadded hex of length "+t);const r=new Uint8Array(n);for(let t=0,i=0;t<n;t++,i+=2){const n=u(e.charCodeAt(i)),o=u(e.charCodeAt(i+1));if(void 0===n||void 0===o){const t=e[i]+e[i+1];throw new Error('hex string expected, got non-hex character "'+t+'" at index '+i)}r[t]=16*n+o}return r},e.nextTick=async()=>{},e.asyncLoop=async function(t,n,r){let i=Date.now();for(let o=0;o<t;o++){r(o);const t=Date.now()-i;t>=0&&t<n||(await(0,e.nextTick)(),i+=t)}},e.utf8ToBytes=d,e.toBytes=h,e.concatBytes=function(...e){let t=0;for(let r=0;r<e.length;r++){const i=e[r];(0,n.bytes)(i),t+=i.length}const r=new Uint8Array(t);for(let t=0,n=0;t<e.length;t++){const i=e[t];r.set(i,n),n+=i.length}return r},e.Hash=class{clone(){return this._cloneInto()}};const f={}.toString;e.checkOpts=function(e,t){if(void 0!==t&&"[object Object]"!==f.call(t))throw new Error("Options should be object or undefined");return Object.assign(e,t)},e.wrapConstructor=function(e){const t=t=>e().update(h(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t},e.wrapConstructorWithOpts=function(e){const t=(t,n)=>e(n).update(h(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t},e.wrapXOFConstructorWithOpts=function(e){const t=(t,n)=>e(n).update(h(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t},e.randomBytes=function(e=32){if(t.crypto&&"function"==typeof t.crypto.getRandomValues)return t.crypto.getRandomValues(new Uint8Array(e));throw new Error("crypto.getRandomValues must be defined")}}(ox),Object.defineProperty(II,"__esModule",{value:!0}),II.shake256=II.shake128=II.keccak_512=II.keccak_384=II.keccak_256=II.keccak_224=II.sha3_512=II.sha3_384=II.sha3_256=II.sha3_224=II.Keccak=II.keccakP=void 0;const ax=xI,cx=MI,lx=ox,ux=[],dx=[],hx=[],fx=BigInt(0),px=BigInt(1),gx=BigInt(2),mx=BigInt(7),yx=BigInt(256),vx=BigInt(113);for(let e=0,t=px,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],ux.push(2*(5*r+n)),dx.push((e+1)*(e+2)/2%64);let i=fx;for(let e=0;e<7;e++)t=(t<<px^(t>>mx)*vx)%yx,t&gx&&(i^=px<<(px<<BigInt(e))-px);hx.push(i)}const[bx,wx]=(0,cx.split)(hx,!0),Sx=(e,t,n)=>n>32?(0,cx.rotlBH)(e,t,n):(0,cx.rotlSH)(e,t,n),_x=(e,t,n)=>n>32?(0,cx.rotlBL)(e,t,n):(0,cx.rotlSL)(e,t,n);function Ix(e,t=24){const n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){const r=(t+8)%10,i=(t+2)%10,o=n[i],s=n[i+1],a=Sx(o,s,1)^n[r],c=_x(o,s,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=a,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){const r=dx[n],o=Sx(t,i,r),s=_x(t,i,r),a=ux[n];t=e[a],i=e[a+1],e[a]=o,e[a+1]=s}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=bx[r],e[1]^=wx[r]}n.fill(0)}II.keccakP=Ix;class xx extends lx.Hash{constructor(e,t,n,r=!1,i=24){if(super(),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,ax.number)(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,lx.u32)(this.state)}keccak(){lx.isLE||(0,lx.byteSwap32)(this.state32),Ix(this.state32,this.rounds),lx.isLE||(0,lx.byteSwap32)(this.state32),this.posOut=0,this.pos=0}update(e){(0,ax.exists)(this);const{blockLen:t,state:n}=this,r=(e=(0,lx.toBytes)(e)).length;for(let i=0;i<r;){const o=Math.min(t-this.pos,r-i);for(let t=0;t<o;t++)n[this.pos++]^=e[i++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:e,suffix:t,pos:n,blockLen:r}=this;e[n]^=t,128&t&&n===r-1&&this.keccak(),e[r-1]^=128,this.keccak()}writeInto(e){(0,ax.exists)(this,!1),(0,ax.bytes)(e),this.finish();const t=this.state,{blockLen:n}=this;for(let r=0,i=e.length;r<i;){this.posOut>=n&&this.keccak();const o=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+o),r),this.posOut+=o,r+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return(0,ax.number)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0,ax.output)(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:r,rounds:i,enableXOF:o}=this;return e||(e=new xx(t,n,r,o,i)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=i,e.suffix=n,e.outputLen=r,e.enableXOF=o,e.destroyed=this.destroyed,e}}II.Keccak=xx;const kx=(e,t,n)=>(0,lx.wrapConstructor)((()=>new xx(t,e,n)));II.sha3_224=kx(6,144,28),II.sha3_256=kx(6,136,32),II.sha3_384=kx(6,104,48),II.sha3_512=kx(6,72,64),II.keccak_224=kx(1,144,28),II.keccak_256=kx(1,136,32),II.keccak_384=kx(1,104,48),II.keccak_512=kx(1,72,64);const Ex=(e,t,n)=>(0,lx.wrapXOFConstructorWithOpts)(((r={})=>new xx(t,e,void 0===r.dkLen?n:r.dkLen,!0)));II.shake128=Ex(31,168,16),II.shake256=Ex(31,136,32);const{sha3_512:Cx}=II,$x=(e=4,t=Math.random)=>{let n="";for(;n.length<e;)n+=Math.floor(36*t()).toString(36);return n};function Ox(e){let t=0n;for(const n of e.values())t=(t<<8n)+BigInt(n);return t}const Nx=(e="")=>Ox(Cx(e)).toString(36).slice(1),Tx=Array.from({length:26},((e,t)=>String.fromCharCode(t+97))),Ax=({globalObj:e=(void 0!==qu?qu:"undefined"!=typeof window?window:{}),random:t=Math.random}={})=>{const n=Object.keys(e).toString(),r=n.length?n+$x(32,t):$x(32,t);return Nx(r).substring(0,32)},Mx=e=>()=>e++,Px=({random:e=Math.random,counter:t=Mx(Math.floor(476782367*e())),length:n=24,fingerprint:r=Ax({random:e})}={})=>function(){const i=(e=>Tx[Math.floor(e()*Tx.length)])(e),o=Date.now().toString(36),s=t().toString(36),a=$x(n,e);return`${i+Nx(`${o+a+s+r}`).substring(1,n)}`},Dx=Px();_I.getConstants=()=>({defaultLength:24,bigLength:32}),_I.init=Px,_I.createId=Dx,_I.bufToBigInt=Ox,_I.createCounter=Mx,_I.createFingerprint=Ax,_I.isCuid=(e,{minLength:t=2,maxLength:n=32}={})=>{const r=e.length,i=/^[0-9a-z]+$/;try{if("string"==typeof e&&r>=t&&r<=n&&i.test(e))return!0}finally{}return!1};const{createId:jx,init:Rx,getConstants:Lx,isCuid:Fx}=_I;var Ux=jx;const Wx=hd("getUniqueId"),Bx=({reply:e,sourceServiceId:t})=>(Wx(`Generating unique id for service "${t}"`),e({success:[Ux()]})),Gx=hd("getActiveServices"),Vx=async({transport:e,sourceServiceId:t,reply:n})=>{if(Gx(`Received GetServices request from ${e} [${t}]`),e===Nu.WS){let e=hv.getActiveServices();const r=dI(t);if(!r)return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});let i=[];if(r.transport===Nu.WS){if(!r?.extraInfo.user?.wsApiKey)return n({error:"Client does not have an API key",errCode:"CLIENT_NO_API_KEY"});const t=e.filter(hv.isInternalKemuService),o=e.filter((e=>e.devMode&&hv.isNotInternalKemuService(e))),s=e.filter((e=>hv.isOfficialKemuService(e)&&hv.isNotInternalKemuService(e)&&hv.isNotDevService(e))).sort(((e,t)=>e.name.localeCompare(t.name))),a=e.filter((e=>hv.isNotDevService(e)&&hv.isNotInternalKemuService(e)&&!hv.isOfficialKemuService(e))),c=await(async e=>{const{features:t}=await nI(e);return t})(r.extraInfo.user?.wsApiKey),l=c?.hub_services??0,u=s.slice(0,-1!==l?l:s.length);-1!==l&&(i=s.slice(l).map((e=>({name:e.name,version:e.version,svgIcon:e.svgIcon,color:e.color,description:e.description,title:e.title,shortTitle:e.shortTitle})))),e=[...t,...o,...u,...a]}const o=hv.getFailedServices().map((e=>({name:e.name,version:e.version,description:e.description,title:e.title,status:e.status,errorMsg:e.errorMsg,errorCode:e.errorCode,internal:hv.isInternalKemuService(e),svgIcon:e.svgIcon,color:e.color,shortTitle:e.shortTitle})));n({success:[{available:e.map((e=>{const{widgetUIContents:t,...n}=e;return{...n}})),failed:o,installed:i}]})}};let Yx="runtime",Hx=null;const zx=()=>Yx,qx=hd("getSystemInfo"),Kx=async({reply:e})=>{qx("Received GetSystemInfo request"),e({success:[await(async()=>({platformArch:Ru(),isDesktopHub:"desktop"===zx(),isRuntimeHub:"runtime"===zx(),hubVersion:My,...Hx?{updateAvailable:Hx}:{}}))()]})},Jx=hd("removeService"),Zx=async({args:e,sourceServiceId:t,reply:n})=>{const r=e[0],i=r.serviceName,o=r.version;if(!i)return n({error:"No service name provided"});if(!o)return n({error:"No service version provided"});const s=hv.getAllServiceVersions(i),a=s.find((e=>e.info.version===o));if(!a)return n({error:"Service not found"});Jx(`Removing ${s.length} service(s) with name: ${i}`);const c=a.info.publicationId;let l;if(await hv.uninstallService(a.info.name,a.info.version),c){const e=dI(t);if(!e)return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});const r=e.extraInfo.user?.wsApiKey;if(!r)return n({error:"Client does not have an API key",errCode:"CLIENT_NO_API_KEY"});Jx(`Updating license details for "${c}"`);const i=await(async e=>{const{data:t,error:n}=await eI(`${Q_()}/v1/organization/validate/uninstall_hub_service`,e,{"Content-Type":"application/json"});if(n)throw new Error(n);return t})({apiKey:r,hubService:{id:c}}).catch((e=>(Jx(`Error updating license details for "${c}": ${e}`),{error:e.message,remaining:void 0})));l=i?.remaining}n({success:[{remaining:l,service:{name:i,version:o}}]})},Xx=hd("getDecryptedEdgeApiKey"),Qx=({reply:e})=>(Xx("Getting decrypted edge API key"),e({success:[Z_().globalApiKey]})),ek=({reply:e})=>{Xx("Getting hub config");const t=Z_();return e({success:[{kemuApiKey:t.globalApiKey,environment:t.environment}]})};let tk,nk,rk,ik,ok;const sk=e=>e.transport===Nu.IPC&&(e.reply({error:"Transport is not allowed to call this function"}),!0);var ak=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretNames;if(!r||!n)return e.reply({error:"Invalid request parameters"});if(!tk)return e.reply({error:"Get recipe secrets function not set"});const i=await tk({...t[0]}),o={};for(const e of r)o[e]=e in i?i[e]:null;const s=[{secrets:o}];e.reply({success:s})},ck=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretsMap;if(sk(e))return;if(!nk)return e.reply({error:"Add recipe secret mapping function not set"});if(!r||!n)return e.reply({error:"Invalid request parameters"});const i=[{secrets:await nk({recipeUuid:n,secretsMap:r})}];e.reply({success:i})},lk=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretName;if(sk(e))return;if(!rk)return e.reply({error:"Delete recipe secret mapping function not set"});if(!r||!n)return e.reply({error:"Invalid request parameters"});const i=[{secrets:await rk({recipeUuid:n,secretName:r})}];e.reply({success:i})},uk=async e=>{const t=e.args[0].recipeUuid;if(!ik)return e.reply({error:"Get recipe secret mappings function not set"});if(!t)return e.reply({error:"Invalid request parameters"});const n=[{secrets:await ik({recipeUuid:t})}];e.reply({success:n})},dk=async e=>{const t=e.args,n=t[0].hubServiceName,r=t[0].secrets;return ok?n&&r?Array.isArray(r)?(await ok({hubServiceName:n,secrets:r}),void e.reply({success:[]})):e.reply({error:'Expected "secrets" to be an array'}):e.reply({error:"Invalid request parameters"}):e.reply({error:"Add service secret function not set"})};let hk,fk,pk;const gk=e=>e.transport===Nu.IPC&&(e.reply({error:"You are not allowed to manage secrets using this transport"}),!0);var mk=async e=>{if(e.args,gk(e))return;if(!pk)return e.reply({error:"Get hub secrets function not set"});const t=[{contexts:await pk()}];e.reply({success:t})},yk=async e=>{const t=e.args;if(gk(e))return;if(!hk)return e.reply({error:"Add hub secret function not set"});const n=[{contexts:await hk(t[0])}];e.reply({success:n})},vk=async e=>{const t=e.args;if(gk(e))return;if(!fk)return e.reply({error:"Delete hub secret function not set"});const n=[{contexts:await fk(t[0])}];e.reply({success:n})};const bk=E(Y(import.meta.url));let wk=null;const Sk=hd("hub"),_k=new function(){const e={};let t,n=console.log;const r={};let i="hub";const o={},s=e=>!o[e],a=(e,t,n,r,i,o)=>{let a=qv?new ArrayBuffer(0):Buffer.alloc(0);const c={json:{functionName:e,args:o.success?o.success:[o],messageId:t,type:o.success?"response":"error"}};return s(r)&&(a=Cb.encode(c,n,r)),i(a,{msg:c,sourceServiceId:n,targetServiceId:r})};return{setLogger:e=>{n=e},processMessage:(i,o,s,c)=>{if(!c)return!1;const l=c;if(e[l.messageId]){const t=e[l.messageId];return t&&(clearTimeout(t.timer),t.fulfilled||(t.fulfilled=!0,"response"===l.type?t.resolve(l.args):"error"===l.type&&t.reject(l.args[0])),delete e[l.messageId]),!0}if("execute"!==l.type&&n&&n(`No pending execution found for message id "${l.messageId}"`),"execute"===l.type){const e=r[l.functionName];if(e){const r=e=>{a(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,e)};if(t&&!t({args:l.args,functionName:l.functionName,transport:i,messageId:l.messageId,sourceServiceId:s.sourceServiceId,reply:r,send:o}))return n&&n(`Function "${l.functionName}" not allowed to be invoked by client [${s.sourceServiceId}]`),r({error:"Function not allowed",errCode:"FNC_NOT_ALLOWED"}),!0;e({transport:i,args:l.args,reply:r,messageId:l.messageId,sourceServiceId:s.sourceServiceId,send:o})}else{const e=`Function "${l.functionName}" not found.`;n&&n(e),a(l.functionName,l.messageId,s.targetServiceId,s.sourceServiceId,o,{error:e,errCode:"FNC_NOT_FOUND"})}return!0}return!1},execute:async(t,r,o,a,c,l)=>{if(!o){const e="No send buffer function provided.";throw n&&n(e),e}$b+=1;const u=`${i}-${$b}-exec-${t.substring(0,10)}`,d={messageId:u,functionName:t,send:o,sourceServiceId:a,targetServiceId:c,args:r||[],fulfilled:!1,resolve:()=>{},reject:()=>{}};d.promise=new Promise(((e,t)=>{d.resolve=e,d.reject=t}));let h=qv?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:t,args:r,messageId:u,type:"execute"}};s(c)&&(h=Cb.encode(f,a,c)),e[u]=d,n&&n(`Calling remote function "${t}" with message id "${u}"`);const p="true"===process.env.NO_INVOKE_TIMEOUT;return l?.async?(d.fulfilled=!0,d.resolve([void 0]),delete e[u]):0===l?.timeout||p||(d.timer=setTimeout((()=>{n&&n(`Remote function ${u} timed out`);const r=e[u];r&&!r.fulfilled&&(r.fulfilled=!0,d.reject(`Function ${t} Timed out`)),delete e[u]}),l?.timeout||3e4)),o(h,{sourceServiceId:a,targetServiceId:c,msg:f}),d.promise},sendResponse:a,registerFunction:(e,t)=>{r[e]=t},registerFunctionsMiddleware:e=>{t=e},unregisterAllFunctions:()=>{Object.keys(r).forEach((e=>{delete r[e]}))},getTransportSendFunction:t=>{const n=e[t];return n?n.send:null},setServiceName:e=>{i=e},getPendingExecutions:()=>e,rejectAllPending:t=>{Object.keys(e).forEach((n=>{const r=e[n];r&&!r.fulfilled&&(clearTimeout(r.timer),r.fulfilled=!0,r.reject(t),delete e[n])}))},broadcast:(e,t,r,o)=>{$b+=1;const a=`${i}-${$b}-multicast-${e.substring(0,10)}`;let c=qv?new ArrayBuffer(0):Buffer.alloc(0);const l={json:{functionName:e,args:t,messageId:a,type:"execute"}};let u=s(r[0].serviceId);u&&(c=Cb.encode(l,o,r[0].serviceId));for(let t=0;t<r.length;t++)try{const i=r[t];n&&n(`Broadcasting function "${e}" with message id "${a}" to client [${i.serviceId}]`),0!==t&&(u=s(i.serviceId),u&&(c=Cb.patchEncodedHeader(c,{toServiceId:i.serviceId}))),i.sendFn(c,{msg:l,sourceServiceId:o,targetServiceId:i.serviceId})}catch(e){n&&n(`Error broadcasting to client at index ${t}`)}},disableServiceEncoding:(e,t)=>{o[e]=t}}}("hub");aI=_k,_k.setLogger(Sk);const Ik={[$u.RebootToInstallUpdate]:null,[$u.GetFileContentFromCacheId]:null,[$u.SaveRecipeToFile]:null},xk=(e,t)=>{const{transmission:n}=t;if(0!==n.targetServiceId){const r=dI(n.targetServiceId);if(!r)return Sk(`Service [${e}] ${n.sourceServiceId} is sending data to an unknown service ["${n.targetServiceId}"]`),!0;r.transport,Nu.IPC;const i=t.json?.messageId;return Sk(`Forwarding message from ${n.sourceServiceId} to ${n.targetServiceId}, msgId: ${i}`),r.send(n.rawMessage,{sourceServiceId:n.sourceServiceId,targetServiceId:n.targetServiceId,msg:{json:t.json}}),!0}return!1},kk=({sourceServiceId:e,args:t})=>{const n=hv.getServiceBySessionId(e);if(n){const r=hI(n.info.name,n.info.version),i=hI(n.info.name,"*");if(!r.length&&!i.length)return;const o=[...r,...i],s={...t[0],source:{serviceName:n.info.name,serviceVersion:n.info.version,sessionId:e}};_k.broadcast($u.BroadcastEvent,[s],o,0)}},Ek=async({args:e,reply:t})=>{const n=e[0];if(!n)return Sk("Invalid config for SendToRecipe"),t({error:"Invalid config for SendToRecipe"});const r=(i=n.recipePoolId,Object.values(cI).find((e=>e.extraInfo.recipe?.poolId===i))||null);var i;if(!r)return Sk(`No client found for recipe pool id ${n.recipePoolId}`),t({error:`No client found for recipe pool id "${n.recipePoolId}"`});try{const e=_k.execute($u.SendToRecipe,[n],r.send,0,r.serviceSessionId,{async:!n.waitForResponse,timeout:n.timeout});n.waitForResponse?t({success:await e}):t({success:[]})}catch(e){return Sk(`Error sending to recipe ${n.recipePoolId}: ${e?.message||e}`),t({error:e?.message||"There was an error sending to the recipe"})}},Ck=e=>{const{send:t,transmission:n,json:r}=e;Sk(`Raw message Id received from WS: ${r?.messageId}`),xk(Nu.WS,e)||_k.processMessage(Nu.WS,t,n,r)},$k=e=>{const t=(n=e,`${Cu.SocketAcknowledge}${n}`);var n;N_(e,t)},Ok=(e,t)=>{Sk(`Received unknown command [${t}] from service ${e}`)},Nk=async e=>{const{args:t,sourceServiceId:n,send:r,reply:i}=e,o=n,s=t[0],a=s?.user?.apiKey||Z_().globalApiKey;if(!a)return Sk(`Received ACK from WS service ${n} but no API key was provided`),i({error:"No API key was provided",errCode:"MISSING_API_KEY"});s.user?.id&&Hy.setGlobalUserId(s.user?.id),await pI({serviceSessionId:n,transport:Nu.WS,send:r,terminateFn:()=>{A_(n)},extraInfo:{websocketId:o,recipe:s.recipe,user:{wsApiKey:a,userEmail:s.user?.email,userId:s.user?.id}}}),i({success:[]})},Tk=e=>{Sk(`WS Client ${e} disconnected`),mI(e)},Ak=e=>1===e.sourceServiceId?e.functionName===$u.GetFileContentFromCacheId:e.functionName===$u.SocketAckResponse||e.functionName===$u.ServiceManifest||e.functionName===$u.SubscribeToService||(!!dI(e.sourceServiceId)||(e.reply({error:`Session id "${e.sourceServiceId}" not found. Please acknowledge the session first.`}),!1)),Mk=async({sourceServiceId:e,args:t,transport:n,send:r})=>{if(n!==Nu.IPC){var i;Sk(`Received manifest from non IPC service ${e}.`)}else{const n=t[0];if(n.devMode){const t=hv.getMatchingDevService(n.name,n.version,"stopped");if(t){Sk(`Found matching previous service ${t.info.name} (${t.info.version}). Reactivating previous client with session id ${t.info.sessionId}`);const o=dI(t.info.sessionId);if(!o)return void Sk(`Could not find previous client instance for ${t.info.name} (${t.info.version}). Aborting manifest injection`);o.send=r,cI[i=e]?delete cI[i]:sI(`Could not find source client with session id ${i}`),xb(e,t.info.sessionId);const s=await Ly(n,n.path);t.info={...t.info,...s},Sk(`Updating manifest for dev service ${t.info.sessionId}`),hv.setServiceManifest(t.info.sessionId,s,"running"),Sk(`Asking service ${e} to assume previous session id ${t.info.sessionId}`),Ib(t.info.sessionId,(e=>`${Cu.AssumeSession}${e}`)(t.info.sessionId)),(e=>{const t=cI[e];t?t.isDevClient?(t.disconnected=!1,t.transport===Nu.IPC&&(fI(),gI(e))):sI(`Client with session id ${e} is not a dev client`):sI(`Could not find source client with session id ${e}`)})(t.info.sessionId)}else{hv.addDevService(e,n,"running");const t=dI(e);t?t.isDevClient=!0:pI({serviceSessionId:e,transport:Nu.IPC,send:r,extraInfo:{ipcSocketId:e},isDevClient:!0})}return}Sk(`Received manifest from non dev service ${e} [${n.name}@(${n.version})]. Ignoring...`)}};var Pk=async e=>{var t;Sk("Starting Kemu Hub..."),t=e.desktopMode?"desktop":"runtime",Yx=t;const n=e?.ipc?.appSpace||"kemu.",r=e?.ipc?.id||"widgets";if(!e.serviceUrl)throw new Error("Missing service url, please set the `apiUrl` option.");e.errorTracker&&Hy.setTracker(e.errorTracker),(e=>{J_={...J_,...e}})({serviceUrl:e.serviceUrl,globalApiKey:e.globalApiKey,environment:e.environment}),_k.registerFunctionsMiddleware(Ak),e.secrets?.serviceSecrets&&(e=>{ok=e})(e.secrets.serviceSecrets.addServiceSecretFn),e.secrets?.recipeSecrets&&((e=>{tk=e})(e.secrets.recipeSecrets.getRecipeDecryptedSecretsFn),(e=>{nk=e})(e.secrets.recipeSecrets.addRecipeSecretFn),(e=>{rk=e})(e.secrets.recipeSecrets.deleteRecipeSecretFn),(e=>{ik=e})(e.secrets.recipeSecrets.getRecipeSecretMappingsFn)),e.secrets?.hubSecrets&&((e=>{pk=e})(e.secrets.hubSecrets.getHubSecretsFn),(e=>{hk=e})(e.secrets.hubSecrets.addHubSecretsFn),(e=>{fk=e})(e.secrets.hubSecrets.deleteHubSecretFn)),_k.registerFunction($u.GetServiceContents,K_),_k.registerFunction($u.GetServices,Vx),_k.registerFunction($u.GetSystemInfo,Kx),_k.registerFunction($u.ShowSecretsConfigScreen,(async({args:t,reply:n})=>{const[{name:r,version:i}]=t;e?.onShowSecretsScreen?(await e.onShowSecretsScreen(r,i),n({success:[]})):n({error:"This hub does not support showing secrets configuration screens",errCode:"GUI_NOT_SUPPORTED"})})),_k.registerFunction($u.UnsubscribeFromService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===Nu.WS){const[e]=n,i=dI(r);if(!i)return t({error:`Session id "${r}" not found`});Sk(`Service ${r} unsubscribing from "${e.targetService.serviceName} (${e.targetService.version})"`),t({success:[]}),i?.removeSubscription({serviceName:e.targetService.serviceName,version:e.targetService.version})}})),_k.registerFunction($u.SubscribeToService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===Nu.WS){const[e]=n,i=dI(r),o=e.targetService;if(!i)return t({error:`Session id "${r}" not found`});if(Sk(`Service ${r} subscribing to "${o.serviceName} (${o.version})"`),"hub"===o.serviceName)return i.addSubscription(o),void t({success:[]});if(!i.addSubscription(o))return Sk(`Service ${r} already subscribed to "${o.serviceName} (${o.version})", ignoring request.`),t({success:[]});const s=hv.getMatchingService(o.serviceName,o.version);if(!s)return Sk(`Service ${o.serviceName} ${o.version} not active yet`),t({success:[]});if(!s.info.eventEmitter)return Sk(`Service ${o.serviceName} ${o.version} does not have an event emitter, removing subscription`),i.removeSubscription(o),t({error:`Service "${o.serviceName} (${o.version})" does not produce events`});const a=dI(s.info.sessionId);return a?.extraInfo.ipcSocketId&&(Sk(`Sending Broadcast START command to service ${s.info.sessionId}`),Ib(a?.extraInfo.ipcSocketId,Cu.BroadcastStart)),t({success:[]})}})),_k.registerFunction("stopService",P_),_k.registerFunction("removeService",j_),_k.registerFunction("launchService",L_),_k.registerFunction("getMatchingServices",U_),_k.registerFunction("getSecretsValues",G_),_k.registerFunction($u.GetMappedSecrets,z_),_k.registerFunction($u.BroadcastEvent,kk),_k.registerFunction($u.ServiceManifest,Mk),_k.registerFunction($u.ChooseDirectoryDialog,wI),_k.registerFunction($u.ChooseFileDialog,SI),_k.registerFunction($u.GetUniqueId,Bx),_k.registerFunction($u.SendToRecipe,Ek),_k.registerFunction($u.GetDecryptedEdgeApiKey,Qx),_k.registerFunction($u.GetHubConfig,ek),_k.registerFunction($u.SocketAckResponse,Nk),_k.registerFunction($u.UninstallService,Zx),_k.registerFunction($u.GetRecipeDecryptedSecretsValues,ak),_k.registerFunction($u.GetRecipeSecretMappings,uk),_k.registerFunction($u.AddRecipeSecretMapping,ck),_k.registerFunction($u.DeleteRecipeSecretMapping,lk),_k.registerFunction($u.GetHubSecrets,mk),_k.registerFunction($u.AddHubSecrets,yk),_k.registerFunction($u.DeleteHubSecret,vk),_k.registerFunction($u.AddServiceSecret,dk),Object.entries(Ik).forEach((([e,t])=>{t?_k.registerFunction(e,t):(Sk(`Skipping registration of "${e}" because it's not implemented`),_k.registerFunction(e,(({reply:t})=>{t({error:`This hub does not support "${e}"`,errCode:"FUNCTION_NOT_SUPPORTED"})})))})),(e=>{bb=e})((e=>{const{send:t,transmission:n,json:r}=e;Sk(`Raw message Id received from IPC: ${r?.messageId}`),xk(Nu.IPC,e)||_k.processMessage(Nu.IPC,t,n,r)})),T_(Ck),C_($k),O_(Ok),$_(Tk),(e=>{vb=e})(vI),(e=>{mb=e})((e=>{const t=(e=>`${Cu.IpcAcknowledge}${e}`)(e);Ib(e,t)})),(e=>{yb=e})((e=>{Sk(`IPC socket [${e}] disconnected`);const t=dI(e);if(t){Sk(`Found matching service for disconnected socket. SessionId: ${t.serviceSessionId}`);const e=hv.getServiceBySessionId(t.serviceSessionId);hv.setServiceStatus(t.serviceSessionId,"stopped"),e?.devMode?(t.disconnected=!0,fI()):mI(t.serviceSessionId)}})),await(e=>(e?.ipcId&&(Yv.config.id=e.ipcId),e?.ipcAppSpace&&(Yv.config.appspace=e.ipcAppSpace),new Promise((e=>{Yv.serve((()=>{gb.info("IPC Server Initiated"),Yv.server.on("data",((e,t)=>{const n=wb[t.id];n?(gb.data(`IPC Socket [${t.id}] data ${e.byteLength} bytes`),Sb(e,n.activeMessage,(e=>n.activeMessage=e),(e=>{if(!e.complete)return;const n=e=>{t.write(e)};if(e.command)return gb.data(`Received command from client [${t.id}]: ${e.command}`),void(vb&&vb(t.id,e.command,n));e.klMessage&&bb&&bb({send:n,transmission:{sourceServiceId:e.sourceServiceId??-1,targetServiceId:e.targetServiceId??-1,rawMessage:e.rawMessage},json:e.klMessage.json})}))):gb.data(`Received data from unknown client [${t.id}]. Ignoring.`)})),Yv.server.on("connect",(e=>{const t=Oy();gb.info(`New client connected. Registered as "${t}"`),e.id=t,wb[t]={socket:e,activeMessage:null,disconnectHandler:()=>_b(t)},e.on("close",wb[t].disconnectHandler),mb&&mb(t)})),Yv.server.on("disconnect",(e=>{_b(e.id)})),Yv.server.on("error",(e=>{console.log(`IPC Server Error: ${e}`)})),e()})),Yv.server.start()}))))({ipcAppSpace:n,ipcId:r}),e?.ws?.disabled||await E_(e?.ws?.port||5368);const i=e?.defaultServicesPath||x.resolve(bk,"defaultServices");wk=i;const o=process.env.DEV_SESSION_ID;hv.setHubIpcConfig({recipePath:e?.recipeRootPath,appSpace:n,id:r}),hv.setEnableServiceLogsConfig(!!e?.enableServiceLogs),e?.servicesInstallPath&&(e=>{Uy=e})(e.servicesInstallPath),e?.testServicesInstallPath&&(e=>{Wy=e})(e.testServicesInstallPath);const s=By(),a=Gy(),c=async({requiredSecrets:e})=>{const t=Object.keys(e).reduce(((e,t)=>({...e,[t]:process.env[t]})),{});return t.__KEMU_USER_SERVICES_PATH=s,t.__KEMU_USER_TEST_SERVICES_PATH=a,t.__KEMU_SERVICE_URL=Z_().serviceUrl,t.__KEMU_ENVIRONMENT=Z_().environment,t};e?.getServiceSecretsFn?(hv.setGetSecretsFunction(e.getServiceSecretsFn),V_(e.getServiceSecretsFn)):(hv.setGetSecretsFunction(c),V_(c)),(e=>{H_=e})(e?.getMappedSecretsFn?e.getMappedSecretsFn:async e=>e.reduce(((e,t)=>({...e,[t.name]:[]})),{})),hv.setSpawnNodeFunction(e?.spawnFn?e.spawnFn:({args:e,options:t})=>{const n={...process.env};return z("node",e||[],{...t,env:{...n,...t?.env}})}),e?.noDefaultServices||await hv.loadServices(i,{fixedSession:o?parseInt(o):void 0,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,internalServices:!0,enableLogs:!0}),null!==e?.servicesInstallPath&&(await Fy(s)||await y(s,{recursive:!0}),await hv.loadServices(s,{internalServices:!1,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,enableLogs:!!e?.enableServiceLogs}));const l=process.env.DEV_NO_SPAWN_LIST?.split(",");await hv.launchServices({noSpawningList:l||[]}),Sk("Kemu Hub started"),(e?.onChooseDirectory||e?.onChooseFile)&&(e=>{bI=e})({chooseDirectory:e.onChooseDirectory,chooseFile:e.onChooseFile})},Dk=e=>{if(e===Nu.WS)return{handleWebsocketConnectionEvent:$k,handleWebsocketClientDisconnectionEvent:Tk,handleWebsocketMessage:Ck,handleWebsocketClientCommand:Ok,getRemoteInvoke:()=>_k}},jk=(e=[])=>{let t;const n=new Promise((n=>{const r=()=>{if(hv.getAllServices().every((e=>"running"===e.status))&&e.every((e=>"running"===hv.getMatchingService(e.name,e.version)?.status)))return n();t=setTimeout(r,100)};r()}));return n.abort=()=>{t&&clearTimeout(t)},n};let Rk;const Lk=Sl("run"),Fk=Mu(),Uk=1e3,Wk=I(process.argv.slice(2)),Bk=e=>"number"==typeof e?{type:ye.Number,value:e}:"string"==typeof e?{type:ye.String,value:e}:"boolean"==typeof e?{type:ye.Boolean,value:e}:Array.isArray(e)?{type:ye.Array,value:e}:e;global.ImageData=Z,Ee({createCanvas:(e,t)=>Q(e,t),loadImage:async e=>{const t=await X(e),n=Q(t.width,t.height).getContext("2d");n.drawImage(t,0,0,t.width,t.height);return n.getImageData(0,0,t.width,t.height)}});const Gk=(e,t)=>"*"===e?ro.onAnyGlobalVariableChange(t):ro.onGlobalVariableChange(e,t),Vk=(e,t,n)=>ro.setGlobalVariable({name:e,value:t,disableChangeNotifications:n?.disableChangeNotifications||!1,disableDefineNotifications:n?.disableDefineNotifications||!1,doNotOverrideExisting:n?.doNotOverrideExisting||!1}),Yk=e=>{ro.deleteGlobalVariable({name:e})},Hk=()=>ro.getAllVariables(),zk=e=>ro.getGlobalVariable(e),qk=e=>Wi(e),Kk=e=>async()=>{throw new Error(`${e} not implemented`)},Jk={createImageDataLike:(e,t,n,r="srgb")=>{let i;return i=e instanceof Uint8ClampedArray?e:new Uint8ClampedArray(e),{data:i,width:t,height:n,colorSpace:r,_kemuType:ye.ImageData}},loadImageFile:async e=>{const t=await X(e),n=Q(t.width,t.height).getContext("2d");n.drawImage(t,0,0,t.width,t.height);return n.getImageData(0,0,t.width,t.height)},encodeImageData:async(e,t="jpeg",n)=>{const r=Q(e.width,e.height);let i;return r.getContext("2d").putImageData(e,0,0),i="png"===t?await r.encode(t):await r.encode(t,n),i}};var Zk={start:async r=>{r=r||{};const i=r?.recipePath||Wk.recipePath||process.env.KEMU_EDGE_RECIPE_PATH||process.cwd();if(!i)throw new Error("`recipePath` not provided. Please specify it in the config object, via a command line argument [--recipePath] or as an environment variable [KEMU_EDGE_RECIPE_PATH].");const{parsed:o}=await e({path:q(K(i),".env")}),s=r.apiKey||process.env.KEMU_API_KEY;if(!s)throw new Error("Missing API key. Please provide it via config.apiKey or KEMU_API_KEY environment variable.");const a=i.endsWith(".json")||i.endsWith(".kemu"),c=a?J(i):i,l=a?i:q(c,"recipe.kemu"),u=(e=>{try{return JSON.parse(e||"")}catch(e){return null}})(await t(K(l),"utf-8"));if(!u)throw new Error("Failed to parse recipe file");if(!u.author?.id)throw new Error("Missing required author ID in recipe file.");const{serviceUrl:d,apiKey:h,environment:f}=((e,t)=>{const n=jc(e,t),r=Buffer.from(n,"base64").toString("utf8"),[i,o,s]=r.split("<@>");if(!o||!i||!s)throw new Error("Invalid API key.");return{serviceUrl:o,apiKey:i,environment:s}})(u,s);await qa();const p={id:u.uuid||String(Date.now()),version:1,author:u.author.id};(e=>{co=e})(console);const g=Dk(Ie.WS),m=(e,t)=>{if(t)g?.handleWebsocketMessage({send:v,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg?.json});else{const t=e instanceof Buffer?e.toString():e;g?.handleWebsocketClientCommand(Uk,t)}},y=(al={instanceServiceId:Uk,sendBuf:m,sendCmd:m,triggerOnCommand:(...e)=>cl(...e),triggerOnConnected:()=>ll(),triggerOnDisconnected:()=>ul(),triggerOnMessageReceived:(...e)=>dl(...e)},al);const v=(e,t)=>{if(t)y.triggerOnMessageReceived({send:m,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg.json});else{const t=e instanceof Buffer?e.toString():e;y.triggerOnCommand(t)}},b=Du(),w=g.getRemoteInvoke();b.disableServiceEncoding(0,!0),w.disableServiceEncoding(Uk,!0);const S=Object.values(u.blocks[ge].gates).filter((e=>e.type===Ke.hubService&&e.state.service&&!0!==e.state.service?.webOnly)),_=S.map((e=>{const t=e.state.service;return{name:t.name,version:t.version}})),I=q(c,"services"),x=await n(I).then((()=>!0)).catch((()=>!1));await Pk({globalApiKey:h,serviceUrl:d,recipeRootPath:c,servicesInstallPath:x?q(c,"services"):null,noDefaultServices:!0,environment:f,ws:{disabled:!0},secrets:{recipeSecrets:{getRecipeDecryptedSecretsFn:async()=>({...o}),getRecipeSecretMappingsFn:Kk("getRecipeSecretMappingsFn"),addRecipeSecretFn:Kk("addRecipeSecretFn"),deleteRecipeSecretFn:Kk("deleteRecipeSecretFn")}},ipc:{appSpace:"kemu-runner.",id:p.id}}),Lk("Waiting for services to run"),await jk(_),Lk("All services are running"),Nc(Fk),Pc(),ra((e=>{Lk("Global processing state changed: ",e)}));const k=await Cc(u,"runner",p.version,p.author,gr.Desktop);return Rk=k,Pu(k),await Tu({apiKey:h,id:u.author.id}),new Promise(((e,t)=>{var n;Au("acknowledged",(async()=>{await Fk.getServices();const{failed:n,sendToInputWidget:r,invokeRecipeLoadedWidgets:i}=await Oc(k);if(n.length>0){const e=`Some widgets failed to initialize: ${n.join(", ")}`;return t(e)}await i().catch((e=>{console.error("Error invoking recipe loaded widgets: ",e)})),Lk("Recipe started"),e({sendToInputWidgetAndWaitForOutput:(e,t)=>{const n=Bk(t);return r({inputName:e,data:n,waitForOutputChild:!0})},sendToInputWidget:(e,t)=>{const n=Bk(t);return r({inputName:e,data:n,waitForOutputChild:!1})},globalVariables:{onChange:Gk,setValue:Vk,getValue:zk,delete:Yk,getAll:Hk},status:{onChange:qk},edgeFunctions:{register:Fa.registerFunctionHandler,unregister:Fa.unregisterFunctionHandler,clearAll:Fa.clearAllHandlers}})})),y.triggerOnConnected(),y.triggerOnCommand((n=Uk,`${we.SocketAcknowledge}${n}`))}))},terminate:async()=>{Rk&&await $c(Rk)}};export{ye as DataType,Zk as default,Jk as utils};
|