@sequenzy/cli 0.0.15 → 0.0.16

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.
Files changed (2) hide show
  1. package/dist/index.js +3 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -261,7 +261,7 @@ Check the top-level render call using <`+CI+">."}return TA}}function FC(m,TA){{i
261
261
  <%s {...props} />
262
262
  React keys must be passed directly to JSX without using spread:
263
263
  let props = %s;
264
- <%s key={someKey} {...props} />`,I0,ND,B0,ND),MF[ND+I0]=!0}}if(m===B)aE($Q);else aC($Q);return $Q}}var PE=KG;bo.Fragment=B,bo.jsxDEV=PE})()});var e9=gB(o9(),1),{program:BAA,createCommand:QAA,createArgument:EAA,createOption:CAA,CommanderError:DAA,InvalidArgumentError:gAA,InvalidOptionArgumentError:FAA,Command:AZ,Argument:GAA,Option:uAA,Help:wAA}=e9.default;var IZ={name:"@sequenzy/cli",version:"0.0.15",description:"Sequenzy CLI for email marketing from the terminal",type:"module",bin:{sequenzy:"./dist/index.js"},main:"./src/index.tsx",types:"./src/index.tsx",exports:{".":"./src/index.tsx"},scripts:{dev:"bun --watch src/index.tsx",build:"bun build src/index.tsx --outdir dist --target node --minify --define 'process.env.DEV=false'",start:"node dist/index.js","type-check":"tsc --noEmit",test:"bun test","test:watch":"bun test --watch",prepublishOnly:"bun run build"},dependencies:{commander:"^12.1.0",ink:"^5.0.1","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.0.0","ink-table":"^3.1.0",open:"^10.1.0",react:"^18.3.1",conf:"^13.0.0"},devDependencies:{"@types/bun":"latest","@types/node":"^22.0.0","@types/react":"^18.3.0","bun-types":"latest",typescript:"^5.8.0"},files:["dist"],keywords:["sequenzy","email","cli","marketing"],license:"MIT",repository:{type:"git",url:"https://github.com/sequenzy/sequenzy"}};import{isDeepStrictEqual as mp}from"node:util";import jW from"node:process";import dw from"node:fs";import PW from"node:path";import HR from"node:crypto";import cp from"node:assert";var bw=(A)=>{let I=typeof A;return A!==null&&(I==="object"||I==="function")};var CN=new Set(["__proto__","prototype","constructor"]),lT=new Set("0123456789");function a4(A){let I=[],B="",C="start",D=!1;for(let u of A)switch(u){case"\\":{if(C==="index")throw Error("Invalid character in an index");if(C==="indexEnd")throw Error("Invalid character after an index");if(D)B+=u;C="property",D=!D;break}case".":{if(C==="index")throw Error("Invalid character in an index");if(C==="indexEnd"){C="property";break}if(D){D=!1,B+=u;break}if(CN.has(B))return[];I.push(B),B="",C="property";break}case"[":{if(C==="index")throw Error("Invalid character in an index");if(C==="indexEnd"){C="index";break}if(D){D=!1,B+=u;break}if(C==="property"){if(CN.has(B))return[];I.push(B),B=""}C="index";break}case"]":{if(C==="index"){I.push(Number.parseInt(B,10)),B="",C="indexEnd";break}if(C==="indexEnd")throw Error("Invalid character after an index")}default:{if(C==="index"&&!lT.has(u))throw Error("Invalid character in an index");if(C==="indexEnd")throw Error("Invalid character after an index");if(C==="start")C="property";if(D)D=!1,B+="\\";B+=u}}if(D)B+="\\";switch(C){case"property":{if(CN.has(B))return[];I.push(B);break}case"index":throw Error("Index was not closed");case"start":{I.push("");break}}return I}function DN(A,I){if(typeof I!=="number"&&Array.isArray(A)){let B=Number.parseInt(I,10);return Number.isInteger(B)&&A[B]===A[I]}return!1}function BZ(A,I){if(DN(A,I))throw Error("Cannot use string index")}function QZ(A,I,B){if(!bw(A)||typeof I!=="string")return B===void 0?A:B;let C=a4(I);if(C.length===0)return B;for(let D=0;D<C.length;D++){let u=C[D];if(DN(A,u))A=D===C.length-1?void 0:null;else A=A[u];if(A===void 0||A===null){if(D!==C.length-1)return B;break}}return A===void 0?B:A}function gN(A,I,B){if(!bw(A)||typeof I!=="string")return A;let C=A,D=a4(I);for(let u=0;u<D.length;u++){let U=D[u];if(BZ(A,U),u===D.length-1)A[U]=B;else if(!bw(A[U]))A[U]=typeof D[u+1]==="number"?[]:{};A=A[U]}return C}function EZ(A,I){if(!bw(A)||typeof I!=="string")return!1;let B=a4(I);for(let C=0;C<B.length;C++){let D=B[C];if(BZ(A,D),C===B.length-1)return delete A[D],!0;if(A=A[D],!bw(A))return!1}}function CZ(A,I){if(!bw(A)||typeof I!=="string")return!1;let B=a4(I);if(B.length===0)return!1;for(let C of B){if(!bw(A)||!(C in A)||DN(A,C))return!1;A=A[C]}return!0}import yE from"node:path";import DZ from"node:os";import FN from"node:process";var Ju=DZ.homedir(),GN=DZ.tmpdir(),{env:s1}=FN,iT=(A)=>{let I=yE.join(Ju,"Library");return{data:yE.join(I,"Application Support",A),config:yE.join(I,"Preferences",A),cache:yE.join(I,"Caches",A),log:yE.join(I,"Logs",A),temp:yE.join(GN,A)}},mT=(A)=>{let I=s1.APPDATA||yE.join(Ju,"AppData","Roaming"),B=s1.LOCALAPPDATA||yE.join(Ju,"AppData","Local");return{data:yE.join(B,A,"Data"),config:yE.join(I,A,"Config"),cache:yE.join(B,A,"Cache"),log:yE.join(B,A,"Log"),temp:yE.join(GN,A)}},cT=(A)=>{let I=yE.basename(Ju);return{data:yE.join(s1.XDG_DATA_HOME||yE.join(Ju,".local","share"),A),config:yE.join(s1.XDG_CONFIG_HOME||yE.join(Ju,".config"),A),cache:yE.join(s1.XDG_CACHE_HOME||yE.join(Ju,".cache"),A),log:yE.join(s1.XDG_STATE_HOME||yE.join(Ju,".local","state"),A),temp:yE.join(GN,I,A)}};function uN(A,{suffix:I="nodejs"}={}){if(typeof A!=="string")throw TypeError(`Expected a string, got ${typeof A}`);if(I)A+=`-${I}`;if(FN.platform==="darwin")return iT(A);if(FN.platform==="win32")return mT(A);return cT(A)}import oT from"node:path";import RQ from"node:fs";import{promisify as uD}from"node:util";var nT=(A,I)=>{let{onError:B}=I;return function(...D){return A.apply(void 0,D).catch(B)}},DF=nT;var dT=(A,I)=>{let{onError:B}=I;return function(...D){try{return A.apply(void 0,D)}catch(u){return B(u)}}},Y0=dT;var gZ=250;var pT=(A,I)=>{let{isRetriable:B}=I;return function(D){let{timeout:u}=D,U=D.interval??gZ,H=Date.now()+u;return function N(...q){return A.apply(void 0,q).catch((z)=>{if(!B(z))throw z;if(Date.now()>=H)throw z;let y=Math.round(U*Math.random());if(y>0)return new Promise((V)=>setTimeout(V,y)).then(()=>N.apply(void 0,q));else return N.apply(void 0,q)})}}},gF=pT;var sT=(A,I)=>{let{isRetriable:B}=I;return function(D){let{timeout:u}=D,U=Date.now()+u;return function(...N){while(!0)try{return A.apply(void 0,N)}catch(q){if(!B(q))throw q;if(Date.now()>=U)throw q;continue}}}},FF=sT;import GZ from"node:process";var PU={isChangeErrorOk:(A)=>{if(!PU.isNodeError(A))return!1;let{code:I}=A;if(I==="ENOSYS")return!0;if(!FZ&&(I==="EINVAL"||I==="EPERM"))return!0;return!1},isNodeError:(A)=>{return A instanceof Error},isRetriableError:(A)=>{if(!PU.isNodeError(A))return!1;let{code:I}=A;if(I==="EMFILE"||I==="ENFILE"||I==="EAGAIN"||I==="EBUSY"||I==="EACCESS"||I==="EACCES"||I==="EACCS"||I==="EPERM")return!0;return!1},onChangeError:(A)=>{if(!PU.isNodeError(A))throw A;if(PU.isChangeErrorOk(A))return;throw A}},wN=PU;var fU={onError:wN.onChangeError},aD={onError:()=>{return}},FZ=GZ.getuid?!GZ.getuid():!1,mC={isRetriable:wN.isRetriableError};var rT={attempt:{chmod:DF(uD(RQ.chmod),fU),chown:DF(uD(RQ.chown),fU),close:DF(uD(RQ.close),aD),fsync:DF(uD(RQ.fsync),aD),mkdir:DF(uD(RQ.mkdir),aD),realpath:DF(uD(RQ.realpath),aD),stat:DF(uD(RQ.stat),aD),unlink:DF(uD(RQ.unlink),aD),chmodSync:Y0(RQ.chmodSync,fU),chownSync:Y0(RQ.chownSync,fU),closeSync:Y0(RQ.closeSync,aD),existsSync:Y0(RQ.existsSync,aD),fsyncSync:Y0(RQ.fsync,aD),mkdirSync:Y0(RQ.mkdirSync,aD),realpathSync:Y0(RQ.realpathSync,aD),statSync:Y0(RQ.statSync,aD),unlinkSync:Y0(RQ.unlinkSync,aD)},retry:{close:gF(uD(RQ.close),mC),fsync:gF(uD(RQ.fsync),mC),open:gF(uD(RQ.open),mC),readFile:gF(uD(RQ.readFile),mC),rename:gF(uD(RQ.rename),mC),stat:gF(uD(RQ.stat),mC),write:gF(uD(RQ.write),mC),writeFile:gF(uD(RQ.writeFile),mC),closeSync:FF(RQ.closeSync,mC),fsyncSync:FF(RQ.fsyncSync,mC),openSync:FF(RQ.openSync,mC),readFileSync:FF(RQ.readFileSync,mC),renameSync:FF(RQ.renameSync,mC),statSync:FF(RQ.statSync,mC),writeSync:FF(RQ.writeSync,mC),writeFileSync:FF(RQ.writeFileSync,mC)}},yC=rT;import _w from"node:process";var uZ="utf8",JN=438,wZ=511;var JZ={},HZ=_w.geteuid?_w.geteuid():-1,UZ=_w.getegid?_w.getegid():-1;var RZ=1000,KZ=!!_w.getuid,iAA=_w.getuid?!_w.getuid():!1,HN=128;var MZ=(A)=>{return A instanceof Error&&"code"in A};var UN=(A)=>{return typeof A==="string"},t4=(A)=>{return A===void 0};import tT from"node:path";import r1 from"node:process";import NZ from"node:process";var qZ=NZ.platform==="linux",o4=NZ.platform==="win32";var RN=["SIGHUP","SIGINT","SIGTERM"];if(!o4)RN.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(qZ)RN.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var LZ=RN;class YZ{constructor(){this.callbacks=new Set,this.exited=!1,this.exit=(A)=>{if(this.exited)return;this.exited=!0;for(let I of this.callbacks)I();if(A)if(o4&&(A!=="SIGINT"&&A!=="SIGTERM"&&A!=="SIGKILL"))r1.kill(r1.pid,"SIGTERM");else r1.kill(r1.pid,A)},this.hook=()=>{r1.once("exit",()=>this.exit());for(let A of LZ)try{r1.once(A,()=>this.exit(A))}catch{}},this.register=(A)=>{return this.callbacks.add(A),()=>{this.callbacks.delete(A)}},this.hook()}}var ZZ=new YZ;var aT=ZZ.register,XZ=aT;var Xg={store:{},create:(A)=>{let I=`000000${Math.floor(Math.random()*16777215).toString(16)}`.slice(-6),B=Date.now().toString().slice(-10),C="tmp-",D=`.tmp-${B}${I}`;return`${A}${D}`},get:(A,I,B=!0)=>{let C=Xg.truncate(I(A));if(C in Xg.store)return Xg.get(A,I,B);return Xg.store[C]=B,[C,()=>delete Xg.store[C]]},purge:(A)=>{if(!Xg.store[A])return;delete Xg.store[A],yC.attempt.unlink(A)},purgeSync:(A)=>{if(!Xg.store[A])return;delete Xg.store[A],yC.attempt.unlinkSync(A)},purgeSyncAll:()=>{for(let A in Xg.store)Xg.purgeSync(A)},truncate:(A)=>{let I=tT.basename(A);if(I.length<=HN)return A;let B=/^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(I);if(!B)return A;let C=I.length-HN;return`${A.slice(0,-I.length)}${B[1]}${B[2].slice(0,-C)}${B[3]}`}};XZ(Xg.purgeSyncAll);var TU=Xg;function KN(A,I,B=JZ){if(UN(B))return KN(A,I,{encoding:B});let D={timeout:B.timeout??RZ},u=null,U=null,H=null;try{let N=yC.attempt.realpathSync(A),q=!!N;A=N||A,[U,u]=TU.get(A,B.tmpCreate||TU.create,B.tmpPurge!==!1);let z=KZ&&t4(B.chown),y=t4(B.mode);if(q&&(z||y)){let X=yC.attempt.statSync(A);if(X){if(B={...B},z)B.chown={uid:X.uid,gid:X.gid};if(y)B.mode=X.mode}}if(!q){let X=oT.dirname(A);yC.attempt.mkdirSync(X,{mode:wZ,recursive:!0})}if(H=yC.retry.openSync(D)(U,"w",B.mode||JN),B.tmpCreated)B.tmpCreated(U);if(UN(I))yC.retry.writeSync(D)(H,I,0,B.encoding||uZ);else if(!t4(I))yC.retry.writeSync(D)(H,I,0,I.length,0);if(B.fsync!==!1)if(B.fsyncWait!==!1)yC.retry.fsyncSync(D)(H);else yC.attempt.fsync(H);if(yC.retry.closeSync(D)(H),H=null,B.chown&&(B.chown.uid!==HZ||B.chown.gid!==UZ))yC.attempt.chownSync(U,B.chown.uid,B.chown.gid);if(B.mode&&B.mode!==JN)yC.attempt.chmodSync(U,B.mode);try{yC.retry.renameSync(D)(U,A)}catch(X){if(!MZ(X))throw X;if(X.code!=="ENAMETOOLONG")throw X;yC.retry.renameSync(D)(U,TU.truncate(A))}u(),U=null}finally{if(H)yC.attempt.closeSync(H);if(U)TU.purge(U)}}var TW=gB(Rz(),1),kW=gB(_z(),1);var kc=(A,I,B,C)=>{if(B==="length"||B==="prototype")return;if(B==="arguments"||B==="caller")return;let D=Object.getOwnPropertyDescriptor(A,B),u=Object.getOwnPropertyDescriptor(I,B);if(!bc(D,u)&&C)return;Object.defineProperty(A,B,u)},bc=function(A,I){return A===void 0||A.configurable||A.writable===I.writable&&A.enumerable===I.enumerable&&A.configurable===I.configurable&&(A.writable||A.value===I.value)},_c=(A,I)=>{let B=Object.getPrototypeOf(I);if(B===Object.getPrototypeOf(A))return;Object.setPrototypeOf(A,B)},vc=(A,I)=>`/* Wrapped ${A}*/
264
+ <%s key={someKey} {...props} />`,I0,ND,B0,ND),MF[ND+I0]=!0}}if(m===B)aE($Q);else aC($Q);return $Q}}var PE=KG;bo.Fragment=B,bo.jsxDEV=PE})()});var e9=gB(o9(),1),{program:BAA,createCommand:QAA,createArgument:EAA,createOption:CAA,CommanderError:DAA,InvalidArgumentError:gAA,InvalidOptionArgumentError:FAA,Command:AZ,Argument:GAA,Option:uAA,Help:wAA}=e9.default;var IZ={name:"@sequenzy/cli",version:"0.0.16",description:"Sequenzy CLI for email marketing from the terminal",type:"module",bin:{sequenzy:"./dist/index.js"},main:"./src/index.tsx",types:"./src/index.tsx",exports:{".":"./src/index.tsx"},scripts:{dev:"bun --watch src/index.tsx",build:"bun build src/index.tsx --outdir dist --target node --minify --define 'process.env.DEV=false'",start:"node dist/index.js","type-check":"tsc --noEmit",test:"bun test","test:watch":"bun test --watch",prepublishOnly:"bun run build"},dependencies:{commander:"^12.1.0",ink:"^5.0.1","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.0.0","ink-table":"^3.1.0",open:"^10.1.0",react:"^18.3.1",conf:"^13.0.0"},devDependencies:{"@types/bun":"latest","@types/node":"^22.0.0","@types/react":"^18.3.0","bun-types":"latest",typescript:"^5.8.0"},files:["dist"],keywords:["sequenzy","email","cli","marketing"],license:"MIT",repository:{type:"git",url:"https://github.com/sequenzy/sequenzy"}};import{isDeepStrictEqual as mp}from"node:util";import jW from"node:process";import dw from"node:fs";import PW from"node:path";import HR from"node:crypto";import cp from"node:assert";var bw=(A)=>{let I=typeof A;return A!==null&&(I==="object"||I==="function")};var CN=new Set(["__proto__","prototype","constructor"]),lT=new Set("0123456789");function a4(A){let I=[],B="",C="start",D=!1;for(let u of A)switch(u){case"\\":{if(C==="index")throw Error("Invalid character in an index");if(C==="indexEnd")throw Error("Invalid character after an index");if(D)B+=u;C="property",D=!D;break}case".":{if(C==="index")throw Error("Invalid character in an index");if(C==="indexEnd"){C="property";break}if(D){D=!1,B+=u;break}if(CN.has(B))return[];I.push(B),B="",C="property";break}case"[":{if(C==="index")throw Error("Invalid character in an index");if(C==="indexEnd"){C="index";break}if(D){D=!1,B+=u;break}if(C==="property"){if(CN.has(B))return[];I.push(B),B=""}C="index";break}case"]":{if(C==="index"){I.push(Number.parseInt(B,10)),B="",C="indexEnd";break}if(C==="indexEnd")throw Error("Invalid character after an index")}default:{if(C==="index"&&!lT.has(u))throw Error("Invalid character in an index");if(C==="indexEnd")throw Error("Invalid character after an index");if(C==="start")C="property";if(D)D=!1,B+="\\";B+=u}}if(D)B+="\\";switch(C){case"property":{if(CN.has(B))return[];I.push(B);break}case"index":throw Error("Index was not closed");case"start":{I.push("");break}}return I}function DN(A,I){if(typeof I!=="number"&&Array.isArray(A)){let B=Number.parseInt(I,10);return Number.isInteger(B)&&A[B]===A[I]}return!1}function BZ(A,I){if(DN(A,I))throw Error("Cannot use string index")}function QZ(A,I,B){if(!bw(A)||typeof I!=="string")return B===void 0?A:B;let C=a4(I);if(C.length===0)return B;for(let D=0;D<C.length;D++){let u=C[D];if(DN(A,u))A=D===C.length-1?void 0:null;else A=A[u];if(A===void 0||A===null){if(D!==C.length-1)return B;break}}return A===void 0?B:A}function gN(A,I,B){if(!bw(A)||typeof I!=="string")return A;let C=A,D=a4(I);for(let u=0;u<D.length;u++){let U=D[u];if(BZ(A,U),u===D.length-1)A[U]=B;else if(!bw(A[U]))A[U]=typeof D[u+1]==="number"?[]:{};A=A[U]}return C}function EZ(A,I){if(!bw(A)||typeof I!=="string")return!1;let B=a4(I);for(let C=0;C<B.length;C++){let D=B[C];if(BZ(A,D),C===B.length-1)return delete A[D],!0;if(A=A[D],!bw(A))return!1}}function CZ(A,I){if(!bw(A)||typeof I!=="string")return!1;let B=a4(I);if(B.length===0)return!1;for(let C of B){if(!bw(A)||!(C in A)||DN(A,C))return!1;A=A[C]}return!0}import yE from"node:path";import DZ from"node:os";import FN from"node:process";var Ju=DZ.homedir(),GN=DZ.tmpdir(),{env:s1}=FN,iT=(A)=>{let I=yE.join(Ju,"Library");return{data:yE.join(I,"Application Support",A),config:yE.join(I,"Preferences",A),cache:yE.join(I,"Caches",A),log:yE.join(I,"Logs",A),temp:yE.join(GN,A)}},mT=(A)=>{let I=s1.APPDATA||yE.join(Ju,"AppData","Roaming"),B=s1.LOCALAPPDATA||yE.join(Ju,"AppData","Local");return{data:yE.join(B,A,"Data"),config:yE.join(I,A,"Config"),cache:yE.join(B,A,"Cache"),log:yE.join(B,A,"Log"),temp:yE.join(GN,A)}},cT=(A)=>{let I=yE.basename(Ju);return{data:yE.join(s1.XDG_DATA_HOME||yE.join(Ju,".local","share"),A),config:yE.join(s1.XDG_CONFIG_HOME||yE.join(Ju,".config"),A),cache:yE.join(s1.XDG_CACHE_HOME||yE.join(Ju,".cache"),A),log:yE.join(s1.XDG_STATE_HOME||yE.join(Ju,".local","state"),A),temp:yE.join(GN,I,A)}};function uN(A,{suffix:I="nodejs"}={}){if(typeof A!=="string")throw TypeError(`Expected a string, got ${typeof A}`);if(I)A+=`-${I}`;if(FN.platform==="darwin")return iT(A);if(FN.platform==="win32")return mT(A);return cT(A)}import oT from"node:path";import RQ from"node:fs";import{promisify as uD}from"node:util";var nT=(A,I)=>{let{onError:B}=I;return function(...D){return A.apply(void 0,D).catch(B)}},DF=nT;var dT=(A,I)=>{let{onError:B}=I;return function(...D){try{return A.apply(void 0,D)}catch(u){return B(u)}}},Y0=dT;var gZ=250;var pT=(A,I)=>{let{isRetriable:B}=I;return function(D){let{timeout:u}=D,U=D.interval??gZ,H=Date.now()+u;return function N(...q){return A.apply(void 0,q).catch((z)=>{if(!B(z))throw z;if(Date.now()>=H)throw z;let y=Math.round(U*Math.random());if(y>0)return new Promise((V)=>setTimeout(V,y)).then(()=>N.apply(void 0,q));else return N.apply(void 0,q)})}}},gF=pT;var sT=(A,I)=>{let{isRetriable:B}=I;return function(D){let{timeout:u}=D,U=Date.now()+u;return function(...N){while(!0)try{return A.apply(void 0,N)}catch(q){if(!B(q))throw q;if(Date.now()>=U)throw q;continue}}}},FF=sT;import GZ from"node:process";var PU={isChangeErrorOk:(A)=>{if(!PU.isNodeError(A))return!1;let{code:I}=A;if(I==="ENOSYS")return!0;if(!FZ&&(I==="EINVAL"||I==="EPERM"))return!0;return!1},isNodeError:(A)=>{return A instanceof Error},isRetriableError:(A)=>{if(!PU.isNodeError(A))return!1;let{code:I}=A;if(I==="EMFILE"||I==="ENFILE"||I==="EAGAIN"||I==="EBUSY"||I==="EACCESS"||I==="EACCES"||I==="EACCS"||I==="EPERM")return!0;return!1},onChangeError:(A)=>{if(!PU.isNodeError(A))throw A;if(PU.isChangeErrorOk(A))return;throw A}},wN=PU;var fU={onError:wN.onChangeError},aD={onError:()=>{return}},FZ=GZ.getuid?!GZ.getuid():!1,mC={isRetriable:wN.isRetriableError};var rT={attempt:{chmod:DF(uD(RQ.chmod),fU),chown:DF(uD(RQ.chown),fU),close:DF(uD(RQ.close),aD),fsync:DF(uD(RQ.fsync),aD),mkdir:DF(uD(RQ.mkdir),aD),realpath:DF(uD(RQ.realpath),aD),stat:DF(uD(RQ.stat),aD),unlink:DF(uD(RQ.unlink),aD),chmodSync:Y0(RQ.chmodSync,fU),chownSync:Y0(RQ.chownSync,fU),closeSync:Y0(RQ.closeSync,aD),existsSync:Y0(RQ.existsSync,aD),fsyncSync:Y0(RQ.fsync,aD),mkdirSync:Y0(RQ.mkdirSync,aD),realpathSync:Y0(RQ.realpathSync,aD),statSync:Y0(RQ.statSync,aD),unlinkSync:Y0(RQ.unlinkSync,aD)},retry:{close:gF(uD(RQ.close),mC),fsync:gF(uD(RQ.fsync),mC),open:gF(uD(RQ.open),mC),readFile:gF(uD(RQ.readFile),mC),rename:gF(uD(RQ.rename),mC),stat:gF(uD(RQ.stat),mC),write:gF(uD(RQ.write),mC),writeFile:gF(uD(RQ.writeFile),mC),closeSync:FF(RQ.closeSync,mC),fsyncSync:FF(RQ.fsyncSync,mC),openSync:FF(RQ.openSync,mC),readFileSync:FF(RQ.readFileSync,mC),renameSync:FF(RQ.renameSync,mC),statSync:FF(RQ.statSync,mC),writeSync:FF(RQ.writeSync,mC),writeFileSync:FF(RQ.writeFileSync,mC)}},yC=rT;import _w from"node:process";var uZ="utf8",JN=438,wZ=511;var JZ={},HZ=_w.geteuid?_w.geteuid():-1,UZ=_w.getegid?_w.getegid():-1;var RZ=1000,KZ=!!_w.getuid,iAA=_w.getuid?!_w.getuid():!1,HN=128;var MZ=(A)=>{return A instanceof Error&&"code"in A};var UN=(A)=>{return typeof A==="string"},t4=(A)=>{return A===void 0};import tT from"node:path";import r1 from"node:process";import NZ from"node:process";var qZ=NZ.platform==="linux",o4=NZ.platform==="win32";var RN=["SIGHUP","SIGINT","SIGTERM"];if(!o4)RN.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(qZ)RN.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var LZ=RN;class YZ{constructor(){this.callbacks=new Set,this.exited=!1,this.exit=(A)=>{if(this.exited)return;this.exited=!0;for(let I of this.callbacks)I();if(A)if(o4&&(A!=="SIGINT"&&A!=="SIGTERM"&&A!=="SIGKILL"))r1.kill(r1.pid,"SIGTERM");else r1.kill(r1.pid,A)},this.hook=()=>{r1.once("exit",()=>this.exit());for(let A of LZ)try{r1.once(A,()=>this.exit(A))}catch{}},this.register=(A)=>{return this.callbacks.add(A),()=>{this.callbacks.delete(A)}},this.hook()}}var ZZ=new YZ;var aT=ZZ.register,XZ=aT;var Xg={store:{},create:(A)=>{let I=`000000${Math.floor(Math.random()*16777215).toString(16)}`.slice(-6),B=Date.now().toString().slice(-10),C="tmp-",D=`.tmp-${B}${I}`;return`${A}${D}`},get:(A,I,B=!0)=>{let C=Xg.truncate(I(A));if(C in Xg.store)return Xg.get(A,I,B);return Xg.store[C]=B,[C,()=>delete Xg.store[C]]},purge:(A)=>{if(!Xg.store[A])return;delete Xg.store[A],yC.attempt.unlink(A)},purgeSync:(A)=>{if(!Xg.store[A])return;delete Xg.store[A],yC.attempt.unlinkSync(A)},purgeSyncAll:()=>{for(let A in Xg.store)Xg.purgeSync(A)},truncate:(A)=>{let I=tT.basename(A);if(I.length<=HN)return A;let B=/^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(I);if(!B)return A;let C=I.length-HN;return`${A.slice(0,-I.length)}${B[1]}${B[2].slice(0,-C)}${B[3]}`}};XZ(Xg.purgeSyncAll);var TU=Xg;function KN(A,I,B=JZ){if(UN(B))return KN(A,I,{encoding:B});let D={timeout:B.timeout??RZ},u=null,U=null,H=null;try{let N=yC.attempt.realpathSync(A),q=!!N;A=N||A,[U,u]=TU.get(A,B.tmpCreate||TU.create,B.tmpPurge!==!1);let z=KZ&&t4(B.chown),y=t4(B.mode);if(q&&(z||y)){let X=yC.attempt.statSync(A);if(X){if(B={...B},z)B.chown={uid:X.uid,gid:X.gid};if(y)B.mode=X.mode}}if(!q){let X=oT.dirname(A);yC.attempt.mkdirSync(X,{mode:wZ,recursive:!0})}if(H=yC.retry.openSync(D)(U,"w",B.mode||JN),B.tmpCreated)B.tmpCreated(U);if(UN(I))yC.retry.writeSync(D)(H,I,0,B.encoding||uZ);else if(!t4(I))yC.retry.writeSync(D)(H,I,0,I.length,0);if(B.fsync!==!1)if(B.fsyncWait!==!1)yC.retry.fsyncSync(D)(H);else yC.attempt.fsync(H);if(yC.retry.closeSync(D)(H),H=null,B.chown&&(B.chown.uid!==HZ||B.chown.gid!==UZ))yC.attempt.chownSync(U,B.chown.uid,B.chown.gid);if(B.mode&&B.mode!==JN)yC.attempt.chmodSync(U,B.mode);try{yC.retry.renameSync(D)(U,A)}catch(X){if(!MZ(X))throw X;if(X.code!=="ENAMETOOLONG")throw X;yC.retry.renameSync(D)(U,TU.truncate(A))}u(),U=null}finally{if(H)yC.attempt.closeSync(H);if(U)TU.purge(U)}}var TW=gB(Rz(),1),kW=gB(_z(),1);var kc=(A,I,B,C)=>{if(B==="length"||B==="prototype")return;if(B==="arguments"||B==="caller")return;let D=Object.getOwnPropertyDescriptor(A,B),u=Object.getOwnPropertyDescriptor(I,B);if(!bc(D,u)&&C)return;Object.defineProperty(A,B,u)},bc=function(A,I){return A===void 0||A.configurable||A.writable===I.writable&&A.enumerable===I.enumerable&&A.configurable===I.configurable&&(A.writable||A.value===I.value)},_c=(A,I)=>{let B=Object.getPrototypeOf(I);if(B===Object.getPrototypeOf(A))return;Object.setPrototypeOf(A,B)},vc=(A,I)=>`/* Wrapped ${A}*/
265
265
  ${I}`,hc=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),xc=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),lc=(A,I,B)=>{let C=B===""?"":`with ${B.trim()}() `,D=vc.bind(null,C,I.toString());Object.defineProperty(D,"name",xc);let{writable:u,enumerable:U,configurable:H}=hc;Object.defineProperty(A,"toString",{value:D,writable:u,enumerable:U,configurable:H})};function jq(A,I,{ignoreNonConfigurable:B=!1}={}){let{name:C}=A;for(let D of Reflect.ownKeys(I))kc(A,I,D,B);return _c(A,I),lc(A,I,C),A}var ic=(A,I={})=>{if(typeof A!=="function")throw TypeError(`Expected the first argument to be a function, got \`${typeof A}\``);let{wait:B=0,maxWait:C=Number.POSITIVE_INFINITY,before:D=!1,after:u=!0}=I;if(B<0||C<0)throw RangeError("`wait` and `maxWait` must not be negative.");if(!D&&!u)throw Error("Both `before` and `after` are false, function wouldn't be called.");let U,H,N,q=function(...z){let y=this,X=()=>{if(U=void 0,H)clearTimeout(H),H=void 0;if(u)N=A.apply(y,z)},V=()=>{if(H=void 0,U)clearTimeout(U),U=void 0;if(u)N=A.apply(y,z)},_=D&&!U;if(clearTimeout(U),U=setTimeout(X,B),C>0&&C!==Number.POSITIVE_INFINITY&&!H)H=setTimeout(V,C);if(_)N=A.apply(y,z);return N};return jq(q,A),q.cancel=()=>{if(U)clearTimeout(U),U=void 0;if(H)clearTimeout(H),H=void 0},q},Pq=ic;var pw=gB(WW(),1);var bp=Object.prototype.toString;function VW(A,I,B){if(!A)return!1;if(A.constructor===I)return!0;return bp.call(A)===B}function yW(A){return VW(A,Uint8Array,"[object Uint8Array]")}function _p(A){return VW(A,ArrayBuffer,"[object ArrayBuffer]")}function vp(A){return yW(A)||_p(A)}function hp(A){if(!yW(A))throw TypeError(`Expected \`Uint8Array\`, got \`${typeof A}\``)}function xp(A){if(!vp(A))throw TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof A}\``)}function sq(A,I){if(A.length===0)return new Uint8Array(0);I??=A.reduce((D,u)=>D+u.length,0);let B=new Uint8Array(I),C=0;for(let D of A)hp(D),B.set(D,C),C+=D.length;return B}var OW={utf8:new globalThis.TextDecoder("utf8")};function rq(A,I="utf8"){return xp(A),OW[I]??=new globalThis.TextDecoder(I),OW[I].decode(A)}function lp(A){if(typeof A!=="string")throw TypeError(`Expected \`string\`, got \`${typeof A}\``)}var ip=new globalThis.TextEncoder;function a2(A){return lp(A),ip.encode(A)}var VEA=Array.from({length:256},(A,I)=>I.toString(16).padStart(2,"0"));var np=kW.default.default,fW="aes-256-cbc",wJ=()=>Object.create(null),dp=(A)=>A!==void 0&&A!==null,pp=(A,I)=>{let B=new Set(["undefined","symbol","function"]),C=typeof I;if(B.has(C))throw TypeError(`Setting a value of type \`${C}\` for key \`${A}\` is not allowed as it's not supported by JSON`)},t2="__internal__",aq=`${t2}.migrations.version`;class o2{path;events;#Q;#I;#A;#B={};constructor(A={}){let I={configName:"config",fileExtension:"json",projectSuffix:"nodejs",clearInvalidConfig:!1,accessPropertiesByDotNotation:!0,configFileMode:438,...A};if(!I.cwd){if(!I.projectName)throw Error("Please specify the `projectName` option.");I.cwd=uN(I.projectName,{suffix:I.projectSuffix}).config}if(this.#A=I,I.schema??I.ajvOptions??I.rootSchema){if(I.schema&&typeof I.schema!=="object")throw TypeError("The `schema` option must be an object.");let u=new TW.Ajv2020({allErrors:!0,useDefaults:!0,...I.ajvOptions});np(u);let U={...I.rootSchema,type:"object",properties:I.schema};this.#Q=u.compile(U);for(let[H,N]of Object.entries(I.schema??{}))if(N?.default)this.#B[H]=N.default}if(I.defaults)this.#B={...this.#B,...I.defaults};if(I.serialize)this._serialize=I.serialize;if(I.deserialize)this._deserialize=I.deserialize;this.events=new EventTarget,this.#I=I.encryptionKey;let B=I.fileExtension?`.${I.fileExtension}`:"";this.path=PW.resolve(I.cwd,`${I.configName??"config"}${B}`);let C=this.store,D=Object.assign(wJ(),I.defaults,C);if(I.migrations){if(!I.projectVersion)throw Error("Please specify the `projectVersion` option.");this._migrate(I.migrations,I.projectVersion,I.beforeEachMigration)}this._validate(D);try{cp.deepEqual(C,D)}catch{this.store=D}if(I.watch)this._watch()}get(A,I){if(this.#A.accessPropertiesByDotNotation)return this._get(A,I);let{store:B}=this;return A in B?B[A]:I}set(A,I){if(typeof A!=="string"&&typeof A!=="object")throw TypeError(`Expected \`key\` to be of type \`string\` or \`object\`, got ${typeof A}`);if(typeof A!=="object"&&I===void 0)throw TypeError("Use `delete()` to clear values");if(this._containsReservedKey(A))throw TypeError(`Please don't use the ${t2} key, as it's used to manage this module internal operations.`);let{store:B}=this,C=(D,u)=>{if(pp(D,u),this.#A.accessPropertiesByDotNotation)gN(B,D,u);else B[D]=u};if(typeof A==="object"){let D=A;for(let[u,U]of Object.entries(D))C(u,U)}else C(A,I);this.store=B}has(A){if(this.#A.accessPropertiesByDotNotation)return CZ(this.store,A);return A in this.store}reset(...A){for(let I of A)if(dp(this.#B[I]))this.set(I,this.#B[I])}delete(A){let{store:I}=this;if(this.#A.accessPropertiesByDotNotation)EZ(I,A);else delete I[A];this.store=I}clear(){this.store=wJ();for(let A of Object.keys(this.#B))this.reset(A)}onDidChange(A,I){if(typeof A!=="string")throw TypeError(`Expected \`key\` to be of type \`string\`, got ${typeof A}`);if(typeof I!=="function")throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof I}`);return this._handleChange(()=>this.get(A),I)}onDidAnyChange(A){if(typeof A!=="function")throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof A}`);return this._handleChange(()=>this.store,A)}get size(){return Object.keys(this.store).length}get store(){try{let A=dw.readFileSync(this.path,this.#I?null:"utf8"),I=this._encryptData(A),B=this._deserialize(I);return this._validate(B),Object.assign(wJ(),B)}catch(A){if(A?.code==="ENOENT")return this._ensureDirectory(),wJ();if(this.#A.clearInvalidConfig&&A.name==="SyntaxError")return wJ();throw A}}set store(A){this._ensureDirectory(),this._validate(A),this._write(A),this.events.dispatchEvent(new Event("change"))}*[Symbol.iterator](){for(let[A,I]of Object.entries(this.store))yield[A,I]}_encryptData(A){if(!this.#I)return typeof A==="string"?A:rq(A);try{let I=A.slice(0,16),B=HR.pbkdf2Sync(this.#I,I.toString(),1e4,32,"sha512"),C=HR.createDecipheriv(fW,B,I),D=A.slice(17),u=typeof D==="string"?a2(D):D;return rq(sq([C.update(u),C.final()]))}catch{}return A.toString()}_handleChange(A,I){let B=A(),C=()=>{let D=B,u=A();if(mp(u,D))return;B=u,I.call(this,u,D)};return this.events.addEventListener("change",C),()=>{this.events.removeEventListener("change",C)}}_deserialize=(A)=>JSON.parse(A);_serialize=(A)=>JSON.stringify(A,void 0,"\t");_validate(A){if(!this.#Q)return;if(this.#Q(A)||!this.#Q.errors)return;let B=this.#Q.errors.map(({instancePath:C,message:D=""})=>`\`${C.slice(1)}\` ${D}`);throw Error("Config schema violation: "+B.join("; "))}_ensureDirectory(){dw.mkdirSync(PW.dirname(this.path),{recursive:!0})}_write(A){let I=this._serialize(A);if(this.#I){let B=HR.randomBytes(16),C=HR.pbkdf2Sync(this.#I,B.toString(),1e4,32,"sha512"),D=HR.createCipheriv(fW,C,B);I=sq([B,a2(":"),D.update(a2(I)),D.final()])}if(jW.env.SNAP)dw.writeFileSync(this.path,I,{mode:this.#A.configFileMode});else try{KN(this.path,I,{mode:this.#A.configFileMode})}catch(B){if(B?.code==="EXDEV"){dw.writeFileSync(this.path,I,{mode:this.#A.configFileMode});return}throw B}}_watch(){if(this._ensureDirectory(),!dw.existsSync(this.path))this._write(wJ());if(jW.platform==="win32")dw.watch(this.path,{persistent:!1},Pq(()=>{this.events.dispatchEvent(new Event("change"))},{wait:100}));else dw.watchFile(this.path,{persistent:!1},Pq(()=>{this.events.dispatchEvent(new Event("change"))},{wait:5000}))}_migrate(A,I,B){let C=this._get(aq,"0.0.0"),D=Object.keys(A).filter((U)=>this._shouldPerformMigration(U,C,I)),u={...this.store};for(let U of D)try{if(B)B(this,{fromVersion:C,toVersion:U,finalVersion:I,versions:D});let H=A[U];H?.(this),this._set(aq,U),C=U,u={...this.store}}catch(H){throw this.store=u,Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${H}`)}if(this._isVersionInRangeFormat(C)||!pw.default.eq(C,I))this._set(aq,I)}_containsReservedKey(A){if(typeof A==="object"){if(Object.keys(A)[0]===t2)return!0}if(typeof A!=="string")return!1;if(this.#A.accessPropertiesByDotNotation){if(A.startsWith(`${t2}.`))return!0;return!1}return!1}_isVersionInRangeFormat(A){return pw.default.clean(A)===null}_shouldPerformMigration(A,I,B){if(this._isVersionInRangeFormat(A)){if(I!=="0.0.0"&&pw.default.satisfies(I,A))return!1;return pw.default.satisfies(B,A)}if(pw.default.lte(A,I))return!1;if(pw.default.gt(A,B))return!1;return!0}_get(A,I){return QZ(this.store,A,I)}_set(A,I){let{store:B}=this;gN(B,A,I),this.store=B}}var tq="com.sequenzy.cli",oq="api-key",eq=typeof globalThis.Bun<"u",Yu=new o2({projectName:"sequenzy",schema:{userId:{type:"string"},userEmail:{type:"string"},_apiKey:{type:"string"}}});async function AL(){let A=process.env.SEQUENZY_API_KEY;if(A)return A;if(eq)try{let I=await globalThis.Bun.secrets.get({service:tq,name:oq});if(I)return I}catch{}return Yu.get("_apiKey")}async function bW(A){if(eq)try{await globalThis.Bun.secrets.set({service:tq,name:oq,value:A,allowUnrestrictedAccess:!1});return}catch{}Yu.set("_apiKey",A)}async function _W(){if(eq)try{await globalThis.Bun.secrets.delete({service:tq,name:oq})}catch{}Yu.delete("_apiKey")}async function sB(){return!!await AL()}function e2(){return{userId:Yu.get("userId"),userEmail:Yu.get("userEmail")}}function vW(A){if(A.userId!==void 0)Yu.set("userId",A.userId);if(A.userEmail!==void 0)Yu.set("userEmail",A.userEmail)}function hW(){Yu.clear()}var sp=process.env.SEQUENZY_API_URL??"https://api.sequenzy.com";class cA extends Error{statusCode;rawDetails;code;constructor(A,I,B,C){super(A);this.statusCode=I;this.rawDetails=B;this.code=C;this.name="ApiError"}}function rp(A){if(!A.trim())return{message:"Request failed"};try{let I=JSON.parse(A);if(typeof I==="string")return{message:I};if(typeof I.error==="string")return{message:I.error,code:I.code};if(I.error&&typeof I.error==="object")return{message:I.error.message??I.message??A,code:I.error.code??I.code};return{message:I.message??A,code:I.code}}catch{return{message:A}}}async function lI(A,I,B,C){let D=await AL();if(!D)throw new cA("Not logged in. Run `sequenzy login` first.",401);let u={"Content-Type":"application/json",Authorization:`Bearer ${D}`};if(C)u["x-company-id"]=C;let U;try{U=await fetch(`${sp}${I}`,{method:A,headers:u,body:B?JSON.stringify(B):void 0})}catch(H){throw new cA(H instanceof Error?H.message:"Failed to reach Sequenzy API",0,void 0,"NETWORK_ERROR")}if(!U.ok){let H=await U.text(),N=rp(H);throw new cA(N.message,U.status,H,N.code)}return U.json()}var IL=["product-info","domain","tracking","localization","integrations","products","events","tags","labels","goals","sync-rules","api-keys","widgets","team","danger"],xW={dashboard:"/dashboard/company/{companyId}",campaigns:"/dashboard/company/{companyId}/campaign",campaign:"/dashboard/company/{companyId}/campaign/{campaignId}",campaignList:"/dashboard/company/{companyId}/campaign/list/{status}",sequences:"/dashboard/company/{companyId}/sequences",sequence:"/dashboard/company/{companyId}/sequences/{sequenceId}",sequenceList:"/dashboard/company/{companyId}/sequences/list/{status}",settings:"/dashboard/company/{companyId}/settings",settingsTab:"/dashboard/company/{companyId}/settings?tab={tab}",emails:"/dashboard/company/{companyId}/emails",email:"/dashboard/company/{companyId}/emails/{emailId}",subscribers:"/dashboard/company/{companyId}/subscribers",segments:"/dashboard/company/{companyId}/segments",metrics:"/dashboard/company/{companyId}/metrics",transactional:"/dashboard/company/{companyId}/transactional",transactionalEmail:"/dashboard/company/{companyId}/transactional/{transactionalId}",domain:"/dashboard/company/{companyId}/settings/domain/{domainId}",domainVerify:"/dashboard/company/{companyId}/settings/domain/{domainId}/verify"};function ap(A){let B=(A??process.env.SEQUENZY_APP_URL??"https://sequenzy.com").trim().replace(/\/+$/,"");return B.length>0?B:"https://sequenzy.com"}function FG(A){let I=A?.trim();return I?I:void 0}function Zu(A){return encodeURIComponent(A)}function nC(A,I){return`${A}${I}`}function dC(A,I=""){return`/dashboard/company/${Zu(A)}${I}`}function lW(A,I,B){return nC(A,`${dC(I,"/settings")}?tab=${encodeURIComponent(B)}`)}function tp(A,I){let B=IL.map((C)=>[C,I?lW(A,I,C):""]);return Object.fromEntries(B)}function pQ(A={},I){let B=ap(I),C=FG(A.companyId),D={},u=tp(B,C);if(!C)return{appUrl:B,routeTemplates:xW,settingsTabValues:IL,urls:D,settingsUrls:u};D.dashboard=nC(B,dC(C)),D.campaigns=nC(B,dC(C,"/campaign")),D.sequences=nC(B,dC(C,"/sequences")),D.settings=nC(B,dC(C,"/settings")),D.emails=nC(B,dC(C,"/emails")),D.subscribers=nC(B,dC(C,"/subscribers")),D.segments=nC(B,dC(C,"/segments")),D.metrics=nC(B,dC(C,"/metrics")),D.transactional=nC(B,dC(C,"/transactional"));let U=FG(A.campaignId);if(U)D.campaign=nC(B,dC(C,`/campaign/${Zu(U)}`));let H=FG(A.sequenceId);if(H)D.sequence=nC(B,dC(C,`/sequences/${Zu(H)}`));let N=FG(A.emailId)??FG(A.templateId);if(N)D.email=nC(B,dC(C,`/emails/${Zu(N)}`)),D.template=D.email;let q=FG(A.transactionalId);if(q)D.transactionalEmail=nC(B,dC(C,`/transactional/${Zu(q)}`));let z=FG(A.domainId);if(z)D.domain=nC(B,dC(C,`/settings/domain/${Zu(z)}`)),D.domainVerify=`${D.domain}/verify`;let y=FG(A.status);if(y)D.campaignList=nC(B,dC(C,`/campaign/list/${Zu(y)}`)),D.sequenceList=nC(B,dC(C,`/sequences/list/${Zu(y)}`));let X=FG(A.settingsTab);if(X)D.settingsTab=lW(B,C,X);return{appUrl:B,routeTemplates:xW,settingsTabValues:IL,urls:D,settingsUrls:u}}var mW="https://docs.sequenzy.com",Xu=`${mW}/concepts/cli`,iW=`${mW}/authentication`;function op(A){if(A instanceof cA)return{message:A.message,statusCode:A.statusCode,code:A.code,rawDetails:A.rawDetails};if(A instanceof Error)return{message:A.message};return{message:String(A)}}function ep(A){let I=op(A),B=I.message.trim()||"Unknown error",C=B.toLowerCase(),D=I.rawDetails?.trim()||B;if(I.code==="CLI_AUTH_REQUIRED"||C.includes("not logged in"))return{title:"Authentication required",description:"This command needs a Sequenzy API key, but the CLI could not find one in your local login state or environment.",howToFix:"Run `sequenzy login` and approve the session, or set `SEQUENZY_API_KEY` for non-interactive environments.",docsUrl:Xu,details:D};if(C.includes("already logged in"))return{title:"CLI already authenticated",description:"The CLI already has a saved Sequenzy login for this machine.",howToFix:"Run `sequenzy logout` first if you want to switch accounts, then run `sequenzy login` again.",docsUrl:Xu,details:D};if(I.statusCode===401||I.code==="UNAUTHORIZED")return{title:"Authentication failed",description:"The request reached Sequenzy, but the current API key was rejected.",howToFix:"Run `sequenzy login` again, or replace the key with a valid personal API key that still has access to your account.",docsUrl:iW,details:D};if(I.statusCode===403||C.includes("access denied"))return{title:"Access denied",description:"The current API key is valid, but it does not have permission to perform this action or access the requested company.",howToFix:"Use an API key with access to the target company, or switch to a company you can access before retrying.",docsUrl:iW,details:D};if(I.statusCode===404||C.includes("not found"))return{title:"Requested resource not found",description:"Sequenzy could not find the company, template, campaign, sequence, or subscriber you asked for.",howToFix:"Double-check the ID or email value and list the resource first before retrying the command.",docsUrl:Xu,details:D};if(I.statusCode===429||C.includes("rate limit"))return{title:"Rate limited",description:"Sequenzy temporarily slowed this request because too many requests were sent in a short period.",howToFix:"Wait a moment and retry. If an agent is looping, reduce the retry frequency before calling the CLI again.",docsUrl:Xu,details:D};if(C.includes("--subject")||C.includes("--template")||C.includes("is required"))return{title:"Invalid command input",description:"The CLI command arguments are incomplete or incompatible for this action.",howToFix:"Review the flags you passed, add the missing values, and run the command again.",docsUrl:Xu,details:D};if(I.code==="NETWORK_ERROR"||C.includes("fetch failed")||C.includes("failed to initiate login"))return{title:"Network or configuration error",description:"The CLI could not reach the Sequenzy API or app URL from this environment.",howToFix:"Check your network connection and verify `SEQUENZY_API_URL` or `SEQUENZY_APP_URL` if you override them locally.",docsUrl:Xu,details:D};if(I.statusCode&&I.statusCode>=500)return{title:"Sequenzy server error",description:"The request reached Sequenzy, but the server could not complete it successfully.",howToFix:"Retry once. If the error persists, keep the details below and check the docs before escalating.",docsUrl:Xu,details:D};return{title:"Command failed",description:"The CLI could not complete the requested operation.",howToFix:"Review the details below, adjust the command or credentials, and retry.",docsUrl:Xu,details:D}}function QQ(){return new cA("Not logged in. Run `sequenzy login` first.",401,void 0,"CLI_AUTH_REQUIRED")}function UR(A){let I=ep(A);return[`Sequenzy CLI error: ${I.title}`,`Description: ${I.description}`,`How to fix: ${I.howToFix}`,`Docs: ${I.docsUrl}`,`Details: ${I.details}`].join(`
266
266
  `)}function JB(A){console.error(UR(A))}import{readFileSync as As}from"node:fs";function RB(A){console.log(JSON.stringify(A,null,2))}function XQ(A){if(!A)return"None";let I=A instanceof Date?A:new Date(A);if(Number.isNaN(I.getTime()))return String(A);return I.toISOString()}function cW(A,I,B){if(A&&I)throw new cA(`Provide either --${B} or --${B}-file, not both`,400);if(!I)return A;try{return As(I,"utf8")}catch(C){throw new cA(`Failed to read ${B} file '${I}': ${C instanceof Error?C.message:"Unknown error"}`,400)}}function JJ(A,I,B){let C=cW(A,I,B);if(!C)return;try{return JSON.parse(C)}catch(D){throw new cA(`Invalid ${B} JSON: ${D instanceof Error?D.message:"Unknown error"}`,400)}}function AK(A){let I=cW(A.html,A.htmlFile,"html"),B=JJ(A.blocksJson,A.blocksFile,"blocks");if(I!==void 0&&B!==void 0)throw new cA("Provide either --html/--html-file or --blocks-json/--blocks-file, not both",400);if(B!==void 0&&!Array.isArray(B))throw new cA("blocks JSON must be an array",400);if(A.required&&I===void 0&&B===void 0)throw new cA(A.requiredMessage??"Provide either --html/--html-file or --blocks-json/--blocks-file",400);return{...I!==void 0&&{html:I},...B!==void 0&&{blocks:B}}}function Bg(A,I){if(A===void 0)return;let B=A.trim();if(!/^[+-]?\d+$/.test(B))throw new cA(`${I} must be an integer`,400);let C=Number(B);if(!Number.isInteger(C))throw new cA(`${I} must be an integer`,400);return C}function Su(A,I){if(!A||A.trim()==="")throw new cA(`${I} is required`,400);return A}async function UD(A){if(A?.trim())return A.trim();try{return(await lI("GET","/api/v1/account")).currentCompanyId??void 0}catch{return}}async function Is(A,I){let B=await UD(I);return pQ({...A,companyId:B})}function lQ(A,I){if(I)console.log(`${A}: ${I}`)}function HJ(A,I,B,C){let u=pQ({...I,companyId:C}).urls[B];return{...A,...u!==void 0&&{url:u}}}async function nW(A){if(!await sB())JB(QQ()),process.exit(1);try{let I=await Is({campaignId:A.campaign,sequenceId:A.sequence,emailId:A.email,templateId:A.template,transactionalId:A.transactional,domainId:A.domain,status:A.status,settingsTab:A.settingsTab},A.company);if(A.company&&!I.urls.dashboard)throw new cA("Company ID is required to build dashboard URLs",400);if(A.json){RB(I);return}if(console.log(`App: ${I.appUrl}`),console.log(""),Object.keys(I.urls).length===0){console.log("No company selected. Pass --company or run `sequenzy account` to find the current company ID."),console.log(""),console.log("Route templates:");for(let[B,C]of Object.entries(I.routeTemplates))console.log(`- ${B}: ${C}`);return}console.log("URLs:");for(let[B,C]of Object.entries(I.urls))console.log(`- ${B}: ${C}`);console.log(""),console.log("Settings tabs:");for(let[B,C]of Object.entries(I.settingsUrls))console.log(`- ${B}: ${C}`)}catch(I){JB(I instanceof cA?I:I),process.exit(1)}}async function dW(A){if(!await sB())JB(QQ()),process.exit(1);try{let I=await lI("GET","/api/v1/account"),B=I.currentCompanyId!==null?pQ({companyId:I.currentCompanyId}):void 0,C=I.companies.map((D)=>{let u=pQ({companyId:D.id});return{...D,url:u.urls.dashboard,settingsUrl:u.urls.settings}});if(A.json){console.log(JSON.stringify({...I,companies:C,...B!==void 0&&{appUrls:B.urls,settingsUrls:B.settingsUrls}},null,2));return}if(console.log(`User ID: ${I.user?.id??"Unknown"}`),console.log(`Current company: ${I.currentCompanyId??"None"}`),lQ("Current company URL",B?.urls.dashboard),lQ("Current company settings",B?.urls.settings),console.log(""),I.companies.length===0){console.log(I.message??"No companies found.");return}console.log(`Companies (${I.companies.length})`);for(let D of C){let u=D.id===I.currentCompanyId?" (current)":"";console.log(`- ${D.name} [${D.id}]${u}`),lQ(" URL",D.url),lQ(" Settings",D.settingsUrl)}}catch(I){JB(I instanceof cA?I:I),process.exit(1)}}async function pW(A,I){if(!await sB())JB(QQ()),process.exit(1);try{let B=await lI("POST","/api/v1/api-keys",{name:I.name},I.company);if(I.json){RB(B);return}console.log(`Created API key: ${B.apiKey.name}`),console.log(`ID: ${B.apiKey.id}`),console.log(`Prefix: ${B.apiKey.prefix}`),console.log(`Created: ${XQ(B.apiKey.createdAt)}`),console.log(""),console.log(B.message),console.log(`Key: ${B.apiKey.key}`),console.log(`Env: ${B.instructions.example}`),console.log(B.instructions.note)}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}function rW(A){let I=A?.trim();return I?I:void 0}function Bs(A,I){if(!A.name)throw new cA("Campaign name is required",400);let B=rW(A.prompt);if(A.prompt!==void 0&&B===void 0)throw new cA("--prompt cannot be empty",400);if(B!==void 0&&(I.html!==void 0||I.blocks!==void 0))throw new cA("Provide either --prompt, --html/--html-file, or --blocks-json/--blocks-file, not multiple content sources",400);if(B===void 0&&(A.style!==void 0||A.tone!==void 0))throw new cA("--style and --tone require --prompt",400);if(!A.subject&&B===void 0)throw new cA("Campaign subject is required unless --prompt is provided",400)}function Qs(A){let I=A.generated?.blocks!==void 0&&Array.isArray(A.generated.blocks)&&A.generated.blocks.length>0?A.generated.blocks:void 0,B=typeof A.generated?.html==="string"&&A.generated.html.trim()!==""?A.generated.html:void 0;return{name:A.name,subject:A.subject,html:I!==void 0?void 0:B??A.content.html,blocks:I??A.content.blocks}}function Es(A,I){if(A.replyTo!==void 0&&A.replyProfile!==void 0)throw new cA("Provide either --reply-to or --reply-profile, not both",400);if(A.name===void 0&&A.subject===void 0&&I.html===void 0&&I.blocks===void 0&&A.replyTo===void 0&&A.replyProfile===void 0)throw new cA("Provide at least one of: --name, --subject, --html, --html-file, --blocks-json, --blocks-file, --reply-to, --reply-profile",400);return{name:A.name,subject:A.subject,html:I.html,blocks:I.blocks,replyTo:A.replyTo,replyProfileId:A.replyProfile}}function sW(A){if(!A.replyToEmail)return"None";return A.replyToName?`${A.replyToName} <${A.replyToEmail}>`:A.replyToEmail}async function UJ(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let H=new URLSearchParams;if(I.status)H.set("status",I.status);let N=await lI("GET",`/api/v1/campaigns${H.size>0?`?${H.toString()}`:""}`,void 0,I.company),q=await UD(I.company),z=q!==void 0?pQ({companyId:q,status:I.status}):void 0,y=N.campaigns.map((X)=>q!==void 0?HJ(X,{campaignId:X.id},"campaign",q):{...X,url:void 0});if(I.json){RB({...N,campaigns:y,...z!==void 0&&{appUrls:z.urls}});return}console.log(`Campaigns (${N.campaigns.length})`);for(let X of y){if(console.log(`- ${X.name} [${X.id}]`),console.log(` Subject: ${X.subject}`),console.log(` Status: ${X.status}`),console.log(` Created: ${XQ(X.createdAt)}`),lQ(" URL",X.url),X.scheduledAt)console.log(` Scheduled: ${XQ(X.scheduledAt)}`);if(X.sentAt)console.log(` Sent: ${XQ(X.sentAt)}`)}return}let B=AK({html:I.html,htmlFile:I.htmlFile,blocksJson:I.blocksJson,blocksFile:I.blocksFile});if(A==="create"){Bs(I,B);let H=rW(I.prompt),N=H!==void 0?await lI("POST","/api/v1/generate/email",{prompt:H,...I.style!==void 0&&{style:I.style},...I.tone!==void 0&&{tone:I.tone}},I.company):void 0,q=I.subject??N?.subject;if(!q)throw new cA("Generated email did not include a subject. Provide --subject explicitly.",400);let z=await lI("POST","/api/v1/campaigns",Qs({name:I.name,subject:q,content:B,generated:N}),I.company),y=await UD(I.company),X=z.campaign?.id??z.campaignId,V=y!==void 0&&X!==void 0?pQ({companyId:y,campaignId:X}):void 0;if(I.json){RB({...z,...z.campaign!==void 0&&V?.urls.campaign!==void 0&&{campaign:{...z.campaign,url:V.urls.campaign}},...V!==void 0&&{appUrls:V.urls}});return}if(console.log(`Created campaign: ${z.campaign?.name??I.name}`),console.log(`ID: ${z.campaign?.id??"Unknown"}`),console.log(`Status: ${z.campaign?.status??"Unknown"}`),console.log(`Subject: ${z.campaign?.subject??q}`),N!==void 0)console.log("Content: generated from prompt");lQ("URL",V?.urls.campaign);return}if(!I.id)throw new cA("Campaign ID is required",400);if(A==="update"){let H=Es(I,B),N=await lI("PUT",`/api/v1/campaigns/${I.id}`,H,I.company),q=await UD(I.company),z=q!==void 0?pQ({companyId:q,campaignId:I.id}):void 0;if(I.json){RB({...N,...N.campaign!==void 0&&z?.urls.campaign!==void 0&&{campaign:{...N.campaign,url:z.urls.campaign}},...z!==void 0&&{appUrls:z.urls}});return}if(console.log(`Updated campaign: ${N.campaign?.name??I.id}`),console.log(`ID: ${N.campaign?.id??I.id}`),console.log(`Status: ${N.campaign?.status??"Unknown"}`),lQ("URL",z?.urls.campaign),N.campaign)console.log(`Reply-To: ${sW(N.campaign)}`);return}if(A==="test"){if(!I.to)throw new cA("--to is required",400);let H=await lI("POST",`/api/v1/campaigns/${I.id}/test`,{to:I.to},I.company),N=await UD(I.company),q=N!==void 0?pQ({companyId:N,campaignId:I.id}):void 0;if(I.json){RB({...H,...q!==void 0&&{appUrls:q.urls}});return}console.log(H.message??`Test requested for ${I.id}`),lQ("URL",q?.urls.campaign);return}let C=await lI("GET",`/api/v1/campaigns/${I.id}`,void 0,I.company),D=await UD(I.company),u=D!==void 0?pQ({companyId:D,campaignId:I.id}):void 0;if(I.json){RB({...C,...u?.urls.campaign!==void 0&&{campaign:{...C.campaign,url:u.urls.campaign}},...u!==void 0&&{appUrls:u.urls}});return}let U=C.campaign;if(console.log(U.name),console.log(`ID: ${U.id}`),lQ("URL",u?.urls.campaign),console.log(`Status: ${U.status}`),console.log(`Subject: ${U.subject}`),console.log(`Preheader: ${U.preheader||"None"}`),U.replyToEmail||U.replyProfileId)console.log(`Reply-To: ${sW(U)}`);console.log(`Blocks: ${U.blocks.length}`),console.log(`Created: ${XQ(U.createdAt)}`),console.log(`Scheduled: ${XQ(U.scheduledAt)}`),console.log(`Sent: ${XQ(U.sentAt)}`)}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}function aW(A){let I=A.supportedLocales.join(", "),B=A.subscriberLocaleAttribute??"not configured";return`${A.primaryLocale} -> [${I}] | fallback ${A.fallbackLocale} | attr ${B} | sync ${A.autoSyncMode}`}async function IK(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let U=await lI("GET","/api/v1/companies"),H=U.companies.map((q)=>{let z=pQ({companyId:q.id});return{...q,url:z.urls.dashboard,settingsUrl:z.urls.settings}}),N=U.currentCompanyId!==null?pQ({companyId:U.currentCompanyId}):void 0;if(I.json){RB({...U,companies:H,...N!==void 0&&{appUrls:N.urls}});return}console.log(`Companies (${U.companies.length})`);for(let q of H){let z=q.id===U.currentCompanyId?" (current)":"";console.log(`- ${q.name} [${q.id}]${z}`),console.log(` Status: ${q.status}`),console.log(` Website: ${q.websiteUrl??"Not set"}`),lQ(" URL",q.url),lQ(" Settings",q.settingsUrl),console.log(` Localization: ${aW(q.emailLocalizationConfig)}`)}return}if(!I.id){if(A!=="create")throw new cA("Company ID is required",400)}if(A==="create"){if(!I.domain)throw new cA("Domain is required",400);let U=await lI("POST","/api/v1/companies",{domain:I.domain,name:I.name}),H=pQ({companyId:U.company.id});if(I.json){RB({...U,company:{...U.company,url:H.urls.dashboard,settingsUrl:H.urls.settings},appUrls:H.urls,settingsUrls:H.settingsUrls});return}console.log(U.company.name),console.log(`ID: ${U.company.id}`),lQ("URL",H.urls.dashboard),lQ("Settings",H.urls.settings),console.log(`Status: ${U.company.status}`),console.log(`Website: ${U.company.websiteUrl??"Not set"}`),console.log(""),console.log(U.message);return}let B=await lI("GET",`/api/v1/companies/${I.id}`),C=pQ({companyId:I.id});if(I.json){RB({...B,company:{...B.company,url:C.urls.dashboard,settingsUrl:C.urls.settings},appUrls:C.urls,settingsUrls:C.settingsUrls});return}let D=B.company;console.log(D.name),console.log(`ID: ${D.id}`),lQ("URL",C.urls.dashboard),lQ("Settings",C.urls.settings),console.log(`Status: ${D.status}`),console.log(`Website: ${D.websiteUrl??"Not set"}`),console.log(`Created: ${XQ(D.createdAt)}`),console.log(`Primary language: ${D.language}`),console.log(`Localization: ${aW(D.emailLocalizationConfig)}`);let u=Object.entries(D.emailLocalizationConfig.valueMappings);if(u.length>0){console.log("Mappings:");for(let[U,H]of u)console.log(`- ${U} -> ${H}`)}}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}var tW=10;function BL(A,I){let B=Bg(A,I);if(B!==void 0&&B<1)throw new cA(`${I} must be greater than 0`,400);return B}function Cs(A,I){return{prompt:Su(A,"Prompt").trim(),...I.style!==void 0&&{style:I.style},...I.tone!==void 0&&{tone:I.tone}}}function Ds(A,I){let B=BL(I.count,"--count"),C=BL(I.days,"--days");if(B!==void 0&&B>tW)throw new cA(`--count must be no more than ${tW}`,400);return{goal:Su(A,"Goal").trim(),...B!==void 0&&{emailCount:B},...C!==void 0&&{durationDays:C}}}function gs(A,I){let B=BL(I.count,"--count");return{topic:Su(A,"Topic").trim(),...B!==void 0&&{count:B}}}function Fs(A){if(A.subject)console.log(`Subject: ${A.subject}`);if(A.previewText)console.log(`Preview: ${A.previewText}`);if(A.subject||A.previewText)console.log();if(Array.isArray(A.blocks)&&A.blocks.length>0){console.log(JSON.stringify({blocks:A.blocks},null,2));return}if(A.html)console.log(A.html)}function Gs(A){console.log(`Generated sequence for: ${A.goal}`),console.log(`Emails: ${A.emails.length}`),A.emails.forEach((I,B)=>{if(console.log(),console.log(`${B+1}. ${I.subject}`),I.delayDays!==void 0)console.log(`Delay: ${I.delayDays} days`);console.log(I.html)})}function us(A){console.log(`Subject lines for: ${A.topic}`),A.subjects.forEach((I,B)=>{console.log(`${B+1}. ${I}`)})}async function BK(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="email"){let C=await lI("POST","/api/v1/generate/email",Cs(I.prompt??"",I),I.company);if(I.json){RB(C);return}Fs(C);return}if(A==="sequence"){let C=await lI("POST","/api/v1/generate/sequence",Ds(I.goal??"",I),I.company);if(I.json){RB(C);return}Gs(C);return}let B=await lI("POST","/api/v1/generate/subjects",gs(I.topic??"",I),I.company);if(I.json){RB(B);return}us(B)}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}async function QL(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let C=await lI("GET","/api/v1/lists",void 0,I.company);if(I.json){RB(C);return}console.log(`Lists (${C.lists.length})`);for(let D of C.lists){let u=D.isPrivate?"private":"public";console.log(`- ${D.name} [${D.id}]`),console.log(` Visibility: ${u}`),console.log(` Description: ${D.description??"None"}`),console.log(` Created: ${XQ(D.createdAt)}`)}return}if(!I.name)throw new cA("List name is required",400);let B=await lI("POST","/api/v1/lists",{name:I.name,description:I.description,isPrivate:I.private},I.company);if(I.json){RB(B);return}console.log(`Created list: ${B.list.name}`),console.log(`ID: ${B.list.id}`),console.log(`Visibility: ${B.list.isPrivate?"private":"public"}`),console.log(`Description: ${B.list.description??"None"}`)}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}import ws from"node:os";var oW=process.env.SEQUENZY_API_URL??"https://api.sequenzy.com",Js=process.env.SEQUENZY_APP_URL??"https://sequenzy.com",Hs=5;function Us(A){return new Promise((I)=>{setTimeout(I,A)})}function Rs(A,I,B=`${Js}/setup/auth`){let C=A&&A.trim().length>0?A:B,D=new URL(C);return D.searchParams.set("code",I),D.toString()}async function Ks(){let A=`${process.platform}-${ws.hostname()}`,I=await fetch(`${oW}/api/device-auth/initiate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceName:A,clientType:"cli"})}),B=await I.json();if(!I.ok||!B.success||!B.data)throw Error(B.error??"Failed to initiate login.");return B.data}async function Ms(A){let I=Date.now()+A.expiresIn*1000,B=Math.max(A.pollInterval,Hs)*1000;while(Date.now()<I){await Us(B);let C;try{C=await(await fetch(`${oW}/api/device-auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({deviceCode:A.deviceCode})})).json()}catch{continue}if(C.success&&C.data)return C.data;if(C.error==="authorization_pending")continue;if(C.error==="access_denied")throw Error("Authorization denied.");if(C.error==="expired_token")throw Error("Authorization expired. Please try again.");throw Error(C.error??"Failed to complete login.")}throw Error("Authorization timed out. Please try again.")}async function Ns(){if(await sB())throw Error("Already logged in. Run `sequenzy logout` first to switch accounts.");let A=await Ks(),I=Rs(A.verificationUrl,A.userCode);console.log("Sequenzy Login"),console.log(""),console.log("Open this link in a browser to approve this CLI session:"),console.log(I),console.log(""),console.log(`Code: ${A.userCode}`),console.log(`Waiting for approval... leave this terminal open for up to ${Math.ceil(A.expiresIn/60)} minutes.`);let B=await Ms({deviceCode:A.deviceCode,pollInterval:A.pollInterval,expiresIn:A.expiresIn});await bW(B.apiKey),vW({userId:B.userId,userEmail:B.userEmail}),console.log(""),console.log(`Logged in as ${B.userEmail??B.userId}.`),console.log("Run `sequenzy --help` to see available commands.")}function eW(){Ns().catch((A)=>{JB(A instanceof Error&&A.message.includes("Not logged in")?QQ():A),process.exitCode=1})}async function AO(){if(!await sB()){JB(QQ());return}await _W(),hW(),console.log("Logged out successfully.")}var BO=["status","tag","email","added","firstName","lastName","list","event","segment","emailSent","emailOpened","emailClicked","emailBounced","emailComplained","attribute","stripeProduct"],qs=new Set(["emailSent","emailOpened","emailClicked","emailBounced","emailComplained"]),Ls={emailSent:{yes:"was sent",no:"was not sent"},emailOpened:{yes:"opened",no:"didn't open"},emailClicked:{yes:"clicked",no:"didn't click"},emailBounced:{yes:"bounced",no:"hasn't bounced"},emailComplained:{yes:"complained",no:"hasn't complained"}},QO=["is","is_not","is_empty","is_not_empty","contains","not_contains","less_than","more_than","at_least","less_than_count","gte","lte","gt","lt"];function Ys(A){return BO.includes(A)}function Zs(A){return QO.includes(A)}function IO(A,I){if(!A)throw new cA(`${I} is required for this operator`,400);let B=Number.parseInt(A,10);if(!Number.isInteger(B)||B<=0)throw new cA(`${I} must be a positive integer`,400);return B}function RJ(A,I){if(typeof A!=="string"||A.trim()==="")throw new cA(`${I} must be a non-empty string`,400);return A}function Xs(A){let I=RJ(A.productId,"Stripe product ID");switch(A.purchaseOperator??"bought"){case"bought":return{id:crypto.randomUUID(),field:"stripeProduct",operator:"is",value:I};case"didnt-buy":return{id:crypto.randomUUID(),field:"stripeProduct",operator:"is_not",value:I};case"at-least":{let C=IO(A.payments,"--payments");return{id:crypto.randomUUID(),field:"stripeProduct",operator:"at_least",value:`${I}:${C}`}}case"less-than":{let C=IO(A.payments,"--payments");return{id:crypto.randomUUID(),field:"stripeProduct",operator:"less_than_count",value:`${I}:${C}`}}default:throw new cA("`--purchase-operator` must be one of: bought, didnt-buy, at-least, less-than",400)}}function EO(A,I){if(typeof A!=="object"||A===null)throw new cA(`Filter at ${I} must be an object with field/operator/value`,400);let B=A,C=RJ(B.field,`${I}.field`),D=RJ(B.operator,`${I}.operator`);if(!Ys(C))throw new cA(`${I}.field must be one of: ${BO.join(", ")}`,400);if(!Zs(D))throw new cA(`${I}.operator must be one of: ${QO.join(", ")}`,400);let u;if(D==="is_empty"||D==="is_not_empty"){if(typeof B.value!=="string")throw new cA(`${I}.value must be a string`,400);if(C==="attribute"&&!B.value.includes(":"))throw new cA(`${I}.value must use the format "attributeName:" when field is "attribute" (e.g. "last_logged_in:")`,400);u=B.value}else u=RJ(B.value,`${I}.value`);return{id:typeof B.id==="string"&&B.id.trim()!==""?B.id:crypto.randomUUID(),field:C,operator:D,value:u}}function CO(A,I){if(typeof A!=="object"||A===null)throw new cA(`${I} must be a filter or group object`,400);let B=A;if(B.kind==="group"){let C=DO(B.joinOperator==="or"?"any":"all");if(!Array.isArray(B.children)||B.children.length===0)throw new cA(`${I}.children must be a non-empty array`,400);return{kind:"group",id:typeof B.id==="string"&&B.id.trim()!==""?B.id:crypto.randomUUID(),joinOperator:C,children:B.children.map((D,u)=>CO(D,`${I}.children[${u}]`))}}return{kind:"filter",...EO(A,I)}}function Ss(A){let I;try{I=JSON.parse(A)}catch{throw new cA("`--filter-json` must be valid JSON",400)}if(Array.isArray(I)){if(I.length===0)throw new cA("`--filter-json` must be a non-empty JSON array",400);return{filters:I.map((B,C)=>EO(B,`filters[${C}]`))}}if(typeof I==="object"&&I!==null){let B=I,C=B.kind==="group"?B:B.root??(B.version===2?B.root:void 0);if(C){let D=CO(C,"root");if(D.kind!=="group")throw new cA("`--filter-json` root must be a group",400);return{root:D}}}throw new cA("`--filter-json` must be a non-empty filter array or an object with a root group",400)}function DO(A){if(A===void 0||A==="all")return"and";if(A==="any")return"or";throw new cA("`--match` must be either `all` or `any`",400)}function zs(A){if(A.filterJson&&A.stripeProduct)throw new cA("Use either `--filter-json` or `--stripe-product`, not both",400);if(A.filterJson)return Ss(A.filterJson);if(A.stripeProduct)return{filters:[Xs({productId:A.stripeProduct,purchaseOperator:A.purchaseOperator,payments:A.payments})]};throw new cA("Provide either `--stripe-product` or `--filter-json` when creating a segment",400)}function gO(A){if(A.field==="stripeProduct"){let[I,B]=A.value.split(":",2);if(A.operator==="is")return`Stripe product bought ${I}`;if(A.operator==="is_not")return`Stripe product didn't buy ${I}`;if(A.operator==="at_least"&&B)return`Stripe product payments at least ${B} for ${I}`;if(A.operator==="less_than_count"&&B)return`Stripe product payments less than ${B} for ${I}`}if(A.field==="event")return`event ${A.operator} ${A.value}`;if(A.field==="segment")return`segment ${A.operator} ${A.value}`;if(qs.has(A.field)){let I=Ls[A.field],B=A.operator==="is_not"?I?.no:I?.yes??A.field;if(A.value.startsWith("campaign:")){let C=A.value.slice(9);return`${B} in campaign ${C}`}return`${B} (${A.value})`}return`${A.field} ${A.operator} ${A.value}`}function $s(A){if(console.log(`- ${A.name} [${A.id}]`),console.log(` Match: ${(A.filterJoinOperator??"and")==="or"?"any condition":"all conditions"}`),console.log(` Filters: ${A.filters.length}`),A.createdAt)console.log(` Created: ${A.createdAt}`);for(let I of A.filters)console.log(` - ${gO(I)}`)}async function QK(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let D=await lI("GET","/api/v1/segments",void 0,I.company);if(I.json){console.log(JSON.stringify(D,null,2));return}console.log(`Segments (${D.segments.length})`);for(let u of D.segments)$s(u);return}if(A==="create"){let D=RJ(I.name,"Segment name"),u=zs(I),U=DO(I.match),H=await lI("POST","/api/v1/segments",{name:D,...u,...u.root?{}:{filterJoinOperator:U}},I.company);if(I.json){console.log(JSON.stringify(H,null,2));return}console.log(`Created segment: ${H.segment.name}`),console.log(`ID: ${H.segment.id}`),console.log(`Match: ${(H.segment.filterJoinOperator??"and")==="or"?"any condition":"all conditions"}`);for(let N of H.segment.filters)console.log(`- ${gO(N)}`);return}let B=RJ(I.id,"Segment ID"),C=await lI("GET",`/api/v1/segments/${B}/count`,void 0,I.company);if(I.json){console.log(JSON.stringify(C,null,2));return}console.log(`Segment ${C.segmentId}: ${C.count} subscribers`)}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}import{readFileSync as _o}from"node:fs";import{Stream as qo}from"node:stream";import sK from"node:process";var wj=gB(aQ(),1);import No from"node:process";function FO(A,I,{signal:B,edges:C}={}){let D=void 0,u=null,U=C!=null&&C.includes("leading"),H=C==null||C.includes("trailing"),N=()=>{if(u!==null)A.apply(D,u),D=void 0,u=null},q=()=>{if(H)N();V()},z=null,y=()=>{if(z!=null)clearTimeout(z);z=setTimeout(()=>{z=null,q()},I)},X=()=>{if(z!==null)clearTimeout(z),z=null},V=()=>{X(),D=void 0,u=null},_=()=>{N()},x=function(...c){if(B?.aborted)return;D=this,u=c;let BA=z==null;if(y(),U&&BA)N()};return x.schedule=y,x.cancel=V,x.flush=_,B?.addEventListener("abort",V,{once:!0}),x}function GO(A,I=0,B={}){if(typeof B!=="object")B={};let{leading:C=!1,trailing:D=!0,maxWait:u}=B,U=Array(2);if(C)U[0]="leading";if(D)U[1]="trailing";let H=void 0,N=null,q=FO(function(...X){H=A.apply(this,X),N=null},I,{edges:U}),z=function(...X){if(u!=null){if(N===null)N=Date.now();if(Date.now()-N>=u)return H=A.apply(this,X),N=Date.now(),q.cancel(),q.schedule(),H}return q.apply(this,X),H},y=()=>{return q.flush(),H};return z.cancel=q.cancel,z.flush=y,z}function CK(A,I=0,B={}){let{leading:C=!0,trailing:D=!0}=B;return GO(A,I,{leading:C,maxWait:I,trailing:D})}var rw={};af(rw,{setCwd:()=>Cr,scrollUp:()=>ss,scrollDown:()=>rs,link:()=>Qr,image:()=>Er,iTerm:()=>UO,exitAlternativeScreen:()=>Ir,eraseUp:()=>ps,eraseStartLine:()=>ns,eraseScreen:()=>DK,eraseLines:()=>ms,eraseLine:()=>HO,eraseEndLine:()=>cs,eraseDown:()=>ds,enterAlternativeScreen:()=>Ar,cursorUp:()=>wO,cursorTo:()=>js,cursorShow:()=>is,cursorSavePosition:()=>bs,cursorRestorePosition:()=>_s,cursorPrevLine:()=>xs,cursorNextLine:()=>hs,cursorMove:()=>Ps,cursorLeft:()=>JO,cursorHide:()=>ls,cursorGetPosition:()=>vs,cursorForward:()=>Ts,cursorDown:()=>fs,cursorBackward:()=>ks,clearViewport:()=>ts,clearTerminal:()=>es,clearScreen:()=>as,beep:()=>Br,ConEmu:()=>RO});import MJ from"node:process";import Os from"node:os";var KJ=globalThis.window?.document!==void 0,TUA=globalThis.process?.versions?.node!==void 0,kUA=globalThis.process?.versions?.bun!==void 0,bUA=globalThis.Deno?.version?.deno!==void 0,_UA=globalThis.process?.versions?.electron!==void 0,vUA=globalThis.navigator?.userAgent?.includes("jsdom")===!0,hUA=typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope,xUA=typeof DedicatedWorkerGlobalScope<"u"&&globalThis instanceof DedicatedWorkerGlobalScope,lUA=typeof SharedWorkerGlobalScope<"u"&&globalThis instanceof SharedWorkerGlobalScope,iUA=typeof ServiceWorkerGlobalScope<"u"&&globalThis instanceof ServiceWorkerGlobalScope,RR=globalThis.navigator?.userAgentData?.platform,mUA=RR==="macOS"||globalThis.navigator?.platform==="MacIntel"||globalThis.navigator?.userAgent?.includes(" Mac ")===!0||globalThis.process?.platform==="darwin",cUA=RR==="Windows"||globalThis.navigator?.platform==="Win32"||globalThis.process?.platform==="win32",nUA=RR==="Linux"||globalThis.navigator?.platform?.startsWith("Linux")===!0||globalThis.navigator?.userAgent?.includes(" Linux ")===!0||globalThis.process?.platform==="linux",dUA=RR==="iOS"||globalThis.navigator?.platform==="MacIntel"&&globalThis.navigator?.maxTouchPoints>1||/iPad|iPhone|iPod/.test(globalThis.navigator?.platform),pUA=RR==="Android"||globalThis.navigator?.platform==="Android"||globalThis.navigator?.userAgent?.includes(" Android ")===!0||globalThis.process?.platform==="android";var SQ="\x1B[",NJ="\x1B]",sw="\x07",KR=";",uO=!KJ&&MJ.env.TERM_PROGRAM==="Apple_Terminal",Vs=!KJ&&MJ.platform==="win32",ys=!KJ&&(MJ.env.TERM?.startsWith("screen")||MJ.env.TERM?.startsWith("tmux")||MJ.env.TMUX!==void 0),EL=KJ?()=>{throw Error("`process.cwd()` only works in Node.js, not the browser.")}:MJ.cwd,qJ=(A)=>{if(ys)return"\x1BPtmux;"+A.replaceAll("\x1B","\x1B\x1B")+"\x1B\\";return A},js=(A,I)=>{if(typeof A!=="number")throw TypeError("The `x` argument is required");if(typeof I!=="number")return SQ+(A+1)+"G";return SQ+(I+1)+KR+(A+1)+"H"},Ps=(A,I)=>{if(typeof A!=="number")throw TypeError("The `x` argument is required");let B="";if(A<0)B+=SQ+-A+"D";else if(A>0)B+=SQ+A+"C";if(I<0)B+=SQ+-I+"A";else if(I>0)B+=SQ+I+"B";return B},wO=(A=1)=>SQ+A+"A",fs=(A=1)=>SQ+A+"B",Ts=(A=1)=>SQ+A+"C",ks=(A=1)=>SQ+A+"D",JO=SQ+"G",bs=uO?"\x1B7":SQ+"s",_s=uO?"\x1B8":SQ+"u",vs=SQ+"6n",hs=SQ+"E",xs=SQ+"F",ls=SQ+"?25l",is=SQ+"?25h",ms=(A)=>{let I="";for(let B=0;B<A;B++)I+=HO+(B<A-1?wO():"");if(A)I+=JO;return I},cs=SQ+"K",ns=SQ+"1K",HO=SQ+"2K",ds=SQ+"J",ps=SQ+"1J",DK=SQ+"2J",ss=SQ+"S",rs=SQ+"T",as="\x1Bc",ts=`${DK}${SQ}H`,os=()=>{if(KJ||!Vs)return!1;let A=Os.release().split("."),I=Number(A[0]),B=Number(A[2]??0);if(I<10)return!0;if(I===10&&B<10586)return!0;return!1},es=os()?`${DK}${SQ}0f`:`${DK}${SQ}3J${SQ}H`,Ar=SQ+"?1049h",Ir=SQ+"?1049l",Br=sw,Qr=(A,I)=>{let B=qJ(`${NJ}8${KR}${KR}${I}${sw}`),C=qJ(`${NJ}8${KR}${KR}${sw}`);return B+A+C},Er=(A,I={})=>{let B=`${NJ}1337;File=inline=1`;if(I.width)B+=`;width=${I.width}`;if(I.height)B+=`;height=${I.height}`;if(I.preserveAspectRatio===!1)B+=";preserveAspectRatio=0";let C=Buffer.from(A);return qJ(B+`;size=${C.byteLength}:`+C.toString("base64")+sw)},UO={setCwd:(A=EL())=>qJ(`${NJ}50;CurrentDir=${A}${sw}`),annotation(A,I={}){let B=`${NJ}1337;`,C=I.x!==void 0,D=I.y!==void 0;if((C||D)&&!(C&&D&&I.length!==void 0))throw Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");if(A=A.replaceAll("|",""),B+=I.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",I.length>0)B+=(C?[A,I.length,I.x,I.y]:[I.length,A]).join("|");else B+=A;return qJ(B+sw)}},RO={setCwd:(A=EL())=>qJ(`${NJ}9;9;${A}${sw}`)},Cr=(A=EL())=>UO.setCwd(A)+RO.setCwd(A);import{env as MR}from"node:process";var Dr=MR.CI!=="0"&&MR.CI!=="false"&&(("CI"in MR)||("CONTINUOUS_INTEGRATION"in MR)||Object.keys(MR).some((A)=>A.startsWith("CI_"))),aw=Dr;var gr=(A)=>{let I=new Set;do for(let B of Reflect.ownKeys(A))I.add([A,B]);while((A=Reflect.getPrototypeOf(A))&&A!==Object.prototype);return I};function CL(A,{include:I,exclude:B}={}){let C=(D)=>{let u=(U)=>typeof U==="string"?D===U:U.test(D);if(I)return I.some(u);if(B)return!B.some(u);return!0};for(let[D,u]of gr(A.constructor.prototype)){if(u==="constructor"||!C(u))continue;let U=Reflect.getOwnPropertyDescriptor(D,u);if(U&&typeof U.value==="function")A[u]=A[u].bind(A)}return A}var Jj=gB(uL(),1);import{PassThrough as MO}from"node:stream";var NO=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],wL={},Fr=(A)=>{let I=new MO,B=new MO;I.write=(D)=>{A("stdout",D)},B.write=(D)=>{A("stderr",D)};let C=new console.Console(I,B);for(let D of NO)wL[D]=console[D],console[D]=C[D];return()=>{for(let D of NO)console[D]=wL[D];wL={}}},qO=Fr;var Gr=(()=>{var A=import.meta.url;return function(I){I=I||{};var B;B||(B=typeof I<"u"?I:{});var C,D;B.ready=new Promise(function(j,P){C=j,D=P});var u=Object.assign({},B),U="";typeof document<"u"&&document.currentScript&&(U=document.currentScript.src),A&&(U=A),U.indexOf("blob:")!==0?U=U.substr(0,U.replace(/[?#].*/,"").lastIndexOf("/")+1):U="";var H=B.print||console.log.bind(console),N=B.printErr||console.warn.bind(console);Object.assign(B,u),u=null;var q;B.wasmBinary&&(q=B.wasmBinary);var z=B.noExitRuntime||!0;typeof WebAssembly!="object"&&xA("no native wasm support detected");var y,X=!1;function V(j,P,p){p=P+p;for(var o="";!(P>=p);){var CA=j[P++];if(!CA)break;if(CA&128){var LA=j[P++]&63;if((CA&224)==192)o+=String.fromCharCode((CA&31)<<6|LA);else{var _A=j[P++]&63;CA=(CA&240)==224?(CA&15)<<12|LA<<6|_A:(CA&7)<<18|LA<<12|_A<<6|j[P++]&63,65536>CA?o+=String.fromCharCode(CA):(CA-=65536,o+=String.fromCharCode(55296|CA>>10,56320|CA&1023))}}else o+=String.fromCharCode(CA)}return o}var _,x,c,BA,SA,wA,GA,EA,VA;function ZA(){var j=y.buffer;_=j,B.HEAP8=x=new Int8Array(j),B.HEAP16=BA=new Int16Array(j),B.HEAP32=wA=new Int32Array(j),B.HEAPU8=c=new Uint8Array(j),B.HEAPU16=SA=new Uint16Array(j),B.HEAPU32=GA=new Uint32Array(j),B.HEAPF32=EA=new Float32Array(j),B.HEAPF64=VA=new Float64Array(j)}var GI,KA=[],OI=[],zQ=[];function IB(){var j=B.preRun.shift();KA.unshift(j)}var BI=0,XA=null,QA=null;function xA(j){if(B.onAbort)B.onAbort(j);throw j="Aborted("+j+")",N(j),X=!0,j=new WebAssembly.RuntimeError(j+". Build with -sASSERTIONS for more info."),D(j),j}function oA(j){return j.startsWith("data:application/octet-stream;base64,")}var PI="data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAEBAQBAQEICAEBAQEBAQEBCAgBAQEAAg4CAgUBAR4DBAcBcAHUAdQBBQcBAYACgIACBg0CfwFBkMQEC38BQQALByQIAUUCAAFGAG0BRwCwAQFIAK8BAUkAYQFKAQABSwAjAUwApgEJjQMBAEEBC9MBqwGqAaUB5QHiAZwB0AFazwHOAVlZWpsBmgGZAc0BzAHLAcoBWpgByQFZWVqbAZoBmQHIAccBxgGjAZcBpAGWAaMBvQKVAbwCxQG7Ajq6Ajq5ApQBuAI+twI+xAFqwwFqwgFqaWjBAcABvwGhAZcBtgK+AbUClgGhAbQCmAGzAjqxAjqwAr0BrwKuAq0CrAKrAqoCqAKnAqYCpQKkAqMCogKhArwBoAKfAp4CnQKcApsCmgKZApgClwKWApUClAKTApICkQKQAo8CjgKyAo0CjAKLAooCiAKHAqkChQI+hAK7AYMCggKBAoAC/gH9AfwB+QG6AfgBuQH3AfYB9QH0AfMB8gHxAYYC8AHvAbgB+wH6Ae4B7QG3AesBlQHqATrpAT7oAT7nAZQB0QE67AE+iQLmATrkAeMBOuEB4AHfAT7eAd0B3AG2AdsB2gHZAdgB1wHWAdUBtQHUAdMB0gH/AWloaWiPAZABsgGxAZEBhQGSAbQBswGRAa4BrQGsAakBqAGnAYUBCtj+A6ACMwEBfyAAQQEgABshAAJAA0AgABBhIgENAUGIxAAoAgAiAQRAIAERCQAMAQsLEAIACyABC+0BAgJ9A39DAADAfyEEAkACQAJAAkAgAkEHcSIGDgUCAQEBAAELQQMhBQwBCyAGQQFrQQJPDQEgAkHw/wNxQQR2IQcCfSACQQhxBEAgASAHEJ4BvgwBC0EAIAdB/w9xIgFrIAEgAsFBAEgbsgshAyAGQQFGBEAgAyADXA0BQwAAwH8gAyADQwAAgH9bIANDAACA/1tyIgEbIQQgAUUhBQwBCyADIANcDQBBAEECIANDAACAf1sgA0MAAID/W3IiARshBUMAAMB/IAMgARshBAsgACAFOgAEIAAgBDgCAA8LQfQNQakYQTpB+RYQCwALZwIBfQF/QwAAwH8hAgJAAkACQCABQQdxDgQCAAABAAtBxBJBqRhByQBBuhIQCwALIAFB8P8DcUEEdiEDIAFBCHEEQCAAIAMQngG+DwtBACADQf8PcSIAayAAIAHBQQBIG7IhAgsgAgt4AgF/AX0jAEEQayIEJAAgBEEIaiAAQQMgAkECR0EBdCABQf4BcUECRxsgAhAoQwAAwH8hBQJAAkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAAAgBSAFWxsLeAIBfwF9IwBBEGsiBCQAIARBCGogAEEBIAJBAkZBAXQgAUH+AXFBAkcbIAIQKEMAAMB/IQUCQAJAAkAgBC0ADEEBaw4CAAECCyAEKgIIIQUMAQsgBCoCCCADlEMK1yM8lCEFCyAEQRBqJAAgBUMAAAAAIAUgBVsbC8wCAQV/IAAEQCAAQQRrIgEoAgAiBSEDIAEhAiAAQQhrKAIAIgAgAEF+cSIERwRAIAEgBGsiAigCBCIAIAIoAgg2AgggAigCCCAANgIEIAQgBWohAwsgASAFaiIEKAIAIgEgASAEakEEaygCAEcEQCAEKAIEIgAgBCgCCDYCCCAEKAIIIAA2AgQgASADaiEDCyACIAM2AgAgA0F8cSACakEEayADQQFyNgIAIAICfyACKAIAQQhrIgFB/wBNBEAgAUEDdkEBawwBCyABQR0gAWciAGt2QQRzIABBAnRrQe4AaiABQf8fTQ0AGkE/IAFBHiAAa3ZBAnMgAEEBdGtBxwBqIgAgAEE/TxsLIgFBBHQiAEHgMmo2AgQgAiAAQegyaiIAKAIANgIIIAAgAjYCACACKAIIIAI2AgRB6DpB6DopAwBCASABrYaENwMACwsOAEHYMigCABEJABBYAAunAQIBfQJ/IABBFGoiByACIAFBAkkiCCAEIAUQNSEGAkAgByACIAggBCAFEC0iBEMAAAAAYCADIARecQ0AIAZDAAAAAGBFBEAgAyEEDAELIAYgAyADIAZdGyEECyAAQRRqIgAgASACIAUQOCAAIAEgAhAwkiAAIAEgAiAFEDcgACABIAIQL5KSIgMgBCADIAReGyADIAQgBCAEXBsgBCAEWyADIANbcRsLvwEBA38gAC0AAEEgcUUEQAJAIAEhAwJAIAIgACIBKAIQIgAEfyAABSABEJ0BDQEgASgCEAsgASgCFCIFa0sEQCABIAMgAiABKAIkEQYAGgwCCwJAIAEoAlBBAEgNACACIQADQCAAIgRFDQEgAyAEQQFrIgBqLQAAQQpHDQALIAEgAyAEIAEoAiQRBgAgBEkNASADIARqIQMgAiAEayECIAEoAhQhBQsgBSADIAIQKxogASABKAIUIAJqNgIUCwsLCwYAIAAQIwtQAAJAAkACQAJAAkAgAg4EBAABAgMLIAAgASABQQxqEEMPCyAAIAEgAUEMaiADEEQPCyAAIAEgAUEMahBCDwsQJAALIAAgASABQQxqIAMQRQttAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABQf8BcSACIANrIgNBgAIgA0GAAkkiARsQKhogAUUEQANAIAAgBUGAAhAmIANBgAJrIgNB/wFLDQALCyAAIAUgAxAmCyAFQYACaiQAC/ICAgJ/AX4CQCACRQ0AIAAgAToAACAAIAJqIgNBAWsgAToAACACQQNJDQAgACABOgACIAAgAToAASADQQNrIAE6AAAgA0ECayABOgAAIAJBB0kNACAAIAE6AAMgA0EEayABOgAAIAJBCUkNACAAQQAgAGtBA3EiBGoiAyABQf8BcUGBgoQIbCIBNgIAIAMgAiAEa0F8cSIEaiICQQRrIAE2AgAgBEEJSQ0AIAMgATYCCCADIAE2AgQgAkEIayABNgIAIAJBDGsgATYCACAEQRlJDQAgAyABNgIYIAMgATYCFCADIAE2AhAgAyABNgIMIAJBEGsgATYCACACQRRrIAE2AgAgAkEYayABNgIAIAJBHGsgATYCACAEIANBBHFBGHIiBGsiAkEgSQ0AIAGtQoGAgIAQfiEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkEgayICQR9LDQALCyAAC4AEAQN/IAJBgARPBEAgACABIAIQFyAADwsgACACaiEDAkAgACABc0EDcUUEQAJAIABBA3FFBEAgACECDAELIAJFBEAgACECDAELIAAhAgNAIAIgAS0AADoAACABQQFqIQEgAkEBaiICQQNxRQ0BIAIgA0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAtIAQF/IwBBEGsiBCQAIAQgAzYCDAJAIABFBEBBAEEAIAEgAiAEKAIMEHEMAQsgACgC9AMgACABIAIgBCgCDBBxCyAEQRBqJAALkwECAX0BfyMAQRBrIgYkACAGQQhqIABB6ABqIAAgAkEBdGovAWIQH0MAAMB/IQUCQAJAAkAgBi0ADEEBaw4CAAECCyAGKgIIIQUMAQsgBioCCCADlEMK1yM8lCEFCyAALQADQRB0QYCAwABxBEAgBSAAIAEgAiAEEFQiA0MAAAAAIAMgA1sbkiEFCyAGQRBqJAAgBQu1AQECfyAAKAIEQQFqIgEgACgCACICKALsAyACKALoAyICa0ECdU8EQANAIAAoAggiAUUEQCAAQQA2AgggAEIANwIADwsgACABKAIENgIAIAAgASgCCDYCBCAAIAEoAgA2AgggARAjIAAoAgRBAWoiASAAKAIAIgIoAuwDIAIoAugDIgJrQQJ1Tw0ACwsgACABNgIEIAIgAUECdGooAgAtABdBEHRBgIAwcUGAgCBGBEAgABB9CwuBAQIBfwF9IwBBEGsiAyQAIANBCGogAEEDIAJBAkdBAXQgAUH+AXFBAkcbIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC4EBAgF/AX0jAEEQayIDJAAgA0EIaiAAQQEgAkECRkEBdCABQf4BcUECRxsgAhBTQwAAwH8hBAJAAkACQCADLQAMQQFrDgIAAQILIAMqAgghBAwBCyADKgIIQwAAAACUQwrXIzyUIQQLIANBEGokACAEQwAAAACXQwAAAAAgBCAEWxsLeAICfQF/IAAgAkEDdGoiByoC+AMhBkMAAMB/IQUCQAJAAkAgBy0A/ANBAWsOAgABAgsgBiEFDAELIAYgA5RDCtcjPJQhBQsgAC0AF0EQdEGAgMAAcQR9IAUgAEEUaiABIAIgBBBUIgNDAAAAACADIANbG5IFIAULC1EBAX8CQCABKALoAyICIAEoAuwDRwRAIABCADcCBCAAIAE2AgAgAigCAC0AF0EQdEGAgDBxQYCAIEcNASAAEH0PCyAAQgA3AgAgAEEANgIICwvoAgECfwJAIAAgAUYNACABIAAgAmoiBGtBACACQQF0a00EQCAAIAEgAhArDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAAhAwwDCyAAQQNxRQRAIAAhAwwCCyAAIQMDQCACRQ0EIAMgAS0AADoAACABQQFqIQEgAkEBayECIANBAWoiA0EDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkEBayICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQQRrIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkEBayICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AA0AgAyABKAIANgIAIAFBBGohASADQQRqIQMgAkEEayICQQNLDQALCyACRQ0AA0AgAyABLQAAOgAAIANBAWohAyABQQFqIQEgAkEBayICDQALCyAAC5QCAgF8AX8CQCAAIAGiIgAQbCIERAAAAAAAAPA/oCAEIAREAAAAAAAAAABjGyIEIARiIgUgBJlELUMc6+I2Gj9jRXJFBEAgACAEoSEADAELIAUgBEQAAAAAAADwv6CZRC1DHOviNho/Y0VyRQRAIAAgBKFEAAAAAAAA8D+gIQAMAQsgACAEoSEAIAIEQCAARAAAAAAAAPA/oCEADAELIAMNACAAAnxEAAAAAAAAAAAgBQ0AGkQAAAAAAADwPyAERAAAAAAAAOA/ZA0AGkQAAAAAAADwP0QAAAAAAAAAACAERAAAAAAAAOC/oJlELUMc6+I2Gj9jGwugIQALIAAgAGIgASABYnIEQEMAAMB/DwsgACABo7YLkwECAX0BfyMAQRBrIgYkACAGQQhqIABB6ABqIAAgAkEBdGovAV4QH0MAAMB/IQUCQAJAAkAgBi0ADEEBaw4CAAECCyAGKgIIIQUMAQsgBioCCCADlEMK1yM8lCEFCyAALQADQRB0QYCAwABxBEAgBSAAIAEgAiAEEFQiA0MAAAAAIAMgA1sbkiEFCyAGQRBqJAAgBQtQAAJAAkACQAJAAkAgAg4EBAABAgMLIAAgASABQR5qEEMPCyAAIAEgAUEeaiADEEQPCyAAIAEgAUEeahBCDwsQJAALIAAgASABQR5qIAMQRQt+AgF/AX0jAEEQayIEJAAgBEEIaiAAQQMgAkECR0EBdCABQf4BcUECRxsgAhBQQwAAwH8hBQJAAkACQCAELQAMQQFrDgIAAQILIAQqAgghBQwBCyAEKgIIIAOUQwrXIzyUIQULIARBEGokACAFQwAAAACXQwAAAAAgBSAFWxsLfgIBfwF9IwBBEGsiBCQAIARBCGogAEEBIAJBAkZBAXQgAUH+AXFBAkcbIAIQUEMAAMB/IQUCQAJAAkAgBC0ADEEBaw4CAAECCyAEKgIIIQUMAQsgBCoCCCADlEMK1yM8lCEFCyAEQRBqJAAgBUMAAAAAl0MAAAAAIAUgBVsbC08AAkACQAJAIANB/wFxIgMOBAACAgECCyABIAEvAABB+P8DcTsAAA8LIAEgAS8AAEH4/wNxQQRyOwAADwsgACABIAJBAUECIANBAUYbEEwLNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEBAAtiAgJ9An8CQCAAKALkA0UNACAAQfwAaiIDIABBGmoiBC8BABAgIgIgAlwEQCADIABBGGoiBC8BABAgIgIgAlwNASADIAAvARgQIEMAAAAAXkUNAQsgAyAELwEAECAhAQsgAQtfAQN/IAEEQEEMEB4iAyABKQIENwIEIAMhAiABKAIAIgEEQCADIQQDQEEMEB4iAiABKQIENwIEIAQgAjYCACACIQQgASgCACIBDQALCyACIAAoAgA2AgAgACADNgIACwvXawMtfxx9AX4CfwJAIAAtAABBBHEEQCAAKAKgASAMRw0BCyAAKAKkASAAKAL0AygCDEcNAEEAIAAtAKgBIANGDQEaCyAAQoCAgPyLgIDAv383AoADIABCgYCAgBA3AvgCIABCgICA/IuAgMC/fzcC8AIgAEEANgKsAUEBCyErAkACQAJAAkAgACgCCARAIABBFGoiDkECQQEgBhAiIT4gDkECQQEgBhAhITwgDkEAQQEgBhAiITsgDkEAQQEgBhAhIUAgBCABIAUgAiAAKAL4AiAAQfACaiIOKgIAIAAoAvwCIAAqAvQCIAAqAoADIAAqAoQDID4gPJIiPiA7IECSIjwgACgC9AMiEBB7DQEgACgCrAEiEUUNAyAAQbABaiETA0AgBCABIAUgAiATIB1BGGxqIg4oAgggDioCACAOKAIMIA4qAgQgDioCECAOKgIUID4gPCAQEHsNAiAdQQFqIh0gEUcNAAsMAgsgCEUEQCAAKAKsASITRQ0CIABBsAFqIRADQAJAAkAgECAdQRhsIhFqIg4qAgAiPiA+XCABIAFcckUEQCA+IAGTi0MXt9E4XQ0BDAILIAEgAVsgPiA+W3INAQsCQCAQIBFqIhEqAgQiPiA+XCACIAJcckUEQCA+IAKTi0MXt9E4XQ0BDAILIAIgAlsgPiA+W3INAQsgESgCCCAERw0AIBEoAgwgBUYNAwsgEyAdQQFqIh1HDQALDAILAkAgAEHwAmoiDioCACI+ID5cIAEgAVxyRQRAID4gAZOLQxe30ThdDQEMBAsgASABWyA+ID5bcg0DCyAOQQAgACgC/AIgBUYbQQAgACgC+AIgBEYbQQACfyACIAJcIg4gACoC9AIiPiA+XHJFBEAgPiACk4tDF7fROF0MAQtBACA+ID5bDQAaIA4LGyEOCyAORSArcgRAIA4hHQwCCyAAIA4qAhA4ApQDIAAgDioCFDgCmAMgCkEMQRAgCBtqIgMgAygCAEEBajYCACAOIR0MAgtBACEdCyAGIUAgByFHIAtBAWohIiMAQaABayINJAACQAJAIARBAUYgASABW3JFBEAgDUGqCzYCICAAQQVB2CUgDUEgahAsDAELIAVBAUYgAiACW3JFBEAgDUHZCjYCECAAQQVB2CUgDUEQahAsDAELIApBAEEEIAgbaiILIAsoAgBBAWo2AgAgACAALQCIA0H8AXEgAC0AFEEDcSILIANBASADGyIsIAsbIg9BA3FyOgCIAyAAQawDaiIQIA9BAUdBA3QiC2ogAEEUaiIUQQNBAiAPQQJGGyIRIA8gQBAiIgY4AgAgECAPQQFGQQN0Ig5qIBQgESAPIEAQISIHOAIAIAAgFEEAIA8gQBAiIjw4ArADIAAgFEEAIA8gQBAhIjs4ArgDIABBvANqIhAgC2ogFCARIA8QMDgCACAOIBBqIBQgESAPEC84AgAgACAUQQAgDxAwOALAAyAAIBRBACAPEC84AsgDIAsgAEHMA2oiC2ogFCARIA8gQBA4OAIAIAsgDmogFCARIA8gQBA3OAIAIAAgFEEAIA8gQBA4OALQAyAAIBRBACAPIEAQNyI6OALYAyAGIAeSIT4gPCA7kiE8AkACQCAAKAIIIgsEQEMAAMB/IAEgPpMgBEEBRhshBkMAAMB/IAIgPJMgBUEBRhshPiAAAn0gBCAFckUEQCAAIABBAiAPIAYgQCBAECU4ApQDIABBACAPID4gRyBAECUMAQsgBEEDTyAFQQNPcg0EIA1BiAFqIAAgBiAGIAAqAswDIAAqAtQDkiAAKgK8A5IgACoCxAOSIjyTIgdDAAAAACAHQwAAAABeGyAGIAZcG0GBgAggBEEDdEH4//8HcXZB/wFxID4gPiAAKgLQAyA6kiAAKgLAA5IgACoCyAOSIjuTIgdDAAAAACAHQwAAAABeGyA+ID5cG0GBgAggBUEDdEH4//8HcXZB/wFxIAsREAAgDSoCjAEiPUMAAAAAYCANKgKIASIHQwAAAABgcUUEQCANID27OQMIIA0gB7s5AwAgAEEBQdwdIA0QLCANKgKMASIHQwAAAAAgB0MAAAAAXhshPSANKgKIASIHQwAAAAAgB0MAAAAAXhshBwsgCiAKKAIUQQFqNgIUIAogCUECdGoiCSAJKAIYQQFqNgIYIAAgAEECIA8gPCAHkiAGIARBAWtBAkkbIEAgQBAlOAKUAyAAQQAgDyA7ID2SID4gBUEBa0ECSRsgRyBAECULOAKYAwwBCwJAIAAoAuADRQRAIAAoAuwDIAAoAugDa0ECdSELDAELIA1BiAFqIAAQMgJAIA0oAogBRQRAQQAhCyANKAKMAUUNAQsgDUGAAWohEEEAIQsDQCANQQA2AoABIA0gDSkDiAE3A3ggECANKAKQARA8IA1BiAFqEC4gDSgCgAEiCQRAA0AgCSgCACEOIAkQJyAOIgkNAAsLIAtBAWohCyANQQA2AoABIA0oAowBIA0oAogBcg0ACwsgDSgCkAEiCUUNAANAIAkoAgAhDiAJECcgDiIJDQALCyALRQRAIAAgAEECIA8gBEEBa0EBSwR9IAEgPpMFIAAqAswDIAAqAtQDkiAAKgK8A5IgACoCxAOSCyBAIEAQJTgClAMgACAAQQAgDyAFQQFrQQFLBH0gAiA8kwUgACoC0AMgACoC2AOSIAAqAsADkiAAKgLIA5ILIEcgQBAlOAKYAwwBCwJAIAgNACAFQQJGIAIgPJMiBiAGW3EgBkMAAAAAX3EgBCAFckUgBEECRiABID6TIgdDAAAAAF9xcnJFDQAgACAAQQIgD0MAAAAAQwAAAAAgByAHQwAAAABdGyAHIARBAkYbIAcgB1wbIEAgQBAlOAKUAyAAIABBACAPQwAAAABDAAAAACAGIAZDAAAAAF0bIAYgBUECRhsgBiAGXBsgRyBAECU4ApgDDAELIAAQTyAAIAAtAIgDQfsBcToAiAMgABBeQQMhEyAALQAUQQJ2QQNxIQkCQAJAIA9BAkcNAAJAIAlBAmsOAgIAAQtBAiETDAELIAkhEwsgAC8AFSEnIBQgEyAPIEAQOCEGIBQgEyAPEDAhByAUIBMgDyBAEDchOyAUIBMgDxAvITpBACEQIBQgEUEAIBNBAkkbIhYgDyBAEDghPyAUIBYgDxAwIT0gFCAWIA8gQBA3IUEgFCAWIA8QLyFEIBQgFiAPIEAQYCFCIBQgFiAPEEshQyAAIA9BACABID6TIlAgBiAHkiA7IDqSkiJKID8gPZIgQSBEkpIiRiATQQFLIhkbIEAgQBB6ITsgACAPQQEgAiA8kyJRIEYgSiAZGyBHIEAQeiFFAkACQCAEIAUgGRsiHA0AIA1BiAFqIAAQMgJAAkAgDSgCiAEiDiANKAKMASIJckUNAANAIA4oAuwDIA4oAugDIg5rQQJ1IAlNDQQCQCAOIAlBAnRqKAIAIgkQeUUNACAQDQIgCRA7IgYgBlsgBotDF7fROF1xDQIgCRBAIgYgBlwEQCAJIRAMAQsgCSEQIAaLQxe30ThdDQILIA1BiAFqEC4gDSgCjAEiCSANKAKIASIOcg0ACwwBC0EAIRALIA0oApABIglFDQADQCAJKAIAIQ4gCRAnIA4iCQ0ACwsgDUGIAWogABAyIA0oAowBIQkCQCANKAKIASIORQRAQwAAAAAhPSAJRQ0BCyBFIEVcIiMgBUEAR3IhKCA7IDtcIiQgBEEAR3IhKUMAAAAAIT0DQCAOKALsAyAOKALoAyIOa0ECdSAJTQ0CIA4gCUECdGooAgAiDhB4AkAgDi8AFSAOLQAXQRB0ciIJQYCAMHFBgIAQRgRAIA4QdyAOIA4tAAAiCUEBciIOQfsBcSAOIAlBBHEbOgAADAELIAgEfyAOIA4tABRBA3EiCSAPIAkbIDsgRRB2IA4vABUgDi0AF0EQdHIFIAkLQYDgAHFBgMAARg0AIA5BFGohEQJAIA4gEEYEQCAQQQA2ApwBIBAgDDYCmAFDAAAAACEHDAELIBQtAABBAnZBA3EhCQJAAkAgD0ECRw0AQQMhEgJAIAlBAmsOAgIAAQtBAiESDAELIAkhEgsgDUGAgID+BzYCaCANQYCAgP4HNgJQIA1B+ABqIA5B/ABqIhcgDi8BHhAfIDsgRSASQQFLIh4bIT4CQAJAAkACQCANLQB8IgkOBAABAQABCwJAIBcgDi8BGBAgIgYgBlwNACAXIA4vARgQIEMAAAAAXkUNACAOKAL0Ay0ACEEBcSIJDQBDAADAf0MAAAAAIAkbIQcMAgtDAADAfyEGDAILIA0qAnghB0MAAMB/IQYCQCAJQQFrDgIBAAILIAcgPpRDCtcjPJQhBgwBCyAHIQYLIA4tABdBEHRBgIDAAHEEQCAGIBEgD0GBAiASQQN0dkEBcSA7EFQiBkMAAAAAIAYgBlsbkiEGCyAOKgL4AyEHQQAhH0EAIRgCQAJAAkAgDi0A/ANBAWsOAgEAAgsgOyAHlEMK1yM8lCEHCyAHIAdcDQAgB0MAAAAAYCEYCyAOKgKABCEHAkACQAJAIA4tAIQEQQFrDgIBAAILIEUgB5RDCtcjPJQhBwsgByAHXA0AIAdDAAAAAGAhHwsCQCAOAn0gBiAGXCIJID4gPlxyRQRAIA4qApwBIgcgB1sEQCAOKAL0Ay0AEEEBcUUNAyAOKAKYASAMRg0DCyARIBIgDyA7EDggESASIA8QMJIgESASIA8gOxA3IBEgEiAPEC+SkiIHIAYgBiAHXRsgByAGIAkbIAYgBlsgByAHW3EbDAELIBggHnEEQCARQQIgDyA7EDggEUECIA8QMJIgEUECIA8gOxA3IBFBAiAPEC+SkiIHIA4gD0EAIDsgOxAxIgYgBiAHXRsgByAGIAYgBlwbIAYgBlsgByAHW3EbDAELIB4gH0VyRQRAIBFBACAPIDsQOCARQQAgDxAwkiARQQAgDyA7EDcgEUEAIA8QL5KSIgcgDiAPQQEgRSA7EDEiBiAGIAddGyAHIAYgBiAGXBsgBiAGWyAHIAdbcRsMAQtBASEaIA1BATYCZCANQQE2AnggEUECQQEgOxAiIBFBAkEBIDsQIZIhPiARQQBBASA7ECIhPCARQQBBASA7ECEhOkMAAMB/IQdBASEVQwAAwH8hBiAYBEAgDiAPQQAgOyA7EDEhBiANQQA2AnggDSA+IAaSIgY4AmhBACEVCyA8IDqSITwgHwRAIA4gD0EBIEUgOxAxIQcgDUEANgJkIA0gPCAHkiIHOAJQQQAhGgsCQAJAAkAgAC0AF0EQdEGAgAxxQYCACEYiCSASQQJJIiBxRQRAIAkgJHINAiAGIAZcDQEMAgsgJCAGIAZbcg0CC0ECIRUgDUECNgJ4IA0gOzgCaCA7IQYLAkAgIEEBIAkbBEAgCSAjcg0CIAcgB1wNAQwCCyAjIAcgB1tyDQELQQIhGiANQQI2AmQgDSBFOAJQIEUhBwsCQCAXIA4vAXoQICI6IDpcDQACfyAVIB5yRQRAIBcgDi8BehAgIQcgDUEANgJkIA0gPCAGID6TIAeVkjgCUEEADAELIBogIHINASAXIA4vAXoQICEGIA1BADYCeCANIAYgByA8k5QgPpI4AmhBAAshGkEAIRULIA4vABZBD3EiCUUEQCAALQAVQQR2IQkLAkAgFUUgCUEFRiAeciAYIClyIAlBBEdycnINACANQQA2AnggDSA7OAJoIBcgDi8BehAgIgYgBlwNAEEAIRogFyAOLwF6ECAhBiANQQA2AmQgDSA7ID6TIAaVOAJQCyAOLwAWQQ9xIhhFBEAgAC0AFUEEdiEYCwJAICAgKHIgH3IgGEEFRnIgGkUgGEEER3JyDQAgDUEANgJkIA0gRTgCUCAXIA4vAXoQICIGIAZcDQAgFyAOLwF6ECAhBiANQQA2AnggDSAGIEUgPJOUOAJoCyAOIA9BAiA7IDsgDUH4AGogDUHoAGoQPyAOIA9BACBFIDsgDUHkAGogDUHQAGoQPyAOIA0qAmggDSoCUCAPIA0oAnggDSgCZCA7IEVBAEEFIAogIiAMED0aIA4gEkECdEH8JWooAgBBAnRqKgKUAyEGIBEgEiAPIDsQOCARIBIgDxAwkiARIBIgDyA7EDcgESASIA8QL5KSIgcgBiAGIAddGyAHIAYgBiAGXBsgBiAGWyAHIAdbcRsLIgc4ApwBCyAOIAw2ApgBCyA9IAcgESATQQEgOxAiIBEgE0EBIDsQIZKSkiE9CyANQYgBahAuIA0oAowBIgkgDSgCiAEiDnINAAsLIA0oApABIgkEQANAIAkoAgAhDiAJECcgDiIJDQALCyA7IEUgGRshByA9QwAAAACSIQYgC0ECTwRAIBQgEyAHEE0gC0EBa7OUIAaSIQYLIEIgQ5IhPiAFIAQgGRshGiBHIEAgGRshTSBAIEcgGRshSSANQdAAaiAAEDJBACAcIAYgB14iCxsgHCAcQQJGGyAcICdBgIADcSIfGyEeIBQgFiBFIDsgGRsiRBBNIU8gDSgCVCIRIA0oAlAiCXIEQEEBQQIgRCBEXCIpGyEtIAtFIBxBAUZyIS4gE0ECSSEZIABB8gBqIS8gAEH8AGohMCATQQJ0IgtB7CVqITEgC0HcJWohMiAWQQJ0Ig5B7CVqIRwgDkHcJWohICALQfwlaiEkIA5B/CVqISMgGkEARyIzIAhyITQgGkUiNSAIQQFzcSE2IBogH3JFITcgDUHwAGohOCANQYABaiEnQYECIBNBA3R2Qf8BcSEoIBpBAWtBAkkhOQNAIA1BADYCgAEgDUIANwN4AkAgACgC7AMiCyAAKALoAyIORg0AIAsgDmsiC0EASA0DIA1BiAFqIAtBAnVBACAnEEohECANKAKMASANKAJ8IA0oAngiC2siDmsgCyAOEDMhDiANIA0oAngiCzYCjAEgDSAONgJ4IA0pA5ABIVYgDSANKAJ8Ig42ApABIA0oAoABIRIgDSBWNwJ8IA0gEjYClAEgECALNgIAIAsgDkcEQCANIA4gCyAOa0EDakF8cWo2ApABCyALRQ0AIAsQJwsgFC0AACIOQQJ2QQNxIQsCQAJAIA5BA3EiDiAsIA4bIhJBAkcNAEEDIRACQCALQQJrDgICAAELQQIhEAwBCyALIRALIAAvABUhCyAUIBAgBxBNIT8CQCAJIBFyRQRAQwAAAAAhQ0EAIRFDAAAAACFCQwAAAAAhQUEAIRUMAQsgC0GAgANxISUgEEECSSEYIBBBAnQiC0HsJWohISALQdwlaiEqQQAhFUMAAAAAIUEgESEOQwAAAAAhQkMAAAAAIUNBACEXQwAAAAAhPQNAIAkoAuwDIAkoAugDIglrQQJ1IA5NDQQCQCAJIA5BAnRqKAIAIgkvABUgCS0AF0EQdHIiC0GAgDBxQYCAEEYgC0GA4ABxQYDAAEZyDQAgDUGIAWoiESAJQRRqIgsgKigCACADECggDS0AjAEhJiARIAsgISgCACADECggDS0AjAEhESAJIBs2AtwDIBUgJkEDRmohFSARQQNGIREgCyAQQQEgOxAiIUsgCyAQQQEgOxAhIU4gCSAXIAkgFxsiF0YhJiAJKgKcASE8IAsgEiAYIEkgQBA1IToCQCALIBIgGCBJIEAQLSIGQwAAAABgIAYgPF1xDQAgOkMAAAAAYEUEQCA8IQYMAQsgOiA8IDogPF4bIQYLIBEgFWohFQJAICVFQwAAAAAgPyAmGyI8IEsgTpIiOiA9IAaSkpIgB15Fcg0AIA0oAnggDSgCfEYNACAOIREMAwsgCRB5BEAgQiAJEDuSIUIgQyAJEEAgCSoCnAGUkyFDCyBBIDwgOiAGkpIiBpIhQSA9IAaSIT0gDSgCfCILIA0oAoABRwRAIAsgCTYCACANIAtBBGo2AnwMAQsgCyANKAJ4ayILQQJ1IhFBAWoiDkGAgICABE8NBSANQYgBakH/////AyALQQF1IiYgDiAOICZJGyALQfz///8HTxsgESAnEEohDiANKAKQASAJNgIAIA0gDSgCkAFBBGo2ApABIA0oAowBIA0oAnwgDSgCeCIJayILayAJIAsQMyELIA0gDSgCeCIJNgKMASANIAs2AnggDSkDkAEhViANIA0oAnwiCzYCkAEgDSgCgAEhESANIFY3AnwgDSARNgKUASAOIAk2AgAgCSALRwRAIA0gCyAJIAtrQQNqQXxxajYCkAELIAlFDQAgCRAnCyANQQA2AnAgDSANKQNQNwNoIDggDSgCWBA8IA1B0ABqEC4gDSgCcCIJBEADQCAJKAIAIQsgCRAnIAsiCQ0ACwtBACERIA1BADYCcCANKAJUIg4gDSgCUCIJcg0ACwtDAACAPyBCIEJDAACAP10bIEIgQkMAAAAAXhshPCANKAJ8IRcgDSgCeCEJAn0CQAJ9AkACQAJAIB5FDQAgFCAPQQAgQCBAEDUhBiAUIA9BACBAIEAQLSE6IBQgD0EBIEcgQBA1IT8gFCAPQQEgRyBAEC0hPSAGID8gE0EBSyILGyBKkyIGIAZbIAYgQV5xDQEgOiA9IAsbIEqTIgYgBlsgBiBBXXENASAAKAL0Ay0AFEEBcQ0AIEEgPEMAAAAAWw0DGiAAEDsiBiAGXA0CIEEgABA7QwAAAABbDQMaDAILIAchBgsgBiAGWw0CIAYhBwsgBwshBiBBjEMAAAAAIEFDAAAAAF0bIT8gBgwBCyAGIEGTIT8gBgshByA2RQRAAkAgCSAXRgRAQwAAAAAhQQwBC0MAAIA/IEMgQ0MAAIA/XRsgQyBDQwAAAABeGyE9QwAAAAAhQSAJIQ4DQCAOKAIAIgsqApwBITogC0EUaiIQIA8gGSBJIEAQNSFCAkAgECAPIBkgSSBAEC0iBkMAAAAAYCAGIDpdcQ0AIEJDAAAAAGBFBEAgOiEGDAELIEIgOiA6IEJdGyEGCwJAID9DAAAAAF0EQCAGIAsQQIyUIjpDAAAAAF4gOkMAAAAAXXJFDQEgCyATIA8gPyA9lSA6lCAGkiJCIAcgOxAlITogQiBCXCA6IDpcciA6IEJbcg0BIEEgOiAGk5IhQSALEEAgCyoCnAGUID2SIT0MAQsgP0MAAAAAXkUNACALEDsiQkMAAAAAXiBCQwAAAABdckUNACALIBMgDyA/IDyVIEKUIAaSIkMgByA7ECUhOiBDIENcIDogOlxyIDogQ1tyDQAgPCBCkyE8IEEgOiAGk5IhQQsgDkEEaiIOIBdHDQALID8gQZMiQiA9lSFLIEIgPJUhTiAALwAVQYCAA3FFIC5yISVDAAAAACFBIAkhCwNAIAsoAgAiDioCnAEhPCAOQRRqIhggDyAZIEkgQBA1IToCQCAYIA8gGSBJIEAQLSIGQwAAAABgIAYgPF1xDQAgOkMAAAAAYEUEQCA8IQYMAQsgOiA8IDogPF4bIQYLAn0gDiATIA8CfSBCQwAAAABdBEAgBiAGIA4QQIyUIjxDAAAAAFsNAhogBiA8kiA9QwAAAABbDQEaIEsgPJQgBpIMAQsgBiBCQwAAAABeRQ0BGiAGIA4QOyI8QwAAAABeIDxDAAAAAF1yRQ0BGiBOIDyUIAaSCyAHIDsQJQshQyAYIBNBASA7ECIhPCAYIBNBASA7ECEhOiAYIBZBASA7ECIhUiAYIBZBASA7ECEhUyANIEMgPCA6kiJUkiJVOAJoIA1BADYCYCBSIFOSITwCQCAOQfwAaiIQIA4vAXoQICI6IDpbBEAgECAOLwF6ECAhOiANQQA2AmQgDSA8IFUgVJMiPCA6lCA8IDqVIBkbkjgCeAwBCyAjKAIAIRACQCApDQAgDiAQQQN0aiIhKgL4AyE6QQAhEgJAAkACQCAhLQD8A0EBaw4CAQACCyBEIDqUQwrXIzyUIToLIDogOlwNACA6QwAAAABgIRILICUgNSASQQFzcXFFDQAgDi8AFkEPcSISBH8gEgUgAC0AFUEEdgtBBEcNACANQYgBaiAYICAoAgAgDxAoIA0tAIwBQQNGDQAgDUGIAWogGCAcKAIAIA8QKCANLQCMAUEDRg0AIA1BADYCZCANIEQ4AngMAQsgDkH4A2oiEiAQQQN0aiIQKgIAIToCQAJAAkACQCAQLQAEQQFrDgIBAAILIEQgOpRDCtcjPJQhOgsgOkMAAAAAYA0BCyANIC02AmQgDSBEOAJ4DAELAkACfwJAAkACQCAWQQJrDgICAAELIDwgDiAPQQAgRCA7EDGSITpBAAwCC0EBIRAgDSA8IA4gD0EBIEQgOxAxkiI6OAJ4IBNBAU0NDAwCCyA8IA4gD0EAIEQgOxAxkiE6QQALIRAgDSA6OAJ4CyANIDMgEiAQQQN0ajEABEIghkKAgICAIFFxIDogOlxyNgJkCyAOIA8gEyAHIDsgDUHgAGogDUHoAGoQPyAOIA8gFiBEIDsgDUHkAGogDUH4AGoQPyAOICMoAgBBA3RqIhAqAvgDIToCQAJAAkACQCAQLQD8A0EBaw4CAQACCyBEIDqUQwrXIzyUIToLQQEhECA6QwAAAABgDQELQQEhECAOLwAWQQ9xIhIEfyASBSAALQAVQQR2C0EERw0AIA1BiAFqIBggICgCACAPECggDS0AjAFBA0YNACANQYgBaiAYIBwoAgAgDxAoIA0tAIwBQQNGIRALIA4gDSoCaCI8IA0qAngiOiATQQFLIhIbIDogPCASGyAALQCIA0EDcSANKAJgIhggDSgCZCIhIBIbICEgGCASGyA7IEUgCCAQcSIQQQRBByAQGyAKICIgDBA9GiBBIEMgBpOSIUEgAAJ/IAAtAIgDIhBBBHFFBEBBACAOLQCIA0EEcUUNARoLQQQLIBBB+wFxcjoAiAMgC0EEaiILIBdHDQALCyA/IEGTIT8LIAAgAC0AiAMiC0H7AXFBBCA/QwAAAABdQQJ0IAtBBHFBAnYbcjoAiAMgFCATIA8gQBBgIBQgEyAPEEuSITogFCATIA8gQBB/IBQgEyAPEFKSIUsgFCATIAcQTSFCAn8CQAJ9ID9DAAAAAF5FIB5BAkdyRQRAIA1BiAFqIDAgLyAkKAIAQQF0ai8BABAfAkAgDS0AjAEEQCAUIA8gKCBJIEAQNSIGIAZbDQELQwAAAAAMAgtDAAAAACAUIA8gKCBJIEAQNSA6kyBLkyAHID+TkyI/QwAAAABeRQ0BGgsgP0MAAAAAYEUNASA/CyE8IBQtAABBBHZBB3EMAQsgPyE8IBQtAABBBHZBB3EiC0EAIAtBA2tBA08bCyELQwAAAAAhBgJAAkAgFQ0AQwAAAAAhPQJAAkACQAJAAkAgC0EBaw4FAAECBAMGCyA8QwAAAD+UIT0MBQsgPCE9DAQLIBcgCWsiC0EFSQ0CIEIgPCALQQJ1QQFrs5WSIUIMAgsgQiA8IBcgCWtBAnVBAWqzlSI9kiFCDAILIDxDAAAAP5QgFyAJa0ECdbOVIj0gPZIgQpIhQgwBC0MAAAAAIT0LIDogPZIhPSAAEHwhEgJAIAkgF0YiGARAQwAAAAAhP0MAAAAAIToMAQsgF0EEayElIDwgFbOVIU4gMigCACEhQwAAAAAhOkMAAAAAIT8gCSELA0AgDUGIAWogCygCACIOQRRqIhAgISAPECggPUMAAACAIE5DAAAAgCA8QwAAAABeGyJBIA0tAIwBQQNHG5IhPSAIBEACfwJAAkACQAJAIBNBAWsOAwECAwALQQEhFSAOQaADagwDC0EDIRUgDkGoA2oMAgtBACEVIA5BnANqDAELQQIhFSAOQaQDagshKiAOIBVBAnRqICoqAgAgPZI4ApwDCyAlKAIAIRUgDUGIAWogECAxKAIAIA8QKCA9QwAAAIAgQiAOIBVGG5JDAAAAgCBBIA0tAIwBQQNHG5IhPQJAIDRFBEAgPSAQIBNBASA7ECIgECATQQEgOxAhkiAOKgKcAZKSIT0gRCEGDAELIA4gEyA7EF0gPZIhPSASBEAgDhBOIUEgEEEAIA8gOxBBIUMgDioCmAMgEEEAQQEgOxAiIBBBAEEBIDsQIZKSIEEgQ5IiQZMiQyA/ID8gQ10bIEMgPyA/ID9cGyA/ID9bIEMgQ1txGyE/IEEgOiA6IEFdGyBBIDogOiA6XBsgOiA6WyBBIEFbcRshOgwBCyAOIBYgOxBdIkEgBiAGIEFdGyBBIAYgBiAGXBsgBiAGWyBBIEFbcRshBgsgC0EEaiILIBdHDQALCyA/IDqSIAYgEhshQQJ9IDkEQCAAIBYgDyBGIEGSIE0gQBAlIEaTDAELIEQgQSA3GyFBIEQLIT8gH0UEQCAAIBYgDyBGIEGSIE0gQBAlIEaTIUELIEsgPZIhPAJAIAhFDQAgCSELIBgNAANAIAsoAgAiFS8AFkEPcSIORQRAIAAtABVBBHYhDgsCQAJAAkACQCAOQQRrDgIAAQILIA1BiAFqIBVBFGoiECAgKAIAIA8QKEEEIQ4gDS0AjAFBA0YNASANQYgBaiAQIBwoAgAgDxAoIA0tAIwBQQNGDQEgFSAjKAIAQQN0aiIOKgL4AyE9AkACQAJAIA4tAPwDQQFrDgIBAAILIEQgPZRDCtcjPJQhPQsgPiEGID1DAAAAAGANAwsgFSAkKAIAQQJ0aioClAMhBiANIBVB/ABqIg4gFS8BehAgIjogOlsEfSAQIBZBASA7ECIgECAWQQEgOxAhkiAGIA4gFS8BehAgIjqUIAYgOpUgGRuSBSBBCzgCeCANIAYgECATQQEgOxAiIBAgE0EBIDsQIZKSOAKIASANQQA2AmggDUEANgJkIBUgDyATIAcgOyANQegAaiANQYgBahA/IBUgDyAWIEQgOyANQeQAaiANQfgAahA/IA0qAngiOiANKgKIASI9IBNBAUsiGCIOGyEGIB9BAEcgAC8AFUEPcUEER3EiECAZcSA9IDogDhsiOiA6XHIhDiAVIDogBiAPIA4gECAYcSAGIAZcciA7IEVBAUECIAogIiAMED0aID4hBgwCC0EFQQEgFC0AAEEIcRshDgsgFSAWIDsQXSEGIA1BiAFqIBVBFGoiECAgKAIAIhggDxAoID8gBpMhOgJAIA0tAIwBQQNHBEAgHCgCACESDAELIA1BiAFqIBAgHCgCACISIA8QKCANLQCMAUEDRw0AID4gOkMAAAA/lCIGQwAAAAAgBkMAAAAAXhuSIQYMAQsgDUGIAWogECASIA8QKCA+IQYgDS0AjAFBA0YNACANQYgBaiAQIBggDxAoIA0tAIwBQQNGBEAgPiA6QwAAAAAgOkMAAAAAXhuSIQYMAQsCQAJAIA5BAWsOAgIAAQsgPiA6QwAAAD+UkiEGDAELID4gOpIhBgsCfwJAAkACQAJAIBZBAWsOAwECAwALQQEhECAVQaADagwDC0EDIRAgFUGoA2oMAgtBACEQIBVBnANqDAELQQIhECAVQaQDagshDiAVIBBBAnRqIAYgTCAOKgIAkpI4ApwDIAtBBGoiCyAXRw0ACwsgCQRAIAkQJwsgPCBIIDwgSF4bIDwgSCBIIEhcGyBIIEhbIDwgPFtxGyFIIEwgT0MAAAAAIBsbIEGSkiFMIBtBAWohGyANKAJQIgkgEXINAAsLAkAgCEUNACAfRQRAIAAQfEUNAQsgACAWIA8CfSBGIESSIBpFDQAaIAAgFkECdEH8JWooAgBBA3RqIgkqAvgDIQYCQAJAAkAgCS0A/ANBAWsOAgEAAgsgTSAGlEMK1yM8lCEGCyAGQwAAAABgRQ0AIAAgD0GBAiAWQQN0dkEBcSBNIEAQMQwBCyBGIEySCyBHIEAQJSEGQwAAAAAhPCAALwAVQQ9xIQkCQAJAAkACQAJAAkACQAJAAkAgBiBGkyBMkyIGQwAAAABgRQRAQwAAAAAhQyAJQQJrDgICAQcLQwAAAAAhQyAJQQJrDgcBAAUGBAIDBgsgPiAGkiE+DAULID4gBkMAAAA/lJIhPgwECyAGIBuzIjqVITwgPiAGIDogOpKVkiE+DAMLID4gBiAbQQFqs5UiPJIhPgwCCyAbQQJJBEAMAgsgDUGIAWogABAyIAYgG0EBa7OVITwMAgsgBiAbs5UhQwsgDUGIAWogABAyIBtFDQELIBZBAnQiCUHcJWohECAJQfwlaiERIA1BOGohGCANQcgAaiEZIA1B8ABqIRUgDUGQAWohHCANQYABaiEfQQAhEgNAIA1BADYCgAEgDSANKQOIATcDeCAfIA0oApABEDwgDUEANgJwIA0gDSkDeCJWNwNoIBUgDSgCgAEiCxA8IA0oAmwhCQJAAkAgDSgCaCIOBEBDAAAAACE6QwAAAAAhP0MAAAAAIQYMAQtDAAAAACE6QwAAAAAhP0MAAAAAIQYgCUUNAQsDQCAOKALsAyAOKALoAyIOa0ECdSAJTQ0FAkAgDiAJQQJ0aigCACIJLwAVIAktABdBEHRyIhdBgIAwcUGAgBBGIBdBgOAAcUGAwABGcg0AIAkoAtwDIBJHDQIgCUEUaiEOIAkgESgCAEECdGoqApQDIj1DAAAAAGAEfyA9IA4gFkEBIDsQIiAOIBZBASA7ECGSkiI9IAYgBiA9XRsgPSAGIAYgBlwbIAYgBlsgPSA9W3EbIQYgCS0AFgUgF0EIdgtBD3EiFwR/IBcFIAAtABVBBHYLQQVHDQAgFC0AAEEIcUUNACAJEE4gDkEAIA8gOxBBkiI9ID8gPSA/XhsgPSA/ID8gP1wbID8gP1sgPSA9W3EbIj8gCSoCmAMgDkEAQQEgOxAiIA5BAEEBIDsQIZKSID2TIj0gOiA6ID1dGyA9IDogOiA6XBsgOiA6WyA9ID1bcRsiOpIiPSAGIAYgPV0bID0gBiAGIAZcGyAGIAZbID0gPVtxGyEGCyANQQA2AkggDSANKQNoNwNAIBkgDSgCcBA8IA1B6ABqEC4gDSgCSCIJBEADQCAJKAIAIQ4gCRAnIA4iCQ0ACwsgDUEANgJIIA0oAmwiCSANKAJoIg5yDQALCyANIA0pA2g3A4gBIBwgDSgCcBB1IA0gVjcDaCAVIAsQdSA+IE9DAAAAACASG5IhPiBDIAaSIT0gDSgCbCEJAkAgDSgCaCIOIA0oAogBRgRAIAkgDSgCjAFGDQELID4gP5IhQiA+ID2SIUsgPCA9kiEGA0AgDigC7AMgDigC6AMiDmtBAnUgCU0NBQJAIA4gCUECdGooAgAiCS8AFSAJLQAXQRB0ciIXQYCAMHFBgIAQRiAXQYDgAHFBgMAARnINACAJQRRqIQ4CQAJAAkACQAJAAkAgF0EIdkEPcSIXBH8gFwUgAC0AFUEEdgtBAWsOBQEDAgQABgsgFC0AAEEIcQ0ECyAOIBYgDyA7EFEhOiAJIBAoAgBBAnRqID4gOpI4ApwDDAQLIA4gFiAPIDsQYiE/AkACQAJAAkAgFkECaw4CAgABCyAJKgKUAyE6QQIhDgwCC0EBIQ4gCSoCmAMhOgJAIBYOAgIADwtBAyEODAELIAkqApQDITpBACEOCyAJIA5BAnRqIEsgP5MgOpM4ApwDDAMLAkACQAJAAkAgFkECaw4CAgABCyAJKgKUAyE/QQIhDgwCC0EBIQ4gCSoCmAMhPwJAIBYOAgIADgtBAyEODAELIAkqApQDIT9BACEOCyAJIA5BAnRqID4gPSA/k0MAAAA/lJI4ApwDDAILIA4gFiAPIDsQQSE6IAkgECgCAEECdGogPiA6kjgCnAMgCSARKAIAQQN0aiIXKgL4AyE/AkACQAJAIBctAPwDQQFrDgIBAAILIEQgP5RDCtcjPJQhPwsgP0MAAAAAYA0CCwJAAkACfSATQQFNBEAgCSoCmAMgDiAWQQEgOxAiIA4gFkEBIDsQIZKSITogBgwBCyAGITogCSoClAMgDiATQQEgOxAiIA4gE0EBIDsQIZKSCyI/ID9cIAkqApQDIkEgQVxyRQRAID8gQZOLQxe30ThdDQEMAgsgPyA/WyBBIEFbcg0BCyAJKgKYAyJBIEFcIg4gOiA6XHJFBEAgOiBBk4tDF7fROF1FDQEMAwsgOiA6Ww0AIA4NAgsgCSA/IDogD0EAQQAgOyBFQQFBAyAKICIgDBA9GgwBCyAJIEIgCRBOkyAOQQAgDyBEEFGSOAKgAwsgDUEANgI4IA0gDSkDaDcDMCAYIA0oAnAQPCANQegAahAuIA0oAjgiCQRAA0AgCSgCACEOIAkQJyAOIgkNAAsLIA1BADYCOCANKAJsIQkgDSgCaCIOIA0oAogBRw0AIAkgDSgCjAFHDQALCyANKAJwIgkEQANAIAkoAgAhDiAJECcgDiIJDQALCyALBEADQCALKAIAIQkgCxAnIAkiCw0ACwsgPCA+kiA9kiE+IBJBAWoiEiAbRw0ACwsgDSgCkAEiCUUNAANAIAkoAgAhCyAJECcgCyIJDQALCyAAQZQDaiIQIABBAiAPIFAgQCBAECU4AgAgAEGYA2oiESAAQQAgDyBRIEcgQBAlOAIAAkAgEEGBAiATQQN0dkEBcUECdGoCfQJAIB5BAUcEQCAALQAXQQNxIglBAkYgHkECR3INAQsgACATIA8gSCBJIEAQJQwBCyAeQQJHIAlBAkdyDQEgSiAAIA8gEyBIIEkgQBB0Ij4gSiAHkiIGIAYgPl4bID4gBiAGIAZcGyAGIAZbID4gPltxGyIGIAYgSl0bIEogBiAGIAZcGyAGIAZbIEogSltxGws4AgALAkAgEEGBAiAWQQN0dkEBcUECdGoCfQJAIBpBAUcEQCAaQQJHIgkgAC0AF0EDcSILQQJGcg0BCyAAIBYgDyBGIEySIE0gQBAlDAELIAkgC0ECR3INASBGIAAgDyAWIEYgTJIgTSBAEHQiByBGIESSIgYgBiAHXhsgByAGIAYgBlwbIAYgBlsgByAHW3EbIgYgBiBGXRsgRiAGIAYgBlwbIAYgBlsgRiBGW3EbCzgCAAsCQCAIRQ0AAkAgAC8AFUGAgANxQYCAAkcNACANQYgBaiAAEDIDQCANKAKMASIJIA0oAogBIgtyRQRAIA0oApABIglFDQIDQCAJKAIAIQsgCRAnIAsiCQ0ACwwCCyALKALsAyALKALoAyILa0ECdSAJTQ0DIAsgCUECdGooAgAiCS8AFUGA4ABxQYDAAEcEQCAJAn8CQAJAAkAgFkECaw4CAAECCyAJQZQDaiEOIBAqAgAgCSoCnAOTIQZBAAwCCyAJQZQDaiEOIBAqAgAgCSoCpAOTIQZBAgwBCyARKgIAIQYCQAJAIBYOAgABCgsgCUGYA2ohDiAGIAkqAqADkyEGQQEMAQsgCUGYA2ohDiAGIAkqAqgDkyEGQQMLQQJ0aiAGIA4qAgCTOAKcAwsgDUGIAWoQLgwACwALAkAgEyAWckEBcUUNACAWQQFxIRQgE0EBcSEVIA1BiAFqIAAQMgNAIA0oAowBIgkgDSgCiAEiC3JFBEAgDSgCkAEiCUUNAgNAIAkoAgAhCyAJECcgCyIJDQALDAILIAsoAuwDIAsoAugDIgtrQQJ1IAlNDQMCQCALIAlBAnRqKAIAIgkvABUgCS0AF0EQdHIiC0GAgDBxQYCAEEYgC0GA4ABxQYDAAEZyDQAgFQRAAn8CfwJAAkACQCATQQFrDgMAAQINCyAJQZgDaiEOIAlBqANqIQtBASESIBEMAwsgCUGUA2ohDkECIRIgCUGcA2oMAQsgCUGUA2ohDkEAIRIgCUGkA2oLIQsgEAshGyAJIBJBAnRqIBsqAgAgDioCAJMgCyoCAJM4ApwDCyAURQ0AAn8CfwJAAkACQCAWQQFrDgMAAQIMCyAJQZgDaiELIAlBqANqIRJBASEXIBEMAwsgCUGUA2ohCyAJQZwDaiESQQIMAQsgCUGUA2ohCyAJQaQDaiESQQALIRcgEAshDiAJIBdBAnRqIA4qAgAgCyoCAJMgEioCAJM4ApwDCyANQYgBahAuDAALAAsgAC8AFUGA4ABxICJBAUZyRQRAIAAtAABBCHFFDQELIAAgACAeIAQgE0EBSxsgDyAKICIgDEMAAAAAQwAAAAAgOyBFEH4aCyANKAJYIglFDQIDQCAJKAIAIQsgCRAnIAsiCQ0ACwwCCxACAAsgABBeCyANQaABaiQADAELECQACyAAIAM6AKgBIAAgACgC9AMoAgw2AqQBIB0NACAKIAooAggiAyAAKAKsASIOQQFqIgkgAyAJSxs2AgggDkEIRgRAIABBADYCrAFBACEOCyAIBH8gAEHwAmoFIAAgDkEBajYCrAEgACAOQRhsakGwAWoLIgMgBTYCDCADIAQ2AgggAyACOAIEIAMgATgCACADIAAqApQDOAIQIAMgACoCmAM4AhRBACEdCyAIBEAgACAAKQKUAzcCjAMgACAALQAAIgNBAXIiBEH7AXEgBCADQQRxGzoAAAsgACAMNgKgASArIB1Fcgs1AQF/IAEgACgCBCICQQF1aiEBIAAoAgAhACABIAJBAXEEfyABKAIAIABqKAIABSAACxECAAt9ACAAQRRqIgAgAUGBAiACQQN0dkH/AXEgAyAEEC0gACACQQEgBBAiIAAgAkEBIAQQIZKSIQQCQAJAAkACQCAFKAIADgMAAQADCyAGKgIAIgMgAyAEIAMgBF0bIAQgBFwbIQQMAQsgBCAEXA0BIAVBAjYCAAsgBiAEOAIACwuMAQIBfwF9IAAoAuQDRQRAQwAAAAAPCyAAQfwAaiIBIAAvARwQICICIAJbBEAgASAALwEcECAPCwJAIAAoAvQDLQAIQQFxDQAgASAALwEYECAiAiACXA0AIAEgAC8BGBAgQwAAAABdRQ0AIAEgAC8BGBAgjA8LQwAAgD9DAAAAACAAKAL0Ay0ACEEBcRsLcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEChDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwtHAQF/IAIvAAYiA0EHcQRAIAAgAUHoAGogAxAfDwsgAUHoAGohASACLwAOIgNBB3EEQCAAIAEgAxAfDwsgACABIAIvABAQHwtHAQF/IAIvAAIiA0EHcQRAIAAgAUHoAGogAxAfDwsgAUHoAGohASACLwAOIgNBB3EEQCAAIAEgAxAfDwsgACABIAIvABAQHwt7AAJAAkACQAJAIANBAWsOAgABAgsgAi8ACiIDQQdxRQ0BDAILIAIvAAgiA0EHcUUNAAwBCyACLwAEIgNBB3EEQAwBCyABQegAaiEBIAIvAAwiA0EHcQRAIAAgASADEB8PCyAAIAEgAi8AEBAfDwsgACABQegAaiADEB8LewACQAJAAkACQCADQQFrDgIAAQILIAIvAAgiA0EHcUUNAQwCCyACLwAKIgNBB3FFDQAMAQsgAi8AACIDQQdxBEAMAQsgAUHoAGohASACLwAMIgNBB3EEQCAAIAEgAxAfDwsgACABIAIvABAQHw8LIAAgAUHoAGogAxAfC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQe4AaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAuFAQIDfwF+AkAgAEKAgICAEFQEQCAAIQUMAQsDQCABQQFrIgEgAEIKgCIFQvYBfiAAfKdBMHI6AAAgAEL/////nwFWIQIgBSEAIAINAAsLIAWnIgIEQANAIAFBAWsiASACQQpuIgNB9gFsIAJqQTByOgAAIAJBCUshBCADIQIgBA0ACwsgAQs3AQJ/QQQQHiICIAE2AgBBBBAeIgMgATYCAEHBOyAAQeI7QfooQb8BIAJB4jtB/ihBwAEgAxAHCw8AIAAgASACQQFBAhCLAQteAQF/IABBADYCDCAAIAM2AhACQCABBEAgAUGAgICABE8NASABQQJ0EB4hBAsgACAENgIAIAAgBCACQQJ0aiICNgIIIAAgBCABQQJ0ajYCDCAAIAI2AgQgAA8LEFgAC3kCAX8BfSMAQRBrIgMkACADQQhqIAAgAUECdEHcJWooAgAgAhBTQwAAwH8hBAJAAkACQCADLQAMQQFrDgIAAQILIAMqAgghBAwBCyADKgIIQwAAAACUQwrXIzyUIQQLIANBEGokACAEQwAAAACXQwAAAAAgBCAEWxsLnAoBC38jAEEQayIIJAAgASABLwAAQXhxIANyIgM7AAACQAJAAkACQAJAAkACQAJAAkACQCADQQhxBEAgA0H//wNxIgZBBHYhBCAGQT9NBH8gACAEQQJ0akEEagUgBEEEayIEIAAoAhgiACgCBCAAKAIAIgBrQQJ1Tw0CIAAgBEECdGoLIAI4AgAMCgsCfyACi0MAAABPXQRAIAKoDAELQYCAgIB4CyIEQf8PakH+H0sgBLIgAlxyRQRAIANBD3FBACAEa0GAEHIgBCACQwAAAABdG0EEdHIhAwwKCyAAIAAvAQAiC0EBajsBACALQYAgTw0DIAtBA00EQCAAIAtBAnRqIAI4AgQMCQsgACgCGCIDRQRAQRgQHiIDQgA3AgAgA0IANwIQIANCADcCCCAAIAM2AhgLAkAgAygCBCIEIAMoAghHBEAgBCACOAIAIAMgBEEEajYCBAwBCyAEIAMoAgAiB2siBEECdSIJQQFqIgZBgICAgARPDQECf0H/////AyAEQQF1IgUgBiAFIAZLGyAEQfz///8HTxsiBkUEQEEAIQUgCQwBCyAGQYCAgIAETw0GIAZBAnQQHiEFIAMoAgQgAygCACIHayIEQQJ1CyEKIAUgCUECdGoiCSACOAIAIAkgCkECdGsgByAEEDMhByADIAUgBkECdGo2AgggAyAJQQRqNgIEIAMoAgAhBCADIAc2AgAgBEUNACAEECMLIAAoAhgiBigCECIDIAYoAhQiAEEFdEcNByADQQFqQQBIDQAgA0H+////A0sNASADIABBBnQiACADQWBxQSBqIgQgACAESxsiAE8NByAAQQBODQILEAIAC0H/////ByEAIANB/////wdPDQULIAhBADYCCCAIQgA3AwAgCCAAEJ8BIAYoAgwhBCAIIAgoAgQiByAGKAIQIgBBH3FqIABBYHFqIgM2AgQgB0UEQCADQQFrIQUMAwsgA0EBayIFIAdBAWtzQR9LDQIgCCgCACEKDAMLQZUlQeEXQSJB3BcQCwALEFgACyAIKAIAIgogBUEFdkEAIANBIU8bQQJ0akEANgIACyAKIAdBA3ZB/P///wFxaiEDAkAgB0EfcSIHRQRAIABBAEwNASAAQSBtIQUgAEEfakE/TwRAIAMgBCAFQQJ0EDMaCyAAIAVBBXRrIgBBAEwNASADIAVBAnQiBWoiAyADKAIAQX9BICAAa3YiAEF/c3EgBCAFaigCACAAcXI2AgAMAQsgAEEATA0AQX8gB3QhDEEgIAdrIQkgAEEgTgRAIAxBf3MhDSADKAIAIQUDQCADIAUgDXEgBCgCACIFIAd0cjYCACADIAMoAgQgDHEgBSAJdnIiBTYCBCAEQQRqIQQgA0EEaiEDIABBP0shDiAAQSBrIQAgDg0ACyAAQQBMDQELIAMgAygCAEF/IAkgCSAAIAAgCUobIgVrdiAMcUF/c3EgBCgCAEF/QSAgAGt2cSIEIAd0cjYCACAAIAVrIgBBAEwNACADIAUgB2pBA3ZB/P///wFxaiIDIAMoAgBBf0EgIABrdkF/c3EgBCAFdnI2AgALIAYoAgwhACAGIAo2AgwgBiAIKAIEIgM2AhAgBiAIKAIINgIUIABFDQAgABAjIAYoAhAhAwsgBiADQQFqNgIQIAYoAgwgA0EDdkH8////AXFqIgAgACgCAEF+IAN3cTYCACABLwAAIQMLIANBB3EgC0EEdHJBCHIhAwsgASADOwAAIAhBEGokAAuPAQIBfwF9IwBBEGsiAyQAIANBCGogAEHoAGogAEHUAEHWACABQf4BcUECRhtqLwEAIgEgAC8BWCABQQdxGxAfQwAAwH8hBAJAAkACQCADLQAMQQFrDgIAAQILIAMqAgghBAwBCyADKgIIIAKUQwrXIzyUIQQLIANBEGokACAEQwAAAACXQwAAAAAgBCAEWxsL2AICBH8BfSMAQSBrIgMkAAJAIAAoAgwiAQRAIAAgACoClAMgACoCmAMgAREnACIFIAVbDQEgA0GqHjYCACAAQQVB2CUgAxAsECQACyADQRBqIAAQMgJAIAMoAhAiAiADKAIUIgFyRQ0AAkADQCABIAIoAuwDIAIoAugDIgJrQQJ1SQRAIAIgAUECdGooAgAiASgC3AMNAyABLwAVIAEtABdBEHRyIgJBgOAAcUGAwABHBEAgAkEIdkEPcSICBH8gAgUgAC0AFUEEdgtBBUYEQCAALQAUQQhxDQQLIAEtAABBAnENAyAEIAEgBBshBAsgA0EQahAuIAMoAhQiASADKAIQIgJyDQEMAwsLEAIACyABIQQLIAMoAhgiAQRAA0AgASgCACECIAEQIyACIgENAAsLIARFBEAgACoCmAMhBQwBCyAEEE4gBCoCoAOSIQULIANBIGokACAFC6EDAQh/AkAgACgC6AMiBSAAKALsAyIHRwRAA0AgACAFKAIAIgIoAuQDRwRAAkAgACgC9AMoAgAiAQRAIAIgACAGIAERBgAiAQ0BC0GIBBAeIgEgAigCEDYCECABIAIpAgg3AgggASACKQIANwIAIAFBFGogAkEUakHoABArGiABQgA3AoABIAFB/ABqIgNBADsBACABQgA3AogBIAFCADcCkAEgAyACQfwAahCgASABQZgBaiACQZgBakHQAhArGiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAFNwMIIAgpAwhCBIYgCCkDACIDQjyIhCECIAgpAxAgCCkDGIRCAFKtIANC//////////8Pg4QiA0KBgICAgICAgAhaBEAgAkIBfCECDAELIANCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgCEEgaiQAIAkgAiAGQoCAgICAgICAgH+DhL85AwALmRgDEn8BfAN+IwBBsARrIgwkACAMQQA2AiwCQCABvSIZQgBTBEBBASERQZkJIRMgAZoiAb0hGQwBCyAEQYAQcQRAQQEhEUGcCSETDAELQZ8JQZoJIARBAXEiERshEyARRSEVCwJAIBlCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiARQQNqIgMgBEH//3txECkgACATIBEQJiAAQe0VQdweIAVBIHEiBRtB4RpB4B4gBRsgASABYhtBAxAmIABBICACIAMgBEGAwABzECkgAyACIAIgA0gbIQoMAQsgDEEQaiESAkACfwJAIAEgDEEsahCMASIBIAGgIgFEAAAAAAAAAABiBEAgDCAMKAIsIgZBAWs2AiwgBUEgciIOQeEARw0BDAMLIAVBIHIiDkHhAEYNAiAMKAIsIQlBBiADIANBAEgbDAELIAwgBkEdayIJNgIsIAFEAAAAAAAAsEGiIQFBBiADIANBAEgbCyELIAxBMGpBoAJBACAJQQBOG2oiDSEHA0AgBwJ/IAFEAAAAAAAA8EFjIAFEAAAAAAAAAABmcQRAIAGrDAELQQALIgM2AgAgB0EEaiEHIAEgA7ihRAAAAABlzc1BoiIBRAAAAAAAAAAAYg0ACwJAIAlBAEwEQCAJIQMgByEGIA0hCAwBCyANIQggCSEDA0BBHSADIANBHU4bIQMCQCAHQQRrIgYgCEkNACADrSEaQgAhGQNAIAYgGUL/////D4MgBjUCACAahnwiG0KAlOvcA4AiGUKA7JSjDH4gG3w+AgAgBkEEayIGIAhPDQALIBmnIgZFDQAgCEEEayIIIAY2AgALA0AgCCAHIgZJBEAgBkEEayIHKAIARQ0BCwsgDCAMKAIsIANrIgM2AiwgBiEHIANBAEoNAAsLIANBAEgEQCALQRlqQQluQQFqIQ8gDkHmAEYhEANAQQlBACADayIDIANBCU4bIQoCQCAGIAhNBEAgCCgCACEHDAELQYCU69wDIAp2IRRBfyAKdEF/cyEWQQAhAyAIIQcDQCAHIAMgBygCACIXIAp2ajYCACAWIBdxIBRsIQMgB0EEaiIHIAZJDQALIAgoAgAhByADRQ0AIAYgAzYCACAGQQRqIQYLIAwgDCgCLCAKaiIDNgIsIA0gCCAHRUECdGoiCCAQGyIHIA9BAnRqIAYgBiAHa0ECdSAPShshBiADQQBIDQALC0EAIQMCQCAGIAhNDQAgDSAIa0ECdUEJbCEDQQohByAIKAIAIgpBCkkNAANAIANBAWohAyAKIAdBCmwiB08NAAsLIAsgA0EAIA5B5gBHG2sgDkHnAEYgC0EAR3FrIgcgBiANa0ECdUEJbEEJa0gEQEEEQaQCIAlBAEgbIAxqIAdBgMgAaiIKQQltIg9BAnRqQdAfayEJQQohByAPQXdsIApqIgpBB0wEQANAIAdBCmwhByAKQQFqIgpBCEcNAAsLAkAgCSgCACIQIBAgB24iDyAHbCIKRiAJQQRqIhQgBkZxDQAgECAKayEQAkAgD0EBcUUEQEQAAAAAAABAQyEBIAdBgJTr3ANHIAggCU9yDQEgCUEEay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAURhtEAAAAAAAA+D8gECAHQQF2IhRGGyAQIBRJGyEYAkAgFQ0AIBMtAABBLUcNACAYmiEYIAGaIQELIAkgCjYCACABIBigIAFhDQAgCSAHIApqIgM2AgAgA0GAlOvcA08EQANAIAlBADYCACAIIAlBBGsiCUsEQCAIQQRrIghBADYCAAsgCSAJKAIAQQFqIgM2AgAgA0H/k+vcA0sNAAsLIA0gCGtBAnVBCWwhA0EKIQcgCCgCACIKQQpJDQADQCADQQFqIQMgCiAHQQpsIgdPDQALCyAJQQRqIgcgBiAGIAdLGyEGCwNAIAYiByAITSIKRQRAIAdBBGsiBigCAEUNAQsLAkAgDkHnAEcEQCAEQQhxIQkMAQsgA0F/c0F/IAtBASALGyIGIANKIANBe0pxIgkbIAZqIQtBf0F+IAkbIAVqIQUgBEEIcSIJDQBBdyEGAkAgCg0AIAdBBGsoAgAiDkUNAEEKIQpBACEGIA5BCnANAANAIAYiCUEBaiEGIA4gCkEKbCIKcEUNAAsgCUF/cyEGCyAHIA1rQQJ1QQlsIQogBUFfcUHGAEYEQEEAIQkgCyAGIApqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsMAQtBACEJIAsgAyAKaiAGakEJayIGQQAgBkEAShsiBiAGIAtKGyELC0F/IQogC0H9////B0H+////ByAJIAtyIhAbSg0BIAsgEEEAR2pBAWohDgJAIAVBX3EiFUHGAEYEQCADIA5B/////wdzSg0DIANBACADQQBKGyEGDAELIBIgAyADQR91IgZzIAZrrSASEEciBmtBAUwEQANAIAZBAWsiBkEwOgAAIBIgBmtBAkgNAAsLIAZBAmsiDyAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBIgD2siBiAOQf////8Hc0oNAgsgBiAOaiIDIBFB/////wdzSg0BIABBICACIAMgEWoiBSAEECkgACATIBEQJiAAQTAgAiAFIARBgIAEcxApAkACQAJAIBVBxgBGBEAgDEEQaiIGQQhyIQMgBkEJciEJIA0gCCAIIA1LGyIKIQgDQCAINQIAIAkQRyEGAkAgCCAKRwRAIAYgDEEQak0NAQNAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsMAQsgBiAJRw0AIAxBMDoAGCADIQYLIAAgBiAJIAZrECYgCEEEaiIIIA1NDQALIBAEQCAAQYwlQQEQJgsgC0EATCAHIAhNcg0BA0AgCDUCACAJEEciBiAMQRBqSwRAA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwsgACAGQQkgCyALQQlOGxAmIAtBCWshBiAIQQRqIgggB08NAyALQQlKIQMgBiELIAMNAAsMAgsCQCALQQBIDQAgByAIQQRqIAcgCEsbIQogDEEQaiIGQQhyIQMgBkEJciENIAghBwNAIA0gBzUCACANEEciBkYEQCAMQTA6ABggAyEGCwJAIAcgCEcEQCAGIAxBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAxBEGpLDQALDAELIAAgBkEBECYgBkEBaiEGIAkgC3JFDQAgAEGMJUEBECYLIAAgBiALIA0gBmsiBiAGIAtKGxAmIAsgBmshCyAHQQRqIgcgCk8NASALQQBODQALCyAAQTAgC0ESakESQQAQKSAAIA8gEiAPaxAmDAILIAshBgsgAEEwIAZBCWpBCUEAECkLIABBICACIAUgBEGAwABzECkgBSACIAIgBUgbIQoMAQsgEyAFQRp0QR91QQlxaiELAkAgA0ELSw0AQQwgA2shBkQAAAAAAAAwQCEYA0AgGEQAAAAAAAAwQKIhGCAGQQFrIgYNAAsgCy0AAEEtRgRAIBggAZogGKGgmiEBDAELIAEgGKAgGKEhAQsgEUECciEJIAVBIHEhCCASIAwoAiwiByAHQR91IgZzIAZrrSASEEciBkYEQCAMQTA6AA8gDEEPaiEGCyAGQQJrIg0gBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQYgDEEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdBkC9qLQAAIAhyOgAAIAYgA0EASnJFIAEgB7ehRAAAAAAAADBAoiIBRAAAAAAAAAAAYXEgBUEBaiIHIAxBEGprQQFHckUEQCAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0AC0F/IQpB/f///wcgCSASIA1rIgVqIgZrIANIDQAgAEEgIAIgBgJ/AkAgA0UNACAHIAxBEGprIghBAmsgA04NACADQQJqDAELIAcgDEEQamsiCAsiB2oiAyAEECkgACALIAkQJiAAQTAgAiADIARBgIAEcxApIAAgDEEQaiAIECYgAEEwIAcgCGtBAEEAECkgACANIAUQJiAAQSAgAiADIARBgMAAcxApIAMgAiACIANIGyEKCyAMQbAEaiQAIAoLRgEBfyAAKAI8IQMjAEEQayIAJAAgAyABpyABQiCIpyACQf8BcSAAQQhqEBQQjQEhAiAAKQMIIQEgAEEQaiQAQn8gASACGwu+AgEHfyMAQSBrIgMkACADIAAoAhwiBDYCECAAKAIUIQUgAyACNgIcIAMgATYCGCADIAUgBGsiATYCFCABIAJqIQVBAiEGIANBEGohAQJ/A0ACQAJAAkAgACgCPCABIAYgA0EMahAYEI0BRQRAIAUgAygCDCIHRg0BIAdBAE4NAgwDCyAFQX9HDQILIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwDCyABIAcgASgCBCIISyIJQQN0aiIEIAcgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAHayEFIAYgCWshBiAEIQEMAQsLIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgBkECRg0AGiACIAEoAgRrCyEEIANBIGokACAECwkAIAAoAjwQGQsjAQF/Qcg7KAIAIgAEQANAIAAoAgARCQAgACgCBCIADQALCwu/AgEFfyMAQeAAayICJAAgAiAANgIAIwBBEGsiAyQAIAMgAjYCDCMAQZABayIAJAAgAEGgL0GQARArIgAgAkEQaiIFIgE2AiwgACABNgIUIABB/////wdBfiABayIEIARB/////wdPGyIENgIwIAAgASAEaiIBNgIcIAAgATYCECAAQbsTIAJBAEEAEIsBGiAEBEAgACgCFCIBIAEgACgCEEZrQQA6AAALIABBkAFqJAAgA0EQaiQAAkAgBSIAQQNxBEADQCAALQAARQ0CIABBAWoiAEEDcQ0ACwsDQCAAIgFBBGohACABKAIAIgNBf3MgA0GBgoQIa3FBgIGChHhxRQ0ACwNAIAEiAEEBaiEBIAAtAAANAAsLIAAgBWtBAWoiABBhIgEEfyABIAUgABArBUEACyEAIAJB4ABqJAAgAAvFAQICfwF8IwBBMGsiBiQAIAEoAgghBwJAQbQ7LQAAQQFxBEBBsDsoAgAhAQwBC0EFQZAnEAwhAUG0O0EBOgAAQbA7IAE2AgALIAYgBTYCKCAGIAQ4AiAgBiADNgIYIAYgAjgCEAJ/IAEgB0GXGyAGQQxqIAZBEGoQEiIIRAAAAAAAAPBBYyAIRAAAAAAAAAAAZnEEQCAIqwwBC0EACyEBIAYoAgwhAyAAIAEpAwA3AwAgACABKQMINwMIIAMQESAGQTBqJAALCQAgABCQARAjCwwAIAAoAghB6BwQZgsJACAAEJIBECMLVQECfyMAQTBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEwEB4gAkEwECshACACQTBqJAAgAAs7AQF/IAEgACgCBCIFQQF1aiEBIAAoAgAhACABIAIgAyAEIAVBAXEEfyABKAIAIABqKAIABSAACxEdAAs3AQF/IAEgACgCBCIDQQF1aiEBIAAoAgAhACABIAIgA0EBcQR/IAEoAgAgAGooAgAFIAALERIACzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRDAALNQEBfyABIAAoAgQiAkEBdWohASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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";if(!oA(PI)){var eA=PI;PI=B.locateFile?B.locateFile(eA,U):U+eA}function JQ(){var j=PI;try{if(j==PI&&q)return new Uint8Array(q);if(oA(j))try{var P=fu(j.slice(37)),p=new Uint8Array(P.length);for(j=0;j<P.length;++j)p[j]=P.charCodeAt(j);var o=p}catch(LA){throw Error("Converting base64 string to bytes failed.")}else o=void 0;var CA=o;if(CA)return CA;throw"both async and sync fetching of the wasm failed"}catch(LA){xA(LA)}}function YA(){return q||typeof fetch!="function"?Promise.resolve().then(function(){return JQ()}):fetch(PI,{credentials:"same-origin"}).then(function(j){if(!j.ok)throw"failed to load wasm binary file at '"+PI+"'";return j.arrayBuffer()}).catch(function(){return JQ()})}function e(j){for(;0<j.length;)j.shift()(B)}function AA(j){if(j===void 0)return"_unknown";j=j.replace(/[^a-zA-Z0-9_]/g,"$");var P=j.charCodeAt(0);return 48<=P&&57>=P?"_"+j:j}function RI(j,P){return j=AA(j),function(){return P.apply(this,arguments)}}var lA=[{},{value:void 0},{value:null},{value:!0},{value:!1}],aI=[];function tI(j){var P=Error,p=RI(j,function(o){this.name=j,this.message=o,o=Error(o).stack,o!==void 0&&(this.stack=this.toString()+`
267
267
  `+o.replace(/^Error(:[^\n]*)?\n/,""))});return p.prototype=Object.create(P.prototype),p.prototype.constructor=p,p.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},p}var EQ=void 0;function HI(j){throw new EQ(j)}var UB=(j)=>{return j||HI("Cannot use deleted val. handle = "+j),lA[j].value},oI=(j)=>{switch(j){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var P=aI.length?aI.pop():lA.length;return lA[P]={ga:1,value:j},P}},kI=void 0,rB=void 0;function vI(j){for(var P="";c[j];)P+=rB[c[j++]];return P}var d=[];function qA(){for(;d.length;){var j=d.pop();j.M.$=!1,j.delete()}}var aA=void 0,DI={};function xI(j,P){for(P===void 0&&HI("ptr should not be undefined");j.R;)P=j.ba(P),j=j.R;return P}var bI={};function dI(j){j=P0(j);var P=vI(j);return qD(j),P}function AE(j,P){var p=bI[j];return p===void 0&&HI(P+" has unknown type "+dI(j)),p}function jB(){}var XC=!1;function TD(j){--j.count.value,j.count.value===0&&(j.T?j.U.W(j.T):j.P.N.W(j.O))}function PC(j,P,p){if(P===p)return j;if(p.R===void 0)return null;return j=PC(j,P,p.R),j===null?null:p.na(j)}var kD={};function zg(j,P){return P=xI(j,P),DI[P]}var rE=void 0;function MD(j){throw new rE(j)}function EI(j,P){return P.P&&P.O||MD("makeClassHandle requires ptr and ptrType"),!!P.U!==!!P.T&&MD("Both smartPtrType and smartPtr must be specified"),P.count={value:1},sA(Object.create(j,{M:{value:P}}))}function sA(j){if(typeof FinalizationRegistry>"u")return sA=(P)=>P,j;return XC=new FinalizationRegistry((P)=>{TD(P.M)}),sA=(P)=>{var p=P.M;return p.T&&XC.register(P,{M:p},P),P},jB=(P)=>{XC.unregister(P)},sA(j)}var BB={};function aB(j){for(;j.length;){var P=j.pop();j.pop()(P)}}function wI(j){return this.fromWireType(wA[j>>2])}var gI={},MQ={};function SB(j,P,p){function o(vA){vA=p(vA),vA.length!==j.length&&MD("Mismatched type converter count");for(var rA=0;rA<j.length;++rA)CQ(j[rA],vA[rA])}j.forEach(function(vA){MQ[vA]=P});var CA=Array(P.length),LA=[],_A=0;P.forEach((vA,rA)=>{bI.hasOwnProperty(vA)?CA[rA]=bI[vA]:(LA.push(vA),gI.hasOwnProperty(vA)||(gI[vA]=[]),gI[vA].push(()=>{CA[rA]=bI[vA],++_A,_A===LA.length&&o(CA)}))}),LA.length===0&&o(CA)}function fI(j){switch(j){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw TypeError("Unknown type size: "+j)}}function CQ(j,P,p={}){if(!("argPackAdvance"in P))throw TypeError("registerType registeredInstance requires argPackAdvance");var o=P.name;if(j||HI('type "'+o+'" must have a positive integer typeid pointer'),bI.hasOwnProperty(j)){if(p.ua)return;HI("Cannot register type '"+o+"' twice")}bI[j]=P,delete MQ[j],gI.hasOwnProperty(j)&&(P=gI[j],delete gI[j],P.forEach((CA)=>CA()))}function SC(j){HI(j.M.P.N.name+" instance already deleted")}function jE(){}function zB(j,P,p){if(j[P].S===void 0){var o=j[P];j[P]=function(){return j[P].S.hasOwnProperty(arguments.length)||HI("Function '"+p+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+j[P].S+")!"),j[P].S[arguments.length].apply(this,arguments)},j[P].S=[],j[P].S[o.Z]=o}}function pC(j,P){B.hasOwnProperty(j)?(HI("Cannot register public name '"+j+"' twice"),zB(B,j,j),B.hasOwnProperty(void 0)&&HI("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"),B[j].S[void 0]=P):B[j]=P}function sC(j,P,p,o,CA,LA,_A,vA){this.name=j,this.constructor=P,this.X=p,this.W=o,this.R=CA,this.pa=LA,this.ba=_A,this.na=vA,this.ja=[]}function rC(j,P,p){for(;P!==p;)P.ba||HI("Expected null or instance of "+p.name+", got an instance of "+P.name),j=P.ba(j),P=P.R;return j}function FC(j,P){if(P===null)return this.ea&&HI("null is not a valid "+this.name),0;return P.M||HI('Cannot pass "'+mB(P)+'" as a '+this.name),P.M.O||HI("Cannot pass deleted object as a pointer of type "+this.name),rC(P.M.O,P.M.P.N,this.N)}function vE(j,P){if(P===null){if(this.ea&&HI("null is not a valid "+this.name),this.da){var p=this.fa();return j!==null&&j.push(this.W,p),p}return 0}if(P.M||HI('Cannot pass "'+mB(P)+'" as a '+this.name),P.M.O||HI("Cannot pass deleted object as a pointer of type "+this.name),!this.ca&&P.M.P.ca&&HI("Cannot convert argument of type "+(P.M.U?P.M.U.name:P.M.P.name)+" to parameter type "+this.name),p=rC(P.M.O,P.M.P.N,this.N),this.da)switch(P.M.T===void 0&&HI("Passing raw pointer to smart pointer is illegal"),this.Ba){case 0:P.M.U===this?p=P.M.T:HI("Cannot convert argument of type "+(P.M.U?P.M.U.name:P.M.P.name)+" to parameter type "+this.name);break;case 1:p=P.M.T;break;case 2:if(P.M.U===this)p=P.M.T;else{var o=P.clone();p=this.xa(p,oI(function(){o.delete()})),j!==null&&j.push(this.W,p)}break;default:HI("Unsupporting sharing policy")}return p}function aC(j,P){if(P===null)return this.ea&&HI("null is not a valid "+this.name),0;return P.M||HI('Cannot pass "'+mB(P)+'" as a '+this.name),P.M.O||HI("Cannot pass deleted object as a pointer of type "+this.name),P.M.P.ca&&HI("Cannot convert argument of type "+P.M.P.name+" to parameter type "+this.name),rC(P.M.O,P.M.P.N,this.N)}function aE(j,P,p,o){this.name=j,this.N=P,this.ea=p,this.ca=o,this.da=!1,this.W=this.xa=this.fa=this.ka=this.Ba=this.wa=void 0,P.R!==void 0?this.toWireType=vE:(this.toWireType=o?FC:aC,this.V=null)}function MF(j,P){B.hasOwnProperty(j)||MD("Replacing nonexistant public symbol"),B[j]=P,B[j].Z=void 0}function KG(j,P){var p=[];return function(){if(p.length=0,Object.assign(p,arguments),j.includes("j")){var o=B["dynCall_"+j];o=p&&p.length?o.apply(null,[P].concat(p)):o.call(null,P)}else o=GI.get(P).apply(null,p);return o}}function PE(j,P){j=vI(j);var p=j.includes("j")?KG(j,P):GI.get(P);return typeof p!="function"&&HI("unknown function pointer with signature "+j+": "+P),p}var m=void 0;function TA(j,P){function p(LA){CA[LA]||bI[LA]||(MQ[LA]?MQ[LA].forEach(p):(o.push(LA),CA[LA]=!0))}var o=[],CA={};throw P.forEach(p),new m(j+": "+o.map(dI).join([", "]))}function CI(j,P,p,o,CA){var LA=P.length;2>LA&&HI("argTypes array size mismatch! Must at least get return value and 'this' types!");var _A=P[1]!==null&&p!==null,vA=!1;for(p=1;p<P.length;++p)if(P[p]!==null&&P[p].V===void 0){vA=!0;break}var rA=P[0].name!=="void",iA=LA-2,FI=Array(iA),qI=[],$B=[];return function(){if(arguments.length!==iA&&HI("function "+j+" called with "+arguments.length+" arguments, expected "+iA+" args!"),$B.length=0,qI.length=_A?2:1,qI[0]=CA,_A){var PB=P[1].toWireType($B,this);qI[1]=PB}for(var AQ=0;AQ<iA;++AQ)FI[AQ]=P[AQ+2].toWireType($B,arguments[AQ]),qI.push(FI[AQ]);if(AQ=o.apply(null,qI),vA)aB($B);else for(var JE=_A?1:2;JE<P.length;JE++){var zC=JE===1?PB:FI[JE-2];P[JE].V!==null&&P[JE].V(zC)}return PB=rA?P[0].fromWireType(AQ):void 0,PB}}function mI(j,P){for(var p=[],o=0;o<j;o++)p.push(GA[P+4*o>>2]);return p}function hI(j){4<j&&--lA[j].ga===0&&(lA[j]=void 0,aI.push(j))}function mB(j){if(j===null)return"null";var P=typeof j;return P==="object"||P==="array"||P==="function"?j.toString():""+j}function FB(j,P){switch(P){case 2:return function(p){return this.fromWireType(EA[p>>2])};case 3:return function(p){return this.fromWireType(VA[p>>3])};default:throw TypeError("Unknown float type: "+j)}}function KB(j,P,p){switch(P){case 0:return p?function(o){return x[o]}:function(o){return c[o]};case 1:return p?function(o){return BA[o>>1]}:function(o){return SA[o>>1]};case 2:return p?function(o){return wA[o>>2]}:function(o){return GA[o>>2]};default:throw TypeError("Unknown integer type: "+j)}}function GE(j,P){for(var p="",o=0;!(o>=P/2);++o){var CA=BA[j+2*o>>1];if(CA==0)break;p+=String.fromCharCode(CA)}return p}function NQ(j,P,p){if(p===void 0&&(p=2147483647),2>p)return 0;p-=2;var o=P;p=p<2*j.length?p/2:j.length;for(var CA=0;CA<p;++CA)BA[P>>1]=j.charCodeAt(CA),P+=2;return BA[P>>1]=0,P-o}function $Q(j){return 2*j.length}function uE(j,P){for(var p=0,o="";!(p>=P/4);){var CA=wA[j+4*p>>2];if(CA==0)break;++p,65536<=CA?(CA-=65536,o+=String.fromCharCode(55296|CA>>10,56320|CA&1023)):o+=String.fromCharCode(CA)}return o}function hE(j,P,p){if(p===void 0&&(p=2147483647),4>p)return 0;var o=P;p=o+p-4;for(var CA=0;CA<j.length;++CA){var LA=j.charCodeAt(CA);if(55296<=LA&&57343>=LA){var _A=j.charCodeAt(++CA);LA=65536+((LA&1023)<<10)|_A&1023}if(wA[P>>2]=LA,P+=4,P+4>p)break}return wA[P>>2]=0,P-o}function ND(j){for(var P=0,p=0;p<j.length;++p){var o=j.charCodeAt(p);55296<=o&&57343>=o&&++p,P+=4}return P}var wE={};function I0(j){var P=wE[j];return P===void 0?vI(j):P}var B0=[];function NF(j){var P=B0.length;return B0.push(j),P}function Pu(j,P){for(var p=Array(j),o=0;o<j;++o)p[o]=AE(GA[P+4*o>>2],"parameter "+o);return p}var qF=[],Q0=[null,[],[]];EQ=B.BindingError=tI("BindingError"),B.count_emval_handles=function(){for(var j=0,P=5;P<lA.length;++P)lA[P]!==void 0&&++j;return j},B.get_first_emval=function(){for(var j=5;j<lA.length;++j)if(lA[j]!==void 0)return lA[j];return null},kI=B.PureVirtualError=tI("PureVirtualError");for(var MG=Array(256),E0=0;256>E0;++E0)MG[E0]=String.fromCharCode(E0);rB=MG,B.getInheritedInstanceCount=function(){return Object.keys(DI).length},B.getLiveInheritedInstances=function(){var j=[],P;for(P in DI)DI.hasOwnProperty(P)&&j.push(DI[P]);return j},B.flushPendingDeletes=qA,B.setDelayFunction=function(j){aA=j,d.length&&aA&&aA(qA)},rE=B.InternalError=tI("InternalError"),jE.prototype.isAliasOf=function(j){if(!(this instanceof jE&&j instanceof jE))return!1;var P=this.M.P.N,p=this.M.O,o=j.M.P.N;for(j=j.M.O;P.R;)p=P.ba(p),P=P.R;for(;o.R;)j=o.ba(j),o=o.R;return P===o&&p===j},jE.prototype.clone=function(){if(this.M.O||SC(this),this.M.aa)return this.M.count.value+=1,this;var j=sA,P=Object,p=P.create,o=Object.getPrototypeOf(this),CA=this.M;return j=j(p.call(P,o,{M:{value:{count:CA.count,$:CA.$,aa:CA.aa,O:CA.O,P:CA.P,T:CA.T,U:CA.U}}})),j.M.count.value+=1,j.M.$=!1,j},jE.prototype.delete=function(){this.M.O||SC(this),this.M.$&&!this.M.aa&&HI("Object already scheduled for deletion"),jB(this),TD(this.M),this.M.aa||(this.M.T=void 0,this.M.O=void 0)},jE.prototype.isDeleted=function(){return!this.M.O},jE.prototype.deleteLater=function(){return this.M.O||SC(this),this.M.$&&!this.M.aa&&HI("Object already scheduled for deletion"),d.push(this),d.length===1&&aA&&aA(qA),this.M.$=!0,this},aE.prototype.qa=function(j){return this.ka&&(j=this.ka(j)),j},aE.prototype.ha=function(j){this.W&&this.W(j)},aE.prototype.argPackAdvance=8,aE.prototype.readValueFromPointer=wI,aE.prototype.deleteObject=function(j){if(j!==null)j.delete()},aE.prototype.fromWireType=function(j){function P(){return this.da?EI(this.N.X,{P:this.wa,O:p,U:this,T:j}):EI(this.N.X,{P:this,O:j})}var p=this.qa(j);if(!p)return this.ha(j),null;var o=zg(this.N,p);if(o!==void 0){if(o.M.count.value===0)return o.M.O=p,o.M.T=j,o.clone();return o=o.clone(),this.ha(j),o}if(o=this.N.pa(p),o=kD[o],!o)return P.call(this);o=this.ca?o.la:o.pointerType;var CA=PC(p,this.N,o.N);return CA===null?P.call(this):this.da?EI(o.N.X,{P:o,O:CA,U:this,T:j}):EI(o.N.X,{P:o,O:CA})},m=B.UnboundTypeError=tI("UnboundTypeError");var fu=typeof atob=="function"?atob:function(j){var P="",p=0;j=j.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(j.charAt(p++)),CA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(j.charAt(p++)),LA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(j.charAt(p++)),_A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(j.charAt(p++));o=o<<2|CA>>4,CA=(CA&15)<<4|LA>>2;var vA=(LA&3)<<6|_A;P+=String.fromCharCode(o),LA!==64&&(P+=String.fromCharCode(CA)),_A!==64&&(P+=String.fromCharCode(vA))}while(p<j.length);return P},GC={l:function(j,P,p,o){xA("Assertion failed: "+(j?V(c,j):"")+", at: "+[P?P?V(c,P):"":"unknown filename",p,o?o?V(c,o):"":"unknown function"])},q:function(j,P,p){j=vI(j),P=AE(P,"wrapper"),p=UB(p);var o=[].slice,CA=P.N,LA=CA.X,_A=CA.R.X,vA=CA.R.constructor;j=RI(j,function(){CA.R.ja.forEach(function(iA){if(this[iA]===_A[iA])throw new kI("Pure virtual function "+iA+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:LA}),this.__construct.apply(this,o.call(arguments))}),LA.__construct=function(){this===LA&&HI("Pass correct 'this' to __construct");var iA=vA.implement.apply(void 0,[this].concat(o.call(arguments)));jB(iA);var FI=iA.M;iA.notifyOnDestruction(),FI.aa=!0,Object.defineProperties(this,{M:{value:FI}}),sA(this),iA=FI.O,iA=xI(CA,iA),DI.hasOwnProperty(iA)?HI("Tried to register registered instance: "+iA):DI[iA]=this},LA.__destruct=function(){this===LA&&HI("Pass correct 'this' to __destruct"),jB(this);var iA=this.M.O;iA=xI(CA,iA),DI.hasOwnProperty(iA)?delete DI[iA]:HI("Tried to unregister unregistered instance: "+iA)},j.prototype=Object.create(LA);for(var rA in p)j.prototype[rA]=p[rA];return oI(j)},j:function(j){var P=BB[j];delete BB[j];var{fa:p,W:o,ia:CA}=P,LA=CA.map((_A)=>_A.ta).concat(CA.map((_A)=>_A.za));SB([j],LA,(_A)=>{var vA={};return CA.forEach((rA,iA)=>{var FI=_A[iA],qI=rA.ra,$B=rA.sa,PB=_A[iA+CA.length],AQ=rA.ya,JE=rA.Aa;vA[rA.oa]={read:(zC)=>FI.fromWireType(qI($B,zC)),write:(zC,C0)=>{var Qg=[];AQ(JE,zC,PB.toWireType(Qg,C0)),aB(Qg)}}}),[{name:P.name,fromWireType:function(rA){var iA={},FI;for(FI in vA)iA[FI]=vA[FI].read(rA);return o(rA),iA},toWireType:function(rA,iA){for(var FI in vA)if(!(FI in iA))throw TypeError('Missing field: "'+FI+'"');var qI=p();for(FI in vA)vA[FI].write(qI,iA[FI]);return rA!==null&&rA.push(o,qI),qI},argPackAdvance:8,readValueFromPointer:wI,V:o}]})},v:function(){},B:function(j,P,p,o,CA){var LA=fI(p);P=vI(P),CQ(j,{name:P,fromWireType:function(_A){return!!_A},toWireType:function(_A,vA){return vA?o:CA},argPackAdvance:8,readValueFromPointer:function(_A){if(p===1)var vA=x;else if(p===2)vA=BA;else if(p===4)vA=wA;else throw TypeError("Unknown boolean type size: "+P);return this.fromWireType(vA[_A>>LA])},V:null})},f:function(j,P,p,o,CA,LA,_A,vA,rA,iA,FI,qI,$B){FI=vI(FI),LA=PE(CA,LA),vA&&(vA=PE(_A,vA)),iA&&(iA=PE(rA,iA)),$B=PE(qI,$B);var PB=AA(FI);pC(PB,function(){TA("Cannot construct "+FI+" due to unbound types",[o])}),SB([j,P,p],o?[o]:[],function(AQ){if(AQ=AQ[0],o)var JE=AQ.N,zC=JE.X;else zC=jE.prototype;AQ=RI(PB,function(){if(Object.getPrototypeOf(this)!==C0)throw new EQ("Use 'new' to construct "+FI);if(Qg.Y===void 0)throw new EQ(FI+" has no accessible constructor");var LF=Qg.Y[arguments.length];if(LF===void 0)throw new EQ("Tried to invoke ctor of "+FI+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Qg.Y).toString()+") parameters instead!");return LF.apply(this,arguments)});var C0=Object.create(zC,{constructor:{value:AQ}});AQ.prototype=C0;var Qg=new sC(FI,AQ,C0,$B,JE,LA,vA,iA);JE=new aE(FI,Qg,!0,!1),zC=new aE(FI+"*",Qg,!1,!1);var u8=new aE(FI+" const*",Qg,!1,!0);return kD[j]={pointerType:zC,la:u8},MF(PB,AQ),[JE,zC,u8]})},d:function(j,P,p,o,CA,LA,_A){var vA=mI(p,o);P=vI(P),LA=PE(CA,LA),SB([],[j],function(rA){function iA(){TA("Cannot call "+FI+" due to unbound types",vA)}rA=rA[0];var FI=rA.name+"."+P;P.startsWith("@@")&&(P=Symbol[P.substring(2)]);var qI=rA.N.constructor;return qI[P]===void 0?(iA.Z=p-1,qI[P]=iA):(zB(qI,P,FI),qI[P].S[p-1]=iA),SB([],vA,function($B){return $B=CI(FI,[$B[0],null].concat($B.slice(1)),null,LA,_A),qI[P].S===void 0?($B.Z=p-1,qI[P]=$B):qI[P].S[p-1]=$B,[]}),[]})},p:function(j,P,p,o,CA,LA){0<P||xA();var _A=mI(P,p);CA=PE(o,CA),SB([],[j],function(vA){vA=vA[0];var rA="constructor "+vA.name;if(vA.N.Y===void 0&&(vA.N.Y=[]),vA.N.Y[P-1]!==void 0)throw new EQ("Cannot register multiple constructors with identical number of parameters ("+(P-1)+") for class '"+vA.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return vA.N.Y[P-1]=()=>{TA("Cannot construct "+vA.name+" due to unbound types",_A)},SB([],_A,function(iA){return iA.splice(1,0,null),vA.N.Y[P-1]=CI(rA,iA,null,CA,LA),[]}),[]})},a:function(j,P,p,o,CA,LA,_A,vA){var rA=mI(p,o);P=vI(P),LA=PE(CA,LA),SB([],[j],function(iA){function FI(){TA("Cannot call "+qI+" due to unbound types",rA)}iA=iA[0];var qI=iA.name+"."+P;P.startsWith("@@")&&(P=Symbol[P.substring(2)]),vA&&iA.N.ja.push(P);var $B=iA.N.X,PB=$B[P];return PB===void 0||PB.S===void 0&&PB.className!==iA.name&&PB.Z===p-2?(FI.Z=p-2,FI.className=iA.name,$B[P]=FI):(zB($B,P,qI),$B[P].S[p-2]=FI),SB([],rA,function(AQ){return AQ=CI(qI,AQ,iA,LA,_A),$B[P].S===void 0?(AQ.Z=p-2,$B[P]=AQ):$B[P].S[p-2]=AQ,[]}),[]})},A:function(j,P){P=vI(P),CQ(j,{name:P,fromWireType:function(p){var o=UB(p);return hI(p),o},toWireType:function(p,o){return oI(o)},argPackAdvance:8,readValueFromPointer:wI,V:null})},n:function(j,P,p){p=fI(p),P=vI(P),CQ(j,{name:P,fromWireType:function(o){return o},toWireType:function(o,CA){return CA},argPackAdvance:8,readValueFromPointer:FB(P,p),V:null})},e:function(j,P,p,o,CA){P=vI(P),CA===-1&&(CA=4294967295),CA=fI(p);var LA=(vA)=>vA;if(o===0){var _A=32-8*p;LA=(vA)=>vA<<_A>>>_A}p=P.includes("unsigned")?function(vA,rA){return rA>>>0}:function(vA,rA){return rA},CQ(j,{name:P,fromWireType:LA,toWireType:p,argPackAdvance:8,readValueFromPointer:KB(P,CA,o!==0),V:null})},b:function(j,P,p){function o(LA){LA>>=2;var _A=GA;return new CA(_,_A[LA+1],_A[LA])}var CA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][P];p=vI(p),CQ(j,{name:p,fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ua:!0})},o:function(j,P){P=vI(P);var p=P==="std::string";CQ(j,{name:P,fromWireType:function(o){var CA=GA[o>>2],LA=o+4;if(p)for(var _A=LA,vA=0;vA<=CA;++vA){var rA=LA+vA;if(vA==CA||c[rA]==0){if(_A=_A?V(c,_A,rA-_A):"",iA===void 0)var iA=_A;else iA+=String.fromCharCode(0),iA+=_A;_A=rA+1}}else{iA=Array(CA);for(vA=0;vA<CA;++vA)iA[vA]=String.fromCharCode(c[LA+vA]);iA=iA.join("")}return qD(o),iA},toWireType:function(o,CA){CA instanceof ArrayBuffer&&(CA=new Uint8Array(CA));var LA,_A=typeof CA=="string";if(_A||CA instanceof Uint8Array||CA instanceof Uint8ClampedArray||CA instanceof Int8Array||HI("Cannot pass non-string to std::string"),p&&_A){var vA=0;for(LA=0;LA<CA.length;++LA){var rA=CA.charCodeAt(LA);127>=rA?vA++:2047>=rA?vA+=2:55296<=rA&&57343>=rA?(vA+=4,++LA):vA+=3}LA=vA}else LA=CA.length;if(vA=f0(4+LA+1),rA=vA+4,GA[vA>>2]=LA,p&&_A){if(_A=rA,rA=LA+1,LA=c,0<rA){rA=_A+rA-1;for(var iA=0;iA<CA.length;++iA){var FI=CA.charCodeAt(iA);if(55296<=FI&&57343>=FI){var qI=CA.charCodeAt(++iA);FI=65536+((FI&1023)<<10)|qI&1023}if(127>=FI){if(_A>=rA)break;LA[_A++]=FI}else{if(2047>=FI){if(_A+1>=rA)break;LA[_A++]=192|FI>>6}else{if(65535>=FI){if(_A+2>=rA)break;LA[_A++]=224|FI>>12}else{if(_A+3>=rA)break;LA[_A++]=240|FI>>18,LA[_A++]=128|FI>>12&63}LA[_A++]=128|FI>>6&63}LA[_A++]=128|FI&63}}LA[_A]=0}}else if(_A)for(_A=0;_A<LA;++_A)iA=CA.charCodeAt(_A),255<iA&&(qD(rA),HI("String has UTF-16 code units that do not fit in 8 bits")),c[rA+_A]=iA;else for(_A=0;_A<LA;++_A)c[rA+_A]=CA[_A];return o!==null&&o.push(qD,vA),vA},argPackAdvance:8,readValueFromPointer:wI,V:function(o){qD(o)}})},i:function(j,P,p){if(p=vI(p),P===2)var o=GE,CA=NQ,LA=$Q,_A=()=>SA,vA=1;else P===4&&(o=uE,CA=hE,LA=ND,_A=()=>GA,vA=2);CQ(j,{name:p,fromWireType:function(rA){for(var iA=GA[rA>>2],FI=_A(),qI,$B=rA+4,PB=0;PB<=iA;++PB){var AQ=rA+4+PB*P;if(PB==iA||FI[AQ>>vA]==0)$B=o($B,AQ-$B),qI===void 0?qI=$B:(qI+=String.fromCharCode(0),qI+=$B),$B=AQ+P}return qD(rA),qI},toWireType:function(rA,iA){typeof iA!="string"&&HI("Cannot pass non-string to C++ string type "+p);var FI=LA(iA),qI=f0(4+FI+P);return GA[qI>>2]=FI>>vA,CA(iA,qI+4,FI+P),rA!==null&&rA.push(qD,qI),qI},argPackAdvance:8,readValueFromPointer:wI,V:function(rA){qD(rA)}})},k:function(j,P,p,o,CA,LA){BB[j]={name:vI(P),fa:PE(p,o),W:PE(CA,LA),ia:[]}},h:function(j,P,p,o,CA,LA,_A,vA,rA,iA){BB[j].ia.push({oa:vI(P),ta:p,ra:PE(o,CA),sa:LA,za:_A,ya:PE(vA,rA),Aa:iA})},C:function(j,P){P=vI(P),CQ(j,{va:!0,name:P,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},s:function(j,P,p,o,CA){j=B0[j],P=UB(P),p=I0(p);var LA=[];return GA[o>>2]=oI(LA),j(P,p,LA,CA)},t:function(j,P,p,o){j=B0[j],P=UB(P),p=I0(p),j(P,p,null,o)},g:hI,m:function(j,P){var p=Pu(j,P),o=p[0];P=o.name+"_$"+p.slice(1).map(function(_A){return _A.name}).join("_")+"$";var CA=qF[P];if(CA!==void 0)return CA;var LA=Array(j-1);return CA=NF((_A,vA,rA,iA)=>{for(var FI=0,qI=0;qI<j-1;++qI)LA[qI]=p[qI+1].readValueFromPointer(iA+FI),FI+=p[qI+1].argPackAdvance;_A=_A[vA].apply(_A,LA);for(qI=0;qI<j-1;++qI)p[qI+1].ma&&p[qI+1].ma(LA[qI]);if(!o.va)return o.toWireType(rA,_A)}),qF[P]=CA},D:function(j){4<j&&(lA[j].ga+=1)},r:function(j){var P=UB(j);aB(P),hI(j)},c:function(){xA("")},x:function(j,P,p){c.copyWithin(j,P,P+p)},w:function(j){var P=c.length;if(j>>>=0,2147483648<j)return!1;for(var p=1;4>=p;p*=2){var o=P*(1+0.2/p);o=Math.min(o,j+100663296);var CA=Math;o=Math.max(j,o),CA=CA.min.call(CA,2147483648,o+(65536-o%65536)%65536);A:{try{y.grow(CA-_.byteLength+65535>>>16),ZA();var LA=1;break A}catch(_A){}LA=void 0}if(LA)return!0}return!1},z:function(){return 52},u:function(){return 70},y:function(j,P,p,o){for(var CA=0,LA=0;LA<p;LA++){var _A=GA[P>>2],vA=GA[P+4>>2];P+=8;for(var rA=0;rA<vA;rA++){var iA=c[_A+rA],FI=Q0[j];iA===0||iA===10?((j===1?H:N)(V(FI,0)),FI.length=0):FI.push(iA)}CA+=vA}return GA[o>>2]=CA,0}};(function(){function j(CA){B.asm=CA.exports,y=B.asm.E,ZA(),GI=B.asm.J,OI.unshift(B.asm.F),BI--,B.monitorRunDependencies&&B.monitorRunDependencies(BI),BI==0&&(XA!==null&&(clearInterval(XA),XA=null),QA&&(CA=QA,QA=null,CA()))}function P(CA){j(CA.instance)}function p(CA){return YA().then(function(LA){return WebAssembly.instantiate(LA,o)}).then(function(LA){return LA}).then(CA,function(LA){N("failed to asynchronously prepare wasm: "+LA),xA(LA)})}var o={a:GC};if(BI++,B.monitorRunDependencies&&B.monitorRunDependencies(BI),B.instantiateWasm)try{return B.instantiateWasm(o,j)}catch(CA){N("Module.instantiateWasm callback failed with error: "+CA),D(CA)}return function(){return q||typeof WebAssembly.instantiateStreaming!="function"||oA(PI)||typeof fetch!="function"?p(P):fetch(PI,{credentials:"same-origin"}).then(function(CA){return WebAssembly.instantiateStreaming(CA,o).then(P,function(LA){return N("wasm streaming compile failed: "+LA),N("falling back to ArrayBuffer instantiation"),p(P)})})}().catch(D),{}})(),B.___wasm_call_ctors=function(){return(B.___wasm_call_ctors=B.asm.F).apply(null,arguments)};var P0=B.___getTypeName=function(){return(P0=B.___getTypeName=B.asm.G).apply(null,arguments)};B.__embind_initialize_bindings=function(){return(B.__embind_initialize_bindings=B.asm.H).apply(null,arguments)};var f0=B._malloc=function(){return(f0=B._malloc=B.asm.I).apply(null,arguments)},qD=B._free=function(){return(qD=B._free=B.asm.K).apply(null,arguments)};B.dynCall_jiji=function(){return(B.dynCall_jiji=B.asm.L).apply(null,arguments)};var T0;QA=function j(){T0||Tu(),T0||(QA=j)};function Tu(){function j(){if(!T0&&(T0=!0,B.calledRun=!0,!X)){if(e(OI),C(B),B.onRuntimeInitialized)B.onRuntimeInitialized();if(B.postRun)for(typeof B.postRun=="function"&&(B.postRun=[B.postRun]);B.postRun.length;){var P=B.postRun.shift();zQ.unshift(P)}e(zQ)}}if(!(0<BI)){if(B.preRun)for(typeof B.preRun=="function"&&(B.preRun=[B.preRun]);B.preRun.length;)IB();e(KA),0<BI||(B.setStatus?(B.setStatus("Running..."),setTimeout(function(){setTimeout(function(){B.setStatus("")},1),j()},1)):j())}}if(B.preInit)for(typeof B.preInit=="function"&&(B.preInit=[B.preInit]);0<B.preInit.length;)B.preInit.pop()();return Tu(),I.ready}})(),LO=Gr;var GG=function(A){return A[A.Auto=0]="Auto",A[A.FlexStart=1]="FlexStart",A[A.Center=2]="Center",A[A.FlexEnd=3]="FlexEnd",A[A.Stretch=4]="Stretch",A[A.Baseline=5]="Baseline",A[A.SpaceBetween=6]="SpaceBetween",A[A.SpaceAround=7]="SpaceAround",A[A.SpaceEvenly=8]="SpaceEvenly",A}({}),YO=function(A){return A[A.BorderBox=0]="BorderBox",A[A.ContentBox=1]="ContentBox",A}({}),ZO=function(A){return A[A.Width=0]="Width",A[A.Height=1]="Height",A}({}),YR=function(A){return A[A.Inherit=0]="Inherit",A[A.LTR=1]="LTR",A[A.RTL=2]="RTL",A}({}),JL=function(A){return A[A.Flex=0]="Flex",A[A.None=1]="None",A[A.Contents=2]="Contents",A}({}),uG=function(A){return A[A.Left=0]="Left",A[A.Top=1]="Top",A[A.Right=2]="Right",A[A.Bottom=3]="Bottom",A[A.Start=4]="Start",A[A.End=5]="End",A[A.Horizontal=6]="Horizontal",A[A.Vertical=7]="Vertical",A[A.All=8]="All",A}({}),ZJ=function(A){return A[A.None=0]="None",A[A.StretchFlexBasis=1]="StretchFlexBasis",A[A.AbsolutePositionWithoutInsetsExcludesPadding=2]="AbsolutePositionWithoutInsetsExcludesPadding",A[A.AbsolutePercentAgainstInnerSize=4]="AbsolutePercentAgainstInnerSize",A[A.All=2147483647]="All",A[A.Classic=2147483646]="Classic",A}({}),ur=function(A){return A[A.WebFlexBasis=0]="WebFlexBasis",A}({}),uK=function(A){return A[A.Column=0]="Column",A[A.ColumnReverse=1]="ColumnReverse",A[A.Row=2]="Row",A[A.RowReverse=3]="RowReverse",A}({}),HL=function(A){return A[A.Column=0]="Column",A[A.Row=1]="Row",A[A.All=2]="All",A}({}),XJ=function(A){return A[A.FlexStart=0]="FlexStart",A[A.Center=1]="Center",A[A.FlexEnd=2]="FlexEnd",A[A.SpaceBetween=3]="SpaceBetween",A[A.SpaceAround=4]="SpaceAround",A[A.SpaceEvenly=5]="SpaceEvenly",A}({}),SJ=function(A){return A[A.Error=0]="Error",A[A.Warn=1]="Warn",A[A.Info=2]="Info",A[A.Debug=3]="Debug",A[A.Verbose=4]="Verbose",A[A.Fatal=5]="Fatal",A}({}),UL=function(A){return A[A.Undefined=0]="Undefined",A[A.Exactly=1]="Exactly",A[A.AtMost=2]="AtMost",A}({}),XO=function(A){return A[A.Default=0]="Default",A[A.Text=1]="Text",A}({}),RL=function(A){return A[A.Visible=0]="Visible",A[A.Hidden=1]="Hidden",A[A.Scroll=2]="Scroll",A}({}),KL=function(A){return A[A.Static=0]="Static",A[A.Relative=1]="Relative",A[A.Absolute=2]="Absolute",A}({}),V0=function(A){return A[A.Undefined=0]="Undefined",A[A.Point=1]="Point",A[A.Percent=2]="Percent",A[A.Auto=3]="Auto",A}({}),ML=function(A){return A[A.NoWrap=0]="NoWrap",A[A.Wrap=1]="Wrap",A[A.WrapReverse=2]="WrapReverse",A}({}),wr={ALIGN_AUTO:GG.Auto,ALIGN_FLEX_START:GG.FlexStart,ALIGN_CENTER:GG.Center,ALIGN_FLEX_END:GG.FlexEnd,ALIGN_STRETCH:GG.Stretch,ALIGN_BASELINE:GG.Baseline,ALIGN_SPACE_BETWEEN:GG.SpaceBetween,ALIGN_SPACE_AROUND:GG.SpaceAround,ALIGN_SPACE_EVENLY:GG.SpaceEvenly,BOX_SIZING_BORDER_BOX:YO.BorderBox,BOX_SIZING_CONTENT_BOX:YO.ContentBox,DIMENSION_WIDTH:ZO.Width,DIMENSION_HEIGHT:ZO.Height,DIRECTION_INHERIT:YR.Inherit,DIRECTION_LTR:YR.LTR,DIRECTION_RTL:YR.RTL,DISPLAY_FLEX:JL.Flex,DISPLAY_NONE:JL.None,DISPLAY_CONTENTS:JL.Contents,EDGE_LEFT:uG.Left,EDGE_TOP:uG.Top,EDGE_RIGHT:uG.Right,EDGE_BOTTOM:uG.Bottom,EDGE_START:uG.Start,EDGE_END:uG.End,EDGE_HORIZONTAL:uG.Horizontal,EDGE_VERTICAL:uG.Vertical,EDGE_ALL:uG.All,ERRATA_NONE:ZJ.None,ERRATA_STRETCH_FLEX_BASIS:ZJ.StretchFlexBasis,ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING:ZJ.AbsolutePositionWithoutInsetsExcludesPadding,ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE:ZJ.AbsolutePercentAgainstInnerSize,ERRATA_ALL:ZJ.All,ERRATA_CLASSIC:ZJ.Classic,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:ur.WebFlexBasis,FLEX_DIRECTION_COLUMN:uK.Column,FLEX_DIRECTION_COLUMN_REVERSE:uK.ColumnReverse,FLEX_DIRECTION_ROW:uK.Row,FLEX_DIRECTION_ROW_REVERSE:uK.RowReverse,GUTTER_COLUMN:HL.Column,GUTTER_ROW:HL.Row,GUTTER_ALL:HL.All,JUSTIFY_FLEX_START:XJ.FlexStart,JUSTIFY_CENTER:XJ.Center,JUSTIFY_FLEX_END:XJ.FlexEnd,JUSTIFY_SPACE_BETWEEN:XJ.SpaceBetween,JUSTIFY_SPACE_AROUND:XJ.SpaceAround,JUSTIFY_SPACE_EVENLY:XJ.SpaceEvenly,LOG_LEVEL_ERROR:SJ.Error,LOG_LEVEL_WARN:SJ.Warn,LOG_LEVEL_INFO:SJ.Info,LOG_LEVEL_DEBUG:SJ.Debug,LOG_LEVEL_VERBOSE:SJ.Verbose,LOG_LEVEL_FATAL:SJ.Fatal,MEASURE_MODE_UNDEFINED:UL.Undefined,MEASURE_MODE_EXACTLY:UL.Exactly,MEASURE_MODE_AT_MOST:UL.AtMost,NODE_TYPE_DEFAULT:XO.Default,NODE_TYPE_TEXT:XO.Text,OVERFLOW_VISIBLE:RL.Visible,OVERFLOW_HIDDEN:RL.Hidden,OVERFLOW_SCROLL:RL.Scroll,POSITION_TYPE_STATIC:KL.Static,POSITION_TYPE_RELATIVE:KL.Relative,POSITION_TYPE_ABSOLUTE:KL.Absolute,UNIT_UNDEFINED:V0.Undefined,UNIT_POINT:V0.Point,UNIT_PERCENT:V0.Percent,UNIT_AUTO:V0.Auto,WRAP_NO_WRAP:ML.NoWrap,WRAP_WRAP:ML.Wrap,WRAP_WRAP_REVERSE:ML.WrapReverse},SO=wr;function NL(A){function I(D,u,U){let H=D[u];D[u]=function(){for(var N=arguments.length,q=Array(N),z=0;z<N;z++)q[z]=arguments[z];return U.call(this,H,...q)}}for(let D of["setPosition","setMargin","setFlexBasis","setWidth","setHeight","setMinWidth","setMinHeight","setMaxWidth","setMaxHeight","setPadding","setGap"]){let u={[V0.Point]:A.Node.prototype[D],[V0.Percent]:A.Node.prototype[`${D}Percent`],[V0.Auto]:A.Node.prototype[`${D}Auto`]};I(A.Node.prototype,D,function(U){for(var H=arguments.length,N=Array(H>1?H-1:0),q=1;q<H;q++)N[q-1]=arguments[q];let z=N.pop(),y,X;if(z==="auto")y=V0.Auto,X=void 0;else if(typeof z==="object")y=z.unit,X=z.valueOf();else if(y=typeof z==="string"&&z.endsWith("%")?V0.Percent:V0.Point,X=parseFloat(z),z!==void 0&&!Number.isNaN(z)&&Number.isNaN(X))throw Error(`Invalid value ${z} for ${D}`);if(!u[y])throw Error(`Failed to execute "${D}": Unsupported unit '${z}'`);if(X!==void 0)return u[y].call(this,...N,X);else return u[y].call(this,...N)})}function B(D){return A.MeasureCallback.implement({measure:function(){let{width:u,height:U}=D(...arguments);return{width:u??NaN,height:U??NaN}}})}I(A.Node.prototype,"setMeasureFunc",function(D,u){if(u)return D.call(this,B(u));else return this.unsetMeasureFunc()});function C(D){return A.DirtiedCallback.implement({dirtied:D})}return I(A.Node.prototype,"setDirtiedFunc",function(D,u){D.call(this,C(u))}),I(A.Config.prototype,"free",function(){A.Config.destroy(this)}),I(A.Node,"create",(D,u)=>{return u?A.Node.createWithConfig(u):A.Node.createDefault()}),I(A.Node.prototype,"free",function(){A.Node.destroy(this)}),I(A.Node.prototype,"freeRecursive",function(){for(let D=0,u=this.getChildCount();D<u;++D)this.getChild(0).freeRecursive();this.free()}),I(A.Node.prototype,"calculateLayout",function(D){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,U=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,H=arguments.length>3&&arguments[3]!==void 0?arguments[3]:YR.LTR;return D.call(this,u,U,H)}),{Config:A.Config,Node:A.Node,...SO}}var Jr=NL(await LO()),jI=Jr;var Cy=gB(WO(),1),Dy=gB(OO(),1);import ut from"node:process";function LL({onlyFirst:A=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",A?void 0:"g")}var Rr=LL();function ZR(A){if(typeof A!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof A}\``);return A.replace(Rr,"")}function VO(A){return A===161||A===164||A===167||A===168||A===170||A===173||A===174||A>=176&&A<=180||A>=182&&A<=186||A>=188&&A<=191||A===198||A===208||A===215||A===216||A>=222&&A<=225||A===230||A>=232&&A<=234||A===236||A===237||A===240||A===242||A===243||A>=247&&A<=250||A===252||A===254||A===257||A===273||A===275||A===283||A===294||A===295||A===299||A>=305&&A<=307||A===312||A>=319&&A<=322||A===324||A>=328&&A<=331||A===333||A===338||A===339||A===358||A===359||A===363||A===462||A===464||A===466||A===468||A===470||A===472||A===474||A===476||A===593||A===609||A===708||A===711||A>=713&&A<=715||A===717||A===720||A>=728&&A<=731||A===733||A===735||A>=768&&A<=879||A>=913&&A<=929||A>=931&&A<=937||A>=945&&A<=961||A>=963&&A<=969||A===1025||A>=1040&&A<=1103||A===1105||A===8208||A>=8211&&A<=8214||A===8216||A===8217||A===8220||A===8221||A>=8224&&A<=8226||A>=8228&&A<=8231||A===8240||A===8242||A===8243||A===8245||A===8251||A===8254||A===8308||A===8319||A>=8321&&A<=8324||A===8364||A===8451||A===8453||A===8457||A===8467||A===8470||A===8481||A===8482||A===8486||A===8491||A===8531||A===8532||A>=8539&&A<=8542||A>=8544&&A<=8555||A>=8560&&A<=8569||A===8585||A>=8592&&A<=8601||A===8632||A===8633||A===8658||A===8660||A===8679||A===8704||A===8706||A===8707||A===8711||A===8712||A===8715||A===8719||A===8721||A===8725||A===8730||A>=8733&&A<=8736||A===8739||A===8741||A>=8743&&A<=8748||A===8750||A>=8756&&A<=8759||A===8764||A===8765||A===8776||A===8780||A===8786||A===8800||A===8801||A>=8804&&A<=8807||A===8810||A===8811||A===8814||A===8815||A===8834||A===8835||A===8838||A===8839||A===8853||A===8857||A===8869||A===8895||A===8978||A>=9312&&A<=9449||A>=9451&&A<=9547||A>=9552&&A<=9587||A>=9600&&A<=9615||A>=9618&&A<=9621||A===9632||A===9633||A>=9635&&A<=9641||A===9650||A===9651||A===9654||A===9655||A===9660||A===9661||A===9664||A===9665||A>=9670&&A<=9672||A===9675||A>=9678&&A<=9681||A>=9698&&A<=9701||A===9711||A===9733||A===9734||A===9737||A===9742||A===9743||A===9756||A===9758||A===9792||A===9794||A===9824||A===9825||A>=9827&&A<=9829||A>=9831&&A<=9834||A===9836||A===9837||A===9839||A===9886||A===9887||A===9919||A>=9926&&A<=9933||A>=9935&&A<=9939||A>=9941&&A<=9953||A===9955||A===9960||A===9961||A>=9963&&A<=9969||A===9972||A>=9974&&A<=9977||A===9979||A===9980||A===9982||A===9983||A===10045||A>=10102&&A<=10111||A>=11094&&A<=11097||A>=12872&&A<=12879||A>=57344&&A<=63743||A>=65024&&A<=65039||A===65533||A>=127232&&A<=127242||A>=127248&&A<=127277||A>=127280&&A<=127337||A>=127344&&A<=127373||A===127375||A===127376||A>=127387&&A<=127404||A>=917760&&A<=917999||A>=983040&&A<=1048573||A>=1048576&&A<=1114109}function XR(A){return A===12288||A>=65281&&A<=65376||A>=65504&&A<=65510}function SR(A){return A>=4352&&A<=4447||A===8986||A===8987||A===9001||A===9002||A>=9193&&A<=9196||A===9200||A===9203||A===9725||A===9726||A===9748||A===9749||A>=9776&&A<=9783||A>=9800&&A<=9811||A===9855||A>=9866&&A<=9871||A===9875||A===9889||A===9898||A===9899||A===9917||A===9918||A===9924||A===9925||A===9934||A===9940||A===9962||A===9970||A===9971||A===9973||A===9978||A===9981||A===9989||A===9994||A===9995||A===10024||A===10060||A===10062||A>=10067&&A<=10069||A===10071||A>=10133&&A<=10135||A===10160||A===10175||A===11035||A===11036||A===11088||A===11093||A>=11904&&A<=11929||A>=11931&&A<=12019||A>=12032&&A<=12245||A>=12272&&A<=12287||A>=12289&&A<=12350||A>=12353&&A<=12438||A>=12441&&A<=12543||A>=12549&&A<=12591||A>=12593&&A<=12686||A>=12688&&A<=12773||A>=12783&&A<=12830||A>=12832&&A<=12871||A>=12880&&A<=42124||A>=42128&&A<=42182||A>=43360&&A<=43388||A>=44032&&A<=55203||A>=63744&&A<=64255||A>=65040&&A<=65049||A>=65072&&A<=65106||A>=65108&&A<=65126||A>=65128&&A<=65131||A>=94176&&A<=94180||A>=94192&&A<=94198||A>=94208&&A<=101589||A>=101631&&A<=101662||A>=101760&&A<=101874||A>=110576&&A<=110579||A>=110581&&A<=110587||A===110589||A===110590||A>=110592&&A<=110882||A===110898||A>=110928&&A<=110930||A===110933||A>=110948&&A<=110951||A>=110960&&A<=111355||A>=119552&&A<=119638||A>=119648&&A<=119670||A===126980||A===127183||A===127374||A>=127377&&A<=127386||A>=127488&&A<=127490||A>=127504&&A<=127547||A>=127552&&A<=127560||A===127568||A===127569||A>=127584&&A<=127589||A>=127744&&A<=127776||A>=127789&&A<=127797||A>=127799&&A<=127868||A>=127870&&A<=127891||A>=127904&&A<=127946||A>=127951&&A<=127955||A>=127968&&A<=127984||A===127988||A>=127992&&A<=128062||A===128064||A>=128066&&A<=128252||A>=128255&&A<=128317||A>=128331&&A<=128334||A>=128336&&A<=128359||A===128378||A===128405||A===128406||A===128420||A>=128507&&A<=128591||A>=128640&&A<=128709||A===128716||A>=128720&&A<=128722||A>=128725&&A<=128728||A>=128732&&A<=128735||A===128747||A===128748||A>=128756&&A<=128764||A>=128992&&A<=129003||A===129008||A>=129292&&A<=129338||A>=129340&&A<=129349||A>=129351&&A<=129535||A>=129648&&A<=129660||A>=129664&&A<=129674||A>=129678&&A<=129734||A===129736||A>=129741&&A<=129756||A>=129759&&A<=129770||A>=129775&&A<=129784||A>=131072&&A<=196605||A>=196608&&A<=262141}function Kr(A){if(!Number.isSafeInteger(A))throw TypeError(`Expected a code point, got \`${typeof A}\`.`)}function yO(A,{ambiguousAsWide:I=!1}={}){if(Kr(A),XR(A)||SR(A)||I&&VO(A))return 2;return 1}var fO=gB(PO(),1),Mr=new Intl.Segmenter,Nr=/^\p{Default_Ignorable_Code_Point}$/u;function RD(A,I={}){if(typeof A!=="string"||A.length===0)return 0;let{ambiguousIsNarrow:B=!0,countAnsiEscapeCodes:C=!1}=I;if(!C)A=ZR(A);if(A.length===0)return 0;let D=0,u={ambiguousAsWide:!B};for(let{segment:U}of Mr.segment(A)){let H=U.codePointAt(0);if(H<=31||H>=127&&H<=159)continue;if(H>=8203&&H<=8207||H===65279)continue;if(H>=768&&H<=879||H>=6832&&H<=6911||H>=7616&&H<=7679||H>=8400&&H<=8447||H>=65056&&H<=65071)continue;if(H>=55296&&H<=57343)continue;if(H>=65024&&H<=65039)continue;if(Nr.test(U))continue;if(fO.default().test(U)){D+=2;continue}D+=yO(H,u)}return D}function I8(A){let I=0;for(let B of A.split(`
@@ -299,7 +299,7 @@ $ npm install --save-dev react-devtools-core
299
299
  Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);else throw Error(`Raw mode is not supported on the stdin provided to Ink.
300
300
  Read about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported`);if(I.setEncoding("utf8"),A){if(this.rawModeEnabledCount===0)I.ref(),I.setRawMode(!0),I.addListener("readable",this.handleReadable);this.rawModeEnabledCount++;return}if(--this.rawModeEnabledCount===0)I.setRawMode(!1),I.removeListener("readable",this.handleReadable),I.unref()};handleReadable=()=>{let A;while((A=this.props.stdin.read())!==null)this.handleInput(A),this.internal_eventEmitter.emit("input",A)};handleInput=(A)=>{if(A==="\x03"&&this.props.exitOnCtrlC)this.handleExit();if(A===Mo&&this.state.activeFocusId)this.setState({activeFocusId:void 0});if(this.state.isFocusEnabled&&this.state.focusables.length>0){if(A===Ro)this.focusNext();if(A===Ko)this.focusPrevious()}};handleExit=(A)=>{if(this.isRawModeSupported())this.handleSetRawMode(!1);this.props.onExit(A)};enableFocus=()=>{this.setState({isFocusEnabled:!0})};disableFocus=()=>{this.setState({isFocusEnabled:!1})};focus=(A)=>{this.setState((I)=>{if(!I.focusables.some((C)=>C?.id===A))return I;return{activeFocusId:A}})};focusNext=()=>{this.setState((A)=>{let I=A.focusables.find((C)=>C.isActive)?.id;return{activeFocusId:this.findNextFocusable(A)??I}})};focusPrevious=()=>{this.setState((A)=>{let I=A.focusables.findLast((C)=>C.isActive)?.id;return{activeFocusId:this.findPreviousFocusable(A)??I}})};addFocusable=(A,{autoFocus:I})=>{this.setState((B)=>{let C=B.activeFocusId;if(!C&&I)C=A;return{activeFocusId:C,focusables:[...B.focusables,{id:A,isActive:!0}]}})};removeFocusable=(A)=>{this.setState((I)=>({activeFocusId:I.activeFocusId===A?void 0:I.activeFocusId,focusables:I.focusables.filter((B)=>{return B.id!==A})}))};activateFocusable=(A)=>{this.setState((I)=>({focusables:I.focusables.map((B)=>{if(B.id!==A)return B;return{id:A,isActive:!0}})}))};deactivateFocusable=(A)=>{this.setState((I)=>({activeFocusId:I.activeFocusId===A?void 0:I.activeFocusId,focusables:I.focusables.map((B)=>{if(B.id!==A)return B;return{id:A,isActive:!1}})}))};findNextFocusable=(A)=>{let I=A.focusables.findIndex((B)=>{return B.id===A.activeFocusId});for(let B=I+1;B<A.focusables.length;B++){let C=A.focusables[B];if(C?.isActive)return C.id}return};findPreviousFocusable=(A)=>{let I=A.focusables.findIndex((B)=>{return B.id===A.activeFocusId});for(let B=I-1;B>=0;B--){let C=A.focusables[B];if(C?.isActive)return C.id}return}}var uj=()=>{};class pK{options;log;throttledLog;isUnmounted;lastOutput;container;rootNode;fullStaticOutput;exitPromise;restoreConsole;unsubscribeResize;constructor(A){if(CL(this),this.options=A,this.rootNode=MK("ink-root"),this.rootNode.onComputeLayout=this.calculateLayout,this.rootNode.onRender=A.debug?this.onRender:CK(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=ly.create(A.stdout),this.throttledLog=A.debug?this.log:CK(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=PJ.createContainer(this.rootNode,0,null,!1,null,"id",()=>{},null),this.unsubscribeExit=Jj.default(this.unmount,{alwaysLast:!1}),No.env.DEV==="true")PJ.injectIntoDevTools({bundleType:0,version:"16.13.1",rendererPackageName:"ink"});if(A.patchConsole)this.patchConsole();if(!aw)A.stdout.on("resize",this.resized),this.unsubscribeResize=()=>{A.stdout.off("resize",this.resized)}}resized=()=>{this.calculateLayout(),this.onRender()};resolveExitPromise=()=>{};rejectExitPromise=()=>{};unsubscribeExit=()=>{};calculateLayout=()=>{let A=this.options.stdout.columns||80;this.rootNode.yogaNode.setWidth(A),this.rootNode.yogaNode.calculateLayout(void 0,void 0,jI.DIRECTION_LTR)};onRender=()=>{if(this.isUnmounted)return;let{output:A,outputHeight:I,staticOutput:B}=Py(this.rootNode),C=B&&B!==`
301
301
  `;if(this.options.debug){if(C)this.fullStaticOutput+=B;this.options.stdout.write(this.fullStaticOutput+A);return}if(aw){if(C)this.options.stdout.write(B);this.lastOutput=A;return}if(C)this.fullStaticOutput+=B;if(I>=this.options.stdout.rows){this.options.stdout.write(rw.clearTerminal+this.fullStaticOutput+A),this.lastOutput=A;return}if(C)this.log.clear(),this.options.stdout.write(B),this.log(A);if(!C&&A!==this.lastOutput)this.throttledLog(A);this.lastOutput=A};render(A){let I=wj.default.createElement(dK,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},A);PJ.updateContainer(I,this.container,null,uj)}writeToStdout(A){if(this.isUnmounted)return;if(this.options.debug){this.options.stdout.write(A+this.fullStaticOutput+this.lastOutput);return}if(aw){this.options.stdout.write(A);return}this.log.clear(),this.options.stdout.write(A),this.log(this.lastOutput)}writeToStderr(A){if(this.isUnmounted)return;if(this.options.debug){this.options.stderr.write(A),this.options.stdout.write(this.fullStaticOutput+this.lastOutput);return}if(aw){this.options.stderr.write(A);return}this.log.clear(),this.options.stderr.write(A),this.log(this.lastOutput)}unmount(A){if(this.isUnmounted)return;if(this.calculateLayout(),this.onRender(),this.unsubscribeExit(),typeof this.restoreConsole==="function")this.restoreConsole();if(typeof this.unsubscribeResize==="function")this.unsubscribeResize();if(aw)this.options.stdout.write(this.lastOutput+`
302
- `);else if(!this.options.debug)this.log.done();if(this.isUnmounted=!0,PJ.updateContainer(null,this.container,null,uj),_J.delete(this.options.stdout),A instanceof Error)this.rejectExitPromise(A);else this.resolveExitPromise()}async waitUntilExit(){return this.exitPromise||=new Promise((A,I)=>{this.resolveExitPromise=A,this.rejectExitPromise=I}),this.exitPromise}clear(){if(!aw&&!this.options.debug)this.log.clear()}patchConsole(){if(this.options.debug)return;this.restoreConsole=qO((A,I)=>{if(A==="stdout")this.writeToStdout(I);if(A==="stderr"){if(!I.startsWith("The above error occurred"))this.writeToStderr(I)}})}}var Lo=(A,I)=>{let B={stdout:sK.stdout,stdin:sK.stdin,stderr:sK.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0,...Yo(I)},C=Zo(B.stdout,()=>new pK(B));return C.render(A),{rerender:C.render,unmount(){C.unmount()},waitUntilExit:C.waitUntilExit,cleanup:()=>_J.delete(B.stdout),clear:C.clear}},xR=Lo,Yo=(A={})=>{if(A instanceof qo)return{stdout:A,stdin:sK.stdin};return A},Zo=(A,I)=>{let B=_J.get(A);if(!B)B=I(),_J.set(A,B);return B};var rK=gB(aQ(),1);var Xo=gB(aQ(),1);var So=gB(aQ(),1);var zo=gB(aQ(),1);var Vo=gB(aQ(),1);var $o={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},Wo=[...Object.values($o),"backspace"];var Oo=gB(aQ(),1);var yo=gB(aQ(),1);var jo=gB(aQ(),1);var Po=gB(aQ(),1);var RY=gB(aQ(),1);var fo=gB(aQ(),1);var vJ=gB(aQ(),1);var Nj=gB(Mj(),1);function ko({type:A="dots"}){let[I,B]=vJ.useState(0),C=Nj.default[A];return vJ.useEffect(()=>{let D=setInterval(()=>{B((u)=>{return u===C.frames.length-1?0:u+1})},C.interval);return()=>{clearInterval(D)}},[C]),vJ.default.createElement(yB,null,C.frames[I])}var tK=ko;var D8=gB(aQ(),1);var RF=gB(lR(),1);function vo({email:A,options:I}){let[B,C]=D8.useState(!0),[D,u]=D8.useState(""),[U,H]=D8.useState(!1);if(D8.useEffect(()=>{async function N(){try{let q={};for(let y of I.var??[]){let[X,V]=y.split("=");if(X&&V)q[X]=V}let z=I.html;if(I.htmlFile)z=_o(I.htmlFile,"utf-8");if(!I.template&&!z)throw Error("Either --template or --html/--html-file is required");if(!I.template&&!I.subject)throw Error("--subject is required when using --html");await lI("POST","/api/v1/transactional/send",{to:A,templateId:I.template,subject:I.subject,html:z,variables:q}),H(!0)}catch(q){u(UR(q))}finally{C(!1)}}N()},[A,I]),D8.useEffect(()=>{if(!B)setTimeout(()=>process.exit(D?1:0),100)},[B,D]),B)return RF.jsxDEV(KQ,{padding:1,children:[RF.jsxDEV(yB,{color:"cyan",children:RF.jsxDEV(tK,{type:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),RF.jsxDEV(yB,{children:[" Sending email to ",A,"..."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(D)return RF.jsxDEV(KQ,{padding:1,children:RF.jsxDEV(yB,{color:"red",children:[" ",D]},void 0,!0,void 0,this)},void 0,!1,void 0,this);return RF.jsxDEV(KQ,{padding:1,children:RF.jsxDEV(yB,{color:"green",children:[" Email sent to ",A]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}async function qj(A,I){if(!await sB())JB(QQ()),process.exit(1);xR(RF.jsxDEV(vo,{email:A,options:I},void 0,!1,void 0,this))}var Lj=10;function Yj(A){return{...A.name!==void 0&&{name:A.name},...A.trigger!==void 0&&{trigger:A.trigger},...A.goal!==void 0&&A.goal.trim().length>0&&{goal:A.goal.trim()},...Bg(A.emailCount,"--email-count")!==void 0&&{emailCount:Bg(A.emailCount,"--email-count")},...A.listId!==void 0&&{listId:A.listId},...A.tagName!==void 0&&{tagName:A.tagName},...A.segmentId!==void 0&&{segmentId:A.segmentId},...A.eventName!==void 0&&{eventName:A.eventName},...Bg(A.inactiveDays,"--inactive-days")!==void 0&&{inactiveDays:Bg(A.inactiveDays,"--inactive-days")},...Bg(A.minCount,"--min-count")!==void 0&&{minCount:Bg(A.minCount,"--min-count")},...Bg(A.timeWindowDays,"--time-window-days")!==void 0&&{timeWindowDays:Bg(A.timeWindowDays,"--time-window-days")},...JJ(A.stepsJson,A.stepsFile,"steps")!==void 0&&{steps:JJ(A.stepsJson,A.stepsFile,"steps")},...JJ(A.emailsJson,A.emailsFile,"emails")!==void 0&&{emails:JJ(A.emailsJson,A.emailsFile,"emails")}}}function ho(A){let I=A.goal?.trim(),B=!!I,C=!!A.stepsJson||!!A.stepsFile;if(B&&C)throw new cA("Provide either --goal or --steps-json/--steps-file, not both",400);if(!B&&!C)throw new cA("Provide sequence content with --goal or --steps-json/--steps-file",400);if(A.emailCount!==void 0&&!B)throw new cA("--email-count requires --goal",400);let D=Bg(A.emailCount,"--email-count");if(D!==void 0&&D>Lj)throw new cA(`--email-count must be no more than ${Lj}`,400);return B?{mode:"goal",goal:I}:{mode:"steps"}}async function ju(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let U=await lI("GET","/api/v1/sequences",void 0,I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H}):void 0,q=U.sequences.map((z)=>H!==void 0?HJ(z,{sequenceId:z.id},"sequence",H):{...z,url:void 0});if(I.json){RB({...U,sequences:q,...N!==void 0&&{appUrls:N.urls}});return}console.log(`Sequences (${U.sequences.length})`);for(let z of q)console.log(`- ${z.name} [${z.id}]`),console.log(` Status: ${z.status}`),console.log(` Trigger: ${z.trigger??"Unknown"}`),console.log(` Created: ${XQ(z.createdAt)}`),lQ(" URL",z.url);return}if(A==="create"){if(!I.name)throw new cA("Sequence name is required",400);if(!I.trigger)throw new cA("Sequence trigger is required",400);let U=ho(I),H=await lI("POST","/api/v1/sequences",Yj({...I,...U.goal!==void 0&&{goal:U.goal}}),I.company),N=await UD(I.company),q=H.sequence?.id??H.sequenceId,z=N!==void 0&&q!==void 0?pQ({companyId:N,sequenceId:q}):void 0;if(I.json){RB({...H,...H.sequence!==void 0&&z?.urls.sequence!==void 0&&{sequence:{...H.sequence,url:z.urls.sequence}},...z!==void 0&&{appUrls:z.urls}});return}if(console.log(`Created sequence: ${H.sequence?.name??I.name}`),console.log(`ID: ${H.sequence?.id??"Unknown"}`),lQ("URL",z?.urls.sequence),console.log(`Status: ${H.sequence?.status??"Unknown"}`),H.sequence?.emailCount!==void 0)console.log(`Emails: ${H.sequence.emailCount}`);if(U.mode==="goal")console.log("Mode: AI-generated");if(H.message)console.log(H.message);return}if(!I.id)throw new cA("Sequence ID is required",400);if(A==="update"){if(I.name===void 0&&!I.stepsJson&&!I.stepsFile&&!I.emailsJson&&!I.emailsFile)throw new cA("Provide at least one of: --name, --steps-json, --steps-file, --emails-json, --emails-file",400);let U=await lI("PUT",`/api/v1/sequences/${I.id}`,Yj(I),I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H,sequenceId:I.id}):void 0;if(I.json){RB({...U,...U.sequence!==void 0&&N?.urls.sequence!==void 0&&{sequence:{...U.sequence,url:N.urls.sequence}},...N!==void 0&&{appUrls:N.urls}});return}console.log(`Updated sequence: ${U.sequence?.name??I.id}`),console.log(`ID: ${U.sequence?.id??I.id}`),lQ("URL",N?.urls.sequence),console.log(`Status: ${U.sequence?.status??"Unknown"}`);return}if(A==="enable"||A==="disable"){let U=await lI("POST",`/api/v1/sequences/${I.id}/${A}`,void 0,I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H,sequenceId:I.id}):void 0;if(I.json){RB({...U,...N!==void 0&&{appUrls:N.urls}});return}console.log(U.message??`${A}d sequence ${I.id}`),lQ("URL",N?.urls.sequence);return}if(A==="delete"){let U=await lI("DELETE",`/api/v1/sequences/${I.id}`,void 0,I.company);if(I.json){RB(U);return}console.log(U.message??`Deleted sequence ${I.id}`);return}let B=await lI("GET",`/api/v1/sequences/${I.id}`,void 0,I.company),C=await UD(I.company),D=C!==void 0?pQ({companyId:C,sequenceId:I.id}):void 0;if(I.json){RB({...B,...D?.urls.sequence!==void 0&&{sequence:{...B.sequence,url:D.urls.sequence}},...D!==void 0&&{appUrls:D.urls}});return}let u=B.sequence;if(console.log(u.name),console.log(`ID: ${u.id}`),lQ("URL",D?.urls.sequence),console.log(`Status: ${u.status}`),console.log(`Trigger: ${u.trigger??"Unknown"}`),console.log(`Created: ${XQ(u.createdAt)}`),console.log(`Enrichment: ${u.enrichmentStatus} (${u.enrichedCount}/${u.emailCount})`),u.emails.length>0){console.log("Emails:");for(let U of u.emails){let H=U.stepNumber!==null?`Step ${U.stepNumber}`:`Node ${U.nodeId}`;console.log(`- ${H}`),console.log(` Email ID: ${U.emailId??"None"}`),console.log(` Name: ${U.name??"None"}`),console.log(` Subject: ${U.subject??"None"}`),console.log(` Preview: ${U.previewText??"None"}`),console.log(` Blocks: ${U.blocks.length}`)}}}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}var g8=gB(aQ(),1);var hB=gB(lR(),1);function xo(A){let I=A.stats;return{sent:I.sent,delivered:I.delivered,opened:I.opened,clicked:I.clicked,unsubscribed:I.unsubscribed,openRate:I.openRate,clickRate:I.clickRate,steps:A.steps}}function lo({options:A}){let[I,B]=g8.useState(!0),[C,D]=g8.useState(""),[u,U]=g8.useState(null);if(g8.useEffect(()=>{async function z(){try{let y;if(A.campaign)y=await lI("GET",`/api/v1/metrics/campaigns/${A.campaign}`);else if(A.sequence)y=await lI("GET",`/api/v1/metrics/sequences/${A.sequence}`);else y=await lI("GET",`/api/v1/metrics?period=${A.period??"7d"}`);U(xo(y))}catch(y){D(UR(y instanceof cA?y:y))}finally{B(!1)}}z()},[A]),g8.useEffect(()=>{if(!I)setTimeout(()=>process.exit(C?1:0),100)},[I,C]),I)return hB.jsxDEV(KQ,{padding:1,children:[hB.jsxDEV(yB,{color:"cyan",children:hB.jsxDEV(tK,{type:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:" Loading stats..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(C)return hB.jsxDEV(KQ,{padding:1,children:hB.jsxDEV(yB,{color:"red",children:[" ",C]},void 0,!0,void 0,this)},void 0,!1,void 0,this);if(!u)return hB.jsxDEV(KQ,{padding:1,children:hB.jsxDEV(yB,{dimColor:!0,children:"No stats available"},void 0,!1,void 0,this)},void 0,!1,void 0,this);let H=A.period??"7d",N=A.campaign?"Campaign Stats":A.sequence?"Sequence Stats":`Stats (${H})`,q=A.sequence&&u.steps?u.steps.filter((z)=>(z.failedCount??0)>0):[];return hB.jsxDEV(KQ,{flexDirection:"column",padding:1,children:[hB.jsxDEV(KQ,{marginBottom:1,children:hB.jsxDEV(yB,{bold:!0,color:"green",children:N},void 0,!1,void 0,this)},void 0,!1,void 0,this),hB.jsxDEV(KQ,{flexDirection:"column",children:[hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Sent: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.sent.toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Delivered: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.delivered.toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Opened: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.opened.toLocaleString()},void 0,!1,void 0,this),hB.jsxDEV(yB,{dimColor:!0,children:[" (",u.openRate.toFixed(1),"%)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Clicked: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.clicked.toLocaleString()},void 0,!1,void 0,this),hB.jsxDEV(yB,{dimColor:!0,children:[" (",u.clickRate.toFixed(1),"%)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Unsubscribed: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.unsubscribed.toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.length>0&&hB.jsxDEV(KQ,{flexDirection:"column",marginTop:1,children:[hB.jsxDEV(KQ,{marginBottom:1,children:hB.jsxDEV(yB,{bold:!0,children:"Step Failures"},void 0,!1,void 0,this)},void 0,!1,void 0,this),q.map((z)=>hB.jsxDEV(KQ,{flexDirection:"column",marginBottom:1,children:[hB.jsxDEV(yB,{children:["Step ",z.step,": ",z.subject??z.nodeId," (",z.failedCount," failed",")"]},void 0,!0,void 0,this),(z.failedSubscribers??[]).map((y)=>hB.jsxDEV(KQ,{marginLeft:2,children:hB.jsxDEV(yB,{children:["- ",y.email??y.subscriberId,":"," ",y.failedReason??"Reason unavailable"]},void 0,!0,void 0,this)},`${z.nodeId}-${y.subscriberId}`,!1,void 0,this)),(z.failedCount??0)>(z.failedSubscribers?.length??0)&&hB.jsxDEV(KQ,{marginLeft:2,children:hB.jsxDEV(yB,{dimColor:!0,children:["Showing first ",z.failedSubscribers?.length??0," of"," ",z.failedCount," failed subscribers"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},z.nodeId,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}async function Zj(A){if(!await sB())JB(QQ()),process.exit(1);xR(hB.jsxDEV(lo,{options:A},void 0,!1,void 0,this))}function Xj(A){if(!A)return[];return Array.isArray(A)?A:[A]}function io(A){let I={};for(let B of A??[]){let[C,...D]=B.split("="),u=D.join("=");if(C&&u)I[C]=u}return Object.keys(I).length>0?I:void 0}function mo(A){let I=new URLSearchParams;if(A.segment)I.set("segmentId",A.segment);let B=Xj(A.tag);if(B.length>0)I.set("tags",B.join(","));return I.set("page",String(A.page)),I.set("limit",String(A.pageSize)),I}async function co(A){let I=Bg(A.limit,"--limit"),B=Math.min(100,Math.max(1,I??100)),C=[],D=1,u=0,U=0,H=0;while(!0){let q=mo({segment:A.segment,tag:A.tag,page:D,pageSize:B}),z=await lI("GET",`/api/v1/subscribers?${q.toString()}`,void 0,A.company);u=z.pagination?.total??z.subscribers.length,U=z.pagination?.totalPages??1,H+=1,C.push(...z.subscribers??[]);let y=I!==void 0&&C.length>=I,X=z.pagination?D>=z.pagination.totalPages:(z.subscribers??[]).length<B;if(y||X)break;D+=1}let N=I!==void 0?C.slice(0,I):C;return{success:!0,subscribers:N,pagination:{page:1,limit:B,total:u,totalPages:U,fetchedPages:H},returned:N.length,truncated:I!==void 0&&u>0&&N.length<u}}function Sj(A){let I=[A.firstName,A.lastName].map((B)=>B?.trim()).filter((B)=>!!B);return I.length>0?I.join(" "):null}function no(A){let I=`${XQ(A.eventTime)} ${A.eventType}`;if(A.eventType==="custom"){let B=A.eventName??"unknown",C=A.properties&&Object.keys(A.properties).length>0?` ${JSON.stringify(A.properties)}`:"";return`${I} ${B}${C}`}if(A.clickedUrl)return`${I} ${A.clickedUrl}`;if(A.bounceType)return`${I} ${A.bounceType}`;if(A.campaignId)return`${I} campaign:${A.campaignId}`;return I}function po(A){if(A.subscribers.length===0){console.log("No subscribers found");return}console.log(`Subscribers (${A.returned})`),console.log(A.truncated?`Showing ${A.returned} of ${A.pagination.total} matching subscribers.`:`Fetched ${A.returned} matching subscribers across ${A.pagination.fetchedPages} page(s).`);for(let I of A.subscribers){console.log(`- ${I.email} [${I.status}]`);let B=Sj(I);if(B)console.log(` Name: ${B}`);if(I.tags.length>0)console.log(` Tags: ${I.tags.join(", ")}`);if(I.emailProvider)console.log(` Email provider: ${I.emailProvider}`);console.log(` Created: ${XQ(I.createdAt)}`)}}function so(A){console.log(`Subscriber: ${A.email}`),console.log(`Status: ${A.status}`);let I=Sj(A);if(I)console.log(`Name: ${I}`);if(console.log(`ID: ${A.id}`),console.log(`Created: ${XQ(A.createdAt)}`),console.log(`Updated: ${XQ(A.updatedAt)}`),console.log(`Email provider: ${A.emailProvider??"None"}`),console.log(`Tags: ${A.tags.length>0?A.tags.join(", "):"None"}`),console.log("Lists:"),(A.lists?.length??0)===0)console.log(" None");else for(let B of A.lists??[])console.log(` - ${B.name}${B.unsubscribedAt?" [inactive]":" [active]"}`),console.log(` Joined: ${XQ(B.subscribedAt)}${B.unsubscribedAt?` | Unsubscribed: ${XQ(B.unsubscribedAt)}`:""}`);if(console.log("Sequence Enrollments:"),(A.sequenceEnrollments?.length??0)===0)console.log(" None");else for(let B of A.sequenceEnrollments??[])if(console.log(` - ${B.sequenceName} [${B.enrollmentStatus}]`),console.log(` Sequence ID: ${B.sequenceId} | Status: ${B.sequenceStatus}`),console.log(` Current node: ${B.currentNodeLabel??B.currentNodeType??"Unknown"}`),console.log(` Entered: ${XQ(B.enteredAt)} | Updated: ${XQ(B.updatedAt)}`),B.scheduledFor)console.log(` Scheduled: ${XQ(B.scheduledFor)}`);if(console.log("Email Stats:"),!A.emailStats)console.log(" None");else console.log(` Sent ${A.emailStats.sent}, delivered ${A.emailStats.delivered}, opened ${A.emailStats.opened}, clicked ${A.emailStats.clicked}, bounced ${A.emailStats.bounced}, unsubscribed ${A.emailStats.unsubscribed}, complained ${A.emailStats.complained}`);if(console.log("Recent Activity:"),(A.activity?.length??0)===0)console.log(" None");else for(let B of A.activity??[])console.log(` - ${no(B)}`);if(console.log("Custom Attributes:"),!A.customAttributes||Object.keys(A.customAttributes).length===0)console.log(" None");else console.log(JSON.stringify(A.customAttributes,null,2))}async function ro(A){let I=await co(A);if(A.json){RB(I);return}po(I)}async function ao(A){let I=Su(A.email,"email"),B=await lI("POST","/api/v1/subscribers",{email:I,tags:Xj(A.tag),customAttributes:io(A.attr)},A.company);if(A.json){RB(B);return}console.log(`Added subscriber: ${I}`)}async function to(A){let I=Su(A.email,"email"),B=await lI("GET",`/api/v1/subscribers/${encodeURIComponent(I)}`,void 0,A.company);if(A.json){RB(B);return}so(B.subscriber)}async function oo(A){let I=Su(A.email,"email");if(A.hard){let C=await lI("DELETE",`/api/v1/subscribers/${encodeURIComponent(I)}`,void 0,A.company);if(A.json){RB(C);return}console.log(`Deleted subscriber: ${I}`);return}let B=await lI("PATCH",`/api/v1/subscribers/${encodeURIComponent(I)}`,{status:"unsubscribed"},A.company);if(A.json){RB(B);return}console.log(`Unsubscribed: ${I}`)}async function iR(A,I){if(!await sB())JB(QQ()),process.exit(1);try{switch(A){case"list":await ro(I);return;case"add":await ao(I);return;case"get":await to(I);return;case"remove":await oo(I);return}}catch(B){let C=B instanceof cA?B:new cA(B instanceof Error?B.message:"Unknown error",500);JB(C),process.exit(1)}}async function zj(A){if(!await sB())JB(QQ()),process.exit(1);try{let I=await lI("GET","/api/v1/tags",void 0,A.company);if(A.json){RB(I);return}console.log(`Tags (${I.tags.length})`);for(let B of I.tags){let C=B.isSystem?" [system]":"";console.log(`- ${B.name} [${B.id}]${C}`),console.log(` Color: ${B.color??"Default"}`)}}catch(I){JB(I instanceof cA?I:I),process.exit(1)}}function $j(A){if(A.length===0)return"none";return A.map((I)=>`${I.locale}:${I.status}`).join(", ")}function eo(A,I){if(A.name===void 0&&A.subject===void 0&&I.html===void 0&&I.blocks===void 0)throw new cA("Provide at least one of: --name, --subject, --html, --html-file, --blocks-json, --blocks-file",400);return{name:A.name,subject:A.subject,html:I.html,blocks:I.blocks}}async function hJ(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let U=await lI("GET","/api/v1/templates",void 0,I.company),H=pQ({companyId:U.companyId}),N=U.templates.map((q)=>HJ(q,{emailId:q.id},"email",U.companyId));if(I.json){RB({...U,templates:N,appUrls:H.urls});return}if(console.log(`Templates (${U.templates.length})`),U.emailLocalizationConfig)console.log(`Primary locale: ${U.emailLocalizationConfig.primaryLocale}`);for(let q of N)console.log(`- ${q.name} [${q.id}]`),console.log(` Subject: ${q.subject}`),lQ(" URL",q.url),console.log(` Localizations: ${$j(q.localizations)}`);return}let B=AK({html:I.html,htmlFile:I.htmlFile,blocksJson:I.blocksJson,blocksFile:I.blocksFile,...A==="create"?{required:!0,requiredMessage:"Provide either --html/--html-file or --blocks-json/--blocks-file"}:{}});if(A==="create"){if(!I.name)throw new cA("Template name is required",400);if(!I.subject)throw new cA("Template subject is required",400);let U=await lI("POST","/api/v1/templates",{name:I.name,subject:I.subject,html:B.html,blocks:B.blocks},I.company),H=await UD(I.company),N=U.template?.id??U.templateId,q=H!==void 0&&N!==void 0?pQ({companyId:H,emailId:N}):void 0;if(I.json){RB({...U,...U.template!==void 0&&q?.urls.email!==void 0&&{template:{...U.template,url:q.urls.email}},...q!==void 0&&{appUrls:q.urls}});return}console.log(`Created template: ${U.template?.name??I.name}`),console.log(`ID: ${U.template?.id??"Unknown"}`),lQ("URL",q?.urls.email),console.log(`Subject: ${U.template?.subject??I.subject??"Unknown"}`);return}if(!I.id)throw new cA("Template ID is required",400);if(A==="update"){let U=await lI("PUT",`/api/v1/templates/${I.id}`,eo(I,B),I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H,emailId:I.id}):void 0;if(I.json){RB({...U,...U.template!==void 0&&N?.urls.email!==void 0&&{template:{...U.template,url:N.urls.email}},...N!==void 0&&{appUrls:N.urls}});return}console.log(`Updated template: ${U.template?.name??I.id}`),console.log(`ID: ${U.template?.id??I.id}`),lQ("URL",N?.urls.email),console.log(`Subject: ${U.template?.subject??"Unchanged"}`);return}if(A==="delete"){let U=await lI("DELETE",`/api/v1/templates/${I.id}`,void 0,I.company);if(I.json){RB(U);return}console.log(U.message??`Deleted template: ${I.id}`);return}let C=await lI("GET",`/api/v1/templates/${I.id}`,void 0,I.company),D=pQ({companyId:C.template.companyId,emailId:I.id});if(I.json){RB({...C,template:{...C.template,url:D.urls.email},appUrls:D.urls});return}let u=C.template;console.log(u.name),console.log(`ID: ${u.id}`),console.log(`Company: ${u.companyId}`),lQ("URL",D.urls.email),console.log(`Subject: ${u.subject}`),console.log(`Preview: ${u.previewText??"None"}`),console.log(`Blocks: ${u.blocks.length}`),console.log(`Font: ${u.fontFamily??"Default"}`),console.log(`Created: ${XQ(u.createdAt)}`),console.log(`Updated: ${XQ(u.updatedAt)}`),console.log(`Localizations: ${$j(u.localizations)}`);for(let U of u.localizations){let H=U.lastError?` | error: ${U.lastError}`:"";console.log(`- ${U.locale} [${U.status}] blocks=${U.blocks.length}${H}`)}}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}async function mR(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let U=await lI("GET","/api/v1/websites",void 0,I.company);if(I.json){RB(U);return}console.log(`Websites (${U.websites.length})`);for(let H of U.websites)console.log(`- ${H.domain}`),console.log(` Status: ${H.status}`),console.log(` Created: ${XQ(H.createdAt)}`);return}if(A==="guide"){let U=await lI("POST","/api/v1/integration-guide",{framework:I.framework,use_case:I.useCase});if(I.json){RB(U);return}if(console.log(`Integration guide: ${U.framework} / ${U.use_case}`),console.log(""),console.log(U.code),U.tip)console.log(""),console.log(`Tip: ${U.tip}`);return}if(!I.domain)throw new cA("Domain is required",400);let B=A==="add"?"POST":"GET",C=A==="add"?"/api/v1/websites":`/api/v1/websites/${encodeURIComponent(I.domain)}`,D=A==="add"?{domain:I.domain}:void 0,u=await lI(B,C,D,I.company);if(I.json){RB(u);return}if(console.log(u.website.domain),console.log(`Status: ${u.website.status}`),u.website.createdAt)console.log(`Created: ${XQ(u.website.createdAt)}`);if(u.website.message)console.log(u.website.message);if(u.website.dnsRecords!==void 0)console.log("DNS Records:"),RB(u.website.dnsRecords)}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}async function Wj(){if(!await sB()){JB(QQ());return}let A=e2();console.log(`Email: ${A.userEmail??"Unknown"}`),console.log(`User ID: ${A.userId??"Unknown"}`),console.log(""),console.log("Your API key can access all companies you belong to."),console.log("Use `sequenzy account` to see available companies.")}function Oj(A,I){if(I.length===0)return"";return`
302
+ `);else if(!this.options.debug)this.log.done();if(this.isUnmounted=!0,PJ.updateContainer(null,this.container,null,uj),_J.delete(this.options.stdout),A instanceof Error)this.rejectExitPromise(A);else this.resolveExitPromise()}async waitUntilExit(){return this.exitPromise||=new Promise((A,I)=>{this.resolveExitPromise=A,this.rejectExitPromise=I}),this.exitPromise}clear(){if(!aw&&!this.options.debug)this.log.clear()}patchConsole(){if(this.options.debug)return;this.restoreConsole=qO((A,I)=>{if(A==="stdout")this.writeToStdout(I);if(A==="stderr"){if(!I.startsWith("The above error occurred"))this.writeToStderr(I)}})}}var Lo=(A,I)=>{let B={stdout:sK.stdout,stdin:sK.stdin,stderr:sK.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0,...Yo(I)},C=Zo(B.stdout,()=>new pK(B));return C.render(A),{rerender:C.render,unmount(){C.unmount()},waitUntilExit:C.waitUntilExit,cleanup:()=>_J.delete(B.stdout),clear:C.clear}},xR=Lo,Yo=(A={})=>{if(A instanceof qo)return{stdout:A,stdin:sK.stdin};return A},Zo=(A,I)=>{let B=_J.get(A);if(!B)B=I(),_J.set(A,B);return B};var rK=gB(aQ(),1);var Xo=gB(aQ(),1);var So=gB(aQ(),1);var zo=gB(aQ(),1);var Vo=gB(aQ(),1);var $o={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"},Wo=[...Object.values($o),"backspace"];var Oo=gB(aQ(),1);var yo=gB(aQ(),1);var jo=gB(aQ(),1);var Po=gB(aQ(),1);var RY=gB(aQ(),1);var fo=gB(aQ(),1);var vJ=gB(aQ(),1);var Nj=gB(Mj(),1);function ko({type:A="dots"}){let[I,B]=vJ.useState(0),C=Nj.default[A];return vJ.useEffect(()=>{let D=setInterval(()=>{B((u)=>{return u===C.frames.length-1?0:u+1})},C.interval);return()=>{clearInterval(D)}},[C]),vJ.default.createElement(yB,null,C.frames[I])}var tK=ko;var D8=gB(aQ(),1);var RF=gB(lR(),1);function vo({email:A,options:I}){let[B,C]=D8.useState(!0),[D,u]=D8.useState(""),[U,H]=D8.useState(!1);if(D8.useEffect(()=>{async function N(){try{let q={};for(let y of I.var??[]){let[X,V]=y.split("=");if(X&&V)q[X]=V}let z=I.html;if(I.htmlFile)z=_o(I.htmlFile,"utf-8");if(!I.template&&!z)throw Error("Either --template or --html/--html-file is required");if(!I.template&&!I.subject)throw Error("--subject is required when using --html");await lI("POST","/api/v1/transactional/send",{to:A,templateId:I.template,subject:I.subject,html:z,variables:q}),H(!0)}catch(q){u(UR(q))}finally{C(!1)}}N()},[A,I]),D8.useEffect(()=>{if(!B)setTimeout(()=>process.exit(D?1:0),100)},[B,D]),B)return RF.jsxDEV(KQ,{padding:1,children:[RF.jsxDEV(yB,{color:"cyan",children:RF.jsxDEV(tK,{type:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),RF.jsxDEV(yB,{children:[" Sending email to ",A,"..."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(D)return RF.jsxDEV(KQ,{padding:1,children:RF.jsxDEV(yB,{color:"red",children:[" ",D]},void 0,!0,void 0,this)},void 0,!1,void 0,this);return RF.jsxDEV(KQ,{padding:1,children:RF.jsxDEV(yB,{color:"green",children:[" Email sent to ",A]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}async function qj(A,I){if(!await sB())JB(QQ()),process.exit(1);xR(RF.jsxDEV(vo,{email:A,options:I},void 0,!1,void 0,this))}var Lj=10;function Yj(A){return{...A.name!==void 0&&{name:A.name},...A.trigger!==void 0&&{trigger:A.trigger},...A.goal!==void 0&&A.goal.trim().length>0&&{goal:A.goal.trim()},...Bg(A.emailCount,"--email-count")!==void 0&&{emailCount:Bg(A.emailCount,"--email-count")},...A.listId!==void 0&&{listId:A.listId},...A.tagName!==void 0&&{tagName:A.tagName},...A.segmentId!==void 0&&{segmentId:A.segmentId},...A.eventName!==void 0&&{eventName:A.eventName},...Bg(A.inactiveDays,"--inactive-days")!==void 0&&{inactiveDays:Bg(A.inactiveDays,"--inactive-days")},...Bg(A.minCount,"--min-count")!==void 0&&{minCount:Bg(A.minCount,"--min-count")},...Bg(A.timeWindowDays,"--time-window-days")!==void 0&&{timeWindowDays:Bg(A.timeWindowDays,"--time-window-days")},...JJ(A.stepsJson,A.stepsFile,"steps")!==void 0&&{steps:JJ(A.stepsJson,A.stepsFile,"steps")},...JJ(A.emailsJson,A.emailsFile,"emails")!==void 0&&{emails:JJ(A.emailsJson,A.emailsFile,"emails")}}}function ho(A){let I=A.goal?.trim(),B=!!I,C=!!A.stepsJson||!!A.stepsFile;if(B&&C)throw new cA("Provide either --goal or --steps-json/--steps-file, not both",400);if(!B&&!C)throw new cA("Provide sequence content with --goal or --steps-json/--steps-file",400);if(A.emailCount!==void 0&&!B)throw new cA("--email-count requires --goal",400);let D=Bg(A.emailCount,"--email-count");if(D!==void 0&&D>Lj)throw new cA(`--email-count must be no more than ${Lj}`,400);return B?{mode:"goal",goal:I}:{mode:"steps"}}async function ju(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let U=await lI("GET","/api/v1/sequences",void 0,I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H}):void 0,q=U.sequences.map((z)=>H!==void 0?HJ(z,{sequenceId:z.id},"sequence",H):{...z,url:void 0});if(I.json){RB({...U,sequences:q,...N!==void 0&&{appUrls:N.urls}});return}console.log(`Sequences (${U.sequences.length})`);for(let z of q)console.log(`- ${z.name} [${z.id}]`),console.log(` Status: ${z.status}`),console.log(` Trigger: ${z.trigger??"Unknown"}`),console.log(` Created: ${XQ(z.createdAt)}`),lQ(" URL",z.url);return}if(A==="create"){if(!I.name)throw new cA("Sequence name is required",400);if(!I.trigger)throw new cA("Sequence trigger is required",400);let U=ho(I),H=await lI("POST","/api/v1/sequences",Yj({...I,...U.goal!==void 0&&{goal:U.goal}}),I.company),N=await UD(I.company),q=H.sequence?.id??H.sequenceId,z=N!==void 0&&q!==void 0?pQ({companyId:N,sequenceId:q}):void 0;if(I.json){RB({...H,...H.sequence!==void 0&&z?.urls.sequence!==void 0&&{sequence:{...H.sequence,url:z.urls.sequence}},...z!==void 0&&{appUrls:z.urls}});return}if(console.log(`Created sequence: ${H.sequence?.name??I.name}`),console.log(`ID: ${H.sequence?.id??"Unknown"}`),lQ("URL",z?.urls.sequence),console.log(`Status: ${H.sequence?.status??"Unknown"}`),H.sequence?.emailCount!==void 0)console.log(`Emails: ${H.sequence.emailCount}`);if(H.sequence?.discountCount!==void 0)console.log(`Discount actions: ${H.sequence.discountCount}`);if(U.mode==="goal")console.log("Mode: AI-generated");if(H.message)console.log(H.message);return}if(!I.id)throw new cA("Sequence ID is required",400);if(A==="update"){if(I.name===void 0&&!I.stepsJson&&!I.stepsFile&&!I.emailsJson&&!I.emailsFile)throw new cA("Provide at least one of: --name, --steps-json, --steps-file, --emails-json, --emails-file",400);let U=await lI("PUT",`/api/v1/sequences/${I.id}`,Yj(I),I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H,sequenceId:I.id}):void 0;if(I.json){RB({...U,...U.sequence!==void 0&&N?.urls.sequence!==void 0&&{sequence:{...U.sequence,url:N.urls.sequence}},...N!==void 0&&{appUrls:N.urls}});return}console.log(`Updated sequence: ${U.sequence?.name??I.id}`),console.log(`ID: ${U.sequence?.id??I.id}`),lQ("URL",N?.urls.sequence),console.log(`Status: ${U.sequence?.status??"Unknown"}`);return}if(A==="enable"||A==="disable"){let U=await lI("POST",`/api/v1/sequences/${I.id}/${A}`,void 0,I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H,sequenceId:I.id}):void 0;if(I.json){RB({...U,...N!==void 0&&{appUrls:N.urls}});return}console.log(U.message??`${A}d sequence ${I.id}`),lQ("URL",N?.urls.sequence);return}if(A==="delete"){let U=await lI("DELETE",`/api/v1/sequences/${I.id}`,void 0,I.company);if(I.json){RB(U);return}console.log(U.message??`Deleted sequence ${I.id}`);return}let B=await lI("GET",`/api/v1/sequences/${I.id}`,void 0,I.company),C=await UD(I.company),D=C!==void 0?pQ({companyId:C,sequenceId:I.id}):void 0;if(I.json){RB({...B,...D?.urls.sequence!==void 0&&{sequence:{...B.sequence,url:D.urls.sequence}},...D!==void 0&&{appUrls:D.urls}});return}let u=B.sequence;if(console.log(u.name),console.log(`ID: ${u.id}`),lQ("URL",D?.urls.sequence),console.log(`Status: ${u.status}`),console.log(`Trigger: ${u.trigger??"Unknown"}`),console.log(`Created: ${XQ(u.createdAt)}`),console.log(`Enrichment: ${u.enrichmentStatus} (${u.enrichedCount}/${u.emailCount})`),u.emails.length>0){console.log("Emails:");for(let U of u.emails){let H=U.stepNumber!==null?`Step ${U.stepNumber}`:`Node ${U.nodeId}`;console.log(`- ${H}`),console.log(` Email ID: ${U.emailId??"None"}`),console.log(` Name: ${U.name??"None"}`),console.log(` Subject: ${U.subject??"None"}`),console.log(` Preview: ${U.previewText??"None"}`),console.log(` Blocks: ${U.blocks.length}`)}}}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}var g8=gB(aQ(),1);var hB=gB(lR(),1);function xo(A){let I=A.stats;return{sent:I.sent,delivered:I.delivered,opened:I.opened,clicked:I.clicked,unsubscribed:I.unsubscribed,openRate:I.openRate,clickRate:I.clickRate,steps:A.steps}}function lo({options:A}){let[I,B]=g8.useState(!0),[C,D]=g8.useState(""),[u,U]=g8.useState(null);if(g8.useEffect(()=>{async function z(){try{let y;if(A.campaign)y=await lI("GET",`/api/v1/metrics/campaigns/${A.campaign}`);else if(A.sequence)y=await lI("GET",`/api/v1/metrics/sequences/${A.sequence}`);else y=await lI("GET",`/api/v1/metrics?period=${A.period??"7d"}`);U(xo(y))}catch(y){D(UR(y instanceof cA?y:y))}finally{B(!1)}}z()},[A]),g8.useEffect(()=>{if(!I)setTimeout(()=>process.exit(C?1:0),100)},[I,C]),I)return hB.jsxDEV(KQ,{padding:1,children:[hB.jsxDEV(yB,{color:"cyan",children:hB.jsxDEV(tK,{type:"dots"},void 0,!1,void 0,this)},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:" Loading stats..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(C)return hB.jsxDEV(KQ,{padding:1,children:hB.jsxDEV(yB,{color:"red",children:[" ",C]},void 0,!0,void 0,this)},void 0,!1,void 0,this);if(!u)return hB.jsxDEV(KQ,{padding:1,children:hB.jsxDEV(yB,{dimColor:!0,children:"No stats available"},void 0,!1,void 0,this)},void 0,!1,void 0,this);let H=A.period??"7d",N=A.campaign?"Campaign Stats":A.sequence?"Sequence Stats":`Stats (${H})`,q=A.sequence&&u.steps?u.steps.filter((z)=>(z.failedCount??0)>0):[];return hB.jsxDEV(KQ,{flexDirection:"column",padding:1,children:[hB.jsxDEV(KQ,{marginBottom:1,children:hB.jsxDEV(yB,{bold:!0,color:"green",children:N},void 0,!1,void 0,this)},void 0,!1,void 0,this),hB.jsxDEV(KQ,{flexDirection:"column",children:[hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Sent: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.sent.toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Delivered: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.delivered.toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Opened: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.opened.toLocaleString()},void 0,!1,void 0,this),hB.jsxDEV(yB,{dimColor:!0,children:[" (",u.openRate.toFixed(1),"%)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Clicked: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.clicked.toLocaleString()},void 0,!1,void 0,this),hB.jsxDEV(yB,{dimColor:!0,children:[" (",u.clickRate.toFixed(1),"%)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),hB.jsxDEV(KQ,{children:[hB.jsxDEV(yB,{dimColor:!0,children:"Unsubscribed: "},void 0,!1,void 0,this),hB.jsxDEV(yB,{children:u.unsubscribed.toLocaleString()},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.length>0&&hB.jsxDEV(KQ,{flexDirection:"column",marginTop:1,children:[hB.jsxDEV(KQ,{marginBottom:1,children:hB.jsxDEV(yB,{bold:!0,children:"Step Failures"},void 0,!1,void 0,this)},void 0,!1,void 0,this),q.map((z)=>hB.jsxDEV(KQ,{flexDirection:"column",marginBottom:1,children:[hB.jsxDEV(yB,{children:["Step ",z.step,": ",z.subject??z.nodeId," (",z.failedCount," failed",")"]},void 0,!0,void 0,this),(z.failedSubscribers??[]).map((y)=>hB.jsxDEV(KQ,{marginLeft:2,children:hB.jsxDEV(yB,{children:["- ",y.email??y.subscriberId,":"," ",y.failedReason??"Reason unavailable"]},void 0,!0,void 0,this)},`${z.nodeId}-${y.subscriberId}`,!1,void 0,this)),(z.failedCount??0)>(z.failedSubscribers?.length??0)&&hB.jsxDEV(KQ,{marginLeft:2,children:hB.jsxDEV(yB,{dimColor:!0,children:["Showing first ",z.failedSubscribers?.length??0," of"," ",z.failedCount," failed subscribers"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},z.nodeId,!0,void 0,this))]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}async function Zj(A){if(!await sB())JB(QQ()),process.exit(1);xR(hB.jsxDEV(lo,{options:A},void 0,!1,void 0,this))}function Xj(A){if(!A)return[];return Array.isArray(A)?A:[A]}function io(A){let I={};for(let B of A??[]){let[C,...D]=B.split("="),u=D.join("=");if(C&&u)I[C]=u}return Object.keys(I).length>0?I:void 0}function mo(A){let I=new URLSearchParams;if(A.segment)I.set("segmentId",A.segment);let B=Xj(A.tag);if(B.length>0)I.set("tags",B.join(","));return I.set("page",String(A.page)),I.set("limit",String(A.pageSize)),I}async function co(A){let I=Bg(A.limit,"--limit"),B=Math.min(100,Math.max(1,I??100)),C=[],D=1,u=0,U=0,H=0;while(!0){let q=mo({segment:A.segment,tag:A.tag,page:D,pageSize:B}),z=await lI("GET",`/api/v1/subscribers?${q.toString()}`,void 0,A.company);u=z.pagination?.total??z.subscribers.length,U=z.pagination?.totalPages??1,H+=1,C.push(...z.subscribers??[]);let y=I!==void 0&&C.length>=I,X=z.pagination?D>=z.pagination.totalPages:(z.subscribers??[]).length<B;if(y||X)break;D+=1}let N=I!==void 0?C.slice(0,I):C;return{success:!0,subscribers:N,pagination:{page:1,limit:B,total:u,totalPages:U,fetchedPages:H},returned:N.length,truncated:I!==void 0&&u>0&&N.length<u}}function Sj(A){let I=[A.firstName,A.lastName].map((B)=>B?.trim()).filter((B)=>!!B);return I.length>0?I.join(" "):null}function no(A){let I=`${XQ(A.eventTime)} ${A.eventType}`;if(A.eventType==="custom"){let B=A.eventName??"unknown",C=A.properties&&Object.keys(A.properties).length>0?` ${JSON.stringify(A.properties)}`:"";return`${I} ${B}${C}`}if(A.clickedUrl)return`${I} ${A.clickedUrl}`;if(A.bounceType)return`${I} ${A.bounceType}`;if(A.campaignId)return`${I} campaign:${A.campaignId}`;return I}function po(A){if(A.subscribers.length===0){console.log("No subscribers found");return}console.log(`Subscribers (${A.returned})`),console.log(A.truncated?`Showing ${A.returned} of ${A.pagination.total} matching subscribers.`:`Fetched ${A.returned} matching subscribers across ${A.pagination.fetchedPages} page(s).`);for(let I of A.subscribers){console.log(`- ${I.email} [${I.status}]`);let B=Sj(I);if(B)console.log(` Name: ${B}`);if(I.tags.length>0)console.log(` Tags: ${I.tags.join(", ")}`);if(I.emailProvider)console.log(` Email provider: ${I.emailProvider}`);console.log(` Created: ${XQ(I.createdAt)}`)}}function so(A){console.log(`Subscriber: ${A.email}`),console.log(`Status: ${A.status}`);let I=Sj(A);if(I)console.log(`Name: ${I}`);if(console.log(`ID: ${A.id}`),console.log(`Created: ${XQ(A.createdAt)}`),console.log(`Updated: ${XQ(A.updatedAt)}`),console.log(`Email provider: ${A.emailProvider??"None"}`),console.log(`Tags: ${A.tags.length>0?A.tags.join(", "):"None"}`),console.log("Lists:"),(A.lists?.length??0)===0)console.log(" None");else for(let B of A.lists??[])console.log(` - ${B.name}${B.unsubscribedAt?" [inactive]":" [active]"}`),console.log(` Joined: ${XQ(B.subscribedAt)}${B.unsubscribedAt?` | Unsubscribed: ${XQ(B.unsubscribedAt)}`:""}`);if(console.log("Sequence Enrollments:"),(A.sequenceEnrollments?.length??0)===0)console.log(" None");else for(let B of A.sequenceEnrollments??[])if(console.log(` - ${B.sequenceName} [${B.enrollmentStatus}]`),console.log(` Sequence ID: ${B.sequenceId} | Status: ${B.sequenceStatus}`),console.log(` Current node: ${B.currentNodeLabel??B.currentNodeType??"Unknown"}`),console.log(` Entered: ${XQ(B.enteredAt)} | Updated: ${XQ(B.updatedAt)}`),B.scheduledFor)console.log(` Scheduled: ${XQ(B.scheduledFor)}`);if(console.log("Email Stats:"),!A.emailStats)console.log(" None");else console.log(` Sent ${A.emailStats.sent}, delivered ${A.emailStats.delivered}, opened ${A.emailStats.opened}, clicked ${A.emailStats.clicked}, bounced ${A.emailStats.bounced}, unsubscribed ${A.emailStats.unsubscribed}, complained ${A.emailStats.complained}`);if(console.log("Recent Activity:"),(A.activity?.length??0)===0)console.log(" None");else for(let B of A.activity??[])console.log(` - ${no(B)}`);if(console.log("Custom Attributes:"),!A.customAttributes||Object.keys(A.customAttributes).length===0)console.log(" None");else console.log(JSON.stringify(A.customAttributes,null,2))}async function ro(A){let I=await co(A);if(A.json){RB(I);return}po(I)}async function ao(A){let I=Su(A.email,"email"),B=await lI("POST","/api/v1/subscribers",{email:I,tags:Xj(A.tag),customAttributes:io(A.attr)},A.company);if(A.json){RB(B);return}console.log(`Added subscriber: ${I}`)}async function to(A){let I=Su(A.email,"email"),B=await lI("GET",`/api/v1/subscribers/${encodeURIComponent(I)}`,void 0,A.company);if(A.json){RB(B);return}so(B.subscriber)}async function oo(A){let I=Su(A.email,"email");if(A.hard){let C=await lI("DELETE",`/api/v1/subscribers/${encodeURIComponent(I)}`,void 0,A.company);if(A.json){RB(C);return}console.log(`Deleted subscriber: ${I}`);return}let B=await lI("PATCH",`/api/v1/subscribers/${encodeURIComponent(I)}`,{status:"unsubscribed"},A.company);if(A.json){RB(B);return}console.log(`Unsubscribed: ${I}`)}async function iR(A,I){if(!await sB())JB(QQ()),process.exit(1);try{switch(A){case"list":await ro(I);return;case"add":await ao(I);return;case"get":await to(I);return;case"remove":await oo(I);return}}catch(B){let C=B instanceof cA?B:new cA(B instanceof Error?B.message:"Unknown error",500);JB(C),process.exit(1)}}async function zj(A){if(!await sB())JB(QQ()),process.exit(1);try{let I=await lI("GET","/api/v1/tags",void 0,A.company);if(A.json){RB(I);return}console.log(`Tags (${I.tags.length})`);for(let B of I.tags){let C=B.isSystem?" [system]":"";console.log(`- ${B.name} [${B.id}]${C}`),console.log(` Color: ${B.color??"Default"}`)}}catch(I){JB(I instanceof cA?I:I),process.exit(1)}}function $j(A){if(A.length===0)return"none";return A.map((I)=>`${I.locale}:${I.status}`).join(", ")}function eo(A,I){if(A.name===void 0&&A.subject===void 0&&I.html===void 0&&I.blocks===void 0)throw new cA("Provide at least one of: --name, --subject, --html, --html-file, --blocks-json, --blocks-file",400);return{name:A.name,subject:A.subject,html:I.html,blocks:I.blocks}}async function hJ(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let U=await lI("GET","/api/v1/templates",void 0,I.company),H=pQ({companyId:U.companyId}),N=U.templates.map((q)=>HJ(q,{emailId:q.id},"email",U.companyId));if(I.json){RB({...U,templates:N,appUrls:H.urls});return}if(console.log(`Templates (${U.templates.length})`),U.emailLocalizationConfig)console.log(`Primary locale: ${U.emailLocalizationConfig.primaryLocale}`);for(let q of N)console.log(`- ${q.name} [${q.id}]`),console.log(` Subject: ${q.subject}`),lQ(" URL",q.url),console.log(` Localizations: ${$j(q.localizations)}`);return}let B=AK({html:I.html,htmlFile:I.htmlFile,blocksJson:I.blocksJson,blocksFile:I.blocksFile,...A==="create"?{required:!0,requiredMessage:"Provide either --html/--html-file or --blocks-json/--blocks-file"}:{}});if(A==="create"){if(!I.name)throw new cA("Template name is required",400);if(!I.subject)throw new cA("Template subject is required",400);let U=await lI("POST","/api/v1/templates",{name:I.name,subject:I.subject,html:B.html,blocks:B.blocks},I.company),H=await UD(I.company),N=U.template?.id??U.templateId,q=H!==void 0&&N!==void 0?pQ({companyId:H,emailId:N}):void 0;if(I.json){RB({...U,...U.template!==void 0&&q?.urls.email!==void 0&&{template:{...U.template,url:q.urls.email}},...q!==void 0&&{appUrls:q.urls}});return}console.log(`Created template: ${U.template?.name??I.name}`),console.log(`ID: ${U.template?.id??"Unknown"}`),lQ("URL",q?.urls.email),console.log(`Subject: ${U.template?.subject??I.subject??"Unknown"}`);return}if(!I.id)throw new cA("Template ID is required",400);if(A==="update"){let U=await lI("PUT",`/api/v1/templates/${I.id}`,eo(I,B),I.company),H=await UD(I.company),N=H!==void 0?pQ({companyId:H,emailId:I.id}):void 0;if(I.json){RB({...U,...U.template!==void 0&&N?.urls.email!==void 0&&{template:{...U.template,url:N.urls.email}},...N!==void 0&&{appUrls:N.urls}});return}console.log(`Updated template: ${U.template?.name??I.id}`),console.log(`ID: ${U.template?.id??I.id}`),lQ("URL",N?.urls.email),console.log(`Subject: ${U.template?.subject??"Unchanged"}`);return}if(A==="delete"){let U=await lI("DELETE",`/api/v1/templates/${I.id}`,void 0,I.company);if(I.json){RB(U);return}console.log(U.message??`Deleted template: ${I.id}`);return}let C=await lI("GET",`/api/v1/templates/${I.id}`,void 0,I.company),D=pQ({companyId:C.template.companyId,emailId:I.id});if(I.json){RB({...C,template:{...C.template,url:D.urls.email},appUrls:D.urls});return}let u=C.template;console.log(u.name),console.log(`ID: ${u.id}`),console.log(`Company: ${u.companyId}`),lQ("URL",D.urls.email),console.log(`Subject: ${u.subject}`),console.log(`Preview: ${u.previewText??"None"}`),console.log(`Blocks: ${u.blocks.length}`),console.log(`Font: ${u.fontFamily??"Default"}`),console.log(`Created: ${XQ(u.createdAt)}`),console.log(`Updated: ${XQ(u.updatedAt)}`),console.log(`Localizations: ${$j(u.localizations)}`);for(let U of u.localizations){let H=U.lastError?` | error: ${U.lastError}`:"";console.log(`- ${U.locale} [${U.status}] blocks=${U.blocks.length}${H}`)}}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}async function mR(A,I){if(!await sB())JB(QQ()),process.exit(1);try{if(A==="list"){let U=await lI("GET","/api/v1/websites",void 0,I.company);if(I.json){RB(U);return}console.log(`Websites (${U.websites.length})`);for(let H of U.websites)console.log(`- ${H.domain}`),console.log(` Status: ${H.status}`),console.log(` Created: ${XQ(H.createdAt)}`);return}if(A==="guide"){let U=await lI("POST","/api/v1/integration-guide",{framework:I.framework,use_case:I.useCase});if(I.json){RB(U);return}if(console.log(`Integration guide: ${U.framework} / ${U.use_case}`),console.log(""),console.log(U.code),U.tip)console.log(""),console.log(`Tip: ${U.tip}`);return}if(!I.domain)throw new cA("Domain is required",400);let B=A==="add"?"POST":"GET",C=A==="add"?"/api/v1/websites":`/api/v1/websites/${encodeURIComponent(I.domain)}`,D=A==="add"?{domain:I.domain}:void 0,u=await lI(B,C,D,I.company);if(I.json){RB(u);return}if(console.log(u.website.domain),console.log(`Status: ${u.website.status}`),u.website.createdAt)console.log(`Created: ${XQ(u.website.createdAt)}`);if(u.website.message)console.log(u.website.message);if(u.website.dnsRecords!==void 0)console.log("DNS Records:"),RB(u.website.dnsRecords)}catch(B){JB(B instanceof cA?B:B),process.exit(1)}}async function Wj(){if(!await sB()){JB(QQ());return}let A=e2();console.log(`Email: ${A.userEmail??"Unknown"}`),console.log(`User ID: ${A.userId??"Unknown"}`),console.log(""),console.log("Your API key can access all companies you belong to."),console.log("Use `sequenzy account` to see available companies.")}function Oj(A,I){if(I.length===0)return"";return`
303
303
  ${A}:
304
304
  ${I.map((B)=>` ${B}`).join(`
305
305
  `)}
@@ -320,4 +320,4 @@ ${Vj}Quick Start${KD}
320
320
  ${KF}$${KD} sequenzy websites guide --framework nextjs --use-case transactional`,U=`
321
321
  ${Vj}Notes${KD}
322
322
  ${KF}Generated content should be reviewed before sending.${KD}
323
- ${KF}Use 'sequenzy --help' and '<command> --help' for detailed examples and caveats.${KD}`;console.log(B),console.log(C),console.log(),console.log(D),console.log(u),console.log(U),console.log()}var sE=new AZ;sE.name("sequenzy").description("Sequenzy CLI - Email marketing from the terminal").version(yj).showHelpAfterError().showSuggestionAfterError().action(()=>{Ee()});rI(sE,{notes:["Use --json on data commands when another tool or agent should parse structured output.","Dashboard-aware JSON responses include appUrls when a company ID can be resolved.","Company-scoped commands accept --company for personal API keys that can access multiple companies.","Content commands prefer file flags such as --html-file, --blocks-file, --steps-file, and --emails-file to avoid shell escaping issues.","Sequence creation supports --goal for AI generation or explicit step JSON."],examples:['sequenzy templates create welcome --subject "Welcome" --html-file ./welcome.html','sequenzy campaigns update camp_123 --subject "Updated subject" --html-file ./campaign.html',"sequenzy sequences create onboarding --trigger contact_added --list-id list_123 --steps-file ./steps.json","sequenzy urls --company comp_123 --sequence seq_123 --settings-tab integrations","sequenzy websites guide --framework nextjs --use-case transactional",'sequenzy api-keys create --name "CI deploy key" --company comp_123']});var Ce=sE.command("login").description("Log in to your Sequenzy account").action(eW);rI(Ce,{notes:["Starts device authentication and prints a verification URL plus approval code."],examples:["sequenzy login"]});var De=sE.command("logout").description("Log out of your Sequenzy account").action(AO);rI(De,{examples:["sequenzy logout"]});var ge=sE.command("whoami").description("Show the locally stored Sequenzy identity").action(Wj);rI(ge,{notes:["This confirms local CLI auth state. Use 'sequenzy account' when you need company access details too."],examples:["sequenzy whoami"]});var Fe=sE.command("stats").description("Show account, campaign, or sequence metrics").option("-p, --period <period>","Time period (7d, 30d, 90d)","7d").option("--campaign <id>","Get stats for a specific campaign").option("--sequence <id>","Get stats for a specific sequence").action(Zj);rI(Fe,{notes:["Use exactly one of: account-level period, --campaign, or --sequence.","Sequence stats include per-step failures when the API reports them."],examples:["sequenzy stats","sequenzy stats --period 30d","sequenzy stats --campaign camp_123","sequenzy stats --sequence seq_123"]});var Ge=sE.command("urls").description("Generate Sequenzy dashboard URLs for known resource IDs").option("-c, --company <id>","Company ID").option("--campaign <id>","Campaign ID for campaign editor URL").option("--sequence <id>","Sequence ID for sequence editor URL").option("--template <id>","Template/email ID for email editor URL").option("--email <id>","Email ID for email editor URL").option("--transactional <id>","Transactional email ID").option("--domain <id>","Sending domain ID").option("--status <status>","Status for campaign/sequence list URLs").option("--settings-tab <tab>","Settings tab slug, e.g. integrations").option("--json","Print JSON").action(nW);rI(Ge,{notes:["Uses SEQUENZY_APP_URL when set, otherwise https://sequenzy.com.","If --company is omitted, the CLI tries the current company from `sequenzy account`.","Useful after creating a campaign or sequence when the user wants a review/edit link."],examples:["sequenzy urls --company comp_123","sequenzy urls --company comp_123 --sequence seq_123","sequenzy urls --company comp_123 --campaign camp_123","sequenzy urls --company comp_123 --settings-tab integrations","sequenzy urls --company comp_123 --json"]});var xJ=sE.command("subscribers").description("Manage subscribers").action(()=>xJ.help());rI(xJ,{notes:["Subscriber list fetches every page by default so agents do not silently miss later results.","`subscribers get` includes tags, list memberships, sequence enrollments, email stats, and recent activity.","--attr expects repeated key=value pairs. Example: --attr firstName=Ana --attr plan=pro"],examples:["sequenzy subscribers list --tag vip","sequenzy subscribers list --tag vip --limit 25 --json","sequenzy subscribers add user@example.com --tag trial --attr firstName=Ana","sequenzy subscribers get user@example.com --json","sequenzy subscribers remove user@example.com --hard"]});var ue=xJ.command("list").description("List subscribers").option("-s, --segment <id>","Filter by segment").option("-t, --tag <tag>","Filter by tag").option("-l, --limit <number>","Maximum results to return").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>iR("list",A));rI(ue,{examples:["sequenzy subscribers list","sequenzy subscribers list --segment seg_123","sequenzy subscribers list --tag onboarding --limit 100"]});var we=xJ.command("add <email>").description("Add or upsert a subscriber").option("-t, --tag <tags...>","Tags to apply").option("-a, --attr <attrs...>","Attributes (key=value)").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>iR("add",{email:A,...I}));rI(we,{examples:["sequenzy subscribers add user@example.com","sequenzy subscribers add user@example.com --tag trial --attr firstName=Ana"]});var Je=xJ.command("get <email>").description("Get subscriber details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>iR("get",{email:A,...I}));rI(Je,{examples:["sequenzy subscribers get user@example.com"]});var He=xJ.command("remove <email>").description("Unsubscribe or permanently delete a subscriber").option("--hard","Permanently delete (not just unsubscribe)").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>iR("remove",{email:A,...I}));rI(He,{examples:["sequenzy subscribers remove user@example.com","sequenzy subscribers remove user@example.com --hard"]});var Ue=sE.command("send <email>").description("Send a transactional email").option("-t, --template <id>","Template ID to use").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("-v, --var <vars...>","Variables (key=value)").action(qj);rI(Ue,{notes:["Use either --template or --html/--html-file.","--subject is required when sending raw HTML."],examples:["sequenzy send user@example.com --template tmpl_123 --var firstName=Ana",'sequenzy send user@example.com --subject "Welcome" --html-file ./welcome.html']});var F8=sE.command("campaigns").description("Manage campaigns").action(()=>F8.help());rI(F8,{notes:["Campaign creation supports HTML, Sequenzy blocks, or prompt-generated content.","Campaign updates support HTML, Sequenzy blocks, subject, name, and reply-to changes.","Only draft campaigns can be updated through this API path."],examples:["sequenzy campaigns list --status draft --company comp_123",'sequenzy campaigns create "April Launch" --subject "We shipped" --html-file ./campaign.html',"sequenzy campaigns test camp_123 --to you@example.com"]});var Re=F8.command("list").description("List campaigns").option("-s, --status <status>","Filter by status").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>UJ("list",A));rI(Re,{examples:["sequenzy campaigns list","sequenzy campaigns list --status draft --company comp_123"]});var Ke=F8.command("get <id>").description("Get campaign details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("get",{id:A,...I}));rI(Ke,{examples:["sequenzy campaigns get camp_123 --company comp_123"]});var Me=F8.command("create <name>").description("Create a draft campaign").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("--prompt <prompt>","Generate campaign blocks from a prompt").option("--style <style>","Prompt generation style: minimal, branded, promotional").option("--tone <tone>","Prompt generation tone: professional, casual, friendly").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("create",{name:A,...I}));rI(Me,{notes:["--subject is required unless --prompt is provided. With --prompt, the generated subject is used unless --subject is also provided.","Use --blocks-json or --blocks-file when you need editor-compatible blocks, including conditional content.","Do not combine prompt, HTML flags, and blocks flags in the same request."],examples:['sequenzy campaigns create "April Launch" --prompt "Announce our new analytics dashboard"','sequenzy campaigns create "April Launch" --subject "We shipped" --html-file ./campaign.html','sequenzy campaigns create "Segmented Launch" --subject "We shipped" --blocks-file ./campaign-blocks.json']});var Ne=F8.command("update <id>").description("Update a draft campaign").option("-n, --name <name>","Campaign name").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("--reply-to <email>","Set reply-to using an existing reply profile email").option("--reply-profile <id>","Set reply-to using a reply profile ID").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("update",{id:A,...I}));rI(Ne,{notes:["Provide at least one of --name, --subject, --html, --html-file, --blocks-json, --blocks-file, --reply-to, or --reply-profile.","Use --blocks-json or --blocks-file when you need editor-compatible blocks, including conditional content.","Do not combine HTML flags with blocks flags in the same request.","Use either --reply-to or --reply-profile, not both."],examples:['sequenzy campaigns update camp_123 --subject "Updated subject"',"sequenzy campaigns update camp_123 --html-file ./campaign-v2.html","sequenzy campaigns update camp_123 --blocks-file ./campaign-v2-blocks.json","sequenzy campaigns update camp_123 --reply-to support@example.com"]});var qe=F8.command("test <id>").description("Send a test email for a campaign").requiredOption("--to <email>","Recipient email for the test").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("test",{id:A,...I}));rI(qe,{examples:["sequenzy campaigns test camp_123 --to you@example.com"]});var RG=sE.command("sequences").description("Manage email sequences").action(()=>RG.help());rI(RG,{notes:["The CLI supports both AI goal-based sequence creation and explicit-step creation.","Trigger-specific options depend on --trigger. For example: contact_added needs --list-id, tag_added needs --tag-name, inactivity needs --event-name and --inactive-days.","Use --goal for AI generation, or --steps-file / --emails-file with JSON arrays that match the API step objects."],examples:["sequenzy sequences list --company comp_123",'sequenzy sequences create onboarding --trigger event_received --event-name signup.completed --goal "Guide new users to activation"',"sequenzy sequences create onboarding --trigger contact_added --list-id list_123 --steps-file ./steps.json","sequenzy sequences update seq_123 --steps-file ./sequence-updates.json","sequenzy sequences enable seq_123"]});var Le=RG.command("list").description("List sequences").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>ju("list",A));rI(Le,{examples:["sequenzy sequences list --company comp_123"]});var Ye=RG.command("get <id>").description("Get sequence details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("get",{id:A,...I}));rI(Ye,{examples:["sequenzy sequences get seq_123 --company comp_123"]});var Ze=RG.command("create <name>").description("Create a sequence from AI goal input or explicit step content").requiredOption("-t, --trigger <trigger>","Sequence trigger type").option("-g, --goal <goal>","AI generation goal for the sequence").option("--email-count <count>","Number of AI-generated emails when using --goal (1-10)").option("--list-id <id>","List ID for contact_added triggers").option("--tag-name <name>","Tag name for tag_added triggers").option("--segment-id <id>","Segment ID for segment_entered triggers").option("--event-name <name>","Event name for event_received, inactivity, and frequency triggers").option("--inactive-days <days>","Days of inactivity for inactivity triggers").option("--min-count <count>","Minimum event count for frequency triggers").option("--time-window-days <days>","Time window for frequency triggers").option("--steps-json <json>","Inline JSON array of sequence steps").option("--steps-file <file>","Path to a JSON file with sequence steps").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("create",{name:A,...I}));rI(Ze,{notes:["Provide either --goal for AI generation or --steps-json/--steps-file for explicit content, but not both.","A step object typically includes subject plus either html or blocks. Optional fields include name, previewText, and delay.","Prefer --steps-file for anything non-trivial. The CLI passes the JSON through to the API."],examples:['sequenzy sequences create onboarding --trigger event_received --event-name signup.completed --goal "Guide new users to activation" --email-count 4',"sequenzy sequences create onboarding --trigger contact_added --list-id list_123 --steps-file ./steps.json","sequenzy sequences create rescue --trigger inactivity --event-name login --inactive-days 14 --steps-file ./steps.json"]});var Xe=RG.command("update <id>").description("Update sequence name or email step content").option("-n, --name <name>","Sequence name").option("--steps-json <json>","Inline JSON array of step updates").option("--steps-file <file>","Path to a JSON file with step updates").option("--emails-json <json>","Inline JSON array of email updates").option("--emails-file <file>","Path to a JSON file with email updates").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("update",{id:A,...I}));rI(Xe,{notes:["Use either the steps form or the emails form, not both.","Each update entry can target a step by nodeId, emailId, or by array order."],examples:['sequenzy sequences update seq_123 --name "User Onboarding"',"sequenzy sequences update seq_123 --steps-file ./sequence-updates.json"]});var Se=RG.command("enable <id>").description("Enable a sequence").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("enable",{id:A,...I}));rI(Se,{examples:["sequenzy sequences enable seq_123"]});var ze=RG.command("disable <id>").description("Disable a sequence").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("disable",{id:A,...I}));rI(ze,{examples:["sequenzy sequences disable seq_123"]});var $e=RG.command("delete <id>").description("Delete a sequence").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("delete",{id:A,...I}));rI($e,{examples:["sequenzy sequences delete seq_123"]});var G8=sE.command("templates").description("Manage email templates").action(()=>G8.help());rI(G8,{notes:["Template content can be provided as raw HTML or as Sequenzy blocks JSON.","Use blocks when you need conditional content or an exact editor-compatible structure."],examples:["sequenzy templates list --company comp_123",'sequenzy templates create welcome --subject "Welcome" --html-file ./welcome.html','sequenzy templates create welcome --subject "Welcome" --blocks-file ./welcome-blocks.json','sequenzy templates update tmpl_123 --subject "Updated" --html-file ./welcome-v2.html']});var We=G8.command("list").description("List all templates").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>hJ("list",A));rI(We,{examples:["sequenzy templates list --company comp_123"]});var Oe=G8.command("get <id>").description("Get template details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("get",{id:A,...I}));rI(Oe,{examples:["sequenzy templates get tmpl_123 --company comp_123"]});var Ve=G8.command("create <name>").description("Create a template").requiredOption("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("create",{name:A,...I}));rI(Ve,{notes:["Provide either HTML or blocks JSON content.","Use blocks when you need conditional content or exact editor parity."],examples:['sequenzy templates create welcome --subject "Welcome" --html-file ./welcome.html','sequenzy templates create welcome --subject "Welcome" --blocks-file ./welcome-blocks.json']});var ye=G8.command("update <id>").description("Update a template").option("-n, --name <name>","Template name").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("update",{id:A,...I}));rI(ye,{notes:["Provide at least one of --name, --subject, --html, --html-file, --blocks-json, or --blocks-file.","Do not combine HTML flags with blocks flags in the same request."],examples:['sequenzy templates update tmpl_123 --subject "Updated"',"sequenzy templates update tmpl_123 --html-file ./welcome-v2.html","sequenzy templates update tmpl_123 --blocks-file ./welcome-v2-blocks.json"]});var je=G8.command("delete <id>").description("Delete a template").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("delete",{id:A,...I}));rI(je,{notes:["Deletion fails when the template is still referenced by a campaign or sequence."],examples:["sequenzy templates delete tmpl_123"]});var cR=sE.command("companies").description("Inspect or create companies").action(()=>cR.help());rI(cR,{notes:["Company creation starts background website processing automatically."],examples:["sequenzy companies list","sequenzy companies get comp_123","sequenzy companies create example.com --name Example"]});var Pe=cR.command("list").description("List accessible companies").option("--json","Print raw JSON").action((A)=>IK("list",A));rI(Pe,{examples:["sequenzy companies list"]});var fe=cR.command("get <id>").description("Get company details").option("--json","Print raw JSON").action((A,I)=>IK("get",{id:A,...I}));rI(fe,{examples:["sequenzy companies get comp_123"]});var Te=cR.command("create <domain>").description("Create a company and queue website processing").option("-n, --name <name>","Company name").option("--json","Print raw JSON").action((A,I)=>IK("create",{domain:A,...I}));rI(Te,{examples:["sequenzy companies create example.com","sequenzy companies create https://example.com --name Example"]});var ke=sE.command("tags").description("List tag definitions").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action(zj);rI(ke,{examples:["sequenzy tags --company comp_123"]});var oK=sE.command("lists").description("Manage subscriber lists").action(()=>oK.help());rI(oK,{examples:["sequenzy lists list --company comp_123",'sequenzy lists create Newsletter --description "Public newsletter list"']});var be=oK.command("list").description("List subscriber lists").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>QL("list",A));rI(be,{examples:["sequenzy lists list --company comp_123"]});var _e=oK.command("create <name>").description("Create a subscriber list").option("-d, --description <text>","List description").option("--private","Mark the list as private").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>QL("create",{name:A,...I}));rI(_e,{examples:['sequenzy lists create Newsletter --description "Public newsletter list"',"sequenzy lists create VIP --private --company comp_123"]});var nR=sE.command("segments").description("Manage segments").action(()=>nR.help());rI(nR,{notes:["Use --filter-json for arbitrary segment filters. The CLI will fill in missing filter IDs.","Use --match any to create a segment that matches any filter instead of all filters.",'Engagement filters (emailSent, emailOpened, emailClicked, emailBounced, emailComplained) accept either a time range as the value ("7d", "30d", "90d", "180d", "all") OR a specific campaign ("campaign:<campaign_id>"). Combine multiple engagement filters with --match all to build things like "bounced campaign A but not campaign B".'],examples:["sequenzy segments list --company comp_123",'sequenzy segments create --name "Bought Pro" --stripe-product prod_pro',`sequenzy segments create --name "VIP or Churn Risk" --match any --filter-json '[{"field":"tag","operator":"contains","value":"vip"},{"field":"emailOpened","operator":"is_not","value":"30d"}]'`,`sequenzy segments create --name "Bounced A not B" --filter-json '[{"field":"emailBounced","operator":"is","value":"campaign:cmp_abc"},{"field":"emailBounced","operator":"is_not","value":"campaign:cmp_xyz"}]'`]});var ve=nR.command("list").description("List all segments").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>QK("list",A));rI(ve,{examples:["sequenzy segments list --company comp_123"]});var he=nR.command("create").description("Create a segment").requiredOption("-n, --name <name>","Segment name").option("-c, --company <id>","Company ID override for personal API keys").option("--match <mode>","How filters combine: all or any","all").option("--stripe-product <id>","Stripe product ID to segment on").option("--purchase-operator <operator>","Stripe purchase operator (bought, didnt-buy, at-least, less-than)","bought").option("--payments <number>","Payment threshold for at-least/less-than").option("--filter-json <json>","Raw JSON array of segment filters (IDs are optional)").option("--json","Print raw JSON").action((A)=>QK("create",A));rI(he,{examples:['sequenzy segments create --name "Bought Pro" --stripe-product prod_pro','sequenzy segments create --name "3+ Pro Payments" --stripe-product prod_pro --purchase-operator at-least --payments 3',`sequenzy segments create --name "VIP or Churn Risk" --match any --filter-json '[{"field":"tag","operator":"contains","value":"vip"},{"field":"emailOpened","operator":"is_not","value":"30d"}]'`,`sequenzy segments create --name "Bounced A not B" --filter-json '[{"field":"emailBounced","operator":"is","value":"campaign:cmp_abc"},{"field":"emailBounced","operator":"is_not","value":"campaign:cmp_xyz"}]'`]});var xe=nR.command("count <id>").description("Get subscriber count for a segment").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>QK("count",{id:A,...I}));rI(xe,{examples:["sequenzy segments count seg_123 --company comp_123"]});var le=sE.command("account").description("Show account info").option("--json","Print raw JSON").action(dW);rI(le,{examples:["sequenzy account","sequenzy account --json"]});var MY=sE.command("api-keys").description("Create company API keys").action(()=>MY.help());rI(MY,{notes:["The plain API key is only returned on creation. Save it immediately."],examples:["sequenzy api-keys create",'sequenzy api-keys create --name "CI deploy key" --company comp_123']});var ie=MY.command("create").description("Create a company API key").option("-n, --name <name>","Human-readable API key name").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>pW("create",A));rI(ie,{examples:["sequenzy api-keys create",'sequenzy api-keys create --name "CI deploy key" --company comp_123']});var lJ=sE.command("websites").description("Manage sending domains and integration guides").action(()=>lJ.help());rI(lJ,{notes:["Use 'guide' for code examples and 'check' to inspect current DNS verification details."],examples:["sequenzy websites list --company comp_123","sequenzy websites add example.com --company comp_123","sequenzy websites guide --framework nextjs --use-case transactional"]});var me=lJ.command("list").description("List sending domains for a company").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>mR("list",A));rI(me,{examples:["sequenzy websites list --company comp_123"]});var ce=lJ.command("add <domain>").description("Add a sending domain").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>mR("add",{domain:A,...I}));rI(ce,{examples:["sequenzy websites add example.com --company comp_123"]});var ne=lJ.command("check <domain>").description("Inspect sending domain verification details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>mR("check",{domain:A,...I}));rI(ne,{examples:["sequenzy websites check example.com --company comp_123"]});var de=lJ.command("guide").description("Print framework-specific integration code").option("--framework <name>","Framework name, e.g. nextjs, express, python").option("--use-case <name>","Use case, e.g. transactional, subscribe_form, event_tracking").option("--json","Print raw JSON").action((A)=>mR("guide",A));rI(de,{examples:["sequenzy websites guide","sequenzy websites guide --framework nextjs --use-case transactional","sequenzy websites guide --framework python --use-case event_tracking"]});var dR=sE.command("generate").description("Generate email content with AI").action(()=>dR.help());rI(dR,{notes:["Generated content is returned as draft content. Review it before sending.","Use --json when another tool or agent should parse the generated output."],examples:['sequenzy generate email "Welcome a new user to our analytics product"','sequenzy generate sequence "Onboard a new workspace admin" --count 4 --days 14','sequenzy generate subjects "April product launch" --count 8']});dR.command("email <prompt>").description("Generate email blocks from a prompt").option("-s, --style <style>","Style: minimal, branded, promotional").option("-t, --tone <tone>","Tone: professional, casual, friendly").option("--company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>BK("email",{prompt:A,...I}));dR.command("sequence <goal>").description("Generate email sequence content from a goal").option("-c, --count <number>","Number of emails (1-10)","5").option("-d, --days <number>","Duration in days","14").option("--company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>BK("sequence",{goal:A,...I}));dR.command("subjects <topic>").description("Generate A/B subject line variants").option("-c, --count <number>","Number of variants","5").option("--company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>BK("subjects",{topic:A,...I}));sE.parse();
323
+ ${KF}Use 'sequenzy --help' and '<command> --help' for detailed examples and caveats.${KD}`;console.log(B),console.log(C),console.log(),console.log(D),console.log(u),console.log(U),console.log()}var sE=new AZ;sE.name("sequenzy").description("Sequenzy CLI - Email marketing from the terminal").version(yj).showHelpAfterError().showSuggestionAfterError().action(()=>{Ee()});rI(sE,{notes:["Use --json on data commands when another tool or agent should parse structured output.","Dashboard-aware JSON responses include appUrls when a company ID can be resolved.","Company-scoped commands accept --company for personal API keys that can access multiple companies.","Content commands prefer file flags such as --html-file, --blocks-file, --steps-file, and --emails-file to avoid shell escaping issues.","Sequence creation supports --goal for AI generation or explicit step JSON."],examples:['sequenzy templates create welcome --subject "Welcome" --html-file ./welcome.html','sequenzy campaigns update camp_123 --subject "Updated subject" --html-file ./campaign.html',"sequenzy sequences create onboarding --trigger contact_added --list-id list_123 --steps-file ./steps.json","sequenzy urls --company comp_123 --sequence seq_123 --settings-tab integrations","sequenzy websites guide --framework nextjs --use-case transactional",'sequenzy api-keys create --name "CI deploy key" --company comp_123']});var Ce=sE.command("login").description("Log in to your Sequenzy account").action(eW);rI(Ce,{notes:["Starts device authentication and prints a verification URL plus approval code."],examples:["sequenzy login"]});var De=sE.command("logout").description("Log out of your Sequenzy account").action(AO);rI(De,{examples:["sequenzy logout"]});var ge=sE.command("whoami").description("Show the locally stored Sequenzy identity").action(Wj);rI(ge,{notes:["This confirms local CLI auth state. Use 'sequenzy account' when you need company access details too."],examples:["sequenzy whoami"]});var Fe=sE.command("stats").description("Show account, campaign, or sequence metrics").option("-p, --period <period>","Time period (7d, 30d, 90d)","7d").option("--campaign <id>","Get stats for a specific campaign").option("--sequence <id>","Get stats for a specific sequence").action(Zj);rI(Fe,{notes:["Use exactly one of: account-level period, --campaign, or --sequence.","Sequence stats include per-step failures when the API reports them."],examples:["sequenzy stats","sequenzy stats --period 30d","sequenzy stats --campaign camp_123","sequenzy stats --sequence seq_123"]});var Ge=sE.command("urls").description("Generate Sequenzy dashboard URLs for known resource IDs").option("-c, --company <id>","Company ID").option("--campaign <id>","Campaign ID for campaign editor URL").option("--sequence <id>","Sequence ID for sequence editor URL").option("--template <id>","Template/email ID for email editor URL").option("--email <id>","Email ID for email editor URL").option("--transactional <id>","Transactional email ID").option("--domain <id>","Sending domain ID").option("--status <status>","Status for campaign/sequence list URLs").option("--settings-tab <tab>","Settings tab slug, e.g. integrations").option("--json","Print JSON").action(nW);rI(Ge,{notes:["Uses SEQUENZY_APP_URL when set, otherwise https://sequenzy.com.","If --company is omitted, the CLI tries the current company from `sequenzy account`.","Useful after creating a campaign or sequence when the user wants a review/edit link."],examples:["sequenzy urls --company comp_123","sequenzy urls --company comp_123 --sequence seq_123","sequenzy urls --company comp_123 --campaign camp_123","sequenzy urls --company comp_123 --settings-tab integrations","sequenzy urls --company comp_123 --json"]});var xJ=sE.command("subscribers").description("Manage subscribers").action(()=>xJ.help());rI(xJ,{notes:["Subscriber list fetches every page by default so agents do not silently miss later results.","`subscribers get` includes tags, list memberships, sequence enrollments, email stats, and recent activity.","--attr expects repeated key=value pairs. Example: --attr firstName=Ana --attr plan=pro"],examples:["sequenzy subscribers list --tag vip","sequenzy subscribers list --tag vip --limit 25 --json","sequenzy subscribers add user@example.com --tag trial --attr firstName=Ana","sequenzy subscribers get user@example.com --json","sequenzy subscribers remove user@example.com --hard"]});var ue=xJ.command("list").description("List subscribers").option("-s, --segment <id>","Filter by segment").option("-t, --tag <tag>","Filter by tag").option("-l, --limit <number>","Maximum results to return").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>iR("list",A));rI(ue,{examples:["sequenzy subscribers list","sequenzy subscribers list --segment seg_123","sequenzy subscribers list --tag onboarding --limit 100"]});var we=xJ.command("add <email>").description("Add or upsert a subscriber").option("-t, --tag <tags...>","Tags to apply").option("-a, --attr <attrs...>","Attributes (key=value)").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>iR("add",{email:A,...I}));rI(we,{examples:["sequenzy subscribers add user@example.com","sequenzy subscribers add user@example.com --tag trial --attr firstName=Ana"]});var Je=xJ.command("get <email>").description("Get subscriber details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>iR("get",{email:A,...I}));rI(Je,{examples:["sequenzy subscribers get user@example.com"]});var He=xJ.command("remove <email>").description("Unsubscribe or permanently delete a subscriber").option("--hard","Permanently delete (not just unsubscribe)").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>iR("remove",{email:A,...I}));rI(He,{examples:["sequenzy subscribers remove user@example.com","sequenzy subscribers remove user@example.com --hard"]});var Ue=sE.command("send <email>").description("Send a transactional email").option("-t, --template <id>","Template ID to use").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("-v, --var <vars...>","Variables (key=value)").action(qj);rI(Ue,{notes:["Use either --template or --html/--html-file.","--subject is required when sending raw HTML."],examples:["sequenzy send user@example.com --template tmpl_123 --var firstName=Ana",'sequenzy send user@example.com --subject "Welcome" --html-file ./welcome.html']});var F8=sE.command("campaigns").description("Manage campaigns").action(()=>F8.help());rI(F8,{notes:["Campaign creation supports HTML, Sequenzy blocks, or prompt-generated content.","Campaign updates support HTML, Sequenzy blocks, subject, name, and reply-to changes.","Only draft campaigns can be updated through this API path."],examples:["sequenzy campaigns list --status draft --company comp_123",'sequenzy campaigns create "April Launch" --subject "We shipped" --html-file ./campaign.html',"sequenzy campaigns test camp_123 --to you@example.com"]});var Re=F8.command("list").description("List campaigns").option("-s, --status <status>","Filter by status").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>UJ("list",A));rI(Re,{examples:["sequenzy campaigns list","sequenzy campaigns list --status draft --company comp_123"]});var Ke=F8.command("get <id>").description("Get campaign details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("get",{id:A,...I}));rI(Ke,{examples:["sequenzy campaigns get camp_123 --company comp_123"]});var Me=F8.command("create <name>").description("Create a draft campaign").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("--prompt <prompt>","Generate campaign blocks from a prompt").option("--style <style>","Prompt generation style: minimal, branded, promotional").option("--tone <tone>","Prompt generation tone: professional, casual, friendly").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("create",{name:A,...I}));rI(Me,{notes:["--subject is required unless --prompt is provided. With --prompt, the generated subject is used unless --subject is also provided.","Use --blocks-json or --blocks-file when you need editor-compatible blocks, including conditional content.","Do not combine prompt, HTML flags, and blocks flags in the same request."],examples:['sequenzy campaigns create "April Launch" --prompt "Announce our new analytics dashboard"','sequenzy campaigns create "April Launch" --subject "We shipped" --html-file ./campaign.html','sequenzy campaigns create "Segmented Launch" --subject "We shipped" --blocks-file ./campaign-blocks.json']});var Ne=F8.command("update <id>").description("Update a draft campaign").option("-n, --name <name>","Campaign name").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("--reply-to <email>","Set reply-to using an existing reply profile email").option("--reply-profile <id>","Set reply-to using a reply profile ID").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("update",{id:A,...I}));rI(Ne,{notes:["Provide at least one of --name, --subject, --html, --html-file, --blocks-json, --blocks-file, --reply-to, or --reply-profile.","Use --blocks-json or --blocks-file when you need editor-compatible blocks, including conditional content.","Do not combine HTML flags with blocks flags in the same request.","Use either --reply-to or --reply-profile, not both."],examples:['sequenzy campaigns update camp_123 --subject "Updated subject"',"sequenzy campaigns update camp_123 --html-file ./campaign-v2.html","sequenzy campaigns update camp_123 --blocks-file ./campaign-v2-blocks.json","sequenzy campaigns update camp_123 --reply-to support@example.com"]});var qe=F8.command("test <id>").description("Send a test email for a campaign").requiredOption("--to <email>","Recipient email for the test").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>UJ("test",{id:A,...I}));rI(qe,{examples:["sequenzy campaigns test camp_123 --to you@example.com"]});var RG=sE.command("sequences").description("Manage email sequences").action(()=>RG.help());rI(RG,{notes:["The CLI supports both AI goal-based sequence creation and explicit-step creation.","Trigger-specific options depend on --trigger. For example: contact_added needs --list-id, tag_added needs --tag-name, inactivity needs --event-name and --inactive-days.","Use --goal for AI generation, or --steps-file / --emails-file with JSON arrays that match the API step objects.",'Explicit --steps-file input can include discount actions with {"type":"create_discount","discountType":"percent","percentOff":20,"duration":"once","appliesToAllPlans":true}; later emails can use {{discount.code}}.',"Discount action sequences require a connected Stripe integration before enabling."],examples:["sequenzy sequences list --company comp_123",'sequenzy sequences create onboarding --trigger event_received --event-name signup.completed --goal "Guide new users to activation"',"sequenzy sequences create onboarding --trigger contact_added --list-id list_123 --steps-file ./steps.json","sequenzy sequences update seq_123 --steps-file ./sequence-updates.json","sequenzy sequences enable seq_123"]});var Le=RG.command("list").description("List sequences").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>ju("list",A));rI(Le,{examples:["sequenzy sequences list --company comp_123"]});var Ye=RG.command("get <id>").description("Get sequence details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("get",{id:A,...I}));rI(Ye,{examples:["sequenzy sequences get seq_123 --company comp_123"]});var Ze=RG.command("create <name>").description("Create a sequence from AI goal input or explicit step content").requiredOption("-t, --trigger <trigger>","Sequence trigger type").option("-g, --goal <goal>","AI generation goal for the sequence").option("--email-count <count>","Number of AI-generated emails when using --goal (1-10)").option("--list-id <id>","List ID for contact_added triggers").option("--tag-name <name>","Tag name for tag_added triggers").option("--segment-id <id>","Segment ID for segment_entered triggers").option("--event-name <name>","Event name for event_received, inactivity, and frequency triggers").option("--inactive-days <days>","Days of inactivity for inactivity triggers").option("--min-count <count>","Minimum event count for frequency triggers").option("--time-window-days <days>","Time window for frequency triggers").option("--steps-json <json>","Inline JSON array of sequence steps").option("--steps-file <file>","Path to a JSON file with sequence steps").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("create",{name:A,...I}));rI(Ze,{notes:["Provide either --goal for AI generation or --steps-json/--steps-file for explicit content, but not both.","Each explicit email step needs subject plus either html or blocks. Discount action steps use type=create_discount and can run before an email that references {{discount.code}}.","Prefer --steps-file for anything non-trivial. The CLI passes the JSON through to the API.","Discount action sequences require a connected Stripe integration before enabling."],examples:['sequenzy sequences create onboarding --trigger event_received --event-name signup.completed --goal "Guide new users to activation" --email-count 4',"sequenzy sequences create onboarding --trigger contact_added --list-id list_123 --steps-file ./steps.json","sequenzy sequences create rescue --trigger inactivity --event-name login --inactive-days 14 --steps-file ./steps.json"]});var Xe=RG.command("update <id>").description("Update sequence name or email step content").option("-n, --name <name>","Sequence name").option("--steps-json <json>","Inline JSON array of step updates").option("--steps-file <file>","Path to a JSON file with step updates").option("--emails-json <json>","Inline JSON array of email updates").option("--emails-file <file>","Path to a JSON file with email updates").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("update",{id:A,...I}));rI(Xe,{notes:["Use either the steps form or the emails form, not both.","Each update entry can target a step by nodeId, emailId, or by array order."],examples:['sequenzy sequences update seq_123 --name "User Onboarding"',"sequenzy sequences update seq_123 --steps-file ./sequence-updates.json"]});var Se=RG.command("enable <id>").description("Enable a sequence").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("enable",{id:A,...I}));rI(Se,{examples:["sequenzy sequences enable seq_123"]});var ze=RG.command("disable <id>").description("Disable a sequence").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("disable",{id:A,...I}));rI(ze,{examples:["sequenzy sequences disable seq_123"]});var $e=RG.command("delete <id>").description("Delete a sequence").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>ju("delete",{id:A,...I}));rI($e,{examples:["sequenzy sequences delete seq_123"]});var G8=sE.command("templates").description("Manage email templates").action(()=>G8.help());rI(G8,{notes:["Template content can be provided as raw HTML or as Sequenzy blocks JSON.","Use blocks when you need conditional content or an exact editor-compatible structure."],examples:["sequenzy templates list --company comp_123",'sequenzy templates create welcome --subject "Welcome" --html-file ./welcome.html','sequenzy templates create welcome --subject "Welcome" --blocks-file ./welcome-blocks.json','sequenzy templates update tmpl_123 --subject "Updated" --html-file ./welcome-v2.html']});var We=G8.command("list").description("List all templates").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>hJ("list",A));rI(We,{examples:["sequenzy templates list --company comp_123"]});var Oe=G8.command("get <id>").description("Get template details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("get",{id:A,...I}));rI(Oe,{examples:["sequenzy templates get tmpl_123 --company comp_123"]});var Ve=G8.command("create <name>").description("Create a template").requiredOption("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("create",{name:A,...I}));rI(Ve,{notes:["Provide either HTML or blocks JSON content.","Use blocks when you need conditional content or exact editor parity."],examples:['sequenzy templates create welcome --subject "Welcome" --html-file ./welcome.html','sequenzy templates create welcome --subject "Welcome" --blocks-file ./welcome-blocks.json']});var ye=G8.command("update <id>").description("Update a template").option("-n, --name <name>","Template name").option("-s, --subject <subject>","Email subject").option("--html <html>","Email HTML content").option("--html-file <file>","Read HTML from file").option("--blocks-json <json>","Inline JSON array of Sequenzy email blocks").option("--blocks-file <file>","Path to a JSON file with Sequenzy email blocks").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("update",{id:A,...I}));rI(ye,{notes:["Provide at least one of --name, --subject, --html, --html-file, --blocks-json, or --blocks-file.","Do not combine HTML flags with blocks flags in the same request."],examples:['sequenzy templates update tmpl_123 --subject "Updated"',"sequenzy templates update tmpl_123 --html-file ./welcome-v2.html","sequenzy templates update tmpl_123 --blocks-file ./welcome-v2-blocks.json"]});var je=G8.command("delete <id>").description("Delete a template").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>hJ("delete",{id:A,...I}));rI(je,{notes:["Deletion fails when the template is still referenced by a campaign or sequence."],examples:["sequenzy templates delete tmpl_123"]});var cR=sE.command("companies").description("Inspect or create companies").action(()=>cR.help());rI(cR,{notes:["Company creation starts background website processing automatically."],examples:["sequenzy companies list","sequenzy companies get comp_123","sequenzy companies create example.com --name Example"]});var Pe=cR.command("list").description("List accessible companies").option("--json","Print raw JSON").action((A)=>IK("list",A));rI(Pe,{examples:["sequenzy companies list"]});var fe=cR.command("get <id>").description("Get company details").option("--json","Print raw JSON").action((A,I)=>IK("get",{id:A,...I}));rI(fe,{examples:["sequenzy companies get comp_123"]});var Te=cR.command("create <domain>").description("Create a company and queue website processing").option("-n, --name <name>","Company name").option("--json","Print raw JSON").action((A,I)=>IK("create",{domain:A,...I}));rI(Te,{examples:["sequenzy companies create example.com","sequenzy companies create https://example.com --name Example"]});var ke=sE.command("tags").description("List tag definitions").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action(zj);rI(ke,{examples:["sequenzy tags --company comp_123"]});var oK=sE.command("lists").description("Manage subscriber lists").action(()=>oK.help());rI(oK,{examples:["sequenzy lists list --company comp_123",'sequenzy lists create Newsletter --description "Public newsletter list"']});var be=oK.command("list").description("List subscriber lists").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>QL("list",A));rI(be,{examples:["sequenzy lists list --company comp_123"]});var _e=oK.command("create <name>").description("Create a subscriber list").option("-d, --description <text>","List description").option("--private","Mark the list as private").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>QL("create",{name:A,...I}));rI(_e,{examples:['sequenzy lists create Newsletter --description "Public newsletter list"',"sequenzy lists create VIP --private --company comp_123"]});var nR=sE.command("segments").description("Manage segments").action(()=>nR.help());rI(nR,{notes:["Use --filter-json for arbitrary segment filters. The CLI will fill in missing filter IDs.","Use --match any to create a segment that matches any filter instead of all filters.",'Engagement filters (emailSent, emailOpened, emailClicked, emailBounced, emailComplained) accept either a time range as the value ("7d", "30d", "90d", "180d", "all") OR a specific campaign ("campaign:<campaign_id>"). Combine multiple engagement filters with --match all to build things like "bounced campaign A but not campaign B".'],examples:["sequenzy segments list --company comp_123",'sequenzy segments create --name "Bought Pro" --stripe-product prod_pro',`sequenzy segments create --name "VIP or Churn Risk" --match any --filter-json '[{"field":"tag","operator":"contains","value":"vip"},{"field":"emailOpened","operator":"is_not","value":"30d"}]'`,`sequenzy segments create --name "Bounced A not B" --filter-json '[{"field":"emailBounced","operator":"is","value":"campaign:cmp_abc"},{"field":"emailBounced","operator":"is_not","value":"campaign:cmp_xyz"}]'`]});var ve=nR.command("list").description("List all segments").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>QK("list",A));rI(ve,{examples:["sequenzy segments list --company comp_123"]});var he=nR.command("create").description("Create a segment").requiredOption("-n, --name <name>","Segment name").option("-c, --company <id>","Company ID override for personal API keys").option("--match <mode>","How filters combine: all or any","all").option("--stripe-product <id>","Stripe product ID to segment on").option("--purchase-operator <operator>","Stripe purchase operator (bought, didnt-buy, at-least, less-than)","bought").option("--payments <number>","Payment threshold for at-least/less-than").option("--filter-json <json>","Raw JSON array of segment filters (IDs are optional)").option("--json","Print raw JSON").action((A)=>QK("create",A));rI(he,{examples:['sequenzy segments create --name "Bought Pro" --stripe-product prod_pro','sequenzy segments create --name "3+ Pro Payments" --stripe-product prod_pro --purchase-operator at-least --payments 3',`sequenzy segments create --name "VIP or Churn Risk" --match any --filter-json '[{"field":"tag","operator":"contains","value":"vip"},{"field":"emailOpened","operator":"is_not","value":"30d"}]'`,`sequenzy segments create --name "Bounced A not B" --filter-json '[{"field":"emailBounced","operator":"is","value":"campaign:cmp_abc"},{"field":"emailBounced","operator":"is_not","value":"campaign:cmp_xyz"}]'`]});var xe=nR.command("count <id>").description("Get subscriber count for a segment").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>QK("count",{id:A,...I}));rI(xe,{examples:["sequenzy segments count seg_123 --company comp_123"]});var le=sE.command("account").description("Show account info").option("--json","Print raw JSON").action(dW);rI(le,{examples:["sequenzy account","sequenzy account --json"]});var MY=sE.command("api-keys").description("Create company API keys").action(()=>MY.help());rI(MY,{notes:["The plain API key is only returned on creation. Save it immediately."],examples:["sequenzy api-keys create",'sequenzy api-keys create --name "CI deploy key" --company comp_123']});var ie=MY.command("create").description("Create a company API key").option("-n, --name <name>","Human-readable API key name").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>pW("create",A));rI(ie,{examples:["sequenzy api-keys create",'sequenzy api-keys create --name "CI deploy key" --company comp_123']});var lJ=sE.command("websites").description("Manage sending domains and integration guides").action(()=>lJ.help());rI(lJ,{notes:["Use 'guide' for code examples and 'check' to inspect current DNS verification details."],examples:["sequenzy websites list --company comp_123","sequenzy websites add example.com --company comp_123","sequenzy websites guide --framework nextjs --use-case transactional"]});var me=lJ.command("list").description("List sending domains for a company").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A)=>mR("list",A));rI(me,{examples:["sequenzy websites list --company comp_123"]});var ce=lJ.command("add <domain>").description("Add a sending domain").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>mR("add",{domain:A,...I}));rI(ce,{examples:["sequenzy websites add example.com --company comp_123"]});var ne=lJ.command("check <domain>").description("Inspect sending domain verification details").option("-c, --company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>mR("check",{domain:A,...I}));rI(ne,{examples:["sequenzy websites check example.com --company comp_123"]});var de=lJ.command("guide").description("Print framework-specific integration code").option("--framework <name>","Framework name, e.g. nextjs, express, python").option("--use-case <name>","Use case, e.g. transactional, subscribe_form, event_tracking").option("--json","Print raw JSON").action((A)=>mR("guide",A));rI(de,{examples:["sequenzy websites guide","sequenzy websites guide --framework nextjs --use-case transactional","sequenzy websites guide --framework python --use-case event_tracking"]});var dR=sE.command("generate").description("Generate email content with AI").action(()=>dR.help());rI(dR,{notes:["Generated content is returned as draft content. Review it before sending.","Use --json when another tool or agent should parse the generated output."],examples:['sequenzy generate email "Welcome a new user to our analytics product"','sequenzy generate sequence "Onboard a new workspace admin" --count 4 --days 14','sequenzy generate subjects "April product launch" --count 8']});dR.command("email <prompt>").description("Generate email blocks from a prompt").option("-s, --style <style>","Style: minimal, branded, promotional").option("-t, --tone <tone>","Tone: professional, casual, friendly").option("--company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>BK("email",{prompt:A,...I}));dR.command("sequence <goal>").description("Generate email sequence content from a goal").option("-c, --count <number>","Number of emails (1-10)","5").option("-d, --days <number>","Duration in days","14").option("--company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>BK("sequence",{goal:A,...I}));dR.command("subjects <topic>").description("Generate A/B subject line variants").option("-c, --count <number>","Number of variants","5").option("--company <id>","Company ID override for personal API keys").option("--json","Print raw JSON").action((A,I)=>BK("subjects",{topic:A,...I}));sE.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sequenzy/cli",
3
- "version": "0.0.15",
3
+ "version": "0.0.16",
4
4
  "description": "Sequenzy CLI for email marketing from the terminal",
5
5
  "type": "module",
6
6
  "bin": {