@kemu-io/edge-runtime 1.12.3 → 1.13.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/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"crypto-js";import{z as s}from"zod";import a from"emittery";import{Parser as c}from"expr-eval";import{satisfies as l}from"compare-versions";import u from"debug";import d,{mkdir as h,access as f,constants as p,readdir as g,rm as m,readFile as y}from"fs/promises";import v from"minimist";import b,{join as w,dirname as S,resolve as _}from"path";import"node-ipc";import*as I from"fs";import x from"fs";import k from"tty";import E,{homedir as C,platform as $}from"os";import N from"stream";import O from"buffer";import T from"events";import A from"zlib";import P from"string_decoder";import M from"http";import D from"https";import R,{createHash as j}from"crypto";import L from"net";import F from"tls";import U from"dgram";import B,{fileURLToPath as W}from"url";import G from"node:os";import{spawn as V}from"child_process";import{dirname as H,join as Y,resolve as z}from"node:path";import{ImageData as q,loadImage as K,createCanvas as J}from"@napi-rs/canvas";import{spawn as Z}from"node:child_process";var X;!function(e){e.STARTING="STARTING",e.PENDING="PENDING",e.RUNNING="RUNNING",e.PAUSED="PAUSED",e.DRAINING="DRAINING",e.STOPPED="STOPPED",e.ERROR="ERROR"}(X||(X={}));const Q=e=>JSON.parse(JSON.stringify(e)),ee="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,te="object"==typeof self&&self.constructor&&"DedicatedWorkerGlobalScope"===self.constructor.name,ne="undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node,re={};let ie=0,oe="";const se=e=>re[e]?re[e]:null,ae=(e,t)=>{const n=se(e);if(!n)return n;return n.blocks[t]||null},ce=e=>{const{recipeId:t,widgetId:n}=e,r=se(t);if(!r)return null;for(const e in r.blocks){const t=r.blocks[e].gates[n];if(t)return t}return null},le=(e,t,n)=>{const r=ae(e,t);if(!r)return r;return r.gates[n]},ue=()=>{const e=Date.now();if(e!==ie){const t=new Date;ie=e,oe=t.toJSON()}return oe},de=e=>{const t=se(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}},he="interrupt_port",fe="UI:",pe="default";var ge,me,ye,ve,be,we,Se,_e;let Ie;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(ge||(ge={})),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"}(me||(me={})),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"}(ye||(ye={})),function(e){e.Javascript="js",e.Python="py",e.Executable="exe"}(ve||(ve={})),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:"}(be||(be={})),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.RestartApp="restartApp",e.ShowHubScreen="showHubScreen",e.ExchangeSessionTokenForApiKey="exchangeSessionTokenForApiKey",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"}(we||(we={})),function(e){e.SetDependencyPaths="setDependencyPaths",e.GetCurrentDependencyPaths="getCurrentDependencyPaths",e.RemoveDependencyPaths="removeDependencyPaths",e.ParseStringExpression="parseStringExpression",e.GetGlobalVariableNames="getGlobalVariableNames",e.GetGlobalVariableValues="getGlobalVariableValues",e.SetGlobalVariableValues="setGlobalVariableValues"}(Se||(Se={})),function(e){e.IPC="ipc",e.WS="ws"}(_e||(_e={}));const xe=()=>{if(!Ie)throw new Error("CanvasManager not set");return Ie},ke=e=>{Ie=e},Ee=(e,t)=>xe().createCanvas(e,t),Ce=e=>ee?e.getContext("2d",{willReadFrequently:!0}):e.getContext("2d"),$e=e=>xe().loadImage(e),Ne="-",Oe=`inner${Ne}`,Te=`outer${Ne}`,Ae=`${Te}input${Ne}`,Pe=`${Te}output${Ne}`,Me=`${Oe}input${Ne}`,De=`${Oe}output${Ne}`,Re=e=>{if(ne){const t=Buffer.from(e,"base64"),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}{if("function"==typeof Uint8Array.fromBase64){const t=Uint8Array.fromBase64(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);const r=new ArrayBuffer(n.byteLength);return new Uint8Array(r).set(n),r}},je=e=>e===he,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,Be=e=>e&&"string"==typeof e.format&&e.data&&e.data instanceof ArrayBuffer,We=e=>"number"==typeof e?me.Number:"string"==typeof e?me.String:"boolean"==typeof e?me.Boolean:Array.isArray(e)?me.Array:Le(e)?me.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?me.AudioBuffer:e&&void 0!==e.byteLength?me.ArrayBuffer:Fe(e)?me.Rect:e&&void 0!==e.x&&void 0!==e.y&&"number"==typeof e.x&&"number"==typeof e.y?me.Point:Be(e)?me.BinaryFile:me.JsonObj,Ge=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},Ve=(e,t,n)=>"inner"===e?"input"===t?`${Me}${n}`:`${De}${n}`:"input"===t?`${Ae}${n}`:`${Pe}${n}`,He=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 $e(e.data)}},ze=e=>{const t=(e=>{const t=Ee(e.width,e.height),n=Ce(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]},qe=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 $e(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=Ee(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=Ee(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 Ke,Je;!function(e){e.Action="action",e.CustomInput="customInput"}(Ke||(Ke={})),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",e.fieldValue="fieldValue",e.dataToBinaryFile="dataToBinaryFile",e.eventCache="eventCache"}(Je||(Je={}));const Ze={};let Xe,Qe=()=>0;const et=async e=>{const t=Ze[e],n={name:he,type:me.Boolean};if(t){const r={name:t.portName},i=t.data||{type:me.Boolean,value:!0};if(!Qe)throw new Error("consumeEventCounter is not set");const o=Qe();Xe?(await Xe({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&&tt(e)):console.warn("Interrupt service has not been initialized")}},tt=e=>{const t=Ze[e];return!!t&&(t.timerRef&&("interval"===t.type?clearInterval(t.timerRef):"timeout"===t.type&&clearTimeout(t.timerRef)),delete Ze[e],!0)};var nt={interruptHandler:et,createInterrupt:e=>{const{type:t,recipePoolId:n,thingId:i,targetWidgetId:o,sourceWidgetId:s,portName:a,config:c,data:l,customId:u}=e;if(u&&Ze[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(Ze[d]={data:l,portName:a,recipePoolId:n,targetWidgetId:o,sourceWidgetId:s,thingId:i,type:t},"interval"===t)Ze[d].timerRef=setInterval((async()=>await et(d)),c.interval);else{if("timeout"!==t)throw new Error(`Invalid interrupt type '${t}'`);Ze[d].timerRef=setTimeout((async()=>await et(d)),c.timeout)}return d},destroyInterrupt:tt,destroyAllInterrupts:()=>{Object.keys(Ze).forEach(tt)},setInvokeChildGateCb:e=>{Xe=e},setConsumeEventCounterCb:e=>{Qe=e}};const rt=[10001,"Invalid `sourcePort` parameter"],it=[10002,"The gate [%s] does not exist. Have you called `loadWidgets` yet?"],ot=(e,...t)=>JSON.stringify({code:e[0],message:t[0]?i.format(e[1],...t):e[1].replace(/ \[%s\]/g,"")});let st=0,at={};var ct=(e,t)=>{const n=`${e}-${++st}`,r={event:t,eventKey:n,widgetId:e,resolve:()=>{},reject:()=>{}},i=new Promise(((e,t)=>{r.resolve=e,r.reject=t}));return r.promise=i,at[n]=r,r},lt=(e,t)=>{const n=at[e];n&&(delete at[e],n.resolve(t))};const ut=()=>({inputName:"",dataType:me.Anything}),dt="output",ht={processEvent:async(e,t)=>{const n=t.getState(),r={...ut(),...n};if(e.type!==r.dataType&&r.dataType!==me.Anything)return void console.error(`Invalid data type: ${e.type} for input: ${r.inputName}. Expected: ${r.dataType}`);const i=t.waitForOutputChild,o=i?ct(t.id,e):void 0,s=i?{eventKey:o?.eventKey}:void 0;if(await t.nextWidget(dt,{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={...ut(),...e};return[{name:dt,type:t.dataType}]},getInputNames:()=>[]},ft=Object.freeze({in:"in",reset:"reset",increment:"increment"}),pt="output";var gt={onParentEvent:async(e,t,n,r)=>{if(!e)throw new Error(ot(rt));const i={currentValue:0,increment:1,...r.getState()};let o=i.increment,s=i.currentValue;const a=await r.getParentAtPort(ft.increment);if(t.name===ft.increment)return void(n.data.type===me.Number&&r.setState({...i,increment:Number(n.data.value)}));if(a){const e=a.getValue();null!==e&&(o=e)}if(t.name===ft.reset)return r.setState({...i,currentValue:0});s+=o,r.setState({currentValue:s,increment:o});const c={type:me.Number,value:s};return r.nextGate(pt,c)},getInputNames:()=>[{name:ft.in,type:me.Anything},{name:ft.reset,type:me.Anything},{name:ft.increment,type:me.Number}],getOutputNames:()=>[{name:pt,type:me.Number}]};const mt=Object.freeze({in:"in",reset:"reset"}),yt="output";var vt={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===mt.reset?r.setState({...i,updatedAt:o,elapsed:0}):(r.setState({updatedAt:o,elapsed:s}),r.nextGate(yt,{type:me.Number,value:s}))},getInputNames:()=>[{name:mt.in,type:me.Anything},{name:mt.reset,type:me.Anything}],getOutputNames:()=>[{name:yt,type:me.Number}]};const bt=Object.freeze({data:"data",evaluation:"evaluation"}),wt="then",St="else";var _t={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===me.Number||n.data.type===me.String||n.data.type===me.Boolean||n.data.type===me.Anything&&s||n.data.type===me.Anything&&a)){let e=!1;return("Equal"===i.condition&&(n.data.value==i.value||n.data.type===me.Boolean&&n.data.value.toString()===i.value.toString())||"Not Equal"===i.condition&&(n.data.value!==i.value||n.data.type===me.Boolean&&n.data.value!==i.value.toString())||"Greater"===i.condition&&n.data.type===me.Number&&n.data.value>Number(i.value)||"Less"===i.condition&&n.data.type===me.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(wt,n.data):r.nextGate(St,n.data)}if(t.name===bt.evaluation&&(n.data.type===me.Number||n.data.type===me.String||n.data.type===me.Boolean||n.data.type===me.Anything&&(s||a))&&(i.$lastValue=n.data.value,i.$lastInputDataType=n.data.type,r.setState({...i})),t.name===bt.data){let e=!1;return("Equal"===i.condition&&(i.$lastValue==i.value||i.$lastInputDataType===me.Boolean&&i.$lastValue?.toString()===i.value.toString())||"Not Equal"===i.condition&&(i.$lastValue!==i.value||i.$lastInputDataType===me.Boolean&&i.$lastValue!==i.value.toString())||"Greater"===i.condition&&i.$lastInputDataType===me.Number&&Number(i.$lastValue)>Number(i.value)||"Less"===i.condition&&i.$lastInputDataType===me.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(wt,n.data):r.nextGate(St,n.data)}},getInputNames:e=>e.useDataPort?[{name:bt.data,type:me.Anything,triggerPort:!0},{name:bt.evaluation,type:[me.Number,me.String,me.Boolean]}]:[{name:"in",type:[me.Number,me.String,me.Boolean]}],getOutputNames:e=>e.$lastOutputDataType?[{name:wt,type:e.$lastOutputDataType},{name:St,type:e.$lastOutputDataType}]:[{name:wt,type:[me.Number,me.String]},{name:St,type:[me.Number,me.String]}]};const It=Object.freeze({in:"in",reset:"reset"}),xt="out",kt="skipped";var Et={onParentEvent:async(e,t,n,r)=>{const i={totalCalls:0,callsLimit:1,...r.getState()};return t.name===It.reset?r.setState({...i,totalCalls:0}):(i.totalCalls=i.totalCalls+1,i.totalCalls>i.callsLimit?(i.totalCalls=0,r.setState(i),r.nextWidget(xt,n.data)):(n.data.type!==i.$$lastDetectedType&&(i.$$lastDetectedType=n.data.type),r.setState(i),r.nextWidget(kt,n.data)))},getInputNames:()=>[{name:It.in,type:me.Anything},{name:It.reset,type:me.Anything}],getOutputNames:e=>[{name:xt,type:e.$$lastDetectedType??me.Anything},{name:kt,type:e.$$lastDetectedType??me.Anything}]};const Ct=Object.freeze({in:"in"}),$t="then",Nt="else";var Ot={onParentEvent:async(e,t,n,r)=>{const i={min:1,max:10,...r.getState()};if(n.data.type===me.Number)return n.data.value>=i.min&&n.data.value<=i.max?r.nextGate($t,n.data):r.nextGate(Nt,n.data)},getInputNames:()=>[{name:Ct.in,type:me.Number}],getOutputNames:()=>[{name:$t,type:me.Number},{name:Nt,type:me.Number}]};const Tt=Object.freeze({in:"in"}),At="out";var Pt={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===me.Number||n.data.type===me.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(At,{type:me.Number,value:Number(e)})}},getInputNames:()=>[{name:Tt.in,type:me.Number}],getOutputNames:()=>[{name:At,type:me.Number}]};const Mt=Object.freeze({in:"in"}),Dt="out",Rt=["image/png","image/jpeg","image/jpg","image/gif","image/webp","image/bmp","image/svg+xml"];var jt={onParentEvent:async(e,t,n,r)=>{const i={convertTo:"Integer",floatPlaces:2,...r.getState()};let o=n.data.value;if("ImageData"===i.convertTo){if(!Be(n.data.value))throw new Error("Invalid data type, expected a BinaryFile type");const e=n.data.value;if(!Rt.includes(e.format))throw new Error(`Unsupported image format: ${e.format}. Supported formats are: ${Rt.join(", ")}.`);const t=await $e(e);return r.nextGate(Dt,{type:me.ImageData,value:t})}if(n.data.type===me.Number||n.data.type===me.Anything||n.data.type===me.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(Dt,{type:"String"===i.convertTo?me.String:me.Number,value:o})}},getInputNames:()=>[{name:Mt.in,type:me.Number}],getOutputNames:e=>{const t="String"===e?.convertTo?me.String:"ImageData"===e?.convertTo?me.ImageData:me.Number;return[{name:Dt,type:t}]}};const Lt=Object.freeze({in:"in"}),Ft="out";var Ut={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(Ft,{type:me.Number,value:i.currentValue})},getInputNames:()=>[{name:Lt.in,type:me.Anything}],getOutputNames:()=>[{name:Ft,type:me.Number}]};const Bt=Object.freeze({in:"in",reset:"reset"}),Wt="out",Gt="skipped";var Vt={onParentEvent:async(e,t,n,r)=>{const i={lastCalledAt:0,delayMs:500},o={lastCalledAt:0,delayMs:500,...r.getState()};if(t.name===Bt.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(Wt,n.data)):(n.data.type!==o.$$lastDetectedType&&(o.$$lastDetectedType=n.data.type),r.setState(o),r.nextWidget(Gt,n.data))},getInputNames:()=>[{name:Bt.in,type:me.Anything},{name:Bt.reset,type:me.Anything}],getOutputNames:e=>[{name:Wt,type:e.$$lastDetectedType??me.Anything},{name:Gt,type:e.$$lastDetectedType??me.Anything}]};const Ht="in";var Yt={onParentEvent:async()=>{},getInputNames:()=>[{name:Ht,type:[me.ImageData,me.Number]}],getOutputNames:()=>[]};const zt=()=>({properties:[{label:"property1",name:"property1"}],detectedProperties:{}}),qt=(e,t)=>t.split(".").reduce(((e,t)=>null!=e?e[t]:e),e);var Kt={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===me.JsonObj||n.data.type===me.Rect||n.data.type===me.Point||n.data.type===me.BinaryFile||n.data.type===me.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===me.JsonObj||n===me.Rect||n===me.Point||n===me.Array;i.detectedProperties[t]={type:n,...r?{shape:Ge(o[t])}:void 0},e=!0}}if(s&&void 0===i.detectedProperties.length&&(i.detectedProperties.length={type:me.Number}),e&&r.setState(i),o){const e=[];for(const t of i.properties||[]){const n=qt(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:me.Anything;e.push(r.nextGate(t.name,{type:o,value:n}))}}await Promise.allSettled(e)}}},getInputNames:()=>[{name:"in",type:me.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:me.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:zt};const Jt="output",Zt="noItem";var Xt={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===me.Anything&&(c||a)||n.data.type===me.String&&a||n.data.type===me.Array&&c){o<0&&(o=s.length+o);const e=a?me.String:We(s[o]);return e!==i.$$lastDetectedType&&r.setState({...i,$$lastDetectedType:e}),void 0!==s[o]?r.nextGate(Jt,{value:s[o],type:e}):r.nextGate(Zt,{value:!0,type:me.Boolean})}},getInputNames:()=>[{name:"in",type:[me.Array,me.String]}],getOutputNames:e=>[{name:Jt,type:e.$$lastDetectedType??me.Anything},{name:Zt,type:me.Boolean}]};const Qt={},en=e=>(Qt[e]||(Qt[e]={canvasFrom:Ee(320,240),canvasTo:Ee(320,240)}),Qt[e]),tn=Object.freeze({image:"image",rect:"rect"}),nn="image";var rn={onParentEvent:async(e,t,n,r)=>{const i=en(r.id),o={offset:{height:0,left:0,top:0,width:0},...r.getState()},s=[me.Anything,me.Rect,me.JsonObj];if(t.name===tn.rect&&Fe(n.data.value)&&s.includes(n.data.type)&&(o.rect=n.data.value,r.setState({...o})),t.name===tn.image){if(!((n.data.type===me.ImageData||n.data.type===me.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(nn,{type:me.ImageData,value:e})}},getInputNames:()=>[{name:tn.image,type:me.ImageData},{name:tn.rect,type:[me.Rect,me.JsonObj]}],getOutputNames:()=>[{name:nn,type:me.ImageData}],initialize:async e=>{en(e.widgetId)},terminate:async e=>{delete Qt[e.widgetId]}};const on=(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(ee)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},sn=[-1,0,1,-2,0,2,1,0,1],an=Object.freeze({image:"image"}),cn="image";var ln={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={matrix:[...sn],...i};if(n.data.type===me.ImageData||n.data.type===me.Anything&&Le(n.data.value)){const e=on(n.data.value,o.matrix);return r.nextGate(cn,{type:me.ImageData,value:e})}},getInputNames:()=>[{name:an.image,type:me.ImageData}],getOutputNames:()=>[{name:cn,type:me.ImageData}]};const un=Object.freeze({output:"output",aborted:"aborted"}),dn=()=>({inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0}),hn=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:me.Anything})));return n.push({name:"reset",type:me.Anything}),n};var fn={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(un.aborted,n.data);{i.triggeredAt=o;const e=hn(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(un.output,n.data),r.setState(i)}},getInputNames:hn,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:me.Anything})));return e.push({name:un.aborted,type:me.Anything}),e}return[{name:un.output,type:me.Anything},{name:un.aborted,type:me.Anything}]},getDefaultState:dn};const pn=(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)}},gn=(e,t,n,r,i,o,s)=>{e.fillStyle=i,e.fillRect(t,n,r,r),pn(e,t,n,i,o,s)},mn=(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;pn(e,t.left-s,t.top-s,r,i,o)},yn={},vn=e=>(yn[e]||(yn[e]={memCanvas:Ee(320,240),lastFrame:void 0,pixels:void 0}),yn[e]),bn=Object.freeze({image:"image",pixels:"pixels"}),wn="image";var Sn={onParentEvent:async(e,t,n,r)=>{const i=vn(r.id),o={fontSize:12,color:"#00ff00",size:2,...r.getState()},s=(n.data.type===me.ImageData||n.data.type===me.Anything)&&Le(n.data.value);if(t.name===bn.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===bn.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=Ce(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)?mn(e,n,i,o,r,a):Ue(n)&&gn(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(wn,{type:me.ImageData,value:e})}r.setState(o)},getInputNames:()=>[{name:bn.image,type:me.ImageData},{name:bn.pixels,type:[me.Rect,me.Point,me.Array,me.JsonObj]}],getOutputNames:()=>[{name:wn,type:me.ImageData}],initialize:async e=>{vn(e.widgetId)},terminate:async e=>{delete yn[e.widgetId]}};const _n=Object.freeze({in:"in"}),In="output",xn=e=>{const t=String(e).split(".");return t.length<2?0:t[1].length};var kn={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=xn(i.min)),s){const t=xn(i.max);t>e&&(e=t)}c=Number(c.toFixed(e))}else c=Math.floor(c);return r.nextGate(In,{type:me.Number,value:c})},getInputNames:()=>[{name:_n.in,type:me.Anything}],getOutputNames:()=>[{name:In,type:me.Number}]};const En=Object.freeze({output:"output",totalItems:"totalItems"}),Cn=Object.freeze({trigger:"trigger",clear:"clear"}),$n=()=>({$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1}),Nn=async(e,t)=>t.nextGate(En.totalItems,{type:me.Number,value:e});var On={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1,...r.getState()};if(t.name===Cn.clear)return i.$$list=[],i.properties?.autoFilled&&delete i.properties,r.setState(i),Nn(i.$$list.length,r);const o=t.name===Cn.trigger;if(!o)if(Array.isArray(n.data.value))n.data.type!==me.Array&&n.data.type!==me.Anything||(i.$$outputShape={...i.$$outputShape,...e?.jsonShape},i.$$list=i.$$list.concat(n.data.value),r.setState({...i}),await Nn(i.$$list.length,r));else{const t=`$$primitive_${Object.keys(i.$$outputShape).length}`;n.data.type===me.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 Nn(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 Nn(e,r),r.nextGate(En.output,{type:me.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:me.Anything})));return n.push({name:Cn.clear,type:me.Anything},{name:Cn.trigger,type:me.Anything}),n},getOutputNames:e=>[{name:En.output,type:me.Array,...e.properties?{jsonShape:e.properties?.jsonShape}:void 0},{name:En.totalItems,label:"Total Items",type:me.Number}],getDefaultState:$n};const Tn=Object.freeze({start:"start",stop:"stop"}),An="output",Pn="clock_interrupt";var Mn={onParentEvent:async(e,t,n,r)=>{const i={enabled:!1,interval:1e3,intervalMode:"ms",...r.getState()};if(je(e?.name||"")&&t.name===Pn)return r.nextGate(An,{type:me.Boolean,value:!0});if(t.name===Tn.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!==Tn.start||i.enabled||i.$$interruptId||(i.$$interruptId=r.registerInterrupt({type:"interval",sourceWidgetId:r.id,customTargetPortName:Pn,config:{interval:i.interval}}),i.enabled=!0,r.setState(i))},getInputNames:()=>[{name:Tn.start,type:me.Anything},{name:Tn.stop,type:me.Anything}],getOutputNames:()=>[{name:An,type:me.Boolean}],initialize:async e=>{const t=e.getState();if(t.enabled&&!t.$$interruptId){const n=e.registerInterrupt({type:"interval",sourceWidgetId:e.widgetId,customTargetPortName:Pn,config:{interval:t.interval}});e.setState({...t,$$interruptId:n})}}};const Dn=864e5;var Rn;!function(e){e.ABORTED="DELAY_ABORTED",e.CONTINUED="DELAY_CONTINUED",e.TERMINATED="WIDGET_TERMINATED"}(Rn||(Rn={}));const jn={},Ln=Object.freeze({in:"in",abort:"abort",continue:"continue"}),Fn="out",Un=(e,t)=>{const n=e.getState();e.setState({...n,pendingDelaysCount:Math.max(0,n.pendingDelaysCount+t)})};var Bn={onParentEvent:async(e,t,n,i)=>{const o={enabled:!1,interval:1e3,intervalMode:"ms",pendingDelaysCount:0,...i.getState()},s=i.id;jn[s]||(jn[s]=new Map);const a=jn[s];if(t.name!==Ln.abort)if(t.name!==Ln.continue){if(t.name===Ln.in){const e=o.interval;if(!((c=e)>=1&&c<=Dn))throw new Error(`Invalid interval: ${e}ms. Must be between 1ms and 86400000ms`);const t={...n.data},s=r();Un(i,1);const l=new Promise(((n,r)=>{const o=setTimeout((()=>{n(t),a.delete(s),Un(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:Fn,data:e})}catch{Un(i,-1)}}var c}else{const e=Array.from(a.entries());for(const[t,n]of e)clearTimeout(n.timeoutId),n.reject(new Error(Rn.CONTINUED)),a.delete(t);for(const[,t]of e)await i.invokeNextWidget({port:Fn,data:t.eventData});Un(i,-i.getState().pendingDelaysCount)}else{for(const[e,t]of a)clearTimeout(t.timeoutId),t.reject(new Error(Rn.ABORTED)),a.delete(e);Un(i,-i.getState().pendingDelaysCount)}},getInputNames:()=>[{name:Ln.in,type:me.Anything},{name:Ln.abort,type:me.Anything},{name:Ln.continue,type:me.Anything}],getOutputNames:()=>[{name:Fn,type:me.Anything}],initialize:async e=>{const t=e.getState();0!==t.pendingDelaysCount&&e.setState({...t,pendingDelaysCount:0})},terminate:async e=>{const t=e.widgetId;if(jn[t]){for(const[,e]of jn[t])clearTimeout(e.timeoutId),e.reject(new Error(Rn.TERMINATED));delete jn[t]}}};const Wn=Object.freeze({in:"in"}),Gn="output",Vn=(e,t,n)=>"number"==typeof e?Number((e*t).toFixed(n)):e;var Hn={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===me.Array&&("number"==typeof n.data.value?.[0]?s=((e,t,n)=>{const r=(e||[]).map((e=>Vn(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]=Vn(i[e],t,n))})),i}));return i})(n.data.value,i.factor,i.decimalPoints,i.userProperties))),n.data.type===me.Number&&(s=Vn(n.data.value,i.factor,i.decimalPoints)),a&&r.setState(i),r.nextGate(Gn,{type:o,value:s})},getInputNames:()=>[{name:Wn.in,type:[me.Array,me.Number]}],getOutputNames:e=>[{name:Gn,type:e.detectedInputType||me.Number,jsonShape:e.detectedInputJson}]};const Yn={},zn=Object.freeze({output:"output"}),qn=Object.freeze({trigger:"trigger"}),Kn=()=>({useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}]}),Jn=(e,t)=>{const n={};Yn[t]=Yn[t]||{};for(let r=0;r<e.properties.length;r++){const i=Yn[t][e.properties[r].name];n[e.properties[r].label]=i}return n};var Zn={onParentEvent:async(e,t,n,r)=>{const i={useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}],...r.getState()};if(t.name===qn.trigger){const e=Jn(i,r.id);return r.nextWidget(zn.output,{type:me.JsonObj,value:e})}const o=i.properties.findIndex((e=>e.name===t.name));if(-1!==o){const e=i.properties[o];if(Yn[r.id]=Yn[r.id]||{},Yn[r.id][e.name]=n.data.value,!i.useTriggerPort){const e=Jn(i,r.id);return r.nextWidget(zn.output,{type:me.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:me.Anything})));return t.useTriggerPort&&n.push({name:qn.trigger,label:qn.trigger,type:me.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:zn.output,label:zn.output,type:me.JsonObj}],getDefaultState:Kn,initialize:async e=>{Yn[e.widgetId]={}},terminate:async e=>{delete Yn[e.widgetId]}};const Xn=async e=>{const t=(e,t)=>e.split(t)[1];if(e.startsWith(Ae)){const n=t(e,Ae);return Ve("inner","input",n)}if(e.startsWith(De)){const n=t(e,De);return Ve("outer","output",n)}return null},Qn=()=>({canvasPosition:{x:0,y:0},canvasZoom:1,inputs:[{name:"input",type:[me.Anything],index:0}],outputs:[{name:"output",type:[me.Anything],index:0}],name:"Custom Widget 1",description:"",type:"custom"}),er=e=>{const t={...Qn(),...e},n=t.inputs.map(((e,t)=>({name:Ve("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:Ve("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 tr={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Qn(),...i},s=er(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(me.Anything)||i.type.includes(n.data.type))){const e=await Xn(t.name);e&&await r.nextWidget(e,{type:n.data.type,value:n.data.value})}}},getInputNames:er,getOutputNames:e=>{const t={...Qn(),...e},n=t.outputs.map(((e,t)=>({name:Ve("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:Ve("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:Qn};const nr=(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 rr={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}`)||!nr(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}`)&&nr(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 ir=e=>We(e),or=s.enum(["Read","Modify","Comment"]),sr=s.object({email:s.email(),name:s.string(),accessMode:or});var ar;!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"}(ar||(ar={}));const cr=s.enum(["active","inactive"]),lr=s.enum(["CreateApiKeys","RevokeApiKeys"]),ur=s.enum(["organization"]),dr=s.object({[ur.enum.organization]:s.object({scopes:s.array(lr)}).optional()}).partial(),hr=s.enum(["Owner","Admin","Member"]);s.object({apiKey:s.string(),createdAt:s.string(),createdBy:s.string()});const fr=s.enum(["auto-generated","user-generated"]);s.object({id:s.string(),organizationId:s.string(),userId:s.string(),key:s.string(),lastFourDigits:s.string().optional(),comment:s.string().optional(),createdAt:s.string(),createdBy:s.string(),revokedAt:s.string().optional(),revokedBy:s.string().optional(),type:fr.optional().default("user-generated")});const pr=s.object({country:s.string(),city:s.string(),address1:s.string(),address2:s.string(),postCode:s.string()}),gr=s.object({id:s.string(),name:s.string(),groups:s.array(s.string()),logo:s.string().optional(),industry:s.string().optional(),accountOwner:s.string(),stripeCustomerId:s.string(),stripeSubscription:s.custom(),domain:s.string().optional(),createdAt:s.string(),updatedAt:s.string(),accountState:s.custom(),location:pr.optional()}),mr=s.object({id:s.string(),firstName:s.string(),lastName:s.string(),email:s.email().optional(),loginId:s.string().optional(),role:hr,groups:s.array(s.string()).optional().default([]),entityScopes:dr.optional(),status:cr,lastSeenAt:s.string().optional(),createdAt:s.string()});var yr,vr,br,wr;gr.pick({id:!0,name:!0,stripeSubscription:!0,stripeCustomerId:!0}),s.object({member:s.object({firstName:s.string().optional(),lastName:s.string().optional(),email:s.string().optional(),role:hr.optional(),groups:s.array(s.string()).optional(),status:cr,entityScopes:dr.optional()})}),mr.omit({id:!0,createdAt:!0,lastSeenAt:!0}),s.object({name:s.string(),location:pr.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"}(yr||(yr={})),function(e){e.Hardware="hardware",e.Virtual="virtual"}(vr||(vr={})),function(e){e.Cloud="cloud",e.Web="web"}(br||(br={})),function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(wr||(wr={}));const Sr=s.object({name:s.string(),category:s.string(),id:s.string(),type:s.enum(br),version:s.string()}),_r=s.object({version:s.number(),contents:s.string(),contentsLength:s.number(),createdAt:s.string(),comments:s.string().optional()}),Ir=s.object({id:s.string(),name:s.string(),uuid:s.string().optional(),version:s.number(),dataSources:s.array(s.object({host:s.string().optional(),stream:s.string(),blocks:s.array(s.string())})).optional(),protocolVersion:s.string(),linkedTutorial:s.string().optional(),blocks:s.array(Sr),widgets:s.array(s.object({type:s.string(),name:s.string(),thingId:s.string()})).optional(),contents:s.string(),storage:s.string().optional(),history:s.array(_r).optional(),cloud:s.object({environment:s.enum(yr),enabled:s.boolean()}).optional()}),xr=s.object({recipeId:s.string(),version:s.number()});Ir.extend({userId:s.string(),author:s.object({name:s.string(),id:s.string()}),copiedFrom:xr.optional(),updatedAt:s.string(),createdAt:s.string(),preview:s.string(),isPublic:s.boolean(),isDefault:s.boolean(),meta:s.object({contentsLength:s.number(),storageLength:s.number(),storageChecksum:s.string().optional()}),sharedWith:s.array(sr),publicSharedId:s.string().optional(),marketplacePublication:s.string().optional()});const kr=Ir.omit({id:!0,version:!0,contents:!0,storage:!0});var Er,Cr,$r,Nr,Or,Tr,Ar,Pr;s.object({rawContents:s.string(),recipe:kr.extend({contentLength:s.number(),copiedFrom:xr.optional()}),storageSize:s.number().optional(),storageChecksum:s.string().optional(),comments:s.string().optional(),currentVersion:s.number().optional()}),s.object({message:s.string(),recipeId:s.string(),version:s.number(),versionHistory:s.array(_r)}),function(e){e.Bundle="bundle",e.Group="group"}(Er||(Er={})),function(e){e.Gateway="gateway",e.Timer="timer"}(Cr||(Cr={})),function(e){e.InstallInProgress="installation-in-progress"}($r||($r={})),function(e){e.InstallDependencies="install-dependencies",e.GetInstalledDependencies="get-installed-dep"}(Nr||(Nr={})),function(e){e.Success="success",e.Error="error",e.Pending="pending"}(Or||(Or={})),function(e){e.NotFound="not-found",e.BadRequest="bad-request",e.Forbidden="forbidden",e.InternalError="internal-error"}(Tr||(Tr={})),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"}(Ar||(Ar={})),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"}(Pr||(Pr={}));const Mr=s.object({id:s.string(),name:s.string(),organizationId:s.string()}),Dr=s.object({version:s.number(),contents:s.string(),contentsLength:s.number(),createdAt:s.string(),title:s.string(),shortDescription:s.string(),comments:s.string().optional()}),Rr=s.object({id:s.string(),title:s.string(),author:Mr,shortDescription:s.string(),authorId:s.string(),category:s.string(),tags:s.array(s.string()),createdAt:s.string(),downloads:s.number().default(0),updatedAt:s.string(),iconSvg:s.string(),contents:s.string(),descriptionMarkdown:s.string(),githubUrl:s.string().optional(),visibility:s.enum(["public","private","organization"]),version:s.number(),history:s.array(Dr).default([]),deletedAt:s.string().optional()}),jr=Rr.extend({rating:s.object({average:s.number(),total:s.number()}).optional()});s.object({id:s.string(),author:s.object({id:s.string(),name:s.string()}).optional(),description:s.string(),createdAt:s.string(),updatedAt:s.string(),snippetId:s.string(),deletedAt:s.string().optional(),isAbuseReport:s.boolean().optional(),reportReason:s.enum(["spam","inappropriate","not-working","security","other"]).optional()}),s.object({query:s.string().optional(),category:s.string().optional(),featured:s.boolean().optional(),recommended:s.boolean().optional(),sortBy:s.enum(["most_recent","most_liked","alphabetical"]).optional(),visibility:s.enum(["public","private","organization"]).optional(),page:s.number().optional(),limit:s.number().optional()}),s.object({snippets:s.array(jr),total:s.number(),page:s.number(),limit:s.number(),hasMore:s.boolean()}),s.object({snippetId:s.string(),rating:s.number(),off:s.boolean().optional()}),s.object({average:s.number(),total:s.number()}),s.object({success:s.boolean(),error:s.string().optional()}),s.object({snippet:s.lazy((()=>s.object({title:s.string(),shortDescription:s.string(),category:s.string(),tags:s.array(s.string()),iconSvg:s.string(),contents:s.string(),descriptionMarkdown:s.string(),githubUrl:s.string().optional(),visibility:s.enum(["public","private","organization"]),deletedAt:s.string().optional()})))}),s.object({snippet:s.lazy((()=>s.object({title:s.string(),shortDescription:s.string(),category:s.string(),tags:s.array(s.string()),iconSvg:s.string(),contents:s.string(),descriptionMarkdown:s.string(),githubUrl:s.string().optional(),visibility:s.enum(["public","private","organization"])})))}),s.object({snippet:Rr}),s.object({snippet:Rr}),s.object({snippetId:s.string(),version:s.number()}),s.object({snippet:Rr});let Lr=null;var Fr=()=>{if(!Lr)throw new Error("Required function is not set");return Lr};class Ur 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 Br extends Error{constructor(e,t){super(e),this.name="UserCodeError",t&&(this.stack=t)}}const Wr=(e,t)=>`\n\t\tfunction _user_code_(){\n\t\t\t${t===wr.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\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`,Gr=(e,t,n,r)=>{const i=Wr(e,n),s={...t,document:{},__errorTracer:e=>{if(e instanceof Ur)throw e;throw new Br(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:rr.image,...n===wr.Cloud?{require:Fr(),kemuProcess:process.env.KEMU_PROCESS?process.env.KEMU_PROCESS:{}}:{},CryptoJS:o,decodeDataType:ir,window:{addEventListener:t?.addEventListener,removeEventListener:t?.removeEventListener}};try{const e="browser"===(()=>{if(ee)return"browser";if(ne)return"node";if(te)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()(s)}}catch(e){return{error:{name:"CompileError",message:e.message,stack:e.stack}}}},Vr="main",Hr="My Script",Yr="This is a test script.",zr=`\n/**\n * Name: ${Hr}\n * Description: ${Yr}\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(),qr=()=>({pauseExecution:!1,autoPauseOnError:!0,$$eventListeners:{},version:2,metadata:{name:Hr,description:Yr},pages:{[Vr]:{code:zr,language:"javascript",name:"My First Script"}}}),Kr=(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 Wr(t,e).split(t)[0].split("\n").length+2})(t),n.column=i.column)}return e.message&&(n.message=e.message),n},Jr=(e,t)=>{const n={...{...qr(),...t.getState()},$$error:e||void 0};e&&console.error(e.message),t.setState(n)},Zr=new a;let Xr,Qr,ei={},ti={};const ni=e=>{const t=le(Xr,Qr,e);if(!t)throw new Error(`Widget ${e} not found in thing ${Qr}`);return t},ri=(e,t)=>`${e}:${t}`,ii=e=>`${ni(e.createdByWidgetId).id}::${e.variableName}`,oi=e=>`${fe}${e}`;var si=e=>{const t=ni(e.createdByWidgetId),n=ii({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});ti[n]={type:e.type,subscriberWidgetId:t.id,subscriberWidgetType:t.type}},ai=e=>{const t=ii({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});delete ti[t]},ci=async e=>{const t=ni(e.setByWidgetId);if(!t)throw new Error(`Widget ${e.setByWidgetId} not found in thing ${Qr} in recipe ${Xr}`);const n=e.variableName.startsWith(fe)?ii({variableName:e.variableName,createdByWidgetId:e.setByWidgetId}):e.variableName;ei[n]={value:e.value,type:e.type};const r={value:e.value,type:e.type,varName:e.variableName,isUIElement:e.variableName.startsWith(fe),setByWidgetType:t.type,setByWidgetId:e.setByWidgetId};await Zr.emit(ri(e.variableName,e.type),r),e.type!==me.Anything&&await Zr.emit(ri(e.variableName,me.Anything),r)},li=e=>{const{readerWidgetId:t,variableName:n}=e;if(!ni(t))throw new Error(`Widget ${t} not found in thing ${Qr} in recipe ${Xr}`);const r=n.startsWith(fe)?ii({variableName:e.variableName,createdByWidgetId:e.readerWidgetId}):n,i=ei[r];if(i)return{type:i.type,value:i.value}},ui=e=>{const{widgetId:t,variableName:n,type:r}=e;if(!ni(t))throw new Error(`Widget ${t} not found in thing ${Qr} in recipe ${Xr}`);const i=ri(n,r);let o;return o=Zr.on(i,(async r=>{le(Xr,Qr,t)?await e.onValueChange(r):(console.warn(`Zombie widget ${t} detected, unsubscribing from variable events "${n}"`),o?.())})),o},di=e=>{ti={},ei={},Xr=e.recipePoolId,Qr=e.thingId};const hi="setTimeout",fi="variableChanged",pi="globalVariableChanged",gi=e=>{const{recipePoolId:t,scriptWidgetId:n}=e,r=ce({recipeId:t,widgetId:n});if(!r)throw new Error(`Widget "${n}" not found in recipe "${t}"`);const i=(e,t)=>{const r=li({readerWidgetId:n,variableName:e});if(r||t)return void 0===r?{value:t?.value??t,type:t?.type??We(t)}:{value:r.value,type:r.type}},o=(t,i,o)=>{if(!e.setState)return void console.warn("Cannot subscribe to variable changes without a setState function");const s={...qr(),...e.getState()},a=ui({variableName:t,type:me.Anything,widgetId:n,onValueChange:async e=>{i?e.setByWidgetType===Je.widgetGroup&&e.setByWidgetId===r.groupId&&await o(e):o(e)}});delete s.$$eventListeners[t],s.$$eventListeners[t]={handler:o,abort:async()=>{a()},name:fi},e.setState(s)};return{get:i,set:async(e,t,r)=>{await ci({variableName:e,type:r||We(t),setByWidgetId:n,value:t})},onValueChange:(e,t)=>{o(e,!1,t)},onUIValueChange:(e,t)=>{const n=oi(e);o(n,!0,t)},getUIValue:e=>{const n=oi(e),o=i(n);if(o)return{value:o.value,type:o.type};const s=r.groupId;if(!s)throw new Error("You can only read UI variables from inside a widgetGroup");const a=ce({recipeId:t,widgetId:s});if(!a)throw new Error(`Widget "${s}" not found in recipe "${t}"`);const c=a.state,l=(c.settings||[]).find((t=>t.variableName===e));if(!l)throw new Error(`Field "${e}" not found in widgetGroup "${c.name}"`);const u=l.config,d=u.customValue??u.defaultValue;if(void 0===d)throw new Error(`Field "${e}" in widgetGroup "${c.name}" has no default value`);return{value:d,type:We(d)}},setUIValue:async(e,t,n)=>{const i=r.groupId;if(!i)throw new Error("You can only set UI variables from inside a widgetGroup");const o=oi(e);await ci({variableName:o,value:t,setByWidgetId:i,type:n??We(t)})}}};let mi;var yi=e=>{mi=e},vi=()=>{if(!mi)throw new Error("Hub Connector not set");return mi};const bi=new a,wi="invoked";let Si={},_i={},Ii={},xi={};const ki=(e,t,n)=>`${e}-${t}${n?`-${n}`:""}`;var Ei=e=>{const{data:t,thingId:n,widgetId:r,sourcePortName:i,recipeId:o,target:s,sourceOutputNames:a,currentPath:c,eventId:l}=e,u=ki(n,r,i),d=ki(n,r),h=ki(n,r,"produced"),f=Ii[d],p=Date.now();xi[d]=p,Si[u]={data:t,recipeId:o,currentPath:c,eventId:l,source:{widgetId:r,portName:i},sourceOutputNames:a,...s?{target:{widgetId:s.widgetId,portName:s.portName}}:{}},bi.emit(h,{currentTime:p,prevTime:f,...s?{targetPort:s?.portName}:{}})},Ci=e=>{const{thingId:t,widgetId:n,targetPortName:r,data:i,source:o,originalEvent:s,recipeId:a,sourceOutputNames:c,currentPath:l,eventId:u}=e,d=ki(t,n,r),h=ki(t,n),f=ki(t,n,wi),p=Ii[h],g=Date.now();Ii[h]=g,_i[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}}:{}},bi.emit(f,{prevTime:p,currentTime:g,targetPort:r,sourceInfo:o})},$i=()=>{Si={},_i={},Ii={},xi={},bi.clearListeners()};const Ni=e=>{const{recipePoolId:t,widgetId:n,secrets:r,clearExistingSecrets:i}=e,o=ce({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}},Oi=e=>{const{recipePoolId:t,widgetId:n}=e,r=ce({recipeId:t,widgetId:n});if(!r)throw new Error(`Widget [${n}] not found in recipe [${t}]`);delete r.secrets},Ti={},Ai="value",Pi=async e=>{const{recipeUuid:t,secretNames:n,serviceName:r}=e,i=vi(),o=[{recipeUuid:t,secretNames:n,serviceName:r}];let s={};try{const e=await i.executeHubFunction(we.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},Mi=e=>{const t=se(e);if(!t)throw new Error(`Recipe [${e}] does not exist]`);return{uuid:t.uuid,recipeType:t.dbInfo?.recipeType}};var Di={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};if(!i.name||!e)return;const{uuid:o}=Mi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=r.recipeType===ge.Desktop,a=Ti[r.id]?.[i.name];let c=a;if(!a||a&&!s){const e=await Pi({recipeUuid:o,secretNames:[i.name]});c=e?.[i.name],null!=c&&s&&(Ti[r.id]||(Ti[r.id]={}),Ti[r.id][i.name]=c)}if(null==c)throw new Error(`Secret "${i.name}" not mapped to this recipe`);r.nextWidget(Ai,{type:me.String,value:c})},getOutputNames:()=>[{name:Ai,type:me.String}],getInputNames:()=>[{name:"read",type:me.Anything}],terminate:async e=>{Ti[e.widgetId]={},Oi({recipePoolId:e.recipePoolId,widgetId:e.widgetId})},initialize:async e=>{const t={name:"",...e.getState()};t.name&&(Ti[e.widgetId]={},Ni({recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:[{name:t.name}]}))}};const Ri={},ji=e=>{const{recipePoolId:t,thingId:n,scriptWidgetId:r}=e,i=se(t),o=i?.dbInfo.recipeType,s=Mi(t).uuid,a=le(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===ge.Desktop,n={};let i=[];for(const t of e){const e=Ri[r]?.[t];null==e&&i.push(t)}if(t||(i=e),i.length>0){const t=await Pi({recipeUuid:s,secretNames:i});for(const i of e){const e=t?.[i],o=Ri[r]?.[i];n[i]=void 0!==e?e:void 0!==o?o:null}Ri[r]={...Ri[r],...n}}else for(const t of e)n[t]=Ri[r]?.[t]||null;return n}},unregisteredSecrets:()=>{a&&(a.secrets={})}}},Li=new a;let Fi={};const Ui="statusValueChanged",Bi="keyRemovedFromWidget",Wi=()=>{Fi={}},Gi=()=>{Li.clearListeners()},Vi=e=>{Li.emit(Ui,e)};var Hi=e=>{const{name:t,value:n,sourceWidget:r,widgetId:i,widgetType:o}=e;Fi[i]=Fi[i]||[];const s=Fi[i].find((e=>e.name===t&&e.widgetType===o&&e.widgetId===i));s?s.data=n:Fi[i].push({name:t,data:n,sourceWidget:r,widgetId:i,widgetType:o});let a=n;null===n&&(a={type:me.Anything,value:""}),Vi({name:t,value:a,sourceWidget:r,statusWidgetId:i,widgetType:o})},Yi=e=>Li.on(Ui,e),zi=()=>{Wi(),Gi()},qi=e=>{const t=()=>{const e=[];for(const t in Fi)for(const n of Fi[t])e.push(n.name);return e},n=t();delete Fi[e];(e=>{Li.emit(Bi,e)})({before:n,after:t()})};const Ki=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},Hi({name:e,sourceWidget:t,widgetId:t,value:r,widgetType:Je.script})}},clearStatusValues:()=>{qi(t)}}},Ji=new a,Zi=e=>{if(e.includes("."))throw new Error("Variable and group names cannot contain dots")},Xi=(e,t)=>{if(!t)throw new Error("name is required");return Zi(t),e?`${e}.${t}`:t},Qi=e=>{if(!e)throw new Error("fullPath is required");const t=e.lastIndexOf(".");if(-1===t)return{group:null,name:e};return{group:e.substring(0,t),name:e.substring(t+1)}},eo=e=>`globalVariableChange_${e}`,to=e=>`globalVariableGroupChange_${e}`,no=e=>`globalVariableParentGroupStateChange_${e}`,ro=e=>`globalVariableRenamed_${e}`;let io={};const oo=e=>{const{name:t,notify:n=!0}=e,r=ao(t);if(!r)return;if("group"===r.controlType){const e=lo().filter((e=>!!e.group&&(e.group===t||e.group.startsWith(t+"."))));for(const t of e)oo({name:t.name,notify:n})}n&&Ji.emit("globalVariableRemoved",r),delete io[t]},so=()=>{for(const e in io)oo({name:e,notify:!0})},ao=e=>{let t;t="string"==typeof e?e:Xi(e.group,e.name);return io[t]??null},co=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");Zi(p),p=p.replace(/-/g,"_");const g=Xi(h??null,p);let m=ao(g);const y=!m,v=!!m;if(y)m={},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 b=n??(t?We(t):null),w=t!==m.lastValue,S=h!==m.group&&void 0!==h,_=c!==m.order&&void 0!==c;m.lastDataType=b,m.lastValue=t,m.controlType=r??m.controlType??"anything",m.lastChangedByWidgetId=i??null,m.lastExecutionContext=s??null,m.helpText=a??m.helpText,m.controlSettings=f??m.controlSettings,m.name=g,m.order=c??m.order,m.group=void 0!==h?h:m.group,io[g]=m,u||null!==t&&(w||l)&&(await Ji.emit(eo(g),m),await Ji.emit("globalVariableChange_any",m)),v&&(S||_)&&await Ji.emit(to(g),m),y&&!d&&await Ji.emit("globalVariableDefined",m)},lo=()=>Object.values(io),uo=e=>lo().filter((t=>!!t.group&&(t.group===e||t.group.startsWith(e+".")))),ho={resetAllGlobalVariables:so,getGlobalVariable:ao,setGlobalVariable:co,onGlobalVariableChange:(e,t)=>Ji.on(eo(e),t),onGlobalVariableParentGroupChange:(e,t)=>Ji.on(to(e),t),onVarParentGroupStateChange:(e,t)=>Ji.on(no(e),t),notifyGroupMembersOfParentGroupChange:async e=>{const t=uo(e),n=ao(e);if(n)for(const e of t)await Ji.emit(no(e.name),{variable:e,parentGroup:n})},deleteGlobalVariable:oo,onGlobalVariableDefined:e=>Ji.on("globalVariableDefined",e),onGlobalVariableRemoved:e=>Ji.on("globalVariableRemoved",e),onGlobalVariableRenamed:(e,t)=>Ji.on(ro(e),t),onAnyGlobalVariableChange:e=>Ji.on("globalVariableChange_any",e),getAllVariables:lo,renameVariable:e=>{const{oldName:t,newName:n}=e,r=ao(t);if(!r)throw new Error("Global variable not found");Zi(n);const i="group"===r.controlType,{group:o}=Qi(t),s=Xi(o,n);if(i){const e=lo().filter((e=>!!e.group&&(e.group===t||e.group.startsWith(t+"."))));for(const n of e){const{group:e,name:r}=Qi(n.name);let i=null;e&&(i=e===t?s:e.startsWith(t+".")?s+e.substring(t.length):e),co({name:r,value:n.lastValue,lastDataType:n.lastDataType??null,controlType:n.controlType,controlSettings:n.controlSettings,widgetId:n.lastChangedByWidgetId??void 0,executionContext:n.lastExecutionContext??void 0,helpText:n.helpText??void 0,order:n.order??void 0,group:i,disableChangeNotifications:!0,disableDefineNotifications:!0})}}oo({name:t,notify:!1}),co({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:o}),Ji.emit(ro(t),{oldName:t,newName:s})},registerGlobalVariables:e=>{so(),io={};const t=e.map((e=>{if(!e.name.includes(".")){if(e.group){const t=Xi(e.group,e.name);return{...e,name:t}}return e}const{name:t}=Qi(e.name);if(t.includes("."))throw new Error(`Invalid variable name: "${e.name}" - display names cannot contain dots`);return e}));for(const e of t)io[e.name]=e},getVariablesInGroup:uo,isGroupVariable:e=>"group"===e.controlType,buildFullPath:Xi,parsePath:Qi,validateName:Zi},fo="kemu.io.scriptHttp",po=e=>{const{recipePoolId:t,widgetId:n,httpConfig:r}=e,i=vi();let o;const s=(e=>e.find((e=>e.name===fo&&e.internal))||null)(i.getCachedServices().available);if(!s)throw new Error("HTTP service not found");const a={listener:{recipeId:t},targetService:{serviceName:fo,version:"1.0.0"}};i.subscribeToServiceEvents(a);const c=i.onBroadcastEvent(n,fo,"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=de(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})}}},go="__command-compile__",mo={};let yo;const vo=()=>{throw new Error("Method not implemented")},bo=e=>{const{features:t,widgetContext:n,widgetEnvInfo:i}=e,o=(e,...t)=>{const r={...qr(),...n.getState()}.$$eventListeners[e];r&&r.handler(t)},s={};Object.keys(me).forEach((e=>{s[e]=me[e]}));const a=ji({recipePoolId:i.recipePoolId,thingId:i.thingId,scriptWidgetId:i.widgetId}),c=Ki({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={...qr(),...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?ho.onGlobalVariableChange(t,i):ho.onAnyGlobalVariableChange(i),s=t?`globalVar_${t}`:"anyGlobalVar";t&&r.$$eventListeners[s]&&delete r.$$eventListeners[s],r.$$eventListeners[s]={handler:n,abort:async()=>{o()},name:pi},e.setState(r)};return{get:e=>{const t=ho.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);if(e.name.includes("."))throw new Error("Variable names cannot contain dots");if(e.group){const t=async(n,r)=>{if(ho.getGlobalVariable(n))return;const{group:i,name:o}=Qi(n);i&&await t(i,!1),await ho.setGlobalVariable({name:o,group:i,value:null,controlType:"group",controlSettings:{},helpText:r&&e.groupHelpText||void 0})};await t(e.group,!0)}await ho.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(),mo[i.widgetId]?.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}));return{logger:_o(),dataTypesEnum:s,recipePoolId:i.recipePoolId,widgetId:i.widgetId,http:e=>{const{promise:t,abort:n}=po({httpConfig:e,recipePoolId:i.recipePoolId,widgetId:i.widgetId});mo[i.widgetId]={abortHttp:n};return t.abort=async()=>{delete mo[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?gi({recipePoolId:i.recipePoolId,scriptWidgetId:i.widgetId,thingId:i.thingId,getState:n.getState,setState:n.setState}):{get:vo,set:async()=>vo(),onValueChange:vo,onUIValueChange:vo,getUIValue:vo,setUIValue:async()=>vo()},statusManager:c.statusManager,secretsManager:a.secretsManager,globalVariablesManager:l,setTimeout:(e,o,s)=>{if(t.withTimers&&n&&n.setState&&n.registerInterrupt){const t=r(),a={...qr(),...n.getState()};a.$$eventListeners[t]={handler:e,rejectHandler:s,name:hi},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={...qr(),...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={...qr(),...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.`)}}},wo=(e,t,n)=>{const r={...qr(),...n.getState()},i=r.pages[Vr].$$compiledCode;if(i)return{compiledModule:i};{const i=bo({features:e,widgetContext:n,widgetEnvInfo:t});return Gr(r.pages[Vr].code,i,n.recipeType)}},So=e=>e.map((e=>({...e,name:e.name.replace("_","")}))),_o=()=>{const e=(e,...t)=>{if(yo)try{return yo[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)}}},Io=async(e,t)=>{const n={...e};for(const r in e){if(e[r].name===hi){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},xo=async e=>{const t={...e};for(const r in e){if((n=e[r]).name===fi||n.name===pi){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},ko=async(e,t,n)=>{let r={...qr(),...e.getState()};if(void 0!==n){r.pages[Vr]?.$$compiledCode?.onTerminate&&await(r.pages[Vr].$$compiledCode?.onTerminate());let t=await Io(r.$$eventListeners,e);t=await xo(t),r.$$eventListeners=t,r.pages[Vr].$$compiledCode=void 0,r.pages[Vr].code=n,e.setState({...r})}const i=!r.pages[Vr].$$compiledCode,{compiledModule:o,error:s}=wo({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=Kr(s,e.recipeType);return Jr(t,e),null}if(o){let n;r={...e.getState()},r.pages[Vr].$$compiledCode=o;const s=Eo(r.pages[Vr].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=Kr(t,e.recipeType)}if(a&&i)try{await o.main()}catch(t){n=Kr(t,e.recipeType)}r.$$lastInputs=o.getWidgetInputs?o.getWidgetInputs():[],r.$$lastOutputs=o.getWidgetOutputs?o.getWidgetOutputs():[],e.setState(r),Jr(n,e)}},Eo=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 Co={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...qr(),...i};if(!o.pages[Vr])return console.warn("Missing default page");if(je(e?.name||""))return o.$$eventListeners[t.name]?(await o.$$eventListeners[t.name].handler(),o.$$eventListeners[t.name].name===hi&&delete o.$$eventListeners[t.name],void r.setState({...o})):void console.log(`Unknown interrupt id [${t.name}] `);const s=t.name===go;await ko(r,!1,s?n.data.value:void 0);const a=o.pages[Vr].$$compiledCode;if(e&&e.name!==go&&a)try{await a.asyncProcessEvent(t,e,{...n,executionContext:{currentPath:r.currentPath,eventId:r.eventId}})}catch(e){if("UserCodeError"===e.name){const t=Kr(e,r.recipeType);throw Jr(t,r),t}throw e}},getInputNames:(e,t)=>{const n={...qr(),...e},{compiledModule:r}=wo({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetInputs){const e=r.getWidgetInputs();return So(e)}return e.$$lastInputs||[]},getOutputNames:(e,t)=>{const n={...qr(),...e},{compiledModule:r}=wo({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetOutputs){const e=r.getWidgetOutputs();return So(e)}return e.$$lastOutputs||[]},getDefaultState:qr,initialize:async e=>{const t=e.getState(),n={...qr(),...t};n.pages[Vr].code&&await ko({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[Vr].code)},terminate:async e=>{try{const t=e.getState();t.pages[Vr].$$compiledCode?.onTerminate&&await t.pages[Vr].$$compiledCode.onTerminate();const n=e=>nt.destroyInterrupt(e),r=await Io(t.$$eventListeners,{cancelInterrupt:n});await xo(r);const i=Ki({scriptWidgetId:e.widgetId});ji({recipePoolId:e.recipePoolId,thingId:e.thingRecipeId,scriptWidgetId:e.widgetId}).unregisteredSecrets(),i.clearStatusValues();for(const e of Object.values(mo))e.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}))}catch(t){console.warn(`Error terminating script widget ${e.widgetId}: `,t)}}};const $o=new Map,No=e=>($o.has(e)||$o.set(e,Ee(320,240)),$o.get(e)),Oo=Object.freeze({image:"image"}),To=Object.freeze({base64:"base64"}),Ao=()=>({});var Po={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};if(t.name===To.base64){if("string"!=typeof n.data.value)return;if(n.data.type!==me.String&&n.data.type!==me.Anything)return;const e=n.data.value,t=No(r.id);try{const n=await qe({base64Str:e,memoryCanvas:t,finalW:i.resize?.width,finalH:i.resize?.height});return r.setState(i),r.nextGate(Oo.image,{type:me.ImageData,value:n})}catch(e){console.log("[base64ToImageData] Error: ",e)}}},getInputNames:()=>[{name:To.base64,type:me.String}],getOutputNames:()=>[{name:Oo.image,type:me.ImageData}],getDefaultState:Ao,initialize:async e=>{No(e.widgetId)},terminate:async e=>{$o.delete(e.widgetId)}};const Mo=Object.freeze({object:"object",error:"error"}),Do=Object.freeze({string:"string"}),Ro=()=>({outputIsArray:!1});var jo={onParentEvent:async(e,t,n,r)=>{const i={outputIsArray:!1,...r.getState()};if((n.data.type===me.String||n.data.type===me.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?me.Array:me.JsonObj,value:e})}catch(e){return r.nextGate("error",{type:me.Boolean,value:!0})}},getInputNames:()=>[{name:Do.string,type:me.String}],getOutputNames:e=>[{name:Mo.object,type:[me.JsonObj,me.Array],label:e.outputIsArray?"array":Mo.object},{name:Mo.error,type:me.Boolean}],getDefaultState:Ro};const Lo=Object.freeze({string:"string",length:"length"}),Fo=Object.freeze({trigger:"trigger",setText:"setText"}),Uo=()=>({text:"",dispatchOnSet:!1});var Bo={onParentEvent:async(e,t,n,r)=>{const i={text:"",dispatchOnSet:!1,...r.getState()};if(t.name===Fo.setText){if(!((n.data.type===me.String||n.data.type===me.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(Lo.length,{type:me.Number,value:i.text.length}),s=r.nextGate(Lo.string,{type:me.String,value:i.text});await Promise.all([o,s])},getInputNames:e=>{const t=[{name:Fo.setText,type:me.String}];return e.dispatchOnSet||t.push({name:Fo.trigger,type:me.Anything}),t},getOutputNames:()=>[{name:Lo.string,type:me.String},{name:Lo.length,type:me.Number}],getDefaultState:Uo};const Wo=Object.freeze({image:"image"}),Go=Object.freeze({image:"image",x:"x",y:"y",width:"width",height:"height"}),Vo=()=>({showInputPorts:!1});var Ho={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===Go.x&&(i.cropX=n.data.value),t.name===Go.y&&(i.cropY=n.data.value),t.name===Go.width&&(i.cropWidth=n.data.value),t.name===Go.height&&(i.cropHeight=n.data.value),void r.setState(i);if(t.name===Go.image){if(n.data.type!==me.ImageData&&n.data.type!==me.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ee(320,240),i.$$memCanvasContext=Ce(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(Wo.image,{type:me.ImageData,value:t})}},getInputNames:e=>{const t=[{name:Go.image,type:[me.ImageData]}];return e.showInputPorts&&(t.push({name:Go.x,type:me.Number}),t.push({name:Go.y,type:me.Number}),t.push({name:Go.width,type:me.Number}),t.push({name:Go.height,type:me.Number})),t},getOutputNames:()=>[{name:Wo.image,type:me.ImageData}],getDefaultState:Vo};const Yo=Object.freeze({image:"image"}),zo=Object.freeze({image:"image",width:"width",height:"height"}),qo=()=>({showInputPorts:!1});var Ko={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===zo.width&&(i.width=n.data.value),t.name===zo.height&&(i.height=n.data.value),void r.setState(i);if(t.name===zo.image){if(n.data.type!==me.ImageData&&n.data.type!==me.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ee(320,240),i.$$tempCanvas=Ee(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=Ce(t),c=Ce(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(Yo.image,{type:me.ImageData,value:t})}},getInputNames:e=>{const t=[{name:zo.image,type:me.ImageData}];return e.showInputPorts&&(t.push({name:zo.width,type:me.Number}),t.push({name:zo.height,type:me.Number})),t},getOutputNames:()=>[{name:Yo.image,type:me.ImageData}],getDefaultState:qo};const Jo=Object.freeze({value:"value"}),Zo=Object.freeze({trigger:"trigger",setValue:"setValue"}),Xo=()=>({value:0,dispatchOnSet:!1});var Qo={onParentEvent:async(e,t,n,r)=>{const i={value:0,dispatchOnSet:!1,...r.getState()};if(t.name===Zo.setValue){const e=n.data.type===me.Number||n.data.type===me.Anything||n.data.type===me.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(Jo.value,{type:me.Number,value:i.value})},getInputNames:e=>{const t=[{name:Zo.setValue,type:me.Number}];return e.dispatchOnSet||t.push({name:Zo.trigger,type:me.Anything}),t},getOutputNames:()=>[{name:Jo.value,type:me.Number}],getDefaultState:Xo};const es=Object.freeze({image:"image"}),ts=Object.freeze({image:"image"}),ns=()=>({anchors:[],vertices:[],matrix:[]}),rs={onParentEvent:async(e,t,n,r)=>{const i={anchors:[],vertices:[],matrix:[],...r.getState()},o=window,s=n.data.type===me.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=Ee(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(es.image,{type:me.ImageData,value:m})}var a,c,l;console.log("Environment not supported")},getInputNames:()=>[{name:ts.image,type:me.ImageData}],getOutputNames:()=>[{name:es.image,type:me.ImageData}],getDefaultState:ns,terminate:async e=>{const t=e.getState();t.$$private?.pipeline.release()}},is=()=>({outputPortCount:3}),os=Object.freeze({event:"event"}),ss=e=>String(e+1),as=e=>Math.max(2,Math.min(10,e??3));var cs={onParentEvent:async(e,t,n,r)=>{const i={outputPortCount:3,...r.getState()},o=as(i.outputPortCount);r.setState({...i,$$lastEventType:n.data.type});for(let e=0;e<o;e++)await r.invokeNextWidget({port:ss(e),data:n.data})},getInputNames:()=>[{name:os.event,type:me.Anything}],getOutputNames:e=>{const t={outputPortCount:3,...e},n=as(t.outputPortCount),r={type:t.$$lastEventType??me.Anything},i=[];for(let e=0;e<n;e++)i.push({name:ss(e),...r});return i},getDefaultState:is};const ls=()=>({name:"myVar",type:me.Anything,reactive:!0,defaultValue:""}),us=Object.freeze({set:"set",read:"read"}),ds="value";var hs={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...ls(),...i};if(t.name!==us.set){if(t.name===us.read){const e=li({variableName:o.name,readerWidgetId:r.id}),t=e?e.value:o.defaultValue;await r.nextWidget(ds,{type:o.type,value:t})}}else{if(n.data.type!==o.type&&o.type!==me.Anything)return;await ci({variableName:o.name,value:n.data.value,setByWidgetId:r.id,type:o.type})}},getInputNames:e=>{const t={...e};return[{name:us.set,type:t.type||me.Anything},{name:us.read,type:me.Anything}]},getOutputNames:e=>{const t={...e};return[{name:ds,type:t.type||me.Anything}]},initialize:async e=>{const t=e.getState(),n={...ls(),...t};if(n.$$abortListener)try{n.$$abortListener()}catch(t){console.warn(`Error aborting variable listener for widget ${e.widgetId}: `,t)}si({variableName:n.name,type:n.type,createdByWidgetId:e.widgetId});const r=ui({variableName:n.name,type:n.type,widgetId:e.widgetId,onValueChange:async t=>{const n=e.getState();void 0!==t.value&&(n.type!==me.Anything&&t.type!==n.type||n.reactive&&await e.nextWidget(ds,{type:t.type,value:t.value}))}});e.setState({...n,$$abortListener:r})},terminate:async e=>{const t=e.getState(),n={...ls(),...t};n.$$abortListener&&n.$$abortListener(),ai({variableName:n.name,createdByWidgetId:e.widgetId})}};const fs=async(e,t=!1)=>{const n=vi();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 ps={onParentEvent:async(e,t,n,r)=>{const i={dynamicInputs:{},dynamicOutputs:{},customState:{},...r.getState()};if(!e)return;const o=se(r.recipePoolId);if(!o)throw new Error(`Recipe [${r.recipePoolId}] not found`);const s=vi();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=se(e.recipePoolId),r=n?.name||"",i=vi(),o=await fs(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=vi(),r=await fs(t,!0);if(r)return n.terminateServiceInstance(r,e.widgetId,e.recipePoolId,t.variantId)}};const gs=Object.freeze({Image:"image"}),ms=Object.freeze({Image:"image"}),ys=()=>({filters:[{name:"grayscale",value:"0.5",id:"d-1"}]});var vs={onParentEvent:async(e,t,n,r)=>{const i={filters:[{name:"grayscale",value:"0.5",id:"d-1"}],...r.getState()};if(t.name===gs.Image&&(n.data.type===me.ImageData||n.data.type===me.Anything)){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=Ee(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(ms.Image,{type:me.ImageData,value:t})}},getInputNames:()=>[{name:gs.Image,type:me.ImageData}],getOutputNames:()=>[{name:ms.Image,type:me.ImageData}],getDefaultState:ys};const bs="loaded";var ws={onParentEvent:async(e,t,n,r)=>r.nextWidget(bs,{value:!0,type:me.Boolean}),getInputNames:()=>[],getOutputNames:()=>[{name:bs,type:me.Boolean,description:"Triggered when the recipe is fully loaded"}]};var Ss={onParentEvent:async()=>{},getInputNames:()=>[],getOutputNames:()=>[],getDefaultState:()=>({text:"",color:"#eac43e",size:{width:300,height:200}})};var _s,Is={onParentEvent:async(e,t,n,r)=>{try{const e=((e,t)=>{switch(t){case me.Number:case me.Boolean:case me.String:return String(e);case me.Array:case me.JsonObj:case me.Rect:case me.Point:return JSON.stringify(e,((e,t)=>"bigint"==typeof t?t.toString():t));case me.ArrayBuffer:if(e instanceof ArrayBuffer){if(ne)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 me.ImageData:if(!Le(e))throw new Error("Expected ImageData");return ze(e);default:return String(e)}})(n.data.value,n.data.type);return r.nextWidget("text",{type:me.String,value:e})}catch(e){return r.nextWidget("error",{type:me.String,value:e instanceof Error?e.message:"Failed to stringify object"})}},getInputNames:()=>[{name:"object",type:[me.Number,me.String,me.ArrayBuffer,me.Array,me.Boolean,me.JsonObj,me.Rect,me.Point,me.ImageData]}],getOutputNames:()=>[{name:"text",type:me.String},{name:"error",type:me.String}],getDefaultState:()=>({})};!function(e){e.ApplicationJson="application/json",e.ApplicationOctetStream="application/octet-stream",e.ApplicationPdf="application/pdf",e.ApplicationXml="application/xml",e.ApplicationZip="application/zip",e.AudioMpeg="audio/mpeg",e.AudioOgg="audio/ogg",e.AudioMp3="audio/mp3",e.ImagePng="image/png",e.ImageJpeg="image/jpeg",e.TextPlain="text/plain",e.TextCsv="text/csv",e.TextHtml="text/html",e.TextMarkdown="text/markdown",e.VideoMp4="video/mp4",e.VideoOgg="video/ogg"}(_s||(_s={}));const xs=e=>{const t=e.toLowerCase();return t===_s.ImagePng||t===_s.ImageJpeg},ks=()=>({mimeType:_s.ApplicationOctetStream,fileName:"output.bin"}),Es=Object.freeze({data:"data",fileName:"fileName"}),Cs=Object.freeze({file:"file"}),$s=e=>{const t=e.toLowerCase();return t.startsWith("text/")||t===_s.ApplicationJson||t.endsWith("+json")||t===_s.ApplicationXml||t.endsWith("+xml")},Ns=e=>{const t=e.toLowerCase();return t.startsWith("audio/")||t.startsWith("video/")},Os=e=>(e||"").trim()||_s.ApplicationOctetStream,Ts=e=>{const t=(new TextEncoder).encode(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n},As=e=>{const t=(e||"").trim();if(!t)throw new Error("File name is required");return t};var Ps={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...ks(),...i};if(t.name===Es.fileName){if(!(n.data.type===me.String||n.data.type===me.Anything&&"string"==typeof n.data.value))throw new Error("Invalid data type, expected a String type");const e=As(n.data.value);return void r.setState({...o,fileName:e})}if(t.name!==Es.data)return;const s=Os(o.mimeType),a=As(o.fileName),c=((e,t)=>t===me.ImageData||Le(e)?me.ImageData:t===me.ArrayBuffer||e instanceof ArrayBuffer||e instanceof Uint8Array||e instanceof Uint8ClampedArray?me.ArrayBuffer:t===me.String||"string"==typeof e?me.String:t===me.BinaryFile||Be(e)?me.BinaryFile:me.Anything)(n.data.value,n.data.type);let l;switch(c){case me.ImageData:if(!s.toLowerCase().startsWith("image/"))throw new Error(`Input type ImageData is not compatible with target mime type "${s}". Expected an image/* mime type.`);if(!xs(s))throw new Error(`Unsupported image conversion target mime type "${s}". Only "${_s.ImagePng}" and "${_s.ImageJpeg}" are supported for ImageData inputs.`);l=((e,t)=>{const n=Os(t);if(!xs(n))throw new Error(`Unsupported image conversion target mime type "${t}". Only "${_s.ImagePng}" and "${_s.ImageJpeg}" are supported for ImageData inputs.`);const r=Ee(e.width,e.height),i=Ce(r);if(!i)throw new Error("Failed to get canvas context");i.putImageData(e,0,0);const o=n.toLowerCase(),s=r.toDataURL(o);if(!s)throw new Error("Failed to convert canvas to data URL");const[,a]=s.split(",");if(!a)throw new Error("Unexpected data URL format while encoding image");return Re(a)})(n.data.value,s);break;case me.ArrayBuffer:l=(e=>{if(e instanceof ArrayBuffer)return e;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray){const t=new Uint8Array(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}throw new Error("Expected binary data (ArrayBuffer or Uint8Array) for non-text mime type")})(n.data.value);break;case me.String:if(Ns(s))throw new Error(`Input type String is not compatible with target mime type "${s}". Audio/video mime types require ArrayBuffer input.`);if(!$s(s)&&s!==_s.ApplicationOctetStream)throw new Error(`Input type String is not compatible with target mime type "${s}". Expected a text/* or application/json mime type.`);l=Ts(n.data.value);break;case me.BinaryFile:{const e=n.data.value,t=(e.format||"").toLowerCase(),r=s.toLowerCase();if(t!==r&&r!==_s.ApplicationOctetStream)throw new Error(`Input BinaryFile format "${t}" is not compatible with target mime type "${s}".`);if(!(e.data instanceof ArrayBuffer))throw new Error("BinaryFile.data must be an ArrayBuffer");l=e.data;break}default:if(Ns(s))throw new Error(`Input type "${me[n.data.type]||n.data.type}" is not compatible with target mime type "${s}". Audio/video mime types require ArrayBuffer input.`);if(!$s(s))throw new Error(`Input type "${me[n.data.type]||n.data.type}" is not compatible with target mime type "${s}".`);{const e=JSON.stringify(n.data.value);l=Ts(e)}}const u=(e=>{const{data:t,mimeType:n,fileName:r}=e;return{format:n,fileName:r,data:t}})({data:l,mimeType:s,fileName:a});return r.invokeNextWidget({port:Cs.file,data:{type:me.BinaryFile,value:u}})},getInputNames:()=>[{name:Es.fileName,type:[me.String,me.Anything]},{name:Es.data,triggerPort:!0,type:[me.ImageData,me.ArrayBuffer,me.String,me.Anything]}],getOutputNames:()=>[{name:Cs.file,type:me.BinaryFile,label:"file"}],getDefaultState:ks};const Ms=(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},Ds=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)}`)}},Rs=e=>{const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return e.replace(/[&<>"'/]/g,(e=>t[e]))},js=()=>new Proxy({},{get(e,t){if("string"==typeof t){const e=ho.getGlobalVariable(t);return e?.lastValue??void 0}}}),Ls=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},Fs=(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()}),Us={$capitalize:e=>"string"!=typeof e||0===e.length?e:e.replace(/\S+/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())),$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 ee&&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}}},Bs=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},Ws=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}},Gs=(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},Vs=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}},Hs=(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},Ys=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}},zs=(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=ho.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},qs=async e=>{const{template:t,context:n={},options:r={}}=e,{helpers:i={},enableFnTag:o=!1,securityOptions:s={},recipeUuid:a,serviceName:l,enableSecretsBracketNotation:u=!1}=r,d={...Us,...i},h=js(),f=Fs(),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=Bs(e);for(const e of n)Ls(e.expression).forEach((e=>t.add(e)));return t})(t),n=Array.from(e);if(n.length>0)try{y=await Pi({recipeUuid:a,secretNames:n,serviceName:l})}catch(e){console.error("Failed to fetch secrets for template:",e),y={}}m=y}const v={...p,$vars:h,date:f,chunkArray:Ms};void 0!==m&&(v.$secrets=m);const b={...d};b.$fn=e=>Ds({code:e,enableFnTag:o,context:v,securityOptions:s});const w=new c({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=Bs(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=Ys(e.expression);if(n.hasVarsBracketAccess&&n.bracketPath&&n.objectName)t=zs(n.bracketPath,n.objectName,w,{...v,...b},u);else{const n=Vs(e.expression);if(n.hasObjectBracketAccess&&n.objectName&&n.bracketPath)t=Hs(n.objectName,n.bracketPath,w,{...v,...b});else{const n=Ws(e.expression);t=n.hasFunctionPropertyAccess&&n.functionCall&&n.propertyPath?Gs(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=Rs(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),_},Ks=()=>({text:"",format:"Text"});var Js={onParentEvent:async(e,t,n,r)=>{const i={text:"",format:"Text",...r.getState()},{uuid:o}=Mi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await qs({template:i.text,context:{input:n.data.value},options:{enableFnTag:!0,recipeUuid:o}});return r.nextWidget("text",{type:me.String,value:s})},getInputNames:()=>[{name:"input",type:me.Anything}],getOutputNames:()=>[{name:"text",type:me.String}],getDefaultState:Ks};const Zs=()=>({expression:""}),Xs=async e=>{const{expression:t,recipeUuid:n,serviceName:r,enableFnTag:i=!0,customContext:o={}}=e,s=Symbol("abort");try{const e={restrictionLevel:"strict"},a=js(),c=Fs();let l;if(n&&t.includes("$secrets")){const e=Array.from(Ls(t));if(e.length>0)try{l=await Pi({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:Ms,...Us};void 0!==l&&(u.$secrets=l);const d=Ds({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 Qs={onParentEvent:async(e,t,n,r)=>{const i={expression:"",...r.getState()},{uuid:o}=Mi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await Xs({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:me.Anything}],getOutputNames:e=>[{name:"result",type:e.$$lastResultType||me.Anything}],getDefaultState:Zs};const ea={};let ta={};const na=new a;let ra=!1,ia=!1,oa=!1,sa=null,aa=null;const ca="processing-state-change",la="breakpoint-change",ua="error-event",da={abortRequested:!1,isPaused:!1,pausePromise:null,pausePromiseResolve:null,lastPausedWidgetId:null},ha=e=>(aa=e,na.emit(ca,e)),fa=(e,t)=>`${e}-${t}`,pa=(e,t)=>`state-change:${fa(e,t)}`,ga=e=>{const{thingId:t,widgetId:n}=e,r=fa(t,n);return ea[r]||{isProcessing:!1}},ma=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 ya=null;const va={},ba=()=>{da.abortRequested=!1,da.isPaused=!1},wa=e=>(da.pausePromise||(da.isPaused=!0,da.pausePromise=new Promise((e=>{da.pausePromiseResolve=e})),e&&(da.lastPausedWidgetId=e),ha({isProcessing:!0,isPaused:!0,...e?{pauseTrapWidgetId:e}:{}})),da.pausePromise),Sa=()=>{da.pausePromiseResolve&&da.isPaused&&(da.pausePromiseResolve(),da.pausePromise=null,da.pausePromiseResolve=null,da.lastPausedWidgetId=null,da.isPaused=!1,ha({isProcessing:!0,isPaused:!1}))},_a=()=>{na.emit(la,{breakpoints:{...ta}})};var Ia={getExecutionState:ga,startProcessing:async e=>{const{thingId:t,widgetId:n}=e,r=fa(t,n),i=pa(t,n),o=ga({thingId:t,widgetId:n});if(o.isProcessing)return;const s={isProcessing:!0,isPaused:!1,startTime:Date.now()};ea[r]=s,ra||(ra=!0,sa=null,await ha({isProcessing:!0,isPaused:!1})),await na.emit(i,{thingId:t,widgetId:n,prevState:o,newState:s})},endProcessing:async e=>{const{thingId:t,widgetId:n,error:r}=e,i=fa(t,n),o=pa(t,n),s=ga({thingId:t,widgetId:n}),a={isProcessing:!1,isPaused:!1,startTime:s.startTime,endTime:Date.now(),error:r};ea[i]=a,await na.emit(o,{thingId:t,widgetId:n,prevState:s,newState:a}),r&&(sa=r,(e=>{const{error:t,stateKey:n}=e,r=ma(t);va[r]={error:t,stateKey:n},ya&&clearTimeout(ya),ya=setTimeout((()=>{for(const e in va)na.emit(ua,va[e].error),delete va[e]}),250)})({error:r,stateKey:i})),ra&&0===Object.values(ea).filter((e=>e.isProcessing)).length&&(ra=!1,ia=!1,ba(),await ha({isProcessing:!1,isPaused:!1}))},onWidgetExecutionStateChange:e=>{const{thingId:t,widgetId:n,listener:r}=e,i=pa(t,n);return na.on(i,(async e=>{if(e.thingId===t&&e.widgetId===n)return r(e)}))},onGlobalProcessingStateChange:e=>na.on(ca,e),clearExecutionStates:()=>{ra=!1;for(const e in ea)delete ea[e];da.abortRequested=!1,da.isPaused=!1,da.pausePromise=null,da.pausePromiseResolve=null,da.lastPausedWidgetId=null,na.clearListeners()},shouldAbortProcessing:()=>da.abortRequested,abortProcessing:()=>{da.abortRequested=!0,ia=!0,Sa()},resetAbortProcessing:ba,pauseProcessing:()=>{wa()},resumeProcessing:Sa,isProcessingPaused:()=>null!==da.pausePromise,getLastPausedWidgetId:()=>da.lastPausedWidgetId,setLastPausedWidgetId:e=>{da.lastPausedWidgetId=e,da.isPaused=!0,ha({isProcessing:!0,isPaused:!0,pauseTrapWidgetId:e})},getPausePromise:()=>ia||oa?null:da.pausePromise,setBreakpoint:e=>{ta[e]=!0,_a()},getAllBreakpoints:()=>({...ta}),hasBreakpoint:e=>oa?null:ta[e]??null,onBreakpointChange:e=>na.on(la,(async t=>e(t))),removeBreakpoint:e=>{delete ta[e],_a()},toggleBreakpoint:(e,t)=>(ta[e]=t??!ta[e],_a(),ta[e]),clearBreakpoints:()=>{ia=!1,ta={},_a()},trapsDisabled:()=>ia,getPauseTrapForWidget:e=>wa(e),disableBreakpoints:()=>{oa=!0},enableBreakpoints:()=>{oa=!1},onErrorEvent:e=>na.on(ua,e),getLastError:()=>sa,getLastGlobalProcessingState:()=>aa,clearErrorNotification:e=>{const t=ma(e),n=va[t];if(r=sa,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;ea[e].error=null}sa=null}var r,i;delete va[t]}};var xa={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&&Ia.clearErrorNotification({targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,error:t.message}),await r.nextWidget("error",{type:me.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:me.Anything}],getOutputNames:e=>[{name:"event",type:{...e}.$$lastEventType??me.Anything},{name:"error",type:me.JsonObj,jsonShape:{error:me.JsonObj,inputEvent:me.JsonObj}}]};const ka={},Ea=Object.freeze({output:"output"}),Ca=Object.freeze({read:"read",clear:"clear"}),$a=()=>({$$$time:0,totalInputs:1});var Na={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalInputs:1,...r.getState()};if(ka[r.id]||(ka[r.id]={}),t.name===Ca.clear)return ka[r.id]={},void r.setState(i);const o=t.name===Ca.read;if(!(o||n.data.type!==me.JsonObj&&n.data.type!==me.Anything&&n.data.type!==me.Rect||"object"!=typeof n.data.value||null===n.data.value||Array.isArray(n.data.value))){const e=ka[r.id]||{};ka[r.id]={...e,...n.data.value}}if(o){const e={...ka[r.id]};return ka[r.id]={},r.setState({...i}),r.nextWidget(Ea.output,{type:me.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:me.Anything})));return n.push({name:Ca.clear,type:me.Anything},{name:Ca.read,type:me.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:Ea.output,type:me.JsonObj}],getDefaultState:$a,initialize:async e=>{ka[e.widgetId]={}},terminate:async e=>{delete ka[e.widgetId]}};const Oa={},Ta=Object.freeze({output:"output",index:"index",finish:"finish"}),Aa=Object.freeze({array:"array",next:"next",clear:"clear"}),Pa=()=>({autoLoop:!1,autoClear:!1,$$outputType:me.Anything,totalItems:0,currentIndex:0});var Ma={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Pa(),...i};if(t.name===Aa.clear)return delete Oa[r.id],void r.setState({...Pa(),autoLoop:o.autoLoop,autoClear:o.autoClear});if(t.name!==Aa.array)t.name===Aa.next&&await(async e=>{const t=e.id,n=Oa[t],r={...Pa(),...e.getState()};if(n&&n.index<n.list.length){const i=n.index,o=n.list[i];await e.nextWidget(Ta.index,{type:me.Number,value:i}),await e.nextWidget(Ta.output,{type:r.$$outputType,value:o}),n.index++,e.setState({...r,currentIndex:n.index}),n.index===n.list.length&&(await e.nextWidget(Ta.finish,{type:me.Boolean,value:!0}),r.autoClear?(delete Oa[t],e.setState({...Pa()})):(n.index=0,e.setState({...r,currentIndex:0})))}})(r);else if((n.data.type===me.Array||n.data.type===me.Anything)&&Array.isArray(n.data.value)){const e=n.data.value,t=e[0],i=void 0!==t?We(t):me.Anything,s={list:e,index:0};Oa[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(Ta.index,{type:me.Number,value:e}),await r.nextWidget(Ta.output,{type:a.$$outputType,value:t}),s.index++}await r.nextWidget(Ta.finish,{type:me.Boolean,value:!0}),a.autoClear?(delete Oa[r.id],r.setState({...a,$$outputType:me.Anything,totalItems:0,currentIndex:0})):(s.index=0,r.setState({...a,currentIndex:0}))}}},getInputNames:()=>[{name:Aa.array,type:me.Array},{name:Aa.next,type:me.Anything},{name:Aa.clear,type:me.Anything}],getOutputNames:e=>{const t={...Pa(),...e};return[{name:Ta.index,type:me.Number},{name:Ta.output,type:t.$$outputType},{name:Ta.finish,type:me.Anything}]},getDefaultState:Pa,initialize:async e=>{const t={...Pa(),...e.getState()};Oa[e.widgetId]={list:[],index:0},e.setState({...t,currentIndex:0,totalItems:0})},terminate:async e=>{delete Oa[e.widgetId]}};var Da={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};i.name&&e&&Hi({name:i.name,sourceWidget:e?.sourceWidgetId,widgetId:r.id,widgetType:Je.status,value:{type:n.data.type,value:n.data.value}})},getOutputNames:()=>[],getInputNames:()=>[{name:"status",type:me.Anything}],terminate:async e=>{qi(e.widgetId)},initialize:async e=>{const t={name:"",...e.getState()};Hi({name:t.name||"",sourceWidget:"",widgetType:Je.status,widgetId:e.widgetId,value:null})}};const Ra={onParentEvent:async(e,t,n,r)=>{if(!r.eventContext)return;const i=r.eventContext;if(i?.eventKey)return lt(i.eventKey,n.data.value);console.error("No event key found in context event")},getOutputNames:()=>[],getInputNames:()=>[{name:"event",type:me.Anything}]},ja="read",La="setValue",Fa=new Map,Ua=new Map,Ba=(e,t)=>{const n=`${e}_${t}`,r=Fa.get(n);r&&(r(),Fa.delete(n))},Wa=(e,t,n)=>{const r=`${e}_${t}`;n?Fa.set(r,n):Fa.delete(r)};var Ga={onParentEvent:async(e,t,n,r)=>{const i={name:"",reactive:!1,lastConfiguration:null,...r.getState()};if(!i.name)return;const o=ho.getGlobalVariable(i.name);if(o)if(t.name===ja)o&&null!==o.lastValue&&null!==o.lastDataType&&await r.invokeNextWidget({port:"value",data:{type:o.lastDataType,value:o.lastValue}});else if(t.name===La){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!==me.BinaryFile||"image"===o.controlType&&n.data.type!==me.ImageData||("text"===o.controlType||"multilineText"===o.controlType)&&n.data.type!==me.String||"checkbox"===o.controlType&&n.data.type!==me.Boolean&&n.data.type!==me.Number||"button"===o.controlType&&n.data.type!==me.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})),Ua.set(r.id,{eventId:r.eventId,varName:i.name,type:n.data.type});const{group:t,name:s}=Qi(i.name);await ho.setGlobalVariable({name:s,group:t,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=me.Anything;if(t.name){const e=ho.getGlobalVariable(t.name);e?.lastDataType&&(n=e.lastDataType)}return[{name:"value",type:n}]},getInputNames:()=>[{name:ja,type:me.Anything},{name:La,type:me.Anything}],terminate:async e=>{Ba(e.widgetId,"variable"),Ba(e.widgetId,"group"),Ba(e.widgetId,"parentGroup"),Ua.delete(e.widgetId)},initialize:async e=>{const t={name:"",reactive:!1,lastConfiguration:null,...e.getState()};Ba(e.widgetId,"variable"),Ba(e.widgetId,"group"),Ba(e.widgetId,"parentGroup"),Ua.set(e.widgetId,null);let n=t.name;t.name&&!t.name.includes(".")&&t.lastConfiguration?.group&&(n=Xi(t.lastConfiguration.group,t.name),e.setState({...t,name:n}));const r=ho.getGlobalVariable(n);if(!r&&t.lastConfiguration?.controlType){const{group:r,name:i}=Qi(n);if(r){if(!ho.getGlobalVariable(r)){const{name:e,group:n}=Qi(r);await ho.setGlobalVariable({name:e,group:n,helpText:t.lastConfiguration.groupHelpText??void 0,controlType:"group",value:null,disableChangeNotifications:!0,disableDefineNotifications:!1})}}await ho.setGlobalVariable({name:i,helpText:t.lastConfiguration.helpText,controlType:t.lastConfiguration.controlType,controlSettings:t.lastConfiguration.controlSettings,order:t.lastConfiguration.order,value:null,group:r,disableChangeNotifications:!0,disableDefineNotifications:!1});const o=Xi(r,i);e.setState({...t,name:o})}else r&&e.setState({...t,name:n,lastConfiguration:{...t.lastConfiguration,controlType:r.controlType,controlSettings:r.controlSettings,helpText:r.helpText,group:r.group}});if(n){const t=ho.onGlobalVariableParentGroupChange(n,(async t=>{const n=e.getState();let r;if(t.group){const e=ho.getGlobalVariable(t.group);e&&(r=e.helpText??void 0)}const i=t.name;e.setState({...n,name:i,lastConfiguration:{controlType:t.controlType,controlSettings:t.controlSettings,helpText:t.helpText,group:t.group,groupHelpText:r,order:t.order}})}));Wa(e.widgetId,"group",t)}if(n){const t=ho.onVarParentGroupStateChange(n,(async t=>{const r=e.getState(),{name:i}=Qi(n),o=Xi(t.parentGroup.name,i);e.setState({...r,name:o,lastConfiguration:{...r.lastConfiguration??{},group:t.parentGroup.name,groupHelpText:t.parentGroup.helpText??void 0}})}));Wa(e.widgetId,"parentGroup",t)}if(t.reactive&&n){const t=ho.onGlobalVariableChange(n,(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=Ua.get(e.widgetId);if(n?.varName===t.name&&n.type===t.lastDataType&&n.eventId===t.lastExecutionContext?.eventId)return void Ua.set(e.widgetId,null);await e.invokeNextWidget({port:"value",...t.lastExecutionContext?{executionContext:{...t.lastExecutionContext}}:void 0,data:{type:t.lastDataType,value:t.lastValue}})}}));Wa(e.widgetId,"variable",t)}}};const Va=Object.freeze({input:"input"}),Ha="out",Ya="else",za=()=>({conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0}),qa=e=>null!=e&&("number"==typeof e?0!==e&&!Number.isNaN(e):"string"==typeof e?e.length>0:Boolean(e));var Ka={onParentEvent:async(e,t,n,r)=>{const i={conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0,...r.getState()};if(t.name!==Va.input)return;let o;try{o=Mi(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 Xs({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(qa(a.value)){let a=n.data.value;if(t.output&&"input"!==t.output){const e=await Xs({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):Ha;return i.multipleOutputs||i.$lastOutputType===c||r.setState({...i,$lastOutputType:c}),r.invokeNextWidget({port:l,data:{type:c,value:a}})}}}return r.invokeNextWidget({port:Ya,data:{type:n.data.type,value:n.data.value}})},getInputNames:()=>[{name:Va.input,type:me.Anything}],getOutputNames:e=>{if(!e.multipleOutputs)return[{name:Ha,type:e.$lastOutputType||me.Anything},{name:Ya,type:e.$lastElseOutputType||me.Anything}];const t=Math.max(1,e.conditions?.length||0),n=[];for(let r=0;r<t;r++){const t=e.conditions?.[r]?.$lastOutputType||me.Anything;n.push({name:String(r+1),type:t})}return n.push({name:Ya,type:e.$lastElseOutputType||me.Anything}),n},getDefaultState:za};const Ja=new Map;var Za={registerFunctionHandler:(e,t)=>{Ja.set(e,t)},invokeFunction:async e=>{const{eventId:t,functionName:n,functionParams:r}=e,i=Ja.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=>{Ja.delete(e)},clearAllHandlers:()=>{Ja.clear()}};const Xa=()=>({functionName:""}),Qa="result";var ec={onParentEvent:async(e,t,n,r)=>{const i={functionName:"",...r.getState()};if(!i.functionName||!e)return;const o=r.eventId,s=await Za.invokeFunction({eventId:o,functionName:i.functionName,functionParams:n.data.value});if(null!=s){const e=We(s);await r.invokeNextWidget({port:Qa,data:{type:e,value:s}})}},getOutputNames:()=>[{name:Qa,type:me.Anything}],getInputNames:()=>[{name:"params",type:me.Anything}],getDefaultState:Xa};const tc=new Map,nc="read",rc="setValue",ic="value",oc=(e,t,n)=>{const r=ce({recipeId:e,widgetId:n});if(!r)return null;const i=r.groupId;if(!i)return null;const o=ce({recipeId:e,widgetId:i});return o&&o.type===Je.widgetGroup?{widget:o,thingRecipeId:t}:null};var sc={onParentEvent:async(e,t,n,r)=>{const i={fieldName:"",reactive:!1,...r.getState()};if(!i.fieldName)return;const o=oc(r.recipePoolId,r.thingRecipeId,r.id);if(!o)return;const s=o.widget,a=s.state,c=a.settings||[],l=c.find((e=>e.variableName===i.fieldName));if(l)if(t.name===nc){const e=l.config,t=e.customValue??e.defaultValue;if(void 0!==t){const e=We(t);await r.invokeNextWidget({port:ic,data:{type:e,value:t}})}}else if(t.name===rc){const e=c.map((e=>{if(e.variableName===i.fieldName){const t={...e.config,customValue:n.data.value};return{...e,config:t}}return e}));s.state={...a,settings:e};const t=oi(i.fieldName);await ci({variableName:t,setByWidgetId:s.id,value:n.data.value,type:n.data.type})}},getOutputNames:()=>{const e=me.Anything;return[{name:ic,type:e}]},getInputNames:()=>[{name:nc,type:me.Anything},{name:rc,type:me.Anything}],initialize:async e=>{const t={fieldName:"",reactive:!1,...e.getState()},n=tc.get(e.widgetId);if(n&&(n(),tc.delete(e.widgetId)),t.reactive&&t.fieldName){const n=oc(e.recipePoolId,e.thingRecipeId,e.widgetId);if(!n)return;const r=n.widget,i=oi(t.fieldName),o=ui({variableName:i,type:me.Anything,widgetId:e.widgetId,onValueChange:async t=>{if(t.setByWidgetType===Je.widgetGroup&&t.setByWidgetId===r.id){if(!{fieldName:"",reactive:!1,...e.getState()}.reactive)return;if(void 0===t.value)return;await e.invokeNextWidget({port:ic,data:{type:t.type,value:t.value}})}}});tc.set(e.widgetId,o)}},terminate:async e=>{const t=tc.get(e.widgetId);t&&(t(),tc.delete(e.widgetId))}};const ac=new Map,cc=()=>({scopeName:"default"}),lc=Object.freeze({read:"read",write:"write",clear:"clear"}),uc=Object.freeze({data:"data",empty:"empty"});var dc={onParentEvent:async(e,t,n,r)=>{const i={scopeName:"default",...r.getState()};(()=>{const e=Date.now(),t=[];for(const[n,r]of ac.entries())e-r.updatedAt>18e6&&t.push(n);for(const e of t)ac.delete(e)})();const o=i.scopeName||"default",s=((e,t,n)=>`${e}_${t}_${n.trim()||"default"}`)(r.recipePoolId,r.eventId,o);if(t.name!==lc.write){if(t.name===lc.read){const e=ac.get(s);return e?r.invokeNextWidget({port:uc.data,data:e.data}):r.invokeNextWidget({port:uc.empty,data:n.data})}t.name!==lc.clear||ac.delete(s)}else ac.set(s,{data:n.data,updatedAt:Date.now()})},getInputNames:()=>[{name:lc.read,type:me.Anything},{name:lc.write,type:me.Anything},{name:lc.clear,type:me.Anything}],getOutputNames:()=>[{name:uc.data,type:me.Anything},{name:uc.empty,type:me.Anything}],getDefaultState:cc};const hc={input:ht,counter:gt,elapsed:vt,ifGate:_t,skipEvent:Et,between:Ot,map:Pt,parser:jt,slider:Ut,suspend:Vt,display:Yt,json:Kt,arrayItem:Xt,extractImage:rn,imageConvolution:ln,firstEvent:fn,pixelDraw:Sn,randomBetween:kn,arrayCombine:On,clock:Mn,delay:Bn,multiplication:Hn,object:Zn,widgetGroup:tr,script:Co,base64ToImageData:Po,jsonParse:jo,text:Bo,imageCrop:Ho,imageResize:Ko,value:Qo,imageWarp:rs,sequence:cs,variable:hs,hubService:ps,imageFilter:vs,recipeLoad:ws,note:Ss,stringify:Is,templateString:Js,expressionEval:Qs,rescue:xa,objectCombine:Na,loop:Ma,status:Da,secret:Di,output:Ra,globalVariable:Ga,switch:Ka,edgeFunction:ec,fieldValue:sc,dataToBinaryFile:Ps,eventCache:dc,play:{getInputNames:()=>[],onParentEvent:()=>Promise.resolve(),getOutputNames:()=>[{name:"out",type:me.Boolean}]}},fc={},pc=async()=>{if(!Object.keys(fc).length)for(const e in hc){const t=hc[e];fc[e]=Object.freeze({...t})}};var gc,mc,yc=e=>{if(fc[e])return fc[e];throw new Error(ot(it,e))},vc=pc;!function(e){e.ServiceCreationLog="service-creation-log"}(gc||(gc={})),function(e){e.Service="service",e.ServiceUI="serviceUI"}(mc||(mc={}));let bc={},wc=0,Sc=null;const _c=(e,t)=>{if(e.type===Je.hubService){if(t.type!==Je.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===Je.output&&t.type===Je.input},Ic=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=bc[s];if(a){const c=n[a.widgetId];if(c){const n=a.path,l=r.join("/").startsWith(n);_c(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},xc=e=>{const{context:t,widgetId:n,currentPath:r,executionId:i="default"}=e;if(wc++,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("/");bc[o]={path:o,eventContext:t,widgetId:n,invocationOrder:wc,timestamp:Date.now(),executionId:i}},kc=e=>{const t=Ic(e);return t.length>0?t[t.length-1]:null},Ec=()=>{bc={},wc=0},Cc=e=>{Sc=e},$c=()=>{bc={},wc=0};let Nc,Oc,Tc,Ac=!1,Pc=0,Mc=0;const Dc=async e=>{const{widgetId:t,thingId:n,recipeId:r,targetPortName:i,data:o}=e,s=ae(r,n);if(!s)return;const a=s.gates[t];if(!a||a.disabled)return;const c={...o,timestamp:Date.now()},l=yc(a.type);Mc+=1;const u=Uc({gateId:t,originalEvent:c,blockRecipeId:s.recipeId,blockDbId:s.id,blockVersion:s.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:Mc});if(u&&l.onParentEvent){const e={name:i};return Nc&&await Nc({recipeId:r,blockId:s.recipeId,gateId:t,targetPort:e.name,data:o}),l.onParentEvent(null,e,{originalEvent:c,data:{...c}},u)}},Rc=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:me.Boolean,value:!0});const p=h;if("string"==typeof f){const e=ae(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=yc(g.type),v=[...e.currentPath];if(l){0===v.length?v.push(`${l}:${d?.toString()}`):v.push(l)}if(t){const e=ce({recipeId:i,widgetId:l});e?.type!==Je.hubService&&e?.type!==Je.input||xc({context:t,widgetId:l,currentPath:v,executionId:d?.toString()})}const b=Uc({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){Nc&&await Nc({recipeId:i,blockId:f.recipeId,gateId:r,targetPort:s.name,data:a,sourceGate:n?"interrupt_widget":l,sourcePort:n?he:o});const e={name:c[m].name,type:c[m].type,...c[m].jsonShape?{jsonShape:c[m].jsonShape}:void 0,sourceWidgetId:l};return u||Ci({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)}},jc=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=se(c);if(!h)throw new Error(`Failed to find recipe "${c}" in cache`);const f=h.dbInfo.recipeType,p=le(c,o,i);if(!p)return;const g={...r,timestamp:n.timestamp},m=yc(p.type);let y;y=p.type===Je.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=ae(c,o);if(!e)return;null===d&&(Mc+=1,d=Mc),Ei({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=He(p.children[u]?.sourcePort),m=He(p.children[u]?.targetPort);if(h.portName===t&&s&&!s.disabled){if(Ac&&Ia.getPausePromise()&&(Ia.setLastPausedWidgetId(s.id),await Ia.getPausePromise()),Ia.hasBreakpoint(s.id)&&!Ia.trapsDisabled()&&"innerInput"!==m?.portType){const e=Ia.getPauseTrapForWidget(s.id);await e}if(Ac&&Ia.shouldAbortProcessing())break;const u=yc(s.type);let h;const v={recipePoolId:c,recipeType:f,thingRecipeId:o,widgetId:i};h=s.type===Je.hubService?await u.getInputNames(s.state,v):u.getInputNames(s.state,v);const b=h.find((e=>e.name===m.portName));if(b){Ac&&await Ia.startProcessing({thingId:o,widgetId:s.id}),Pc++;if(!await Rc({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===Je.hubService&&"CHILD_WIDGET_ERROR"===e.errCode;if(e instanceof Ur)throw e;if(n&&e.errData){const t=e.errData;throw new Ur(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 Ur(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(Pc--,Ac)return Ia.endProcessing({thingId:o,widgetId:s.id,error:r})})))break}}}}catch(e){if(e instanceof Ur)throw e;console.error(`Error processing next widget [${i}]: ${e}`)}finally{Pc<0&&(console.warn("Active execution counter is negative, this should never happen"),Pc=0),0===Pc&&Ec()}}},Lc=async(e,t,n,r)=>{const i=se(r);if(!i)return null;const o=ae(r,n);if(!o)return o;const s=o.gates,a=o.gates[t],c=yc(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=He(r.targetPort);if(r.childId===e&&o.portName===t)return i}}return null})(t,l[u].name,s);if(e){const t=yc(e.type);return{getValue:()=>"function"==typeof t.getValue?t.getValue():null}}}return null},Fc=e=>{const{gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}=e;if(!se(s))throw new Error(`Failed to find recipe "${s}" in cache`);if(!le(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=>jc({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})},Uc=e=>{const{gateId:t,originalEvent:n,blockRecipeId:r,blockDbId:i,blockVersion:o,recipeId:s,currentPath:a,eventId:c}=e,l=se(s);if(!l)throw new Error(`Failed to find recipe "${s}" in cache`);const u=le(s,r,t);if(!u)return console.warn(`Gate ${t} not found in block ${r} for recipe ${s}`),null;const d=Fc({gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}),h=kc({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 nt.createInterrupt({type:n,recipePoolId:s,thingId:r,targetWidgetId:t,sourceWidgetId:a,portName:i,config:o,data:c,customId:l})},cancelInterrupt:e=>nt.destroyInterrupt(e),invokeNextWidget:d,nextWidget:f,nextGate:f,getParentAtPort:e=>Lc(e,t,r,s),getState:()=>Object.freeze({...u.state,...u.type===Je.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===Je.input&&!e.customInputs&&{customInputs:[]}},i={...u.state};u.state=n,Oc&&Oc({blockId:r,gateId:t,prevState:i,newState:{...n},recipeId:s})}};return p};nt.setInvokeChildGateCb(Rc),nt.setConsumeEventCounterCb((()=>++Mc));const Bc=(e,t,n,r,i)=>{const o=le(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 nt.createInterrupt({type:i,recipePoolId:e,thingId:n,targetWidgetId:r,sourceWidgetId:r,portName:o,config:s,data:a})},a=()=>Object.freeze({...o.state,...o.type===Je.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===Je.input&&!e.customInputs&&{customInputs:[]}};o.state=t},l=async t=>{const r=((e,t,n)=>{const r=se(e);if(!r)throw new Error(`Recipe [${e} does not exist]`);if(!r.storage)return null;const i=ae(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=Fc({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}},Wc=new a,Gc="invoked",Vc="state",Hc=()=>{nt.destroyAllInterrupts()},Yc=async(e,t,n)=>{const r=se(e),i=le(e,t,n);if(i&&r){const o=yc(i.type);if(o&&"function"==typeof o.terminate){const i=((e,t,n,r)=>Bc(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)}}}},zc=async e=>{const{recipePoolId:t,thingRecipeId:n,widgetRecipeId:r,options:i}=e,o=se(t),s=le(t,n,r);if(s&&o){const e=yc(s.type);if(e&&"function"==typeof e.initialize){const a=((e,t,n,r)=>Bc(e,t,n,r,!0))(t,o.dbInfo.recipeType,n,r);if(a){const t=e.initialize;try{(e=>{if(e.type===Je.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=oi(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}}}}},qc=(e,t)=>{const n=se(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}`,Jc=e=>{Wc.emit(Kc(Vc),e),Wc.emit(Kc(Vc,e.blockId,e.gateId),e)};Nc=async e=>{await Wc.emit(Kc(Gc),e),await Wc.emit(Kc(Gc,e.blockId,e.gateId),e)},(e=>{Oc=e})(Jc);var Zc=async(e,t,n,i,o)=>{const s=((e,t)=>{let n=r(4);for(;re[n];)n=r(4);const i=Q(e);return i.logs="",i.addLog=e=>{i.logs+=`${ue()}:: ${e}\n`},i.dbInfo={...t},re[n]=i,n})(e,{id:t,authorId:i,version:n,recipeType:o});$i(),$c(),Cc(o),e.globalVariables&&ho.registerGlobalVariables(e.globalVariables);const a=se(s);return a&&(a.startedAt=Date.now(),a.retryAttempts=0,a.execCounter=0,a.status=X.STARTING,a.addLog("recipe registered")),s},Xc=async e=>{const t=se(e);if(!t)return null;t.addLog("terminating recipe"),Hc(),Ia.clearExecutionStates();for(const n in t.blocks){const r=t.blocks[n];for(const t in r.gates)await Yc(e,n,t)}(e=>{!!re[e]&&delete re[e]})(e)},Qc=async(e,t)=>{const n=se(e),r=[],i=[];if(n){zi(),di({recipePoolId:e,thingId:pe});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===wr.Desktop){const e=s.gates[t];if(e.type===Je.hubService){const r=e.state;if(r?.service?.webOnly){n?.addLog(`skipping initialization of web-only widget "${t}"`);continue}}e.type===Je.recipeLoad&&i.push(e)}await zc({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=pe,waitForOutputChild:o=!0}=t;return(async e=>{const{inputName:t,data:n,recipePoolId:r,thingId:i,waitForOutputChild:o=!0}=e,s=se(r),a=ae(r,i),c=Date.now();if(a&&s){Mc+=1;for(const e in a.gates){const s=a.gates[e];if(s.type===Je.input&&!s.disabled){const l=s.state.inputName||"";if(l===t){const t=yc(s.type),u={...n,timestamp:c},d=Uc({gateId:e,originalEvent:u,blockRecipeId:i,blockDbId:a.id,blockVersion:a.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:Mc});if(d&&t.processEvent){const s={...d,getState:d.getState,waitForOutputChild:o};if(Nc&&await Nc({recipeId:r,blockId:i,gateId:e,targetPort:dt,data:n}),!Tc)return await t.processEvent(u,s);await Tc(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:pe,recipeId:e,targetPortName:bs,data:{type:me.Boolean,value:!0}})}}},el=e=>{yi(e)},tl=(e,t,n,r=!1)=>{const i=qc(t,e);if(i){const{widget:o,thing:s}=i,a={...o.state};o.state=n,r&&Jc({blockId:s.recipeId,gateId:t,recipeId:e,newState:{...n},prevState:a})}},nl=(e,t)=>{const n=qc(t,e);return n?n.widget.state:null},rl=async e=>{const{recipePoolId:t,currentGateId:n,sourcePortName:r,originalEvent:i,data:o,eventContext:s,currentPath:a,eventId:c}=e,l=qc(n,t);if(l)return jc({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})},il=()=>{Ac=!0},ol=Ni;const sl=async e=>{const t=async(e,n)=>{if(null==e)return null;switch(n){case"image":return await qe({base64Str:e});case"binaryFile":{const t=e;let n;const r=((e,{minLength:t=4,maxChars:n=1e4,allowDataURI:r=!0,allowBase64Prefix:i=!0,sliceAndTest:o=!0}={})=>{if("string"!=typeof e)return!1;let s=e.trim();if(!s)return!1;if(r){const e=s.match(/^data:([^;,]+)?;base64,(.*)$/i);if(e){const t=e[2]??"";if(/[\r\n]/.test(t))return!1;s=t}}if(i&&s.startsWith("base64:")&&(s=s.substring(7)),s=s.replace(/\s+/g,""),!s)return!1;if(s.length>n){if(!o)return!1;s=s.slice(0,n)}const a=/[+/]/.test(s),c=/[-_]/.test(s);if(a&&c)return!1;if(c?!/^[A-Za-z0-9_-]*={0,2}$/.test(s):!/^[A-Za-z0-9+/]*={0,2}$/.test(s))return!1;const l=s.match(/=+$/)?.[0].length??0;if(l>2)return!1;if(/=/.test(s.slice(0,s.length-l)))return!1;if(s.length<Math.max(4,t))return!1;let u,d=c?s.replace(/-/g,"+").replace(/_/g,"/"):s;s.length%4&&(d=d.padEnd(d.length+(4-d.length%4),"="));try{if("undefined"!=typeof Buffer&&"function"==typeof Buffer.from)u=new Uint8Array(Buffer.from(d,"base64"));else{if("function"!=typeof atob)return!1;{const e=atob(d);u=new Uint8Array(e.length);for(let t=0;t<e.length;t++)u[t]=e.charCodeAt(t)}}}catch{return!1}if(0===u.length)return!1;let h=(e=>{if("undefined"!=typeof Buffer)return Buffer.from(e).toString("base64");let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)})(u);c&&(h=h.replace(/\+/g,"-").replace(/\//g,"_"));const f=e=>e.replace(/=+$/g,""),p=f(h)===f(s);if(!p)return!1;const g=String.fromCharCode(...u),m=/^[\x09\x0A\x0D\x20-\x7E]*$/.test(g);return!(s.length<=20&&!m||s.length<=20&&/^[A-Za-z0-9_-]+$/.test(s)&&m&&!p||s.length<=50&&/^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9._+-]+$/.test(s)&&m||s.length>20&&/^[A-Za-z0-9_-]+$/.test(s)&&!/=/.test(s)&&m&&!p||s.length>20&&/^[A-Za-z0-9_-]+$/.test(s)&&!/=/.test(s)&&!m)})(t.data);if(r)n=await Re(t.data);else{if("string"!=typeof t.data)return console.error("The BinaryFile variable value data is not a string. Unable to deserialize the variable."),null;try{n=(new TextEncoder).encode(t.data).buffer}catch(e){return console.error("Failed to convert the BinaryFile variable value data to an ArrayBuffer. Unable to deserialize the variable.",e),null}}return{...t,data:n}}case"anything":if(Array.isArray(e)){const r=e.map((e=>t(e,n)));return await Promise.all(r)}if("object"==typeof e){const r=e,i={};for(const e in r){const o=r[e];null!=o&&(i[e]=await t(o,n))}return i}return e;default:return e}},n=await Promise.all(e.map((async e=>({...e,lastValue:await t(e.lastValue,e.controlType).catch((e=>(console.error("Failed to deserialize the value of the global variable.",e),null)))}))));return n},al=e=>{try{return JSON.parse(e)}catch(e){return null}},cl="undefined"!=typeof window,ll={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},ul={protocolPrefix:4,txtLength:4},dl=Object.values(ll).reduce(((e,t)=>e+t),0),hl=Object.values(ul).reduce(((e,t)=>e+t),0),fl=["width","height","colorSpace"],pl=(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)||fl.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},gl=(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},ml=(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&&gl(e,o,l)}return e},yl=e=>u(e),vl="KMSG",bl="KCMD",wl=yl("klProtocol");var Sl={encode:(e,t,n)=>{const r={json:e.json},i=pl(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=ll.protocolPrefix+ll.protocolVersion+ll.jsonLength+ll.binaryLength+ll.fromServiceId+ll.toServiceId+ll.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write(vl,f),f+=ll.protocolPrefix,d.writeUInt8(1,f),f+=ll.protocolVersion,d.writeUInt32LE(l,f),f+=ll.jsonLength,d.writeUInt32LE(s,f),f+=ll.binaryLength,d.writeUInt32LE(t,f),f+=ll.fromServiceId,d.writeUInt32LE(n,f),f+=ll.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=ll.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,ll.protocolPrefix);if(t+=ll.protocolPrefix,n!==vl)return null;if(e.byteLength<dl)return wl(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=ll.protocolVersion;const i=e.readUInt32LE(t);t+=ll.jsonLength;const o=e.readUInt32LE(t);t+=ll.binaryLength;const s=e.readUInt32LE(t);t+=ll.fromServiceId;const a=e.readUInt32LE(t);t+=ll.toServiceId;const c=e.readBigInt64LE(t);t+=ll.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,dl);let h=null;return e.byteLength-dl-i-o>0&&(h=e.subarray(dl+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=al(n);if(!i?.json)return wl("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&ml(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=dl+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<dl)return wl("Invalid Header Size"),e;let n=0;return n+=ll.protocolPrefix,n+=ll.protocolVersion,n+=ll.jsonLength,n+=ll.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=ll.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=hl+r,o=Buffer.alloc(i);return o.write(bl,t),t+=ul.protocolPrefix,o.writeUint32LE(r,t),t+=ul.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<hl)return{command:null};const n=e.toString("utf-8",t,ul.protocolPrefix);if(t+=ul.protocolPrefix,n!==bl)return{command:null};const r=e.readUInt32LE(t);t+=ul.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-hl-r;let s=null;o>0&&(s=e.subarray(hl+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const _l="KMSG",Il="KCMD",xl=yl("klProtocol"),kl=new TextEncoder;var El={encode:(e,t,n)=>{const r={json:e.json},i=pl(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=kl.encode(a),l=c.byteLength,u=new ArrayBuffer(ll.protocolPrefix+ll.protocolVersion+ll.jsonLength+ll.binaryLength+ll.fromServiceId+ll.toServiceId+ll.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++]=_l.charCodeAt(e);return d.setUint8(p,1),p+=ll.protocolVersion,d.setUint32(p,l,!0),p+=ll.jsonLength,d.setUint32(p,s,!0),p+=ll.binaryLength,d.setUint32(p,t,!0),p+=ll.fromServiceId,d.setUint32(p,n,!0),p+=ll.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=ll.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<ll.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==_l)return null;if(e.byteLength<dl)return xl.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=ll.protocolVersion;const o=t.getUint32(n,!0);n+=ll.jsonLength;const s=t.getUint32(n,!0);n+=ll.binaryLength;const a=t.getUint32(n,!0);n+=ll.fromServiceId;const c=t.getUint32(n,!0);n+=ll.toServiceId;const l=t.getBigInt64(n,!0);n+=ll.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,dl);let f=null;if(e.byteLength-dl-o-s>0){f=new Uint8Array(e,dl+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=al(o);if(!a?.json)return xl.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&ml(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=dl+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<dl)return xl("Invalid Header Size"),e;let n=0;n+=ll.protocolPrefix,n+=ll.protocolVersion,n+=ll.jsonLength,n+=ll.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=ll.fromServiceId,void 0!==t.toServiceId&&r.setUint32(n,t.toServiceId,!0),e},encodeCommand:e=>{let t=0;const n=kl.encode(e),r=n.byteLength,i=new ArrayBuffer(hl+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=Il.charCodeAt(e);return o.setUint32(t,r,!0),t+=ul.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<hl)return{command:null};let r="";for(let e=0;e<ul.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Il)return{command:null};const i=t.getUint32(n,!0);n+=ul.txtLength;const o=e.byteLength-hl-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-hl)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(hl+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};let Cl=Sl;cl&&(Cl=El);var $l,Nl=Cl;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}($l||($l={}));let Ol=Math.ceil(Date.now()/1e3);let Tl,Al,Pl,Ml,Dl,Rl=!1;var jl=()=>{Rl=!0},Ll=()=>{Rl=!1},Fl=(e,t)=>{if(!Tl)throw new Error("Memory connection not set.");Tl.sendBuf(e,t)},Ul=e=>Al=e,Bl=e=>Dl=e,Wl=e=>Pl=e,Gl=e=>Ml=e;const Vl=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===me.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===me.ImageData&&(e[o]=await Ye(i)):r<t&&await n(i,r+1)}}}};return await n(e,1),e};yl("klTransmissionManager"),yl("ipcClient"),yl("kemuWidgetService"),v(process.argv.slice(2));const Hl=e=>u(`runner:${e}`),Yl=Hl("connectionManager"),zl=Hl("remoteInvoke"),ql=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=cl?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=Nl.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}Ol+=1;const u=`${o}-${Ol}-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=cl?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:e,args:n,messageId:u,type:"execute"}};a(c)&&(h=Nl.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)=>{Ol+=1;const s=`${o}-${Ol}-multicast-${e.substring(0,10)}`;let c=cl?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=Nl.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=Nl.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");ql.setLogger(zl);const Kl=new a,Jl=new a;let Zl,Xl=null,Ql=null,eu=null,tu=null;const nu={},ru=(e,t,n)=>{const r=`${e}_${t}`,i={contents:n,lastRequestedAt:Date.now(),contentsChecksum:""};return nu[r]=i,i},iu=(e,t)=>nu[`${e}_${t}`]||null,ou=async(e,t)=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),null;const n=[{serviceName:e,version:t}];return(await ql.execute(we.GetServiceContents,n,cu,Xl,0))[0]},su=new Map,au=async(e,t,n=!1)=>{if(!e||!t)return null;const r=`${e}:${t}`;if(!n){const e=su.get(r);if(e)return e}const i=iu(e,t);if(!i||n){const n=i||ru(e,t),o=(async()=>{try{const r=await ou(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{su.delete(r)}})();return su.set(r,o),o}return i?.contents||null},cu=Fl,lu=()=>{Yl("Disconnected from the server"),Xl=null,eu=null,ql.rejectAllPending("Disconnected from the server"),Kl.emit("disconnected")},uu=()=>{Yl("Connected to the server"),Kl.emit("connected")},du=()=>Ql,hu=(e,t,n,r)=>`${e}_${t}_${n}_${r}`,fu=async()=>{const e=du();if(e){const t=se(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===Je.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 ju({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)}}}}}}}},pu=async()=>{Zl=void 0;const e=await Ou();Kl.emit("services-changed",e)},gu=async()=>(Yl("Services list changed"),pu()),mu=async e=>{if(!e)return void Yl("Hub sent ACK request without service id");const t=du();if(!t)return void Yl("Hub sent ACK request without recipe pool id");if(!se(t))throw new Error("Hub sent ACK request without recipe");const n=tu?{...tu}:null,r={recipe:de(t),user:n,ackSessionId:e};await ql.execute(we.SocketAckResponse,[r],cu,e,0),Yl("Hub Link acknowledged"),Xl=e,Kl.emit("acknowledged"),await Yu(),fu()},yu=async()=>{await Ll()},vu=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}"`]})},bu=async e=>{const t=e.args[0],n=hu("broadcast",`hub_${t.type}`,(0).toString(),"");await Jl.emit(n,t)},wu=async e=>{const t=e.args[0],n=du(),r=t.targetRecipePoolId||t.targetRecipeId;if(!r||r===n){for(const e of t.outputs||[])e.type===me.ImageData&&Le(e.value)&&(e.value=await Ye(e.value));if(n){const r=se(n);if(r){const i=async e=>{const n=hu("broadcast",t.source.serviceName,t.source.serviceVersion,e);try{await Jl.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!==Je.script){if(o.type===Je.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 rl({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)}}}}}},Su=async e=>{const t=e.args[0],{finalState:n,recipeId:r,widgetId:i}=t,o=nl(r,i);let s=o;if(n&&s&&o&&(s={...o,customState:n},tl(r,i,s,!0)),s?.service)try{const e=hu("setOutputs",s.service.name,s.service.version,i);await Jl.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===me.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!==me.JsonObj&&n.type!==me.Array||await Vl(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 rl({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 Ur,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:[]})},_u=async e=>{const t=e.args[0],{newState:n,recipeId:r,widgetId:i}=t,o=nl(r,i);if(o){const t={...o,customState:{...o.customState,...n}};return tl(r,i,t,!0),e.reply({success:[]})}},Iu=async({args:e,reply:t})=>{const n=e,{widgetId:r,recipeId:i,paths:o}=n[0];Yl(`Received request to set a dependency paths for widget "${r}" in recipe "${i}"`);const s=nl(i,r);if(s){const e={...s};for(const t of o)e.dependencies=e.dependencies||{},e.dependencies[t.key]={path:t.path,exclude:t.exclude};tl(i,r,e,!0)}return t({success:[]})},xu=async({args:e,reply:t})=>{const n=e,{recipeId:r,widgetId:i}=n[0];Yl(`Received request to get current dependency paths for widget "${i}" in recipe "${r}"`);const o=nl(r,i);if(o){const e=Object.entries(o.dependencies||{}).map((([e,t])=>({key:e,path:t.path,exclude:t.exclude}))),n=[{paths:e}];return Yl(`Returning dependency paths for widget "${i}"`),t({success:n})}return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"})},ku=async({args:e,reply:t})=>{const n=e,{recipeId:r,widgetId:i,keys:o}=n[0];Yl(`Received request to remove dependency paths for widget "${i}" in recipe "${r}"`);const s=nl(r,i);if(s){const e={...s};for(const t of o)delete e.dependencies?.[t];tl(r,i,e,!0)}return t({success:[]})},Eu=async({args:e,reply:t})=>{const n=e[0];if(!n.expressions)return t({error:"Expression is required",errCode:"EXPRESSION_REQUIRED"});const r=ce({recipeId:n.recipePoolId,widgetId:n.widgetId});if(!r)return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"});if(r.type!==Je.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=se(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 qs({template:e.text,context:e.context||{},options:{enableFnTag:!1,recipeUuid:o,serviceName:i.service?.name,securityOptions:{restrictionLevel:"strict"}}}))))}]})},Cu=async({args:e,reply:t})=>{const n=e[0],r=ho.getAllVariables().filter((e=>!n.filterTypes||n.filterTypes.includes(e.controlType))).map((e=>({name:e.name,type:e.controlType})));return t({success:[{variables:r}]})},$u=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=ho.getAllVariables().filter((e=>n.names.includes(e.name))).map((e=>({name:e.name,value:e.lastValue})));return t({success:[{values:r}]})},Nu=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 ho.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})}},Ou=async()=>{if(Yl(`Requesting services on ${(new Date).toISOString()}`),!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),{available:[],installed:[],failed:[]};const[e]=await ql.execute(we.GetServices,[],cu,Xl,0);Zl=e;for(const t of e.available){if(t.internal)continue;const e=iu(t.name,t.version);if(!e||e?.contentsChecksum!==t.uiContentChecksum)try{const n=e||ru(t.name,t.version);Yl(`Service ${t.name} v${t.version} contents have changed, fetching new contents`);const r=await ou(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},Tu=()=>Zl||{available:[],installed:[],failed:[]},Au=()=>!!Zl,Pu=async e=>{const{targetServiceSessionId:t}=e;if(!Xl)return void Yl("No target service session id provided");Yl(`Forwarding "onParentEvent" to service ${t}`);const n=await ql.execute(we.OnParentEvent,[e],cu,Xl,t,e.config).catch((e=>{throw Yl(`Error invoking onParentEvent callback: ${e}`),e.errCode===$l.ParentEventCallbackError?e.error:e}));return n},Mu=async e=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),{};const[t]=await ql.execute(we.GetDefaultState,[],cu,Xl,e);return t},Du=async(e,t,n,r,i)=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),null;const[o]=await ql.execute(we.UIEvent,[t,n,r],cu,Xl,e,i);return o},Ru=(e,t)=>{const n=(...e)=>{t(...e)};return Kl.on(e,n),()=>Kl.off(e,n)},ju=async e=>{if(Xl)return ql.execute(we.SubscribeToService,[e],cu,Xl,0);Yl("Hub Link has not been acknowledged. Cannot subscribe to services.")},Lu=async e=>{if(Xl)return ql.execute(we.UnsubscribeFromService,[e],cu,Xl,0);Yl("Hub Link has not been acknowledged. Cannot subscribe to services.")},Fu=(e,t,n,r)=>{const i=hu("broadcast",t,n,e);return Jl.on(i,r)},Uu=(e,t,n,r)=>{const i=hu("setOutputs",t,n,e);return Jl.on(i,r)},Bu=async(e,t,n)=>Xl?ql.execute(e,t,cu,Xl,0,n):(Yl("Hub Link has not been acknowledged. Cannot execute function."),null),Wu=async e=>{if(!Xl)return void Yl("Hub Link has not been acknowledged. Cannot execute function.");const t=nl(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(!se(e.recipePoolId))throw new Error("Recipe not found. Cannot initialize service instance.");const r=[{currentState:t.customState,recipeId:e.recipePoolId,recipe:de(e.recipePoolId),widgetId:e.widgetId,variantId:e.variantId,recipeType:e.recipeType,recipeName:e.recipeName,currentDependencies:n}],[i,o,s]=await ql.execute(we.InitializeInstance,r,cu,Xl,e.sessionId);if(o&&o.length>0){const n=o.filter((e=>e.name&&e.name.length>0)).map((e=>({...e,hubServiceName:t.service?.name})));ol({clearExistingSecrets:!0,recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:n})}if(s&&s.length>0&&await Promise.all(s.map((async t=>{await ho.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})}))),i){const t=nl(e.recipePoolId,e.widgetId);if(t){const n={...t,customState:i};tl(e.recipePoolId,e.widgetId,n,!0)}}},Gu=async(e,t,n,r)=>{if(!Xl)return void Yl("Hub Link has not been acknowledged. Cannot execute function.");const i=nl(n,t);if(!i)throw new Error("Widget or recipe pool not found. Cannot initialize service instance.");const o=se(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 ql.execute(we.TerminateInstance,s,cu,Xl,e)},Vu=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=Au(),s=r||!o?await Ou():Tu();for(const r of s.available)if(r.name===e){if(r.version===t)return r;if(l(r.version,`${n}${t}`))return r}return null},Hu=async(e=!1)=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),null;if(eu&&!e)return eu;const[t]=await ql.execute(we.GetSystemInfo,[],cu,Xl,0).catch((e=>(Yl("Failed to get system info",e),[null])));return eu=t,t},Yu=async()=>{eu=await Hu()};var zu,qu,Ku,Ju,Zu,Xu,Qu,ed,td=async e=>{tu=e,Wl(uu),Gl(lu),Bl((({json:e,transmission:t})=>{ql.processMessage("websocket",cu,t,e)})),await yu(),ql.unregisterAllFunctions(),ql.registerFunction(we.SetState,_u),ql.registerFunction(we.SetOutputs,Su),ql.registerFunction(we.BroadcastEvent,wu),ql.registerFunction(we.HubBroadcastEvent,bu),ql.registerFunction(we.SendToRecipe,vu),ql.registerFunction(Se.SetDependencyPaths,Iu),ql.registerFunction(Se.GetCurrentDependencyPaths,xu),ql.registerFunction(Se.RemoveDependencyPaths,ku),ql.registerFunction(Se.ParseStringExpression,Eu),ql.registerFunction(Se.GetGlobalVariableNames,Cu),ql.registerFunction(Se.GetGlobalVariableValues,$u),ql.registerFunction(Se.SetGlobalVariableValues,Nu),Ul((e=>{((e,t)=>{const n=be.SocketAcknowledge,r=be.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,mu),((e,t)=>{e===be.ServicesListChanged&&(t&&t())})(e,gu)})),await jl()},nd=(e,t)=>{Kl.on(e,t)},rd=()=>({getServices:Ou,getServiceContents:au,onParentEvent:Pu,onCommand:Ru,getDefaultState:Mu,getCachedServices:Tu,areServicesCached:Au,subscribeToServiceEvents:ju,unsubscribeFromServiceEvents:Lu,callProcessorHandler:Du,onBroadcastEvent:Fu,onSetOutputsEvent:Uu,executeHubFunction:Bu,initializeServiceInstance:Wu,terminateServiceInstance:Gu,getCompatibleService:Vu,getHubSystemInfo:Hu}),id=e=>{Ql=e},od=()=>ql;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(zu||(zu={})),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"}(qu||(qu={})),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"}(Ju||(Ju={})),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:"}(Zu||(Zu={})),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.RestartApp="restartApp",e.ShowHubScreen="showHubScreen",e.ExchangeSessionTokenForApiKey="exchangeSessionTokenForApiKey",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"}(Xu||(Xu={})),function(e){e.SetDependencyPath="setDependencyPath",e.GetDependencyPath="getDependencyPath",e.ParseStringExpression="parseStringExpression",e.GetGlobalVariableNames="getGlobalVariableNames",e.GetGlobalVariableValues="getGlobalVariableValues",e.SetGlobalVariableValues="setGlobalVariableValues"}(Qu||(Qu={})),function(e){e.IPC="ipc",e.WS="ws"}(ed||(ed={}));const sd=e=>{try{return JSON.parse(e)}catch(e){return null}},ad=()=>{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=I.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}`)}},cd=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,ld=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(cd);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},ud=e=>"*"===e||"x"===e||"X"===e,dd=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},hd=(e,t)=>{if(ud(e)||ud(t))return 0;const[n,r]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(dd(e),dd(t));return n>r?1:n<r?-1:0},fd=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const r=hd(e[n]||"0",t[n]||"0");if(0!==r)return r}return 0},pd=(e,t,n)=>{yd(n);const r=((e,t)=>{const n=ld(e),r=ld(t),i=n.pop(),o=r.pop(),s=fd(n,r);return 0!==s?s:i&&o?fd(i.split("."),o.split(".")):i||o?i?-1:1:0})(e,t);return gd[n].includes(r)},gd={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},md=Object.keys(gd),yd=e=>{if(-1===md.indexOf(e))throw new Error(`Invalid operator, expected one of ${md.join("|")}`)};var vd="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function bd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var wd,Sd,_d,Id,xd,kd={exports:{}},Ed={exports:{}};function Cd(){if(Sd)return wd;Sd=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 wd=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 $d(){return Id||(Id=1,_d=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=Cd(),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}),_d}var Nd,Od,Td,Ad,Pd,Md={exports:{}};"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?kd.exports=(xd||(xd=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=$d()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Ed,Ed.exports)),Ed.exports):kd.exports=(Pd||(Pd=1,function(e,t){const n=k,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} `;n[0]=o+n[0].split("\n").join("\n"+o),n.push(i+"m+"+e.exports.humanize(this.diff)+"")}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(Ad)return Td;Ad=1;const e=E,t=k,n=Od?Nd:(Od=1,Nd=(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)),Td={supportsColor:function(e){return o(s(e,e&&e.isTTY))},stdout:o(s(!0,t.isatty(1))),stderr:o(s(!0,t.isatty(2)))},Td}();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=$d()(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)}}(Md,Md.exports)),Md.exports);var Dd=bd(kd.exports);const Rd=e=>Dd(e);var jd={},Ld={};class Fd 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,Fd)}}var Ud,Bd,Wd,Gd,Vd,Hd=e=>{if(e.length>2)throw new Fd(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:{}},zd={exports:{}},qd={exports:{}},Kd={exports:{}};function Jd(){if(Vd)return Gd;Vd=1;var e=E,t=Wd?Bd:(Wd=1,Bd=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)),Gd={supportsColor:i,stdout:i(process.stdout),stderr:i(process.stderr)}}var Zd,Xd,Qd,eh,th,nh,rh,ih,oh={exports:{}},sh={exports:{}},ah={exports:{}},ch={exports:{}},lh={exports:{}},uh={exports:{}};function dh(){return rh||(rh=1,function(){var e={};qd.exports=e,e.themes={};var t=i,n=e.styles=(Ud||(Ud=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=Jd().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=(Zd||(Zd=1,oh.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}),oh.exports),e.zalgo=(Xd||(Xd=1,sh.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)}),sh.exports),e.maps={},e.maps.america=(Qd||(Qd=1,ah.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)}}}),ah.exports)(e),e.maps.zebra=(eh||(eh=1,ch.exports=function(e){return function(t,n){return n%2==0?t:e.inverse(t)}}),ch.exports)(e),e.maps.rainbow=(th||(th=1,lh.exports=function(e){var t=["red","yellow","green","blue","magenta"];return function(n,r){return" "===n?n:e[t[r++%t.length]](n)}}),lh.exports)(e),e.maps.random=(nh||(nh=1,uh.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)}}),uh.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}())}()),qd.exports}function hh(){return ih||(ih=1,function(e){var t=dh();e.exports=t}(zd)),zd.exports}var fh,ph,gh={},mh={},yh={};function vh(){if(ph)return Yd.exports;ph=1;const e=hh(),{LEVEL:t,MESSAGE:n}=gh;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}yh.levels={emerg:0,alert:1,crit:2,error:3,warning:4,notice:5,info:6,debug:7},yh.colors={emerg:"red",alert:"yellow",crit:"red",error:"red",warning:"red",notice:"yellow",info:"green",debug:"blue"},fh=mh,Object.defineProperty(fh,"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(fh,"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(fh,"syslog",{value:yh}),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:mh})}(gh);const{Colorizer:bh}=vh();var wh,Sh,_h,Ih,xh,kh,Eh={exports:{}},Ch={exports:{}};function $h(){if(xh)return Ch.exports;xh=1;const{configs:e,LEVEL:t,MESSAGE:n}=gh;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 Ch.exports=e=>new r(e),Ch.exports.Padder=Ch.exports.Format=r,Ch.exports}var Nh,Oh,Th,Ah,Ph,Mh,Dh,Rh,jh,Lh,Fh,Uh,Bh,Wh,Gh={exports:{}},Vh={exports:{}};function Hh(){return Oh||(Oh=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,[])}}}(Vh,Vh.exports)),Vh.exports}function Yh(){if(Ah)return Th;Ah=1;const e=Hd,{MESSAGE:t}=gh,n=Hh();function r(e,t){return"bigint"==typeof t?t.toString():t}return Th=e(((e,i)=>{const o=n.configure(i);return e[t]=o(e,i.replacer||r,i.space),e}))}var zh,qh,Kh,Jh,Zh,Xh={exports:{}},Qh=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,ef="\\d\\d?",tf="\\d\\d",nf="[^\\s]+",rf=/\[([^]*?)\]/gm;function of(e,t){for(var n=[],r=0,i=e.length;r<i;r++)n.push(e[r].substr(0,t));return n}var sf=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 af(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 cf=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],lf=["January","February","March","April","May","June","July","August","September","October","November","December"],uf=of(lf,3),df={dayNamesShort:of(cf,3),dayNames:cf,monthNamesShort:uf,monthNames:lf,amPm:["am","pm"],DoFn:function(e){return e+["th","st","nd","rd"][e%10>3?0:(e-e%10!=10?1:0)*e%10]}},hf=af({},df),ff=function(e){return hf=af(hf,e)},pf=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},gf=function(e,t){for(void 0===t&&(t=2),e=String(e);e.length<t;)e="0"+e;return e},mf={D:function(e){return String(e.getDate())},DD:function(e){return gf(e.getDate())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return String(e.getDay())},dd:function(e){return gf(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 gf(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 gf(String(e.getFullYear()),4).substr(2)},YYYY:function(e){return gf(e.getFullYear(),4)},h:function(e){return String(e.getHours()%12||12)},hh:function(e){return gf(e.getHours()%12||12)},H:function(e){return String(e.getHours())},HH:function(e){return gf(e.getHours())},m:function(e){return String(e.getMinutes())},mm:function(e){return gf(e.getMinutes())},s:function(e){return String(e.getSeconds())},ss:function(e){return gf(e.getSeconds())},S:function(e){return String(Math.round(e.getMilliseconds()/100))},SS:function(e){return gf(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return gf(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?"-":"+")+gf(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)},Z:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+gf(Math.floor(Math.abs(t)/60),2)+":"+gf(Math.abs(t)%60,2)}},yf=function(e){return+e-1},vf=[null,ef],bf=[null,nf],wf=["isPm",nf,function(e,t){var n=e.toLowerCase();return n===t.amPm[0]?0:n===t.amPm[1]?1:null}],Sf=["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}],_f={D:["day",ef],DD:["day",tf],Do:["day",ef+nf,function(e){return parseInt(e,10)}],M:["month",ef,yf],MM:["month",tf,yf],YY:["year",tf,function(e){var t=+(""+(new Date).getFullYear()).substr(0,2);return+(""+(+e>68?t-1:t)+e)}],h:["hour",ef,void 0,"isPm"],hh:["hour",tf,void 0,"isPm"],H:["hour",ef],HH:["hour",tf],m:["minute",ef],mm:["minute",tf],s:["second",ef],ss:["second",tf],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(e){return 100*+e}],SS:["millisecond",tf,function(e){return 10*+e}],SSS:["millisecond","\\d{3}"],d:vf,dd:vf,ddd:bf,dddd:bf,MMM:["month",nf,sf("monthNamesShort")],MMMM:["month",nf,sf("monthNames")],a:wf,A:wf,ZZ:Sf,Z:Sf},If={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"},xf=function(e){return af(If,e)},kf=function(e,t,n){if(void 0===t&&(t=If.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=If[t]||t).replace(rf,(function(e,t){return r.push(t),"@@@"}));var i=af(af({},hf),n);return(t=t.replace(Qh,(function(t){return mf[t](e,i)}))).replace(/@@@/g,(function(){return r.shift()}))};function Ef(e,t,n){if(void 0===n&&(n={}),"string"!=typeof t)throw new Error("Invalid format in fecha parse");if(t=If[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(rf,(function(e,t){return o.push(pf(t)),"@@@"})),a={},c={};s=pf(s).replace(Qh,(function(e){var t=_f[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=af(af({},hf),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 Cf,$f,Nf,Of,Tf={format:kf,parse:Ef,defaultI18n:df,setGlobalDateI18n:ff,setGlobalDateMasks:xf},Af=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:af,default:Tf,defaultI18n:df,format:kf,parse:Ef,setGlobalDateI18n:ff,setGlobalDateMasks:xf}));const Pf=Ld.format=Hd;function Mf(e,t){Object.defineProperty(Pf,e,{get:()=>t(),configurable:!0})}Ld.levels=e=>(bh.addColors(e.colors||e),e),Mf("align",(function(){return Sh?wh:(Sh=1,wh=Hd((e=>(e.message=`\t${e.message}`,e))))})),Mf("errors",(function(){return function(){if(Ih)return _h;Ih=1;const e=Hd,{LEVEL:t,MESSAGE:n}=gh;return _h=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}))}()})),Mf("cli",(function(){return function(){if(kh)return Eh.exports;kh=1;const{Colorizer:e}=vh(),{Padder:t}=$h(),{configs:n,MESSAGE:r}=gh;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 Eh.exports=e=>new i(e),Eh.exports.Format=i,Eh.exports}()})),Mf("combine",(function(){return function(){if(Nh)return Gh.exports;Nh=1;const e=Hd;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 Gh.exports=(...n)=>{const r=e(t(n)),i=r();return i.Format=r.Format,i},Gh.exports.cascade=t,Gh.exports}()})),Mf("colorize",(function(){return vh()})),Mf("json",(function(){return Yh()})),Mf("label",(function(){return Mh?Ph:(Mh=1,Ph=Hd(((e,t)=>t.message?(e.message=`[${t.label}] ${e.message}`,e):(e.label=t.label,e))))})),Mf("logstash",(function(){return function(){if(Rh)return Dh;Rh=1;const e=Hd,{MESSAGE:t}=gh,n=Hh();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}))}()})),Mf("metadata",(function(){return Lh?jh:(Lh=1,jh=Hd(((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})))})),Mf("ms",(function(){return function(){if(Uh)return Fh;Uh=1;const e=Hd,t=Cd();return Fh=e((e=>{const n=+new Date;return this.diff=n-(this.prevTime||n),this.prevTime=n,e.ms=`+${t(this.diff)}`,e}))}()})),Mf("padLevels",(function(){return $h()})),Mf("prettyPrint",(function(){return function(){if(Wh)return Bh;Wh=1;const e=i.inspect,t=Hd,{LEVEL:n,MESSAGE:r,SPLAT:o}=gh;return Bh=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}))}()})),Mf("printf",(function(){return function(){if(zh)return Xh.exports;zh=1;const{MESSAGE:e}=gh;class t{constructor(e){this.template=e}transform(t){return t[e]=this.template(t),t}}return Xh.exports=e=>new t(e),Xh.exports.Printf=Xh.exports.Format=t,Xh.exports}()})),Mf("simple",(function(){return function(){if(Kh)return qh;Kh=1;const e=Hd,{MESSAGE:t}=gh,n=Hh();return qh=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}))}()})),Mf("splat",(function(){return function(){if(Zh)return Jh;Zh=1;const e=i,{SPLAT:t}=gh,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 Jh=e=>new o(e)}()})),Mf("timestamp",(function(){return function(){if($f)return Cf;$f=1;const e=Af;return Cf=Hd(((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)))}()})),Mf("uncolorize",(function(){return function(){if(Of)return Nf;Of=1;const e=hh(),t=Hd,{MESSAGE:n}=gh;return Nf=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 Rf,jf,Lf,Ff,Uf,Bf,Wf={},Gf={exports:{}},Vf={exports:{}};function Hf(){return Ff?Lf:(Ff=1,Lf=N)}function Yf(){if(Bf)return Uf;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 Bf=1,Uf={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)}},Uf}var zf,qf,Kf,Jf={};function Zf(){if(zf)return Jf;zf=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"),Jf.codes=e,Jf}function Xf(){if(Kf)return qf;Kf=1;var e=Zf().codes.ERR_INVALID_OPT_VALUE;return qf={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 Qf,ep,tp,np,rp={exports:{}},ip={exports:{}};function op(){if(ep)return rp.exports;ep=1;try{var e=require("util");if("function"!=typeof e.inherits)throw"";rp.exports=e.inherits}catch(e){rp.exports=(Qf||(Qf=1,"function"==typeof Object.create?ip.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:ip.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),ip.exports)}return rp.exports}function sp(){if(np)return tp;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)}np=1;var o=O.Buffer,s=i.inspect,a=s&&s.custom||"inspect";function c(e,t,n){o.prototype.copy.call(e,t,n)}return tp=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 ap,cp,lp,up,dp,hp,fp,pp,gp,mp,yp,vp,bp,wp,Sp={},_p={exports:{}};function Ip(){if(cp)return Sp;cp=1;var e=(ap||(ap=1,function(e,t){var n=O,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)}}(_p,_p.exports)),_p.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 Sp.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},Sp}function xp(){if(up)return lp;up=1;var e=Zf().codes.ERR_STREAM_PREMATURE_CLOSE;function t(){}return lp=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)}},lp}function kp(){if(mp)return gp;var e;mp=1,gp=_,_.ReadableState=S,T.EventEmitter;var t,n=function(e,t){return e.listeners(t).length},r=Hf(),o=O.Buffer,s=(void 0!==vd?vd:"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=sp(),h=Yf(),f=Xf().getHighWaterMark,p=Zf().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;op()(_,r);var b=h.errorOrDestroy,w=["error","close","destroy","pause","resume"];function S(t,n,r){e=e||Ep(),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=Ip().StringDecoder),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function _(t){if(e=e||Ep(),!(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):N(e,l)):x(e,l,n,!1)}else i||(l.reading=!1,N(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)),N(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=Ip().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,R(e)}function N(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(A,e,t))}function A(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 P(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 M(e){t("readable nexttick read 0"),e.read(0)}function D(e,n){t("resume",n.reading),n.reading||e.read(0),n.resumeScheduled=!1,e.emit("resume"),R(e),n.flowing&&!n.reading&&e.read(0)}function R(e){var n=e._readableState;for(t("flow",n.flowing);n.flowing&&null!==e.read(););}function j(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?j(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,R(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(M,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(P,this),n},_.prototype.removeAllListeners=function(e){var t=r.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||process.nextTick(P,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(D,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(hp)return dp;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}hp=1;var n=xp(),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 dp=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},dp}()),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=j,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(pp)return fp;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}pp=1;var r=Zf().codes.ERR_INVALID_ARG_TYPE;return fp=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},fp}()),u(_,e,t)}),gp}function Ep(){if(vp)return yp;vp=1;var e=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};yp=s;var t=kp(),n=Cp();op()(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)}}),yp}function Cp(){if(wp)return bp;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;wp=1,bp=_,_.WritableState=S;var n,r={deprecate:jf?Rf:(jf=1,Rf=i.deprecate)},o=Hf(),s=O.Buffer,a=(void 0!==vd?vd:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},c=Yf(),l=Xf().getHighWaterMark,u=Zf().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||Ep(),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||Ep());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 op()(_,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)},bp}const $p=i,Np=Cp(),{LEVEL:Op}=gh,Tp=Vf.exports=function(e={}){Np.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())}))};$p.inherits(Tp,Np),Tp.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[Op]]){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)},Tp.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)},Tp.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[Op]])||!this.handleExceptions&&!0===t.exception)},Tp.prototype._nop=function(){};var Ap=Vf.exports,Pp={exports:{}};const Mp=i,{LEVEL:Dp}=gh,Rp=Ap,jp=Pp.exports=function(e={}){if(Rp.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))};Mp.inherits(jp,Rp),jp.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)},jp.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)},jp.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"))},jp.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=Pp.exports;Gf.exports=Ap,Gf.exports.LegacyTransportStream=Lp;var Fp,Up,Bp=Gf.exports,Wp={exports:{}},Gp={exports:{}},Vp={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}(Vp,Vp.exports);var Hp=Vp.exports,Yp={},zp={exports:{}},qp={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}(qp,qp.exports);var Kp=qp.exports,Jp={};Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.fallback=rg,Jp.wrap=ig;var Zp,Xp,Qp,eg=Jp.hasQueueMicrotask="function"==typeof queueMicrotask&&queueMicrotask,tg=Jp.hasSetImmediate="function"==typeof setImmediate&&setImmediate,ng=Jp.hasNextTick="object"==typeof process&&"function"==typeof process.nextTick;function rg(e){setTimeout(e,0)}function ig(e){return(t,...n)=>e((()=>t(...n)))}function og(){if(Qp)return Yp;Qp=1,Object.defineProperty(Yp,"__esModule",{value:!0}),Yp.isAsyncIterable=Yp.isAsyncGenerator=Yp.isAsync=void 0;var e,t=(Xp||(Xp=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(Jp),i=og();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}(zp,zp.exports)),zp.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}Zp=eg?queueMicrotask:tg?setImmediate:ng?process.nextTick:rg,Jp.default=ig(Zp);var sg={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}(sg,sg.exports);var ag,cg=sg.exports,lg={exports:{}},ug={exports:{}},dg={exports:{}},hg={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}(hg,hg.exports);var fg=hg.exports,pg={exports:{}},gg={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}(gg,gg.exports);var mg=gg.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(Hp),r=i(mg);function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(pg,pg.exports);var yg=pg.exports,vg={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}(vg,vg.exports);var bg=vg.exports,wg={exports:{}},Sg={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default={},e.exports=t.default}(Sg,Sg.exports);var _g=Sg.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=_g)&&n.__esModule?n:{default:n};e.exports=t.default}(wg,wg.exports);var Ig=wg.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=c(fg),r=c(yg),i=c(bg),o=og(),s=c(Ig),a=c(_g);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}(dg,dg.exports);var xg=dg.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(xg),r=o(og()),i=o(cg);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}(ug,ug.exports);var kg,Eg,Cg=ug.exports;var $g,Ng,Og,Tg,Ag,Pg,Mg={exports:{}};function Dg(){if(Ng)return $g;Ng=1,$g=a;var e=Zf().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=Ep();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 op()(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)}))},$g}!function(e,t){var n=N;"disable"===process.env.READABLE_STREAM&&n?(e.exports=n.Readable,Object.assign(e.exports,n),e.exports.Stream=n):((t=e.exports=kp()).Stream=n||t,t.Readable=t,t.Writable=Cp(),t.Duplex=Ep(),t.Transform=Dg(),t.PassThrough=function(){if(Tg)return Og;Tg=1,Og=t;var e=Dg();function t(n){if(!(this instanceof t))return new t(n);e.call(this,n)}return op()(t,e),t.prototype._transform=function(e,t,n){n(null,e)},Og}(),t.finished=xp(),t.pipeline=function(){if(Pg)return Ag;var e;Pg=1;var t=Zf().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 Ag=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=xp()),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)},Ag}())}(Mg,Mg.exports);var Rg,jg,Lg,Fg,Ug=Mg.exports,Bg={exports:{}};function Wg(){if(jg)return Rg;jg=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 Rg=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 Gg,Vg,Hg,Yg,zg,qg,Kg={exports:{}},Jg={exports:{}};function Zg(){if(qg)return Kg.exports;qg=1;var e=Vg?Gg:(Vg=1,Gg={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(zg)return Jg.exports;zg=1;var e=Yg?Hg:(Yg=1,Hg=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=Jg.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))}},Jg.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 Xg,Qg,em,tm,nm,rm,im,om,sm,am,cm,lm,um,dm,hm,fm,pm,gm,mm,ym,vm,bm,wm,Sm,_m,Im,xm,km={exports:{}};function Em(){if(em)return km.exports;em=1;var e=Qg?Xg:(Qg=1,Xg={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=km.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]},km.exports}function Cm(){if(im)return rm;im=1;var e=Em(),t=function(){if(nm)return tm;nm=1;var e=Em();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 tm=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)}))})),rm=n}function $m(){if(um)return lm;um=1;var e=function(){if(sm)return om;sm=1;var e=Zg(),t=Cm(),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)}}})),om=s}(),t=(cm||(cm=1,am=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}),am);return lm=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},lm}function Nm(){if(wm)return bm;wm=1;var e=function(){if(vm)return ym;vm=1;var e=(mm||(mm=1,gm=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}),gm);return ym=function(t){return function(n){try{return e(n,t())}catch(e){}return!1}}}();return bm=e((function(){return process.env.DEBUG||process.env.DIAGNOSTICS}))}"production"===process.env.NODE_ENV?Bg.exports=function(){if(Fg)return Lg;Fg=1;var e=Wg()((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}():Bg.exports=function(){if(xm)return Im;xm=1;var e=Wg(),t=k.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(pm)return fm;pm=1;var e=$m(),t=function(){if(hm)return dm;function e(t,n){return n?new e(t).style(n):this instanceof e?void(this.text=t):new e(t)}return hm=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()},dm=e}();return fm=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(Nm()),n.set(_m?Sm:(_m=1,Sm=function(e,t){try{Function.prototype.apply.call(console.log,console,t)}catch(e){}})),Im=n}();var Om,Tm,Am,Pm,Mm,Dm,Rm=Bg.exports;function jm(){if(Pm)return Am;Pm=1;const e=x,t=b,n=(Eg||(Eg=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=(ag||(ag=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(Hp),r=o(og()),i=o(cg);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}(Gp,Gp.exports)),Gp.exports),r=s(n),i=(kg||(kg=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=i(Cg),r=i(cg);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}(lg,lg.exports)),lg.exports),o=s(i);function s(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(Wp,Wp.exports)),Wp.exports),r=A,{MESSAGE:i}=gh,{Stream:o,PassThrough:s}=Ug,a=Bp,c=Rm("winston:file"),l=E,u=function(){if(Tm)return Om;Tm=1;const e=x,{StringDecoder:t}=P,{Stream:n}=Ug;function r(){}return Om=(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},Om}();return Am=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})}},Am}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 Fm,Um,Bm=Lm;!function(e){Object.defineProperty(e,"Console",{configurable:!0,enumerable:!0,get:()=>function(){if(Up)return Fp;Up=1;const e=E,{LEVEL:t,MESSAGE:n}=gh,r=Bp;return Fp=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:()=>jm()}),Object.defineProperty(e,"Http",{configurable:!0,enumerable:!0,get:()=>function(){if(Dm)return Mm;Dm=1;const e=M,t=D,{Stream:n}=Ug,r=Bp,{configure:i}=Hh();return Mm=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"))}},Mm}()}),Object.defineProperty(e,"Stream",{configurable:!0,enumerable:!0,get:()=>function(){if(Um)return Fm;Um=1;const e=Bm,{MESSAGE:t}=gh,n=E,r=Bp;return Fm=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()}}}()})}(Wf);var Wm={};const Gm=Ld,{configs:Vm}=gh;Wm.cli=Gm.levels(Vm.cli),Wm.npm=Gm.levels(Vm.npm),Wm.syslog=Gm.levels(Vm.syslog),Wm.addColors=Gm.levels;var Hm={exports:{}},Ym={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=l(Hp),r=l(_g),i=l(Cg),o=l(fg),s=l(bg),a=l(og()),c=l(cg);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 zm=Ym.exports,qm={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}(qm,qm.exports);var Km=qm.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=s(zm),r=s(Km),i=s(og()),o=s(cg);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}(Hm,Hm.exports);var Jm=Hm.exports,Zm=Object.prototype.toString,Xm=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=Zm.call(e).slice(8,-1);return(t="Function"===n?t.substring(t.indexOf("(")+1,t.indexOf(")")):n)||"anonymous"}(e),r},Qm={};!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)}}(Qm);const{Writable:ey}=Ug,ty=E,ny=Jm,ry=Rm("winston:exception"),iy=Xm,oy=Qm,sy=class extends ey{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 ay=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:ty.loadavg(),uptime:ty.uptime()}}getTrace(e){return(e?oy.parse(e):oy.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 sy(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(){ry("doExit",i),ry("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);ny(n,((e,t)=>{const n=iy(t),r=e.transport||e;function i(e){return()=>{ry(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:cy}=Ug,ly=E,uy=Jm,dy=Rm("winston:rejection"),hy=Xm,fy=Qm,py=class extends cy{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 gy,my,yy,vy,by=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:ly.loadavg(),uptime:ly.uptime()}}getTrace(e){return(e?fy.parse(e):fy.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 py(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(){dy("doExit",i),dy("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);uy(n,((e,t)=>{const n=hy(t),r=e.transport||e;function i(e){return()=>{dy(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 wy(){if(vy)return yy;vy=1;const{Stream:e,Transform:t}=Ug,n=Jm,{LEVEL:r,SPLAT:i}=gh,o=Bm,s=ay,a=by,c=Lp,l=(my||(my=1,gy=class{constructor(e){const t=wy();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)}}),gy),{warn:u}=Df,d=Wm,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)}}),yy=f}const{LEVEL:Sy}=gh,_y=Wm,Iy=wy(),xy=Rm("winston:create-logger");var ky=function(e={}){e.levels=e.levels||_y.npm.levels;class t extends Iy{constructor(e){super(e)}}const n=new t(e);return Object.keys(e.levels).forEach((function(e){xy('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[Sy]=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 Ey=ky;var Cy=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=Ey(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}=Df;e.version="3.17.0",e.transports=Wf,e.config=Wm,e.addColors=t.levels,e.format=t.format,e.createLogger=ky,e.Logger=wy(),e.ExceptionHandler=ay,e.RejectionHandler=by,e.Container=Cy,e.Transport=Bp,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"])}(jd);var $y=bd(jd),Ny={exports:{}};!function(e,t){var n=R;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=Ny.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,Ny.exports);var Oy,Ty,Ay,Py={exports:{}};function My(){return Oy||(Oy=1,(e=Py).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 N(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 O(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,P={},M={};function D(e,t,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),e&&(M[e]=i),t&&(M[t[0]]=function(){return O(i.apply(this,arguments),t[1],t[2])}),n&&(M[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function R(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function j(e,t){return e.isValid()?(t=L(t,e.localeData()),P[t]=P[t]||function(e){var t,n,r=e.match(T);for(t=0,n=r.length;t<n;t++)M[r[t]]?r[t]=M[r[t]]:r[t]=R(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),P[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 B(e){var t,n,r={};for(n in e)s(e,n)&&(t=U(n))&&(r[t]=e[n]);return r}var W={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/,H=/\d\d/,Y=/\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?O(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,H),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,Ne=Oe("FullYear",!0);function Oe(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 Pe(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,H),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 Me="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("_"),Re=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,je=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,Pe(e.year(),n)),e._isUTC?e._d.setUTCMonth(n,r):e._d.setMonth(n,r),e}function Be(e){return null!=e?(Ue(this,e),r.updateOffset(this,!0),this):Te(this,"Month")}function We(){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 He(e,t,n){var r=7+t-n;return-(7+Ve(e,0,r).getUTCDay()-t)%7+r-1}function Ye(e,t,n,r,i){var o,s,a=1+7*(t-1)+(7+n-r)%7+He(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=He(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=He(e,t,n),i=He(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,H),ce("W",K,se),ce("WW",K,H),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)+O(this.minutes(),2)})),D("hmmss",0,0,(function(){return""+it.apply(this)+O(this.minutes(),2)+O(this.seconds(),2)})),D("Hmm",0,0,(function(){return""+this.hours()+O(this.minutes(),2)})),D("Hmmss",0,0,(function(){return""+this.hours()+O(this.minutes(),2)+O(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,H),ce("hh",K,H),ce("kk",K,H),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=Oe("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:Me,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 N($(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]>Pe(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||""),Pt(e)}else e._isValid=!1}function $t(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function Nt(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 Ot(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=Ot(t.GG,e._a[ve],ze(Rt(),1,4).year),r=Ot(t.W,1),((i=Ot(t.E,1))<1||i>7)&&(c=!0)):(o=e._locale._week.dow,s=e._locale._week.doy,l=ze(Rt(),o,s),n=Ot(t.gg,e._a[ve],l.year),r=Ot(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=Ye(n,r,i,o,s),e._a[ve]=a.year,e._dayOfYear=a.dayOfYear)}(e),null!=e._dayOfYear&&(o=Ot(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 Pt(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),M[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 Nt(e);else Ct(e)}function Mt(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],Pt(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?Pt(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,Nt(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=B(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(Mt(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}(c)}function Rt(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 jt=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Rt.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=Rt.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 Rt();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 Bt(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 Wt(e){var t=B(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=Bt(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 Wt}function Vt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ht(e,t){D(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+O(~~(e/60),2)+t+O(~~e%60,2)}))}Ht("Z",":"),Ht("ZZ",""),ce("Z",ie),ce("ZZ",ie),pe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=zt(ie,e)}));var Yt=/([\+\-]|\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(Yt)||["-",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():Rt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),r.updateOffset(n,!1),n):Rt(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}}(Rt(o.from),Rt(o.to)),(o={}).ms=i.milliseconds,o.M=i.months),r=new Wt(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=Wt.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=Ye(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,H),ce("gg",K,H),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,H),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=Oe("Date",!0);D("DDD",["DDDD",3],"DDDo","dayOfYear"),ce("DDD",X),ce("DDDD",Y),pe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=he(e)})),D("m",["mm",2],0,"minute"),ce("m",K,ae),ce("mm",K,H),pe(["m","mm"],_e);var Cn=Oe("Minutes",!1);D("s",["ss",2],0,"second"),ce("s",K,ae),ce("ss",K,H),pe(["s","ss"],Ie);var $n,Nn,On=Oe("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,H),ce("SSS",X,Y),$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);Nn=Oe("Milliseconds",!1),D("z",0,0,"zoneAbbr"),D("zz",0,0,"zoneName");var An=w.prototype;function Pn(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||Rt(),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,Rt(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=j(this,e);return this.localeData().postformat(t)},An.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Rt(e).isValid())?Qt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.fromNow=function(e){return this.from(Rt(),e)},An.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Rt(e).isValid())?Qt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.toNow=function(e){return this.to(Rt(),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:Rt(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:Rt(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:Rt(e),o=S(t)?t:Rt(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:Rt(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=jt,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:W[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}(e=B(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?j(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",j(n,"Z")):j(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=Ne,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=Be,An.daysInMonth=function(){return Pe(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=On,An.millisecond=An.milliseconds=Nn,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?Rt(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",Be),An.years=I("years accessor is deprecated. Use year instead",Ne),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=Mt(t))._a?(e=t._isUTC?f(t._a):Rt(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 Mn=N.prototype;function Dn(e,t,n,r){var i=yt(),o=f().set(r,t);return i[n](o,e)}function Rn(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 jn(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}Mn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return C(r)?r.call(t,n):r},Mn.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])},Mn.invalidDate=function(){return this._invalidDate},Mn.ordinal=function(e){return this._ordinal.replace("%d",e)},Mn.preparse=Pn,Mn.postformat=Pn,Mn.relativeTime=function(e,t,n,r){var i=this._relativeTime[n];return C(i)?i(e,t,n,r):i.replace(/%d/i,e)},Mn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return C(n)?n(t):n.replace(/%s/i,t)},Mn.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)},Mn.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},Mn.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]},Mn.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},Mn.erasAbbrRegex=function(e){return s(this,"_erasAbbrRegex")||_n.call(this),e?this._erasAbbrRegex:this._erasRegex},Mn.erasNameRegex=function(e){return s(this,"_erasNameRegex")||_n.call(this),e?this._erasNameRegex:this._erasRegex},Mn.erasNarrowRegex=function(e){return s(this,"_erasNarrowRegex")||_n.call(this),e?this._erasNarrowRegex:this._erasRegex},Mn.months=function(e,t){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Re).test(t)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone},Mn.monthsShort=function(e,t){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Re.test(t)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Mn.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}},Mn.monthsRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||We.call(this),e?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Mn.monthsShortRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||We.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=je),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Mn.week=function(e){return ze(e,this._week.dow,this._week.doy).week},Mn.firstDayOfYear=function(){return this._week.doy},Mn.firstDayOfWeek=function(){return this._week.dow},Mn.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},Mn.weekdaysMin=function(e){return!0===e?Ke(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Mn.weekdaysShort=function(e){return!0===e?Ke(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Mn.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}},Mn.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)},Mn.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)},Mn.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)},Mn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Mn.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 Bn(e){return 4800*e/146097}function Wn(e){return 146097*e/4800}function Gn(e){return function(){return this.as(e)}}var Vn=Gn("ms"),Hn=Gn("s"),Yn=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=Wt.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+Bn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Wn(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=Hn,pr.asMinutes=Yn,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(Wn(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(Bn(s)),s-=Un(Wn(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"crypto-js";import{z as s}from"zod";import a from"emittery";import{Parser as c}from"expr-eval";import{satisfies as l}from"compare-versions";import u from"debug";import d,{mkdir as h,access as f,constants as p,readdir as g,rm as m,readFile as y}from"fs/promises";import v from"minimist";import b,{join as w,dirname as S,resolve as _}from"path";import"node-ipc";import*as I from"fs";import x from"fs";import k from"tty";import E,{homedir as C,platform as $}from"os";import N from"stream";import O from"buffer";import T from"events";import A from"zlib";import P from"string_decoder";import M from"http";import D from"https";import R,{createHash as j}from"crypto";import L from"net";import F from"tls";import U from"dgram";import B,{fileURLToPath as W}from"url";import G from"node:os";import{spawn as V}from"child_process";import{dirname as H,join as Y,resolve as z}from"node:path";import{ImageData as q,loadImage as K,createCanvas as J}from"@napi-rs/canvas";import{spawn as Z}from"node:child_process";var X;!function(e){e.STARTING="STARTING",e.PENDING="PENDING",e.RUNNING="RUNNING",e.PAUSED="PAUSED",e.DRAINING="DRAINING",e.STOPPED="STOPPED",e.ERROR="ERROR"}(X||(X={}));const Q=e=>JSON.parse(JSON.stringify(e)),ee="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,te="object"==typeof self&&self.constructor&&"DedicatedWorkerGlobalScope"===self.constructor.name,ne="undefined"!=typeof process&&null!=process.versions&&null!=process.versions.node,re={};let ie=0,oe="";const se=e=>re[e]?re[e]:null,ae=(e,t)=>{const n=se(e);if(!n)return n;return n.blocks[t]||null},ce=e=>{const{recipeId:t,widgetId:n}=e,r=se(t);if(!r)return null;for(const e in r.blocks){const t=r.blocks[e].gates[n];if(t)return t}return null},le=(e,t,n)=>{const r=ae(e,t);if(!r)return r;return r.gates[n]},ue=()=>{const e=Date.now();if(e!==ie){const t=new Date;ie=e,oe=t.toJSON()}return oe},de=e=>{const t=se(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}},he="interrupt_port",fe="UI:",pe="default";var ge,me,ye,ve,be,we,Se,_e;let Ie;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(ge||(ge={})),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"}(me||(me={})),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"}(ye||(ye={})),function(e){e.Javascript="js",e.Python="py",e.Executable="exe"}(ve||(ve={})),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:"}(be||(be={})),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.RestartApp="restartApp",e.ShowHubScreen="showHubScreen",e.ExchangeSessionTokenForApiKey="exchangeSessionTokenForApiKey",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"}(we||(we={})),function(e){e.SetDependencyPaths="setDependencyPaths",e.GetCurrentDependencyPaths="getCurrentDependencyPaths",e.RemoveDependencyPaths="removeDependencyPaths",e.ParseStringExpression="parseStringExpression",e.GetGlobalVariableNames="getGlobalVariableNames",e.GetGlobalVariableValues="getGlobalVariableValues",e.SetGlobalVariableValues="setGlobalVariableValues"}(Se||(Se={})),function(e){e.IPC="ipc",e.WS="ws"}(_e||(_e={}));const xe=()=>{if(!Ie)throw new Error("CanvasManager not set");return Ie},ke=e=>{Ie=e},Ee=(e,t)=>xe().createCanvas(e,t),Ce=e=>ee?e.getContext("2d",{willReadFrequently:!0}):e.getContext("2d"),$e=e=>xe().loadImage(e),Ne="-",Oe=`inner${Ne}`,Te=`outer${Ne}`,Ae=`${Te}input${Ne}`,Pe=`${Te}output${Ne}`,Me=`${Oe}input${Ne}`,De=`${Oe}output${Ne}`,Re=e=>{if(ne){const t=Buffer.from(e,"base64"),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}{if("function"==typeof Uint8Array.fromBase64){const t=Uint8Array.fromBase64(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}const t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);const r=new ArrayBuffer(n.byteLength);return new Uint8Array(r).set(n),r}},je=e=>e===he,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,Be=e=>e&&"string"==typeof e.format&&e.data&&e.data instanceof ArrayBuffer,We=e=>"number"==typeof e?me.Number:"string"==typeof e?me.String:"boolean"==typeof e?me.Boolean:Array.isArray(e)?me.Array:Le(e)?me.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?me.AudioBuffer:e&&void 0!==e.byteLength?me.ArrayBuffer:Fe(e)?me.Rect:e&&void 0!==e.x&&void 0!==e.y&&"number"==typeof e.x&&"number"==typeof e.y?me.Point:Be(e)?me.BinaryFile:me.JsonObj,Ge=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},Ve=(e,t,n)=>"inner"===e?"input"===t?`${Me}${n}`:`${De}${n}`:"input"===t?`${Ae}${n}`:`${Pe}${n}`,He=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 $e(e.data)}},ze=e=>{const t=(e=>{const t=Ee(e.width,e.height),n=Ce(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]},qe=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 $e(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=Ee(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=Ee(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 Ke,Je;!function(e){e.Action="action",e.CustomInput="customInput"}(Ke||(Ke={})),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",e.fieldValue="fieldValue",e.dataToBinaryFile="dataToBinaryFile",e.eventCache="eventCache"}(Je||(Je={}));const Ze={};let Xe,Qe=()=>0;const et=async e=>{const t=Ze[e],n={name:he,type:me.Boolean};if(t){const r={name:t.portName},i=t.data||{type:me.Boolean,value:!0};if(!Qe)throw new Error("consumeEventCounter is not set");const o=Qe();Xe?(await Xe({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&&tt(e)):console.warn("Interrupt service has not been initialized")}},tt=e=>{const t=Ze[e];return!!t&&(t.timerRef&&("interval"===t.type?clearInterval(t.timerRef):"timeout"===t.type&&clearTimeout(t.timerRef)),delete Ze[e],!0)};var nt={interruptHandler:et,createInterrupt:e=>{const{type:t,recipePoolId:n,thingId:i,targetWidgetId:o,sourceWidgetId:s,portName:a,config:c,data:l,customId:u}=e;if(u&&Ze[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(Ze[d]={data:l,portName:a,recipePoolId:n,targetWidgetId:o,sourceWidgetId:s,thingId:i,type:t},"interval"===t)Ze[d].timerRef=setInterval((async()=>await et(d)),c.interval);else{if("timeout"!==t)throw new Error(`Invalid interrupt type '${t}'`);Ze[d].timerRef=setTimeout((async()=>await et(d)),c.timeout)}return d},destroyInterrupt:tt,destroyAllInterrupts:()=>{Object.keys(Ze).forEach(tt)},setInvokeChildGateCb:e=>{Xe=e},setConsumeEventCounterCb:e=>{Qe=e}};const rt=[10001,"Invalid `sourcePort` parameter"],it=[10002,"The gate [%s] does not exist. Have you called `loadWidgets` yet?"],ot=(e,...t)=>JSON.stringify({code:e[0],message:t[0]?i.format(e[1],...t):e[1].replace(/ \[%s\]/g,"")});let st=0,at={};var ct=(e,t)=>{const n=`${e}-${++st}`,r={event:t,eventKey:n,widgetId:e,resolve:()=>{},reject:()=>{}},i=new Promise(((e,t)=>{r.resolve=e,r.reject=t}));return r.promise=i,at[n]=r,r},lt=(e,t)=>{const n=at[e];n&&(delete at[e],n.resolve(t))};const ut=()=>({inputName:"",dataType:me.Anything}),dt="output",ht={processEvent:async(e,t)=>{const n=t.getState(),r={...ut(),...n};if(e.type!==r.dataType&&r.dataType!==me.Anything)return void console.error(`Invalid data type: ${e.type} for input: ${r.inputName}. Expected: ${r.dataType}`);const i=t.waitForOutputChild,o=i?ct(t.id,e):void 0,s=i?{eventKey:o?.eventKey}:void 0;if(await t.nextWidget(dt,{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={...ut(),...e};return[{name:dt,type:t.dataType}]},getInputNames:()=>[]},ft=Object.freeze({in:"in",reset:"reset",increment:"increment"}),pt="output";var gt={onParentEvent:async(e,t,n,r)=>{if(!e)throw new Error(ot(rt));const i={currentValue:0,increment:1,...r.getState()};let o=i.increment,s=i.currentValue;const a=await r.getParentAtPort(ft.increment);if(t.name===ft.increment)return void(n.data.type===me.Number&&r.setState({...i,increment:Number(n.data.value)}));if(a){const e=a.getValue();null!==e&&(o=e)}if(t.name===ft.reset)return r.setState({...i,currentValue:0});s+=o,r.setState({currentValue:s,increment:o});const c={type:me.Number,value:s};return r.nextGate(pt,c)},getInputNames:()=>[{name:ft.in,type:me.Anything},{name:ft.reset,type:me.Anything},{name:ft.increment,type:me.Number}],getOutputNames:()=>[{name:pt,type:me.Number}]};const mt=Object.freeze({in:"in",reset:"reset"}),yt="output";var vt={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===mt.reset?r.setState({...i,updatedAt:o,elapsed:0}):(r.setState({updatedAt:o,elapsed:s}),r.nextGate(yt,{type:me.Number,value:s}))},getInputNames:()=>[{name:mt.in,type:me.Anything},{name:mt.reset,type:me.Anything}],getOutputNames:()=>[{name:yt,type:me.Number}]};const bt=Object.freeze({data:"data",evaluation:"evaluation"}),wt="then",St="else";var _t={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===me.Number||n.data.type===me.String||n.data.type===me.Boolean||n.data.type===me.Anything&&s||n.data.type===me.Anything&&a)){let e=!1;return("Equal"===i.condition&&(n.data.value==i.value||n.data.type===me.Boolean&&n.data.value.toString()===i.value.toString())||"Not Equal"===i.condition&&(n.data.value!==i.value||n.data.type===me.Boolean&&n.data.value!==i.value.toString())||"Greater"===i.condition&&n.data.type===me.Number&&n.data.value>Number(i.value)||"Less"===i.condition&&n.data.type===me.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(wt,n.data):r.nextGate(St,n.data)}if(t.name===bt.evaluation&&(n.data.type===me.Number||n.data.type===me.String||n.data.type===me.Boolean||n.data.type===me.Anything&&(s||a))&&(i.$lastValue=n.data.value,i.$lastInputDataType=n.data.type,r.setState({...i})),t.name===bt.data){let e=!1;return("Equal"===i.condition&&(i.$lastValue==i.value||i.$lastInputDataType===me.Boolean&&i.$lastValue?.toString()===i.value.toString())||"Not Equal"===i.condition&&(i.$lastValue!==i.value||i.$lastInputDataType===me.Boolean&&i.$lastValue!==i.value.toString())||"Greater"===i.condition&&i.$lastInputDataType===me.Number&&Number(i.$lastValue)>Number(i.value)||"Less"===i.condition&&i.$lastInputDataType===me.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(wt,n.data):r.nextGate(St,n.data)}},getInputNames:e=>e.useDataPort?[{name:bt.data,type:me.Anything,triggerPort:!0},{name:bt.evaluation,type:[me.Number,me.String,me.Boolean]}]:[{name:"in",type:[me.Number,me.String,me.Boolean]}],getOutputNames:e=>e.$lastOutputDataType?[{name:wt,type:e.$lastOutputDataType},{name:St,type:e.$lastOutputDataType}]:[{name:wt,type:[me.Number,me.String]},{name:St,type:[me.Number,me.String]}]};const It=Object.freeze({in:"in",reset:"reset"}),xt="out",kt="skipped";var Et={onParentEvent:async(e,t,n,r)=>{const i={totalCalls:0,callsLimit:1,...r.getState()};return t.name===It.reset?r.setState({...i,totalCalls:0}):(i.totalCalls=i.totalCalls+1,i.totalCalls>i.callsLimit?(i.totalCalls=0,r.setState(i),r.nextWidget(xt,n.data)):(n.data.type!==i.$$lastDetectedType&&(i.$$lastDetectedType=n.data.type),r.setState(i),r.nextWidget(kt,n.data)))},getInputNames:()=>[{name:It.in,type:me.Anything},{name:It.reset,type:me.Anything}],getOutputNames:e=>[{name:xt,type:e.$$lastDetectedType??me.Anything},{name:kt,type:e.$$lastDetectedType??me.Anything}]};const Ct=Object.freeze({in:"in"}),$t="then",Nt="else";var Ot={onParentEvent:async(e,t,n,r)=>{const i={min:1,max:10,...r.getState()};if(n.data.type===me.Number)return n.data.value>=i.min&&n.data.value<=i.max?r.nextGate($t,n.data):r.nextGate(Nt,n.data)},getInputNames:()=>[{name:Ct.in,type:me.Number}],getOutputNames:()=>[{name:$t,type:me.Number},{name:Nt,type:me.Number}]};const Tt=Object.freeze({in:"in"}),At="out";var Pt={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===me.Number||n.data.type===me.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(At,{type:me.Number,value:Number(e)})}},getInputNames:()=>[{name:Tt.in,type:me.Number}],getOutputNames:()=>[{name:At,type:me.Number}]};const Mt=Object.freeze({in:"in"}),Dt="out",Rt=["image/png","image/jpeg","image/jpg","image/gif","image/webp","image/bmp","image/svg+xml"];var jt={onParentEvent:async(e,t,n,r)=>{const i={convertTo:"Integer",floatPlaces:2,...r.getState()};let o=n.data.value;if("ImageData"===i.convertTo){if(!Be(n.data.value))throw new Error("Invalid data type, expected a BinaryFile type");const e=n.data.value;if(!Rt.includes(e.format))throw new Error(`Unsupported image format: ${e.format}. Supported formats are: ${Rt.join(", ")}.`);const t=await $e(e);return r.nextGate(Dt,{type:me.ImageData,value:t})}if(n.data.type===me.Number||n.data.type===me.Anything||n.data.type===me.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(Dt,{type:"String"===i.convertTo?me.String:me.Number,value:o})}},getInputNames:()=>[{name:Mt.in,type:me.Number}],getOutputNames:e=>{const t="String"===e?.convertTo?me.String:"ImageData"===e?.convertTo?me.ImageData:me.Number;return[{name:Dt,type:t}]}};const Lt=Object.freeze({in:"in"}),Ft="out";var Ut={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(Ft,{type:me.Number,value:i.currentValue})},getInputNames:()=>[{name:Lt.in,type:me.Anything}],getOutputNames:()=>[{name:Ft,type:me.Number}]};const Bt=Object.freeze({in:"in",reset:"reset"}),Wt="out",Gt="skipped";var Vt={onParentEvent:async(e,t,n,r)=>{const i={lastCalledAt:0,delayMs:500},o={lastCalledAt:0,delayMs:500,...r.getState()};if(t.name===Bt.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(Wt,n.data)):(n.data.type!==o.$$lastDetectedType&&(o.$$lastDetectedType=n.data.type),r.setState(o),r.nextWidget(Gt,n.data))},getInputNames:()=>[{name:Bt.in,type:me.Anything},{name:Bt.reset,type:me.Anything}],getOutputNames:e=>[{name:Wt,type:e.$$lastDetectedType??me.Anything},{name:Gt,type:e.$$lastDetectedType??me.Anything}]};const Ht="in";var Yt={onParentEvent:async()=>{},getInputNames:()=>[{name:Ht,type:[me.ImageData,me.Number]}],getOutputNames:()=>[]};const zt=()=>({properties:[{label:"property1",name:"property1"}],detectedProperties:{}}),qt=(e,t)=>t.split(".").reduce(((e,t)=>null!=e?e[t]:e),e);var Kt={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===me.JsonObj||n.data.type===me.Rect||n.data.type===me.Point||n.data.type===me.BinaryFile||n.data.type===me.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===me.JsonObj||n===me.Rect||n===me.Point||n===me.Array;i.detectedProperties[t]={type:n,...r?{shape:Ge(o[t])}:void 0},e=!0}}if(s&&void 0===i.detectedProperties.length&&(i.detectedProperties.length={type:me.Number}),e&&r.setState(i),o){const e=[];for(const t of i.properties||[]){const n=qt(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:me.Anything;e.push(r.nextGate(t.name,{type:o,value:n}))}}await Promise.allSettled(e)}}},getInputNames:()=>[{name:"in",type:me.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:me.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:zt};const Jt="output",Zt="noItem";var Xt={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===me.Anything&&(c||a)||n.data.type===me.String&&a||n.data.type===me.Array&&c){o<0&&(o=s.length+o);const e=a?me.String:We(s[o]);return e!==i.$$lastDetectedType&&r.setState({...i,$$lastDetectedType:e}),void 0!==s[o]?r.nextGate(Jt,{value:s[o],type:e}):r.nextGate(Zt,{value:!0,type:me.Boolean})}},getInputNames:()=>[{name:"in",type:[me.Array,me.String]}],getOutputNames:e=>[{name:Jt,type:e.$$lastDetectedType??me.Anything},{name:Zt,type:me.Boolean}]};const Qt={},en=e=>(Qt[e]||(Qt[e]={canvasFrom:Ee(320,240),canvasTo:Ee(320,240)}),Qt[e]),tn=Object.freeze({image:"image",rect:"rect"}),nn="image";var rn={onParentEvent:async(e,t,n,r)=>{const i=en(r.id),o={offset:{height:0,left:0,top:0,width:0},...r.getState()},s=[me.Anything,me.Rect,me.JsonObj];if(t.name===tn.rect&&Fe(n.data.value)&&s.includes(n.data.type)&&(o.rect=n.data.value,r.setState({...o})),t.name===tn.image){if(!((n.data.type===me.ImageData||n.data.type===me.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(nn,{type:me.ImageData,value:e})}},getInputNames:()=>[{name:tn.image,type:me.ImageData},{name:tn.rect,type:[me.Rect,me.JsonObj]}],getOutputNames:()=>[{name:nn,type:me.ImageData}],initialize:async e=>{en(e.widgetId)},terminate:async e=>{delete Qt[e.widgetId]}};const on=(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(ee)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},sn=[-1,0,1,-2,0,2,1,0,1],an=Object.freeze({image:"image"}),cn="image";var ln={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={matrix:[...sn],...i};if(n.data.type===me.ImageData||n.data.type===me.Anything&&Le(n.data.value)){const e=on(n.data.value,o.matrix);return r.nextGate(cn,{type:me.ImageData,value:e})}},getInputNames:()=>[{name:an.image,type:me.ImageData}],getOutputNames:()=>[{name:cn,type:me.ImageData}]};const un=Object.freeze({output:"output",aborted:"aborted"}),dn=()=>({inputs:2,matchingOutputs:!0,lastInputIndex:-1,delayMs:500,triggeredAt:0}),hn=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:me.Anything})));return n.push({name:"reset",type:me.Anything}),n};var fn={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(un.aborted,n.data);{i.triggeredAt=o;const e=hn(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(un.output,n.data),r.setState(i)}},getInputNames:hn,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:me.Anything})));return e.push({name:un.aborted,type:me.Anything}),e}return[{name:un.output,type:me.Anything},{name:un.aborted,type:me.Anything}]},getDefaultState:dn};const pn=(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)}},gn=(e,t,n,r,i,o,s)=>{e.fillStyle=i,e.fillRect(t,n,r,r),pn(e,t,n,i,o,s)},mn=(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;pn(e,t.left-s,t.top-s,r,i,o)},yn={},vn=e=>(yn[e]||(yn[e]={memCanvas:Ee(320,240),lastFrame:void 0,pixels:void 0}),yn[e]),bn=Object.freeze({image:"image",pixels:"pixels"}),wn="image";var Sn={onParentEvent:async(e,t,n,r)=>{const i=vn(r.id),o={fontSize:12,color:"#00ff00",size:2,...r.getState()},s=(n.data.type===me.ImageData||n.data.type===me.Anything)&&Le(n.data.value);if(t.name===bn.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===bn.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=Ce(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)?mn(e,n,i,o,r,a):Ue(n)&&gn(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(wn,{type:me.ImageData,value:e})}r.setState(o)},getInputNames:()=>[{name:bn.image,type:me.ImageData},{name:bn.pixels,type:[me.Rect,me.Point,me.Array,me.JsonObj]}],getOutputNames:()=>[{name:wn,type:me.ImageData}],initialize:async e=>{vn(e.widgetId)},terminate:async e=>{delete yn[e.widgetId]}};const _n=Object.freeze({in:"in"}),In="output",xn=e=>{const t=String(e).split(".");return t.length<2?0:t[1].length};var kn={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=xn(i.min)),s){const t=xn(i.max);t>e&&(e=t)}c=Number(c.toFixed(e))}else c=Math.floor(c);return r.nextGate(In,{type:me.Number,value:c})},getInputNames:()=>[{name:_n.in,type:me.Anything}],getOutputNames:()=>[{name:In,type:me.Number}]};const En=Object.freeze({output:"output",totalItems:"totalItems"}),Cn=Object.freeze({trigger:"trigger",clear:"clear"}),$n=()=>({$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1}),Nn=async(e,t)=>t.nextGate(En.totalItems,{type:me.Number,value:e});var On={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalSentItems:-1,totalSentAt:0,$$list:[],$$outputShape:{},totalInputs:1,...r.getState()};if(t.name===Cn.clear)return i.$$list=[],i.properties?.autoFilled&&delete i.properties,r.setState(i),Nn(i.$$list.length,r);const o=t.name===Cn.trigger;if(!o)if(Array.isArray(n.data.value))n.data.type!==me.Array&&n.data.type!==me.Anything||(i.$$outputShape={...i.$$outputShape,...e?.jsonShape},i.$$list=i.$$list.concat(n.data.value),r.setState({...i}),await Nn(i.$$list.length,r));else{const t=`$$primitive_${Object.keys(i.$$outputShape).length}`;n.data.type===me.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 Nn(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 Nn(e,r),r.nextGate(En.output,{type:me.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:me.Anything})));return n.push({name:Cn.clear,type:me.Anything},{name:Cn.trigger,type:me.Anything}),n},getOutputNames:e=>[{name:En.output,type:me.Array,...e.properties?{jsonShape:e.properties?.jsonShape}:void 0},{name:En.totalItems,label:"Total Items",type:me.Number}],getDefaultState:$n};const Tn=Object.freeze({start:"start",stop:"stop"}),An="output",Pn="clock_interrupt";var Mn={onParentEvent:async(e,t,n,r)=>{const i={enabled:!1,interval:1e3,intervalMode:"ms",...r.getState()};if(je(e?.name||"")&&t.name===Pn)return r.nextGate(An,{type:me.Boolean,value:!0});if(t.name===Tn.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!==Tn.start||i.enabled||i.$$interruptId||(i.$$interruptId=r.registerInterrupt({type:"interval",sourceWidgetId:r.id,customTargetPortName:Pn,config:{interval:i.interval}}),i.enabled=!0,r.setState(i))},getInputNames:()=>[{name:Tn.start,type:me.Anything},{name:Tn.stop,type:me.Anything}],getOutputNames:()=>[{name:An,type:me.Boolean}],initialize:async e=>{const t=e.getState();if(t.enabled&&!t.$$interruptId){const n=e.registerInterrupt({type:"interval",sourceWidgetId:e.widgetId,customTargetPortName:Pn,config:{interval:t.interval}});e.setState({...t,$$interruptId:n})}}};const Dn=864e5;var Rn;!function(e){e.ABORTED="DELAY_ABORTED",e.CONTINUED="DELAY_CONTINUED",e.TERMINATED="WIDGET_TERMINATED"}(Rn||(Rn={}));const jn={},Ln=Object.freeze({in:"in",abort:"abort",continue:"continue"}),Fn="out",Un=(e,t)=>{const n=e.getState();e.setState({...n,pendingDelaysCount:Math.max(0,n.pendingDelaysCount+t)})};var Bn={onParentEvent:async(e,t,n,i)=>{const o={enabled:!1,interval:1e3,intervalMode:"ms",pendingDelaysCount:0,...i.getState()},s=i.id;jn[s]||(jn[s]=new Map);const a=jn[s];if(t.name!==Ln.abort)if(t.name!==Ln.continue){if(t.name===Ln.in){const e=o.interval;if(!((c=e)>=1&&c<=Dn))throw new Error(`Invalid interval: ${e}ms. Must be between 1ms and 86400000ms`);const t={...n.data},s=r();Un(i,1);const l=new Promise(((n,r)=>{const o=setTimeout((()=>{n(t),a.delete(s),Un(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:Fn,data:e})}catch{Un(i,-1)}}var c}else{const e=Array.from(a.entries());for(const[t,n]of e)clearTimeout(n.timeoutId),n.reject(new Error(Rn.CONTINUED)),a.delete(t);for(const[,t]of e)await i.invokeNextWidget({port:Fn,data:t.eventData});Un(i,-i.getState().pendingDelaysCount)}else{for(const[e,t]of a)clearTimeout(t.timeoutId),t.reject(new Error(Rn.ABORTED)),a.delete(e);Un(i,-i.getState().pendingDelaysCount)}},getInputNames:()=>[{name:Ln.in,type:me.Anything},{name:Ln.abort,type:me.Anything},{name:Ln.continue,type:me.Anything}],getOutputNames:()=>[{name:Fn,type:me.Anything}],initialize:async e=>{const t=e.getState();0!==t.pendingDelaysCount&&e.setState({...t,pendingDelaysCount:0})},terminate:async e=>{const t=e.widgetId;if(jn[t]){for(const[,e]of jn[t])clearTimeout(e.timeoutId),e.reject(new Error(Rn.TERMINATED));delete jn[t]}}};const Wn=Object.freeze({in:"in"}),Gn="output",Vn=(e,t,n)=>"number"==typeof e?Number((e*t).toFixed(n)):e;var Hn={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===me.Array&&("number"==typeof n.data.value?.[0]?s=((e,t,n)=>{const r=(e||[]).map((e=>Vn(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]=Vn(i[e],t,n))})),i}));return i})(n.data.value,i.factor,i.decimalPoints,i.userProperties))),n.data.type===me.Number&&(s=Vn(n.data.value,i.factor,i.decimalPoints)),a&&r.setState(i),r.nextGate(Gn,{type:o,value:s})},getInputNames:()=>[{name:Wn.in,type:[me.Array,me.Number]}],getOutputNames:e=>[{name:Gn,type:e.detectedInputType||me.Number,jsonShape:e.detectedInputJson}]};const Yn={},zn=Object.freeze({output:"output"}),qn=Object.freeze({trigger:"trigger"}),Kn=()=>({useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}]}),Jn=(e,t)=>{const n={};Yn[t]=Yn[t]||{};for(let r=0;r<e.properties.length;r++){const i=Yn[t][e.properties[r].name];n[e.properties[r].label]=i}return n};var Zn={onParentEvent:async(e,t,n,r)=>{const i={useTriggerPort:!0,properties:[{name:"x",label:"x"},{name:"y",label:"y"}],...r.getState()};if(t.name===qn.trigger){const e=Jn(i,r.id);return r.nextWidget(zn.output,{type:me.JsonObj,value:e})}const o=i.properties.findIndex((e=>e.name===t.name));if(-1!==o){const e=i.properties[o];if(Yn[r.id]=Yn[r.id]||{},Yn[r.id][e.name]=n.data.value,!i.useTriggerPort){const e=Jn(i,r.id);return r.nextWidget(zn.output,{type:me.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:me.Anything})));return t.useTriggerPort&&n.push({name:qn.trigger,label:qn.trigger,type:me.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:zn.output,label:zn.output,type:me.JsonObj}],getDefaultState:Kn,initialize:async e=>{Yn[e.widgetId]={}},terminate:async e=>{delete Yn[e.widgetId]}};const Xn=async e=>{const t=(e,t)=>e.split(t)[1];if(e.startsWith(Ae)){const n=t(e,Ae);return Ve("inner","input",n)}if(e.startsWith(De)){const n=t(e,De);return Ve("outer","output",n)}return null},Qn=()=>({canvasPosition:{x:0,y:0},canvasZoom:1,inputs:[{name:"input",type:[me.Anything],index:0}],outputs:[{name:"output",type:[me.Anything],index:0}],name:"Custom Widget 1",description:"",type:"custom"}),er=e=>{const t={...Qn(),...e},n=t.inputs.map(((e,t)=>({name:Ve("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:Ve("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 tr={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Qn(),...i},s=er(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(me.Anything)||i.type.includes(n.data.type))){const e=await Xn(t.name);e&&await r.nextWidget(e,{type:n.data.type,value:n.data.value})}}},getInputNames:er,getOutputNames:e=>{const t={...Qn(),...e},n=t.outputs.map(((e,t)=>({name:Ve("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:Ve("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:Qn};const nr=(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 rr={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}`)||!nr(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}`)&&nr(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 ir=e=>We(e),or=s.enum(["Read","Modify","Comment"]),sr=s.object({email:s.email(),name:s.string(),accessMode:or});var ar;!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"}(ar||(ar={}));const cr=s.enum(["active","inactive"]),lr=s.enum(["CreateApiKeys","RevokeApiKeys"]),ur=s.enum(["organization"]),dr=s.object({[ur.enum.organization]:s.object({scopes:s.array(lr)}).optional()}).partial(),hr=s.enum(["Owner","Admin","Member"]);s.object({apiKey:s.string(),createdAt:s.string(),createdBy:s.string()});const fr=s.enum(["auto-generated","user-generated"]);s.object({id:s.string(),organizationId:s.string(),userId:s.string(),key:s.string(),lastFourDigits:s.string().optional(),comment:s.string().optional(),createdAt:s.string(),createdBy:s.string(),revokedAt:s.string().optional(),revokedBy:s.string().optional(),type:fr.optional().default("user-generated")});const pr=s.object({country:s.string(),city:s.string(),address1:s.string(),address2:s.string(),postCode:s.string()}),gr=s.object({id:s.string(),name:s.string(),groups:s.array(s.string()),logo:s.string().optional(),industry:s.string().optional(),accountOwner:s.string(),stripeCustomerId:s.string(),stripeSubscription:s.custom(),domain:s.string().optional(),createdAt:s.string(),updatedAt:s.string(),accountState:s.custom(),location:pr.optional()}),mr=s.object({id:s.string(),firstName:s.string(),lastName:s.string(),email:s.email().optional(),loginId:s.string().optional(),role:hr,groups:s.array(s.string()).optional().default([]),entityScopes:dr.optional(),status:cr,lastSeenAt:s.string().optional(),createdAt:s.string()});var yr,vr,br,wr;gr.pick({id:!0,name:!0,stripeSubscription:!0,stripeCustomerId:!0}),s.object({member:s.object({firstName:s.string().optional(),lastName:s.string().optional(),email:s.string().optional(),role:hr.optional(),groups:s.array(s.string()).optional(),status:cr,entityScopes:dr.optional()})}),mr.omit({id:!0,createdAt:!0,lastSeenAt:!0}),s.object({name:s.string(),location:pr.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"}(yr||(yr={})),function(e){e.Hardware="hardware",e.Virtual="virtual"}(vr||(vr={})),function(e){e.Cloud="cloud",e.Web="web"}(br||(br={})),function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(wr||(wr={}));const Sr=s.object({name:s.string(),category:s.string(),id:s.string(),type:s.enum(br),version:s.string()}),_r=s.object({version:s.number(),contents:s.string(),contentsLength:s.number(),createdAt:s.string(),comments:s.string().optional()}),Ir=s.object({id:s.string(),name:s.string(),uuid:s.string().optional(),version:s.number(),dataSources:s.array(s.object({host:s.string().optional(),stream:s.string(),blocks:s.array(s.string())})).optional(),protocolVersion:s.string(),linkedTutorial:s.string().optional(),blocks:s.array(Sr),widgets:s.array(s.object({type:s.string(),name:s.string(),thingId:s.string()})).optional(),contents:s.string(),storage:s.string().optional(),history:s.array(_r).optional(),cloud:s.object({environment:s.enum(yr),enabled:s.boolean()}).optional()}),xr=s.object({recipeId:s.string(),version:s.number()});Ir.extend({userId:s.string(),author:s.object({name:s.string(),id:s.string()}),copiedFrom:xr.optional(),updatedAt:s.string(),createdAt:s.string(),preview:s.string(),isPublic:s.boolean(),isDefault:s.boolean(),meta:s.object({contentsLength:s.number(),storageLength:s.number(),storageChecksum:s.string().optional()}),sharedWith:s.array(sr),publicSharedId:s.string().optional(),marketplacePublication:s.string().optional()});const kr=Ir.omit({id:!0,version:!0,contents:!0,storage:!0});var Er,Cr,$r,Nr,Or,Tr,Ar,Pr;s.object({rawContents:s.string(),recipe:kr.extend({contentLength:s.number(),copiedFrom:xr.optional()}),storageSize:s.number().optional(),storageChecksum:s.string().optional(),comments:s.string().optional(),currentVersion:s.number().optional()}),s.object({message:s.string(),recipeId:s.string(),version:s.number(),versionHistory:s.array(_r)}),function(e){e.Bundle="bundle",e.Group="group"}(Er||(Er={})),function(e){e.Gateway="gateway",e.Timer="timer"}(Cr||(Cr={})),function(e){e.InstallInProgress="installation-in-progress"}($r||($r={})),function(e){e.InstallDependencies="install-dependencies",e.GetInstalledDependencies="get-installed-dep"}(Nr||(Nr={})),function(e){e.Success="success",e.Error="error",e.Pending="pending"}(Or||(Or={})),function(e){e.NotFound="not-found",e.BadRequest="bad-request",e.Forbidden="forbidden",e.InternalError="internal-error"}(Tr||(Tr={})),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"}(Ar||(Ar={})),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"}(Pr||(Pr={}));const Mr=s.object({id:s.string(),name:s.string(),organizationId:s.string()}),Dr=s.object({version:s.number(),contents:s.string(),contentsLength:s.number(),createdAt:s.string(),title:s.string(),shortDescription:s.string(),comments:s.string().optional()}),Rr=s.object({id:s.string(),title:s.string(),author:Mr,shortDescription:s.string(),authorId:s.string(),category:s.string(),tags:s.array(s.string()),createdAt:s.string(),downloads:s.number().default(0),updatedAt:s.string(),iconSvg:s.string(),contents:s.string(),descriptionMarkdown:s.string(),githubUrl:s.string().optional(),visibility:s.enum(["public","private","organization"]),version:s.number(),history:s.array(Dr).default([]),deletedAt:s.string().optional()}),jr=Rr.extend({rating:s.object({average:s.number(),total:s.number()}).optional()});s.object({id:s.string(),author:s.object({id:s.string(),name:s.string()}).optional(),description:s.string(),createdAt:s.string(),updatedAt:s.string(),snippetId:s.string(),deletedAt:s.string().optional(),isAbuseReport:s.boolean().optional(),reportReason:s.enum(["spam","inappropriate","not-working","security","other"]).optional()}),s.object({query:s.string().optional(),category:s.string().optional(),featured:s.boolean().optional(),recommended:s.boolean().optional(),sortBy:s.enum(["most_recent","most_liked","alphabetical"]).optional(),visibility:s.enum(["public","private","organization"]).optional(),page:s.number().optional(),limit:s.number().optional()}),s.object({snippets:s.array(jr),total:s.number(),page:s.number(),limit:s.number(),hasMore:s.boolean()}),s.object({snippetId:s.string(),rating:s.number(),off:s.boolean().optional()}),s.object({average:s.number(),total:s.number()}),s.object({success:s.boolean(),error:s.string().optional()}),s.object({snippet:s.lazy((()=>s.object({title:s.string(),shortDescription:s.string(),category:s.string(),tags:s.array(s.string()),iconSvg:s.string(),contents:s.string(),descriptionMarkdown:s.string(),githubUrl:s.string().optional(),visibility:s.enum(["public","private","organization"]),deletedAt:s.string().optional()})))}),s.object({snippet:s.lazy((()=>s.object({title:s.string(),shortDescription:s.string(),category:s.string(),tags:s.array(s.string()),iconSvg:s.string(),contents:s.string(),descriptionMarkdown:s.string(),githubUrl:s.string().optional(),visibility:s.enum(["public","private","organization"])})))}),s.object({snippet:Rr}),s.object({snippet:Rr}),s.object({snippetId:s.string(),version:s.number()}),s.object({snippet:Rr});let Lr=null;var Fr=()=>{if(!Lr)throw new Error("Required function is not set");return Lr};class Ur 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 Br extends Error{constructor(e,t){super(e),this.name="UserCodeError",t&&(this.stack=t)}}const Wr=(e,t)=>`\n\t\tfunction _user_code_(){\n\t\t\t${t===wr.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\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`,Gr=(e,t,n,r)=>{const i=Wr(e,n),s={...t,document:{},__errorTracer:e=>{if(e instanceof Ur)throw e;throw new Br(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:rr.image,...n===wr.Cloud?{require:Fr(),kemuProcess:process.env.KEMU_PROCESS?process.env.KEMU_PROCESS:{}}:{},CryptoJS:o,decodeDataType:ir,window:{addEventListener:t?.addEventListener,removeEventListener:t?.removeEventListener}};try{const e="browser"===(()=>{if(ee)return"browser";if(ne)return"node";if(te)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()(s)}}catch(e){return{error:{name:"CompileError",message:e.message,stack:e.stack}}}},Vr="main",Hr="My Script",Yr="This is a test script.",zr=`\n/**\n * Name: ${Hr}\n * Description: ${Yr}\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(),qr=()=>({pauseExecution:!1,autoPauseOnError:!0,$$eventListeners:{},version:2,metadata:{name:Hr,description:Yr},pages:{[Vr]:{code:zr,language:"javascript",name:"My First Script"}}}),Kr=(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 Wr(t,e).split(t)[0].split("\n").length+2})(t),n.column=i.column)}return e.message&&(n.message=e.message),n},Jr=(e,t)=>{const n={...{...qr(),...t.getState()},$$error:e||void 0};e&&console.error(e.message),t.setState(n)},Zr=new a;let Xr,Qr,ei={},ti={};const ni=e=>{const t=le(Xr,Qr,e);if(!t)throw new Error(`Widget ${e} not found in thing ${Qr}`);return t},ri=(e,t)=>`${e}:${t}`,ii=e=>`${ni(e.createdByWidgetId).id}::${e.variableName}`,oi=e=>`${fe}${e}`;var si=e=>{const t=ni(e.createdByWidgetId),n=ii({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});ti[n]={type:e.type,subscriberWidgetId:t.id,subscriberWidgetType:t.type}},ai=e=>{const t=ii({variableName:e.variableName,createdByWidgetId:e.createdByWidgetId});delete ti[t]},ci=async e=>{const t=ni(e.setByWidgetId);if(!t)throw new Error(`Widget ${e.setByWidgetId} not found in thing ${Qr} in recipe ${Xr}`);const n=e.variableName.startsWith(fe)?ii({variableName:e.variableName,createdByWidgetId:e.setByWidgetId}):e.variableName;ei[n]={value:e.value,type:e.type};const r={value:e.value,type:e.type,varName:e.variableName,isUIElement:e.variableName.startsWith(fe),setByWidgetType:t.type,setByWidgetId:e.setByWidgetId};await Zr.emit(ri(e.variableName,e.type),r),e.type!==me.Anything&&await Zr.emit(ri(e.variableName,me.Anything),r)},li=e=>{const{readerWidgetId:t,variableName:n}=e;if(!ni(t))throw new Error(`Widget ${t} not found in thing ${Qr} in recipe ${Xr}`);const r=n.startsWith(fe)?ii({variableName:e.variableName,createdByWidgetId:e.readerWidgetId}):n,i=ei[r];if(i)return{type:i.type,value:i.value}},ui=e=>{const{widgetId:t,variableName:n,type:r}=e;if(!ni(t))throw new Error(`Widget ${t} not found in thing ${Qr} in recipe ${Xr}`);const i=ri(n,r);let o;return o=Zr.on(i,(async r=>{le(Xr,Qr,t)?await e.onValueChange(r):(console.warn(`Zombie widget ${t} detected, unsubscribing from variable events "${n}"`),o?.())})),o},di=e=>{ti={},ei={},Xr=e.recipePoolId,Qr=e.thingId};const hi="setTimeout",fi="variableChanged",pi="globalVariableChanged",gi=e=>{const{recipePoolId:t,scriptWidgetId:n}=e,r=ce({recipeId:t,widgetId:n});if(!r)throw new Error(`Widget "${n}" not found in recipe "${t}"`);const i=(e,t)=>{const r=li({readerWidgetId:n,variableName:e});if(r||t)return void 0===r?{value:t?.value??t,type:t?.type??We(t)}:{value:r.value,type:r.type}},o=(t,i,o)=>{if(!e.setState)return void console.warn("Cannot subscribe to variable changes without a setState function");const s={...qr(),...e.getState()},a=ui({variableName:t,type:me.Anything,widgetId:n,onValueChange:async e=>{i?e.setByWidgetType===Je.widgetGroup&&e.setByWidgetId===r.groupId&&await o(e):o(e)}});delete s.$$eventListeners[t],s.$$eventListeners[t]={handler:o,abort:async()=>{a()},name:fi},e.setState(s)};return{get:i,set:async(e,t,r)=>{await ci({variableName:e,type:r||We(t),setByWidgetId:n,value:t})},onValueChange:(e,t)=>{o(e,!1,t)},onUIValueChange:(e,t)=>{const n=oi(e);o(n,!0,t)},getUIValue:e=>{const n=oi(e),o=i(n);if(o)return{value:o.value,type:o.type};const s=r.groupId;if(!s)throw new Error("You can only read UI variables from inside a widgetGroup");const a=ce({recipeId:t,widgetId:s});if(!a)throw new Error(`Widget "${s}" not found in recipe "${t}"`);const c=a.state,l=(c.settings||[]).find((t=>t.variableName===e));if(!l)throw new Error(`Field "${e}" not found in widgetGroup "${c.name}"`);const u=l.config,d=u.customValue??u.defaultValue;if(void 0===d)throw new Error(`Field "${e}" in widgetGroup "${c.name}" has no default value`);return{value:d,type:We(d)}},setUIValue:async(e,t,n)=>{const i=r.groupId;if(!i)throw new Error("You can only set UI variables from inside a widgetGroup");const o=oi(e);await ci({variableName:o,value:t,setByWidgetId:i,type:n??We(t)})}}};let mi;var yi=e=>{mi=e},vi=()=>{if(!mi)throw new Error("Hub Connector not set");return mi};const bi=new a,wi="invoked";let Si={},_i={},Ii={},xi={};const ki=(e,t,n)=>`${e}-${t}${n?`-${n}`:""}`;var Ei=e=>{const{data:t,thingId:n,widgetId:r,sourcePortName:i,recipeId:o,target:s,sourceOutputNames:a,currentPath:c,eventId:l}=e,u=ki(n,r,i),d=ki(n,r),h=ki(n,r,"produced"),f=Ii[d],p=Date.now();xi[d]=p,Si[u]={data:t,recipeId:o,currentPath:c,eventId:l,source:{widgetId:r,portName:i},sourceOutputNames:a,...s?{target:{widgetId:s.widgetId,portName:s.portName}}:{}},bi.emit(h,{currentTime:p,prevTime:f,...s?{targetPort:s?.portName}:{}})},Ci=e=>{const{thingId:t,widgetId:n,targetPortName:r,data:i,source:o,originalEvent:s,recipeId:a,sourceOutputNames:c,currentPath:l,eventId:u}=e,d=ki(t,n,r),h=ki(t,n),f=ki(t,n,wi),p=Ii[h],g=Date.now();Ii[h]=g,_i[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}}:{}},bi.emit(f,{prevTime:p,currentTime:g,targetPort:r,sourceInfo:o})},$i=()=>{Si={},_i={},Ii={},xi={},bi.clearListeners()};const Ni=e=>{const{recipePoolId:t,widgetId:n,secrets:r,clearExistingSecrets:i}=e,o=ce({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}},Oi=e=>{const{recipePoolId:t,widgetId:n}=e,r=ce({recipeId:t,widgetId:n});if(!r)throw new Error(`Widget [${n}] not found in recipe [${t}]`);delete r.secrets},Ti={},Ai="value",Pi=async e=>{const{recipeUuid:t,secretNames:n,serviceName:r}=e,i=vi(),o=[{recipeUuid:t,secretNames:n,serviceName:r}];let s={};try{const e=await i.executeHubFunction(we.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},Mi=e=>{const t=se(e);if(!t)throw new Error(`Recipe [${e}] does not exist]`);return{uuid:t.uuid,recipeType:t.dbInfo?.recipeType}};var Di={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};if(!i.name||!e)return;const{uuid:o}=Mi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=r.recipeType===ge.Desktop,a=Ti[r.id]?.[i.name];let c=a;if(!a||a&&!s){const e=await Pi({recipeUuid:o,secretNames:[i.name]});c=e?.[i.name],null!=c&&s&&(Ti[r.id]||(Ti[r.id]={}),Ti[r.id][i.name]=c)}if(null==c)throw new Error(`Secret "${i.name}" not mapped to this recipe`);r.nextWidget(Ai,{type:me.String,value:c})},getOutputNames:()=>[{name:Ai,type:me.String}],getInputNames:()=>[{name:"read",type:me.Anything}],terminate:async e=>{Ti[e.widgetId]={},Oi({recipePoolId:e.recipePoolId,widgetId:e.widgetId})},initialize:async e=>{const t={name:"",...e.getState()};t.name&&(Ti[e.widgetId]={},Ni({recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:[{name:t.name}]}))}};const Ri={},ji=e=>{const{recipePoolId:t,thingId:n,scriptWidgetId:r}=e,i=se(t),o=i?.dbInfo.recipeType,s=Mi(t).uuid,a=le(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===ge.Desktop,n={};let i=[];for(const t of e){const e=Ri[r]?.[t];null==e&&i.push(t)}if(t||(i=e),i.length>0){const t=await Pi({recipeUuid:s,secretNames:i});for(const i of e){const e=t?.[i],o=Ri[r]?.[i];n[i]=void 0!==e?e:void 0!==o?o:null}Ri[r]={...Ri[r],...n}}else for(const t of e)n[t]=Ri[r]?.[t]||null;return n}},unregisteredSecrets:()=>{a&&(a.secrets={})}}},Li=new a;let Fi={};const Ui="statusValueChanged",Bi="keyRemovedFromWidget",Wi=()=>{Fi={}},Gi=()=>{Li.clearListeners()},Vi=e=>{Li.emit(Ui,e)};var Hi=e=>{const{name:t,value:n,sourceWidget:r,widgetId:i,widgetType:o}=e;Fi[i]=Fi[i]||[];const s=Fi[i].find((e=>e.name===t&&e.widgetType===o&&e.widgetId===i));s?s.data=n:Fi[i].push({name:t,data:n,sourceWidget:r,widgetId:i,widgetType:o});let a=n;null===n&&(a={type:me.Anything,value:""}),Vi({name:t,value:a,sourceWidget:r,statusWidgetId:i,widgetType:o})},Yi=e=>Li.on(Ui,e),zi=()=>{Wi(),Gi()},qi=e=>{const t=()=>{const e=[];for(const t in Fi)for(const n of Fi[t])e.push(n.name);return e},n=t();delete Fi[e];(e=>{Li.emit(Bi,e)})({before:n,after:t()})};const Ki=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},Hi({name:e,sourceWidget:t,widgetId:t,value:r,widgetType:Je.script})}},clearStatusValues:()=>{qi(t)}}},Ji=new a,Zi=e=>{if(e.includes("."))throw new Error("Variable and group names cannot contain dots")},Xi=(e,t)=>{if(!t)throw new Error("name is required");return Zi(t),e?`${e}.${t}`:t},Qi=e=>{if(!e)throw new Error("fullPath is required");const t=e.lastIndexOf(".");if(-1===t)return{group:null,name:e};return{group:e.substring(0,t),name:e.substring(t+1)}},eo=e=>`globalVariableChange_${e}`,to=e=>`globalVariableGroupChange_${e}`,no=e=>`globalVariableParentGroupStateChange_${e}`,ro=e=>`globalVariableRenamed_${e}`;let io={};const oo=e=>{const{name:t,notify:n=!0}=e,r=ao(t);if(!r)return;if("group"===r.controlType){const e=lo().filter((e=>!!e.group&&(e.group===t||e.group.startsWith(t+"."))));for(const t of e)oo({name:t.name,notify:n})}n&&Ji.emit("globalVariableRemoved",r),delete io[t]},so=()=>{for(const e in io)oo({name:e,notify:!0})},ao=e=>{let t;t="string"==typeof e?e:Xi(e.group,e.name);return io[t]??null},co=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");Zi(p),p=p.replace(/-/g,"_");const g=Xi(h??null,p);let m=ao(g);const y=!m,v=!!m;if(y)m={},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 b=n??(t?We(t):null),w=t!==m.lastValue,S=h!==m.group&&void 0!==h,_=c!==m.order&&void 0!==c;m.lastDataType=b,m.lastValue=t,m.controlType=r??m.controlType??"anything",m.lastChangedByWidgetId=i??null,m.lastExecutionContext=s??null,m.helpText=a??m.helpText,m.controlSettings=f??m.controlSettings,m.name=g,m.order=c??m.order,m.group=void 0!==h?h:m.group,io[g]=m,u||null!==t&&(w||l)&&(await Ji.emit(eo(g),m),await Ji.emit("globalVariableChange_any",m)),v&&(S||_)&&await Ji.emit(to(g),m),y&&!d&&await Ji.emit("globalVariableDefined",m)},lo=()=>Object.values(io),uo=e=>lo().filter((t=>!!t.group&&(t.group===e||t.group.startsWith(e+".")))),ho={resetAllGlobalVariables:so,getGlobalVariable:ao,setGlobalVariable:co,onGlobalVariableChange:(e,t)=>Ji.on(eo(e),t),onGlobalVariableParentGroupChange:(e,t)=>Ji.on(to(e),t),onVarParentGroupStateChange:(e,t)=>Ji.on(no(e),t),notifyGroupMembersOfParentGroupChange:async e=>{const t=uo(e),n=ao(e);if(n)for(const e of t)await Ji.emit(no(e.name),{variable:e,parentGroup:n})},deleteGlobalVariable:oo,onGlobalVariableDefined:e=>Ji.on("globalVariableDefined",e),onGlobalVariableRemoved:e=>Ji.on("globalVariableRemoved",e),onGlobalVariableRenamed:(e,t)=>Ji.on(ro(e),t),onAnyGlobalVariableChange:e=>Ji.on("globalVariableChange_any",e),getAllVariables:lo,renameVariable:e=>{const{oldName:t,newName:n}=e,r=ao(t);if(!r)throw new Error("Global variable not found");Zi(n);const i="group"===r.controlType,{group:o}=Qi(t),s=Xi(o,n);if(i){const e=lo().filter((e=>!!e.group&&(e.group===t||e.group.startsWith(t+"."))));for(const n of e){const{group:e,name:r}=Qi(n.name);let i=null;e&&(i=e===t?s:e.startsWith(t+".")?s+e.substring(t.length):e),co({name:r,value:n.lastValue,lastDataType:n.lastDataType??null,controlType:n.controlType,controlSettings:n.controlSettings,widgetId:n.lastChangedByWidgetId??void 0,executionContext:n.lastExecutionContext??void 0,helpText:n.helpText??void 0,order:n.order??void 0,group:i,disableChangeNotifications:!0,disableDefineNotifications:!0})}}oo({name:t,notify:!1}),co({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:o}),Ji.emit(ro(t),{oldName:t,newName:s})},registerGlobalVariables:e=>{so(),io={};const t=e.map((e=>{if(!e.name.includes(".")){if(e.group){const t=Xi(e.group,e.name);return{...e,name:t}}return e}const{name:t}=Qi(e.name);if(t.includes("."))throw new Error(`Invalid variable name: "${e.name}" - display names cannot contain dots`);return e}));for(const e of t)io[e.name]=e},getVariablesInGroup:uo,isGroupVariable:e=>"group"===e.controlType,buildFullPath:Xi,parsePath:Qi,validateName:Zi},fo="kemu.io.scriptHttp",po=e=>{const{recipePoolId:t,widgetId:n,httpConfig:r}=e,i=vi();let o;const s=(e=>e.find((e=>e.name===fo&&e.internal))||null)(i.getCachedServices().available);if(!s)throw new Error("HTTP service not found");const a={listener:{recipeId:t},targetService:{serviceName:fo,version:"1.0.0"}};i.subscribeToServiceEvents(a);const c=i.onBroadcastEvent(n,fo,"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=de(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})}}},go="__command-compile__",mo={};let yo;const vo=()=>{throw new Error("Method not implemented")},bo=e=>{const{features:t,widgetContext:n,widgetEnvInfo:i}=e,o=(e,...t)=>{const r={...qr(),...n.getState()}.$$eventListeners[e];r&&r.handler(t)},s={};Object.keys(me).forEach((e=>{s[e]=me[e]}));const a=ji({recipePoolId:i.recipePoolId,thingId:i.thingId,scriptWidgetId:i.widgetId}),c=Ki({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={...qr(),...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?ho.onGlobalVariableChange(t,i):ho.onAnyGlobalVariableChange(i),s=t?`globalVar_${t}`:"anyGlobalVar";t&&r.$$eventListeners[s]&&delete r.$$eventListeners[s],r.$$eventListeners[s]={handler:n,abort:async()=>{o()},name:pi},e.setState(r)};return{get:e=>{const t=ho.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);if(e.name.includes("."))throw new Error("Variable names cannot contain dots");if(e.group){const t=async(n,r)=>{if(ho.getGlobalVariable(n))return;const{group:i,name:o}=Qi(n);i&&await t(i,!1),await ho.setGlobalVariable({name:o,group:i,value:null,controlType:"group",controlSettings:{},helpText:r&&e.groupHelpText||void 0})};await t(e.group,!0)}await ho.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(),mo[i.widgetId]?.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}));return{logger:_o(),dataTypesEnum:s,recipePoolId:i.recipePoolId,widgetId:i.widgetId,http:e=>{const{promise:t,abort:n}=po({httpConfig:e,recipePoolId:i.recipePoolId,widgetId:i.widgetId});mo[i.widgetId]={abortHttp:n};return t.abort=async()=>{delete mo[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?gi({recipePoolId:i.recipePoolId,scriptWidgetId:i.widgetId,thingId:i.thingId,getState:n.getState,setState:n.setState}):{get:vo,set:async()=>vo(),onValueChange:vo,onUIValueChange:vo,getUIValue:vo,setUIValue:async()=>vo()},statusManager:c.statusManager,secretsManager:a.secretsManager,globalVariablesManager:l,setTimeout:(e,o,s)=>{if(t.withTimers&&n&&n.setState&&n.registerInterrupt){const t=r(),a={...qr(),...n.getState()};a.$$eventListeners[t]={handler:e,rejectHandler:s,name:hi},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={...qr(),...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={...qr(),...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.`)}}},wo=(e,t,n)=>{const r={...qr(),...n.getState()},i=r.pages[Vr].$$compiledCode;if(i)return{compiledModule:i};{const i=bo({features:e,widgetContext:n,widgetEnvInfo:t});return Gr(r.pages[Vr].code,i,n.recipeType)}},So=e=>e.map((e=>({...e,name:e.name.replace("_","")}))),_o=()=>{const e=(e,...t)=>{if(yo)try{return yo[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)}}},Io=async(e,t)=>{const n={...e};for(const r in e){if(e[r].name===hi){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},xo=async e=>{const t={...e};for(const r in e){if((n=e[r]).name===fi||n.name===pi){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},ko=async(e,t,n)=>{let r={...qr(),...e.getState()};if(void 0!==n){r.pages[Vr]?.$$compiledCode?.onTerminate&&await(r.pages[Vr].$$compiledCode?.onTerminate());let t=await Io(r.$$eventListeners,e);t=await xo(t),r.$$eventListeners=t,r.pages[Vr].$$compiledCode=void 0,r.pages[Vr].code=n,e.setState({...r})}const i=!r.pages[Vr].$$compiledCode,{compiledModule:o,error:s}=wo({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=Kr(s,e.recipeType);return Jr(t,e),null}if(o){let n;r={...e.getState()},r.pages[Vr].$$compiledCode=o;const s=Eo(r.pages[Vr].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=Kr(t,e.recipeType)}if(a&&i)try{await o.main()}catch(t){n=Kr(t,e.recipeType)}r.$$lastInputs=o.getWidgetInputs?o.getWidgetInputs():[],r.$$lastOutputs=o.getWidgetOutputs?o.getWidgetOutputs():[],e.setState(r),Jr(n,e)}},Eo=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 Co={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...qr(),...i};if(!o.pages[Vr])return console.warn("Missing default page");if(je(e?.name||""))return o.$$eventListeners[t.name]?(await o.$$eventListeners[t.name].handler(),o.$$eventListeners[t.name].name===hi&&delete o.$$eventListeners[t.name],void r.setState({...o})):void console.log(`Unknown interrupt id [${t.name}] `);const s=t.name===go;await ko(r,!1,s?n.data.value:void 0);const a=o.pages[Vr].$$compiledCode;if(e&&e.name!==go&&a)try{await a.asyncProcessEvent(t,e,{...n,executionContext:{currentPath:r.currentPath,eventId:r.eventId}})}catch(e){if("UserCodeError"===e.name){const t=Kr(e,r.recipeType);throw Jr(t,r),t}throw e}},getInputNames:(e,t)=>{const n={...qr(),...e},{compiledModule:r}=wo({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetInputs){const e=r.getWidgetInputs();return So(e)}return e.$$lastInputs||[]},getOutputNames:(e,t)=>{const n={...qr(),...e},{compiledModule:r}=wo({},{recipePoolId:t.recipePoolId,thingId:t.thingRecipeId,widgetId:t.widgetId},{getState:()=>n,recipeType:t.recipeType});if(r?.getWidgetOutputs){const e=r.getWidgetOutputs();return So(e)}return e.$$lastOutputs||[]},getDefaultState:qr,initialize:async e=>{const t=e.getState(),n={...qr(),...t};n.pages[Vr].code&&await ko({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[Vr].code)},terminate:async e=>{try{const t=e.getState();t.pages[Vr].$$compiledCode?.onTerminate&&await t.pages[Vr].$$compiledCode.onTerminate();const n=e=>nt.destroyInterrupt(e),r=await Io(t.$$eventListeners,{cancelInterrupt:n});await xo(r);const i=Ki({scriptWidgetId:e.widgetId});ji({recipePoolId:e.recipePoolId,thingId:e.thingRecipeId,scriptWidgetId:e.widgetId}).unregisteredSecrets(),i.clearStatusValues();for(const e of Object.values(mo))e.abortHttp?.().catch((e=>{console.warn("Error aborting old HTTP instance: ",e)}))}catch(t){console.warn(`Error terminating script widget ${e.widgetId}: `,t)}}};const $o=new Map,No=e=>($o.has(e)||$o.set(e,Ee(320,240)),$o.get(e)),Oo=Object.freeze({image:"image"}),To=Object.freeze({base64:"base64"}),Ao=()=>({});var Po={onParentEvent:async(e,t,n,r)=>{const i={...r.getState()};if(t.name===To.base64){if("string"!=typeof n.data.value)return;if(n.data.type!==me.String&&n.data.type!==me.Anything)return;const e=n.data.value,t=No(r.id);try{const n=await qe({base64Str:e,memoryCanvas:t,finalW:i.resize?.width,finalH:i.resize?.height});return r.setState(i),r.nextGate(Oo.image,{type:me.ImageData,value:n})}catch(e){console.log("[base64ToImageData] Error: ",e)}}},getInputNames:()=>[{name:To.base64,type:me.String}],getOutputNames:()=>[{name:Oo.image,type:me.ImageData}],getDefaultState:Ao,initialize:async e=>{No(e.widgetId)},terminate:async e=>{$o.delete(e.widgetId)}};const Mo=Object.freeze({object:"object",error:"error"}),Do=Object.freeze({string:"string"}),Ro=()=>({outputIsArray:!1});var jo={onParentEvent:async(e,t,n,r)=>{const i={outputIsArray:!1,...r.getState()};if((n.data.type===me.String||n.data.type===me.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?me.Array:me.JsonObj,value:e})}catch(e){return r.nextGate("error",{type:me.Boolean,value:!0})}},getInputNames:()=>[{name:Do.string,type:me.String}],getOutputNames:e=>[{name:Mo.object,type:[me.JsonObj,me.Array],label:e.outputIsArray?"array":Mo.object},{name:Mo.error,type:me.Boolean}],getDefaultState:Ro};const Lo=Object.freeze({string:"string",length:"length"}),Fo=Object.freeze({trigger:"trigger",setText:"setText"}),Uo=()=>({text:"",dispatchOnSet:!1});var Bo={onParentEvent:async(e,t,n,r)=>{const i={text:"",dispatchOnSet:!1,...r.getState()};if(t.name===Fo.setText){if(!((n.data.type===me.String||n.data.type===me.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(Lo.length,{type:me.Number,value:i.text.length}),s=r.nextGate(Lo.string,{type:me.String,value:i.text});await Promise.all([o,s])},getInputNames:e=>{const t=[{name:Fo.setText,type:me.String}];return e.dispatchOnSet||t.push({name:Fo.trigger,type:me.Anything}),t},getOutputNames:()=>[{name:Lo.string,type:me.String},{name:Lo.length,type:me.Number}],getDefaultState:Uo};const Wo=Object.freeze({image:"image"}),Go=Object.freeze({image:"image",x:"x",y:"y",width:"width",height:"height"}),Vo=()=>({showInputPorts:!1});var Ho={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===Go.x&&(i.cropX=n.data.value),t.name===Go.y&&(i.cropY=n.data.value),t.name===Go.width&&(i.cropWidth=n.data.value),t.name===Go.height&&(i.cropHeight=n.data.value),void r.setState(i);if(t.name===Go.image){if(n.data.type!==me.ImageData&&n.data.type!==me.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ee(320,240),i.$$memCanvasContext=Ce(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(Wo.image,{type:me.ImageData,value:t})}},getInputNames:e=>{const t=[{name:Go.image,type:[me.ImageData]}];return e.showInputPorts&&(t.push({name:Go.x,type:me.Number}),t.push({name:Go.y,type:me.Number}),t.push({name:Go.width,type:me.Number}),t.push({name:Go.height,type:me.Number})),t},getOutputNames:()=>[{name:Wo.image,type:me.ImageData}],getDefaultState:Vo};const Yo=Object.freeze({image:"image"}),zo=Object.freeze({image:"image",width:"width",height:"height"}),qo=()=>({showInputPorts:!1});var Ko={onParentEvent:async(e,t,n,r)=>{const i={showInputPorts:!1,...r.getState()};if("number"==typeof n.data.value)return t.name===zo.width&&(i.width=n.data.value),t.name===zo.height&&(i.height=n.data.value),void r.setState(i);if(t.name===zo.image){if(n.data.type!==me.ImageData&&n.data.type!==me.Anything)return;if(!Le(n.data.value))return;const e=n.data.value;if(i.$$memCanvas&&i.$$memCanvas.getContext||(i.$$memCanvas=Ee(320,240),i.$$tempCanvas=Ee(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=Ce(t),c=Ce(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(Yo.image,{type:me.ImageData,value:t})}},getInputNames:e=>{const t=[{name:zo.image,type:me.ImageData}];return e.showInputPorts&&(t.push({name:zo.width,type:me.Number}),t.push({name:zo.height,type:me.Number})),t},getOutputNames:()=>[{name:Yo.image,type:me.ImageData}],getDefaultState:qo};const Jo=Object.freeze({value:"value"}),Zo=Object.freeze({trigger:"trigger",setValue:"setValue"}),Xo=()=>({value:0,dispatchOnSet:!1});var Qo={onParentEvent:async(e,t,n,r)=>{const i={value:0,dispatchOnSet:!1,...r.getState()};if(t.name===Zo.setValue){const e=n.data.type===me.Number||n.data.type===me.Anything||n.data.type===me.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(Jo.value,{type:me.Number,value:i.value})},getInputNames:e=>{const t=[{name:Zo.setValue,type:me.Number}];return e.dispatchOnSet||t.push({name:Zo.trigger,type:me.Anything}),t},getOutputNames:()=>[{name:Jo.value,type:me.Number}],getDefaultState:Xo};const es=Object.freeze({image:"image"}),ts=Object.freeze({image:"image"}),ns=()=>({anchors:[],vertices:[],matrix:[]}),rs={onParentEvent:async(e,t,n,r)=>{const i={anchors:[],vertices:[],matrix:[],...r.getState()},o=window,s=n.data.type===me.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=Ee(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(es.image,{type:me.ImageData,value:m})}var a,c,l;console.log("Environment not supported")},getInputNames:()=>[{name:ts.image,type:me.ImageData}],getOutputNames:()=>[{name:es.image,type:me.ImageData}],getDefaultState:ns,terminate:async e=>{const t=e.getState();t.$$private?.pipeline.release()}},is=()=>({outputPortCount:3}),os=Object.freeze({event:"event"}),ss=e=>String(e+1),as=e=>Math.max(2,Math.min(10,e??3));var cs={onParentEvent:async(e,t,n,r)=>{const i={outputPortCount:3,...r.getState()},o=as(i.outputPortCount);r.setState({...i,$$lastEventType:n.data.type});for(let e=0;e<o;e++)await r.invokeNextWidget({port:ss(e),data:n.data})},getInputNames:()=>[{name:os.event,type:me.Anything}],getOutputNames:e=>{const t={outputPortCount:3,...e},n=as(t.outputPortCount),r={type:t.$$lastEventType??me.Anything},i=[];for(let e=0;e<n;e++)i.push({name:ss(e),...r});return i},getDefaultState:is};const ls=()=>({name:"myVar",type:me.Anything,reactive:!0,defaultValue:""}),us=Object.freeze({set:"set",read:"read"}),ds="value";var hs={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...ls(),...i};if(t.name!==us.set){if(t.name===us.read){const e=li({variableName:o.name,readerWidgetId:r.id}),t=e?e.value:o.defaultValue;await r.nextWidget(ds,{type:o.type,value:t})}}else{if(n.data.type!==o.type&&o.type!==me.Anything)return;await ci({variableName:o.name,value:n.data.value,setByWidgetId:r.id,type:o.type})}},getInputNames:e=>{const t={...e};return[{name:us.set,type:t.type||me.Anything},{name:us.read,type:me.Anything}]},getOutputNames:e=>{const t={...e};return[{name:ds,type:t.type||me.Anything}]},initialize:async e=>{const t=e.getState(),n={...ls(),...t};if(n.$$abortListener)try{n.$$abortListener()}catch(t){console.warn(`Error aborting variable listener for widget ${e.widgetId}: `,t)}si({variableName:n.name,type:n.type,createdByWidgetId:e.widgetId});const r=ui({variableName:n.name,type:n.type,widgetId:e.widgetId,onValueChange:async t=>{const n=e.getState();void 0!==t.value&&(n.type!==me.Anything&&t.type!==n.type||n.reactive&&await e.nextWidget(ds,{type:t.type,value:t.value}))}});e.setState({...n,$$abortListener:r})},terminate:async e=>{const t=e.getState(),n={...ls(),...t};n.$$abortListener&&n.$$abortListener(),ai({variableName:n.name,createdByWidgetId:e.widgetId})}};const fs=async(e,t=!1)=>{const n=vi();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 ps={onParentEvent:async(e,t,n,r)=>{const i={dynamicInputs:{},dynamicOutputs:{},customState:{},...r.getState()};if(!e)return;const o=se(r.recipePoolId);if(!o)throw new Error(`Recipe [${r.recipePoolId}] not found`);const s=vi();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=se(e.recipePoolId),r=n?.name||"",i=vi(),o=await fs(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=vi(),r=await fs(t,!0);if(r)return n.terminateServiceInstance(r,e.widgetId,e.recipePoolId,t.variantId)}};const gs=Object.freeze({Image:"image"}),ms=Object.freeze({Image:"image"}),ys=()=>({filters:[{name:"grayscale",value:"0.5",id:"d-1"}]});var vs={onParentEvent:async(e,t,n,r)=>{const i={filters:[{name:"grayscale",value:"0.5",id:"d-1"}],...r.getState()};if(t.name===gs.Image&&(n.data.type===me.ImageData||n.data.type===me.Anything)){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=Ee(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(ms.Image,{type:me.ImageData,value:t})}},getInputNames:()=>[{name:gs.Image,type:me.ImageData}],getOutputNames:()=>[{name:ms.Image,type:me.ImageData}],getDefaultState:ys};const bs="loaded";var ws={onParentEvent:async(e,t,n,r)=>r.nextWidget(bs,{value:!0,type:me.Boolean}),getInputNames:()=>[],getOutputNames:()=>[{name:bs,type:me.Boolean,description:"Triggered when the recipe is fully loaded"}]};var Ss={onParentEvent:async()=>{},getInputNames:()=>[],getOutputNames:()=>[],getDefaultState:()=>({text:"",color:"#eac43e",size:{width:300,height:200}})};var _s,Is={onParentEvent:async(e,t,n,r)=>{try{const e=((e,t)=>{switch(t){case me.Number:case me.Boolean:case me.String:return String(e);case me.Array:case me.JsonObj:case me.Rect:case me.Point:return JSON.stringify(e,((e,t)=>"bigint"==typeof t?t.toString():t));case me.ArrayBuffer:if(e instanceof ArrayBuffer){if(ne)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 me.ImageData:if(!Le(e))throw new Error("Expected ImageData");return ze(e);default:return String(e)}})(n.data.value,n.data.type);return r.nextWidget("text",{type:me.String,value:e})}catch(e){return r.nextWidget("error",{type:me.String,value:e instanceof Error?e.message:"Failed to stringify object"})}},getInputNames:()=>[{name:"object",type:[me.Number,me.String,me.ArrayBuffer,me.Array,me.Boolean,me.JsonObj,me.Rect,me.Point,me.ImageData]}],getOutputNames:()=>[{name:"text",type:me.String},{name:"error",type:me.String}],getDefaultState:()=>({})};!function(e){e.ApplicationJson="application/json",e.ApplicationOctetStream="application/octet-stream",e.ApplicationPdf="application/pdf",e.ApplicationXml="application/xml",e.ApplicationZip="application/zip",e.AudioMpeg="audio/mpeg",e.AudioOgg="audio/ogg",e.AudioMp3="audio/mp3",e.ImagePng="image/png",e.ImageJpeg="image/jpeg",e.TextPlain="text/plain",e.TextCsv="text/csv",e.TextHtml="text/html",e.TextMarkdown="text/markdown",e.VideoMp4="video/mp4",e.VideoOgg="video/ogg"}(_s||(_s={}));const xs=e=>{const t=e.toLowerCase();return t===_s.ImagePng||t===_s.ImageJpeg},ks=()=>({mimeType:_s.ApplicationOctetStream,fileName:"output.bin"}),Es=Object.freeze({data:"data",fileName:"fileName"}),Cs=Object.freeze({file:"file"}),$s=e=>{const t=e.toLowerCase();return t.startsWith("text/")||t===_s.ApplicationJson||t.endsWith("+json")||t===_s.ApplicationXml||t.endsWith("+xml")},Ns=e=>{const t=e.toLowerCase();return t.startsWith("audio/")||t.startsWith("video/")},Os=e=>(e||"").trim()||_s.ApplicationOctetStream,Ts=e=>{const t=(new TextEncoder).encode(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n},As=e=>{const t=(e||"").trim();if(!t)throw new Error("File name is required");return t};var Ps={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...ks(),...i};if(t.name===Es.fileName){if(!(n.data.type===me.String||n.data.type===me.Anything&&"string"==typeof n.data.value))throw new Error("Invalid data type, expected a String type");const e=As(n.data.value);return void r.setState({...o,fileName:e})}if(t.name!==Es.data)return;const s=Os(o.mimeType),a=As(o.fileName),c=((e,t)=>t===me.ImageData||Le(e)?me.ImageData:t===me.ArrayBuffer||e instanceof ArrayBuffer||e instanceof Uint8Array||e instanceof Uint8ClampedArray?me.ArrayBuffer:t===me.String||"string"==typeof e?me.String:t===me.BinaryFile||Be(e)?me.BinaryFile:me.Anything)(n.data.value,n.data.type);let l;switch(c){case me.ImageData:if(!s.toLowerCase().startsWith("image/"))throw new Error(`Input type ImageData is not compatible with target mime type "${s}". Expected an image/* mime type.`);if(!xs(s))throw new Error(`Unsupported image conversion target mime type "${s}". Only "${_s.ImagePng}" and "${_s.ImageJpeg}" are supported for ImageData inputs.`);l=((e,t)=>{const n=Os(t);if(!xs(n))throw new Error(`Unsupported image conversion target mime type "${t}". Only "${_s.ImagePng}" and "${_s.ImageJpeg}" are supported for ImageData inputs.`);const r=Ee(e.width,e.height),i=Ce(r);if(!i)throw new Error("Failed to get canvas context");i.putImageData(e,0,0);const o=n.toLowerCase(),s=r.toDataURL(o);if(!s)throw new Error("Failed to convert canvas to data URL");const[,a]=s.split(",");if(!a)throw new Error("Unexpected data URL format while encoding image");return Re(a)})(n.data.value,s);break;case me.ArrayBuffer:l=(e=>{if(e instanceof ArrayBuffer)return e;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray){const t=new Uint8Array(e),n=new ArrayBuffer(t.byteLength);return new Uint8Array(n).set(t),n}throw new Error("Expected binary data (ArrayBuffer or Uint8Array) for non-text mime type")})(n.data.value);break;case me.String:if(Ns(s))throw new Error(`Input type String is not compatible with target mime type "${s}". Audio/video mime types require ArrayBuffer input.`);if(!$s(s)&&s!==_s.ApplicationOctetStream)throw new Error(`Input type String is not compatible with target mime type "${s}". Expected a text/* or application/json mime type.`);l=Ts(n.data.value);break;case me.BinaryFile:{const e=n.data.value,t=(e.format||"").toLowerCase(),r=s.toLowerCase();if(t!==r&&r!==_s.ApplicationOctetStream)throw new Error(`Input BinaryFile format "${t}" is not compatible with target mime type "${s}".`);if(!(e.data instanceof ArrayBuffer))throw new Error("BinaryFile.data must be an ArrayBuffer");l=e.data;break}default:if(Ns(s))throw new Error(`Input type "${me[n.data.type]||n.data.type}" is not compatible with target mime type "${s}". Audio/video mime types require ArrayBuffer input.`);if(!$s(s))throw new Error(`Input type "${me[n.data.type]||n.data.type}" is not compatible with target mime type "${s}".`);{const e=JSON.stringify(n.data.value);l=Ts(e)}}const u=(e=>{const{data:t,mimeType:n,fileName:r}=e;return{format:n,fileName:r,data:t}})({data:l,mimeType:s,fileName:a});return r.invokeNextWidget({port:Cs.file,data:{type:me.BinaryFile,value:u}})},getInputNames:()=>[{name:Es.fileName,type:[me.String,me.Anything]},{name:Es.data,triggerPort:!0,type:[me.ImageData,me.ArrayBuffer,me.String,me.Anything]}],getOutputNames:()=>[{name:Cs.file,type:me.BinaryFile,label:"file"}],getDefaultState:ks};const Ms=(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},Ds=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)}`)}},Rs=e=>{const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"};return e.replace(/[&<>"'/]/g,(e=>t[e]))},js=()=>new Proxy({},{get(e,t){if("string"==typeof t){const e=ho.getGlobalVariable(t);return e?.lastValue??void 0}}}),Ls=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},Fs=(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()}),Us={$capitalize:e=>"string"!=typeof e||0===e.length?e:e.replace(/\S+/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase())),$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 ee&&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}}},Bs=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},Ws=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}},Gs=(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},Vs=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}},Hs=(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},Ys=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}},zs=(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=ho.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},qs=async e=>{const{template:t,context:n={},options:r={}}=e,{helpers:i={},enableFnTag:o=!1,securityOptions:s={},recipeUuid:a,serviceName:l,enableSecretsBracketNotation:u=!1}=r,d={...Us,...i},h=js(),f=Fs(),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=Bs(e);for(const e of n)Ls(e.expression).forEach((e=>t.add(e)));return t})(t),n=Array.from(e);if(n.length>0)try{y=await Pi({recipeUuid:a,secretNames:n,serviceName:l})}catch(e){console.error("Failed to fetch secrets for template:",e),y={}}m=y}const v={...p,$vars:h,date:f,chunkArray:Ms};void 0!==m&&(v.$secrets=m);const b={...d};b.$fn=e=>Ds({code:e,enableFnTag:o,context:v,securityOptions:s});const w=new c({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=Bs(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=Ys(e.expression);if(n.hasVarsBracketAccess&&n.bracketPath&&n.objectName)t=zs(n.bracketPath,n.objectName,w,{...v,...b},u);else{const n=Vs(e.expression);if(n.hasObjectBracketAccess&&n.objectName&&n.bracketPath)t=Hs(n.objectName,n.bracketPath,w,{...v,...b});else{const n=Ws(e.expression);t=n.hasFunctionPropertyAccess&&n.functionCall&&n.propertyPath?Gs(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=Rs(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),_},Ks=()=>({text:"",format:"Text"});var Js={onParentEvent:async(e,t,n,r)=>{const i={text:"",format:"Text",...r.getState()},{uuid:o}=Mi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await qs({template:i.text,context:{input:n.data.value},options:{enableFnTag:!0,recipeUuid:o}});return r.nextWidget("text",{type:me.String,value:s})},getInputNames:()=>[{name:"input",type:me.Anything}],getOutputNames:()=>[{name:"text",type:me.String}],getDefaultState:Ks};const Zs=()=>({expression:""}),Xs=async e=>{const{expression:t,recipeUuid:n,serviceName:r,enableFnTag:i=!0,customContext:o={}}=e,s=Symbol("abort");try{const e={restrictionLevel:"strict"},a=js(),c=Fs();let l;if(n&&t.includes("$secrets")){const e=Array.from(Ls(t));if(e.length>0)try{l=await Pi({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:Ms,...Us};void 0!==l&&(u.$secrets=l);const d=Ds({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 Qs={onParentEvent:async(e,t,n,r)=>{const i={expression:"",...r.getState()},{uuid:o}=Mi(r.recipePoolId);if(!o)throw new Error(`Recipe [${o}] does not have a valid id]`);const s=await Xs({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:me.Anything}],getOutputNames:e=>[{name:"result",type:e.$$lastResultType||me.Anything}],getDefaultState:Zs};const ea={};let ta={};const na=new a;let ra=!1,ia=!1,oa=!1,sa=null,aa=null;const ca="processing-state-change",la="breakpoint-change",ua="error-event",da={abortRequested:!1,isPaused:!1,pausePromise:null,pausePromiseResolve:null,lastPausedWidgetId:null},ha=e=>(aa=e,na.emit(ca,e)),fa=(e,t)=>`${e}-${t}`,pa=(e,t)=>`state-change:${fa(e,t)}`,ga=e=>{const{thingId:t,widgetId:n}=e,r=fa(t,n);return ea[r]||{isProcessing:!1}},ma=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 ya=null;const va={},ba=()=>{da.abortRequested=!1,da.isPaused=!1},wa=e=>(da.pausePromise||(da.isPaused=!0,da.pausePromise=new Promise((e=>{da.pausePromiseResolve=e})),e&&(da.lastPausedWidgetId=e),ha({isProcessing:!0,isPaused:!0,...e?{pauseTrapWidgetId:e}:{}})),da.pausePromise),Sa=()=>{da.pausePromiseResolve&&da.isPaused&&(da.pausePromiseResolve(),da.pausePromise=null,da.pausePromiseResolve=null,da.lastPausedWidgetId=null,da.isPaused=!1,ha({isProcessing:!0,isPaused:!1}))},_a=()=>{na.emit(la,{breakpoints:{...ta}})};var Ia={getExecutionState:ga,startProcessing:async e=>{const{thingId:t,widgetId:n}=e,r=fa(t,n),i=pa(t,n),o=ga({thingId:t,widgetId:n});if(o.isProcessing)return;const s={isProcessing:!0,isPaused:!1,startTime:Date.now()};ea[r]=s,ra||(ra=!0,sa=null,await ha({isProcessing:!0,isPaused:!1})),await na.emit(i,{thingId:t,widgetId:n,prevState:o,newState:s})},endProcessing:async e=>{const{thingId:t,widgetId:n,error:r}=e,i=fa(t,n),o=pa(t,n),s=ga({thingId:t,widgetId:n}),a={isProcessing:!1,isPaused:!1,startTime:s.startTime,endTime:Date.now(),error:r};ea[i]=a,await na.emit(o,{thingId:t,widgetId:n,prevState:s,newState:a}),r&&(sa=r,(e=>{const{error:t,stateKey:n}=e,r=ma(t);va[r]={error:t,stateKey:n},ya&&clearTimeout(ya),ya=setTimeout((()=>{for(const e in va)na.emit(ua,va[e].error),delete va[e]}),250)})({error:r,stateKey:i})),ra&&0===Object.values(ea).filter((e=>e.isProcessing)).length&&(ra=!1,ia=!1,ba(),await ha({isProcessing:!1,isPaused:!1}))},onWidgetExecutionStateChange:e=>{const{thingId:t,widgetId:n,listener:r}=e,i=pa(t,n);return na.on(i,(async e=>{if(e.thingId===t&&e.widgetId===n)return r(e)}))},onGlobalProcessingStateChange:e=>na.on(ca,e),clearExecutionStates:()=>{ra=!1;for(const e in ea)delete ea[e];da.abortRequested=!1,da.isPaused=!1,da.pausePromise=null,da.pausePromiseResolve=null,da.lastPausedWidgetId=null,na.clearListeners()},shouldAbortProcessing:()=>da.abortRequested,abortProcessing:()=>{da.abortRequested=!0,ia=!0,Sa()},resetAbortProcessing:ba,pauseProcessing:()=>{wa()},resumeProcessing:Sa,isProcessingPaused:()=>null!==da.pausePromise,getLastPausedWidgetId:()=>da.lastPausedWidgetId,setLastPausedWidgetId:e=>{da.lastPausedWidgetId=e,da.isPaused=!0,ha({isProcessing:!0,isPaused:!0,pauseTrapWidgetId:e})},getPausePromise:()=>ia||oa?null:da.pausePromise,setBreakpoint:e=>{ta[e]=!0,_a()},getAllBreakpoints:()=>({...ta}),hasBreakpoint:e=>oa?null:ta[e]??null,onBreakpointChange:e=>na.on(la,(async t=>e(t))),removeBreakpoint:e=>{delete ta[e],_a()},toggleBreakpoint:(e,t)=>(ta[e]=t??!ta[e],_a(),ta[e]),clearBreakpoints:()=>{ia=!1,ta={},_a()},trapsDisabled:()=>ia,getPauseTrapForWidget:e=>wa(e),disableBreakpoints:()=>{oa=!0},enableBreakpoints:()=>{oa=!1},onErrorEvent:e=>na.on(ua,e),getLastError:()=>sa,getLastGlobalProcessingState:()=>aa,clearErrorNotification:e=>{const t=ma(e),n=va[t];if(r=sa,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;ea[e].error=null}sa=null}var r,i;delete va[t]}};var xa={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&&Ia.clearErrorNotification({targetWidgetId:t.targetWidgetId,targetPortName:t.targetPortName,sourcePortName:t.sourcePortName,error:t.message}),await r.nextWidget("error",{type:me.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:me.Anything}],getOutputNames:e=>[{name:"event",type:{...e}.$$lastEventType??me.Anything},{name:"error",type:me.JsonObj,jsonShape:{error:me.JsonObj,inputEvent:me.JsonObj}}]};const ka={},Ea=Object.freeze({output:"output"}),Ca=Object.freeze({read:"read",clear:"clear"}),$a=()=>({$$$time:0,totalInputs:1});var Na={onParentEvent:async(e,t,n,r)=>{const i={$$$time:0,totalInputs:1,...r.getState()};if(ka[r.id]||(ka[r.id]={}),t.name===Ca.clear)return ka[r.id]={},void r.setState(i);const o=t.name===Ca.read;if(!(o||n.data.type!==me.JsonObj&&n.data.type!==me.Anything&&n.data.type!==me.Rect||"object"!=typeof n.data.value||null===n.data.value||Array.isArray(n.data.value))){const e=ka[r.id]||{};ka[r.id]={...e,...n.data.value}}if(o){const e={...ka[r.id]};return ka[r.id]={},r.setState({...i}),r.nextWidget(Ea.output,{type:me.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:me.Anything})));return n.push({name:Ca.clear,type:me.Anything},{name:Ca.read,type:me.Anything,triggerPort:!0}),n},getOutputNames:()=>[{name:Ea.output,type:me.JsonObj}],getDefaultState:$a,initialize:async e=>{ka[e.widgetId]={}},terminate:async e=>{delete ka[e.widgetId]}};const Oa={},Ta=Object.freeze({output:"output",index:"index",finish:"finish"}),Aa=Object.freeze({array:"array",next:"next",clear:"clear"}),Pa=()=>({autoLoop:!1,autoClear:!1,$$outputType:me.Anything,totalItems:0,currentIndex:0});var Ma={onParentEvent:async(e,t,n,r)=>{const i=r.getState(),o={...Pa(),...i};if(t.name===Aa.clear)return delete Oa[r.id],void r.setState({...Pa(),autoLoop:o.autoLoop,autoClear:o.autoClear});if(t.name!==Aa.array)t.name===Aa.next&&await(async e=>{const t=e.id,n=Oa[t],r={...Pa(),...e.getState()};if(n&&n.index<n.list.length){const i=n.index,o=n.list[i];await e.nextWidget(Ta.index,{type:me.Number,value:i}),await e.nextWidget(Ta.output,{type:r.$$outputType,value:o}),n.index++,e.setState({...r,currentIndex:n.index}),n.index===n.list.length&&(await e.nextWidget(Ta.finish,{type:me.Boolean,value:!0}),r.autoClear?(delete Oa[t],e.setState({...Pa()})):(n.index=0,e.setState({...r,currentIndex:0})))}})(r);else if((n.data.type===me.Array||n.data.type===me.Anything)&&Array.isArray(n.data.value)){const e=n.data.value,t=e[0],i=void 0!==t?We(t):me.Anything,s={list:e,index:0};Oa[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(Ta.index,{type:me.Number,value:e}),await r.nextWidget(Ta.output,{type:a.$$outputType,value:t}),s.index++}await r.nextWidget(Ta.finish,{type:me.Boolean,value:!0}),a.autoClear?(delete Oa[r.id],r.setState({...a,$$outputType:me.Anything,totalItems:0,currentIndex:0})):(s.index=0,r.setState({...a,currentIndex:0}))}}},getInputNames:()=>[{name:Aa.array,type:me.Array},{name:Aa.next,type:me.Anything},{name:Aa.clear,type:me.Anything}],getOutputNames:e=>{const t={...Pa(),...e};return[{name:Ta.index,type:me.Number},{name:Ta.output,type:t.$$outputType},{name:Ta.finish,type:me.Anything}]},getDefaultState:Pa,initialize:async e=>{const t={...Pa(),...e.getState()};Oa[e.widgetId]={list:[],index:0},e.setState({...t,currentIndex:0,totalItems:0})},terminate:async e=>{delete Oa[e.widgetId]}};var Da={onParentEvent:async(e,t,n,r)=>{const i={name:"",...r.getState()};i.name&&e&&Hi({name:i.name,sourceWidget:e?.sourceWidgetId,widgetId:r.id,widgetType:Je.status,value:{type:n.data.type,value:n.data.value}})},getOutputNames:()=>[],getInputNames:()=>[{name:"status",type:me.Anything}],terminate:async e=>{qi(e.widgetId)},initialize:async e=>{const t={name:"",...e.getState()};Hi({name:t.name||"",sourceWidget:"",widgetType:Je.status,widgetId:e.widgetId,value:null})}};const Ra={onParentEvent:async(e,t,n,r)=>{if(!r.eventContext)return;const i=r.eventContext;if(i?.eventKey)return lt(i.eventKey,n.data.value);console.error("No event key found in context event")},getOutputNames:()=>[],getInputNames:()=>[{name:"event",type:me.Anything}]},ja="read",La="setValue",Fa=new Map,Ua=new Map,Ba=(e,t)=>{const n=`${e}_${t}`,r=Fa.get(n);r&&(r(),Fa.delete(n))},Wa=(e,t,n)=>{const r=`${e}_${t}`;n?Fa.set(r,n):Fa.delete(r)};var Ga={onParentEvent:async(e,t,n,r)=>{const i={name:"",reactive:!1,lastConfiguration:null,...r.getState()};if(!i.name)return;const o=ho.getGlobalVariable(i.name);if(o)if(t.name===ja)o&&null!==o.lastValue&&null!==o.lastDataType&&await r.invokeNextWidget({port:"value",data:{type:o.lastDataType,value:o.lastValue}});else if(t.name===La){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!==me.BinaryFile||"image"===o.controlType&&n.data.type!==me.ImageData||("text"===o.controlType||"multilineText"===o.controlType)&&n.data.type!==me.String||"checkbox"===o.controlType&&n.data.type!==me.Boolean&&n.data.type!==me.Number||"button"===o.controlType&&n.data.type!==me.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})),Ua.set(r.id,{eventId:r.eventId,varName:i.name,type:n.data.type});const{group:t,name:s}=Qi(i.name);await ho.setGlobalVariable({name:s,group:t,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=me.Anything;if(t.name){const e=ho.getGlobalVariable(t.name);e?.lastDataType&&(n=e.lastDataType)}return[{name:"value",type:n}]},getInputNames:()=>[{name:ja,type:me.Anything},{name:La,type:me.Anything}],terminate:async e=>{Ba(e.widgetId,"variable"),Ba(e.widgetId,"group"),Ba(e.widgetId,"parentGroup"),Ua.delete(e.widgetId)},initialize:async e=>{const t={name:"",reactive:!1,lastConfiguration:null,...e.getState()};Ba(e.widgetId,"variable"),Ba(e.widgetId,"group"),Ba(e.widgetId,"parentGroup"),Ua.set(e.widgetId,null);let n=t.name;t.name&&!t.name.includes(".")&&t.lastConfiguration?.group&&(n=Xi(t.lastConfiguration.group,t.name),e.setState({...t,name:n}));const r=ho.getGlobalVariable(n);if(!r&&t.lastConfiguration?.controlType){const{group:r,name:i}=Qi(n);if(r){if(!ho.getGlobalVariable(r)){const{name:e,group:n}=Qi(r);await ho.setGlobalVariable({name:e,group:n,helpText:t.lastConfiguration.groupHelpText??void 0,controlType:"group",value:null,disableChangeNotifications:!0,disableDefineNotifications:!1})}}await ho.setGlobalVariable({name:i,helpText:t.lastConfiguration.helpText,controlType:t.lastConfiguration.controlType,controlSettings:t.lastConfiguration.controlSettings,order:t.lastConfiguration.order,value:null,group:r,disableChangeNotifications:!0,disableDefineNotifications:!1});const o=Xi(r,i);e.setState({...t,name:o})}else r&&e.setState({...t,name:n,lastConfiguration:{...t.lastConfiguration,controlType:r.controlType,controlSettings:r.controlSettings,helpText:r.helpText,group:r.group}});if(n){const t=ho.onGlobalVariableParentGroupChange(n,(async t=>{const n=e.getState();let r;if(t.group){const e=ho.getGlobalVariable(t.group);e&&(r=e.helpText??void 0)}const i=t.name;e.setState({...n,name:i,lastConfiguration:{controlType:t.controlType,controlSettings:t.controlSettings,helpText:t.helpText,group:t.group,groupHelpText:r,order:t.order}})}));Wa(e.widgetId,"group",t)}if(n){const t=ho.onVarParentGroupStateChange(n,(async t=>{const r=e.getState(),{name:i}=Qi(n),o=Xi(t.parentGroup.name,i);e.setState({...r,name:o,lastConfiguration:{...r.lastConfiguration??{},group:t.parentGroup.name,groupHelpText:t.parentGroup.helpText??void 0}})}));Wa(e.widgetId,"parentGroup",t)}if(t.reactive&&n){const t=ho.onGlobalVariableChange(n,(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=Ua.get(e.widgetId);if(n?.varName===t.name&&n.type===t.lastDataType&&n.eventId===t.lastExecutionContext?.eventId)return void Ua.set(e.widgetId,null);await e.invokeNextWidget({port:"value",...t.lastExecutionContext?{executionContext:{...t.lastExecutionContext}}:void 0,data:{type:t.lastDataType,value:t.lastValue}})}}));Wa(e.widgetId,"variable",t)}}};const Va=Object.freeze({input:"input"}),Ha="out",Ya="else",za=()=>({conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0}),qa=e=>null!=e&&("number"==typeof e?0!==e&&!Number.isNaN(e):"string"==typeof e?e.length>0:Boolean(e));var Ka={onParentEvent:async(e,t,n,r)=>{const i={conditions:[{expression:"",output:"input"},{expression:"",output:"input"}],multipleOutputs:!0,...r.getState()};if(t.name!==Va.input)return;let o;try{o=Mi(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 Xs({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(qa(a.value)){let a=n.data.value;if(t.output&&"input"!==t.output){const e=await Xs({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):Ha;return i.multipleOutputs||i.$lastOutputType===c||r.setState({...i,$lastOutputType:c}),r.invokeNextWidget({port:l,data:{type:c,value:a}})}}}return r.invokeNextWidget({port:Ya,data:{type:n.data.type,value:n.data.value}})},getInputNames:()=>[{name:Va.input,type:me.Anything}],getOutputNames:e=>{if(!e.multipleOutputs)return[{name:Ha,type:e.$lastOutputType||me.Anything},{name:Ya,type:e.$lastElseOutputType||me.Anything}];const t=Math.max(1,e.conditions?.length||0),n=[];for(let r=0;r<t;r++){const t=e.conditions?.[r]?.$lastOutputType||me.Anything;n.push({name:String(r+1),type:t})}return n.push({name:Ya,type:e.$lastElseOutputType||me.Anything}),n},getDefaultState:za};const Ja=new Map;var Za={registerFunctionHandler:(e,t)=>{Ja.set(e,t)},invokeFunction:async e=>{const{eventId:t,functionName:n,functionParams:r}=e,i=Ja.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=>{Ja.delete(e)},clearAllHandlers:()=>{Ja.clear()}};const Xa=()=>({functionName:""}),Qa="result";var ec={onParentEvent:async(e,t,n,r)=>{const i={functionName:"",...r.getState()};if(!i.functionName||!e)return;const o=r.eventId,s=await Za.invokeFunction({eventId:o,functionName:i.functionName,functionParams:n.data.value});if(null!=s){const e=We(s);await r.invokeNextWidget({port:Qa,data:{type:e,value:s}})}},getOutputNames:()=>[{name:Qa,type:me.Anything}],getInputNames:()=>[{name:"params",type:me.Anything}],getDefaultState:Xa};const tc=new Map,nc="read",rc="setValue",ic="value",oc=(e,t,n)=>{const r=ce({recipeId:e,widgetId:n});if(!r)return null;const i=r.groupId;if(!i)return null;const o=ce({recipeId:e,widgetId:i});return o&&o.type===Je.widgetGroup?{widget:o,thingRecipeId:t}:null};var sc={onParentEvent:async(e,t,n,r)=>{const i={fieldName:"",reactive:!1,...r.getState()};if(!i.fieldName)return;const o=oc(r.recipePoolId,r.thingRecipeId,r.id);if(!o)return;const s=o.widget,a=s.state,c=a.settings||[],l=c.find((e=>e.variableName===i.fieldName));if(l)if(t.name===nc){const e=l.config,t=e.customValue??e.defaultValue;if(void 0!==t){const e=We(t);await r.invokeNextWidget({port:ic,data:{type:e,value:t}})}}else if(t.name===rc){const e=c.map((e=>{if(e.variableName===i.fieldName){const t={...e.config,customValue:n.data.value};return{...e,config:t}}return e}));s.state={...a,settings:e};const t=oi(i.fieldName);await ci({variableName:t,setByWidgetId:s.id,value:n.data.value,type:n.data.type})}},getOutputNames:()=>{const e=me.Anything;return[{name:ic,type:e}]},getInputNames:()=>[{name:nc,type:me.Anything},{name:rc,type:me.Anything}],initialize:async e=>{const t={fieldName:"",reactive:!1,...e.getState()},n=tc.get(e.widgetId);if(n&&(n(),tc.delete(e.widgetId)),t.reactive&&t.fieldName){const n=oc(e.recipePoolId,e.thingRecipeId,e.widgetId);if(!n)return;const r=n.widget,i=oi(t.fieldName),o=ui({variableName:i,type:me.Anything,widgetId:e.widgetId,onValueChange:async t=>{if(t.setByWidgetType===Je.widgetGroup&&t.setByWidgetId===r.id){if(!{fieldName:"",reactive:!1,...e.getState()}.reactive)return;if(void 0===t.value)return;await e.invokeNextWidget({port:ic,data:{type:t.type,value:t.value}})}}});tc.set(e.widgetId,o)}},terminate:async e=>{const t=tc.get(e.widgetId);t&&(t(),tc.delete(e.widgetId))}};const ac=new Map,cc=()=>({scopeName:"default"}),lc=Object.freeze({read:"read",write:"write",clear:"clear"}),uc=Object.freeze({data:"data",empty:"empty"});var dc={onParentEvent:async(e,t,n,r)=>{const i={scopeName:"default",...r.getState()};(()=>{const e=Date.now(),t=[];for(const[n,r]of ac.entries())e-r.updatedAt>18e6&&t.push(n);for(const e of t)ac.delete(e)})();const o=i.scopeName||"default",s=((e,t,n)=>`${e}_${t}_${n.trim()||"default"}`)(r.recipePoolId,r.eventId,o);if(t.name!==lc.write){if(t.name===lc.read){const e=ac.get(s);return e?r.invokeNextWidget({port:uc.data,data:e.data}):r.invokeNextWidget({port:uc.empty,data:n.data})}t.name!==lc.clear||ac.delete(s)}else ac.set(s,{data:n.data,updatedAt:Date.now()})},getInputNames:()=>[{name:lc.read,type:me.Anything},{name:lc.write,type:me.Anything},{name:lc.clear,type:me.Anything}],getOutputNames:()=>[{name:uc.data,type:me.Anything},{name:uc.empty,type:me.Anything}],getDefaultState:cc};const hc={input:ht,counter:gt,elapsed:vt,ifGate:_t,skipEvent:Et,between:Ot,map:Pt,parser:jt,slider:Ut,suspend:Vt,display:Yt,json:Kt,arrayItem:Xt,extractImage:rn,imageConvolution:ln,firstEvent:fn,pixelDraw:Sn,randomBetween:kn,arrayCombine:On,clock:Mn,delay:Bn,multiplication:Hn,object:Zn,widgetGroup:tr,script:Co,base64ToImageData:Po,jsonParse:jo,text:Bo,imageCrop:Ho,imageResize:Ko,value:Qo,imageWarp:rs,sequence:cs,variable:hs,hubService:ps,imageFilter:vs,recipeLoad:ws,note:Ss,stringify:Is,templateString:Js,expressionEval:Qs,rescue:xa,objectCombine:Na,loop:Ma,status:Da,secret:Di,output:Ra,globalVariable:Ga,switch:Ka,edgeFunction:ec,fieldValue:sc,dataToBinaryFile:Ps,eventCache:dc,play:{getInputNames:()=>[],onParentEvent:()=>Promise.resolve(),getOutputNames:()=>[{name:"out",type:me.Boolean}]}},fc={},pc=async()=>{if(!Object.keys(fc).length)for(const e in hc){const t=hc[e];fc[e]=Object.freeze({...t})}};var gc,mc,yc=e=>{if(fc[e])return fc[e];throw new Error(ot(it,e))},vc=pc;!function(e){e.ServiceCreationLog="service-creation-log"}(gc||(gc={})),function(e){e.Service="service",e.ServiceUI="serviceUI"}(mc||(mc={}));let bc={},wc=0,Sc=null;const _c=(e,t)=>{if(e.type===Je.hubService){if(t.type!==Je.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===Je.output&&t.type===Je.input},Ic=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=bc[s];if(a){const c=n[a.widgetId];if(c){const n=a.path,l=r.join("/").startsWith(n);_c(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},xc=e=>{const{context:t,widgetId:n,currentPath:r,executionId:i="default"}=e;if(wc++,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("/");bc[o]={path:o,eventContext:t,widgetId:n,invocationOrder:wc,timestamp:Date.now(),executionId:i}},kc=e=>{const t=Ic(e);return t.length>0?t[t.length-1]:null},Ec=()=>{bc={},wc=0},Cc=e=>{Sc=e},$c=()=>{bc={},wc=0};let Nc,Oc,Tc,Ac=!1,Pc=0,Mc=0;const Dc=async e=>{const{widgetId:t,thingId:n,recipeId:r,targetPortName:i,data:o}=e,s=ae(r,n);if(!s)return;const a=s.gates[t];if(!a||a.disabled)return;const c={...o,timestamp:Date.now()},l=yc(a.type);Mc+=1;const u=Uc({gateId:t,originalEvent:c,blockRecipeId:s.recipeId,blockDbId:s.id,blockVersion:s.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:Mc});if(u&&l.onParentEvent){const e={name:i};return Nc&&await Nc({recipeId:r,blockId:s.recipeId,gateId:t,targetPort:e.name,data:o}),l.onParentEvent(null,e,{originalEvent:c,data:{...c}},u)}},Rc=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:me.Boolean,value:!0});const p=h;if("string"==typeof f){const e=ae(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=yc(g.type),v=[...e.currentPath];if(l){0===v.length?v.push(`${l}:${d?.toString()}`):v.push(l)}if(t){const e=ce({recipeId:i,widgetId:l});e?.type!==Je.hubService&&e?.type!==Je.input||xc({context:t,widgetId:l,currentPath:v,executionId:d?.toString()})}const b=Uc({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){Nc&&await Nc({recipeId:i,blockId:f.recipeId,gateId:r,targetPort:s.name,data:a,sourceGate:n?"interrupt_widget":l,sourcePort:n?he:o});const e={name:c[m].name,type:c[m].type,...c[m].jsonShape?{jsonShape:c[m].jsonShape}:void 0,sourceWidgetId:l};return u||Ci({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)}},jc=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=se(c);if(!h)throw new Error(`Failed to find recipe "${c}" in cache`);const f=h.dbInfo.recipeType,p=le(c,o,i);if(!p)return;const g={...r,timestamp:n.timestamp},m=yc(p.type);let y;y=p.type===Je.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=ae(c,o);if(!e)return;null===d&&(Mc+=1,d=Mc),Ei({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=He(p.children[u]?.sourcePort),m=He(p.children[u]?.targetPort);if(h.portName===t&&s&&!s.disabled){if(Ac&&Ia.getPausePromise()&&(Ia.setLastPausedWidgetId(s.id),await Ia.getPausePromise()),Ia.hasBreakpoint(s.id)&&!Ia.trapsDisabled()&&"innerInput"!==m?.portType){const e=Ia.getPauseTrapForWidget(s.id);await e}if(Ac&&Ia.shouldAbortProcessing())break;const u=yc(s.type);let h;const v={recipePoolId:c,recipeType:f,thingRecipeId:o,widgetId:i};h=s.type===Je.hubService?await u.getInputNames(s.state,v):u.getInputNames(s.state,v);const b=h.find((e=>e.name===m.portName));if(b){Ac&&await Ia.startProcessing({thingId:o,widgetId:s.id}),Pc++;if(!await Rc({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===Je.hubService&&"CHILD_WIDGET_ERROR"===e.errCode;if(e instanceof Ur)throw e;if(n&&e.errData){const t=e.errData;throw new Ur(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 Ur(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(Pc--,Ac)return Ia.endProcessing({thingId:o,widgetId:s.id,error:r})})))break}}}}catch(e){if(e instanceof Ur)throw e;console.error(`Error processing next widget [${i}]: ${e}`)}finally{Pc<0&&(console.warn("Active execution counter is negative, this should never happen"),Pc=0),0===Pc&&Ec()}}},Lc=async(e,t,n,r)=>{const i=se(r);if(!i)return null;const o=ae(r,n);if(!o)return o;const s=o.gates,a=o.gates[t],c=yc(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=He(r.targetPort);if(r.childId===e&&o.portName===t)return i}}return null})(t,l[u].name,s);if(e){const t=yc(e.type);return{getValue:()=>"function"==typeof t.getValue?t.getValue():null}}}return null},Fc=e=>{const{gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}=e;if(!se(s))throw new Error(`Failed to find recipe "${s}" in cache`);if(!le(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=>jc({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})},Uc=e=>{const{gateId:t,originalEvent:n,blockRecipeId:r,blockDbId:i,blockVersion:o,recipeId:s,currentPath:a,eventId:c}=e,l=se(s);if(!l)throw new Error(`Failed to find recipe "${s}" in cache`);const u=le(s,r,t);if(!u)return console.warn(`Gate ${t} not found in block ${r} for recipe ${s}`),null;const d=Fc({gateId:t,originalEvent:n,thingRecipeId:r,thingDbId:i,thingVersion:o,recipeId:s,currentPath:a,eventId:c}),h=kc({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 nt.createInterrupt({type:n,recipePoolId:s,thingId:r,targetWidgetId:t,sourceWidgetId:a,portName:i,config:o,data:c,customId:l})},cancelInterrupt:e=>nt.destroyInterrupt(e),invokeNextWidget:d,nextWidget:f,nextGate:f,getParentAtPort:e=>Lc(e,t,r,s),getState:()=>Object.freeze({...u.state,...u.type===Je.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===Je.input&&!e.customInputs&&{customInputs:[]}},i={...u.state};u.state=n,Oc&&Oc({blockId:r,gateId:t,prevState:i,newState:{...n},recipeId:s})}};return p};nt.setInvokeChildGateCb(Rc),nt.setConsumeEventCounterCb((()=>++Mc));const Bc=(e,t,n,r,i)=>{const o=le(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 nt.createInterrupt({type:i,recipePoolId:e,thingId:n,targetWidgetId:r,sourceWidgetId:r,portName:o,config:s,data:a})},a=()=>Object.freeze({...o.state,...o.type===Je.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===Je.input&&!e.customInputs&&{customInputs:[]}};o.state=t},l=async t=>{const r=((e,t,n)=>{const r=se(e);if(!r)throw new Error(`Recipe [${e} does not exist]`);if(!r.storage)return null;const i=ae(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=Fc({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}},Wc=new a,Gc="invoked",Vc="state",Hc=()=>{nt.destroyAllInterrupts()},Yc=async(e,t,n)=>{const r=se(e),i=le(e,t,n);if(i&&r){const o=yc(i.type);if(o&&"function"==typeof o.terminate){const i=((e,t,n,r)=>Bc(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)}}}},zc=async e=>{const{recipePoolId:t,thingRecipeId:n,widgetRecipeId:r,options:i}=e,o=se(t),s=le(t,n,r);if(s&&o){const e=yc(s.type);if(e&&"function"==typeof e.initialize){const a=((e,t,n,r)=>Bc(e,t,n,r,!0))(t,o.dbInfo.recipeType,n,r);if(a){const t=e.initialize;try{(e=>{if(e.type===Je.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=oi(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}}}}},qc=(e,t)=>{const n=se(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}`,Jc=e=>{Wc.emit(Kc(Vc),e),Wc.emit(Kc(Vc,e.blockId,e.gateId),e)};Nc=async e=>{await Wc.emit(Kc(Gc),e),await Wc.emit(Kc(Gc,e.blockId,e.gateId),e)},(e=>{Oc=e})(Jc);var Zc=async(e,t,n,i,o)=>{const s=((e,t)=>{let n=r(4);for(;re[n];)n=r(4);const i=Q(e);return i.logs="",i.addLog=e=>{i.logs+=`${ue()}:: ${e}\n`},i.dbInfo={...t},re[n]=i,n})(e,{id:t,authorId:i,version:n,recipeType:o});$i(),$c(),Cc(o),e.globalVariables&&ho.registerGlobalVariables(e.globalVariables);const a=se(s);return a&&(a.startedAt=Date.now(),a.retryAttempts=0,a.execCounter=0,a.status=X.STARTING,a.addLog("recipe registered")),s},Xc=async e=>{const t=se(e);if(!t)return null;t.addLog("terminating recipe"),Hc(),Ia.clearExecutionStates();for(const n in t.blocks){const r=t.blocks[n];for(const t in r.gates)await Yc(e,n,t)}(e=>{!!re[e]&&delete re[e]})(e)},Qc=async(e,t)=>{const n=se(e),r=[],i=[];if(n){zi(),di({recipePoolId:e,thingId:pe});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===wr.Desktop){const e=s.gates[t];if(e.type===Je.hubService){const r=e.state;if(r?.service?.webOnly){n?.addLog(`skipping initialization of web-only widget "${t}"`);continue}}e.type===Je.recipeLoad&&i.push(e)}await zc({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=pe,waitForOutputChild:o=!0}=t;return(async e=>{const{inputName:t,data:n,recipePoolId:r,thingId:i,waitForOutputChild:o=!0}=e,s=se(r),a=ae(r,i),c=Date.now();if(a&&s){Mc+=1;for(const e in a.gates){const s=a.gates[e];if(s.type===Je.input&&!s.disabled){const l=s.state.inputName||"";if(l===t){const t=yc(s.type),u={...n,timestamp:c},d=Uc({gateId:e,originalEvent:u,blockRecipeId:i,blockDbId:a.id,blockVersion:a.version,recipeId:r,sourceWidgetId:void 0,currentPath:[],eventId:Mc});if(d&&t.processEvent){const s={...d,getState:d.getState,waitForOutputChild:o};if(Nc&&await Nc({recipeId:r,blockId:i,gateId:e,targetPort:dt,data:n}),!Tc)return await t.processEvent(u,s);await Tc(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:pe,recipeId:e,targetPortName:bs,data:{type:me.Boolean,value:!0}})}}},el=e=>{yi(e)},tl=(e,t,n,r=!1)=>{const i=qc(t,e);if(i){const{widget:o,thing:s}=i,a={...o.state};o.state=n,r&&Jc({blockId:s.recipeId,gateId:t,recipeId:e,newState:{...n},prevState:a})}},nl=(e,t)=>{const n=qc(t,e);return n?n.widget.state:null},rl=async e=>{const{recipePoolId:t,currentGateId:n,sourcePortName:r,originalEvent:i,data:o,eventContext:s,currentPath:a,eventId:c}=e,l=qc(n,t);if(l)return jc({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})},il=()=>{Ac=!0},ol=Ni;const sl=async e=>{const t=async(e,n)=>{if(null==e)return null;switch(n){case"image":return await qe({base64Str:e});case"binaryFile":{const t=e;let n;const r=((e,{minLength:t=4,maxChars:n=1e4,allowDataURI:r=!0,allowBase64Prefix:i=!0,sliceAndTest:o=!0}={})=>{if("string"!=typeof e)return!1;let s=e.trim();if(!s)return!1;if(r){const e=s.match(/^data:([^;,]+)?;base64,(.*)$/i);if(e){const t=e[2]??"";if(/[\r\n]/.test(t))return!1;s=t}}if(i&&s.startsWith("base64:")&&(s=s.substring(7)),s=s.replace(/\s+/g,""),!s)return!1;if(s.length>n){if(!o)return!1;s=s.slice(0,n)}const a=/[+/]/.test(s),c=/[-_]/.test(s);if(a&&c)return!1;if(c?!/^[A-Za-z0-9_-]*={0,2}$/.test(s):!/^[A-Za-z0-9+/]*={0,2}$/.test(s))return!1;const l=s.match(/=+$/)?.[0].length??0;if(l>2)return!1;if(/=/.test(s.slice(0,s.length-l)))return!1;if(s.length<Math.max(4,t))return!1;let u,d=c?s.replace(/-/g,"+").replace(/_/g,"/"):s;s.length%4&&(d=d.padEnd(d.length+(4-d.length%4),"="));try{if("undefined"!=typeof Buffer&&"function"==typeof Buffer.from)u=new Uint8Array(Buffer.from(d,"base64"));else{if("function"!=typeof atob)return!1;{const e=atob(d);u=new Uint8Array(e.length);for(let t=0;t<e.length;t++)u[t]=e.charCodeAt(t)}}}catch{return!1}if(0===u.length)return!1;let h=(e=>{if("undefined"!=typeof Buffer)return Buffer.from(e).toString("base64");let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)})(u);c&&(h=h.replace(/\+/g,"-").replace(/\//g,"_"));const f=e=>e.replace(/=+$/g,""),p=f(h)===f(s);if(!p)return!1;const g=String.fromCharCode(...u),m=/^[\x09\x0A\x0D\x20-\x7E]*$/.test(g);return!(s.length<=20&&!m||s.length<=20&&/^[A-Za-z0-9_-]+$/.test(s)&&m&&!p||s.length<=50&&/^[A-Za-z0-9][A-Za-z0-9._-]*\/[A-Za-z0-9._+-]+$/.test(s)&&m||s.length>20&&/^[A-Za-z0-9_-]+$/.test(s)&&!/=/.test(s)&&m&&!p||s.length>20&&/^[A-Za-z0-9_-]+$/.test(s)&&!/=/.test(s)&&!m)})(t.data);if(r)n=await Re(t.data);else{if("string"!=typeof t.data)return console.error("The BinaryFile variable value data is not a string. Unable to deserialize the variable."),null;try{n=(new TextEncoder).encode(t.data).buffer}catch(e){return console.error("Failed to convert the BinaryFile variable value data to an ArrayBuffer. Unable to deserialize the variable.",e),null}}return{...t,data:n}}case"anything":if(Array.isArray(e)){const r=e.map((e=>t(e,n)));return await Promise.all(r)}if("object"==typeof e){const r=e,i={};for(const e in r){const o=r[e];null!=o&&(i[e]=await t(o,n))}return i}return e;default:return e}},n=await Promise.all(e.map((async e=>({...e,lastValue:await t(e.lastValue,e.controlType).catch((e=>(console.error("Failed to deserialize the value of the global variable.",e),null)))}))));return n},al=e=>{try{return JSON.parse(e)}catch(e){return null}},cl="undefined"!=typeof window,ll={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},ul={protocolPrefix:4,txtLength:4},dl=Object.values(ll).reduce(((e,t)=>e+t),0),hl=Object.values(ul).reduce(((e,t)=>e+t),0),fl=["width","height","colorSpace"],pl=(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)||fl.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},gl=(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},ml=(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&&gl(e,o,l)}return e},yl=e=>u(e),vl="KMSG",bl="KCMD",wl=yl("klProtocol");var Sl={encode:(e,t,n)=>{const r={json:e.json},i=pl(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=ll.protocolPrefix+ll.protocolVersion+ll.jsonLength+ll.binaryLength+ll.fromServiceId+ll.toServiceId+ll.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write(vl,f),f+=ll.protocolPrefix,d.writeUInt8(1,f),f+=ll.protocolVersion,d.writeUInt32LE(l,f),f+=ll.jsonLength,d.writeUInt32LE(s,f),f+=ll.binaryLength,d.writeUInt32LE(t,f),f+=ll.fromServiceId,d.writeUInt32LE(n,f),f+=ll.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=ll.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,ll.protocolPrefix);if(t+=ll.protocolPrefix,n!==vl)return null;if(e.byteLength<dl)return wl(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=ll.protocolVersion;const i=e.readUInt32LE(t);t+=ll.jsonLength;const o=e.readUInt32LE(t);t+=ll.binaryLength;const s=e.readUInt32LE(t);t+=ll.fromServiceId;const a=e.readUInt32LE(t);t+=ll.toServiceId;const c=e.readBigInt64LE(t);t+=ll.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,dl);let h=null;return e.byteLength-dl-i-o>0&&(h=e.subarray(dl+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=al(n);if(!i?.json)return wl("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&ml(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=dl+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<dl)return wl("Invalid Header Size"),e;let n=0;return n+=ll.protocolPrefix,n+=ll.protocolVersion,n+=ll.jsonLength,n+=ll.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=ll.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=hl+r,o=Buffer.alloc(i);return o.write(bl,t),t+=ul.protocolPrefix,o.writeUint32LE(r,t),t+=ul.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<hl)return{command:null};const n=e.toString("utf-8",t,ul.protocolPrefix);if(t+=ul.protocolPrefix,n!==bl)return{command:null};const r=e.readUInt32LE(t);t+=ul.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-hl-r;let s=null;o>0&&(s=e.subarray(hl+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const _l="KMSG",Il="KCMD",xl=yl("klProtocol"),kl=new TextEncoder;var El={encode:(e,t,n)=>{const r={json:e.json},i=pl(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=kl.encode(a),l=c.byteLength,u=new ArrayBuffer(ll.protocolPrefix+ll.protocolVersion+ll.jsonLength+ll.binaryLength+ll.fromServiceId+ll.toServiceId+ll.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++]=_l.charCodeAt(e);return d.setUint8(p,1),p+=ll.protocolVersion,d.setUint32(p,l,!0),p+=ll.jsonLength,d.setUint32(p,s,!0),p+=ll.binaryLength,d.setUint32(p,t,!0),p+=ll.fromServiceId,d.setUint32(p,n,!0),p+=ll.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=ll.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<ll.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==_l)return null;if(e.byteLength<dl)return xl.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=ll.protocolVersion;const o=t.getUint32(n,!0);n+=ll.jsonLength;const s=t.getUint32(n,!0);n+=ll.binaryLength;const a=t.getUint32(n,!0);n+=ll.fromServiceId;const c=t.getUint32(n,!0);n+=ll.toServiceId;const l=t.getBigInt64(n,!0);n+=ll.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,dl);let f=null;if(e.byteLength-dl-o-s>0){f=new Uint8Array(e,dl+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=al(o);if(!a?.json)return xl.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&ml(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=dl+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<dl)return xl("Invalid Header Size"),e;let n=0;n+=ll.protocolPrefix,n+=ll.protocolVersion,n+=ll.jsonLength,n+=ll.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=ll.fromServiceId,void 0!==t.toServiceId&&r.setUint32(n,t.toServiceId,!0),e},encodeCommand:e=>{let t=0;const n=kl.encode(e),r=n.byteLength,i=new ArrayBuffer(hl+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=Il.charCodeAt(e);return o.setUint32(t,r,!0),t+=ul.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<hl)return{command:null};let r="";for(let e=0;e<ul.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Il)return{command:null};const i=t.getUint32(n,!0);n+=ul.txtLength;const o=e.byteLength-hl-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-hl)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(hl+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};let Cl=Sl;cl&&(Cl=El);var $l,Nl=Cl;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}($l||($l={}));let Ol=Math.ceil(Date.now()/1e3);let Tl,Al,Pl,Ml,Dl,Rl=!1;var jl=()=>{Rl=!0},Ll=()=>{Rl=!1},Fl=(e,t)=>{if(!Tl)throw new Error("Memory connection not set.");Tl.sendBuf(e,t)},Ul=e=>Al=e,Bl=e=>Dl=e,Wl=e=>Pl=e,Gl=e=>Ml=e;const Vl=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===me.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===me.ImageData&&(e[o]=await Ye(i)):r<t&&await n(i,r+1)}}}};return await n(e,1),e};yl("klTransmissionManager"),yl("ipcClient"),yl("kemuWidgetService"),v(process.argv.slice(2));const Hl=e=>u(`runner:${e}`),Yl=Hl("connectionManager"),zl=Hl("remoteInvoke"),ql=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=cl?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=Nl.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}Ol+=1;const u=`${o}-${Ol}-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=cl?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:e,args:n,messageId:u,type:"execute"}};a(c)&&(h=Nl.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)=>{Ol+=1;const s=`${o}-${Ol}-multicast-${e.substring(0,10)}`;let c=cl?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=Nl.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=Nl.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");ql.setLogger(zl);const Kl=new a,Jl=new a;let Zl,Xl=null,Ql=null,eu=null,tu=null,nu=new Set;const ru={},iu=(e,t,n)=>{const r=`${e}_${t}`,i={contents:n,lastRequestedAt:Date.now(),contentsChecksum:""};return ru[r]=i,i},ou=(e,t)=>ru[`${e}_${t}`]||null,su=async(e,t)=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),null;const n=[{serviceName:e,version:t}];return(await ql.execute(we.GetServiceContents,n,lu,Xl,0))[0]},au=new Map,cu=async(e,t,n=!1)=>{if(!e||!t)return null;const r=`${e}:${t}`;if(!n){const e=au.get(r);if(e)return e}const i=ou(e,t);if(!i||n){const n=i||iu(e,t),o=(async()=>{try{const r=await su(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{au.delete(r)}})();return au.set(r,o),o}return i?.contents||null},lu=Fl,uu=()=>{Yl("Disconnected from the server"),Xl=null,eu=null,ql.rejectAllPending("Disconnected from the server"),Kl.emit("disconnected")},du=()=>{Yl("Connected to the server"),Kl.emit("connected")},hu=()=>Ql,fu=(e,t,n,r)=>`${e}_${t}_${n}_${r}`,pu=async()=>{const e=hu();if(e){const t=se(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===Je.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 Lu({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)}}}}}}}},gu=async()=>{Zl=void 0;const e=await Tu();Kl.emit("services-changed",e)},mu=async()=>(Yl("Services list changed"),gu()),yu=async e=>{if(!e)return void Yl("Hub sent ACK request without service id");const t=hu();if(!t)return void Yl("Hub sent ACK request without recipe pool id");if(!se(t))throw new Error("Hub sent ACK request without recipe");const n=tu?{...tu}:null,r={recipe:de(t),user:n,ackSessionId:e};await ql.execute(we.SocketAckResponse,[r],lu,e,0),Yl("Hub Link acknowledged"),Xl=e,Kl.emit("acknowledged"),await zu(),pu()},vu=async()=>{await Ll()},bu=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}"`]})},wu=async e=>{const t=e.args[0],n=fu("broadcast",`hub_${t.type}`,(0).toString(),"");await Jl.emit(n,t)},Su=async e=>{const t=e.args[0],n=hu(),r=t.targetRecipePoolId||t.targetRecipeId;if(!r||r===n){for(const e of t.outputs||[])e.type===me.ImageData&&Le(e.value)&&(e.value=await Ye(e.value));if(n){const r=se(n);if(r){const i=async e=>{const n=fu("broadcast",t.source.serviceName,t.source.serviceVersion,e);try{await Jl.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!==Je.script){if(o.type===Je.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 rl({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)}}}}}},_u=async e=>{const t=e.args[0],{finalState:n,recipeId:r,widgetId:i}=t,o=nl(r,i);let s=o;if(n&&s&&o&&(s={...o,customState:n},tl(r,i,s,!0)),s?.service)try{const e=fu("setOutputs",s.service.name,s.service.version,i);await Jl.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===me.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!==me.JsonObj&&n.type!==me.Array||await Vl(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 rl({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 Ur,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:[]})},Iu=async e=>{const t=e.args[0],{newState:n,recipeId:r,widgetId:i}=t,o=nl(r,i);if(o){const t={...o,customState:{...o.customState,...n}};return tl(r,i,t,!0),e.reply({success:[]})}},xu=async({args:e,reply:t})=>{const n=e,{widgetId:r,recipeId:i,paths:o}=n[0];Yl(`Received request to set a dependency paths for widget "${r}" in recipe "${i}"`);const s=nl(i,r);if(s){const e={...s};for(const t of o)e.dependencies=e.dependencies||{},e.dependencies[t.key]={path:t.path,exclude:t.exclude};tl(i,r,e,!0)}return t({success:[]})},ku=async({args:e,reply:t})=>{const n=e,{recipeId:r,widgetId:i}=n[0];Yl(`Received request to get current dependency paths for widget "${i}" in recipe "${r}"`);const o=nl(r,i);if(o){const e=Object.entries(o.dependencies||{}).map((([e,t])=>({key:e,path:t.path,exclude:t.exclude}))),n=[{paths:e}];return Yl(`Returning dependency paths for widget "${i}"`),t({success:n})}return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"})},Eu=async({args:e,reply:t})=>{const n=e,{recipeId:r,widgetId:i,keys:o}=n[0];Yl(`Received request to remove dependency paths for widget "${i}" in recipe "${r}"`);const s=nl(r,i);if(s){const e={...s};for(const t of o)delete e.dependencies?.[t];tl(r,i,e,!0)}return t({success:[]})},Cu=async({args:e,reply:t})=>{const n=e[0];if(!n.expressions)return t({error:"Expression is required",errCode:"EXPRESSION_REQUIRED"});const r=ce({recipeId:n.recipePoolId,widgetId:n.widgetId});if(!r)return t({error:"Widget not found",errCode:"WIDGET_NOT_FOUND"});if(r.type!==Je.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=se(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 qs({template:e.text,context:e.context||{},options:{enableFnTag:!1,recipeUuid:o,serviceName:i.service?.name,securityOptions:{restrictionLevel:"strict"}}}))))}]})},$u=async({args:e,reply:t})=>{const n=e[0],r=ho.getAllVariables().filter((e=>!n.filterTypes||n.filterTypes.includes(e.controlType))).map((e=>({name:e.name,type:e.controlType})));return t({success:[{variables:r}]})},Nu=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=ho.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 ho.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()}`),!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),{available:[],installed:[],failed:[]};const[e]=await ql.execute(we.GetServices,[],lu,Xl,0);if(nu.size)for(const t of e.available)nu.has(t.name)&&(t.internal=!0);Zl=e;for(const t of e.available){if(t.internal)continue;const e=ou(t.name,t.version);if(!e||e?.contentsChecksum!==t.uiContentChecksum)try{const n=e||iu(t.name,t.version);Yl(`Service ${t.name} v${t.version} contents have changed, fetching new contents`);const r=await su(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},Au=()=>Zl||{available:[],installed:[],failed:[]},Pu=()=>!!Zl,Mu=async e=>{const{targetServiceSessionId:t}=e;if(!Xl)return void Yl("No target service session id provided");Yl(`Forwarding "onParentEvent" to service ${t}`);const n=await ql.execute(we.OnParentEvent,[e],lu,Xl,t,e.config).catch((e=>{throw Yl(`Error invoking onParentEvent callback: ${e}`),e.errCode===$l.ParentEventCallbackError?e.error:e}));return n},Du=async e=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),{};const[t]=await ql.execute(we.GetDefaultState,[],lu,Xl,e);return t},Ru=async(e,t,n,r,i)=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),null;const[o]=await ql.execute(we.UIEvent,[t,n,r],lu,Xl,e,i);return o},ju=(e,t)=>{const n=(...e)=>{t(...e)};return Kl.on(e,n),()=>Kl.off(e,n)},Lu=async e=>{if(Xl)return ql.execute(we.SubscribeToService,[e],lu,Xl,0);Yl("Hub Link has not been acknowledged. Cannot subscribe to services.")},Fu=async e=>{if(Xl)return ql.execute(we.UnsubscribeFromService,[e],lu,Xl,0);Yl("Hub Link has not been acknowledged. Cannot subscribe to services.")},Uu=(e,t,n,r)=>{const i=fu("broadcast",t,n,e);return Jl.on(i,r)},Bu=(e,t,n,r)=>{const i=fu("setOutputs",t,n,e);return Jl.on(i,r)},Wu=async(e,t,n)=>Xl?ql.execute(e,t,lu,Xl,0,n):(Yl("Hub Link has not been acknowledged. Cannot execute function."),null),Gu=async e=>{if(!Xl)return void Yl("Hub Link has not been acknowledged. Cannot execute function.");const t=nl(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(!se(e.recipePoolId))throw new Error("Recipe not found. Cannot initialize service instance.");const r=[{currentState:t.customState,recipeId:e.recipePoolId,recipe:de(e.recipePoolId),widgetId:e.widgetId,variantId:e.variantId,recipeType:e.recipeType,recipeName:e.recipeName,currentDependencies:n}],[i,o,s]=await ql.execute(we.InitializeInstance,r,lu,Xl,e.sessionId);if(o&&o.length>0){const n=o.filter((e=>e.name&&e.name.length>0)).map((e=>({...e,hubServiceName:t.service?.name})));ol({clearExistingSecrets:!0,recipePoolId:e.recipePoolId,widgetId:e.widgetId,secrets:n})}if(s&&s.length>0&&await Promise.all(s.map((async t=>{await ho.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})}))),i){const t=nl(e.recipePoolId,e.widgetId);if(t){const n={...t,customState:i};tl(e.recipePoolId,e.widgetId,n,!0)}}},Vu=async(e,t,n,r)=>{if(!Xl)return void Yl("Hub Link has not been acknowledged. Cannot execute function.");const i=nl(n,t);if(!i)throw new Error("Widget or recipe pool not found. Cannot initialize service instance.");const o=se(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 ql.execute(we.TerminateInstance,s,lu,Xl,e)},Hu=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=Pu(),s=r||!o?await Tu():Au();for(const r of s.available)if(r.name===e){if(r.version===t)return r;if(l(r.version,`${n}${t}`))return r}return null},Yu=async(e=!1)=>{if(!Xl)return Yl("Hub Link has not been acknowledged. Cannot get services."),null;if(eu&&!e)return eu;const[t]=await ql.execute(we.GetSystemInfo,[],lu,Xl,0).catch((e=>(Yl("Failed to get system info",e),[null])));return eu=t,t},zu=async()=>{eu=await Yu()};var qu,Ku,Ju,Zu,Xu,Qu,ed,td,nd=async e=>{tu=e,Wl(du),Gl(uu),Bl((({json:e,transmission:t})=>{ql.processMessage("websocket",lu,t,e)})),await vu(),ql.unregisterAllFunctions(),ql.registerFunction(we.SetState,Iu),ql.registerFunction(we.SetOutputs,_u),ql.registerFunction(we.BroadcastEvent,Su),ql.registerFunction(we.HubBroadcastEvent,wu),ql.registerFunction(we.SendToRecipe,bu),ql.registerFunction(Se.SetDependencyPaths,xu),ql.registerFunction(Se.GetCurrentDependencyPaths,ku),ql.registerFunction(Se.RemoveDependencyPaths,Eu),ql.registerFunction(Se.ParseStringExpression,Cu),ql.registerFunction(Se.GetGlobalVariableNames,$u),ql.registerFunction(Se.GetGlobalVariableValues,Nu),ql.registerFunction(Se.SetGlobalVariableValues,Ou),Ul((e=>{((e,t)=>{const n=be.SocketAcknowledge,r=be.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,yu),((e,t)=>{e===be.ServicesListChanged&&(t&&t())})(e,mu)})),await jl()},rd=(e,t)=>{Kl.on(e,t)},id=()=>({getServices:Tu,getServiceContents:cu,onParentEvent:Mu,onCommand:ju,getDefaultState:Du,getCachedServices:Au,areServicesCached:Pu,subscribeToServiceEvents:Lu,unsubscribeFromServiceEvents:Fu,callProcessorHandler:Ru,onBroadcastEvent:Uu,onSetOutputsEvent:Bu,executeHubFunction:Wu,initializeServiceInstance:Gu,terminateServiceInstance:Vu,getCompatibleService:Hu,getHubSystemInfo:Yu}),od=e=>{Ql=e},sd=e=>{nu=new Set((e||[]).filter(Boolean))},ad=()=>ql;!function(e){e.Browser="browser",e.Cloud="cloud",e.Desktop="desktop"}(qu||(qu={})),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"}(Ku||(Ku={})),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"}(Ju||(Ju={})),function(e){e.Javascript="js",e.Python="py",e.Executable="exe"}(Zu||(Zu={})),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:"}(Xu||(Xu={})),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.RestartApp="restartApp",e.ShowHubScreen="showHubScreen",e.ExchangeSessionTokenForApiKey="exchangeSessionTokenForApiKey",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"}(Qu||(Qu={})),function(e){e.SetDependencyPath="setDependencyPath",e.GetDependencyPath="getDependencyPath",e.ParseStringExpression="parseStringExpression",e.GetGlobalVariableNames="getGlobalVariableNames",e.GetGlobalVariableValues="getGlobalVariableValues",e.SetGlobalVariableValues="setGlobalVariableValues"}(ed||(ed={})),function(e){e.IPC="ipc",e.WS="ws"}(td||(td={}));const cd=e=>{try{return JSON.parse(e)}catch(e){return null}},ld=()=>{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=I.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}`)}},ud=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i,dd=e=>{if("string"!=typeof e)throw new TypeError("Invalid argument expected string");const t=e.match(ud);if(!t)throw new Error(`Invalid argument not valid semver ('${e}' received)`);return t.shift(),t},hd=e=>"*"===e||"x"===e||"X"===e,fd=e=>{const t=parseInt(e,10);return isNaN(t)?e:t},pd=(e,t)=>{if(hd(e)||hd(t))return 0;const[n,r]=((e,t)=>typeof e!=typeof t?[String(e),String(t)]:[e,t])(fd(e),fd(t));return n>r?1:n<r?-1:0},gd=(e,t)=>{for(let n=0;n<Math.max(e.length,t.length);n++){const r=pd(e[n]||"0",t[n]||"0");if(0!==r)return r}return 0},md=(e,t,n)=>{bd(n);const r=((e,t)=>{const n=dd(e),r=dd(t),i=n.pop(),o=r.pop(),s=gd(n,r);return 0!==s?s:i&&o?gd(i.split("."),o.split(".")):i||o?i?-1:1:0})(e,t);return yd[n].includes(r)},yd={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1],"!=":[-1,1]},vd=Object.keys(yd),bd=e=>{if(-1===vd.indexOf(e))throw new Error(`Invalid operator, expected one of ${vd.join("|")}`)};var wd="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Sd(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _d,Id,xd,kd,Ed,Cd={exports:{}},$d={exports:{}};function Nd(){if(Id)return _d;Id=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 _d=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 Od(){return kd||(kd=1,xd=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=Nd(),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}),xd}var Td,Ad,Pd,Md,Dd,Rd={exports:{}};"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Cd.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=Od()(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}($d,$d.exports)),$d.exports):Cd.exports=(Dd||(Dd=1,function(e,t){const n=k,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} `;n[0]=o+n[0].split("\n").join("\n"+o),n.push(i+"m+"+e.exports.humanize(this.diff)+"")}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(Md)return Pd;Md=1;const e=E,t=k,n=Ad?Td:(Ad=1,Td=(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)),Pd={supportsColor:function(e){return o(s(e,e&&e.isTTY))},stdout:o(s(!0,t.isatty(1))),stderr:o(s(!0,t.isatty(2)))},Pd}();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=Od()(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)}}(Rd,Rd.exports)),Rd.exports);var jd=Sd(Cd.exports);const Ld=e=>jd(e);var Fd={},Ud={};class Bd 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,Bd)}}var Wd,Gd,Vd,Hd,Yd,zd=e=>{if(e.length>2)throw new Bd(e);function t(e={}){this.options=e}function n(e){return new t(e)}return t.prototype.transform=e,n.Format=t,n},qd={exports:{}},Kd={exports:{}},Jd={exports:{}},Zd={exports:{}};function Xd(){if(Yd)return Hd;Yd=1;var e=E,t=Vd?Gd:(Vd=1,Gd=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)),Hd={supportsColor:i,stdout:i(process.stdout),stderr:i(process.stderr)}}var Qd,eh,th,nh,rh,ih,oh,sh,ah={exports:{}},ch={exports:{}},lh={exports:{}},uh={exports:{}},dh={exports:{}},hh={exports:{}};function fh(){return oh||(oh=1,function(){var e={};Jd.exports=e,e.themes={};var t=i,n=e.styles=(Wd||(Wd=1,function(){var e={};Zd.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"}))}()),Zd.exports),r=Object.defineProperties,o=new RegExp(/[\r\n]+/g);e.supportsColor=Xd().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=(Qd||(Qd=1,ah.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}),ah.exports),e.zalgo=(eh||(eh=1,ch.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)}),ch.exports),e.maps={},e.maps.america=(th||(th=1,lh.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)}}}),lh.exports)(e),e.maps.zebra=(nh||(nh=1,uh.exports=function(e){return function(t,n){return n%2==0?t:e.inverse(t)}}),uh.exports)(e),e.maps.rainbow=(rh||(rh=1,dh.exports=function(e){var t=["red","yellow","green","blue","magenta"];return function(n,r){return" "===n?n:e[t[r++%t.length]](n)}}),dh.exports)(e),e.maps.random=(ih||(ih=1,hh.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)}}),hh.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}())}()),Jd.exports}function ph(){return sh||(sh=1,function(e){var t=fh();e.exports=t}(Kd)),Kd.exports}var gh,mh,yh={},vh={},bh={};function wh(){if(mh)return qd.exports;mh=1;const e=ph(),{LEVEL:t,MESSAGE:n}=yh;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 qd.exports=e=>new i(e),qd.exports.Colorizer=qd.exports.Format=i,qd.exports}bh.levels={emerg:0,alert:1,crit:2,error:3,warning:4,notice:5,info:6,debug:7},bh.colors={emerg:"red",alert:"yellow",crit:"red",error:"red",warning:"red",notice:"yellow",info:"green",debug:"blue"},gh=vh,Object.defineProperty(gh,"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(gh,"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(gh,"syslog",{value:bh}),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:vh})}(yh);const{Colorizer:Sh}=wh();var _h,Ih,xh,kh,Eh,Ch,$h={exports:{}},Nh={exports:{}};function Oh(){if(Eh)return Nh.exports;Eh=1;const{configs:e,LEVEL:t,MESSAGE:n}=yh;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 Nh.exports=e=>new r(e),Nh.exports.Padder=Nh.exports.Format=r,Nh.exports}var Th,Ah,Ph,Mh,Dh,Rh,jh,Lh,Fh,Uh,Bh,Wh,Gh,Vh,Hh={exports:{}},Yh={exports:{}};function zh(){return Ah||(Ah=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,[])}}}(Yh,Yh.exports)),Yh.exports}function qh(){if(Mh)return Ph;Mh=1;const e=zd,{MESSAGE:t}=yh,n=zh();function r(e,t){return"bigint"==typeof t?t.toString():t}return Ph=e(((e,i)=>{const o=n.configure(i);return e[t]=o(e,i.replacer||r,i.space),e}))}var Kh,Jh,Zh,Xh,Qh,ef={exports:{}},tf=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,nf="\\d\\d?",rf="\\d\\d",of="[^\\s]+",sf=/\[([^]*?)\]/gm;function af(e,t){for(var n=[],r=0,i=e.length;r<i;r++)n.push(e[r].substr(0,t));return n}var cf=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 lf(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 uf=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],df=["January","February","March","April","May","June","July","August","September","October","November","December"],hf=af(df,3),ff={dayNamesShort:af(uf,3),dayNames:uf,monthNamesShort:hf,monthNames:df,amPm:["am","pm"],DoFn:function(e){return e+["th","st","nd","rd"][e%10>3?0:(e-e%10!=10?1:0)*e%10]}},pf=lf({},ff),gf=function(e){return pf=lf(pf,e)},mf=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},yf=function(e,t){for(void 0===t&&(t=2),e=String(e);e.length<t;)e="0"+e;return e},vf={D:function(e){return String(e.getDate())},DD:function(e){return yf(e.getDate())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return String(e.getDay())},dd:function(e){return yf(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 yf(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 yf(String(e.getFullYear()),4).substr(2)},YYYY:function(e){return yf(e.getFullYear(),4)},h:function(e){return String(e.getHours()%12||12)},hh:function(e){return yf(e.getHours()%12||12)},H:function(e){return String(e.getHours())},HH:function(e){return yf(e.getHours())},m:function(e){return String(e.getMinutes())},mm:function(e){return yf(e.getMinutes())},s:function(e){return String(e.getSeconds())},ss:function(e){return yf(e.getSeconds())},S:function(e){return String(Math.round(e.getMilliseconds()/100))},SS:function(e){return yf(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return yf(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?"-":"+")+yf(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)},Z:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+yf(Math.floor(Math.abs(t)/60),2)+":"+yf(Math.abs(t)%60,2)}},bf=function(e){return+e-1},wf=[null,nf],Sf=[null,of],_f=["isPm",of,function(e,t){var n=e.toLowerCase();return n===t.amPm[0]?0:n===t.amPm[1]?1:null}],If=["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}],xf={D:["day",nf],DD:["day",rf],Do:["day",nf+of,function(e){return parseInt(e,10)}],M:["month",nf,bf],MM:["month",rf,bf],YY:["year",rf,function(e){var t=+(""+(new Date).getFullYear()).substr(0,2);return+(""+(+e>68?t-1:t)+e)}],h:["hour",nf,void 0,"isPm"],hh:["hour",rf,void 0,"isPm"],H:["hour",nf],HH:["hour",rf],m:["minute",nf],mm:["minute",rf],s:["second",nf],ss:["second",rf],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(e){return 100*+e}],SS:["millisecond",rf,function(e){return 10*+e}],SSS:["millisecond","\\d{3}"],d:wf,dd:wf,ddd:Sf,dddd:Sf,MMM:["month",of,cf("monthNamesShort")],MMMM:["month",of,cf("monthNames")],a:_f,A:_f,ZZ:If,Z:If},kf={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"},Ef=function(e){return lf(kf,e)},Cf=function(e,t,n){if(void 0===t&&(t=kf.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=kf[t]||t).replace(sf,(function(e,t){return r.push(t),"@@@"}));var i=lf(lf({},pf),n);return(t=t.replace(tf,(function(t){return vf[t](e,i)}))).replace(/@@@/g,(function(){return r.shift()}))};function $f(e,t,n){if(void 0===n&&(n={}),"string"!=typeof t)throw new Error("Invalid format in fecha parse");if(t=kf[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(sf,(function(e,t){return o.push(mf(t)),"@@@"})),a={},c={};s=mf(s).replace(tf,(function(e){var t=xf[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=lf(lf({},pf),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,Of,Tf,Af,Pf={format:Cf,parse:$f,defaultI18n:ff,setGlobalDateI18n:gf,setGlobalDateMasks:Ef},Mf=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:lf,default:Pf,defaultI18n:ff,format:Cf,parse:$f,setGlobalDateI18n:gf,setGlobalDateMasks:Ef}));const Df=Ud.format=zd;function Rf(e,t){Object.defineProperty(Df,e,{get:()=>t(),configurable:!0})}Ud.levels=e=>(Sh.addColors(e.colors||e),e),Rf("align",(function(){return Ih?_h:(Ih=1,_h=zd((e=>(e.message=`\t${e.message}`,e))))})),Rf("errors",(function(){return function(){if(kh)return xh;kh=1;const e=zd,{LEVEL:t,MESSAGE:n}=yh;return xh=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}))}()})),Rf("cli",(function(){return function(){if(Ch)return $h.exports;Ch=1;const{Colorizer:e}=wh(),{Padder:t}=Oh(),{configs:n,MESSAGE:r}=yh;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 $h.exports=e=>new i(e),$h.exports.Format=i,$h.exports}()})),Rf("combine",(function(){return function(){if(Th)return Hh.exports;Th=1;const e=zd;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 Hh.exports=(...n)=>{const r=e(t(n)),i=r();return i.Format=r.Format,i},Hh.exports.cascade=t,Hh.exports}()})),Rf("colorize",(function(){return wh()})),Rf("json",(function(){return qh()})),Rf("label",(function(){return Rh?Dh:(Rh=1,Dh=zd(((e,t)=>t.message?(e.message=`[${t.label}] ${e.message}`,e):(e.label=t.label,e))))})),Rf("logstash",(function(){return function(){if(Lh)return jh;Lh=1;const e=zd,{MESSAGE:t}=yh,n=zh();return jh=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}))}()})),Rf("metadata",(function(){return Uh?Fh:(Uh=1,Fh=zd(((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})))})),Rf("ms",(function(){return function(){if(Wh)return Bh;Wh=1;const e=zd,t=Nd();return Bh=e((e=>{const n=+new Date;return this.diff=n-(this.prevTime||n),this.prevTime=n,e.ms=`+${t(this.diff)}`,e}))}()})),Rf("padLevels",(function(){return Oh()})),Rf("prettyPrint",(function(){return function(){if(Vh)return Gh;Vh=1;const e=i.inspect,t=zd,{LEVEL:n,MESSAGE:r,SPLAT:o}=yh;return Gh=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}))}()})),Rf("printf",(function(){return function(){if(Kh)return ef.exports;Kh=1;const{MESSAGE:e}=yh;class t{constructor(e){this.template=e}transform(t){return t[e]=this.template(t),t}}return ef.exports=e=>new t(e),ef.exports.Printf=ef.exports.Format=t,ef.exports}()})),Rf("simple",(function(){return function(){if(Zh)return Jh;Zh=1;const e=zd,{MESSAGE:t}=yh,n=zh();return Jh=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}))}()})),Rf("splat",(function(){return function(){if(Qh)return Xh;Qh=1;const e=i,{SPLAT:t}=yh,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 Xh=e=>new o(e)}()})),Rf("timestamp",(function(){return function(){if(Of)return Nf;Of=1;const e=Mf;return Nf=zd(((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)))}()})),Rf("uncolorize",(function(){return function(){if(Af)return Tf;Af=1;const e=ph(),t=zd,{MESSAGE:n}=yh;return Tf=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 jf={};!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})}))}}}(jf);var Lf,Ff,Uf,Bf,Wf,Gf,Vf={},Hf={exports:{}},Yf={exports:{}};function zf(){return Bf?Uf:(Bf=1,Uf=N)}function qf(){if(Gf)return Wf;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 Gf=1,Wf={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)}},Wf}var Kf,Jf,Zf,Xf={};function Qf(){if(Kf)return Xf;Kf=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"),Xf.codes=e,Xf}function ep(){if(Zf)return Jf;Zf=1;var e=Qf().codes.ERR_INVALID_OPT_VALUE;return Jf={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 tp,np,rp,ip,op={exports:{}},sp={exports:{}};function ap(){if(np)return op.exports;np=1;try{var e=require("util");if("function"!=typeof e.inherits)throw"";op.exports=e.inherits}catch(e){op.exports=(tp||(tp=1,"function"==typeof Object.create?sp.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:sp.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}),sp.exports)}return op.exports}function cp(){if(ip)return rp;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)}ip=1;var o=O.Buffer,s=i.inspect,a=s&&s.custom||"inspect";function c(e,t,n){o.prototype.copy.call(e,t,n)}return rp=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 lp,up,dp,hp,fp,pp,gp,mp,yp,vp,bp,wp,Sp,_p,Ip={},xp={exports:{}};function kp(){if(up)return Ip;up=1;var e=(lp||(lp=1,function(e,t){var n=O,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)}}(xp,xp.exports)),xp.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 Ip.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},Ip}function Ep(){if(hp)return dp;hp=1;var e=Qf().codes.ERR_STREAM_PREMATURE_CLOSE;function t(){}return dp=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)}},dp}function Cp(){if(vp)return yp;var e;vp=1,yp=_,_.ReadableState=S,T.EventEmitter;var t,n=function(e,t){return e.listeners(t).length},r=zf(),o=O.Buffer,s=(void 0!==wd?wd:"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=cp(),h=qf(),f=ep().getHighWaterMark,p=Qf().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;ap()(_,r);var b=h.errorOrDestroy,w=["error","close","destroy","pause","resume"];function S(t,n,r){e=e||$p(),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=kp().StringDecoder),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function _(t){if(e=e||$p(),!(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):N(e,l)):x(e,l,n,!1)}else i||(l.reading=!1,N(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)),N(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=kp().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,R(e)}function N(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(A,e,t))}function A(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 P(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 M(e){t("readable nexttick read 0"),e.read(0)}function D(e,n){t("resume",n.reading),n.reading||e.read(0),n.resumeScheduled=!1,e.emit("resume"),R(e),n.flowing&&!n.reading&&e.read(0)}function R(e){var n=e._readableState;for(t("flow",n.flowing);n.flowing&&null!==e.read(););}function j(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?j(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,R(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(M,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(P,this),n},_.prototype.removeAllListeners=function(e){var t=r.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||process.nextTick(P,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(D,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(pp)return fp;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}pp=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 fp=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},fp}()),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=j,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(mp)return gp;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}mp=1;var r=Qf().codes.ERR_INVALID_ARG_TYPE;return gp=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},gp}()),u(_,e,t)}),yp}function $p(){if(wp)return bp;wp=1;var e=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};bp=s;var t=Cp(),n=Np();ap()(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)}}),bp}function Np(){if(_p)return Sp;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;_p=1,Sp=_,_.WritableState=S;var n,r={deprecate:Ff?Lf:(Ff=1,Lf=i.deprecate)},o=zf(),s=O.Buffer,a=(void 0!==wd?wd:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},c=qf(),l=ep().getHighWaterMark,u=Qf().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||$p(),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||$p());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 ap()(_,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)},Sp}const Op=i,Tp=Np(),{LEVEL:Ap}=yh,Pp=Yf.exports=function(e={}){Tp.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())}))};Op.inherits(Pp,Tp),Pp.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[Ap]]){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)},Pp.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)},Pp.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[Ap]])||!this.handleExceptions&&!0===t.exception)},Pp.prototype._nop=function(){};var Mp=Yf.exports,Dp={exports:{}};const Rp=i,{LEVEL:jp}=yh,Lp=Mp,Fp=Dp.exports=function(e={}){if(Lp.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))};Rp.inherits(Fp,Lp),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[jp]])&&this.transport.log(e[jp],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[jp],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 Up=Dp.exports;Hf.exports=Mp,Hf.exports.LegacyTransportStream=Up;var Bp,Wp,Gp=Hf.exports,Vp={exports:{}},Hp={exports:{}},Yp={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}(Yp,Yp.exports);var zp=Yp.exports,qp={},Kp={exports:{}},Jp={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}(Jp,Jp.exports);var Zp=Jp.exports,Xp={};Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.fallback=og,Xp.wrap=sg;var Qp,eg,tg,ng=Xp.hasQueueMicrotask="function"==typeof queueMicrotask&&queueMicrotask,rg=Xp.hasSetImmediate="function"==typeof setImmediate&&setImmediate,ig=Xp.hasNextTick="object"==typeof process&&"function"==typeof process.nextTick;function og(e){setTimeout(e,0)}function sg(e){return(t,...n)=>e((()=>t(...n)))}function ag(){if(tg)return qp;tg=1,Object.defineProperty(qp,"__esModule",{value:!0}),qp.isAsyncIterable=qp.isAsyncGenerator=qp.isAsync=void 0;var e,t=(eg||(eg=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(Zp),r=o(Xp),i=ag();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}(Kp,Kp.exports)),Kp.exports),n=(e=t)&&e.__esModule?e:{default:e};function r(e){return"AsyncFunction"===e[Symbol.toStringTag]}return qp.default=function(e){if("function"!=typeof e)throw new Error("expected a function");return r(e)?(0,n.default)(e):e},qp.isAsync=r,qp.isAsyncGenerator=function(e){return"AsyncGenerator"===e[Symbol.toStringTag]},qp.isAsyncIterable=function(e){return"function"==typeof e[Symbol.asyncIterator]},qp}Qp=ng?queueMicrotask:rg?setImmediate:ig?process.nextTick:og,Xp.default=sg(Qp);var cg={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}(cg,cg.exports);var lg,ug=cg.exports,dg={exports:{}},hg={exports:{}},fg={exports:{}},pg={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}(pg,pg.exports);var gg=pg.exports,mg={exports:{}},yg={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}(yg,yg.exports);var vg=yg.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(zp),r=i(vg);function i(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(mg,mg.exports);var bg=mg.exports,wg={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}(wg,wg.exports);var Sg=wg.exports,_g={exports:{}},Ig={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default={},e.exports=t.default}(Ig,Ig.exports);var xg=Ig.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=xg)&&n.__esModule?n:{default:n};e.exports=t.default}(_g,_g.exports);var kg=_g.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=c(gg),r=c(bg),i=c(Sg),o=ag(),s=c(kg),a=c(xg);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}(fg,fg.exports);var Eg=fg.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(Eg),r=o(ag()),i=o(ug);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}(hg,hg.exports);var Cg,$g,Ng=hg.exports;var Og,Tg,Ag,Pg,Mg,Dg,Rg={exports:{}};function jg(){if(Tg)return Og;Tg=1,Og=a;var e=Qf().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=$p();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 ap()(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)}))},Og}!function(e,t){var n=N;"disable"===process.env.READABLE_STREAM&&n?(e.exports=n.Readable,Object.assign(e.exports,n),e.exports.Stream=n):((t=e.exports=Cp()).Stream=n||t,t.Readable=t,t.Writable=Np(),t.Duplex=$p(),t.Transform=jg(),t.PassThrough=function(){if(Pg)return Ag;Pg=1,Ag=t;var e=jg();function t(n){if(!(this instanceof t))return new t(n);e.call(this,n)}return ap()(t,e),t.prototype._transform=function(e,t,n){n(null,e)},Ag}(),t.finished=Ep(),t.pipeline=function(){if(Dg)return Mg;var e;Dg=1;var t=Qf().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 Mg=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)},Mg}())}(Rg,Rg.exports);var Lg,Fg,Ug,Bg,Wg=Rg.exports,Gg={exports:{}};function Vg(){if(Fg)return Lg;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 Lg=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 Hg,Yg,zg,qg,Kg,Jg,Zg={exports:{}},Xg={exports:{}};function Qg(){if(Jg)return Zg.exports;Jg=1;var e=Yg?Hg:(Yg=1,Hg={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(Kg)return Xg.exports;Kg=1;var e=qg?zg:(qg=1,zg=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=Xg.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))}},Xg.exports}(),n=Object.hasOwnProperty,r=Object.create(null);for(var i in e)n.call(e,i)&&(r[e[i]]=i);var o=Zg.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)]},Zg.exports}var em,tm,nm,rm,im,om,sm,am,cm,lm,um,dm,hm,fm,pm,gm,mm,ym,vm,bm,wm,Sm,_m,Im,xm,km,Em,Cm={exports:{}};function $m(){if(nm)return Cm.exports;nm=1;var e=tm?em:(tm=1,em={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=Cm.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]},Cm.exports}function Nm(){if(sm)return om;sm=1;var e=$m(),t=function(){if(im)return rm;im=1;var e=$m();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 rm=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)}))})),om=n}function Om(){if(hm)return dm;hm=1;var e=function(){if(cm)return am;cm=1;var e=Qg(),t=Nm(),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)}}})),am=s}(),t=(um||(um=1,lm=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}),lm);return dm=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},dm}function Tm(){if(_m)return Sm;_m=1;var e=function(){if(wm)return bm;wm=1;var e=(vm||(vm=1,ym=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}),ym);return bm=function(t){return function(n){try{return e(n,t())}catch(e){}return!1}}}();return Sm=e((function(){return process.env.DEBUG||process.env.DIAGNOSTICS}))}"production"===process.env.NODE_ENV?Gg.exports=function(){if(Bg)return Ug;Bg=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 Ug=e}():Gg.exports=function(){if(Em)return km;Em=1;var e=Vg(),t=k.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(mm)return gm;mm=1;var e=Om(),t=function(){if(pm)return fm;function e(t,n){return n?new e(t).style(n):this instanceof e?void(this.text=t):new e(t)}return pm=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()},fm=e}();return gm=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(Tm()),n.set(xm?Im:(xm=1,Im=function(e,t){try{Function.prototype.apply.call(console.log,console,t)}catch(e){}})),km=n}();var Am,Pm,Mm,Dm,Rm,jm,Lm=Gg.exports;function Fm(){if(Dm)return Mm;Dm=1;const e=x,t=b,n=($g||($g=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=(lg||(lg=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=o(zp),r=o(ag()),i=o(ug);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}(Hp,Hp.exports)),Hp.exports),r=s(n),i=(Cg||(Cg=1,function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=i(Ng),r=i(ug);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}(dg,dg.exports)),dg.exports),o=s(i);function s(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}(Vp,Vp.exports)),Vp.exports),r=A,{MESSAGE:i}=yh,{Stream:o,PassThrough:s}=Wg,a=Gp,c=Lm("winston:file"),l=E,u=function(){if(Pm)return Am;Pm=1;const e=x,{StringDecoder:t}=P,{Stream:n}=Wg;function r(){}return Am=(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},Am}();return Mm=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})}},Mm}const Um=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;Um.writable=e=>Um(e)&&!1!==e.writable&&"function"==typeof e._write&&"object"==typeof e._writableState,Um.readable=e=>Um(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState,Um.duplex=e=>Um.writable(e)&&Um.readable(e),Um.transform=e=>Um.duplex(e)&&"function"==typeof e._transform;var Bm,Wm,Gm=Um;!function(e){Object.defineProperty(e,"Console",{configurable:!0,enumerable:!0,get:()=>function(){if(Wp)return Bp;Wp=1;const e=E,{LEVEL:t,MESSAGE:n}=yh,r=Gp;return Bp=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(jm)return Rm;jm=1;const e=M,t=D,{Stream:n}=Wg,r=Gp,{configure:i}=zh();return Rm=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"))}},Rm}()}),Object.defineProperty(e,"Stream",{configurable:!0,enumerable:!0,get:()=>function(){if(Wm)return Bm;Wm=1;const e=Gm,{MESSAGE:t}=yh,n=E,r=Gp;return Bm=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 Hm=Ud,{configs:Ym}=yh;Vm.cli=Hm.levels(Ym.cli),Vm.npm=Hm.levels(Ym.npm),Vm.syslog=Hm.levels(Ym.syslog),Vm.addColors=Hm.levels;var zm={exports:{}},qm={exports:{}};!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=l(zp),r=l(xg),i=l(Ng),o=l(gg),s=l(Sg),a=l(ag()),c=l(ug);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}(qm,qm.exports);var Km=qm.exports,Jm={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}(Jm,Jm.exports);var Zm=Jm.exports;!function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n=s(Km),r=s(Zm),i=s(ag()),o=s(ug);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}(zm,zm.exports);var Xm=zm.exports,Qm=Object.prototype.toString,ey=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=Qm.call(e).slice(8,-1);return(t="Function"===n?t.substring(t.indexOf("(")+1,t.indexOf(")")):n)||"anonymous"}(e),r},ty={};!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)}}(ty);const{Writable:ny}=Wg,ry=E,iy=Xm,oy=Lm("winston:exception"),sy=ey,ay=ty,cy=class extends ny{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 ly=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:ry.loadavg(),uptime:ry.uptime()}}getTrace(e){return(e?ay.parse(e):ay.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 cy(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(){oy("doExit",i),oy("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);iy(n,((e,t)=>{const n=sy(t),r=e.transport||e;function i(e){return()=>{oy(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:uy}=Wg,dy=E,hy=Xm,fy=Lm("winston:rejection"),py=ey,gy=ty,my=class extends uy{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 yy,vy,by,wy,Sy=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:dy.loadavg(),uptime:dy.uptime()}}getTrace(e){return(e?gy.parse(e):gy.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 my(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(){fy("doExit",i),fy("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);hy(n,((e,t)=>{const n=py(t),r=e.transport||e;function i(e){return()=>{fy(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 _y(){if(wy)return by;wy=1;const{Stream:e,Transform:t}=Wg,n=Xm,{LEVEL:r,SPLAT:i}=yh,o=Gm,s=ly,a=Sy,c=Up,l=(vy||(vy=1,yy=class{constructor(e){const t=_y();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)}}),yy),{warn:u}=jf,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||qh()(),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)}}),by=f}const{LEVEL:Iy}=yh,xy=Vm,ky=_y(),Ey=Lm("winston:create-logger");var Cy=function(e={}){e.levels=e.levels||xy.npm.levels;class t extends ky{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[Iy]=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 $y=Cy;var Ny=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=$y(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=Ud,{warn:n}=jf;e.version="3.17.0",e.transports=Vf,e.config=Vm,e.addColors=t.levels,e.format=t.format,e.createLogger=Cy,e.Logger=_y(),e.ExceptionHandler=ly,e.RejectionHandler=Sy,e.Container=Ny,e.Transport=Gp,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 Oy=Sd(Fd),Ty={exports:{}};!function(e,t){var n=R;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=Ty.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,Ty.exports);var Ay,Py,My,Dy={exports:{}};function Ry(){return Ay||(Ay=1,(e=Dy).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 N(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 O(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,P={},M={};function D(e,t,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),e&&(M[e]=i),t&&(M[t[0]]=function(){return O(i.apply(this,arguments),t[1],t[2])}),n&&(M[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function R(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function j(e,t){return e.isValid()?(t=L(t,e.localeData()),P[t]=P[t]||function(e){var t,n,r=e.match(T);for(t=0,n=r.length;t<n;t++)M[r[t]]?r[t]=M[r[t]]:r[t]=R(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),P[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 B(e){var t,n,r={};for(n in e)s(e,n)&&(t=U(n))&&(r[t]=e[n]);return r}var W={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/,H=/\d\d/,Y=/\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?O(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,H),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,Ne=Oe("FullYear",!0);function Oe(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 Pe(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,H),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 Me="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("_"),Re=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,je=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,Pe(e.year(),n)),e._isUTC?e._d.setUTCMonth(n,r):e._d.setMonth(n,r),e}function Be(e){return null!=e?(Ue(this,e),r.updateOffset(this,!0),this):Te(this,"Month")}function We(){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 He(e,t,n){var r=7+t-n;return-(7+Ve(e,0,r).getUTCDay()-t)%7+r-1}function Ye(e,t,n,r,i){var o,s,a=1+7*(t-1)+(7+n-r)%7+He(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=He(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=He(e,t,n),i=He(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,H),ce("W",K,se),ce("WW",K,H),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)+O(this.minutes(),2)})),D("hmmss",0,0,(function(){return""+it.apply(this)+O(this.minutes(),2)+O(this.seconds(),2)})),D("Hmm",0,0,(function(){return""+this.hours()+O(this.minutes(),2)})),D("Hmmss",0,0,(function(){return""+this.hours()+O(this.minutes(),2)+O(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,H),ce("hh",K,H),ce("kk",K,H),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=Oe("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:Me,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 N($(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]>Pe(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||""),Pt(e)}else e._isValid=!1}function $t(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function Nt(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 Ot(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=Ot(t.GG,e._a[ve],ze(Rt(),1,4).year),r=Ot(t.W,1),((i=Ot(t.E,1))<1||i>7)&&(c=!0)):(o=e._locale._week.dow,s=e._locale._week.doy,l=ze(Rt(),o,s),n=Ot(t.gg,e._a[ve],l.year),r=Ot(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=Ye(n,r,i,o,s),e._a[ve]=a.year,e._dayOfYear=a.dayOfYear)}(e),null!=e._dayOfYear&&(o=Ot(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 Pt(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),M[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 Nt(e);else Ct(e)}function Mt(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],Pt(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?Pt(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,Nt(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=B(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(Mt(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}(c)}function Rt(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 jt=I("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Rt.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=Rt.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 Rt();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 Bt(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 Wt(e){var t=B(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=Bt(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 Wt}function Vt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ht(e,t){D(e,0,0,(function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+O(~~(e/60),2)+t+O(~~e%60,2)}))}Ht("Z",":"),Ht("ZZ",""),ce("Z",ie),ce("ZZ",ie),pe(["Z","ZZ"],(function(e,t,n){n._useUTC=!0,n._tzm=zt(ie,e)}));var Yt=/([\+\-]|\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(Yt)||["-",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():Rt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+i),r.updateOffset(n,!1),n):Rt(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}}(Rt(o.from),Rt(o.to)),(o={}).ms=i.milliseconds,o.M=i.months),r=new Wt(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=Wt.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=Ye(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,H),ce("gg",K,H),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,H),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=Oe("Date",!0);D("DDD",["DDDD",3],"DDDo","dayOfYear"),ce("DDD",X),ce("DDDD",Y),pe(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=he(e)})),D("m",["mm",2],0,"minute"),ce("m",K,ae),ce("mm",K,H),pe(["m","mm"],_e);var Cn=Oe("Minutes",!1);D("s",["ss",2],0,"second"),ce("s",K,ae),ce("ss",K,H),pe(["s","ss"],Ie);var $n,Nn,On=Oe("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,H),ce("SSS",X,Y),$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);Nn=Oe("Milliseconds",!1),D("z",0,0,"zoneAbbr"),D("zz",0,0,"zoneName");var An=w.prototype;function Pn(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||Rt(),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,Rt(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=j(this,e);return this.localeData().postformat(t)},An.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Rt(e).isValid())?Qt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.fromNow=function(e){return this.from(Rt(),e)},An.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Rt(e).isValid())?Qt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},An.toNow=function(e){return this.to(Rt(),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:Rt(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:Rt(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:Rt(e),o=S(t)?t:Rt(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:Rt(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=jt,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:W[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}(e=B(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?j(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",j(n,"Z")):j(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=Ne,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=Be,An.daysInMonth=function(){return Pe(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=On,An.millisecond=An.milliseconds=Nn,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?Rt(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",Be),An.years=I("years accessor is deprecated. Use year instead",Ne),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=Mt(t))._a?(e=t._isUTC?f(t._a):Rt(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 Mn=N.prototype;function Dn(e,t,n,r){var i=yt(),o=f().set(r,t);return i[n](o,e)}function Rn(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 jn(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}Mn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return C(r)?r.call(t,n):r},Mn.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])},Mn.invalidDate=function(){return this._invalidDate},Mn.ordinal=function(e){return this._ordinal.replace("%d",e)},Mn.preparse=Pn,Mn.postformat=Pn,Mn.relativeTime=function(e,t,n,r){var i=this._relativeTime[n];return C(i)?i(e,t,n,r):i.replace(/%d/i,e)},Mn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return C(n)?n(t):n.replace(/%s/i,t)},Mn.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)},Mn.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},Mn.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]},Mn.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},Mn.erasAbbrRegex=function(e){return s(this,"_erasAbbrRegex")||_n.call(this),e?this._erasAbbrRegex:this._erasRegex},Mn.erasNameRegex=function(e){return s(this,"_erasNameRegex")||_n.call(this),e?this._erasNameRegex:this._erasRegex},Mn.erasNarrowRegex=function(e){return s(this,"_erasNarrowRegex")||_n.call(this),e?this._erasNarrowRegex:this._erasRegex},Mn.months=function(e,t){return e?i(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Re).test(t)?"format":"standalone"][e.month()]:i(this._months)?this._months:this._months.standalone},Mn.monthsShort=function(e,t){return e?i(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Re.test(t)?"format":"standalone"][e.month()]:i(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Mn.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}},Mn.monthsRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||We.call(this),e?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=Le),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Mn.monthsShortRegex=function(e){return this._monthsParseExact?(s(this,"_monthsRegex")||We.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=je),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Mn.week=function(e){return ze(e,this._week.dow,this._week.doy).week},Mn.firstDayOfYear=function(){return this._week.doy},Mn.firstDayOfWeek=function(){return this._week.dow},Mn.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},Mn.weekdaysMin=function(e){return!0===e?Ke(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Mn.weekdaysShort=function(e){return!0===e?Ke(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Mn.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}},Mn.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)},Mn.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)},Mn.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)},Mn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Mn.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 Bn(e){return 4800*e/146097}function Wn(e){return 146097*e/4800}function Gn(e){return function(){return this.as(e)}}var Vn=Gn("ms"),Hn=Gn("s"),Yn=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=Wt.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+Bn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Wn(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=Hn,pr.asMinutes=Yn,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(Wn(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(Bn(s)),s-=Un(Wn(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}(Rt),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 Rt(1e3*e)},r.months=function(e,t){return Rn(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 jn(e,t,n,"weekdays")},r.parseZone=function(){return Rt.apply(null,arguments).parseZone()},r.localeData=yt,r.isDuration=Gt,r.monthsShort=function(e,t){return Rn(e,t,"monthsShort")},r.weekdaysMin=function(e,t,n){return jn(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 N(t)).parentLocale=ut[e],ut[e]=n),gt(e)}else null!=ut[e]&&(null!=ut[e].parentLocale?(ut[e]=ut[e].parentLocale,e===gt()&&gt(e)):null!=ut[e]&&delete ut[e]);return ut[e]},r.locales=function(){return x(ut)},r.weekdaysShort=function(e,t,n){return jn(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}()),Py.exports;var e}function Dy(){if(Ay)return Ty;Ay=1;
3
+ r.version="2.30.1",function(e){t=e}(Rt),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 Rt(1e3*e)},r.months=function(e,t){return Rn(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 jn(e,t,n,"weekdays")},r.parseZone=function(){return Rt.apply(null,arguments).parseZone()},r.localeData=yt,r.isDuration=Gt,r.monthsShort=function(e,t){return Rn(e,t,"monthsShort")},r.weekdaysMin=function(e,t,n){return jn(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 N(t)).parentLocale=ut[e],ut[e]=n),gt(e)}else null!=ut[e]&&(null!=ut[e].parentLocale?(ut[e]=ut[e].parentLocale,e===gt()&&gt(e)):null!=ut[e]&&delete ut[e]);return ut[e]},r.locales=function(){return x(ut)},r.weekdaysShort=function(e,t,n){return jn(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}()),Dy.exports;var e}function jy(){if(My)return Py;My=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=x,t=b,n=My(),r=R,o=T,s={};Ty=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{u(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,h=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&&(h=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+(h?"."+h:"");if(b.match(/%DATE%/)&&(S=b.replace(/%DATE%/g,h||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),u(S);var C=r.file_options||{flags:"a"},$=e.createWriteStream(S,C);if(h&&l&&a.indexOf(l.type)>-1||g>0){f.verbose&&console.log(new Date,"[FileStreamRotator] Rotating file: ",l?l.type:"",g?"size: "+g:"");var N,O=new o;return O.auditLog=p,O.end=function(){$.end.apply($,arguments)},d($,O),O.on("close",(function(){N&&N.close()})),O.on("new",(function(n){O.auditLog=f.addLogToAudit(n,O.auditLog,O,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&&O.emit("addWatcher",n)})),O.on("addWatcher",(function(t){N&&N.close(),r.watch_log&&(N=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){O.emit("createLog",t)}(0,t)}}))}catch(e){n&&console.log(new Date,"[FileStreamRotator] Could not add watcher for "+t)}}(t,f.verbose))})),O.on("createLog",(function(t){try{e.lstatSync(t)}catch(n){$&&"function"==$.end&&$.end(),$=e.createWriteStream(t,C),O.emit("new",t),d($,O)}})),O.write=function(t,n){var o=l?this.getDate(l,v,r.utc):h;if(o!=h||g&&y>g){var s=b+(h&&l?"."+o:"");b.match(/%DATE%/)&&h&&(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)),h=o,w=S,S=s,!0===r.end_stream?$.end():$.destroy(),u(S),$=e.createWriteStream(s,C),O.emit("new",s),O.emit("rotate",w,s),d($,O)}$.write(t,n),y+=Buffer.byteLength(t,n)}.bind(this),process.nextTick((function(){O.emit("new",S)})),O.emit("new",S),O}return f.verbose&&console.log(new Date,"[FileStreamRotator] File won't be rotated: ",r.frequency,r.size),process.nextTick((function(){$.emit("new",S)})),$};var u=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}),"")},d=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 Ty}const Ry=x,jy=E,Ly=b,Fy=i,Uy=A,By=Ny.exports,Wy=gh.MESSAGE,Gy=N.PassThrough,Vy=Bp,Hy={json:!1,colorize:!1,eol:jy.EOL,logstash:null,prettyPrint:!1,label:null,stringify:!1,depth:null,showLevel:!0,timestamp:()=>(new Date).toISOString()},Yy=function(e){if(e=e||{},Vy.call(this,e),this.options=Object.assign({},Hy,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 Gy,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=Dy().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,"."+By(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{Ry.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(!Ry.existsSync(e))return}catch(t){return t.message=`Error occurred while checking existence of ${e}: ${t.message}`,void this.emit("error",t)}try{if(Ry.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=Uy.createGzip(),n=Ry.createReadStream(e);n.on("error",(t=>{t.message=`Error occurred while reading ${e}: ${t.message}`,this.emit("error",t)}));const r=Ry.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{Ry.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 zy=Yy;Fy.inherits(Yy,Vy),Yy.prototype.name="dailyRotateFile";const qy=function(){};Yy.prototype.log=function(e,t){t=t||qy,this.logStream.write(e[Wy]+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 Ry.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 Gy;const e=Ry.createReadStream(s);e.on("error",(e=>{e.message=`Error occurred while reading ${s}: ${e.message}`,a.emit("error",e)})),e.pipe(Uy.createGunzip()).pipe(a)}else a=Ry.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=zy;jd.transports.DailyRotateFile=Ky;var Jy=bd(Ky);const Zy=Date.now();let Xy=Math.ceil(Zy/1e3);var Qy=()=>Xy+=1;const ev=w(C(),"kemu-user-services"),tv=w(C(),"kemu-test-services"),nv="KMU-CB-v1",rv=process.env.HUB_PKG_VERSION||'"1.12.4"';var iv;!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"}(iv||(iv={}));const ov=e=>({...e,type:Array.isArray(e.type)?e.type.map((e=>qu[e])):qu[e.type]}),sv=async e=>{try{return await y(e,"utf-8")}catch(e){return null}},av=e=>{if(e&&e.startsWith(nv)){const t=e.slice(9),n=decodeURI(t);return sd(n)}return null},cv=async(e,t,n)=>{let r=[];e.variants?.length&&(r=e.variants.map((e=>({...e,...e.inputs?{inputs:e.inputs.map(ov)}:{},...e.outputs?{outputs:e.outputs.map(ov)}:{}}))));const i={...e,path:t,customWidgets:[],...e.inputs?{inputs:e.inputs.map(ov)}:{inputs:[]},...e.outputs?{outputs:e.outputs.map(ov)}:{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 sv(w(e,i));if(!t){n(`Error loading custom widget file ${i}`);continue}const o=t.startsWith(nv)?t:`${nv}${t}`,s=av(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===iv.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 y(w(t,e.svgIcon),"utf-8");e.svgIcon=n}catch(t){n?.log&&n?.log(`Error loading svgIcon for variant ${e.id}: ${t}`)}return i},lv=async e=>{try{return await f(e,p.F_OK),!0}catch{return!1}};let uv=null,dv=null;const hv=()=>uv||ev,fv=()=>dv||tv;let pv=null;const gv={setGlobalUserId:e=>pv?.setGlobalUserId?.(e),captureError:e=>pv?.captureError?.(e),flushMessages:async()=>pv?.flushMessages?.(),isEnabled:()=>!!pv};var mv={...gv,setTracker:e=>{pv=e}};const yv=Rd("servicesManager"),vv={};let bv=null,wv=null,Sv=null,_v=!1;class Iv extends Error{code;originalError;constructor(e,t,n){super(e),this.code=t,this.originalError=n,this.name="ServiceError"}}const xv=async e=>{try{return await f(e),!0}catch{return!1}},kv=async e=>{if(!bv)throw new Error('IPC config not set, call "setHubIpcConfig" first.');let t;if(e.info.internal)if("linux"===$()){const n=process.env.XDG_STATE_HOME||b.join(C(),".local","state");t=b.join(n,"kemu-hub","service-logs",e.info.name);try{await h(t,{recursive:!0})}catch(n){yv(`Failed to create log directory ${t}, falling back to service path`),t=e.info.path}}else t=e.info.path;else t=b.join(e.info.path,"..");const n=e.logsEnabled?((e,t)=>{const n=$y.createLogger({level:"info",format:$y.format.combine($y.format.timestamp(),$y.format.errors({stack:!0}),$y.format.json()),defaultMeta:{service:e},transports:[new Jy({filename:b.join(t,"service-%DATE%.log"),datePattern:"YYYY-MM-DD",maxSize:"5m",maxFiles:"5d",auditFile:b.join(t,".service-log-audit.json")})]});return n.getLastLogs=async(n=100)=>{try{const r=b.join(t,".service-log-audit.json"),i=await d.readFile(r,"utf-8"),o=sd(i);if(!o)return console.warn(`Missing audit file for ${e}, skipping log retrieval.`),[];const s=async e=>(await d.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;mv.isEnabled()&&mv.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===Ju.Javascript){yv(`Spawning service ${e.info.name} with sessionId ${e.info.sessionId}`);const t=b.join(e.info.path,"processor.js"),i=b.join(e.info.path,"processor.mjs"),o=await xv(t)?t:i,s=[`--sessionId=${e.info.sessionId.toString()}`,`--ipcSpace=${bv.appSpace}`,`--ipcId=${bv?.id}`,`--recipePath=${bv.recipePath||""}`];if(e.info.internal&&s.push("--internal=true"),!Sv)throw new Error('Get secrets function not set, call "setGetSecretsFunction" first.');const a=await Sv({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 Iv(`Missing required environment variables: ${c.join(", ")}`,"MISSING_REQUIRED_SECRETS");return new Promise(((t,i)=>{if(!wv)throw new Error('Spawn function not set, call "setSpawnNodeFunction" first.');const c=wv({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),yv(`[${e.info.name}] - stdout: ${r}`))})),c.stderr.on("data",(t=>{const i=t.toString().trim();i&&(n?.error(i),r(new Error(i)),yv(`[${e.info.name}] - stderr: ${i}`))})),c.on("exit",(t=>{const r=`exited with code ${t}`;n?.info(r,{code:t}),yv(`[${e.info.name}] ${r}`)})),c.on("spawn",(()=>{const r=`spawned with PID ${c.pid}`;n?.info(r,{pid:c.pid}),yv(`[${e.info.name}] ${r}`),t(c)})),c.on("error",(t=>{n?.error(`[${e.info.name}] error`,t),yv(`[${e.info.name}] error: ${t}`),r(t),i(new Iv(`Error spawning service ${e.info.name}: ${t}`,"SPAWN_ERROR"))}))}))}throw`Unsupported processor type ${e.info.processor}`}catch(t){if(r(t),t instanceof Iv)throw t;throw`Error spawning service ${e.info.name}: ${t}`}},Ev=e=>e?.name?e?.version?e?.description?e?.processor?[Ju.Javascript,Ju.Executable,Ju.Python].includes(e?.processor)?null:"Invalid processor":"Missing processor":"Missing description":"Missing version":"Missing name",Cv=async(e,t)=>{const n=b.join(e,"manifest.json");if(!await xv(n)){const t=`Missing manifest for service ${e}. Aborting.`;return yv(t),{error:t}}const r=await y(n,"utf-8"),i=sd(r),o=Ev(i);if(!i||o){const t=`Invalid service manifest [${e}]: ${o}. Aborting.`;return yv(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 y(b.join(e,"widgetUI.js"))}catch(e){const t=`Error loading widgetUI file ${i.name}: ${e}`;return yv(t),{error:t}}})(),(async()=>{if(i.svgIcon){const t=await sv(b.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=b.join(e,t),{error:r,service:o}=await Cv(n);r?yv(`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 y(b.join(e,t.svgIcon),"utf-8");t.svgIcon=n}catch(e){yv(`Error loading svgIcon for variant ${t.id}: ${e}`)}})()]);const a=Qy(),c=t?.fixedSession||a;yv(`Loaded service ${i.name} with sessionId ${c}`);const l=await cv(i,e,{widgetUIContents:s});return $v(l),vv[c]={info:{...l,path:e,sessionId:c},status:"loaded",childProcess:null,logsEnabled:t?.logsEnabled},{service:vv[c]}},$v=e=>{e.widgetUIContents?e.uiContentChecksum=(e=>{const t=j("sha256");return t.update(e),t.digest("hex")})(e.widgetUIContents):e.uiContentChecksum=void 0},Nv=async e=>{try{return e.childProcess=await kv(e),e.status="started",e.errorMsg=void 0,e.errorCode=void 0,!0}catch(t){return yv(`Service [${e.info.name}] error: ${t}`),e.status="error",t instanceof Iv?(e.errorMsg=t.message,e.errorCode=t.code):(e.errorMsg="string"==typeof t?t:JSON.stringify(t),e.errorCode="UNKNOWN_ERROR"),!1}},Ov=e=>{const{path:t,...n}=e.info;return{...n}},Tv=()=>Object.values(vv).filter((e=>"running"===e.status)).map(Ov),Av=e=>{if(!e?.kill)return yv(`Failed to kill service ${e?.pid} because it is not a child process`),!1;let t=e.kill("SIGINT");return t||(yv(`Failed to send SIGINT to service ${e.pid} using SIGINT`),t=e.kill("SIGTERM"),t||(yv(`Failed to send SIGTERM to service ${e.pid} using SIGTERM`),t=e.kill("SIGKILL"),t||yv(`Failed to send SIGKILL to service ${e.pid} using SIGKILL`))),t},Pv=async e=>{const{serviceName:t,version:n,force:r,timeout:i=15e3}=e,o=Object.values(vv).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){yv(`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),yv(`Service ${t} process exited with code ${n} and signal ${i}`),e()})),o.childProcess.once("error",(n=>{clearTimeout(r),yv(`Service ${t} process error: ${n.message}`),e()}))}));Av(o.childProcess);try{await r,yv(`Service ${t} process successfully terminated`)}catch(e){yv(`Warning: ${e instanceof Error?e.message:"Unknown error"} while waiting for service ${t} to stop`)}}return o.status="stopped",yv(`Service ${t} stopped`),o},Mv=e=>e.info.internal?e.info.path:b.join(e.info.path,".."),Dv=e=>!!e.internal;var Rv={isOfficialKemuService:e=>e.name.startsWith("kemu.io"),loadServices:async(e,t)=>{if(!await lv(e))return void yv(`Failed to load services from "${e}". Directory does not exist.`);const n=(await g(e,{withFileTypes:!0})).filter((e=>e.isDirectory())).map((e=>e.name));yv(`Found ${n.length} services in "${e}"`);for(let r=0;r<n.length;r++){const i=n[r],o=b.join(e,i),{error:s,service:a}=await Cv(`${o}${t?.internalServices?"":"/dist"}`,{...t,logsEnabled:Array.isArray(t?.enableLogs)?t?.enableLogs.includes(i):t?.enableLogs});s&&yv(`Failed to load service ${o}. Please check logs`),a&&t?.internalServices&&(a.info.internal=!0)}},launchServices:async e=>{if(yv("Initializing services"),!bv)throw new Error('IPC config not set, call "setHubIpcConfig" first.');for(const t in vv){const n=vv[t];e.noSpawningList&&e.noSpawningList.includes(n.info.name)?yv(`Service ${n.info.name} is in the noSpawningList. Skipping.`):Nv(n)}yv("Services initialized")},setServiceStatus:(e,t)=>{const n=vv[e];return n?(n.status=t,!0):(yv(`Service with serviceId ${e} not found`),!1)},getActiveServices:Tv,getMatchingService:(e,t)=>{const n=Object.values(vv).filter((e=>"running"===e.status));for(const r of n)if(r.info.name===e){if(r.info.version===t)return r;if(pd(r.info.version,t,">="))return r}return null},getServiceBySessionId:e=>vv[e]||null,killAllServices:async(e=5e3)=>{const t=[];for(const n in vv){const r=vv[n];if(r.childProcess&&r.childProcess.pid)try{yv(`Killing service ${r.info.name} with PID ${r.childProcess.pid}`);const n=new Promise((t=>{const n=setTimeout((()=>{yv(`Timeout waiting for service ${r.info.name} to exit`),t()}),e);r.childProcess?.once("exit",(()=>{clearTimeout(n),yv(`Service ${r.info.name} exited successfully`),t()}))}));Av(r.childProcess),t.push(n)}catch(e){yv(`Error killing service ${r.info.name}: ${e}`)}}await Promise.allSettled(t),yv("All services killed")},addDevService:async(e,t,n)=>{const r={info:{...await cv(t,t.path),sessionId:e},status:n,startedAt:new Date,devMode:!0,childProcess:null};vv[e]=r,$v(vv[e].info)},setServiceManifest:(e,t,n)=>{const r=vv[e];if(!r)return yv(`Service with sessionId ${e} not found`),!1;const i=Ev(t);if(i)return yv(`Invalid manifest for service ${r.info.name}: ${i}`),!1;$v(t),r.info={...r.info,...t},n&&(r.status=n)},getMatchingDevService:(e,t,n)=>{const r=Object.values(vv).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:()=>Tv().filter((e=>e.internal)),getAllServices:()=>Object.values(vv),stopService:Pv,uninstallService:async(e,t)=>{yv(`Uninstalling service ${e} v${t}`);const n=await Pv({serviceName:e,version:t});if(!n)return!1;yv(`Service ${e} stopped. Removing from disk...`);const r=Mv(n),i=hv();return r.startsWith(i)?(await m(r,{recursive:!0,force:!0,maxRetries:3}),yv(`Service ${e} successfully removed from disk`),(e=>{vv[e],delete vv[e]})(n.info.sessionId),!0):(yv(`Service ${e} is not installed in the user services directory. Aborting.`),!1)},getAllServiceVersions:e=>Object.values(vv).filter((t=>t.info.name===e)),setHubIpcConfig:e=>{bv={...e}},setEnableServiceLogsConfig:e=>{_v=e},loadAndLaunch:async(e,t,n)=>{const r=_(e,t),{error:i,service:o}=await Cv(r,{logsEnabled:_v});if(i||!o)return{errorMsg:i};try{o.info.internal=!!n,o.childProcess=await kv(o),o.status="started"}catch(e){o.status="error",e instanceof Iv?(yv(`Service spawning error: ${e.message} (${e.code})`),o.errorMsg=e.message,o.errorCode=e.code):(yv(`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:Mv,setSpawnNodeFunction:e=>{wv=e},setGetSecretsFunction:e=>{Sv=e},restartService:async(e,t)=>{yv(`Restarting service ${e} v${t}`);const n=await Pv({serviceName:e,version:t,force:!0});return!!n&&Nv(n)},getFailedServices:()=>Object.values(vv).filter((e=>"error"===e.status)).map((e=>({...Ov(e),errorMsg:e.errorMsg||"",errorCode:e.errorCode,status:e.status}))),isInternalKemuService:Dv,isNotInternalKemuService:e=>!Dv(e),isNotDevService:e=>!e.devMode};class jv{constructor(){}appspace="app.";socketRoot="/tmp/";id=E.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=E.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 jv),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 Fv=bd((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={}})),Uv=bd((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 Bv{}class Wv{}const Gv=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 Bv,t=Wv){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 Bv}}())}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 Vv{constructor(){}on(e,t,n=!1){return Gv.string(e),Gv.function(t),Gv.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(Gv.string(e),e!=this.#e.toString()&&"*"!=e||(e=this.#e),!this.#t[e])return this;if("*"==t)return delete this.#t[e],this;Gv.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){Gv.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)=>{Gv.string(e),Gv.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 Hv=new Lv;class Yv extends Vv{constructor(e,t){super(),this.config=e,this.log=t,this.publish=super.emit,e.maxRetries&&(this.retriesRemaining=e.maxRetries),Hv=new Lv(this.config)}Client=Yv;queue=new Uv;socket=!1;connect=Kv;emit=zv;retriesRemaining=0;explicitlyDisconnected=!1}function zv(e,t){this.log("dispatching event to ",this.id,this.path," : ",e,",",t);let n=new Fv;n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):Hv.format(n),this.config.sync?this.queue.add(qv.bind(this,n)):this.socket.write(n)}function qv(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=x.readFileSync(e.config.tls.private)),e.config.tls.public&&(e.config.tls.cert=x.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(x.readFileSync(e.config.tls.trustedConnections[t]))}Object.assign(e.config.tls,t),e.socket=F.connect(e.config.tls)}else e.log("Connecting client via TCP to",t),e.socket=L.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=L.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)!=Hv.delimiter||-1==t.indexOf(Hv.delimiter))return void e.log("Messages are large, You may want to consider smaller messages.");this.ipcBuffer="";const n=Hv.parse(t),r=n.length;for(let t=0;t<r;t++){let r=new Fv;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 Jv=new Lv;class Zv extends Vv{constructor(e,t,n,r){super(),this.config=t,this.path=e,this.port=r,this.log=n,this.publish=super.emit,Jv=new Lv(this.config),this.on("close",eb.bind(this))}udp4=!1;udp6=!1;server=!1;sockets=[];emit=Xv;broadcast=Qv;onStart(e){this.publish("start",e)}stop(){this.server.close()}start(){this.path?this.config.unlink?x.unlink(this.path,ib.bind(this)):ib.bind(this)():this.log("Socket Server Path not specified, refusing to start")}}function Xv(e,t,n){this.log("dispatching event to socket"," : ",t,n);let r=new Fv;if(r.type=t,r.data=n,this.config.rawBuffer?(this.log(this.config.encoding),r=Buffer.from(t,this.config.encoding)):r=Jv.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 Qv(e,t){this.log("broadcasting event to all known sockets listening to ",this.path," : ",this.port?this.port:"",e,t);let n=new Fv;if(n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):Jv.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 eb(){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 tb(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)==Jv.delimiter&&-1!=t.indexOf(Jv.delimiter))for(r.ipcBuffer="",t=Jv.parse(t);t.length>0;){let e=new Fv;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 nb(e){this.publish("close",e)}function rb(e){this.sockets.push(e),e.setEncoding&&e.setEncoding(this.config.encoding),this.log("## socket connection to server detected ##"),e.on("close",nb.bind(this)),e.on("error",function(e){this.log("server socket error",e),this.publish("error",e)}.bind(this)),e.on("data",tb.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 ib(){return this.log("starting server on ",this.path,this.port?`:${this.port}`:""),this.udp4||this.udp6?(this.server=U.createSocket(this.udp4?"udp4":"udp6"),this.server.write=sb.bind(this),this.server.on("listening",function(){rb.bind(this)(this.server)}.bind(this))):(this.log("starting TLS server",this.config.tls),this.config.tls?ob.bind(this)():this.server=L.createServer(rb.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 ob(){if(this.log("starting TLS server",this.config.tls),this.config.tls.private?this.config.tls.key=x.readFileSync(this.config.tls.private):this.config.tls.key=x.readFileSync(`${__dirname}/../local-node-ipc-certs/private/server.key`),this.config.tls.public?this.config.tls.cert=x.readFileSync(this.config.tls.public):this.config.tls.cert=x.readFileSync(`${__dirname}/../local-node-ipc-certs/server.pub`),this.config.tls.dhparam&&(this.config.tls.dhparam=x.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(x.readFileSync(this.config.tls.trustedConnections[e]))}this.server=F.createServer(this.config.tls,rb.bind(this))}function sb(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 ab{constructor(){}config=new jv;of={};server=!1;get connectTo(){return fb}get connectToNet(){return pb}get disconnect(){return lb}get serve(){return ub}get serveNet(){return hb}get log(){return cb}set connectTo(e){return fb}set connectToNet(e){return pb}set disconnect(e){return lb}set serve(e){return ub}set serveNet(e){return hb}set log(e){return cb}}function cb(...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 lb(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 ub(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=db),this.server=new Zv(e,this.config,cb),this.server.on("start",t)}function db(){}function hb(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=db),this.server=new Zv(e,this.config,cb,t),n&&(this.server[n]=!0,"udp4"===n&&"::1"===e&&(this.server.path="127.0.0.1")),this.server.on("start",r)}function fb(e,t,n){if("function"==typeof t&&(n=t,t=!1),n||(n=db),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 pb(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=db),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 gb=new class extends ab{constructor(){super()}IPC=ab};const mb=Object.values({protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8}).reduce(((e,t)=>e+t),0),yb=e=>{try{return JSON.parse(e)}catch(e){return null}},vb="undefined"!=typeof window,bb={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},wb={protocolPrefix:4,txtLength:4},Sb=Object.values(bb).reduce(((e,t)=>e+t),0),_b=Object.values(wb).reduce(((e,t)=>e+t),0),Ib=["width","height","colorSpace"],xb=(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)||Ib.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},kb=(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},Eb=(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&&kb(e,o,l)}return e},Cb=e=>Dd(e),$b="KMSG",Nb="KCMD",Ob=Cb("klProtocol");var Tb={encode:(e,t,n)=>{const r={json:e.json},i=xb(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=bb.protocolPrefix+bb.protocolVersion+bb.jsonLength+bb.binaryLength+bb.fromServiceId+bb.toServiceId+bb.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write($b,f),f+=bb.protocolPrefix,d.writeUInt8(1,f),f+=bb.protocolVersion,d.writeUInt32LE(l,f),f+=bb.jsonLength,d.writeUInt32LE(s,f),f+=bb.binaryLength,d.writeUInt32LE(t,f),f+=bb.fromServiceId,d.writeUInt32LE(n,f),f+=bb.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=bb.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,bb.protocolPrefix);if(t+=bb.protocolPrefix,n!==$b)return null;if(e.byteLength<Sb)return Ob(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=bb.protocolVersion;const i=e.readUInt32LE(t);t+=bb.jsonLength;const o=e.readUInt32LE(t);t+=bb.binaryLength;const s=e.readUInt32LE(t);t+=bb.fromServiceId;const a=e.readUInt32LE(t);t+=bb.toServiceId;const c=e.readBigInt64LE(t);t+=bb.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,Sb);let h=null;return e.byteLength-Sb-i-o>0&&(h=e.subarray(Sb+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=yb(n);if(!i?.json)return Ob("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&Eb(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=Sb+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<Sb)return Ob("Invalid Header Size"),e;let n=0;return n+=bb.protocolPrefix,n+=bb.protocolVersion,n+=bb.jsonLength,n+=bb.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=bb.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=_b+r,o=Buffer.alloc(i);return o.write(Nb,t),t+=wb.protocolPrefix,o.writeUint32LE(r,t),t+=wb.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<_b)return{command:null};const n=e.toString("utf-8",t,wb.protocolPrefix);if(t+=wb.protocolPrefix,n!==Nb)return{command:null};const r=e.readUInt32LE(t);t+=wb.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-_b-r;let s=null;o>0&&(s=e.subarray(_b+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const Ab="KMSG",Pb="KCMD",Mb=Cb("klProtocol"),Db=new TextEncoder;var Rb={encode:(e,t,n)=>{const r={json:e.json},i=xb(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(bb.protocolPrefix+bb.protocolVersion+bb.jsonLength+bb.binaryLength+bb.fromServiceId+bb.toServiceId+bb.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++]=Ab.charCodeAt(e);return d.setUint8(p,1),p+=bb.protocolVersion,d.setUint32(p,l,!0),p+=bb.jsonLength,d.setUint32(p,s,!0),p+=bb.binaryLength,d.setUint32(p,t,!0),p+=bb.fromServiceId,d.setUint32(p,n,!0),p+=bb.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=bb.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<bb.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Ab)return null;if(e.byteLength<Sb)return Mb.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=bb.protocolVersion;const o=t.getUint32(n,!0);n+=bb.jsonLength;const s=t.getUint32(n,!0);n+=bb.binaryLength;const a=t.getUint32(n,!0);n+=bb.fromServiceId;const c=t.getUint32(n,!0);n+=bb.toServiceId;const l=t.getBigInt64(n,!0);n+=bb.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,Sb);let f=null;return e.byteLength-Sb-o-s>0&&(f=new Uint8Array(e,Sb+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=yb(o);if(!a?.json)return Mb.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&Eb(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=Sb+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<Sb)return Mb("Invalid Header Size"),e;let n=0;n+=bb.protocolPrefix,n+=bb.protocolVersion,n+=bb.jsonLength,n+=bb.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=bb.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(_b+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=Pb.charCodeAt(e);return o.setUint32(t,r,!0),t+=wb.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<_b)return{command:null};let r="";for(let e=0;e<wb.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Pb)return{command:null};const i=t.getUint32(n,!0);n+=wb.txtLength;const o=e.byteLength-_b-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-_b)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(_b+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};const jb=Cb("klTransmissionManager"),Lb=()=>{const e=(t,n,r,i)=>{let o=n,s=null;const a=t instanceof ArrayBuffer;if(jb(`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=Rb.decodeHeader(c)):(c=o?.partialHeaderData?Buffer.concat([o.partialHeaderData,t]):t,s=Tb.decodeHeader(c)),!s){const{command:t,missing:o,remainingData:s}=a?Rb.decodeCommand(c):Tb.decodeCommand(c);return t?i({command:t,complete:!0,rawMessage:c}):jb(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?(jb(`${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 jb(`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;jb(`Received ${o.header.totalBytesReceived} of ${o.header.totalBytesExpected} expected in ${t} ms, elapsed since first package: ${n}ms`);const s=a?Rb.decodeFullKlMessage(o.header):Tb.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 jb(`${u.byteLength} bytes remaining after processing message with ${c} bytes of data. Re-analyzing...`),e(u,null,r,i)}};return e};gb.config={...gb.config,id:"widgets",retry:1500,silent:!0,rawBuffer:!0,appspace:"kemu.",encoding:"hex"};const Fb={info:Rd("ipcServer:info"),data:Rd("ipcServer:data")};let Ub,Bb,Wb,Gb,Vb={};const Hb=Lb(),Yb=e=>{Vb[e]&&(Fb.info(`Client disconnected [${e}]`),delete Vb[e],Bb&&Bb(e))};var zb=(e,t)=>{const n=Vb[e];if(!n)return Fb.info(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=mb)return Fb.info("Message is too long to be a command. Use sendMessage instead."),!1;const r=Tb.encodeCommand(t);return n.socket.write(r),!0},qb=(e,t)=>{const n=Vb[e];return!!n&&(Fb.info(`Renaming socket id [${e}] to [${t}]`),delete Vb[e],n.socket.id=t,Vb[t]=n,n.socket.removeListener("close",n.disconnectHandler),n.disconnectHandler=()=>Yb(t),n.socket.on("close",n.disconnectHandler),!0)};let Kb=Tb;vb&&(Kb=Rb);var Jb,Zb=Kb;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}(Jb||(Jb={}));let Xb=Math.ceil(Date.now()/1e3);var Qb={exports:{}};const ew=["nodebuffer","arraybuffer","fragments"],tw="undefined"!=typeof Blob;tw&&ew.push("blob");var nw={BINARY_TYPES:ew,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:tw,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const{EMPTY_BUFFER:rw}=nw,iw=Buffer[Symbol.species];function ow(e,t,n,r,i){for(let o=0;o<i;o++)n[r+o]=e[o]^t[3&o]}function sw(e,t){for(let n=0;n<e.length;n++)e[n]^=t[3&n]}if(Qb.exports={concat:function(e,t){if(0===e.length)return rw;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 iw(n.buffer,n.byteOffset,r):n},mask:ow,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 iw(t):ArrayBuffer.isView(t)?n=new iw(t.buffer,t.byteOffset,t.byteLength):(n=Buffer.from(t),e.readOnly=!1),n},unmask:sw},!process.env.WS_NO_BUFFER_UTIL)try{const e=require("bufferutil");Qb.exports.mask=function(t,n,r,i,o){o<48?ow(t,n,r,i,o):e.mask(t,n,r,i,o)},Qb.exports.unmask=function(t,n){t.length<32?sw(t,n):e.unmask(t,n)}}catch(b){}var aw=Qb.exports;const cw=Symbol("kDone"),lw=Symbol("kRun"),uw=A,dw=aw,hw=class{constructor(e){this[cw]=()=>{this.pending--,this[lw]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[lw]()}[lw](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[cw])}}},{kStatusCode:fw}=nw,pw=Buffer[Symbol.species],gw=Buffer.from([0,0,255,255]),mw=Symbol("permessage-deflate"),yw=Symbol("total-length"),vw=Symbol("callback"),bw=Symbol("buffers"),ww=Symbol("error");let Sw;var _w=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,!Sw){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;Sw=new hw(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[vw];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){Sw.add((r=>{this._decompress(e,t,((e,t)=>{r(),n(e,t)}))}))}compress(e,t,n){Sw.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]?uw.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=uw.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[mw]=this,this._inflate[yw]=0,this._inflate[bw]=[],this._inflate.on("error",kw),this._inflate.on("data",xw)}this._inflate[vw]=n,this._inflate.write(e),t&&this._inflate.write(gw),this._inflate.flush((()=>{const e=this._inflate[ww];if(e)return this._inflate.close(),this._inflate=null,void n(e);const i=dw.concat(this._inflate[bw],this._inflate[yw]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[yw]=0,this._inflate[bw]=[],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]?uw.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=uw.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[yw]=0,this._deflate[bw]=[],this._deflate.on("data",Iw)}this._deflate[vw]=n,this._deflate.write(e),this._deflate.flush(uw.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=dw.concat(this._deflate[bw],this._deflate[yw]);t&&(e=new pw(e.buffer,e.byteOffset,e.length-4)),this._deflate[vw]=null,this._deflate[yw]=0,this._deflate[bw]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),n(null,e)}))}};function Iw(e){this[bw].push(e),this[yw]+=e.length}function xw(e){this[yw]+=e.length,this[mw]._maxPayload<1||this[yw]<=this[mw]._maxPayload?this[bw].push(e):(this[ww]=new RangeError("Max payload size exceeded"),this[ww].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[ww][fw]=1009,this.removeListener("data",xw),this.reset())}function kw(e){this[mw]._inflate=null,e[fw]=1007,this[vw](e)}var Ew={exports:{}};const{isUtf8:Cw}=O,{hasBlob:$w}=nw;function Nw(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(Ew.exports={isBlob:function(e){return $w&&"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:Nw,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]},Cw)Ew.exports.isValidUTF8=function(e){return e.length<24?Nw(e):Cw(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const e=require("utf-8-validate");Ew.exports.isValidUTF8=function(t){return t.length<32?Nw(t):e(t)}}catch(b){}var Ow=Ew.exports;const{Writable:Tw}=N,Aw=_w,{BINARY_TYPES:Pw,EMPTY_BUFFER:Mw,kStatusCode:Dw,kWebSocket:Rw}=nw,{concat:jw,toArrayBuffer:Lw,unmask:Fw}=aw,{isValidStatusCode:Uw,isValidUTF8:Bw}=Ow,Ww=Buffer[Symbol.species];const{randomFillSync:Gw}=R,Vw=_w,{EMPTY_BUFFER:Hw,kWebSocket:Yw,NOOP:zw}=nw,{isBlob:qw,isValidStatusCode:Kw}=Ow,{mask:Jw,toBuffer:Zw}=aw,Xw=Symbol("kByteLength"),Qw=Buffer.alloc(4),eS=8192;let tS,nS=eS;function rS(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 iS(e,t,n){rS(e,t,n),e.onerror(t)}const{kForOnEventAttribute:oS,kListener:sS}=nw,aS=Symbol("kCode"),cS=Symbol("kData"),lS=Symbol("kError"),uS=Symbol("kMessage"),dS=Symbol("kReason"),hS=Symbol("kTarget"),fS=Symbol("kType"),pS=Symbol("kWasClean");class gS{constructor(e){this[hS]=null,this[fS]=e}get target(){return this[hS]}get type(){return this[fS]}}Object.defineProperty(gS.prototype,"target",{enumerable:!0}),Object.defineProperty(gS.prototype,"type",{enumerable:!0});class mS extends gS{constructor(e,t={}){super(e),this[aS]=void 0===t.code?0:t.code,this[dS]=void 0===t.reason?"":t.reason,this[pS]=void 0!==t.wasClean&&t.wasClean}get code(){return this[aS]}get reason(){return this[dS]}get wasClean(){return this[pS]}}Object.defineProperty(mS.prototype,"code",{enumerable:!0}),Object.defineProperty(mS.prototype,"reason",{enumerable:!0}),Object.defineProperty(mS.prototype,"wasClean",{enumerable:!0});class yS extends gS{constructor(e,t={}){super(e),this[lS]=void 0===t.error?null:t.error,this[uS]=void 0===t.message?"":t.message}get error(){return this[lS]}get message(){return this[uS]}}Object.defineProperty(yS.prototype,"error",{enumerable:!0}),Object.defineProperty(yS.prototype,"message",{enumerable:!0});class vS extends gS{constructor(e,t={}){super(e),this[cS]=void 0===t.data?null:t.data}get data(){return this[cS]}}Object.defineProperty(vS.prototype,"data",{enumerable:!0});const bS={addEventListener(e,t,n={}){for(const r of this.listeners(e))if(!n[oS]&&r[sS]===t&&!r[oS])return;let r;if("message"===e)r=function(e,n){const r=new vS("message",{data:n?e:e.toString()});r[hS]=this,SS(t,this,r)};else if("close"===e)r=function(e,n){const r=new mS("close",{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[hS]=this,SS(t,this,r)};else if("error"===e)r=function(e){const n=new yS("error",{error:e,message:e.message});n[hS]=this,SS(t,this,n)};else{if("open"!==e)return;r=function(){const e=new gS("open");e[hS]=this,SS(t,this,e)}}r[oS]=!!n[oS],r[sS]=t,n.once?this.once(e,r):this.on(e,r)},removeEventListener(e,t){for(const n of this.listeners(e))if(n[sS]===t&&!n[oS]){this.removeListener(e,n);break}}};var wS={CloseEvent:mS,ErrorEvent:yS,Event:gS,EventTarget:bS,MessageEvent:vS};function SS(e,t,n){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}const{tokenChars:_S}=Ow;function IS(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}var xS={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===_S[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?(IS(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===_S[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),IS(i,e.slice(c,u),!0),44===l&&(IS(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!==_S[l])throw new SyntaxError(`Unexpected character at index ${d}`);-1===c?c=d:o||(o=!0),s=!1}else if(a)if(1===_S[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===_S[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),IS(i,r,s),44===l&&(IS(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?IS(t,h,i):(void 0===r?IS(i,h,!0):IS(i,r,o?h.replace(/\\/g,""):h),IS(t,n,i)),t}};const kS=T,ES=D,CS=M,$S=L,NS=F,{randomBytes:OS,createHash:TS}=R,{URL:AS}=B,PS=_w,MS=class extends Tw{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||Pw[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Rw]=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 Ww(t.buffer,t.byteOffset+e,t.length-e),new Ww(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 Ww(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[Aw.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=Mw;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]&&Fw(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[Aw.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?jw(n,t):"arraybuffer"===this._binaryType?Lw(jw(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=jw(n,t);if(!this._skipUTF8Validation&&!Bw(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,Mw),this.end();else{const n=e.readUInt16BE(0);if(!Uw(n)){const e=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");return void t(e)}const r=new Ww(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Bw(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=zw,this[Yw]=void 0}static frame(e,t){let n,r,i=!1,o=2,s=!1;t.mask&&(n=t.maskBuffer||Qw,t.generateMask?t.generateMask(n):(nS===eS&&(void 0===tS&&(tS=Buffer.alloc(eS)),Gw(tS,0,eS),nS=0),n[0]=tS[nS++],n[1]=tS[nS++],n[2]=tS[nS++],n[3]=tS[nS++]),s=!(n[0]|n[1]|n[2]|n[3]),o=6),"string"==typeof e?r=t.mask&&!s||void 0===t[Xw]?(e=Buffer.from(e)).length:t[Xw]:(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?(Jw(e,n,c,o,r),[c]):(Jw(e,n,e,0,r),[c,e])):[c,e]}close(t,n,r,i){let o;if(void 0===t)o=Hw;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={[Xw]: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):qw(t)?(i=t.size,o=!1):(i=(t=Zw(t)).length,o=Zw.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[Xw]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};qw(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):qw(t)?(i=t.size,o=!1):(i=(t=Zw(t)).length,o=Zw.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[Xw]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};qw(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[Vw.extensionName];let i,o,s=t.binary?2:1,a=t.compress;"string"==typeof e?(i=Buffer.byteLength(e),o=!1):qw(e)?(i=e.size,o=!1):(i=(e=Zw(e)).length,o=Zw.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={[Xw]:i,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:o,rsv1:a};qw(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[Xw],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(rS,this,e,i)}this._bufferedBytes-=r[Xw];const o=Zw(t);n?this.dispatch(o,n,r,i):(this._state=0,this.sendFrame(e.frame(o,r),i),this.dequeue())})).catch((e=>{process.nextTick(iS,this,e,i)}))}dispatch(t,n,r,i){if(!n)return void this.sendFrame(e.frame(t,r),i);const o=this._extensions[Vw.extensionName];this._bufferedBytes+=r[Xw],this._state=1,o.compress(t,r.fin,((t,n)=>{this._socket.destroyed?rS(this,new Error("The socket was closed while data was being compressed"),i):(this._bufferedBytes-=r[Xw],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][Xw],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Xw],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:RS}=Ow,{BINARY_TYPES:jS,EMPTY_BUFFER:LS,GUID:FS,kForOnEventAttribute:US,kListener:BS,kStatusCode:WS,kWebSocket:GS,NOOP:VS}=nw,{EventTarget:{addEventListener:HS,removeEventListener:YS}}=wS,{format:zS,parse:qS}=xS,{toBuffer:KS}=aw,JS=3e4,ZS=Symbol("kAborted"),XS=[8,13],QS=["CONNECTING","OPEN","CLOSING","CLOSED"],e_=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;let t_=class e extends kS{constructor(t,n,r){super(),this._binaryType=jS[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]),r_(this,t,n,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){jS.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 MS({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[GS]=this,o[GS]=this,t[GS]=this,i.on("conclude",l_),i.on("drain",u_),i.on("error",d_),i.on("message",f_),i.on("ping",p_),i.on("pong",g_),o.onerror=y_,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on("close",b_),t.on("data",w_),t.on("end",S_),t.on("error",__),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[PS.extensionName]&&this._extensions[PS.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())})),v_(this)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";a_(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)):c_(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)):c_(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 c_(this,t,r);const i={binary:"string"!=typeof t,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[PS.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";a_(this,this._req,e)}}};Object.defineProperty(t_,"CONNECTING",{enumerable:!0,value:QS.indexOf("CONNECTING")}),Object.defineProperty(t_.prototype,"CONNECTING",{enumerable:!0,value:QS.indexOf("CONNECTING")}),Object.defineProperty(t_,"OPEN",{enumerable:!0,value:QS.indexOf("OPEN")}),Object.defineProperty(t_.prototype,"OPEN",{enumerable:!0,value:QS.indexOf("OPEN")}),Object.defineProperty(t_,"CLOSING",{enumerable:!0,value:QS.indexOf("CLOSING")}),Object.defineProperty(t_.prototype,"CLOSING",{enumerable:!0,value:QS.indexOf("CLOSING")}),Object.defineProperty(t_,"CLOSED",{enumerable:!0,value:QS.indexOf("CLOSED")}),Object.defineProperty(t_.prototype,"CLOSED",{enumerable:!0,value:QS.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(t_.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(t_.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[US])return t[BS];return null},set(t){for(const t of this.listeners(e))if(t[US]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[US]:!0})}})})),t_.prototype.addEventListener=HS,t_.prototype.removeEventListener=YS;var n_=t_;function r_(e,t,n,r){const i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:XS[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,!XS.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${XS.join(", ")})`);let o;if(t instanceof AS)o=t;else try{o=new AS(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 i_(e,t)}const l=s?443:80,u=OS(16).toString("base64"),d=s?ES.request:CS.request,h=new Set;let f,p;if(i.createConnection=i.createConnection||(s?s_:o_),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 PS(!0!==i.perMessageDeflate?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=zS({[PS.extensionName]:f.offer()})),n.length){for(const e of n){if("string"!=typeof e||!e_.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",(()=>{a_(e,p,"Opening handshake has timed out")})),p.on("error",(t=>{null===p||p[ZS]||(p=e._req=null,i_(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 a_(e,p,"Maximum redirects exceeded");let o;p.abort();try{o=new AS(s,t)}catch(t){const n=new SyntaxError(`Invalid URL: ${s}`);return void i_(e,n)}r_(e,o,n,r)}else e.emit("unexpected-response",p,o)||a_(e,p,`Unexpected server response: ${o.statusCode}`)})),p.on("upgrade",((t,n,r)=>{if(e.emit("upgrade",t),e.readyState!==t_.CONNECTING)return;p=e._req=null;const o=t.headers.upgrade;if(void 0===o||"websocket"!==o.toLowerCase())return void a_(e,n,"Invalid Upgrade header");const s=TS("sha1").update(u+FS).digest("base64");if(t.headers["sec-websocket-accept"]!==s)return void a_(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 a_(e,n,c);a&&(e._protocol=a);const l=t.headers["sec-websocket-extensions"];if(void 0!==l){if(!f)return void a_(e,n,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");let r;try{r=qS(l)}catch(t){return void a_(e,n,"Invalid Sec-WebSocket-Extensions header")}const i=Object.keys(r);if(1!==i.length||i[0]!==PS.extensionName)return void a_(e,n,"Server indicated an extension that was not requested");try{f.accept(r[PS.extensionName])}catch(t){return void a_(e,n,"Invalid Sec-WebSocket-Extensions header")}e._extensions[PS.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 i_(e,t){e._readyState=t_.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function o_(e){return e.path=e.socketPath,$S.connect(e)}function s_(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=$S.isIP(e.host)?"":e.host),NS.connect(e)}function a_(e,t,n){e._readyState=t_.CLOSING;const r=new Error(n);Error.captureStackTrace(r,a_),t.setHeader?(t[ZS]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(i_,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function c_(e,t,n){if(t){const n=RS(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} (${QS[e.readyState]})`);process.nextTick(n,t)}}function l_(e,t){const n=this[GS];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,void 0!==n._socket[GS]&&(n._socket.removeListener("data",w_),process.nextTick(m_,n._socket),1005===e?n.close():n.close(e,t))}function u_(){const e=this[GS];e.isPaused||e._socket.resume()}function d_(e){const t=this[GS];void 0!==t._socket[GS]&&(t._socket.removeListener("data",w_),process.nextTick(m_,t._socket),t.close(e[WS])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function h_(){this[GS].emitClose()}function f_(e,t){this[GS].emit("message",e,t)}function p_(e){const t=this[GS];t._autoPong&&t.pong(e,!this._isServer,VS),t.emit("ping",e)}function g_(e){this[GS].emit("pong",e)}function m_(e){e.resume()}function y_(e){const t=this[GS];t.readyState!==t_.CLOSED&&(t.readyState===t_.OPEN&&(t._readyState=t_.CLOSING,v_(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function v_(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),JS)}function b_(){const e=this[GS];let t;this.removeListener("close",b_),this.removeListener("data",w_),this.removeListener("end",S_),e._readyState=t_.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[GS]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",h_),e._receiver.on("finish",h_))}function w_(e){this[GS]._receiver.write(e)||this.pause()}function S_(){const e=this[GS];e._readyState=t_.CLOSING,e._receiver.end(),this.end()}function __(){const e=this[GS];this.removeListener("error",__),this.on("error",VS),e&&(e._readyState=t_.CLOSING,this.destroy())}const{tokenChars:I_}=Ow;var x_={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===I_[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 k_=T,E_=M,{createHash:C_}=R,$_=xS,N_=_w,O_=x_,T_=n_,{GUID:A_,kWebSocket:P_}=nw,M_=/^[+/0-9A-Za-z]{22}==$/;function D_(e){e._state=2,e.emit("close")}function R_(){this.destroy()}function j_(e,t,n,r){n=n||E_.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} ${E_.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 j_(n,r,i)}var F_=bd(class extends k_{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:T_,...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=E_.createServer(((e,t)=>{const n=E_.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",R_);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||!M_.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 j_(t,400);const a=e.headers["sec-websocket-protocol"];let c=new Set;if(void 0!==a)try{c=O_.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 N_(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const e=$_.parse(l);e[N_.extensionName]&&(r.accept(e[N_.extensionName]),u[N_.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 j_(t,s||401,a,l);this.completeUpgrade(u,i,c,e,t,n,r)}));if(!this.options.verifyClient(o))return j_(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[P_])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>0)return j_(i,503);const a=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${C_("sha1").update(t+A_).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[N_.extensionName]){const t=e[N_.extensionName].params,n=$_.format({[N_.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",R_),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 U_=Rd("websocketServer"),B_={},W_=Lb();let G_,V_,H_,Y_,z_;const q_=["https://app.kemu.io","https://dev.kemu.io","https://stage.kemu.io","https://local.kemu.io:3003"],K_=e=>{const t=B_[e];t&&t.socket.close()};var J_=e=>{z_=new F_({port:e,maxPayload:1048576e3,verifyClient:(e,t)=>{const n=e.req.headers.origin;n&&q_.includes(n)?t(!0):t(!1,401,"Origin not allowed")}}),z_.on("connection",(e=>{const t=Qy();U_(`New client connected. Registered as "${t}"`),e.id=t,B_[t]={socket:e,activeMessage:null},G_&&G_(t),e.on("message",(t=>{if(t instanceof Buffer){const n=B_[e.id];W_(t,n.activeMessage,(e=>n.activeMessage=e),(t=>{if(!t.complete)return;const r=t=>{e.send(t),U_(`Writing ${t.byteLength} bytes to socket [${n.socket.id}]: ${t.toString()}`)},i=()=>{K_(n.socket.id)};if(t.command)return U_(`Received command from client [${n.socket.id}]: ${t.command}`),void(H_&&H_(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",(()=>{U_(`Client disconnected: ${e.id}`),V_&&V_(e.id),delete B_[e.id]})),e.on("error",(()=>{U_(`Error on client connection: ${e.id}`)}))})),console.log(`WebSocket server is running on port ${e}`)},Z_=e=>{G_=e},X_=e=>{V_=e},Q_=e=>{H_=e},eI=(e,t)=>{const n=B_[e];if(!n)return U_(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=mb)return U_("Message is too long to be a command. Use sendMessage instead."),!1;const r=Tb.encodeCommand(t);return n.socket.send(r),!0},tI=e=>Y_=e,nI=K_;const rI=Rd("stopService"),iI=async e=>{const t=e.args[0];if(!t)return e.reply({error:"No service name provided"});const n=Rv.getAllServiceVersions(t);rI(`Stopping ${n.length} services with name: ${t}`);for(const e of n)await Rv.stopService({serviceName:e.info.name,version:e.info.version});const r=n.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[r]})},oI=Rd("removeService"),sI=async e=>{const t=e.args[0],n=e.args[1];if(!t)return e.reply({error:"No service name provided"});let r=Rv.getAllServiceVersions(t);n&&(r=r.filter((e=>e.info.version===n))),oI(`Removing ${r.length} service(s) with name: ${t}`);for(const e of r)await Rv.uninstallService(e.info.name,e.info.version);const i=r.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[i]})},aI=Rd("launchService"),cI=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=hv();aI(`Loading service ${t}@${n} from ${i}`);const{errorMsg:o,service:s,errorCode:a}=await Rv.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?(aI(`Service ${t}@${n} loaded and started`),e.reply({success:[]})):(aI(`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"}):(aI("Retrying in 1 second..."),void setTimeout(u,1e3)))};u()}catch(r){return aI(`Error loading service ${t}@${n}: ${r?.message||r}`),e.reply({error:r?.message||"There was an error loading the service"})}},lI=Rd("getMatchingServices"),uI=async e=>{const t=e.args[0],n=[],r=[];lI(`Checking for matching services: ${t.map((e=>e.name)).join(", ")}`);for(const{name:e,version:i}of t){const t=Rv.getMatchingService(e,i);t?n.push({name:e,version:i,installationPath:Rv.getServiceRootDirectory(t)}):r.push({name:e,version:i})}lI(`Found ${n.length} available services and ${r.length} missing services.`),e.reply({success:[{available:n,missing:r}]})},dI=Rd("getSecretsValues");let hI;var fI=async e=>{const t=e.args[0].services;if(!hI)throw new Error("getSecretValuesFn is not set. Please call setGetSecretValuesFunction before using this function.");dI(`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 hI({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})},pI=e=>{hI=e};const gI=Rd("getMappedSecrets");let mI;var yI=async e=>{const t=e.args[0].services;gI(`Getting mapped secrets for services: ${t.map((e=>`${e.name}@${e.version}`)).join(", ")}`);const n=await mI(t),r=[{services:t.map((e=>({name:e.name,version:e.version,secrets:n[e.name]||[]})))}];e.reply({success:r})};const vI=Rd("getServiceContents"),bI=({reply:e,args:t})=>{const[n]=t;vI(`Received GetServiceContents request for service ${n.serviceName} v${n.version}`);const r=Rv.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}]});vI(`Service ${n.serviceName} v${n.version} not found`),e({error:`Service ${n.serviceName} v${n.version} not found`})};let wI={globalApiKey:void 0,environment:"production"};const SI=()=>({...wI}),_I=Rd("apis"),II=()=>{const e=SI();if(!e.serviceUrl)throw new Error("Unknown server URL. Please call `edgeConfig.setEdgeConfig` before using the APIs.");return e.serviceUrl},xI=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}}},kI=async e=>{const{data:t,error:n}=await xI(`${II()}/v1/organization/validate/apiKey`,{apiKey:e},{"Content-Type":"application/json"});return n?(_I(`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"}},EI={},CI={},$I=e=>{const t=EI[e],n=Date.now()-(t?.lastCheckedAt.getTime()??0);return t&&n<3e5?t.features:null};function NI(e){return"number"==typeof e||!!/^0x[0-9a-f]+$/i.test(e)||/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function OI(e,t){return"constructor"===t&&"function"==typeof e[t]||"__proto__"===t}var TI=bd((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(OI(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];OI(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]&&NI(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._||!NI(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}));Cb("ipcClient"),Cb("kemuWidgetService"),TI(process.argv.slice(2));const AI=Rd("activeClients");let PI,MI={},DI={};const RI=(e,t)=>`${e}_${t}`,jI=e=>MI[e]||null,LI=(e,t)=>{const n=RI(e,t);return DI[n]||[]},FI=()=>{for(const e in MI){const t=MI[e];if(t?.transport===ed.WS){const e=Tb.encodeCommand(Zu.ServicesListChanged);t.send(e)}}},UI=async e=>{const t=[],{serviceSessionId:n,transport:r,send:i,terminateFn:o,extraInfo:s,isDevClient:a}=e;if(r===ed.WS&&!s.recipe?.poolId)return c=`Bad request. Recipe pool id is required. SessionId: ${n}`,console.warn(c),void(o&&o());var c;MI[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=RI(e.serviceName,e.version);return DI[r]=DI[r]||[],DI[r].some((e=>e.serviceId===n))||DI[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=RI(e.serviceName,e.version),o=DI[i]?.findIndex((e=>e.serviceId===n));if(-1!==o&&(DI[i]?.splice(o,1),!DI[i]?.length)){const t=Rv.getMatchingService(e.serviceName,e.version);if(t?.info.eventEmitter&&"running"===t.status){const e=jI(t.info.sessionId);e?.extraInfo.ipcSocketId&&zb(e?.extraInfo.ipcSocketId,Zu.BroadcastEnd)}}}},removeAllSubscriptions:()=>{for(const e of t){const t=RI(e.targetService.serviceName,e.targetService.version),r=DI[t]?.findIndex((e=>e.serviceId===n));-1!==r&&DI[t]?.splice(r,1)}t.length=0}},r===ed.IPC&&(FI(),BI(n))},BI=e=>{const t=Rv.getServiceBySessionId(e);if(t?.info.eventEmitter&&LI(t.info.name,t.info.version).length){const t=jI(e);t?.extraInfo.ipcSocketId&&zb(t?.extraInfo.ipcSocketId,Zu.BroadcastStart)}},WI=e=>{const t=MI[e];var n;t?.transport===ed.IPC?FI():(t?.removeAllSubscriptions(),(()=>{const e=Object.values(MI);for(const t of e)if(t.transport===ed.IPC){const e=t.extraInfo.ipcSocketId,n=Rv.getServiceBySessionId(t.serviceSessionId);n?.info.eventEmitter&&(LI(n.info.name,n.info.version).length||e&&zb(e,Zu.BroadcastEnd))}})(),t?.extraInfo.recipe?.poolId&&(n=t.extraInfo.recipe.poolId,delete EI[n],delete CI[n]),(e=>{const t=MI[e];if(t?.transport===ed.WS&&t.extraInfo.recipe){const n=[{recipe:t.extraInfo.recipe}];AI(`Notifying IPC clients that a Kemu Compose client [${t.extraInfo.recipe.name} (${t.extraInfo.recipe.poolId})] has disconnected. ServiceSessionId: ${e}`);for(const e in MI){const t=MI[e];t?.transport===ed.IPC&&PI.execute(Xu.KemuComposerDisconnected,n,t.send,0,t.serviceSessionId,{async:!0}).catch((t=>{AI(`Error notifying IPC client [${e}] that a Kemu Compose client has disconnected: ${t?.message||t}`)}))}}})(e)),delete MI[e]},GI=Rd("ipc:handleIpcClientCommand"),VI=(e,t,n)=>{const r=((e,t)=>{if(e.startsWith(Zu.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 GI(`Ignoring ACK response from IPC service ${e} with no service id`);GI(`Received ACK from IPC service ${e}. Marking as running.`);let r=e;t&&e&&e!==t&&(qb(e,t),r=t);let i=!1;t&&(i=Rv.setServiceStatus(t,"running")),i?UI({serviceSessionId:t||e,transport:ed.IPC,send:n,extraInfo:{ipcSocketId:t}}):zb(r,Zu.SendManifest)}));!r&&GI(`Received unknown command [${t}] from service ${e}`)};let HI={};G.platform();const YI=async e=>{const t=e.args[0];if(HI.chooseDirectory)try{const n=await HI.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"})},zI=async e=>{const t=e.args[0];if(HI.chooseFile)try{const n=await HI.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 qI={},KI={},JI={};function ZI(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function XI(e){if("boolean"!=typeof e)throw new Error(`boolean expected, not ${e}`)}function QI(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function ex(e,...t){if(!QI(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 tx(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");ZI(e.outputLen),ZI(e.blockLen)}function nx(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 rx(e,t){ex(e);const n=t.outputLen;if(e.length<n)throw new Error(`digestInto() expects output buffer of length at least ${n}`)}Object.defineProperty(JI,"__esModule",{value:!0}),JI.output=JI.exists=JI.hash=JI.bytes=JI.bool=JI.number=JI.isBytes=void 0,JI.number=ZI,JI.bool=XI,JI.isBytes=QI,JI.bytes=ex,JI.hash=tx,JI.exists=nx,JI.output=rx;const ix={number:ZI,bool:XI,bytes:ex,hash:tx,exists:nx,output:rx};JI.default=ix;var ox={};Object.defineProperty(ox,"__esModule",{value:!0}),ox.add5L=ox.add5H=ox.add4H=ox.add4L=ox.add3H=ox.add3L=ox.add=ox.rotlBL=ox.rotlBH=ox.rotlSL=ox.rotlSH=ox.rotr32L=ox.rotr32H=ox.rotrBL=ox.rotrBH=ox.rotrSL=ox.rotrSH=ox.shrSL=ox.shrSH=ox.toBig=ox.split=ox.fromBig=void 0;const sx=BigInt(2**32-1),ax=BigInt(32);function cx(e,t=!1){return t?{h:Number(e&sx),l:Number(e>>ax&sx)}:{h:0|Number(e>>ax&sx),l:0|Number(e&sx)}}function lx(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}=cx(e[i],t);[n[i],r[i]]=[o,s]}return[n,r]}ox.fromBig=cx,ox.split=lx;const ux=(e,t)=>BigInt(e>>>0)<<ax|BigInt(t>>>0);ox.toBig=ux;const dx=(e,t,n)=>e>>>n;ox.shrSH=dx;const hx=(e,t,n)=>e<<32-n|t>>>n;ox.shrSL=hx;const fx=(e,t,n)=>e>>>n|t<<32-n;ox.rotrSH=fx;const px=(e,t,n)=>e<<32-n|t>>>n;ox.rotrSL=px;const gx=(e,t,n)=>e<<64-n|t>>>n-32;ox.rotrBH=gx;const mx=(e,t,n)=>e>>>n-32|t<<64-n;ox.rotrBL=mx;const yx=(e,t)=>t;ox.rotr32H=yx;const vx=e=>e;ox.rotr32L=vx;const bx=(e,t,n)=>e<<n|t>>>32-n;ox.rotlSH=bx;const wx=(e,t,n)=>t<<n|e>>>32-n;ox.rotlSL=wx;const Sx=(e,t,n)=>t<<n-32|e>>>64-n;ox.rotlBH=Sx;const _x=(e,t,n)=>e<<n-32|t>>>64-n;function Ix(e,t,n,r){const i=(t>>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:0|i}}ox.rotlBL=_x,ox.add=Ix;const xx=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0);ox.add3L=xx;const kx=(e,t,n,r)=>t+n+r+(e/2**32|0)|0;ox.add3H=kx;const Ex=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0);ox.add4L=Ex;const Cx=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0;ox.add4H=Cx;const $x=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0);ox.add5L=$x;const Nx=(e,t,n,r,i,o)=>t+n+r+i+o+(e/2**32|0)|0;ox.add5H=Nx;const Ox={fromBig:cx,split:lx,toBig:ux,shrSH:dx,shrSL:hx,rotrSH:fx,rotrSL:px,rotrBH:gx,rotrBL:mx,rotr32H:yx,rotr32L:vx,rotlSH:bx,rotlSL:wx,rotlBH:Sx,rotlBL:_x,add:Ix,add3L:xx,add3H:kx,add4L:Ex,add4H:Cx,add5H:Nx,add5L:$x};ox.default=Ox;var Tx={},Ax={};Object.defineProperty(Ax,"__esModule",{value:!0}),Ax.crypto=void 0,Ax.crypto="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,function(e){
10
+ var e=x,t=b,n=Ry(),r=R,o=T,s={};Py=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{u(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,h=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&&(h=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+(h?"."+h:"");if(b.match(/%DATE%/)&&(S=b.replace(/%DATE%/g,h||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),u(S);var C=r.file_options||{flags:"a"},$=e.createWriteStream(S,C);if(h&&l&&a.indexOf(l.type)>-1||g>0){f.verbose&&console.log(new Date,"[FileStreamRotator] Rotating file: ",l?l.type:"",g?"size: "+g:"");var N,O=new o;return O.auditLog=p,O.end=function(){$.end.apply($,arguments)},d($,O),O.on("close",(function(){N&&N.close()})),O.on("new",(function(n){O.auditLog=f.addLogToAudit(n,O.auditLog,O,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&&O.emit("addWatcher",n)})),O.on("addWatcher",(function(t){N&&N.close(),r.watch_log&&(N=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){O.emit("createLog",t)}(0,t)}}))}catch(e){n&&console.log(new Date,"[FileStreamRotator] Could not add watcher for "+t)}}(t,f.verbose))})),O.on("createLog",(function(t){try{e.lstatSync(t)}catch(n){$&&"function"==$.end&&$.end(),$=e.createWriteStream(t,C),O.emit("new",t),d($,O)}})),O.write=function(t,n){var o=l?this.getDate(l,v,r.utc):h;if(o!=h||g&&y>g){var s=b+(h&&l?"."+o:"");b.match(/%DATE%/)&&h&&(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)),h=o,w=S,S=s,!0===r.end_stream?$.end():$.destroy(),u(S),$=e.createWriteStream(s,C),O.emit("new",s),O.emit("rotate",w,s),d($,O)}$.write(t,n),y+=Buffer.byteLength(t,n)}.bind(this),process.nextTick((function(){O.emit("new",S)})),O.emit("new",S),O}return f.verbose&&console.log(new Date,"[FileStreamRotator] File won't be rotated: ",r.frequency,r.size),process.nextTick((function(){$.emit("new",S)})),$};var u=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}),"")},d=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 Py}const Ly=x,Fy=E,Uy=b,By=i,Wy=A,Gy=Ty.exports,Vy=yh.MESSAGE,Hy=N.PassThrough,Yy=Gp,zy={json:!1,colorize:!1,eol:Fy.EOL,logstash:null,prettyPrint:!1,label:null,stringify:!1,depth:null,showLevel:!0,timestamp:()=>(new Date).toISOString()},qy=function(e){if(e=e||{},Yy.call(this,e),this.options=Object.assign({},zy,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 Hy,this.logStream.pipe(e.stream);else{if(this.filename=e.filename?Uy.basename(e.filename):"winston.log",this.dirname=e.dirname||Uy.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=jy().getStream({filename:Uy.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:Uy.join(this.dirname,"."+Gy(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{Ly.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(!Ly.existsSync(e))return}catch(t){return t.message=`Error occurred while checking existence of ${e}: ${t.message}`,void this.emit("error",t)}try{if(Ly.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=Wy.createGzip(),n=Ly.createReadStream(e);n.on("error",(t=>{t.message=`Error occurred while reading ${e}: ${t.message}`,this.emit("error",t)}));const r=Ly.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{Ly.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 Ky=qy;By.inherits(qy,Yy),qy.prototype.name="dailyRotateFile";const Jy=function(){};qy.prototype.log=function(e,t){t=t||Jy,this.logStream.write(e[Vy]+this.options.eol),this.emit("logged",e),t(null,!0)},qy.prototype.close=function(){this.logStream&&this.logStream.end((()=>{this.emit("finish")}))},qy.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 Ly.readdirSync(this.dirname).filter((t=>Uy.basename(t).match(e)))})();0===r.length&&t&&t(null,n);const i=o=>{if(!o)return;const s=Uy.join(this.dirname,o);let a,c="";if(o.endsWith(".gz")){a=new Hy;const e=Ly.createReadStream(s);e.on("error",(e=>{e.message=`Error occurred while reading ${s}: ${e.message}`,a.emit("error",e)})),e.pipe(Wy.createGunzip()).pipe(a)}else a=Ly.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 Zy=Ky;Fd.transports.DailyRotateFile=Zy;var Xy=Sd(Zy);const Qy=Date.now();let ev=Math.ceil(Qy/1e3);var tv=()=>ev+=1;const nv=w(C(),"kemu-user-services"),rv=w(C(),"kemu-test-services"),iv="KMU-CB-v1",ov=process.env.HUB_PKG_VERSION||'"1.13.1"';var sv;!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"}(sv||(sv={}));const av=e=>({...e,type:Array.isArray(e.type)?e.type.map((e=>Ku[e])):Ku[e.type]}),cv=async e=>{try{return await y(e,"utf-8")}catch(e){return null}},lv=e=>{if(e&&e.startsWith(iv)){const t=e.slice(9),n=decodeURI(t);return cd(n)}return null},uv=async(e,t,n)=>{let r=[];e.variants?.length&&(r=e.variants.map((e=>({...e,...e.inputs?{inputs:e.inputs.map(av)}:{},...e.outputs?{outputs:e.outputs.map(av)}:{}}))));const i={...e,path:t,customWidgets:[],...e.inputs?{inputs:e.inputs.map(av)}:{inputs:[]},...e.outputs?{outputs:e.outputs.map(av)}:{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 cv(w(e,i));if(!t){n(`Error loading custom widget file ${i}`);continue}const o=t.startsWith(iv)?t:`${iv}${t}`,s=lv(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===sv.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 y(w(t,e.svgIcon),"utf-8");e.svgIcon=n}catch(t){n?.log&&n?.log(`Error loading svgIcon for variant ${e.id}: ${t}`)}return i},dv=async e=>{try{return await f(e,p.F_OK),!0}catch{return!1}};let hv=null,fv=null;const pv=()=>hv||nv,gv=()=>fv||rv;let mv=null;const yv={setGlobalUserId:e=>mv?.setGlobalUserId?.(e),captureError:e=>mv?.captureError?.(e),flushMessages:async()=>mv?.flushMessages?.(),isEnabled:()=>!!mv};var vv={...yv,setTracker:e=>{mv=e}};const bv=Ld("servicesManager"),wv={};let Sv=null,_v=null,Iv=null,xv=!1;class kv 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 f(e),!0}catch{return!1}},Cv=async e=>{if(!Sv)throw new Error('IPC config not set, call "setHubIpcConfig" first.');let t;if(e.info.internal)if("linux"===$()){const n=process.env.XDG_STATE_HOME||b.join(C(),".local","state");t=b.join(n,"kemu-hub","service-logs",e.info.name);try{await h(t,{recursive:!0})}catch(n){bv(`Failed to create log directory ${t}, falling back to service path`),t=e.info.path}}else t=e.info.path;else t=b.join(e.info.path,"..");const n=e.logsEnabled?((e,t)=>{const n=Oy.createLogger({level:"info",format:Oy.format.combine(Oy.format.timestamp(),Oy.format.errors({stack:!0}),Oy.format.json()),defaultMeta:{service:e},transports:[new Xy({filename:b.join(t,"service-%DATE%.log"),datePattern:"YYYY-MM-DD",maxSize:"5m",maxFiles:"5d",auditFile:b.join(t,".service-log-audit.json")})]});return n.getLastLogs=async(n=100)=>{try{const r=b.join(t,".service-log-audit.json"),i=await d.readFile(r,"utf-8"),o=cd(i);if(!o)return console.warn(`Missing audit file for ${e}, skipping log retrieval.`),[];const s=async e=>(await d.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;vv.isEnabled()&&vv.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===Zu.Javascript){bv(`Spawning service ${e.info.name} with sessionId ${e.info.sessionId}`);const t=b.join(e.info.path,"processor.js"),i=b.join(e.info.path,"processor.mjs"),o=await Ev(t)?t:i,s=[`--sessionId=${e.info.sessionId.toString()}`,`--ipcSpace=${Sv.appSpace}`,`--ipcId=${Sv?.id}`,`--recipePath=${Sv.recipePath||""}`];if(e.info.internal&&s.push("--internal=true"),!Iv)throw new Error('Get secrets function not set, call "setGetSecretsFunction" first.');const a=await Iv({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 kv(`Missing required environment variables: ${c.join(", ")}`,"MISSING_REQUIRED_SECRETS");return new Promise(((t,i)=>{if(!_v)throw new Error('Spawn function not set, call "setSpawnNodeFunction" first.');const c=_v({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),bv(`[${e.info.name}] - stdout: ${r}`))})),c.stderr.on("data",(t=>{const i=t.toString().trim();i&&(n?.error(i),r(new Error(i)),bv(`[${e.info.name}] - stderr: ${i}`))})),c.on("exit",(t=>{const r=`exited with code ${t}`;n?.info(r,{code:t}),bv(`[${e.info.name}] ${r}`)})),c.on("spawn",(()=>{const r=`spawned with PID ${c.pid}`;n?.info(r,{pid:c.pid}),bv(`[${e.info.name}] ${r}`),t(c)})),c.on("error",(t=>{n?.error(`[${e.info.name}] error`,t),bv(`[${e.info.name}] error: ${t}`),r(t),i(new kv(`Error spawning service ${e.info.name}: ${t}`,"SPAWN_ERROR"))}))}))}throw`Unsupported processor type ${e.info.processor}`}catch(t){if(r(t),t instanceof kv)throw t;throw`Error spawning service ${e.info.name}: ${t}`}},$v=e=>e?.name?e?.version?e?.description?e?.processor?[Zu.Javascript,Zu.Executable,Zu.Python].includes(e?.processor)?null:"Invalid processor":"Missing processor":"Missing description":"Missing version":"Missing name",Nv=async(e,t)=>{const n=b.join(e,"manifest.json");if(!await Ev(n)){const t=`Missing manifest for service ${e}. Aborting.`;return bv(t),{error:t}}const r=await y(n,"utf-8"),i=cd(r),o=$v(i);if(!i||o){const t=`Invalid service manifest [${e}]: ${o}. Aborting.`;return bv(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`};if(t?.allowedServiceNames&&!t.allowedServiceNames.includes(i.name))return{error:`[SKIPPED] Skipping service ${i.name} as it is not included in the allowedServiceNames option`};await Promise.all([(async()=>{if(i.widgetUI)try{s=await y(b.join(e,"widgetUI.js"))}catch(e){const t=`Error loading widgetUI file ${i.name}: ${e}`;return bv(t),{error:t}}})(),(async()=>{if(i.svgIcon){const t=await cv(b.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=b.join(e,t),{error:r,service:o}=await Nv(n);r?bv(`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 y(b.join(e,t.svgIcon),"utf-8");t.svgIcon=n}catch(e){bv(`Error loading svgIcon for variant ${t.id}: ${e}`)}})()]);const a=tv(),c=t?.fixedSession||a;bv(`Loaded service ${i.name} with sessionId ${c}`);const l=await uv(i,e,{widgetUIContents:s});return Ov(l),wv[c]={info:{...l,path:e,sessionId:c},status:"loaded",childProcess:null,logsEnabled:t?.logsEnabled},{service:wv[c]}},Ov=e=>{e.widgetUIContents?e.uiContentChecksum=(e=>{const t=j("sha256");return t.update(e),t.digest("hex")})(e.widgetUIContents):e.uiContentChecksum=void 0},Tv=async e=>{try{return e.childProcess=await Cv(e),e.status="started",e.errorMsg=void 0,e.errorCode=void 0,!0}catch(t){return bv(`Service [${e.info.name}] error: ${t}`),e.status="error",t instanceof kv?(e.errorMsg=t.message,e.errorCode=t.code):(e.errorMsg="string"==typeof t?t:JSON.stringify(t),e.errorCode="UNKNOWN_ERROR"),!1}},Av=e=>{const{path:t,...n}=e.info;return{...n}},Pv=()=>Object.values(wv).filter((e=>"running"===e.status)).map(Av),Mv=e=>{if(!e?.kill)return bv(`Failed to kill service ${e?.pid} because it is not a child process`),!1;let t=e.kill("SIGINT");return t||(bv(`Failed to send SIGINT to service ${e.pid} using SIGINT`),t=e.kill("SIGTERM"),t||(bv(`Failed to send SIGTERM to service ${e.pid} using SIGTERM`),t=e.kill("SIGKILL"),t||bv(`Failed to send SIGKILL to service ${e.pid} using SIGKILL`))),t},Dv=async e=>{const{serviceName:t,version:n,force:r,timeout:i=15e3}=e,o=Object.values(wv).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){bv(`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),bv(`Service ${t} process exited with code ${n} and signal ${i}`),e()})),o.childProcess.once("error",(n=>{clearTimeout(r),bv(`Service ${t} process error: ${n.message}`),e()}))}));Mv(o.childProcess);try{await r,bv(`Service ${t} process successfully terminated`)}catch(e){bv(`Warning: ${e instanceof Error?e.message:"Unknown error"} while waiting for service ${t} to stop`)}}return o.status="stopped",bv(`Service ${t} stopped`),o},Rv=e=>e.info.internal?e.info.path:b.join(e.info.path,".."),jv=e=>!!e.internal;var Lv={isOfficialKemuService:e=>e.name.startsWith("kemu.io"),loadServices:async(e,t)=>{if(!await dv(e))return void bv(`Failed to load services from "${e}". Directory does not exist.`);const n=(await g(e,{withFileTypes:!0})).filter((e=>e.isDirectory())).map((e=>e.name));bv(`Found ${n.length} services in "${e}"`);for(let r=0;r<n.length;r++){const i=n[r],o=b.join(e,i),{error:s,service:a}=await Nv(`${o}${t?.internalServices?"":"/dist"}`,{...t,logsEnabled:Array.isArray(t?.enableLogs)?t?.enableLogs.includes(i):t?.enableLogs});s&&!s.startsWith("[SKIPPED]")&&bv(`Failed to load service ${o}. Please check logs`),a&&t?.internalServices&&(a.info.internal=!0)}},launchServices:async e=>{if(bv("Initializing services"),!Sv)throw new Error('IPC config not set, call "setHubIpcConfig" first.');for(const t in wv){const n=wv[t];e.noSpawningList&&e.noSpawningList.includes(n.info.name)?bv(`Service ${n.info.name} is in the noSpawningList. Skipping.`):Tv(n)}bv("Services initialized")},setServiceStatus:(e,t)=>{const n=wv[e];return n?(n.status=t,!0):(bv(`Service with serviceId ${e} not found`),!1)},getActiveServices:Pv,getMatchingService:(e,t)=>{const n=Object.values(wv).filter((e=>"running"===e.status));for(const r of n)if(r.info.name===e){if(r.info.version===t)return r;if(md(r.info.version,t,">="))return r}return null},getServiceBySessionId:e=>wv[e]||null,killAllServices:async(e=5e3)=>{const t=[];for(const n in wv){const r=wv[n];if(r.childProcess&&r.childProcess.pid)try{bv(`Killing service ${r.info.name} with PID ${r.childProcess.pid}`);const n=new Promise((t=>{const n=setTimeout((()=>{bv(`Timeout waiting for service ${r.info.name} to exit`),t()}),e);r.childProcess?.once("exit",(()=>{clearTimeout(n),bv(`Service ${r.info.name} exited successfully`),t()}))}));Mv(r.childProcess),t.push(n)}catch(e){bv(`Error killing service ${r.info.name}: ${e}`)}}await Promise.allSettled(t),bv("All services killed")},addDevService:async(e,t,n)=>{const r={info:{...await uv(t,t.path),sessionId:e},status:n,startedAt:new Date,devMode:!0,childProcess:null};wv[e]=r,Ov(wv[e].info)},setServiceManifest:(e,t,n)=>{const r=wv[e];if(!r)return bv(`Service with sessionId ${e} not found`),!1;const i=$v(t);if(i)return bv(`Invalid manifest for service ${r.info.name}: ${i}`),!1;Ov(t),r.info={...r.info,...t},n&&(r.status=n)},getMatchingDevService:(e,t,n)=>{const r=Object.values(wv).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:()=>Pv().filter((e=>e.internal)),getAllServices:()=>Object.values(wv),stopService:Dv,uninstallService:async(e,t)=>{bv(`Uninstalling service ${e} v${t}`);const n=await Dv({serviceName:e,version:t});if(!n)return!1;bv(`Service ${e} stopped. Removing from disk...`);const r=Rv(n),i=pv();return r.startsWith(i)?(await m(r,{recursive:!0,force:!0,maxRetries:3}),bv(`Service ${e} successfully removed from disk`),(e=>{wv[e],delete wv[e]})(n.info.sessionId),!0):(bv(`Service ${e} is not installed in the user services directory. Aborting.`),!1)},getAllServiceVersions:e=>Object.values(wv).filter((t=>t.info.name===e)),setHubIpcConfig:e=>{Sv={...e}},setEnableServiceLogsConfig:e=>{xv=e},loadAndLaunch:async(e,t,n)=>{const r=_(e,t),{error:i,service:o}=await Nv(r,{logsEnabled:xv});if(i||!o)return{errorMsg:i};try{o.info.internal=!!n,o.childProcess=await Cv(o),o.status="started"}catch(e){o.status="error",e instanceof kv?(bv(`Service spawning error: ${e.message} (${e.code})`),o.errorMsg=e.message,o.errorCode=e.code):(bv(`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:Rv,setSpawnNodeFunction:e=>{_v=e},setGetSecretsFunction:e=>{Iv=e},restartService:async(e,t)=>{bv(`Restarting service ${e} v${t}`);const n=await Dv({serviceName:e,version:t,force:!0});return!!n&&Tv(n)},getFailedServices:()=>Object.values(wv).filter((e=>"error"===e.status)).map((e=>({...Av(e),errorMsg:e.errorMsg||"",errorCode:e.errorCode,status:e.status}))),isInternalKemuService:jv,isNotInternalKemuService:e=>!jv(e),isNotDevService:e=>!e.devMode};class Fv{constructor(){}appspace="app.";socketRoot="/tmp/";id=E.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=E.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 Uv{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 Bv=Sd((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={}})),Wv=Sd((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 Gv{}class Vv{}const Hv=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 Gv,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 Gv}}())}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 Yv{constructor(){}on(e,t,n=!1){return Hv.string(e),Hv.function(t),Hv.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(Hv.string(e),e!=this.#e.toString()&&"*"!=e||(e=this.#e),!this.#t[e])return this;if("*"==t)return delete this.#t[e],this;Hv.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){Hv.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)=>{Hv.string(e),Hv.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 zv=new Uv;class qv extends Yv{constructor(e,t){super(),this.config=e,this.log=t,this.publish=super.emit,e.maxRetries&&(this.retriesRemaining=e.maxRetries),zv=new Uv(this.config)}Client=qv;queue=new Wv;socket=!1;connect=Zv;emit=Kv;retriesRemaining=0;explicitlyDisconnected=!1}function Kv(e,t){this.log("dispatching event to ",this.id,this.path," : ",e,",",t);let n=new Bv;n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):zv.format(n),this.config.sync?this.queue.add(Jv.bind(this,n)):this.socket.write(n)}function Jv(e){this.log("dispatching event to ",this.id,this.path," : ",e),this.socket.write(e)}function Zv(){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=x.readFileSync(e.config.tls.private)),e.config.tls.public&&(e.config.tls.cert=x.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(x.readFileSync(e.config.tls.trustedConnections[t]))}Object.assign(e.config.tls,t),e.socket=F.connect(e.config.tls)}else e.log("Connecting client via TCP to",t),e.socket=L.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=L.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)!=zv.delimiter||-1==t.indexOf(zv.delimiter))return void e.log("Messages are large, You may want to consider smaller messages.");this.ipcBuffer="";const n=zv.parse(t),r=n.length;for(let t=0;t<r;t++){let r=new Bv;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 Xv=new Uv;class Qv extends Yv{constructor(e,t,n,r){super(),this.config=t,this.path=e,this.port=r,this.log=n,this.publish=super.emit,Xv=new Uv(this.config),this.on("close",nb.bind(this))}udp4=!1;udp6=!1;server=!1;sockets=[];emit=eb;broadcast=tb;onStart(e){this.publish("start",e)}stop(){this.server.close()}start(){this.path?this.config.unlink?x.unlink(this.path,sb.bind(this)):sb.bind(this)():this.log("Socket Server Path not specified, refusing to start")}}function eb(e,t,n){this.log("dispatching event to socket"," : ",t,n);let r=new Bv;if(r.type=t,r.data=n,this.config.rawBuffer?(this.log(this.config.encoding),r=Buffer.from(t,this.config.encoding)):r=Xv.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 tb(e,t){this.log("broadcasting event to all known sockets listening to ",this.path," : ",this.port?this.port:"",e,t);let n=new Bv;if(n.type=e,n.data=t,n=this.config.rawBuffer?Buffer.from(e,this.config.encoding):Xv.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 nb(){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 rb(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)==Xv.delimiter&&-1!=t.indexOf(Xv.delimiter))for(r.ipcBuffer="",t=Xv.parse(t);t.length>0;){let e=new Bv;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 ib(e){this.publish("close",e)}function ob(e){this.sockets.push(e),e.setEncoding&&e.setEncoding(this.config.encoding),this.log("## socket connection to server detected ##"),e.on("close",ib.bind(this)),e.on("error",function(e){this.log("server socket error",e),this.publish("error",e)}.bind(this)),e.on("data",rb.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 sb(){return this.log("starting server on ",this.path,this.port?`:${this.port}`:""),this.udp4||this.udp6?(this.server=U.createSocket(this.udp4?"udp4":"udp6"),this.server.write=cb.bind(this),this.server.on("listening",function(){ob.bind(this)(this.server)}.bind(this))):(this.log("starting TLS server",this.config.tls),this.config.tls?ab.bind(this)():this.server=L.createServer(ob.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 ab(){if(this.log("starting TLS server",this.config.tls),this.config.tls.private?this.config.tls.key=x.readFileSync(this.config.tls.private):this.config.tls.key=x.readFileSync(`${__dirname}/../local-node-ipc-certs/private/server.key`),this.config.tls.public?this.config.tls.cert=x.readFileSync(this.config.tls.public):this.config.tls.cert=x.readFileSync(`${__dirname}/../local-node-ipc-certs/server.pub`),this.config.tls.dhparam&&(this.config.tls.dhparam=x.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(x.readFileSync(this.config.tls.trustedConnections[e]))}this.server=F.createServer(this.config.tls,ob.bind(this))}function cb(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 lb{constructor(){}config=new Fv;of={};server=!1;get connectTo(){return gb}get connectToNet(){return mb}get disconnect(){return db}get serve(){return hb}get serveNet(){return pb}get log(){return ub}set connectTo(e){return gb}set connectToNet(e){return mb}set disconnect(e){return db}set serve(e){return hb}set serveNet(e){return pb}set log(e){return ub}}function ub(...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 db(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 hb(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=fb),this.server=new Qv(e,this.config,ub),this.server.on("start",t)}function fb(){}function pb(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=fb),this.server=new Qv(e,this.config,ub,t),n&&(this.server[n]=!0,"udp4"===n&&"::1"===e&&(this.server.path="127.0.0.1")),this.server.on("start",r)}function gb(e,t,n){if("function"==typeof t&&(n=t,t=!1),n||(n=fb),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 qv(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 mb(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=fb),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 qv(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 yb=new class extends lb{constructor(){super()}IPC=lb};const vb=Object.values({protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8}).reduce(((e,t)=>e+t),0),bb=e=>{try{return JSON.parse(e)}catch(e){return null}},wb="undefined"!=typeof window,Sb={protocolPrefix:4,protocolVersion:1,jsonLength:4,binaryLength:4,fromServiceId:4,toServiceId:4,sentAt:8},_b={protocolPrefix:4,txtLength:4},Ib=Object.values(Sb).reduce(((e,t)=>e+t),0),xb=Object.values(_b).reduce(((e,t)=>e+t),0),kb=["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)||kb.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},Cb=(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},$b=(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&&Cb(e,o,l)}return e},Nb=e=>jd(e),Ob="KMSG",Tb="KCMD",Ab=Nb("klProtocol");var Pb={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=Sb.protocolPrefix+Sb.protocolVersion+Sb.jsonLength+Sb.binaryLength+Sb.fromServiceId+Sb.toServiceId+Sb.sentAt+l+s,d=Buffer.alloc(u),h=Date.now();let f=0;return d.write(Ob,f),f+=Sb.protocolPrefix,d.writeUInt8(1,f),f+=Sb.protocolVersion,d.writeUInt32LE(l,f),f+=Sb.jsonLength,d.writeUInt32LE(s,f),f+=Sb.binaryLength,d.writeUInt32LE(t,f),f+=Sb.fromServiceId,d.writeUInt32LE(n,f),f+=Sb.toServiceId,d.writeBigInt64LE(BigInt(h),f),f+=Sb.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,Sb.protocolPrefix);if(t+=Sb.protocolPrefix,n!==Ob)return null;if(e.byteLength<Ib)return Ab(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const r=e.readUInt8(t);t+=Sb.protocolVersion;const i=e.readUInt32LE(t);t+=Sb.jsonLength;const o=e.readUInt32LE(t);t+=Sb.binaryLength;const s=e.readUInt32LE(t);t+=Sb.fromServiceId;const a=e.readUInt32LE(t);t+=Sb.toServiceId;const c=e.readBigInt64LE(t);t+=Sb.sentAt;const l=i+o,u=e.subarray(t,t+l),d=e.subarray(0,Ib);let h=null;return e.byteLength-Ib-i-o>0&&(h=e.subarray(Ib+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=bb(n);if(!i?.json)return Ab("Invalid JSON in KL message"),null;i.jsonBinaryMap&&r.byteLength&&$b(i.json,r,i.jsonBinaryMap);const o=Buffer.concat([e.headerPackage,t]);let s=o,a=null;const c=Ib+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<Ib)return Ab("Invalid Header Size"),e;let n=0;return n+=Sb.protocolPrefix,n+=Sb.protocolVersion,n+=Sb.jsonLength,n+=Sb.binaryLength,void 0!==t.fromServiceId&&e.writeUInt32LE(t.fromServiceId,n),n+=Sb.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=xb+r,o=Buffer.alloc(i);return o.write(Tb,t),t+=_b.protocolPrefix,o.writeUint32LE(r,t),t+=_b.txtLength,n.copy(o,t),o},decodeCommand:e=>{let t=0;if(e.byteLength<xb)return{command:null};const n=e.toString("utf-8",t,_b.protocolPrefix);if(t+=_b.protocolPrefix,n!==Tb)return{command:null};const r=e.readUInt32LE(t);t+=_b.txtLength;const i=e.toString("utf-8",t,t+r),o=e.byteLength-xb-r;let s=null;o>0&&(s=e.subarray(xb+r));let a=0;return o<0&&(a=Math.abs(o)),{command:i,remainingData:s,missing:a}}};const Mb="KMSG",Db="KCMD",Rb=Nb("klProtocol"),jb=new TextEncoder;var Lb={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=jb.encode(a),l=c.byteLength,u=new ArrayBuffer(Sb.protocolPrefix+Sb.protocolVersion+Sb.jsonLength+Sb.binaryLength+Sb.fromServiceId+Sb.toServiceId+Sb.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++]=Mb.charCodeAt(e);return d.setUint8(p,1),p+=Sb.protocolVersion,d.setUint32(p,l,!0),p+=Sb.jsonLength,d.setUint32(p,s,!0),p+=Sb.binaryLength,d.setUint32(p,t,!0),p+=Sb.fromServiceId,d.setUint32(p,n,!0),p+=Sb.toServiceId,d.setBigInt64(p,BigInt(f),!0),p+=Sb.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<Sb.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Mb)return null;if(e.byteLength<Ib)return Rb.log(`Received a Partial Header with ${e.byteLength} bytes. Waiting for more data.`),{partialHeader:!0,remaining:null};const i=t.getUint8(n);n+=Sb.protocolVersion;const o=t.getUint32(n,!0);n+=Sb.jsonLength;const s=t.getUint32(n,!0);n+=Sb.binaryLength;const a=t.getUint32(n,!0);n+=Sb.fromServiceId;const c=t.getUint32(n,!0);n+=Sb.toServiceId;const l=t.getBigInt64(n,!0);n+=Sb.sentAt;const u=o+s,d=e.slice(n,n+u),h=new Uint8Array(e,0,Ib);let f=null;return e.byteLength-Ib-o-s>0&&(f=new Uint8Array(e,Ib+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=bb(o);if(!a?.json)return Rb.log("Invalid JSON in KL message"),null;a.jsonBinaryMap&&s.byteLength&&$b(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=Ib+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<Ib)return Rb("Invalid Header Size"),e;let n=0;n+=Sb.protocolPrefix,n+=Sb.protocolVersion,n+=Sb.jsonLength,n+=Sb.binaryLength;const r=new DataView(e);return void 0!==t.fromServiceId&&r.setUint32(n,t.fromServiceId,!0),n+=Sb.fromServiceId,void 0!==t.toServiceId&&r.setUint32(n,t.toServiceId,!0),e},encodeCommand:e=>{let t=0;const n=jb.encode(e),r=n.byteLength,i=new ArrayBuffer(xb+r),o=new DataView(i),s=new Uint8Array(i);for(let e=0;e<4;++e)s[t++]=Db.charCodeAt(e);return o.setUint32(t,r,!0),t+=_b.txtLength,s.set(n,t),i},decodeCommand:e=>{const t=new DataView(e);let n=0;if(e.byteLength<xb)return{command:null};let r="";for(let e=0;e<_b.protocolPrefix;++e)r+=String.fromCharCode(t.getUint8(n++));if(r!==Db)return{command:null};const i=t.getUint32(n,!0);n+=_b.txtLength;const o=e.byteLength-xb-i,s=new Uint8Array(e,n,Math.min(i,e.byteLength-xb)),a=(new TextDecoder).decode(s);let c=null;o>0&&(c=e.slice(xb+i));let l=0;return o<0&&(l=Math.abs(o)),{command:a,remainingData:c,missing:l}}};const Fb=Nb("klTransmissionManager"),Ub=()=>{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=Lb.decodeHeader(c)):(c=o?.partialHeaderData?Buffer.concat([o.partialHeaderData,t]):t,s=Pb.decodeHeader(c)),!s){const{command:t,missing:o,remainingData:s}=a?Lb.decodeCommand(c):Pb.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?Lb.decodeFullKlMessage(o.header):Pb.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};yb.config={...yb.config,id:"widgets",retry:1500,silent:!0,rawBuffer:!0,appspace:"kemu.",encoding:"hex"};const Bb={info:Ld("ipcServer:info"),data:Ld("ipcServer:data")};let Wb,Gb,Vb,Hb,Yb={};const zb=Ub(),qb=e=>{Yb[e]&&(Bb.info(`Client disconnected [${e}]`),delete Yb[e],Gb&&Gb(e))};var Kb=(e,t)=>{const n=Yb[e];if(!n)return Bb.info(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=vb)return Bb.info("Message is too long to be a command. Use sendMessage instead."),!1;const r=Pb.encodeCommand(t);return n.socket.write(r),!0},Jb=(e,t)=>{const n=Yb[e];return!!n&&(Bb.info(`Renaming socket id [${e}] to [${t}]`),delete Yb[e],n.socket.id=t,Yb[t]=n,n.socket.removeListener("close",n.disconnectHandler),n.disconnectHandler=()=>qb(t),n.socket.on("close",n.disconnectHandler),!0)};let Zb=Pb;wb&&(Zb=Lb);var Xb,Qb=Zb;!function(e){e.FunctionNotFound="FNC_NOT_FOUND",e.FunctionNotAllowed="FNC_NOT_ALLOWED",e.ParentEventCallbackError="PARENT_EVENT_CALLBACK_ERROR"}(Xb||(Xb={}));let ew=Math.ceil(Date.now()/1e3);var tw={exports:{}};const nw=["nodebuffer","arraybuffer","fragments"],rw="undefined"!=typeof Blob;rw&&nw.push("blob");var iw={BINARY_TYPES:nw,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:rw,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}};const{EMPTY_BUFFER:ow}=iw,sw=Buffer[Symbol.species];function aw(e,t,n,r,i){for(let o=0;o<i;o++)n[r+o]=e[o]^t[3&o]}function cw(e,t){for(let n=0;n<e.length;n++)e[n]^=t[3&n]}if(tw.exports={concat:function(e,t){if(0===e.length)return ow;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 sw(n.buffer,n.byteOffset,r):n},mask:aw,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 sw(t):ArrayBuffer.isView(t)?n=new sw(t.buffer,t.byteOffset,t.byteLength):(n=Buffer.from(t),e.readOnly=!1),n},unmask:cw},!process.env.WS_NO_BUFFER_UTIL)try{const e=require("bufferutil");tw.exports.mask=function(t,n,r,i,o){o<48?aw(t,n,r,i,o):e.mask(t,n,r,i,o)},tw.exports.unmask=function(t,n){t.length<32?cw(t,n):e.unmask(t,n)}}catch(b){}var lw=tw.exports;const uw=Symbol("kDone"),dw=Symbol("kRun"),hw=A,fw=lw,pw=class{constructor(e){this[uw]=()=>{this.pending--,this[dw]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[dw]()}[dw](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[uw])}}},{kStatusCode:gw}=iw,mw=Buffer[Symbol.species],yw=Buffer.from([0,0,255,255]),vw=Symbol("permessage-deflate"),bw=Symbol("total-length"),ww=Symbol("callback"),Sw=Symbol("buffers"),_w=Symbol("error");let Iw;var xw=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,!Iw){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;Iw=new pw(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[ww];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){Iw.add((r=>{this._decompress(e,t,((e,t)=>{r(),n(e,t)}))}))}compress(e,t,n){Iw.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]?hw.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=hw.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[vw]=this,this._inflate[bw]=0,this._inflate[Sw]=[],this._inflate.on("error",Cw),this._inflate.on("data",Ew)}this._inflate[ww]=n,this._inflate.write(e),t&&this._inflate.write(yw),this._inflate.flush((()=>{const e=this._inflate[_w];if(e)return this._inflate.close(),this._inflate=null,void n(e);const i=fw.concat(this._inflate[Sw],this._inflate[bw]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[bw]=0,this._inflate[Sw]=[],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]?hw.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=hw.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[bw]=0,this._deflate[Sw]=[],this._deflate.on("data",kw)}this._deflate[ww]=n,this._deflate.write(e),this._deflate.flush(hw.Z_SYNC_FLUSH,(()=>{if(!this._deflate)return;let e=fw.concat(this._deflate[Sw],this._deflate[bw]);t&&(e=new mw(e.buffer,e.byteOffset,e.length-4)),this._deflate[ww]=null,this._deflate[bw]=0,this._deflate[Sw]=[],t&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),n(null,e)}))}};function kw(e){this[Sw].push(e),this[bw]+=e.length}function Ew(e){this[bw]+=e.length,this[vw]._maxPayload<1||this[bw]<=this[vw]._maxPayload?this[Sw].push(e):(this[_w]=new RangeError("Max payload size exceeded"),this[_w].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[_w][gw]=1009,this.removeListener("data",Ew),this.reset())}function Cw(e){this[vw]._inflate=null,e[gw]=1007,this[ww](e)}var $w={exports:{}};const{isUtf8:Nw}=O,{hasBlob:Ow}=iw;function Tw(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($w.exports={isBlob:function(e){return Ow&&"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:Tw,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]},Nw)$w.exports.isValidUTF8=function(e){return e.length<24?Tw(e):Nw(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{const e=require("utf-8-validate");$w.exports.isValidUTF8=function(t){return t.length<32?Tw(t):e(t)}}catch(b){}var Aw=$w.exports;const{Writable:Pw}=N,Mw=xw,{BINARY_TYPES:Dw,EMPTY_BUFFER:Rw,kStatusCode:jw,kWebSocket:Lw}=iw,{concat:Fw,toArrayBuffer:Uw,unmask:Bw}=lw,{isValidStatusCode:Ww,isValidUTF8:Gw}=Aw,Vw=Buffer[Symbol.species];const{randomFillSync:Hw}=R,Yw=xw,{EMPTY_BUFFER:zw,kWebSocket:qw,NOOP:Kw}=iw,{isBlob:Jw,isValidStatusCode:Zw}=Aw,{mask:Xw,toBuffer:Qw}=lw,eS=Symbol("kByteLength"),tS=Buffer.alloc(4),nS=8192;let rS,iS=nS;function oS(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 sS(e,t,n){oS(e,t,n),e.onerror(t)}const{kForOnEventAttribute:aS,kListener:cS}=iw,lS=Symbol("kCode"),uS=Symbol("kData"),dS=Symbol("kError"),hS=Symbol("kMessage"),fS=Symbol("kReason"),pS=Symbol("kTarget"),gS=Symbol("kType"),mS=Symbol("kWasClean");class yS{constructor(e){this[pS]=null,this[gS]=e}get target(){return this[pS]}get type(){return this[gS]}}Object.defineProperty(yS.prototype,"target",{enumerable:!0}),Object.defineProperty(yS.prototype,"type",{enumerable:!0});class vS extends yS{constructor(e,t={}){super(e),this[lS]=void 0===t.code?0:t.code,this[fS]=void 0===t.reason?"":t.reason,this[mS]=void 0!==t.wasClean&&t.wasClean}get code(){return this[lS]}get reason(){return this[fS]}get wasClean(){return this[mS]}}Object.defineProperty(vS.prototype,"code",{enumerable:!0}),Object.defineProperty(vS.prototype,"reason",{enumerable:!0}),Object.defineProperty(vS.prototype,"wasClean",{enumerable:!0});class bS extends yS{constructor(e,t={}){super(e),this[dS]=void 0===t.error?null:t.error,this[hS]=void 0===t.message?"":t.message}get error(){return this[dS]}get message(){return this[hS]}}Object.defineProperty(bS.prototype,"error",{enumerable:!0}),Object.defineProperty(bS.prototype,"message",{enumerable:!0});class wS extends yS{constructor(e,t={}){super(e),this[uS]=void 0===t.data?null:t.data}get data(){return this[uS]}}Object.defineProperty(wS.prototype,"data",{enumerable:!0});const SS={addEventListener(e,t,n={}){for(const r of this.listeners(e))if(!n[aS]&&r[cS]===t&&!r[aS])return;let r;if("message"===e)r=function(e,n){const r=new wS("message",{data:n?e:e.toString()});r[pS]=this,IS(t,this,r)};else if("close"===e)r=function(e,n){const r=new vS("close",{code:e,reason:n.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});r[pS]=this,IS(t,this,r)};else if("error"===e)r=function(e){const n=new bS("error",{error:e,message:e.message});n[pS]=this,IS(t,this,n)};else{if("open"!==e)return;r=function(){const e=new yS("open");e[pS]=this,IS(t,this,e)}}r[aS]=!!n[aS],r[cS]=t,n.once?this.once(e,r):this.on(e,r)},removeEventListener(e,t){for(const n of this.listeners(e))if(n[cS]===t&&!n[aS]){this.removeListener(e,n);break}}};var _S={CloseEvent:vS,ErrorEvent:bS,Event:yS,EventTarget:SS,MessageEvent:wS};function IS(e,t,n){"object"==typeof e&&e.handleEvent?e.handleEvent.call(e,n):e.call(t,n)}const{tokenChars:xS}=Aw;function kS(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===xS[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?(kS(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===xS[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),kS(i,e.slice(c,u),!0),44===l&&(kS(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!==xS[l])throw new SyntaxError(`Unexpected character at index ${d}`);-1===c?c=d:o||(o=!0),s=!1}else if(a)if(1===xS[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===xS[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),kS(i,r,s),44===l&&(kS(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?kS(t,h,i):(void 0===r?kS(i,h,!0):kS(i,r,o?h.replace(/\\/g,""):h),kS(t,n,i)),t}};const CS=T,$S=D,NS=M,OS=L,TS=F,{randomBytes:AS,createHash:PS}=R,{URL:MS}=B,DS=xw,RS=class extends Pw{constructor(e={}){super(),this._allowSynchronousEvents=void 0===e.allowSynchronousEvents||e.allowSynchronousEvents,this._binaryType=e.binaryType||Dw[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=0|e.maxPayload,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Lw]=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[Mw.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=Rw;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]&&Bw(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[Mw.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?Uw(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&&!Gw(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,Rw),this.end();else{const n=e.readUInt16BE(0);if(!Ww(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&&!Gw(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[jw]=r,o}},jS=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=Kw,this[qw]=void 0}static frame(e,t){let n,r,i=!1,o=2,s=!1;t.mask&&(n=t.maskBuffer||tS,t.generateMask?t.generateMask(n):(iS===nS&&(void 0===rS&&(rS=Buffer.alloc(nS)),Hw(rS,0,nS),iS=0),n[0]=rS[iS++],n[1]=rS[iS++],n[2]=rS[iS++],n[3]=rS[iS++]),s=!(n[0]|n[1]|n[2]|n[3]),o=6),"string"==typeof e?r=t.mask&&!s||void 0===t[eS]?(e=Buffer.from(e)).length:t[eS]:(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?(Xw(e,n,c,o,r),[c]):(Xw(e,n,e,0,r),[c,e])):[c,e]}close(t,n,r,i){let o;if(void 0===t)o=zw;else{if("number"!=typeof t||!Zw(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={[eS]: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):Jw(t)?(i=t.size,o=!1):(i=(t=Qw(t)).length,o=Qw.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[eS]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:o,rsv1:!1};Jw(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):Jw(t)?(i=t.size,o=!1):(i=(t=Qw(t)).length,o=Qw.readOnly),i>125)throw new RangeError("The data size must not be greater than 125 bytes");const s={[eS]:i,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:o,rsv1:!1};Jw(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[Yw.extensionName];let i,o,s=t.binary?2:1,a=t.compress;"string"==typeof e?(i=Buffer.byteLength(e),o=!1):Jw(e)?(i=e.size,o=!1):(i=(e=Qw(e)).length,o=Qw.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={[eS]:i,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:o,rsv1:a};Jw(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[eS],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(oS,this,e,i)}this._bufferedBytes-=r[eS];const o=Qw(t);n?this.dispatch(o,n,r,i):(this._state=0,this.sendFrame(e.frame(o,r),i),this.dequeue())})).catch((e=>{process.nextTick(sS,this,e,i)}))}dispatch(t,n,r,i){if(!n)return void this.sendFrame(e.frame(t,r),i);const o=this._extensions[Yw.extensionName];this._bufferedBytes+=r[eS],this._state=1,o.compress(t,r.fin,((t,n)=>{this._socket.destroyed?oS(this,new Error("The socket was closed while data was being compressed"),i):(this._bufferedBytes-=r[eS],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][eS],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][eS],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:LS}=Aw,{BINARY_TYPES:FS,EMPTY_BUFFER:US,GUID:BS,kForOnEventAttribute:WS,kListener:GS,kStatusCode:VS,kWebSocket:HS,NOOP:YS}=iw,{EventTarget:{addEventListener:zS,removeEventListener:qS}}=_S,{format:KS,parse:JS}=ES,{toBuffer:ZS}=lw,XS=3e4,QS=Symbol("kAborted"),e_=[8,13],t_=["CONNECTING","OPEN","CLOSING","CLOSED"],n_=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;let r_=class e extends CS{constructor(t,n,r){super(),this._binaryType=FS[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=US,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]),o_(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 RS({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),o=new jS(t,this._extensions,r.generateMask);this._receiver=i,this._sender=o,this._socket=t,i[HS]=this,o[HS]=this,t[HS]=this,i.on("conclude",d_),i.on("drain",h_),i.on("error",f_),i.on("message",g_),i.on("ping",m_),i.on("pong",y_),o.onerror=b_,t.setTimeout&&t.setTimeout(0),t.setNoDelay&&t.setNoDelay(),n.length>0&&t.unshift(n),t.on("close",S_),t.on("data",__),t.on("end",I_),t.on("error",x_),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[DS.extensionName]&&this._extensions[DS.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())})),w_(this)):this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();else{const e="WebSocket was closed before the connection was established";l_(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||US,n,r)):u_(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||US,n,r)):u_(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 u_(this,t,r);const i={binary:"string"!=typeof t,mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[DS.extensionName]||(i.compress=!1),this._sender.send(t||US,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";l_(this,this._req,e)}}};Object.defineProperty(r_,"CONNECTING",{enumerable:!0,value:t_.indexOf("CONNECTING")}),Object.defineProperty(r_.prototype,"CONNECTING",{enumerable:!0,value:t_.indexOf("CONNECTING")}),Object.defineProperty(r_,"OPEN",{enumerable:!0,value:t_.indexOf("OPEN")}),Object.defineProperty(r_.prototype,"OPEN",{enumerable:!0,value:t_.indexOf("OPEN")}),Object.defineProperty(r_,"CLOSING",{enumerable:!0,value:t_.indexOf("CLOSING")}),Object.defineProperty(r_.prototype,"CLOSING",{enumerable:!0,value:t_.indexOf("CLOSING")}),Object.defineProperty(r_,"CLOSED",{enumerable:!0,value:t_.indexOf("CLOSED")}),Object.defineProperty(r_.prototype,"CLOSED",{enumerable:!0,value:t_.indexOf("CLOSED")}),["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach((e=>{Object.defineProperty(r_.prototype,e,{enumerable:!0})})),["open","error","close","message"].forEach((e=>{Object.defineProperty(r_.prototype,`on${e}`,{enumerable:!0,get(){for(const t of this.listeners(e))if(t[WS])return t[GS];return null},set(t){for(const t of this.listeners(e))if(t[WS]){this.removeListener(e,t);break}"function"==typeof t&&this.addEventListener(e,t,{[WS]:!0})}})})),r_.prototype.addEventListener=zS,r_.prototype.removeEventListener=qS;var i_=r_;function o_(e,t,n,r){const i={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:e_[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,!e_.includes(i.protocolVersion))throw new RangeError(`Unsupported protocol version: ${i.protocolVersion} (supported versions: ${e_.join(", ")})`);let o;if(t instanceof MS)o=t;else try{o=new MS(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 s_(e,t)}const l=s?443:80,u=AS(16).toString("base64"),d=s?$S.request:NS.request,h=new Set;let f,p;if(i.createConnection=i.createConnection||(s?c_:a_),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 DS(!0!==i.perMessageDeflate?i.perMessageDeflate:{},!1,i.maxPayload),i.headers["Sec-WebSocket-Extensions"]=KS({[DS.extensionName]:f.offer()})),n.length){for(const e of n){if("string"!=typeof e||!n_.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",(()=>{l_(e,p,"Opening handshake has timed out")})),p.on("error",(t=>{null===p||p[QS]||(p=e._req=null,s_(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 l_(e,p,"Maximum redirects exceeded");let o;p.abort();try{o=new MS(s,t)}catch(t){const n=new SyntaxError(`Invalid URL: ${s}`);return void s_(e,n)}o_(e,o,n,r)}else e.emit("unexpected-response",p,o)||l_(e,p,`Unexpected server response: ${o.statusCode}`)})),p.on("upgrade",((t,n,r)=>{if(e.emit("upgrade",t),e.readyState!==r_.CONNECTING)return;p=e._req=null;const o=t.headers.upgrade;if(void 0===o||"websocket"!==o.toLowerCase())return void l_(e,n,"Invalid Upgrade header");const s=PS("sha1").update(u+BS).digest("base64");if(t.headers["sec-websocket-accept"]!==s)return void l_(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 l_(e,n,c);a&&(e._protocol=a);const l=t.headers["sec-websocket-extensions"];if(void 0!==l){if(!f)return void l_(e,n,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");let r;try{r=JS(l)}catch(t){return void l_(e,n,"Invalid Sec-WebSocket-Extensions header")}const i=Object.keys(r);if(1!==i.length||i[0]!==DS.extensionName)return void l_(e,n,"Server indicated an extension that was not requested");try{f.accept(r[DS.extensionName])}catch(t){return void l_(e,n,"Invalid Sec-WebSocket-Extensions header")}e._extensions[DS.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 s_(e,t){e._readyState=r_.CLOSING,e._errorEmitted=!0,e.emit("error",t),e.emitClose()}function a_(e){return e.path=e.socketPath,OS.connect(e)}function c_(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=OS.isIP(e.host)?"":e.host),TS.connect(e)}function l_(e,t,n){e._readyState=r_.CLOSING;const r=new Error(n);Error.captureStackTrace(r,l_),t.setHeader?(t[QS]=!0,t.abort(),t.socket&&!t.socket.destroyed&&t.socket.destroy(),process.nextTick(s_,e,r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function u_(e,t,n){if(t){const n=LS(t)?t.size:ZS(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){const t=new Error(`WebSocket is not open: readyState ${e.readyState} (${t_[e.readyState]})`);process.nextTick(n,t)}}function d_(e,t){const n=this[HS];n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,void 0!==n._socket[HS]&&(n._socket.removeListener("data",__),process.nextTick(v_,n._socket),1005===e?n.close():n.close(e,t))}function h_(){const e=this[HS];e.isPaused||e._socket.resume()}function f_(e){const t=this[HS];void 0!==t._socket[HS]&&(t._socket.removeListener("data",__),process.nextTick(v_,t._socket),t.close(e[VS])),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e))}function p_(){this[HS].emitClose()}function g_(e,t){this[HS].emit("message",e,t)}function m_(e){const t=this[HS];t._autoPong&&t.pong(e,!this._isServer,YS),t.emit("ping",e)}function y_(e){this[HS].emit("pong",e)}function v_(e){e.resume()}function b_(e){const t=this[HS];t.readyState!==r_.CLOSED&&(t.readyState===r_.OPEN&&(t._readyState=r_.CLOSING,w_(t)),this._socket.end(),t._errorEmitted||(t._errorEmitted=!0,t.emit("error",e)))}function w_(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),XS)}function S_(){const e=this[HS];let t;this.removeListener("close",S_),this.removeListener("data",__),this.removeListener("end",I_),e._readyState=r_.CLOSING,this._readableState.endEmitted||e._closeFrameReceived||e._receiver._writableState.errorEmitted||null===(t=e._socket.read())||e._receiver.write(t),e._receiver.end(),this[HS]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",p_),e._receiver.on("finish",p_))}function __(e){this[HS]._receiver.write(e)||this.pause()}function I_(){const e=this[HS];e._readyState=r_.CLOSING,e._receiver.end(),this.end()}function x_(){const e=this[HS];this.removeListener("error",x_),this.on("error",YS),e&&(e._readyState=r_.CLOSING,this.destroy())}const{tokenChars:k_}=Aw;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===k_[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 C_=T,$_=M,{createHash:N_}=R,O_=ES,T_=xw,A_=E_,P_=i_,{GUID:M_,kWebSocket:D_}=iw,R_=/^[+/0-9A-Za-z]{22}==$/;function j_(e){e._state=2,e.emit("close")}function L_(){this.destroy()}function F_(e,t,n,r){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} ${$_.STATUS_CODES[t]}\r\n`+Object.keys(r).map((e=>`${e}: ${r[e]}`)).join("\r\n")+"\r\n\r\n"+n)}function U_(e,t,n,r,i){if(e.listenerCount("wsClientError")){const r=new Error(i);Error.captureStackTrace(r,U_),e.emit("wsClientError",r,n,t)}else F_(n,r,i)}var B_=Sd(class extends C_{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:P_,...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=$_.createServer(((e,t)=>{const 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(j_,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(j_,this);else{const e=this._server;this._removeListeners(),this._removeListeners=this._server=null,e.close((()=>{j_(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",L_);const i=e.headers["sec-websocket-key"],o=e.headers.upgrade,s=+e.headers["sec-websocket-version"];if("GET"!==e.method)return void U_(this,e,t,405,"Invalid HTTP method");if(void 0===o||"websocket"!==o.toLowerCase())return void U_(this,e,t,400,"Invalid Upgrade header");if(void 0===i||!R_.test(i))return void U_(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");if(8!==s&&13!==s)return void U_(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=A_.parse(a)}catch(n){return void U_(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 T_(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const e=O_.parse(l);e[T_.extensionName]&&(r.accept(e[T_.extensionName]),u[T_.extensionName]=r)}catch(n){return void U_(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[D_])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: ${N_("sha1").update(t+M_).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[T_.extensionName]){const t=e[T_.extensionName].params,n=O_.format({[T_.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",L_),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(j_,this)}))),s(c,r)}});const W_=Ld("websocketServer"),G_={},V_=Ub();let H_,Y_,z_,q_,K_;const J_=["https://app.kemu.io","https://dev.kemu.io","https://stage.kemu.io","https://local.kemu.io:3003"],Z_=e=>{const t=G_[e];t&&t.socket.close()};var X_=e=>{K_=new B_({port:e,maxPayload:1048576e3,verifyClient:(e,t)=>{const n=e.req.headers.origin;n&&J_.includes(n)?t(!0):t(!1,401,"Origin not allowed")}}),K_.on("connection",(e=>{const t=tv();W_(`New client connected. Registered as "${t}"`),e.id=t,G_[t]={socket:e,activeMessage:null},H_&&H_(t),e.on("message",(t=>{if(t instanceof Buffer){const n=G_[e.id];V_(t,n.activeMessage,(e=>n.activeMessage=e),(t=>{if(!t.complete)return;const r=t=>{e.send(t),W_(`Writing ${t.byteLength} bytes to socket [${n.socket.id}]: ${t.toString()}`)},i=()=>{Z_(n.socket.id)};if(t.command)return W_(`Received command from client [${n.socket.id}]: ${t.command}`),void(z_&&z_(n.socket.id,t.command,r,i));t.klMessage&&q_&&q_({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",(()=>{W_(`Client disconnected: ${e.id}`),Y_&&Y_(e.id),delete G_[e.id]})),e.on("error",(()=>{W_(`Error on client connection: ${e.id}`)}))})),console.log(`WebSocket server is running on port ${e}`)},Q_=e=>{H_=e},eI=e=>{Y_=e},tI=e=>{z_=e},nI=(e,t)=>{const n=G_[e];if(!n)return W_(`Cannot send message to unknown client [${e}]`),!1;if(t.length>=vb)return W_("Message is too long to be a command. Use sendMessage instead."),!1;const r=Pb.encodeCommand(t);return n.socket.send(r),!0},rI=e=>q_=e,iI=Z_;const oI=Ld("stopService"),sI=async e=>{const t=e.args[0];if(!t)return e.reply({error:"No service name provided"});const n=Lv.getAllServiceVersions(t);oI(`Stopping ${n.length} services with name: ${t}`);for(const e of n)await Lv.stopService({serviceName:e.info.name,version:e.info.version});const r=n.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[r]})},aI=Ld("removeService"),cI=async e=>{const t=e.args[0],n=e.args[1];if(!t)return e.reply({error:"No service name provided"});let r=Lv.getAllServiceVersions(t);n&&(r=r.filter((e=>e.info.version===n))),aI(`Removing ${r.length} service(s) with name: ${t}`);for(const e of r)await Lv.uninstallService(e.info.name,e.info.version);const i=r.map((e=>`${e.info.name}@${e.info.version}`));e.reply({success:[i]})},lI=Ld("launchService"),uI=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=pv();lI(`Loading service ${t}@${n} from ${i}`);const{errorMsg:o,service:s,errorCode:a}=await Lv.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?(lI(`Service ${t}@${n} loaded and started`),e.reply({success:[]})):(lI(`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"}):(lI("Retrying in 1 second..."),void setTimeout(u,1e3)))};u()}catch(r){return lI(`Error loading service ${t}@${n}: ${r?.message||r}`),e.reply({error:r?.message||"There was an error loading the service"})}},dI=Ld("getMatchingServices"),hI=async e=>{const t=e.args[0],n=[],r=[];dI(`Checking for matching services: ${t.map((e=>e.name)).join(", ")}`);for(const{name:e,version:i}of t){const t=Lv.getMatchingService(e,i);t?n.push({name:e,version:i,installationPath:Lv.getServiceRootDirectory(t)}):r.push({name:e,version:i})}dI(`Found ${n.length} available services and ${r.length} missing services.`),e.reply({success:[{available:n,missing:r}]})},fI=Ld("getSecretsValues");let pI;var gI=async e=>{const t=e.args[0].services;if(!pI)throw new Error("getSecretValuesFn is not set. Please call setGetSecretValuesFunction before using this function.");fI(`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 pI({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})},mI=e=>{pI=e};const yI=Ld("getMappedSecrets");let vI;var bI=async e=>{const t=e.args[0].services;yI(`Getting mapped secrets for services: ${t.map((e=>`${e.name}@${e.version}`)).join(", ")}`);const n=await vI(t),r=[{services:t.map((e=>({name:e.name,version:e.version,secrets:n[e.name]||[]})))}];e.reply({success:r})};const wI=Ld("getServiceContents"),SI=({reply:e,args:t})=>{const[n]=t;wI(`Received GetServiceContents request for service ${n.serviceName} v${n.version}`);const r=Lv.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}]});wI(`Service ${n.serviceName} v${n.version} not found`),e({error:`Service ${n.serviceName} v${n.version} not found`})};let _I={globalApiKey:void 0,environment:"production"};const II=()=>({..._I}),xI=Ld("apis"),kI=()=>{const e=II();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}}},CI=async e=>{const{data:t,error:n}=await EI(`${kI()}/v1/organization/validate/apiKey`,{apiKey:e},{"Content-Type":"application/json"});return n?(xI(`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"}},$I={},NI={},OI=e=>{const t=$I[e],n=Date.now()-(t?.lastCheckedAt.getTime()??0);return t&&n<3e5?t.features:null};function TI(e){return"number"==typeof e||!!/^0x[0-9a-f]+$/i.test(e)||/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function AI(e,t){return"constructor"===t&&"function"==typeof e[t]||"__proto__"===t}var PI=Sd((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(AI(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];AI(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]&&TI(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._||!TI(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}));Nb("ipcClient"),Nb("kemuWidgetService"),PI(process.argv.slice(2));const MI=Ld("activeClients");let DI,RI={},jI={};const LI=(e,t)=>`${e}_${t}`,FI=e=>RI[e]||null,UI=(e,t)=>{const n=LI(e,t);return jI[n]||[]},BI=()=>{for(const e in RI){const t=RI[e];if(t?.transport===td.WS){const e=Pb.encodeCommand(Xu.ServicesListChanged);t.send(e)}}},WI=async e=>{const t=[],{serviceSessionId:n,transport:r,send:i,terminateFn:o,extraInfo:s,isDevClient:a}=e;if(r===td.WS&&!s.recipe?.poolId)return c=`Bad request. Recipe pool id is required. SessionId: ${n}`,console.warn(c),void(o&&o());var c;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=LI(e.serviceName,e.version);return jI[r]=jI[r]||[],jI[r].some((e=>e.serviceId===n))||jI[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=LI(e.serviceName,e.version),o=jI[i]?.findIndex((e=>e.serviceId===n));if(-1!==o&&(jI[i]?.splice(o,1),!jI[i]?.length)){const t=Lv.getMatchingService(e.serviceName,e.version);if(t?.info.eventEmitter&&"running"===t.status){const e=FI(t.info.sessionId);e?.extraInfo.ipcSocketId&&Kb(e?.extraInfo.ipcSocketId,Xu.BroadcastEnd)}}}},removeAllSubscriptions:()=>{for(const e of t){const t=LI(e.targetService.serviceName,e.targetService.version),r=jI[t]?.findIndex((e=>e.serviceId===n));-1!==r&&jI[t]?.splice(r,1)}t.length=0}},r===td.IPC&&(BI(),GI(n))},GI=e=>{const t=Lv.getServiceBySessionId(e);if(t?.info.eventEmitter&&UI(t.info.name,t.info.version).length){const t=FI(e);t?.extraInfo.ipcSocketId&&Kb(t?.extraInfo.ipcSocketId,Xu.BroadcastStart)}},VI=e=>{const t=RI[e];var n;t?.transport===td.IPC?BI():(t?.removeAllSubscriptions(),(()=>{const e=Object.values(RI);for(const t of e)if(t.transport===td.IPC){const e=t.extraInfo.ipcSocketId,n=Lv.getServiceBySessionId(t.serviceSessionId);n?.info.eventEmitter&&(UI(n.info.name,n.info.version).length||e&&Kb(e,Xu.BroadcastEnd))}})(),t?.extraInfo.recipe?.poolId&&(n=t.extraInfo.recipe.poolId,delete $I[n],delete NI[n]),(e=>{const t=RI[e];if(t?.transport===td.WS&&t.extraInfo.recipe){const n=[{recipe:t.extraInfo.recipe}];MI(`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===td.IPC&&DI.execute(Qu.KemuComposerDisconnected,n,t.send,0,t.serviceSessionId,{async:!0}).catch((t=>{MI(`Error notifying IPC client [${e}] that a Kemu Compose client has disconnected: ${t?.message||t}`)}))}}})(e)),delete RI[e]},HI=Ld("ipc:handleIpcClientCommand"),YI=(e,t,n)=>{const r=((e,t)=>{if(e.startsWith(Xu.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&&(Jb(e,t),r=t);let i=!1;t&&(i=Lv.setServiceStatus(t,"running")),i?WI({serviceSessionId:t||e,transport:td.IPC,send:n,extraInfo:{ipcSocketId:t}}):Kb(r,Xu.SendManifest)}));!r&&HI(`Received unknown command [${t}] from service ${e}`)};let zI={};G.platform();const qI=async e=>{const t=e.args[0];if(zI.chooseDirectory)try{const n=await zI.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"})},KI=async e=>{const t=e.args[0];if(zI.chooseFile)try{const n=await zI.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 JI={},ZI={},XI={};function QI(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`positive integer expected, not ${e}`)}function ex(e){if("boolean"!=typeof e)throw new Error(`boolean expected, not ${e}`)}function tx(e){return e instanceof Uint8Array||null!=e&&"object"==typeof e&&"Uint8Array"===e.constructor.name}function nx(e,...t){if(!tx(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 rx(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");QI(e.outputLen),QI(e.blockLen)}function ix(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 ox(e,t){nx(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=QI,XI.bool=ex,XI.isBytes=tx,XI.bytes=nx,XI.hash=rx,XI.exists=ix,XI.output=ox;const sx={number:QI,bool:ex,bytes:nx,hash:rx,exists:ix,output:ox};XI.default=sx;var ax={};Object.defineProperty(ax,"__esModule",{value:!0}),ax.add5L=ax.add5H=ax.add4H=ax.add4L=ax.add3H=ax.add3L=ax.add=ax.rotlBL=ax.rotlBH=ax.rotlSL=ax.rotlSH=ax.rotr32L=ax.rotr32H=ax.rotrBL=ax.rotrBH=ax.rotrSL=ax.rotrSH=ax.shrSL=ax.shrSH=ax.toBig=ax.split=ax.fromBig=void 0;const cx=BigInt(2**32-1),lx=BigInt(32);function ux(e,t=!1){return t?{h:Number(e&cx),l:Number(e>>lx&cx)}:{h:0|Number(e>>lx&cx),l:0|Number(e&cx)}}function dx(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}=ux(e[i],t);[n[i],r[i]]=[o,s]}return[n,r]}ax.fromBig=ux,ax.split=dx;const hx=(e,t)=>BigInt(e>>>0)<<lx|BigInt(t>>>0);ax.toBig=hx;const fx=(e,t,n)=>e>>>n;ax.shrSH=fx;const px=(e,t,n)=>e<<32-n|t>>>n;ax.shrSL=px;const gx=(e,t,n)=>e>>>n|t<<32-n;ax.rotrSH=gx;const mx=(e,t,n)=>e<<32-n|t>>>n;ax.rotrSL=mx;const yx=(e,t,n)=>e<<64-n|t>>>n-32;ax.rotrBH=yx;const vx=(e,t,n)=>e>>>n-32|t<<64-n;ax.rotrBL=vx;const bx=(e,t)=>t;ax.rotr32H=bx;const wx=e=>e;ax.rotr32L=wx;const Sx=(e,t,n)=>e<<n|t>>>32-n;ax.rotlSH=Sx;const _x=(e,t,n)=>t<<n|e>>>32-n;ax.rotlSL=_x;const Ix=(e,t,n)=>t<<n-32|e>>>64-n;ax.rotlBH=Ix;const xx=(e,t,n)=>e<<n-32|t>>>64-n;function kx(e,t,n,r){const i=(t>>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:0|i}}ax.rotlBL=xx,ax.add=kx;const Ex=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0);ax.add3L=Ex;const Cx=(e,t,n,r)=>t+n+r+(e/2**32|0)|0;ax.add3H=Cx;const $x=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0);ax.add4L=$x;const Nx=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0;ax.add4H=Nx;const Ox=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0);ax.add5L=Ox;const Tx=(e,t,n,r,i,o)=>t+n+r+i+o+(e/2**32|0)|0;ax.add5H=Tx;const Ax={fromBig:ux,split:dx,toBig:hx,shrSH:fx,shrSL:px,rotrSH:gx,rotrSL:mx,rotrBH:yx,rotrBL:vx,rotr32H:bx,rotr32L:wx,rotlSH:Sx,rotlSL:_x,rotlBH:Ix,rotlBL:xx,add:kx,add3L:Ex,add3H:Cx,add4L:$x,add4H:Nx,add5H:Tx,add5L:Ox};ax.default=Ax;var Px={},Mx={};Object.defineProperty(Mx,"__esModule",{value:!0}),Mx.crypto=void 0,Mx.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=Ax,n=JI;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")}}(Tx),Object.defineProperty(KI,"__esModule",{value:!0}),KI.shake256=KI.shake128=KI.keccak_512=KI.keccak_384=KI.keccak_256=KI.keccak_224=KI.sha3_512=KI.sha3_384=KI.sha3_256=KI.sha3_224=KI.Keccak=KI.keccakP=void 0;const Px=JI,Mx=ox,Dx=Tx,Rx=[],jx=[],Lx=[],Fx=BigInt(0),Ux=BigInt(1),Bx=BigInt(2),Wx=BigInt(7),Gx=BigInt(256),Vx=BigInt(113);for(let e=0,t=Ux,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Rx.push(2*(5*r+n)),jx.push((e+1)*(e+2)/2%64);let i=Fx;for(let e=0;e<7;e++)t=(t<<Ux^(t>>Wx)*Vx)%Gx,t&Bx&&(i^=Ux<<(Ux<<BigInt(e))-Ux);Lx.push(i)}const[Hx,Yx]=(0,Mx.split)(Lx,!0),zx=(e,t,n)=>n>32?(0,Mx.rotlBH)(e,t,n):(0,Mx.rotlSH)(e,t,n),qx=(e,t,n)=>n>32?(0,Mx.rotlBL)(e,t,n):(0,Mx.rotlSL)(e,t,n);function Kx(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=zx(o,s,1)^n[r],c=qx(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=jx[n],o=zx(t,i,r),s=qx(t,i,r),a=Rx[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]^=Hx[r],e[1]^=Yx[r]}n.fill(0)}KI.keccakP=Kx;class Jx extends Dx.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,Px.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,Dx.u32)(this.state)}keccak(){Dx.isLE||(0,Dx.byteSwap32)(this.state32),Kx(this.state32,this.rounds),Dx.isLE||(0,Dx.byteSwap32)(this.state32),this.posOut=0,this.pos=0}update(e){(0,Px.exists)(this);const{blockLen:t,state:n}=this,r=(e=(0,Dx.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,Px.exists)(this,!1),(0,Px.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,Px.number)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0,Px.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 Jx(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}}KI.Keccak=Jx;const Zx=(e,t,n)=>(0,Dx.wrapConstructor)((()=>new Jx(t,e,n)));KI.sha3_224=Zx(6,144,28),KI.sha3_256=Zx(6,136,32),KI.sha3_384=Zx(6,104,48),KI.sha3_512=Zx(6,72,64),KI.keccak_224=Zx(1,144,28),KI.keccak_256=Zx(1,136,32),KI.keccak_384=Zx(1,104,48),KI.keccak_512=Zx(1,72,64);const Xx=(e,t,n)=>(0,Dx.wrapXOFConstructorWithOpts)(((r={})=>new Jx(t,e,void 0===r.dkLen?n:r.dkLen,!0)));KI.shake128=Xx(31,168,16),KI.shake256=Xx(31,136,32);const{sha3_512:Qx}=KI,ek=(e=4,t=Math.random)=>{let n="";for(;n.length<e;)n+=Math.floor(36*t()).toString(36);return n};function tk(e){let t=0n;for(const n of e.values())t=(t<<8n)+BigInt(n);return t}const nk=(e="")=>tk(Qx(e)).toString(36).slice(1),rk=Array.from({length:26},((e,t)=>String.fromCharCode(t+97))),ik=({globalObj:e=(void 0!==vd?vd:"undefined"!=typeof window?window:{}),random:t=Math.random}={})=>{const n=Object.keys(e).toString(),r=n.length?n+ek(32,t):ek(32,t);return nk(r).substring(0,32)},ok=e=>()=>e++,sk=({random:e=Math.random,counter:t=ok(Math.floor(476782367*e())),length:n=24,fingerprint:r=ik({random:e})}={})=>function(){const i=(e=>rk[Math.floor(e()*rk.length)])(e),o=Date.now().toString(36),s=t().toString(36),a=ek(n,e);return`${i+nk(`${o+a+s+r}`).substring(1,n)}`},ak=sk();qI.getConstants=()=>({defaultLength:24,bigLength:32}),qI.init=sk,qI.createId=ak,qI.bufToBigInt=tk,qI.createCounter=ok,qI.createFingerprint=ik,qI.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:ck,init:lk,getConstants:uk,isCuid:dk}=qI;var hk=ck;const fk=Rd("getUniqueId"),pk=({reply:e,sourceServiceId:t})=>(fk(`Generating unique id for service "${t}"`),e({success:[hk()]})),gk=Rd("getActiveServices"),mk=async({transport:e,sourceServiceId:t,reply:n})=>{if(gk(`Received GetServices request from ${e} [${t}]`),e===ed.WS){let e=Rv.getActiveServices();const r=jI(t);if(!r)return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});let i=[];if(r.transport===ed.WS){const t=e.filter(Rv.isInternalKemuService),n=e.filter((e=>e.devMode&&Rv.isNotInternalKemuService(e))),o=e.filter((e=>Rv.isOfficialKemuService(e)&&Rv.isNotInternalKemuService(e)&&Rv.isNotDevService(e))).sort(((e,t)=>e.name.localeCompare(t.name))),s=e.filter((e=>Rv.isNotDevService(e)&&Rv.isNotInternalKemuService(e)&&!Rv.isOfficialKemuService(e))),a=SI();let c=null;c=a.globalApiKey?await(async(e,t)=>{const{features:n}=await(async e=>{const{apiKey:t,recipePoolId:n}=e,r=$I(n);if(r)return{valid:!0,features:r,error:null};const{valid:i,features:o,error:s}=await kI(t);return i&&(EI[n]={features:o,lastCheckedAt:new Date}),{valid:i,features:o,error:s}})({apiKey:e,recipePoolId:t});return n})(a.globalApiKey,r.extraInfo.recipe?.poolId):await(async e=>{const t=$I(e);if(t)return t;const n=CI[e];if(n)return await n;const r=(async()=>{try{const{features:t}=await kI("free");return EI[e]={features:t,lastCheckedAt:new Date},t}finally{delete CI[e]}})();return CI[e]=r,await r})(r.extraInfo.recipe?.poolId);const l=c?.hub_services??0,u=o.slice(0,-1!==l?l:o.length);-1!==l&&(i=o.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,...n,...u,...s]}const o=Rv.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:Rv.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 yk="runtime",vk=null;const bk=()=>yk,wk=Rd("getSystemInfo"),Sk=async({reply:e})=>{wk("Received GetSystemInfo request"),e({success:[await(async()=>{const e=SI().globalApiKey;return{platformArch:ad(),isDesktopHub:"desktop"===bk(),isRuntimeHub:"runtime"===bk(),hubVersion:rv,hasValidApiKeyConfigured:!!e,...vk?{updateAvailable:vk}:{}}})()]})},_k=Rd("removeService"),Ik=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=Rv.getAllServiceVersions(i),a=s.find((e=>e.info.version===o));if(!a)return n({error:"Service not found"});_k(`Removing ${s.length} service(s) with name: ${i}`);const c=a.info.publicationId;let l;if(await Rv.uninstallService(a.info.name,a.info.version),c){if(!jI(t))return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});const e=SI();if(!e.globalApiKey)return n({error:"Global API key is not set",errCode:"GLOBAL_API_KEY_NOT_SET"});const r=e.globalApiKey;_k(`Updating license details for "${c}"`);const i=await(async e=>{const{data:t,error:n}=await xI(`${II()}/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=>(_k(`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}}]})},xk=Rd("getDecryptedEdgeApiKey"),kk=({reply:e})=>(xk("Getting decrypted edge API key"),e({success:[SI().globalApiKey]})),Ek=({reply:e})=>{xk("Getting hub config");const t=SI();return e({success:[{kemuApiKey:t.globalApiKey,environment:t.environment}]})};let Ck,$k,Nk,Ok,Tk;const Ak=e=>e.transport===ed.IPC&&(e.reply({error:"Transport is not allowed to call this function"}),!0);var Pk=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(!Ck)return e.reply({error:"Get recipe secrets function not set"});const i=await Ck({...t[0]}),o={};for(const e of r)o[e]=e in i?i[e]:null;const s=[{secrets:o}];e.reply({success:s})},Mk=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretsMap;if(Ak(e))return;if(!$k)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 $k({recipeUuid:n,secretsMap:r})}];e.reply({success:i})},Dk=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretName;if(Ak(e))return;if(!Nk)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 Nk({recipeUuid:n,secretName:r})}];e.reply({success:i})},Rk=async e=>{const t=e.args[0].recipeUuid;if(!Ok)return e.reply({error:"Get recipe secret mappings function not set"});if(!t)return e.reply({error:"Invalid request parameters"});const n=[{secrets:await Ok({recipeUuid:t})}];e.reply({success:n})},jk=async e=>{const t=e.args,n=t[0].hubServiceName,r=t[0].secrets;return Tk?n&&r?Array.isArray(r)?(await Tk({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 Lk,Fk,Uk;const Bk=e=>e.transport===ed.IPC&&(e.reply({error:"You are not allowed to manage secrets using this transport"}),!0);var Wk=async e=>{if(e.args,Bk(e))return;if(!Uk)return e.reply({error:"Get hub secrets function not set"});const t=[{contexts:await Uk()}];e.reply({success:t})},Gk=async e=>{const t=e.args;if(Bk(e))return;if(!Lk)return e.reply({error:"Add hub secret function not set"});const n=[{contexts:await Lk(t[0])}];e.reply({success:n})},Vk=async e=>{const t=e.args;if(Bk(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 Hk=S(W(import.meta.url));let Yk=null;const zk=Rd("hub"),qk=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=vb?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=Zb.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}Xb+=1;const u=`${i}-${Xb}-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=vb?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:t,args:r,messageId:u,type:"execute"}};s(c)&&(h=Zb.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)=>{Xb+=1;const a=`${i}-${Xb}-multicast-${e.substring(0,10)}`;let c=vb?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=Zb.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=Zb.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");PI=qk,qk.setLogger(zk);const Kk={[Xu.RebootToInstallUpdate]:null,[Xu.GetFileContentFromCacheId]:null,[Xu.SaveRecipeToFile]:null},Jk=(e,t)=>{const{transmission:n}=t;if(0!==n.targetServiceId){const r=jI(n.targetServiceId);if(!r)return zk(`Service [${e}] ${n.sourceServiceId} is sending data to an unknown service ["${n.targetServiceId}"]`),!0;r.transport,ed.IPC;const i=t.json?.messageId;return zk(`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},Zk=({sourceServiceId:e,args:t})=>{const n=Rv.getServiceBySessionId(e);if(n){const r=LI(n.info.name,n.info.version),i=LI(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}};qk.broadcast(Xu.BroadcastEvent,[s],o,0)}},Xk=async({args:e,reply:t})=>{const n=e[0];if(!n)return zk("Invalid config for SendToRecipe"),t({error:"Invalid config for SendToRecipe"});const r=(i=n.recipePoolId,Object.values(MI).find((e=>e.extraInfo.recipe?.poolId===i))||null);var i;if(!r)return zk(`No client found for recipe pool id ${n.recipePoolId}`),t({error:`No client found for recipe pool id "${n.recipePoolId}"`});try{const e=qk.execute(Xu.SendToRecipe,[n],r.send,0,r.serviceSessionId,{async:!n.waitForResponse,timeout:n.timeout});n.waitForResponse?t({success:await e}):t({success:[]})}catch(e){return zk(`Error sending to recipe ${n.recipePoolId}: ${e?.message||e}`),t({error:e?.message||"There was an error sending to the recipe"})}},Qk=e=>{const{send:t,transmission:n,json:r}=e;zk(`Raw message Id received from WS: ${r?.messageId}`),Jk(ed.WS,e)||qk.processMessage(ed.WS,t,n,r)},eE=e=>{const t=(n=e,`${Zu.SocketAcknowledge}${n}`);var n;eI(e,t)},tE=(e,t)=>{zk(`Received unknown command [${t}] from service ${e}`)},nE=async e=>{const{args:t,sourceServiceId:n,send:r,reply:i}=e,o=n,s=t[0];s.user?.id&&mv.setGlobalUserId(s.user?.id),await UI({serviceSessionId:n,transport:ed.WS,send:r,terminateFn:()=>{nI(n)},extraInfo:{websocketId:o,recipe:s.recipe,user:{userEmail:s.user?.email,userId:s.user?.id}}}),i({success:[]})},rE=e=>{zk(`WS Client ${e} disconnected`),WI(e)},iE=e=>{if(1===e.sourceServiceId)return e.functionName===Xu.GetFileContentFromCacheId;if(e.functionName===Xu.GetHubConfig){const t=Rv.getServiceBySessionId(e.sourceServiceId);if(!t||!Rv.isOfficialKemuService(t.info)&&Rv.isNotDevService(t.info))return zk(`Service "${e.sourceServiceId}" attempting to get hub config but is not an official Kemu service`),!1}return e.functionName===Xu.SocketAckResponse||e.functionName===Xu.ServiceManifest||e.functionName===Xu.SubscribeToService||(!!jI(e.sourceServiceId)||(e.reply({error:`Session id "${e.sourceServiceId}" not found. Please acknowledge the session first.`}),!1))},oE=async({sourceServiceId:e,args:t,transport:n,send:r})=>{if(n!==ed.IPC){var i;zk(`Received manifest from non IPC service ${e}.`)}else{const n=t[0];if(n.devMode){const t=Rv.getMatchingDevService(n.name,n.version,"stopped");if(t){zk(`Found matching previous service ${t.info.name} (${t.info.version}). Reactivating previous client with session id ${t.info.sessionId}`);const o=jI(t.info.sessionId);if(!o)return void zk(`Could not find previous client instance for ${t.info.name} (${t.info.version}). Aborting manifest injection`);o.send=r,MI[i=e]?delete MI[i]:AI(`Could not find source client with session id ${i}`),qb(e,t.info.sessionId);const s=await cv(n,n.path);t.info={...t.info,...s},zk(`Updating manifest for dev service ${t.info.sessionId}`),Rv.setServiceManifest(t.info.sessionId,s,"running"),zk(`Asking service ${e} to assume previous session id ${t.info.sessionId}`),zb(t.info.sessionId,(e=>`${Zu.AssumeSession}${e}`)(t.info.sessionId)),(e=>{const t=MI[e];t?t.isDevClient?(t.disconnected=!1,t.transport===ed.IPC&&(FI(),BI(e))):AI(`Client with session id ${e} is not a dev client`):AI(`Could not find source client with session id ${e}`)})(t.info.sessionId)}else{Rv.addDevService(e,n,"running");const t=jI(e);t?t.isDevClient=!0:UI({serviceSessionId:e,transport:ed.IPC,send:r,extraInfo:{ipcSocketId:e},isDevClient:!0})}return}zk(`Received manifest from non dev service ${e} [${n.name}@(${n.version})]. Ignoring...`)}};var sE=async e=>{var t;zk("Starting Kemu Hub..."),t=e.desktopMode?"desktop":"runtime",yk=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&&mv.setTracker(e.errorTracker),(e=>{wI={...wI,...e}})({serviceUrl:e.serviceUrl,globalApiKey:e.globalApiKey,environment:e.environment}),qk.registerFunctionsMiddleware(iE),e.secrets?.serviceSecrets&&(e=>{Tk=e})(e.secrets.serviceSecrets.addServiceSecretFn),e.secrets?.recipeSecrets&&((e=>{Ck=e})(e.secrets.recipeSecrets.getRecipeDecryptedSecretsFn),(e=>{$k=e})(e.secrets.recipeSecrets.addRecipeSecretFn),(e=>{Nk=e})(e.secrets.recipeSecrets.deleteRecipeSecretFn),(e=>{Ok=e})(e.secrets.recipeSecrets.getRecipeSecretMappingsFn)),e.secrets?.hubSecrets&&((e=>{Uk=e})(e.secrets.hubSecrets.getHubSecretsFn),(e=>{Lk=e})(e.secrets.hubSecrets.addHubSecretsFn),(e=>{Fk=e})(e.secrets.hubSecrets.deleteHubSecretFn)),qk.registerFunction(Xu.GetServiceContents,bI),qk.registerFunction(Xu.GetServices,mk),qk.registerFunction(Xu.GetSystemInfo,Sk),qk.registerFunction(Xu.ShowHubScreen,(async({args:t,reply:n})=>{const[{screenName:r,context:i}]=t;if(e?.onShowHubScreen)try{await e.onShowHubScreen(r,i),n({success:[]})}catch(t){n({error:`Failed to show hub screen "${r}": ${t}`,errCode:"FAILED_TO_SHOW_HUB_SCREEN"})}else n({error:"This hub does not support showing hub screens",errCode:"FUNCTION_NOT_SUPPORTED"})})),qk.registerFunction(Xu.RestartApp,(({reply:t})=>{e?.onRestartApp?(e.onRestartApp(),t({success:[]})):t({error:"This hub does not support restarting the app",errCode:"FUNCTION_NOT_SUPPORTED"})})),qk.registerFunction(Xu.ExchangeSessionTokenForApiKey,(async({args:t,reply:n})=>{const[{sessionToken:r}]=t;if(e?.onFetchApiKeyFromCode){const t=await e.onFetchApiKeyFromCode({sessionToken:r});n({success:[{success:t.success??!1,error:t.error??void 0}]})}else n({error:"This hub does not support fetching API key from code",errCode:"FUNCTION_NOT_SUPPORTED"})})),qk.registerFunction(Xu.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"})})),qk.registerFunction(Xu.UnsubscribeFromService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===ed.WS){const[e]=n,i=jI(r);if(!i)return t({error:`Session id "${r}" not found`});zk(`Service ${r} unsubscribing from "${e.targetService.serviceName} (${e.targetService.version})"`),t({success:[]}),i?.removeSubscription({serviceName:e.targetService.serviceName,version:e.targetService.version})}})),qk.registerFunction(Xu.SubscribeToService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===ed.WS){const[e]=n,i=jI(r),o=e.targetService;if(!i)return t({error:`Session id "${r}" not found`});if(zk(`Service ${r} subscribing to "${o.serviceName} (${o.version})"`),"hub"===o.serviceName)return i.addSubscription(o),void t({success:[]});if(!i.addSubscription(o))return zk(`Service ${r} already subscribed to "${o.serviceName} (${o.version})", ignoring request.`),t({success:[]});const s=Rv.getMatchingService(o.serviceName,o.version);if(!s)return zk(`Service ${o.serviceName} ${o.version} not active yet`),t({success:[]});if(!s.info.eventEmitter)return zk(`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=jI(s.info.sessionId);return a?.extraInfo.ipcSocketId&&(zk(`Sending Broadcast START command to service ${s.info.sessionId}`),zb(a?.extraInfo.ipcSocketId,Zu.BroadcastStart)),t({success:[]})}})),qk.registerFunction("stopService",iI),qk.registerFunction("removeService",sI),qk.registerFunction("launchService",cI),qk.registerFunction("getMatchingServices",uI),qk.registerFunction("getSecretsValues",fI),qk.registerFunction(Xu.GetMappedSecrets,yI),qk.registerFunction(Xu.BroadcastEvent,Zk),qk.registerFunction(Xu.ServiceManifest,oE),qk.registerFunction(Xu.ChooseDirectoryDialog,YI),qk.registerFunction(Xu.ChooseFileDialog,zI),qk.registerFunction(Xu.GetUniqueId,pk),qk.registerFunction(Xu.SendToRecipe,Xk),qk.registerFunction(Xu.GetDecryptedEdgeApiKey,kk),qk.registerFunction(Xu.GetHubConfig,Ek),qk.registerFunction(Xu.SocketAckResponse,nE),qk.registerFunction(Xu.UninstallService,Ik),qk.registerFunction(Xu.GetRecipeDecryptedSecretsValues,Pk),qk.registerFunction(Xu.GetRecipeSecretMappings,Rk),qk.registerFunction(Xu.AddRecipeSecretMapping,Mk),qk.registerFunction(Xu.DeleteRecipeSecretMapping,Dk),qk.registerFunction(Xu.GetHubSecrets,Wk),qk.registerFunction(Xu.AddHubSecrets,Gk),qk.registerFunction(Xu.DeleteHubSecret,Vk),qk.registerFunction(Xu.AddServiceSecret,jk),Object.entries(Kk).forEach((([e,t])=>{t?qk.registerFunction(e,t):(zk(`Skipping registration of "${e}" because it's not implemented`),qk.registerFunction(e,(({reply:t})=>{t({error:`This hub does not support "${e}"`,errCode:"FUNCTION_NOT_SUPPORTED"})})))})),(e=>{Gb=e})((e=>{const{send:t,transmission:n,json:r}=e;zk(`Raw message Id received from IPC: ${r?.messageId}`),Jk(ed.IPC,e)||qk.processMessage(ed.IPC,t,n,r)})),tI(Qk),Z_(eE),Q_(tE),X_(rE),(e=>{Wb=e})(VI),(e=>{Ub=e})((e=>{const t=(e=>`${Zu.IpcAcknowledge}${e}`)(e);zb(e,t)})),(e=>{Bb=e})((e=>{zk(`IPC socket [${e}] disconnected`);const t=jI(e);if(t){zk(`Found matching service for disconnected socket. SessionId: ${t.serviceSessionId}`);const e=Rv.getServiceBySessionId(t.serviceSessionId);Rv.setServiceStatus(t.serviceSessionId,"stopped"),e?.devMode?(t.disconnected=!0,FI()):WI(t.serviceSessionId)}})),await(e=>(e?.ipcId&&(gb.config.id=e.ipcId),e?.ipcAppSpace&&(gb.config.appspace=e.ipcAppSpace),new Promise((e=>{gb.serve((()=>{Fb.info("IPC Server Initiated"),gb.server.on("data",((e,t)=>{const n=Vb[t.id];n?(Fb.data(`IPC Socket [${t.id}] data ${e.byteLength} bytes`),Hb(e,n.activeMessage,(e=>n.activeMessage=e),(e=>{if(!e.complete)return;const n=e=>{t.write(e)};if(e.command)return Fb.data(`Received command from client [${t.id}]: ${e.command}`),void(Wb&&Wb(t.id,e.command,n));e.klMessage&&Gb&&Gb({send:n,transmission:{sourceServiceId:e.sourceServiceId??-1,targetServiceId:e.targetServiceId??-1,rawMessage:e.rawMessage},json:e.klMessage.json})}))):Fb.data(`Received data from unknown client [${t.id}]. Ignoring.`)})),gb.server.on("connect",(e=>{const t=Qy();Fb.info(`New client connected. Registered as "${t}"`),e.id=t,Vb[t]={socket:e,activeMessage:null,disconnectHandler:()=>Yb(t)},e.on("close",Vb[t].disconnectHandler),Ub&&Ub(t)})),gb.server.on("disconnect",(e=>{Yb(e.id)})),gb.server.on("error",(e=>{console.log(`IPC Server Error: ${e}`)})),e()})),gb.server.start()}))))({ipcAppSpace:n,ipcId:r}),e?.ws?.disabled||await J_(e?.ws?.port||5368);const i=e?.defaultServicesPath||b.resolve(Hk,"defaultServices");Yk=i;const o=process.env.DEV_SESSION_ID;Rv.setHubIpcConfig({recipePath:e?.recipeRootPath,appSpace:n,id:r}),Rv.setEnableServiceLogsConfig(!!e?.enableServiceLogs),e?.servicesInstallPath&&(e=>{uv=e})(e.servicesInstallPath),e?.testServicesInstallPath&&(e=>{dv=e})(e.testServicesInstallPath);const s=hv(),a=fv(),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=SI().serviceUrl,t.__KEMU_ENVIRONMENT=SI().environment,t};e?.getServiceSecretsFn?(Rv.setGetSecretsFunction(e.getServiceSecretsFn),pI(e.getServiceSecretsFn)):(Rv.setGetSecretsFunction(c),pI(c)),(e=>{mI=e})(e?.getMappedSecretsFn?e.getMappedSecretsFn:async e=>e.reduce(((e,t)=>({...e,[t.name]:[]})),{})),Rv.setSpawnNodeFunction(e?.spawnFn?e.spawnFn:({args:e,options:t})=>{const n={...process.env};return V("node",e||[],{...t,env:{...n,...t?.env}})}),e?.noDefaultServices||await Rv.loadServices(i,{fixedSession:o?parseInt(o):void 0,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,internalServices:!0,enableLogs:!0}),null!==e?.servicesInstallPath&&(await lv(s)||await h(s,{recursive:!0}),await Rv.loadServices(s,{internalServices:!1,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,enableLogs:!!e?.enableServiceLogs}));const l=process.env.DEV_NO_SPAWN_LIST?.split(",");await Rv.launchServices({noSpawningList:l||[]}),!1!==e.autoRegisterCleanupHandlers&&(()=>{zk("Registering automatic cleanup handlers for process signals");const e=async e=>{zk(`Received ${e}, cleaning up services...`);try{await Rv.killAllServices(),zk("Services cleaned up successfully"),process.exit(0)}catch(e){zk(`Error during cleanup: ${e}`),process.exit(1)}},t=async e=>{const t=e instanceof Error?e.message:String(e);zk(`Uncaught error: ${t}, cleaning up services...`);try{await Rv.killAllServices(),zk("Services cleaned up after crash")}catch(e){zk(`Error during crash cleanup: ${e}`)}process.exit(1)};process.on("SIGINT",(()=>e("SIGINT"))),process.on("SIGTERM",(()=>e("SIGTERM"))),process.on("uncaughtException",t),process.on("unhandledRejection",(e=>{t(new Error(`Unhandled rejection: ${e}`))}))})(),zk("Kemu Hub started"),(e?.onChooseDirectory||e?.onChooseFile)&&(e=>{HI=e})({chooseDirectory:e.onChooseDirectory,chooseFile:e.onChooseFile})},aE=e=>{if(e===ed.WS)return{handleWebsocketConnectionEvent:eE,handleWebsocketClientDisconnectionEvent:rE,handleWebsocketMessage:Qk,handleWebsocketClientCommand:tE,getRemoteInvoke:()=>qk}},cE=(e=[])=>{let t;const n=new Promise((n=>{const r=()=>{if(Rv.getAllServices().every((e=>"running"===e.status))&&e.every((e=>"running"===Rv.getMatchingService(e.name,e.version)?.status)))return n();t=setTimeout(r,100)};r()}));return n.abort=()=>{t&&clearTimeout(t)},n};const lE=Hl("processManager"),uE=new Set;let dE=!1,hE=[];const fE=()=>{for(const e of uE)if(!e.killed&&e.pid)try{e.kill("SIGTERM")}catch(t){console.error(`Failed to kill process ${e.pid}:`,t)}uE.clear()},pE=e=>{const{onCleanup:t,onEmergencyCleanup:n}=e||{};if(dE){for(const{event:e,handler:t}of hE)process.removeListener(e,t);hE=[],dE=!1}let r=!1,i=!1;const o=async e=>{if(r)lE("Cleanup already in progress, ignoring duplicate signal");else{r=!0;try{if(t)try{await t()}catch(e){console.error("Error during cleanup:",e)}fE(),e&&(await new Promise((e=>{setTimeout((()=>{e()}),100)})),process.exit(0))}finally{r=!1}}},s=async()=>{if(i||r)console.error("Cleanup already in progress, ignoring duplicate error handler");else{i=!0;try{if(n)try{await n()}catch(e){console.error("Error during emergency cleanup:",e)}fE()}finally{i=!1}}};let a=null;const c=(e,t)=>{process.on(e,t),hE.push({event:e,handler:t})};c("SIGINT",(async()=>{lE("Received SIGINT, cleaning up..."),await o("SIGINT")})),c("SIGTERM",(async()=>{lE("Received SIGTERM, cleaning up..."),await o("SIGTERM")})),c("SIGHUP",(async()=>{lE("Received SIGHUP, cleaning up..."),await o("SIGHUP")})),c("uncaughtException",(async e=>{console.error("Uncaught exception:",e),await s(),process.exit(1)})),c("unhandledRejection",(async(e,t)=>{console.error("Unhandled rejection at:",t,"reason:",e),await s(),process.exit(1)})),c("beforeExit",(()=>{a||(a=(async()=>{if(t)try{await t()}catch(e){console.error("Error during cleanup:",e)}fE()})(),a.catch((e=>{console.error("Error in beforeExit handler:",e),fE()})))})),dE=!0};let gE;const mE=Hl("run"),yE=rd(),vE=1e3,bE=v(process.argv.slice(2)),wE=e=>"number"==typeof e?{type:me.Number,value:e}:"string"==typeof e?{type:me.String,value:e}:"boolean"==typeof e?{type:me.Boolean,value:e}:Array.isArray(e)?{type:me.Array,value:e}:e;global.ImageData=q;const SE=e=>e&&"string"==typeof e.format&&e.data&&e.data instanceof ArrayBuffer;ke({createCanvas:(e,t)=>J(e,t),loadImage:async e=>{let t=e;if(SE(e)){const n=e;t=Buffer.from(n.data)}const n=await K(t),r=J(n.width,n.height).getContext("2d");r.drawImage(n,0,0,n.width,n.height);return r.getImageData(0,0,n.width,n.height)}});const _E=(e,t)=>"*"===e?ho.onAnyGlobalVariableChange(t):ho.onGlobalVariableChange(e,t),IE=(e,t,n)=>ho.setGlobalVariable({name:e,value:t,disableChangeNotifications:n?.disableChangeNotifications||!1,disableDefineNotifications:n?.disableDefineNotifications||!1,doNotOverrideExisting:n?.doNotOverrideExisting||!1}),xE=e=>{ho.deleteGlobalVariable({name:e})},kE=()=>ho.getAllVariables(),EE=e=>ho.getGlobalVariable(e),CE=e=>Yi(e),$E=e=>async()=>{throw new Error(`${e} not implemented`)},NE={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:me.ImageData}},loadImageFile:async e=>{const t=await K(e),n=J(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=J(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 OE={start:async r=>{r=r||{};const i=r?.runtimeCommand?.trim()||process.env.KEMU_EDGE_RUNTIME_COMMAND?.trim(),o=r?.recipePath||bE.recipePath||process.env.KEMU_EDGE_RECIPE_PATH||process.cwd();if(!o)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 s=o.endsWith(".json")||o.endsWith(".kemu"),a=s?H(o):o,c=s?o:Y(a,"recipe.kemu"),{parsed:l,error:u}=await e({path:Y(z(a),".env")});u&&console.warn(`Failed to load .env file: ${u.message}. This is not an error, it just means that the .env file is not present or is not readable.`);const d=r.apiKey||process.env.KEMU_API_KEY,h=process.env.KEMU_CONFIG;if(!d)throw new Error("Missing API key. Please provide it via config.apiKey or KEMU_API_KEY environment variable.");if(r.envConfig){const{serviceUrl:e,environment:t}=r.envConfig;if(!e||!t)throw new Error("Missing server URL or environment in config.envConfig")}else if(!h)throw new Error("Missing server URL or environment in config.envConfig");const f=(e=>{try{return JSON.parse(e||"")}catch(e){return null}})(await t(z(c),"utf-8"));if(!f)throw new Error("Failed to parse recipe file");if(!f.author?.id)throw new Error("Missing required author ID in recipe file.");const{serviceUrl:p,environment:g}=r.envConfig||(e=>{const t=Buffer.from(e,"base64").toString("utf8"),[n,r]=t.split("<@>");if(!n||!r)throw new Error("Invalid configuration.");return{serviceUrl:n,environment:r}})(h);await vc();const m={id:f.uuid||String(Date.now()),version:1,author:f.author.id};(e=>{yo=e})(console);const y=aE(_e.WS),v=(e,t)=>{if(t)y?.handleWebsocketMessage({send:w,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg?.json});else{const t=e instanceof Buffer?e.toString():e;y?.handleWebsocketClientCommand(vE,t)}},b=(Tl={instanceServiceId:vE,sendBuf:v,sendCmd:v,triggerOnCommand:(...e)=>Al(...e),triggerOnConnected:()=>Pl(),triggerOnDisconnected:()=>Ml(),triggerOnMessageReceived:(...e)=>Dl(...e)},Tl);const w=(e,t)=>{if(t)b.triggerOnMessageReceived({send:v,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg.json});else{const t=e instanceof Buffer?e.toString():e;b.triggerOnCommand(t)}},S=od(),_=y.getRemoteInvoke();S.disableServiceEncoding(0,!0),_.disableServiceEncoding(vE,!0);const I=Object.values(f.blocks[pe].gates).filter((e=>e.type===Je.hubService&&e.state.service&&!0!==e.state.service?.webOnly)),x=I.map((e=>{const t=e.state.service;return{name:t.name,version:t.version}})),k=Y(a,"services"),E=await n(k).then((()=>!0)).catch((()=>!1));if(x.length>0&&!E)throw new Error("Services directory not found but required services are defined in the recipe. Please make sure there is a `services` directory in the recipe root and add the services you want to use to it.");pE();await sE({globalApiKey:d,serviceUrl:p,spawnFn:i?({args:e,options:t,serviceInfo:n})=>{if(!i)throw new Error("Runtime command not provided. Please specify it in the config object, via a command line argument [--runtimeCommand] or as an environment variable [KEMU_EDGE_RUNTIME_COMMAND].");console.log(`Spawning service: "${n.name}" with command: "${i} ${e?.join(" ")}"`);const r=i.split(" ").filter(Boolean),o=Z(r[0],r.slice(1).concat(e||[]),{...t,env:{...process.env,...t?.env}});return(e=>{uE.add(e),e.on("exit",(()=>{uE.delete(e)}))})(o),o}:null,recipeRootPath:a,servicesInstallPath:E?Y(a,"services"):null,noDefaultServices:!0,environment:g,ws:{disabled:!0},secrets:{recipeSecrets:{getRecipeDecryptedSecretsFn:async()=>({...l}),getRecipeSecretMappingsFn:$E("getRecipeSecretMappingsFn"),addRecipeSecretFn:$E("addRecipeSecretFn"),deleteRecipeSecretFn:$E("deleteRecipeSecretFn")}},ipc:{appSpace:"kemu-runner.",id:m.id}}),mE("Waiting for services to run"),await cE(x),mE("All services are running"),el(yE),il(),Ia.onGlobalProcessingStateChange((e=>{mE("Global processing state changed: ",e)})),f.globalVariables&&(f.globalVariables=await sl(f.globalVariables));const C=await Zc(f,"runner",m.version,m.author,wr.Desktop);return gE=C,pE({onCleanup:async()=>{gE&&await Xc(gE)},onEmergencyCleanup:async()=>{gE&&await Xc(gE)}}),id(C),await td({id:f.author.id}),new Promise(((e,t)=>{var n;nd("acknowledged",(async()=>{await yE.getServices();const{failed:n,sendToInputWidget:r,invokeRecipeLoadedWidgets:i}=await Qc(C);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)})),mE("Recipe started"),e({sendToInputWidgetAndWaitForOutput:(e,t)=>{const n=wE(t);return r({inputName:e,data:n,waitForOutputChild:!0})},sendToInputWidget:(e,t)=>{const n=wE(t);return r({inputName:e,data:n,waitForOutputChild:!1})},globalVariables:{onChange:_E,setValue:IE,getValue:EE,delete:xE,getAll:kE},status:{onChange:CE},edgeFunctions:{register:Za.registerFunctionHandler,unregister:Za.unregisterFunctionHandler,clearAll:Za.clearAllHandlers}})})),b.triggerOnConnected(),b.triggerOnCommand((n=vE,`${be.SocketAcknowledge}${n}`))}))},terminate:async()=>{gE&&await Xc(gE),fE()}};export{me as DataType,OE as default,SE as isBinaryFile,NE 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=Mx,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")}}(Px),Object.defineProperty(ZI,"__esModule",{value:!0}),ZI.shake256=ZI.shake128=ZI.keccak_512=ZI.keccak_384=ZI.keccak_256=ZI.keccak_224=ZI.sha3_512=ZI.sha3_384=ZI.sha3_256=ZI.sha3_224=ZI.Keccak=ZI.keccakP=void 0;const Dx=XI,Rx=ax,jx=Px,Lx=[],Fx=[],Ux=[],Bx=BigInt(0),Wx=BigInt(1),Gx=BigInt(2),Vx=BigInt(7),Hx=BigInt(256),Yx=BigInt(113);for(let e=0,t=Wx,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Lx.push(2*(5*r+n)),Fx.push((e+1)*(e+2)/2%64);let i=Bx;for(let e=0;e<7;e++)t=(t<<Wx^(t>>Vx)*Yx)%Hx,t&Gx&&(i^=Wx<<(Wx<<BigInt(e))-Wx);Ux.push(i)}const[zx,qx]=(0,Rx.split)(Ux,!0),Kx=(e,t,n)=>n>32?(0,Rx.rotlBH)(e,t,n):(0,Rx.rotlSH)(e,t,n),Jx=(e,t,n)=>n>32?(0,Rx.rotlBL)(e,t,n):(0,Rx.rotlSL)(e,t,n);function Zx(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=Kx(o,s,1)^n[r],c=Jx(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=Fx[n],o=Kx(t,i,r),s=Jx(t,i,r),a=Lx[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]^=zx[r],e[1]^=qx[r]}n.fill(0)}ZI.keccakP=Zx;class Xx extends jx.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,Dx.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,jx.u32)(this.state)}keccak(){jx.isLE||(0,jx.byteSwap32)(this.state32),Zx(this.state32,this.rounds),jx.isLE||(0,jx.byteSwap32)(this.state32),this.posOut=0,this.pos=0}update(e){(0,Dx.exists)(this);const{blockLen:t,state:n}=this,r=(e=(0,jx.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,Dx.exists)(this,!1),(0,Dx.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,Dx.number)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0,Dx.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}}ZI.Keccak=Xx;const Qx=(e,t,n)=>(0,jx.wrapConstructor)((()=>new Xx(t,e,n)));ZI.sha3_224=Qx(6,144,28),ZI.sha3_256=Qx(6,136,32),ZI.sha3_384=Qx(6,104,48),ZI.sha3_512=Qx(6,72,64),ZI.keccak_224=Qx(1,144,28),ZI.keccak_256=Qx(1,136,32),ZI.keccak_384=Qx(1,104,48),ZI.keccak_512=Qx(1,72,64);const ek=(e,t,n)=>(0,jx.wrapXOFConstructorWithOpts)(((r={})=>new Xx(t,e,void 0===r.dkLen?n:r.dkLen,!0)));ZI.shake128=ek(31,168,16),ZI.shake256=ek(31,136,32);const{sha3_512:tk}=ZI,nk=(e=4,t=Math.random)=>{let n="";for(;n.length<e;)n+=Math.floor(36*t()).toString(36);return n};function rk(e){let t=0n;for(const n of e.values())t=(t<<8n)+BigInt(n);return t}const ik=(e="")=>rk(tk(e)).toString(36).slice(1),ok=Array.from({length:26},((e,t)=>String.fromCharCode(t+97))),sk=({globalObj:e=(void 0!==wd?wd:"undefined"!=typeof window?window:{}),random:t=Math.random}={})=>{const n=Object.keys(e).toString(),r=n.length?n+nk(32,t):nk(32,t);return ik(r).substring(0,32)},ak=e=>()=>e++,ck=({random:e=Math.random,counter:t=ak(Math.floor(476782367*e())),length:n=24,fingerprint:r=sk({random:e})}={})=>function(){const i=(e=>ok[Math.floor(e()*ok.length)])(e),o=Date.now().toString(36),s=t().toString(36),a=nk(n,e);return`${i+ik(`${o+a+s+r}`).substring(1,n)}`},lk=ck();JI.getConstants=()=>({defaultLength:24,bigLength:32}),JI.init=ck,JI.createId=lk,JI.bufToBigInt=rk,JI.createCounter=ak,JI.createFingerprint=sk,JI.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:uk,init:dk,getConstants:hk,isCuid:fk}=JI;var pk=uk;const gk=Ld("getUniqueId"),mk=({reply:e,sourceServiceId:t})=>(gk(`Generating unique id for service "${t}"`),e({success:[pk()]})),yk=Ld("getActiveServices"),vk=async({transport:e,sourceServiceId:t,reply:n})=>{if(yk(`Received GetServices request from ${e} [${t}]`),e===td.WS){let e=Lv.getActiveServices();const r=FI(t);if(!r)return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});let i=[];if(r.transport===td.WS){const t=e.filter(Lv.isInternalKemuService);yk("internalServices",t);const n=e.filter((e=>e.devMode&&Lv.isNotInternalKemuService(e)));yk("devServices",n);const o=e.filter((e=>Lv.isOfficialKemuService(e)&&Lv.isNotInternalKemuService(e)&&Lv.isNotDevService(e))).sort(((e,t)=>e.name.localeCompare(t.name)));yk("kemuServices",o);const s=e.filter((e=>Lv.isNotDevService(e)&&Lv.isNotInternalKemuService(e)&&!Lv.isOfficialKemuService(e))),a=II();yk("userCustomServices",s);let c=null;a.globalApiKey?(yk("Fetching license features..."),c=await(async(e,t)=>{const{features:n}=await(async e=>{const{apiKey:t,recipePoolId:n}=e,r=OI(n);if(r)return{valid:!0,features:r,error:null};const{valid:i,features:o,error:s}=await CI(t);return i&&($I[n]={features:o,lastCheckedAt:new Date}),{valid:i,features:o,error:s}})({apiKey:e,recipePoolId:t});return n})(a.globalApiKey,r.extraInfo.recipe?.poolId),yk("features",c)):(yk("Fetching free license features..."),c=await(async e=>{const t=OI(e);if(t)return t;const n=NI[e];if(n)return await n;const r=(async()=>{try{const{features:t}=await CI("free");return $I[e]={features:t,lastCheckedAt:new Date},t}finally{delete NI[e]}})();return NI[e]=r,await r})(r.extraInfo.recipe?.poolId),yk("features",c));const l=c?.hub_services??0,u=o.slice(0,-1!==l?l:o.length);-1!==l&&(i=o.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,...n,...u,...s]}const o=Lv.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:Lv.isInternalKemuService(e),svgIcon:e.svgIcon,color:e.color,shortTitle:e.shortTitle}))),s={available:e.map((e=>{const{widgetUIContents:t,...n}=e;return{...n}})),failed:o,installed:i};yk("response",s),n({success:[s]})}};let bk="runtime",wk=null;const Sk=()=>bk,_k=Ld("getSystemInfo"),Ik=async({reply:e})=>{_k("Received GetSystemInfo request"),e({success:[await(async()=>{const e=II().globalApiKey;return{platformArch:ld(),isDesktopHub:"desktop"===Sk(),isRuntimeHub:"runtime"===Sk(),hubVersion:ov,hasValidApiKeyConfigured:!!e,...wk?{updateAvailable:wk}:{}}})()]})},xk=Ld("removeService"),kk=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=Lv.getAllServiceVersions(i),a=s.find((e=>e.info.version===o));if(!a)return n({error:"Service not found"});xk(`Removing ${s.length} service(s) with name: ${i}`);const c=a.info.publicationId;let l;if(await Lv.uninstallService(a.info.name,a.info.version),c){if(!FI(t))return n({error:"Client not found",errCode:"CLIENT_NOT_FOUND"});const e=II();if(!e.globalApiKey)return n({error:"Global API key is not set",errCode:"GLOBAL_API_KEY_NOT_SET"});const r=e.globalApiKey;xk(`Updating license details for "${c}"`);const i=await(async e=>{const{data:t,error:n}=await EI(`${kI()}/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=>(xk(`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}}]})},Ek=Ld("getDecryptedEdgeApiKey"),Ck=({reply:e})=>(Ek("Getting decrypted edge API key"),e({success:[II().globalApiKey]})),$k=({reply:e})=>{Ek("Getting hub config");const t=II();return e({success:[{kemuApiKey:t.globalApiKey,environment:t.environment}]})};let Nk,Ok,Tk,Ak,Pk;const Mk=e=>e.transport===td.IPC&&(e.reply({error:"Transport is not allowed to call this function"}),!0);var Dk=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(!Nk)return e.reply({error:"Get recipe secrets function not set"});const i=await Nk({...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(Mk(e))return;if(!Ok)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 Ok({recipeUuid:n,secretsMap:r})}];e.reply({success:i})},jk=async e=>{const t=e.args,n=t[0].recipeUuid,r=t[0].secretName;if(Mk(e))return;if(!Tk)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 Tk({recipeUuid:n,secretName:r})}];e.reply({success:i})},Lk=async e=>{const t=e.args[0].recipeUuid;if(!Ak)return e.reply({error:"Get recipe secret mappings function not set"});if(!t)return e.reply({error:"Invalid request parameters"});const n=[{secrets:await Ak({recipeUuid:t})}];e.reply({success:n})},Fk=async e=>{const t=e.args,n=t[0].hubServiceName,r=t[0].secrets;return Pk?n&&r?Array.isArray(r)?(await Pk({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 Uk,Bk,Wk;const Gk=e=>e.transport===td.IPC&&(e.reply({error:"You are not allowed to manage secrets using this transport"}),!0);var Vk=async e=>{if(e.args,Gk(e))return;if(!Wk)return e.reply({error:"Get hub secrets function not set"});const t=[{contexts:await Wk()}];e.reply({success:t})},Hk=async e=>{const t=e.args;if(Gk(e))return;if(!Uk)return e.reply({error:"Add hub secret function not set"});const n=[{contexts:await Uk(t[0])}];e.reply({success:n})},Yk=async e=>{const t=e.args;if(Gk(e))return;if(!Bk)return e.reply({error:"Delete hub secret function not set"});const n=[{contexts:await Bk(t[0])}];e.reply({success:n})};const zk=S(W(import.meta.url));let qk=null;const Kk=Ld("hub"),Jk=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=wb?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=Qb.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}ew+=1;const u=`${i}-${ew}-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=wb?new ArrayBuffer(0):Buffer.alloc(0);const f={json:{functionName:t,args:r,messageId:u,type:"execute"}};s(c)&&(h=Qb.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)=>{ew+=1;const a=`${i}-${ew}-multicast-${e.substring(0,10)}`;let c=wb?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=Qb.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=Qb.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");DI=Jk,Jk.setLogger(Kk);const Zk={[Qu.RebootToInstallUpdate]:null,[Qu.GetFileContentFromCacheId]:null,[Qu.SaveRecipeToFile]:null},Xk=(e,t)=>{const{transmission:n}=t;if(0!==n.targetServiceId){const r=FI(n.targetServiceId);if(!r)return Kk(`Service [${e}] ${n.sourceServiceId} is sending data to an unknown service ["${n.targetServiceId}"]`),!0;r.transport,td.IPC;const i=t.json?.messageId;return Kk(`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},Qk=({sourceServiceId:e,args:t})=>{const n=Lv.getServiceBySessionId(e);if(n){const r=UI(n.info.name,n.info.version),i=UI(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}};Jk.broadcast(Qu.BroadcastEvent,[s],o,0)}},eE=async({args:e,reply:t})=>{const n=e[0];if(!n)return Kk("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 Kk(`No client found for recipe pool id ${n.recipePoolId}`),t({error:`No client found for recipe pool id "${n.recipePoolId}"`});try{const e=Jk.execute(Qu.SendToRecipe,[n],r.send,0,r.serviceSessionId,{async:!n.waitForResponse,timeout:n.timeout});n.waitForResponse?t({success:await e}):t({success:[]})}catch(e){return Kk(`Error sending to recipe ${n.recipePoolId}: ${e?.message||e}`),t({error:e?.message||"There was an error sending to the recipe"})}},tE=e=>{const{send:t,transmission:n,json:r}=e;Kk(`Raw message Id received from WS: ${r?.messageId}`),Xk(td.WS,e)||Jk.processMessage(td.WS,t,n,r)},nE=e=>{const t=(n=e,`${Xu.SocketAcknowledge}${n}`);var n;nI(e,t)},rE=(e,t)=>{Kk(`Received unknown command [${t}] from service ${e}`)},iE=async e=>{const{args:t,sourceServiceId:n,send:r,reply:i}=e,o=n,s=t[0];s.user?.id&&vv.setGlobalUserId(s.user?.id),await WI({serviceSessionId:n,transport:td.WS,send:r,terminateFn:()=>{iI(n)},extraInfo:{websocketId:o,recipe:s.recipe,user:{userEmail:s.user?.email,userId:s.user?.id}}}),i({success:[]})},oE=e=>{Kk(`WS Client ${e} disconnected`),VI(e)},sE=e=>{if(1===e.sourceServiceId)return e.functionName===Qu.GetFileContentFromCacheId;if(e.functionName===Qu.GetHubConfig){const t=Lv.getServiceBySessionId(e.sourceServiceId);if(!t||!Lv.isOfficialKemuService(t.info)&&Lv.isNotDevService(t.info))return Kk(`Service "${e.sourceServiceId}" attempting to get hub config but is not an official Kemu service`),!1}return e.functionName===Qu.SocketAckResponse||e.functionName===Qu.ServiceManifest||e.functionName===Qu.SubscribeToService||(!!FI(e.sourceServiceId)||(e.reply({error:`Session id "${e.sourceServiceId}" not found. Please acknowledge the session first.`}),!1))},aE=async({sourceServiceId:e,args:t,transport:n,send:r})=>{if(n!==td.IPC){var i;Kk(`Received manifest from non IPC service ${e}.`)}else{const n=t[0];if(n.devMode){const t=Lv.getMatchingDevService(n.name,n.version,"stopped");if(t){Kk(`Found matching previous service ${t.info.name} (${t.info.version}). Reactivating previous client with session id ${t.info.sessionId}`);const o=FI(t.info.sessionId);if(!o)return void Kk(`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]:MI(`Could not find source client with session id ${i}`),Jb(e,t.info.sessionId);const s=await uv(n,n.path);t.info={...t.info,...s},Kk(`Updating manifest for dev service ${t.info.sessionId}`),Lv.setServiceManifest(t.info.sessionId,s,"running"),Kk(`Asking service ${e} to assume previous session id ${t.info.sessionId}`),Kb(t.info.sessionId,(e=>`${Xu.AssumeSession}${e}`)(t.info.sessionId)),(e=>{const t=RI[e];t?t.isDevClient?(t.disconnected=!1,t.transport===td.IPC&&(BI(),GI(e))):MI(`Client with session id ${e} is not a dev client`):MI(`Could not find source client with session id ${e}`)})(t.info.sessionId)}else{Lv.addDevService(e,n,"running");const t=FI(e);t?t.isDevClient=!0:WI({serviceSessionId:e,transport:td.IPC,send:r,extraInfo:{ipcSocketId:e},isDevClient:!0})}return}Kk(`Received manifest from non dev service ${e} [${n.name}@(${n.version})]. Ignoring...`)}};var cE=async e=>{var t;Kk("Starting Kemu Hub..."),t=e.desktopMode?"desktop":"runtime",bk=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&&vv.setTracker(e.errorTracker),(e=>{_I={..._I,...e}})({serviceUrl:e.serviceUrl,globalApiKey:e.globalApiKey,environment:e.environment}),Jk.registerFunctionsMiddleware(sE),e.secrets?.serviceSecrets&&(e=>{Pk=e})(e.secrets.serviceSecrets.addServiceSecretFn),e.secrets?.recipeSecrets&&((e=>{Nk=e})(e.secrets.recipeSecrets.getRecipeDecryptedSecretsFn),(e=>{Ok=e})(e.secrets.recipeSecrets.addRecipeSecretFn),(e=>{Tk=e})(e.secrets.recipeSecrets.deleteRecipeSecretFn),(e=>{Ak=e})(e.secrets.recipeSecrets.getRecipeSecretMappingsFn)),e.secrets?.hubSecrets&&((e=>{Wk=e})(e.secrets.hubSecrets.getHubSecretsFn),(e=>{Uk=e})(e.secrets.hubSecrets.addHubSecretsFn),(e=>{Bk=e})(e.secrets.hubSecrets.deleteHubSecretFn)),Jk.registerFunction(Qu.GetServiceContents,SI),Jk.registerFunction(Qu.GetServices,vk),Jk.registerFunction(Qu.GetSystemInfo,Ik),Jk.registerFunction(Qu.ShowHubScreen,(async({args:t,reply:n})=>{const[{screenName:r,context:i}]=t;if(e?.onShowHubScreen)try{await e.onShowHubScreen(r,i),n({success:[]})}catch(t){n({error:`Failed to show hub screen "${r}": ${t}`,errCode:"FAILED_TO_SHOW_HUB_SCREEN"})}else n({error:"This hub does not support showing hub screens",errCode:"FUNCTION_NOT_SUPPORTED"})})),Jk.registerFunction(Qu.RestartApp,(({reply:t})=>{e?.onRestartApp?(e.onRestartApp(),t({success:[]})):t({error:"This hub does not support restarting the app",errCode:"FUNCTION_NOT_SUPPORTED"})})),Jk.registerFunction(Qu.ExchangeSessionTokenForApiKey,(async({args:t,reply:n})=>{const[{sessionToken:r}]=t;if(e?.onFetchApiKeyFromCode){const t=await e.onFetchApiKeyFromCode({sessionToken:r});n({success:[{success:t.success??!1,error:t.error??void 0}]})}else n({error:"This hub does not support fetching API key from code",errCode:"FUNCTION_NOT_SUPPORTED"})})),Jk.registerFunction(Qu.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"})})),Jk.registerFunction(Qu.UnsubscribeFromService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===td.WS){const[e]=n,i=FI(r);if(!i)return t({error:`Session id "${r}" not found`});Kk(`Service ${r} unsubscribing from "${e.targetService.serviceName} (${e.targetService.version})"`),t({success:[]}),i?.removeSubscription({serviceName:e.targetService.serviceName,version:e.targetService.version})}})),Jk.registerFunction(Qu.SubscribeToService,(({transport:e,reply:t,args:n,sourceServiceId:r})=>{if(e===td.WS){const[e]=n,i=FI(r),o=e.targetService;if(!i)return t({error:`Session id "${r}" not found`});if(Kk(`Service ${r} subscribing to "${o.serviceName} (${o.version})"`),"hub"===o.serviceName)return i.addSubscription(o),void t({success:[]});if(!i.addSubscription(o))return Kk(`Service ${r} already subscribed to "${o.serviceName} (${o.version})", ignoring request.`),t({success:[]});const s=Lv.getMatchingService(o.serviceName,o.version);if(!s)return Kk(`Service ${o.serviceName} ${o.version} not active yet`),t({success:[]});if(!s.info.eventEmitter)return Kk(`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=FI(s.info.sessionId);return a?.extraInfo.ipcSocketId&&(Kk(`Sending Broadcast START command to service ${s.info.sessionId}`),Kb(a?.extraInfo.ipcSocketId,Xu.BroadcastStart)),t({success:[]})}})),Jk.registerFunction("stopService",sI),Jk.registerFunction("removeService",cI),Jk.registerFunction("launchService",uI),Jk.registerFunction("getMatchingServices",hI),Jk.registerFunction("getSecretsValues",gI),Jk.registerFunction(Qu.GetMappedSecrets,bI),Jk.registerFunction(Qu.BroadcastEvent,Qk),Jk.registerFunction(Qu.ServiceManifest,aE),Jk.registerFunction(Qu.ChooseDirectoryDialog,qI),Jk.registerFunction(Qu.ChooseFileDialog,KI),Jk.registerFunction(Qu.GetUniqueId,mk),Jk.registerFunction(Qu.SendToRecipe,eE),Jk.registerFunction(Qu.GetDecryptedEdgeApiKey,Ck),Jk.registerFunction(Qu.GetHubConfig,$k),Jk.registerFunction(Qu.SocketAckResponse,iE),Jk.registerFunction(Qu.UninstallService,kk),Jk.registerFunction(Qu.GetRecipeDecryptedSecretsValues,Dk),Jk.registerFunction(Qu.GetRecipeSecretMappings,Lk),Jk.registerFunction(Qu.AddRecipeSecretMapping,Rk),Jk.registerFunction(Qu.DeleteRecipeSecretMapping,jk),Jk.registerFunction(Qu.GetHubSecrets,Vk),Jk.registerFunction(Qu.AddHubSecrets,Hk),Jk.registerFunction(Qu.DeleteHubSecret,Yk),Jk.registerFunction(Qu.AddServiceSecret,Fk),Object.entries(Zk).forEach((([e,t])=>{t?Jk.registerFunction(e,t):(Kk(`Skipping registration of "${e}" because it's not implemented`),Jk.registerFunction(e,(({reply:t})=>{t({error:`This hub does not support "${e}"`,errCode:"FUNCTION_NOT_SUPPORTED"})})))})),(e=>{Hb=e})((e=>{const{send:t,transmission:n,json:r}=e;Kk(`Raw message Id received from IPC: ${r?.messageId}`),Xk(td.IPC,e)||Jk.processMessage(td.IPC,t,n,r)})),rI(tE),Q_(nE),tI(rE),eI(oE),(e=>{Vb=e})(YI),(e=>{Wb=e})((e=>{const t=(e=>`${Xu.IpcAcknowledge}${e}`)(e);Kb(e,t)})),(e=>{Gb=e})((e=>{Kk(`IPC socket [${e}] disconnected`);const t=FI(e);if(t){Kk(`Found matching service for disconnected socket. SessionId: ${t.serviceSessionId}`);const e=Lv.getServiceBySessionId(t.serviceSessionId);Lv.setServiceStatus(t.serviceSessionId,"stopped"),e?.devMode?(t.disconnected=!0,BI()):VI(t.serviceSessionId)}})),await(e=>(e?.ipcId&&(yb.config.id=e.ipcId),e?.ipcAppSpace&&(yb.config.appspace=e.ipcAppSpace),new Promise((e=>{yb.serve((()=>{Bb.info("IPC Server Initiated"),yb.server.on("data",((e,t)=>{const n=Yb[t.id];n?(Bb.data(`IPC Socket [${t.id}] data ${e.byteLength} bytes`),zb(e,n.activeMessage,(e=>n.activeMessage=e),(e=>{if(!e.complete)return;const n=e=>{t.write(e)};if(e.command)return Bb.data(`Received command from client [${t.id}]: ${e.command}`),void(Vb&&Vb(t.id,e.command,n));e.klMessage&&Hb&&Hb({send:n,transmission:{sourceServiceId:e.sourceServiceId??-1,targetServiceId:e.targetServiceId??-1,rawMessage:e.rawMessage},json:e.klMessage.json})}))):Bb.data(`Received data from unknown client [${t.id}]. Ignoring.`)})),yb.server.on("connect",(e=>{const t=tv();Bb.info(`New client connected. Registered as "${t}"`),e.id=t,Yb[t]={socket:e,activeMessage:null,disconnectHandler:()=>qb(t)},e.on("close",Yb[t].disconnectHandler),Wb&&Wb(t)})),yb.server.on("disconnect",(e=>{qb(e.id)})),yb.server.on("error",(e=>{console.log(`IPC Server Error: ${e}`)})),e()})),yb.server.start()}))))({ipcAppSpace:n,ipcId:r}),e?.ws?.disabled||await X_(e?.ws?.port||5368);const i=e?.defaultServicesPath||b.resolve(zk,"defaultServices");qk=i;const o=process.env.DEV_SESSION_ID;Lv.setHubIpcConfig({recipePath:e?.recipeRootPath,appSpace:n,id:r}),Lv.setEnableServiceLogsConfig(!!e?.enableServiceLogs),e?.servicesInstallPath&&(e=>{hv=e})(e.servicesInstallPath),e?.testServicesInstallPath&&(e=>{fv=e})(e.testServicesInstallPath);const s=pv(),a=gv(),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=II().serviceUrl,t.__KEMU_ENVIRONMENT=II().environment,t};e?.getServiceSecretsFn?(Lv.setGetSecretsFunction(e.getServiceSecretsFn),mI(e.getServiceSecretsFn)):(Lv.setGetSecretsFunction(c),mI(c)),(e=>{vI=e})(e?.getMappedSecretsFn?e.getMappedSecretsFn:async e=>e.reduce(((e,t)=>({...e,[t.name]:[]})),{})),Lv.setSpawnNodeFunction(e?.spawnFn?e.spawnFn:({args:e,options:t})=>{const n={...process.env};return V("node",e||[],{...t,env:{...n,...t?.env}})}),(void 0!==e?.defaultServicesAllowList||!e?.noDefaultServices)&&await Lv.loadServices(i,{allowedServiceNames:e?.defaultServicesAllowList,fixedSession:o?parseInt(o):void 0,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,internalServices:!0,enableLogs:!0}),null!==e?.servicesInstallPath&&(await dv(s)||await h(s,{recursive:!0}),await Lv.loadServices(s,{internalServices:!1,singleServiceName:process.env.DEV_SINGLE_SERVICE_NAME,enableLogs:!!e?.enableServiceLogs}));const l=process.env.DEV_NO_SPAWN_LIST?.split(",");await Lv.launchServices({noSpawningList:l||[]}),!1!==e.autoRegisterCleanupHandlers&&(()=>{Kk("Registering automatic cleanup handlers for process signals");const e=async e=>{Kk(`Received ${e}, cleaning up services...`);try{await Lv.killAllServices(),Kk("Services cleaned up successfully"),process.exit(0)}catch(e){Kk(`Error during cleanup: ${e}`),process.exit(1)}},t=async e=>{const t=e instanceof Error?e.message:String(e);Kk(`Uncaught error: ${t}, cleaning up services...`);try{await Lv.killAllServices(),Kk("Services cleaned up after crash")}catch(e){Kk(`Error during crash cleanup: ${e}`)}process.exit(1)};process.on("SIGINT",(()=>e("SIGINT"))),process.on("SIGTERM",(()=>e("SIGTERM"))),process.on("uncaughtException",t),process.on("unhandledRejection",(e=>{t(new Error(`Unhandled rejection: ${e}`))}))})(),Kk("Kemu Hub started"),(e?.onChooseDirectory||e?.onChooseFile)&&(e=>{zI=e})({chooseDirectory:e.onChooseDirectory,chooseFile:e.onChooseFile})},lE=e=>{if(e===td.WS)return{handleWebsocketConnectionEvent:nE,handleWebsocketClientDisconnectionEvent:oE,handleWebsocketMessage:tE,handleWebsocketClientCommand:rE,getRemoteInvoke:()=>Jk}},uE=(e=[])=>{let t;const n=new Promise((n=>{const r=()=>{if(Lv.getAllServices().every((e=>"running"===e.status))&&e.every((e=>"running"===Lv.getMatchingService(e.name,e.version)?.status)))return n();t=setTimeout(r,100)};r()}));return n.abort=()=>{t&&clearTimeout(t)},n};const dE=Hl("processManager"),hE=new Set;let fE=!1,pE=[];const gE=()=>{for(const e of hE)if(!e.killed&&e.pid)try{e.kill("SIGTERM")}catch(t){console.error(`Failed to kill process ${e.pid}:`,t)}hE.clear()},mE=e=>{const{onCleanup:t,onEmergencyCleanup:n}=e||{};if(fE){for(const{event:e,handler:t}of pE)process.removeListener(e,t);pE=[],fE=!1}let r=!1,i=!1;const o=async e=>{if(r)dE("Cleanup already in progress, ignoring duplicate signal");else{r=!0;try{if(t)try{await t()}catch(e){console.error("Error during cleanup:",e)}gE(),e&&(await new Promise((e=>{setTimeout((()=>{e()}),100)})),process.exit(0))}finally{r=!1}}},s=async()=>{if(i||r)console.error("Cleanup already in progress, ignoring duplicate error handler");else{i=!0;try{if(n)try{await n()}catch(e){console.error("Error during emergency cleanup:",e)}gE()}finally{i=!1}}};let a=null;const c=(e,t)=>{process.on(e,t),pE.push({event:e,handler:t})};c("SIGINT",(async()=>{dE("Received SIGINT, cleaning up..."),await o("SIGINT")})),c("SIGTERM",(async()=>{dE("Received SIGTERM, cleaning up..."),await o("SIGTERM")})),c("SIGHUP",(async()=>{dE("Received SIGHUP, cleaning up..."),await o("SIGHUP")})),c("uncaughtException",(async e=>{console.error("Uncaught exception:",e),await s(),process.exit(1)})),c("unhandledRejection",(async(e,t)=>{console.error("Unhandled rejection at:",t,"reason:",e),await s(),process.exit(1)})),c("beforeExit",(()=>{a||(a=(async()=>{if(t)try{await t()}catch(e){console.error("Error during cleanup:",e)}gE()})(),a.catch((e=>{console.error("Error in beforeExit handler:",e),gE()})))})),fE=!0};let yE;const vE=Hl("run"),bE=id(),wE=1e3,SE=v(process.argv.slice(2)),_E=e=>"number"==typeof e?{type:me.Number,value:e}:"string"==typeof e?{type:me.String,value:e}:"boolean"==typeof e?{type:me.Boolean,value:e}:Array.isArray(e)?{type:me.Array,value:e}:e;global.ImageData=q;const IE=e=>e&&"string"==typeof e.format&&e.data&&e.data instanceof ArrayBuffer;ke({createCanvas:(e,t)=>J(e,t),loadImage:async e=>{let t=e;if(IE(e)){const n=e;t=Buffer.from(n.data)}const n=await K(t),r=J(n.width,n.height).getContext("2d");r.drawImage(n,0,0,n.width,n.height);return r.getImageData(0,0,n.width,n.height)}});const xE=(e,t)=>"*"===e?ho.onAnyGlobalVariableChange(t):ho.onGlobalVariableChange(e,t),kE=(e,t,n)=>ho.setGlobalVariable({name:e,value:t,disableChangeNotifications:n?.disableChangeNotifications||!1,disableDefineNotifications:n?.disableDefineNotifications||!1,doNotOverrideExisting:n?.doNotOverrideExisting||!1}),EE=e=>{ho.deleteGlobalVariable({name:e})},CE=()=>ho.getAllVariables(),$E=e=>ho.getGlobalVariable(e),NE=e=>Yi(e),OE=e=>async()=>{throw new Error(`${e} not implemented`)},TE={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:me.ImageData}},loadImageFile:async e=>{const t=await K(e),n=J(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=J(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 AE={start:async r=>{r=r||{};const i=r?.runtimeCommand?.trim()||process.env.KEMU_EDGE_RUNTIME_COMMAND?.trim(),o=r?.recipePath||SE.recipePath||process.env.KEMU_EDGE_RECIPE_PATH||process.cwd();if(!o)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 s=o.endsWith(".json")||o.endsWith(".kemu"),a=s?H(o):o,c=s?o:Y(a,"recipe.kemu"),{parsed:l,error:u}=await e({path:Y(z(a),".env")});u&&console.warn(`Failed to load .env file: ${u.message}. This is not an error, it just means that the .env file is not present or is not readable.`);const d=r.apiKey||process.env.KEMU_API_KEY,h=process.env.KEMU_CONFIG;if(!d)throw new Error("Missing API key. Please provide it via config.apiKey or KEMU_API_KEY environment variable.");if(r.envConfig){const{serviceUrl:e,environment:t}=r.envConfig;if(!e||!t)throw new Error("Missing server URL or environment in config.envConfig")}else if(!h)throw new Error("Missing server URL or environment in config.envConfig");const f=(e=>{try{return JSON.parse(e||"")}catch(e){return null}})(await t(z(c),"utf-8"));if(!f)throw new Error("Failed to parse recipe file");if(!f.author?.id)throw new Error("Missing required author ID in recipe file.");const{serviceUrl:p,environment:g}=r.envConfig||(e=>{const t=Buffer.from(e,"base64").toString("utf8"),[n,r]=t.split("<@>");if(!n||!r)throw new Error("Invalid configuration.");return{serviceUrl:n,environment:r}})(h);await vc();const m={id:f.uuid||String(Date.now()),version:1,author:f.author.id};(e=>{yo=e})(console);const y=lE(_e.WS),v=(e,t)=>{if(t)y?.handleWebsocketMessage({send:w,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg?.json});else{const t=e instanceof Buffer?e.toString():e;y?.handleWebsocketClientCommand(wE,t)}},b=(Tl={instanceServiceId:wE,sendBuf:v,sendCmd:v,triggerOnCommand:(...e)=>Al(...e),triggerOnConnected:()=>Pl(),triggerOnDisconnected:()=>Ml(),triggerOnMessageReceived:(...e)=>Dl(...e)},Tl);const w=(e,t)=>{if(t)b.triggerOnMessageReceived({send:v,transmission:{rawMessage:e,sourceServiceId:t.sourceServiceId,targetServiceId:t.targetServiceId},json:t.msg.json});else{const t=e instanceof Buffer?e.toString():e;b.triggerOnCommand(t)}},S=ad(),_=y.getRemoteInvoke();S.disableServiceEncoding(0,!0),_.disableServiceEncoding(wE,!0);const I=Object.values(f.blocks[pe].gates).filter((e=>e.type===Je.hubService&&e.state.service&&!0!==e.state.service?.webOnly)),x=I.map((e=>{const t=e.state.service;return{name:t.name,version:t.version}})),k=Y(a,"services"),E=await n(k).then((()=>!0)).catch((()=>!1));if(x.length>0&&!E)throw new Error("Services directory not found but required services are defined in the recipe. Please make sure there is a `services` directory in the recipe root and add the services you want to use to it.");mE();const C={globalApiKey:d,serviceUrl:p,spawnFn:i?({args:e,options:t,serviceInfo:n})=>{if(!i)throw new Error("Runtime command not provided. Please specify it in the config object, via a command line argument [--runtimeCommand] or as an environment variable [KEMU_EDGE_RUNTIME_COMMAND].");console.log(`Spawning service: "${n.name}" with command: "${i} ${e?.join(" ")}"`);const r=i.split(" ").filter(Boolean),o=Z(r[0],r.slice(1).concat(e||[]),{...t,env:{...process.env,...t?.env}});return(e=>{hE.add(e),e.on("exit",(()=>{hE.delete(e)}))})(o),o}:null,recipeRootPath:a,servicesInstallPath:E?Y(a,"services"):null,defaultServicesAllowList:r?.defaultServicesAllowList??["kemu.io.scriptHttp"],environment:g,ws:{disabled:!0},secrets:{recipeSecrets:{getRecipeDecryptedSecretsFn:async()=>({...l}),getRecipeSecretMappingsFn:OE("getRecipeSecretMappingsFn"),addRecipeSecretFn:OE("addRecipeSecretFn"),deleteRecipeSecretFn:OE("deleteRecipeSecretFn")}},ipc:{appSpace:"kemu-runner.",id:m.id}};sd(C.defaultServicesAllowList),await cE(C),vE("Waiting for services to run"),await uE(x),vE("All services are running"),el(bE),il(),Ia.onGlobalProcessingStateChange((e=>{vE("Global processing state changed: ",e)})),f.globalVariables&&(f.globalVariables=await sl(f.globalVariables));const $=await Zc(f,"runner",m.version,m.author,wr.Desktop);return yE=$,mE({onCleanup:async()=>{yE&&await Xc(yE)},onEmergencyCleanup:async()=>{yE&&await Xc(yE)}}),od($),await nd({id:f.author.id}),new Promise(((e,t)=>{var n;rd("acknowledged",(async()=>{await bE.getServices();const{failed:n,sendToInputWidget:r,invokeRecipeLoadedWidgets:i}=await Qc($);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)})),vE("Recipe started"),e({sendToInputWidgetAndWaitForOutput:(e,t)=>{const n=_E(t);return r({inputName:e,data:n,waitForOutputChild:!0})},sendToInputWidget:(e,t)=>{const n=_E(t);return r({inputName:e,data:n,waitForOutputChild:!1})},globalVariables:{onChange:xE,setValue:kE,getValue:$E,delete:EE,getAll:CE},status:{onChange:NE},edgeFunctions:{register:Za.registerFunctionHandler,unregister:Za.unregisterFunctionHandler,clearAll:Za.clearAllHandlers}})})),b.triggerOnConnected(),b.triggerOnCommand((n=wE,`${be.SocketAcknowledge}${n}`))}))},terminate:async()=>{yE&&await Xc(yE),gE()}};export{me as DataType,AE as default,IE as isBinaryFile,TE as utils};