resend-cli 2.20.1 → 2.21.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.cjs CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var ju=Object.create;var xi=Object.defineProperty;var Pu=Object.getOwnPropertyDescriptor;var $u=Object.getOwnPropertyNames;var Gu=Object.getPrototypeOf,Hu=Object.prototype.hasOwnProperty;var he=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(i){throw o=[i],i}};var Re=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},eo=(e,t)=>{for(var o in t)xi(e,o,{get:t[o],enumerable:!0})},Qu=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of $u(t))!Hu.call(e,r)&&r!==o&&xi(e,r,{get:()=>t[r],enumerable:!(i=Pu(t,r))||i.enumerable});return e};var ue=(e,t,o)=>(o=e!=null?ju(Gu(e)):{},Qu(t||!e||!e.__esModule?xi(o,"default",{value:e,enumerable:!0}):o,e));var to=Re(Fi=>{var So=class extends Error{constructor(t,o,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=o,this.exitCode=t,this.nestedError=void 0}},ki=class extends So{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Fi.CommanderError=So;Fi.InvalidArgumentError=ki});var vo=Re(_i=>{var{InvalidArgumentError:Nu}=to(),Ri=class{constructor(t,o){switch(this.description=o||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,t[0]){case"<":this.required=!0,this._name=t.slice(1,-1);break;case"[":this.required=!1,this._name=t.slice(1,-1);break;default:this.required=!0,this._name=t;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}argParser(t){return this.parseArg=t,this}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Nu(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Mu(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}_i.Argument=Ri;_i.humanReadableArgName=Mu});var Bi=Re(Ei=>{var{humanReadableArgName:qu}=vo(),Di=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(t){this.helpWidth=this.helpWidth??t.helpWidth??80}visibleCommands(t){let o=t.commands.filter(r=>!r._hidden),i=t._getHelpCommand();return i&&!i._hidden&&o.push(i),this.sortSubcommands&&o.sort((r,n)=>r.name().localeCompare(n.name())),o}compareOptions(t,o){let i=r=>r.short?r.short.replace(/^-/,""):r.long.replace(/^--/,"");return i(t).localeCompare(i(o))}visibleOptions(t){let o=t.options.filter(r=>!r.hidden),i=t._getHelpOption();if(i&&!i.hidden){let r=i.short&&t._findOption(i.short),n=i.long&&t._findOption(i.long);!r&&!n?o.push(i):i.long&&!n?o.push(t.createOption(i.long,i.description)):i.short&&!r&&o.push(t.createOption(i.short,i.description))}return this.sortOptions&&o.sort(this.compareOptions),o}visibleGlobalOptions(t){if(!this.showGlobalOptions)return[];let o=[];for(let i=t.parent;i;i=i.parent){let r=i.options.filter(n=>!n.hidden);o.push(...r)}return this.sortOptions&&o.sort(this.compareOptions),o}visibleArguments(t){return t._argsDescription&&t.registeredArguments.forEach(o=>{o.description=o.description||t._argsDescription[o.name()]||""}),t.registeredArguments.find(o=>o.description)?t.registeredArguments:[]}subcommandTerm(t){let o=t.registeredArguments.map(i=>qu(i)).join(" ");return t._name+(t._aliases[0]?"|"+t._aliases[0]:"")+(t.options.length?" [options]":"")+(o?" "+o:"")}optionTerm(t){return t.flags}argumentTerm(t){return t.name()}longestSubcommandTermLength(t,o){return o.visibleCommands(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleSubcommandTerm(o.subcommandTerm(r)))),0)}longestOptionTermLength(t,o){return o.visibleOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestGlobalOptionTermLength(t,o){return o.visibleGlobalOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestArgumentTermLength(t,o){return o.visibleArguments(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleArgumentTerm(o.argumentTerm(r)))),0)}commandUsage(t){let o=t._name;t._aliases[0]&&(o=o+"|"+t._aliases[0]);let i="";for(let r=t.parent;r;r=r.parent)i=r.name()+" "+i;return i+o+" "+t.usage()}commandDescription(t){return t.description()}subcommandDescription(t){return t.summary()||t.description()}optionDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&(t.required||t.optional||t.isBoolean()&&typeof t.defaultValue=="boolean")&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),t.presetArg!==void 0&&t.optional&&o.push(`preset: ${JSON.stringify(t.presetArg)}`),t.envVar!==void 0&&o.push(`env: ${t.envVar}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}argumentDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}formatItemList(t,o,i){return o.length===0?[]:[i.styleTitle(t),...o,""]}groupItems(t,o,i){let r=new Map;return t.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[])}),o.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[]),r.get(s).push(n)}),r}formatHelp(t,o){let i=o.padWidth(t,o),r=o.helpWidth??80;function n(m,f){return o.formatItem(m,i,f,o)}let s=[`${o.styleTitle("Usage:")} ${o.styleUsage(o.commandUsage(t))}`,""],a=o.commandDescription(t);a.length>0&&(s=s.concat([o.boxWrap(o.styleCommandDescription(a),r),""]));let l=o.visibleArguments(t).map(m=>n(o.styleArgumentTerm(o.argumentTerm(m)),o.styleArgumentDescription(o.argumentDescription(m))));if(s=s.concat(this.formatItemList("Arguments:",l,o)),this.groupItems(t.options,o.visibleOptions(t),m=>m.helpGroupHeading??"Options:").forEach((m,f)=>{let b=m.map(h=>n(o.styleOptionTerm(o.optionTerm(h)),o.styleOptionDescription(o.optionDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),o.showGlobalOptions){let m=o.visibleGlobalOptions(t).map(f=>n(o.styleOptionTerm(o.optionTerm(f)),o.styleOptionDescription(o.optionDescription(f))));s=s.concat(this.formatItemList("Global Options:",m,o))}return this.groupItems(t.commands,o.visibleCommands(t),m=>m.helpGroup()||"Commands:").forEach((m,f)=>{let b=m.map(h=>n(o.styleSubcommandTerm(o.subcommandTerm(h)),o.styleSubcommandDescription(o.subcommandDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),s.join(`
2
+ "use strict";var Pu=Object.create;var xi=Object.defineProperty;var $u=Object.getOwnPropertyDescriptor;var Gu=Object.getOwnPropertyNames;var Hu=Object.getPrototypeOf,Qu=Object.prototype.hasOwnProperty;var he=(e,t,o)=>()=>{if(o)throw o[0];try{return e&&(t=e(e=0)),t}catch(i){throw o=[i],i}};var Re=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}},eo=(e,t)=>{for(var o in t)xi(e,o,{get:t[o],enumerable:!0})},Nu=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Gu(t))!Qu.call(e,r)&&r!==o&&xi(e,r,{get:()=>t[r],enumerable:!(i=$u(t,r))||i.enumerable});return e};var ue=(e,t,o)=>(o=e!=null?Pu(Hu(e)):{},Nu(t||!e||!e.__esModule?xi(o,"default",{value:e,enumerable:!0}):o,e));var to=Re(Fi=>{var So=class extends Error{constructor(t,o,i){super(i),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=o,this.exitCode=t,this.nestedError=void 0}},ki=class extends So{constructor(t){super(1,"commander.invalidArgument",t),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Fi.CommanderError=So;Fi.InvalidArgumentError=ki});var vo=Re(_i=>{var{InvalidArgumentError:Mu}=to(),Ri=class{constructor(t,o){switch(this.description=o||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,t[0]){case"<":this.required=!0,this._name=t.slice(1,-1);break;case"[":this.required=!1,this._name=t.slice(1,-1);break;default:this.required=!0,this._name=t;break}this._name.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}argParser(t){return this.parseArg=t,this}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Mu(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function qu(e){let t=e.name()+(e.variadic===!0?"...":"");return e.required?"<"+t+">":"["+t+"]"}_i.Argument=Ri;_i.humanReadableArgName=qu});var Bi=Re(Ei=>{var{humanReadableArgName:Lu}=vo(),Di=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(t){this.helpWidth=this.helpWidth??t.helpWidth??80}visibleCommands(t){let o=t.commands.filter(r=>!r._hidden),i=t._getHelpCommand();return i&&!i._hidden&&o.push(i),this.sortSubcommands&&o.sort((r,n)=>r.name().localeCompare(n.name())),o}compareOptions(t,o){let i=r=>r.short?r.short.replace(/^-/,""):r.long.replace(/^--/,"");return i(t).localeCompare(i(o))}visibleOptions(t){let o=t.options.filter(r=>!r.hidden),i=t._getHelpOption();if(i&&!i.hidden){let r=i.short&&t._findOption(i.short),n=i.long&&t._findOption(i.long);!r&&!n?o.push(i):i.long&&!n?o.push(t.createOption(i.long,i.description)):i.short&&!r&&o.push(t.createOption(i.short,i.description))}return this.sortOptions&&o.sort(this.compareOptions),o}visibleGlobalOptions(t){if(!this.showGlobalOptions)return[];let o=[];for(let i=t.parent;i;i=i.parent){let r=i.options.filter(n=>!n.hidden);o.push(...r)}return this.sortOptions&&o.sort(this.compareOptions),o}visibleArguments(t){return t._argsDescription&&t.registeredArguments.forEach(o=>{o.description=o.description||t._argsDescription[o.name()]||""}),t.registeredArguments.find(o=>o.description)?t.registeredArguments:[]}subcommandTerm(t){let o=t.registeredArguments.map(i=>Lu(i)).join(" ");return t._name+(t._aliases[0]?"|"+t._aliases[0]:"")+(t.options.length?" [options]":"")+(o?" "+o:"")}optionTerm(t){return t.flags}argumentTerm(t){return t.name()}longestSubcommandTermLength(t,o){return o.visibleCommands(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleSubcommandTerm(o.subcommandTerm(r)))),0)}longestOptionTermLength(t,o){return o.visibleOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestGlobalOptionTermLength(t,o){return o.visibleGlobalOptions(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleOptionTerm(o.optionTerm(r)))),0)}longestArgumentTermLength(t,o){return o.visibleArguments(t).reduce((i,r)=>Math.max(i,this.displayWidth(o.styleArgumentTerm(o.argumentTerm(r)))),0)}commandUsage(t){let o=t._name;t._aliases[0]&&(o=o+"|"+t._aliases[0]);let i="";for(let r=t.parent;r;r=r.parent)i=r.name()+" "+i;return i+o+" "+t.usage()}commandDescription(t){return t.description()}subcommandDescription(t){return t.summary()||t.description()}optionDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&(t.required||t.optional||t.isBoolean()&&typeof t.defaultValue=="boolean")&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),t.presetArg!==void 0&&t.optional&&o.push(`preset: ${JSON.stringify(t.presetArg)}`),t.envVar!==void 0&&o.push(`env: ${t.envVar}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}argumentDescription(t){let o=[];if(t.argChoices&&o.push(`choices: ${t.argChoices.map(i=>JSON.stringify(i)).join(", ")}`),t.defaultValue!==void 0&&o.push(`default: ${t.defaultValueDescription||JSON.stringify(t.defaultValue)}`),o.length>0){let i=`(${o.join(", ")})`;return t.description?`${t.description} ${i}`:i}return t.description}formatItemList(t,o,i){return o.length===0?[]:[i.styleTitle(t),...o,""]}groupItems(t,o,i){let r=new Map;return t.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[])}),o.forEach(n=>{let s=i(n);r.has(s)||r.set(s,[]),r.get(s).push(n)}),r}formatHelp(t,o){let i=o.padWidth(t,o),r=o.helpWidth??80;function n(m,f){return o.formatItem(m,i,f,o)}let s=[`${o.styleTitle("Usage:")} ${o.styleUsage(o.commandUsage(t))}`,""],a=o.commandDescription(t);a.length>0&&(s=s.concat([o.boxWrap(o.styleCommandDescription(a),r),""]));let l=o.visibleArguments(t).map(m=>n(o.styleArgumentTerm(o.argumentTerm(m)),o.styleArgumentDescription(o.argumentDescription(m))));if(s=s.concat(this.formatItemList("Arguments:",l,o)),this.groupItems(t.options,o.visibleOptions(t),m=>m.helpGroupHeading??"Options:").forEach((m,f)=>{let b=m.map(h=>n(o.styleOptionTerm(o.optionTerm(h)),o.styleOptionDescription(o.optionDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),o.showGlobalOptions){let m=o.visibleGlobalOptions(t).map(f=>n(o.styleOptionTerm(o.optionTerm(f)),o.styleOptionDescription(o.optionDescription(f))));s=s.concat(this.formatItemList("Global Options:",m,o))}return this.groupItems(t.commands,o.visibleCommands(t),m=>m.helpGroup()||"Commands:").forEach((m,f)=>{let b=m.map(h=>n(o.styleSubcommandTerm(o.subcommandTerm(h)),o.styleSubcommandDescription(o.subcommandDescription(h))));s=s.concat(this.formatItemList(f,b,o))}),s.join(`
3
3
  `)}displayWidth(t){return Lr(t).length}styleTitle(t){return t}styleUsage(t){return t.split(" ").map(o=>o==="[options]"?this.styleOptionText(o):o==="[command]"?this.styleSubcommandText(o):o[0]==="["||o[0]==="<"?this.styleArgumentText(o):this.styleCommandText(o)).join(" ")}styleCommandDescription(t){return this.styleDescriptionText(t)}styleOptionDescription(t){return this.styleDescriptionText(t)}styleSubcommandDescription(t){return this.styleDescriptionText(t)}styleArgumentDescription(t){return this.styleDescriptionText(t)}styleDescriptionText(t){return t}styleOptionTerm(t){return this.styleOptionText(t)}styleSubcommandTerm(t){return t.split(" ").map(o=>o==="[options]"?this.styleOptionText(o):o[0]==="["||o[0]==="<"?this.styleArgumentText(o):this.styleSubcommandText(o)).join(" ")}styleArgumentTerm(t){return this.styleArgumentText(t)}styleOptionText(t){return t}styleArgumentText(t){return t}styleSubcommandText(t){return t}styleCommandText(t){return t}padWidth(t,o){return Math.max(o.longestOptionTermLength(t,o),o.longestGlobalOptionTermLength(t,o),o.longestSubcommandTermLength(t,o),o.longestArgumentTermLength(t,o))}preformatted(t){return/\n[^\S\r\n]/.test(t)}formatItem(t,o,i,r){let s=" ".repeat(2);if(!i)return s+t;let a=t.padEnd(o+t.length-r.displayWidth(t)),l=2,c=(this.helpWidth??80)-o-l-2,m;return c<this.minWidthToWrap||r.preformatted(i)?m=i:m=r.boxWrap(i,c).replace(/\n/g,`
4
4
  `+" ".repeat(o+l)),s+a+" ".repeat(l)+m.replace(/\n/g,`
5
5
  ${s}`)}boxWrap(t,o){if(o<this.minWidthToWrap)return t;let i=t.split(/\r\n|\n/),r=/[\s]*[^\s]+/g,n=[];return i.forEach(s=>{let a=s.match(r);if(a===null){n.push("");return}let l=[a.shift()],d=this.displayWidth(l[0]);a.forEach(c=>{let m=this.displayWidth(c);if(d+m<=o){l.push(c),d+=m;return}n.push(l.join(""));let f=c.trimStart();l=[f],d=this.displayWidth(f)}),n.push(l.join(""))}),n.join(`
6
- `)}};function Lr(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}Ei.Help=Di;Ei.stripColor=Lr});var ji=Re(Ii=>{var{InvalidArgumentError:Lu}=to(),Oi=class{constructor(t,o){this.flags=t,this.description=o||"",this.required=t.includes("<"),this.optional=t.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(t),this.mandatory=!1;let i=Wu(t);this.short=i.shortFlag,this.long=i.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}preset(t){return this.presetArg=t,this}conflicts(t){return this.conflictsWith=this.conflictsWith.concat(t),this}implies(t){let o=t;return typeof t=="string"&&(o={[t]:!0}),this.implied=Object.assign(this.implied||{},o),this}env(t){return this.envVar=t,this}argParser(t){return this.parseArg=t,this}makeOptionMandatory(t=!0){return this.mandatory=!!t,this}hideHelp(t=!0){return this.hidden=!!t,this}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Lu(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?Wr(this.name().replace(/^no-/,"")):Wr(this.name())}helpGroup(t){return this.helpGroupHeading=t,this}is(t){return this.short===t||this.long===t}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Ti=class{constructor(t){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,t.forEach(o=>{o.negate?this.negativeOptions.set(o.attributeName(),o):this.positiveOptions.set(o.attributeName(),o)}),this.negativeOptions.forEach((o,i)=>{this.positiveOptions.has(i)&&this.dualOptions.add(i)})}valueFromOption(t,o){let i=o.attributeName();if(!this.dualOptions.has(i))return!0;let r=this.negativeOptions.get(i).presetArg,n=r!==void 0?r:!1;return o.negate===(n===t)}};function Wr(e){return e.split("-").reduce((t,o)=>t+o[0].toUpperCase()+o.slice(1))}function Wu(e){let t,o,i=/^-[^-]$/,r=/^--[^-]/,n=e.split(/[ |,]+/).concat("guard");if(i.test(n[0])&&(t=n.shift()),r.test(n[0])&&(o=n.shift()),!t&&i.test(n[0])&&(t=n.shift()),!t&&r.test(n[0])&&(t=o,o=n.shift()),n[0].startsWith("-")){let s=n[0],a=`option creation failed due to '${s}' in option flags '${e}'`;throw/^-[^-][^-]/.test(s)?new Error(`${a}
6
+ `)}};function Lr(e){let t=/\x1b\[\d*(;\d*)*m/g;return e.replace(t,"")}Ei.Help=Di;Ei.stripColor=Lr});var ji=Re(Ii=>{var{InvalidArgumentError:Wu}=to(),Oi=class{constructor(t,o){this.flags=t,this.description=o||"",this.required=t.includes("<"),this.optional=t.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(t),this.mandatory=!1;let i=Ju(t);this.short=i.shortFlag,this.long=i.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0,this.helpGroupHeading=void 0}default(t,o){return this.defaultValue=t,this.defaultValueDescription=o,this}preset(t){return this.presetArg=t,this}conflicts(t){return this.conflictsWith=this.conflictsWith.concat(t),this}implies(t){let o=t;return typeof t=="string"&&(o={[t]:!0}),this.implied=Object.assign(this.implied||{},o),this}env(t){return this.envVar=t,this}argParser(t){return this.parseArg=t,this}makeOptionMandatory(t=!0){return this.mandatory=!!t,this}hideHelp(t=!0){return this.hidden=!!t,this}_collectValue(t,o){return o===this.defaultValue||!Array.isArray(o)?[t]:(o.push(t),o)}choices(t){return this.argChoices=t.slice(),this.parseArg=(o,i)=>{if(!this.argChoices.includes(o))throw new Wu(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(o,i):o},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?Wr(this.name().replace(/^no-/,"")):Wr(this.name())}helpGroup(t){return this.helpGroupHeading=t,this}is(t){return this.short===t||this.long===t}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Ti=class{constructor(t){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,t.forEach(o=>{o.negate?this.negativeOptions.set(o.attributeName(),o):this.positiveOptions.set(o.attributeName(),o)}),this.negativeOptions.forEach((o,i)=>{this.positiveOptions.has(i)&&this.dualOptions.add(i)})}valueFromOption(t,o){let i=o.attributeName();if(!this.dualOptions.has(i))return!0;let r=this.negativeOptions.get(i).presetArg,n=r!==void 0?r:!1;return o.negate===(n===t)}};function Wr(e){return e.split("-").reduce((t,o)=>t+o[0].toUpperCase()+o.slice(1))}function Ju(e){let t,o,i=/^-[^-]$/,r=/^--[^-]/,n=e.split(/[ |,]+/).concat("guard");if(i.test(n[0])&&(t=n.shift()),r.test(n[0])&&(o=n.shift()),!t&&i.test(n[0])&&(t=n.shift()),!t&&r.test(n[0])&&(t=o,o=n.shift()),n[0].startsWith("-")){let s=n[0],a=`option creation failed due to '${s}' in option flags '${e}'`;throw/^-[^-][^-]/.test(s)?new Error(`${a}
7
7
  - a short flag is a single dash and a single character
8
8
  - either use a single dash and a single character (for a short flag)
9
9
  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):i.test(s)?new Error(`${a}
10
10
  - too many short flags`):r.test(s)?new Error(`${a}
11
11
  - too many long flags`):new Error(`${a}
12
- - unrecognised flag format`)}if(t===void 0&&o===void 0)throw new Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:o}}Ii.Option=Oi;Ii.DualOptions=Ti});var Vr=Re(Jr=>{function Ju(e,t){if(Math.abs(e.length-t.length)>3)return Math.max(e.length,t.length);let o=[];for(let i=0;i<=e.length;i++)o[i]=[i];for(let i=0;i<=t.length;i++)o[0][i]=i;for(let i=1;i<=t.length;i++)for(let r=1;r<=e.length;r++){let n=1;e[r-1]===t[i-1]?n=0:n=1,o[r][i]=Math.min(o[r-1][i]+1,o[r][i-1]+1,o[r-1][i-1]+n),r>1&&i>1&&e[r-1]===t[i-2]&&e[r-2]===t[i-1]&&(o[r][i]=Math.min(o[r][i],o[r-2][i-2]+1))}return o[e.length][t.length]}function Vu(e,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let o=e.startsWith("--");o&&(e=e.slice(2),t=t.map(s=>s.slice(2)));let i=[],r=3,n=.4;return t.forEach(s=>{if(s.length<=1)return;let a=Ju(e,s),l=Math.max(e.length,s.length);(l-a)/l>n&&(a<r?(r=a,i=[s]):a===r&&i.push(s))}),i.sort((s,a)=>s.localeCompare(a)),o&&(i=i.map(s=>`--${s}`)),i.length>1?`
12
+ - unrecognised flag format`)}if(t===void 0&&o===void 0)throw new Error(`option creation failed due to no flags found in '${e}'.`);return{shortFlag:t,longFlag:o}}Ii.Option=Oi;Ii.DualOptions=Ti});var Vr=Re(Jr=>{function Vu(e,t){if(Math.abs(e.length-t.length)>3)return Math.max(e.length,t.length);let o=[];for(let i=0;i<=e.length;i++)o[i]=[i];for(let i=0;i<=t.length;i++)o[0][i]=i;for(let i=1;i<=t.length;i++)for(let r=1;r<=e.length;r++){let n=1;e[r-1]===t[i-1]?n=0:n=1,o[r][i]=Math.min(o[r-1][i]+1,o[r][i-1]+1,o[r-1][i-1]+n),r>1&&i>1&&e[r-1]===t[i-2]&&e[r-2]===t[i-1]&&(o[r][i]=Math.min(o[r][i],o[r-2][i-2]+1))}return o[e.length][t.length]}function zu(e,t){if(!t||t.length===0)return"";t=Array.from(new Set(t));let o=e.startsWith("--");o&&(e=e.slice(2),t=t.map(s=>s.slice(2)));let i=[],r=3,n=.4;return t.forEach(s=>{if(s.length<=1)return;let a=Vu(e,s),l=Math.max(e.length,s.length);(l-a)/l>n&&(a<r?(r=a,i=[s]):a===r&&i.push(s))}),i.sort((s,a)=>s.localeCompare(a)),o&&(i=i.map(s=>`--${s}`)),i.length>1?`
13
13
  (Did you mean one of ${i.join(", ")}?)`:i.length===1?`
14
- (Did you mean ${i[0]}?)`:""}Jr.suggestSimilar=Vu});var Zr=Re(Qi=>{var zu=require("node:events").EventEmitter,Pi=require("node:child_process"),et=require("node:path"),Ko=require("node:fs"),J=require("node:process"),{Argument:Yu,humanReadableArgName:Xu}=vo(),{CommanderError:$i}=to(),{Help:Zu,stripColor:em}=Bi(),{Option:zr,DualOptions:tm}=ji(),{suggestSimilar:Yr}=Vr(),Gi=class e extends zu{constructor(t){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=t||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:o=>J.stdout.write(o),writeErr:o=>J.stderr.write(o),outputError:(o,i)=>i(o),getOutHelpWidth:()=>J.stdout.isTTY?J.stdout.columns:void 0,getErrHelpWidth:()=>J.stderr.isTTY?J.stderr.columns:void 0,getOutHasColors:()=>Hi()??(J.stdout.isTTY&&J.stdout.hasColors?.()),getErrHasColors:()=>Hi()??(J.stderr.isTTY&&J.stderr.hasColors?.()),stripColor:o=>em(o)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(t){return this._outputConfiguration=t._outputConfiguration,this._helpOption=t._helpOption,this._helpCommand=t._helpCommand,this._helpConfiguration=t._helpConfiguration,this._exitCallback=t._exitCallback,this._storeOptionsAsProperties=t._storeOptionsAsProperties,this._combineFlagAndOptionalValue=t._combineFlagAndOptionalValue,this._allowExcessArguments=t._allowExcessArguments,this._enablePositionalOptions=t._enablePositionalOptions,this._showHelpAfterError=t._showHelpAfterError,this._showSuggestionAfterError=t._showSuggestionAfterError,this}_getCommandAndAncestors(){let t=[];for(let o=this;o;o=o.parent)t.push(o);return t}command(t,o,i){let r=o,n=i;typeof r=="object"&&r!==null&&(n=r,r=null),n=n||{};let[,s,a]=t.match(/([^ ]+) *(.*)/),l=this.createCommand(s);return r&&(l.description(r),l._executableHandler=!0),n.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(n.noHelp||n.hidden),l._executableFile=n.executableFile||null,a&&l.arguments(a),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),r?this:l}createCommand(t){return new e(t)}createHelp(){return Object.assign(new Zu,this.configureHelp())}configureHelp(t){return t===void 0?this._helpConfiguration:(this._helpConfiguration=t,this)}configureOutput(t){return t===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...t},this)}showHelpAfterError(t=!0){return typeof t!="string"&&(t=!!t),this._showHelpAfterError=t,this}showSuggestionAfterError(t=!0){return this._showSuggestionAfterError=!!t,this}addCommand(t,o){if(!t._name)throw new Error(`Command passed to .addCommand() must have a name
15
- - specify the name in Command constructor or using .name()`);return o=o||{},o.isDefault&&(this._defaultCommandName=t._name),(o.noHelp||o.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,o){return new Yu(t,o)}argument(t,o,i,r){let n=this.createArgument(t,o);return typeof i=="function"?n.default(r).argParser(i):n.default(i),this.addArgument(n),this}arguments(t){return t.trim().split(/ +/).forEach(o=>{this.argument(o)}),this}addArgument(t){let o=this.registeredArguments.slice(-1)[0];if(o?.variadic)throw new Error(`only the last argument can be variadic '${o.name()}'`);if(t.required&&t.defaultValue!==void 0&&t.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${t.name()}'`);return this.registeredArguments.push(t),this}helpCommand(t,o){if(typeof t=="boolean")return this._addImplicitHelpCommand=t,t&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let i=t??"help [command]",[,r,n]=i.match(/([^ ]+) *(.*)/),s=o??"display help for command",a=this.createCommand(r);return a.helpOption(!1),n&&a.arguments(n),s&&a.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=a,(t||o)&&this._initCommandGroup(a),this}addHelpCommand(t,o){return typeof t!="object"?(this.helpCommand(t,o),this):(this._addImplicitHelpCommand=!0,this._helpCommand=t,this._initCommandGroup(t),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(t,o){let i=["preSubcommand","preAction","postAction"];if(!i.includes(t))throw new Error(`Unexpected value for event passed to hook : '${t}'.
14
+ (Did you mean ${i[0]}?)`:""}Jr.suggestSimilar=zu});var Zr=Re(Qi=>{var Yu=require("node:events").EventEmitter,Pi=require("node:child_process"),et=require("node:path"),Ko=require("node:fs"),J=require("node:process"),{Argument:Xu,humanReadableArgName:Zu}=vo(),{CommanderError:$i}=to(),{Help:em,stripColor:tm}=Bi(),{Option:zr,DualOptions:om}=ji(),{suggestSimilar:Yr}=Vr(),Gi=class e extends Yu{constructor(t){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=t||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:o=>J.stdout.write(o),writeErr:o=>J.stderr.write(o),outputError:(o,i)=>i(o),getOutHelpWidth:()=>J.stdout.isTTY?J.stdout.columns:void 0,getErrHelpWidth:()=>J.stderr.isTTY?J.stderr.columns:void 0,getOutHasColors:()=>Hi()??(J.stdout.isTTY&&J.stdout.hasColors?.()),getErrHasColors:()=>Hi()??(J.stderr.isTTY&&J.stderr.hasColors?.()),stripColor:o=>tm(o)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(t){return this._outputConfiguration=t._outputConfiguration,this._helpOption=t._helpOption,this._helpCommand=t._helpCommand,this._helpConfiguration=t._helpConfiguration,this._exitCallback=t._exitCallback,this._storeOptionsAsProperties=t._storeOptionsAsProperties,this._combineFlagAndOptionalValue=t._combineFlagAndOptionalValue,this._allowExcessArguments=t._allowExcessArguments,this._enablePositionalOptions=t._enablePositionalOptions,this._showHelpAfterError=t._showHelpAfterError,this._showSuggestionAfterError=t._showSuggestionAfterError,this}_getCommandAndAncestors(){let t=[];for(let o=this;o;o=o.parent)t.push(o);return t}command(t,o,i){let r=o,n=i;typeof r=="object"&&r!==null&&(n=r,r=null),n=n||{};let[,s,a]=t.match(/([^ ]+) *(.*)/),l=this.createCommand(s);return r&&(l.description(r),l._executableHandler=!0),n.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(n.noHelp||n.hidden),l._executableFile=n.executableFile||null,a&&l.arguments(a),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),r?this:l}createCommand(t){return new e(t)}createHelp(){return Object.assign(new em,this.configureHelp())}configureHelp(t){return t===void 0?this._helpConfiguration:(this._helpConfiguration=t,this)}configureOutput(t){return t===void 0?this._outputConfiguration:(this._outputConfiguration={...this._outputConfiguration,...t},this)}showHelpAfterError(t=!0){return typeof t!="string"&&(t=!!t),this._showHelpAfterError=t,this}showSuggestionAfterError(t=!0){return this._showSuggestionAfterError=!!t,this}addCommand(t,o){if(!t._name)throw new Error(`Command passed to .addCommand() must have a name
15
+ - specify the name in Command constructor or using .name()`);return o=o||{},o.isDefault&&(this._defaultCommandName=t._name),(o.noHelp||o.hidden)&&(t._hidden=!0),this._registerCommand(t),t.parent=this,t._checkForBrokenPassThrough(),this}createArgument(t,o){return new Xu(t,o)}argument(t,o,i,r){let n=this.createArgument(t,o);return typeof i=="function"?n.default(r).argParser(i):n.default(i),this.addArgument(n),this}arguments(t){return t.trim().split(/ +/).forEach(o=>{this.argument(o)}),this}addArgument(t){let o=this.registeredArguments.slice(-1)[0];if(o?.variadic)throw new Error(`only the last argument can be variadic '${o.name()}'`);if(t.required&&t.defaultValue!==void 0&&t.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${t.name()}'`);return this.registeredArguments.push(t),this}helpCommand(t,o){if(typeof t=="boolean")return this._addImplicitHelpCommand=t,t&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let i=t??"help [command]",[,r,n]=i.match(/([^ ]+) *(.*)/),s=o??"display help for command",a=this.createCommand(r);return a.helpOption(!1),n&&a.arguments(n),s&&a.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=a,(t||o)&&this._initCommandGroup(a),this}addHelpCommand(t,o){return typeof t!="object"?(this.helpCommand(t,o),this):(this._addImplicitHelpCommand=!0,this._helpCommand=t,this._initCommandGroup(t),this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(t,o){let i=["preSubcommand","preAction","postAction"];if(!i.includes(t))throw new Error(`Unexpected value for event passed to hook : '${t}'.
16
16
  Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._lifeCycleHooks[t].push(o):this._lifeCycleHooks[t]=[o],this}exitOverride(t){return t?this._exitCallback=t:this._exitCallback=o=>{if(o.code!=="commander.executeSubCommandAsync")throw o},this}_exit(t,o,i){this._exitCallback&&this._exitCallback(new $i(t,o,i)),J.exit(t)}action(t){let o=i=>{let r=this.registeredArguments.length,n=i.slice(0,r);return this._storeOptionsAsProperties?n[r]=this:n[r]=this.opts(),n.push(this),t.apply(this,n)};return this._actionHandler=o,this}createOption(t,o){return new zr(t,o)}_callParseArg(t,o,i,r){try{return t.parseArg(o,i)}catch(n){if(n.code==="commander.invalidArgument"){let s=`${r} ${n.message}`;this.error(s,{exitCode:n.exitCode,code:n.code})}throw n}}_registerOption(t){let o=t.short&&this._findOption(t.short)||t.long&&this._findOption(t.long);if(o){let i=t.long&&this._findOption(t.long)?t.long:t.short;throw new Error(`Cannot add option '${t.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${i}'
17
17
  - already used by option '${o.flags}'`)}this._initOptionGroup(t),this.options.push(t)}_registerCommand(t){let o=r=>[r.name()].concat(r.aliases()),i=o(t).find(r=>this._findCommand(r));if(i){let r=o(this._findCommand(i)).join("|"),n=o(t).join("|");throw new Error(`cannot add command '${n}' as already have command '${r}'`)}this._initCommandGroup(t),this.commands.push(t)}addOption(t){this._registerOption(t);let o=t.name(),i=t.attributeName();if(t.negate){let n=t.long.replace(/^--no-/,"--");this._findOption(n)||this.setOptionValueWithSource(i,t.defaultValue===void 0?!0:t.defaultValue,"default")}else t.defaultValue!==void 0&&this.setOptionValueWithSource(i,t.defaultValue,"default");let r=(n,s,a)=>{n==null&&t.presetArg!==void 0&&(n=t.presetArg);let l=this.getOptionValue(i);n!==null&&t.parseArg?n=this._callParseArg(t,n,l,s):n!==null&&t.variadic&&(n=t._collectValue(n,l)),n==null&&(t.negate?n=!1:t.isBoolean()||t.optional?n=!0:n=""),this.setOptionValueWithSource(i,n,a)};return this.on("option:"+o,n=>{let s=`error: option '${t.flags}' argument '${n}' is invalid.`;r(n,s,"cli")}),t.envVar&&this.on("optionEnv:"+o,n=>{let s=`error: option '${t.flags}' value '${n}' from env '${t.envVar}' is invalid.`;r(n,s,"env")}),this}_optionEx(t,o,i,r,n){if(typeof o=="object"&&o instanceof zr)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let s=this.createOption(o,i);if(s.makeOptionMandatory(!!t.mandatory),typeof r=="function")s.default(n).argParser(r);else if(r instanceof RegExp){let a=r;r=(l,d)=>{let c=a.exec(l);return c?c[0]:d},s.default(n).argParser(r)}else s.default(r);return this.addOption(s)}option(t,o,i,r){return this._optionEx({},t,o,i,r)}requiredOption(t,o,i,r){return this._optionEx({mandatory:!0},t,o,i,r)}combineFlagAndOptionalValue(t=!0){return this._combineFlagAndOptionalValue=!!t,this}allowUnknownOption(t=!0){return this._allowUnknownOption=!!t,this}allowExcessArguments(t=!0){return this._allowExcessArguments=!!t,this}enablePositionalOptions(t=!0){return this._enablePositionalOptions=!!t,this}passThroughOptions(t=!0){return this._passThroughOptions=!!t,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(t=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!t,this}getOptionValue(t){return this._storeOptionsAsProperties?this[t]:this._optionValues[t]}setOptionValue(t,o){return this.setOptionValueWithSource(t,o,void 0)}setOptionValueWithSource(t,o,i){return this._storeOptionsAsProperties?this[t]=o:this._optionValues[t]=o,this._optionValueSources[t]=i,this}getOptionValueSource(t){return this._optionValueSources[t]}getOptionValueSourceWithGlobals(t){let o;return this._getCommandAndAncestors().forEach(i=>{i.getOptionValueSource(t)!==void 0&&(o=i.getOptionValueSource(t))}),o}_prepareUserArgs(t,o){if(t!==void 0&&!Array.isArray(t))throw new Error("first parameter to parse must be array or undefined");if(o=o||{},t===void 0&&o.from===void 0){J.versions?.electron&&(o.from="electron");let r=J.execArgv??[];(r.includes("-e")||r.includes("--eval")||r.includes("-p")||r.includes("--print"))&&(o.from="eval")}t===void 0&&(t=J.argv),this.rawArgs=t.slice();let i;switch(o.from){case void 0:case"node":this._scriptPath=t[1],i=t.slice(2);break;case"electron":J.defaultApp?(this._scriptPath=t[1],i=t.slice(2)):i=t.slice(1);break;case"user":i=t.slice(0);break;case"eval":i=t.slice(1);break;default:throw new Error(`unexpected parse option { from: '${o.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",i}parse(t,o){this._prepareForParse();let i=this._prepareUserArgs(t,o);return this._parseCommand([],i),this}async parseAsync(t,o){this._prepareForParse();let i=this._prepareUserArgs(t,o);return await this._parseCommand([],i),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
18
18
  - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(t,o,i){if(Ko.existsSync(t))return;let r=o?`searched for local subcommand relative to directory '${o}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",n=`'${t}' does not exist
@@ -21,12 +21,12 @@ Expecting one of '${i.join("', '")}'`);return this._lifeCycleHooks[t]?this._life
21
21
  - ${r}`;throw new Error(n)}_executeSubCommand(t,o){o=o.slice();let i=!1,r=[".js",".ts",".tsx",".mjs",".cjs"];function n(c,m){let f=et.resolve(c,m);if(Ko.existsSync(f))return f;if(r.includes(et.extname(m)))return;let b=r.find(h=>Ko.existsSync(`${f}${h}`));if(b)return`${f}${b}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=t._executableFile||`${this._name}-${t._name}`,a=this._executableDir||"";if(this._scriptPath){let c;try{c=Ko.realpathSync(this._scriptPath)}catch{c=this._scriptPath}a=et.resolve(et.dirname(c),a)}if(a){let c=n(a,s);if(!c&&!t._executableFile&&this._scriptPath){let m=et.basename(this._scriptPath,et.extname(this._scriptPath));m!==this._name&&(c=n(a,`${m}-${t._name}`))}s=c||s}i=r.includes(et.extname(s));let l;J.platform!=="win32"?i?(o.unshift(s),o=Xr(J.execArgv).concat(o),l=Pi.spawn(J.argv[0],o,{stdio:"inherit"})):l=Pi.spawn(s,o,{stdio:"inherit"}):(this._checkForMissingExecutable(s,a,t._name),o.unshift(s),o=Xr(J.execArgv).concat(o),l=Pi.spawn(J.execPath,o,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(m=>{J.on(m,()=>{l.killed===!1&&l.exitCode===null&&l.kill(m)})});let d=this._exitCallback;l.on("close",c=>{c=c??1,d?d(new $i(c,"commander.executeSubCommandAsync","(close)")):J.exit(c)}),l.on("error",c=>{if(c.code==="ENOENT")this._checkForMissingExecutable(s,a,t._name);else if(c.code==="EACCES")throw new Error(`'${s}' not executable`);if(!d)J.exit(1);else{let m=new $i(1,"commander.executeSubCommandAsync","(error)");m.nestedError=c,d(m)}}),this.runningCommand=l}_dispatchSubcommand(t,o,i){let r=this._findCommand(t);r||this.help({error:!0}),r._prepareForParse();let n;return n=this._chainOrCallSubCommandHook(n,r,"preSubcommand"),n=this._chainOrCall(n,()=>{if(r._executableHandler)this._executeSubCommand(r,o.concat(i));else return r._parseCommand(o,i)}),n}_dispatchHelpCommand(t){t||this.help();let o=this._findCommand(t);return o&&!o._executableHandler&&o.help(),this._dispatchSubcommand(t,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((t,o)=>{t.required&&this.args[o]==null&&this.missingArgument(t.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let t=(i,r,n)=>{let s=r;if(r!==null&&i.parseArg){let a=`error: command-argument value '${r}' is invalid for argument '${i.name()}'.`;s=this._callParseArg(i,r,n,a)}return s};this._checkNumberOfArguments();let o=[];this.registeredArguments.forEach((i,r)=>{let n=i.defaultValue;i.variadic?r<this.args.length?(n=this.args.slice(r),i.parseArg&&(n=n.reduce((s,a)=>t(i,a,s),i.defaultValue))):n===void 0&&(n=[]):r<this.args.length&&(n=this.args[r],i.parseArg&&(n=t(i,n,i.defaultValue))),o[r]=n}),this.processedArgs=o}_chainOrCall(t,o){return t?.then&&typeof t.then=="function"?t.then(()=>o()):o()}_chainOrCallHooks(t,o){let i=t,r=[];return this._getCommandAndAncestors().reverse().filter(n=>n._lifeCycleHooks[o]!==void 0).forEach(n=>{n._lifeCycleHooks[o].forEach(s=>{r.push({hookedCommand:n,callback:s})})}),o==="postAction"&&r.reverse(),r.forEach(n=>{i=this._chainOrCall(i,()=>n.callback(n.hookedCommand,this))}),i}_chainOrCallSubCommandHook(t,o,i){let r=t;return this._lifeCycleHooks[i]!==void 0&&this._lifeCycleHooks[i].forEach(n=>{r=this._chainOrCall(r,()=>n(this,o))}),r}_parseCommand(t,o){let i=this.parseOptions(o);if(this._parseOptionsEnv(),this._parseOptionsImplied(),t=t.concat(i.operands),o=i.unknown,this.args=t.concat(o),t&&this._findCommand(t[0]))return this._dispatchSubcommand(t[0],t.slice(1),o);if(this._getHelpCommand()&&t[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(t[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(o),this._dispatchSubcommand(this._defaultCommandName,t,o);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(i.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=()=>{i.unknown.length>0&&this.unknownOption(i.unknown[0])},n=`command:${this.name()}`;if(this._actionHandler){r(),this._processArguments();let s;return s=this._chainOrCallHooks(s,"preAction"),s=this._chainOrCall(s,()=>this._actionHandler(this.processedArgs)),this.parent&&(s=this._chainOrCall(s,()=>{this.parent.emit(n,t,o)})),s=this._chainOrCallHooks(s,"postAction"),s}if(this.parent?.listenerCount(n))r(),this._processArguments(),this.parent.emit(n,t,o);else if(t.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",t,o);this.listenerCount("command:*")?this.emit("command:*",t,o):this.commands.length?this.unknownCommand():(r(),this._processArguments())}else this.commands.length?(r(),this.help({error:!0})):(r(),this._processArguments())}_findCommand(t){if(t)return this.commands.find(o=>o._name===t||o._aliases.includes(t))}_findOption(t){return this.options.find(o=>o.is(t))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(t=>{t.options.forEach(o=>{o.mandatory&&t.getOptionValue(o.attributeName())===void 0&&t.missingMandatoryOptionValue(o)})})}_checkForConflictingLocalOptions(){let t=this.options.filter(i=>{let r=i.attributeName();return this.getOptionValue(r)===void 0?!1:this.getOptionValueSource(r)!=="default"});t.filter(i=>i.conflictsWith.length>0).forEach(i=>{let r=t.find(n=>i.conflictsWith.includes(n.attributeName()));r&&this._conflictingOption(i,r)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(t=>{t._checkForConflictingLocalOptions()})}parseOptions(t){let o=[],i=[],r=o;function n(c){return c.length>1&&c[0]==="-"}let s=c=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(c)?!this._getCommandAndAncestors().some(m=>m.options.map(f=>f.short).some(f=>/^-\d$/.test(f))):!1,a=null,l=null,d=0;for(;d<t.length||l;){let c=l??t[d++];if(l=null,c==="--"){r===i&&r.push(c),r.push(...t.slice(d));break}if(a&&(!n(c)||s(c))){this.emit(`option:${a.name()}`,c);continue}if(a=null,n(c)){let m=this._findOption(c);if(m){if(m.required){let f=t[d++];f===void 0&&this.optionMissingArgument(m),this.emit(`option:${m.name()}`,f)}else if(m.optional){let f=null;d<t.length&&(!n(t[d])||s(t[d]))&&(f=t[d++]),this.emit(`option:${m.name()}`,f)}else this.emit(`option:${m.name()}`);a=m.variadic?m:null;continue}}if(c.length>2&&c[0]==="-"&&c[1]!=="-"){let m=this._findOption(`-${c[1]}`);if(m){m.required||m.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${m.name()}`,c.slice(2)):(this.emit(`option:${m.name()}`),l=`-${c.slice(2)}`);continue}}if(/^--[^=]+=/.test(c)){let m=c.indexOf("="),f=this._findOption(c.slice(0,m));if(f&&(f.required||f.optional)){this.emit(`option:${f.name()}`,c.slice(m+1));continue}}if(r===o&&n(c)&&!(this.commands.length===0&&s(c))&&(r=i),(this._enablePositionalOptions||this._passThroughOptions)&&o.length===0&&i.length===0){if(this._findCommand(c)){o.push(c),i.push(...t.slice(d));break}else if(this._getHelpCommand()&&c===this._getHelpCommand().name()){o.push(c,...t.slice(d));break}else if(this._defaultCommandName){i.push(c,...t.slice(d));break}}if(this._passThroughOptions){r.push(c,...t.slice(d));break}r.push(c)}return{operands:o,unknown:i}}opts(){if(this._storeOptionsAsProperties){let t={},o=this.options.length;for(let i=0;i<o;i++){let r=this.options[i].attributeName();t[r]=r===this._versionOptionName?this._version:this[r]}return t}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((t,o)=>Object.assign(t,o.opts()),{})}error(t,o){this._outputConfiguration.outputError(`${t}
22
22
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
23
23
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
24
- `),this.outputHelp({error:!0}));let i=o||{},r=i.exitCode||1,n=i.code||"commander.error";this._exit(r,n,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in J.env){let o=t.attributeName();(this.getOptionValue(o)===void 0||["default","config","env"].includes(this.getOptionValueSource(o)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,J.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new tm(this.options),o=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&o(i.attributeName())&&t.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(r=>!o(r)).forEach(r=>{this.setOptionValueWithSource(r,i.implied[r],"implied")})})}missingArgument(t){let o=`error: missing required argument '${t}'`;this.error(o,{code:"commander.missingArgument"})}optionMissingArgument(t){let o=`error: option '${t.flags}' argument missing`;this.error(o,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let o=`error: required option '${t.flags}' not specified`;this.error(o,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,o){let i=s=>{let a=s.attributeName(),l=this.getOptionValue(a),d=this.options.find(m=>m.negate&&a===m.attributeName()),c=this.options.find(m=>!m.negate&&a===m.attributeName());return d&&(d.presetArg===void 0&&l===!1||d.presetArg!==void 0&&l===d.presetArg)?d:c||s},r=s=>{let a=i(s),l=a.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},n=`error: ${r(t)} cannot be used with ${r(o)}`;this.error(n,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let o="";if(t.startsWith("--")&&this._showSuggestionAfterError){let r=[],n=this;do{let s=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);r=r.concat(s),n=n.parent}while(n&&!n._enablePositionalOptions);o=Yr(t,r)}let i=`error: unknown option '${t}'${o}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let o=this.registeredArguments.length,i=o===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${o} argument${i} but got ${t.length}.`;this.error(n,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],o="";if(this._showSuggestionAfterError){let r=[];this.createHelp().visibleCommands(this).forEach(n=>{r.push(n.name()),n.alias()&&r.push(n.alias())}),o=Yr(t,r)}let i=`error: unknown command '${t}'${o}`;this.error(i,{code:"commander.unknownCommand"})}version(t,o,i){if(t===void 0)return this._version;this._version=t,o=o||"-V, --version",i=i||"output the version number";let r=this.createOption(o,i);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${t}
25
- `),this._exit(0,"commander.version",t)}),this}description(t,o){return t===void 0&&o===void 0?this._description:(this._description=t,o&&(this._argsDescription=o),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let o=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(o=this.commands[this.commands.length-1]),t===o._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let r=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${r}'`)}return o._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(o=>this.alias(o)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let o=this.registeredArguments.map(i=>Xu(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?o:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}helpGroup(t){return t===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=t,this)}commandsGroup(t){return t===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=t,this)}optionsGroup(t){return t===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=t,this)}_initOptionGroup(t){this._defaultOptionGroup&&!t.helpGroupHeading&&t.helpGroup(this._defaultOptionGroup)}_initCommandGroup(t){this._defaultCommandGroup&&!t.helpGroup()&&t.helpGroup(this._defaultCommandGroup)}nameFromFilename(t){return this._name=et.basename(t,et.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let o=this.createHelp(),i=this._getOutputContext(t);o.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let r=o.formatHelp(this,o);return i.hasColors?r:this._outputConfiguration.stripColor(r)}_getOutputContext(t){t=t||{};let o=!!t.error,i,r,n;return o?(i=a=>this._outputConfiguration.writeErr(a),r=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(i=a=>this._outputConfiguration.writeOut(a),r=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:o,write:a=>(r||(a=this._outputConfiguration.stripColor(a)),i(a)),hasColors:r,helpWidth:n}}outputHelp(t){let o;typeof t=="function"&&(o=t,t=void 0);let i=this._getOutputContext(t),r={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let n=this.helpInformation({error:i.error});if(o&&(n=o(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(t,o){return typeof t=="boolean"?(t?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(t??"-h, --help",o??"display help for command"),(t||o)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this._initOptionGroup(t),this}help(t){this.outputHelp(t);let o=Number(J.exitCode??0);o===0&&t&&typeof t!="function"&&t.error&&(o=1),this._exit(o,"commander.help","(outputHelp)")}addHelpText(t,o){let i=["beforeAll","before","after","afterAll"];if(!i.includes(t))throw new Error(`Unexpected value for position to addHelpText.
24
+ `),this.outputHelp({error:!0}));let i=o||{},r=i.exitCode||1,n=i.code||"commander.error";this._exit(r,n,t)}_parseOptionsEnv(){this.options.forEach(t=>{if(t.envVar&&t.envVar in J.env){let o=t.attributeName();(this.getOptionValue(o)===void 0||["default","config","env"].includes(this.getOptionValueSource(o)))&&(t.required||t.optional?this.emit(`optionEnv:${t.name()}`,J.env[t.envVar]):this.emit(`optionEnv:${t.name()}`))}})}_parseOptionsImplied(){let t=new om(this.options),o=i=>this.getOptionValue(i)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(i));this.options.filter(i=>i.implied!==void 0&&o(i.attributeName())&&t.valueFromOption(this.getOptionValue(i.attributeName()),i)).forEach(i=>{Object.keys(i.implied).filter(r=>!o(r)).forEach(r=>{this.setOptionValueWithSource(r,i.implied[r],"implied")})})}missingArgument(t){let o=`error: missing required argument '${t}'`;this.error(o,{code:"commander.missingArgument"})}optionMissingArgument(t){let o=`error: option '${t.flags}' argument missing`;this.error(o,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(t){let o=`error: required option '${t.flags}' not specified`;this.error(o,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(t,o){let i=s=>{let a=s.attributeName(),l=this.getOptionValue(a),d=this.options.find(m=>m.negate&&a===m.attributeName()),c=this.options.find(m=>!m.negate&&a===m.attributeName());return d&&(d.presetArg===void 0&&l===!1||d.presetArg!==void 0&&l===d.presetArg)?d:c||s},r=s=>{let a=i(s),l=a.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},n=`error: ${r(t)} cannot be used with ${r(o)}`;this.error(n,{code:"commander.conflictingOption"})}unknownOption(t){if(this._allowUnknownOption)return;let o="";if(t.startsWith("--")&&this._showSuggestionAfterError){let r=[],n=this;do{let s=n.createHelp().visibleOptions(n).filter(a=>a.long).map(a=>a.long);r=r.concat(s),n=n.parent}while(n&&!n._enablePositionalOptions);o=Yr(t,r)}let i=`error: unknown option '${t}'${o}`;this.error(i,{code:"commander.unknownOption"})}_excessArguments(t){if(this._allowExcessArguments)return;let o=this.registeredArguments.length,i=o===1?"":"s",n=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${o} argument${i} but got ${t.length}.`;this.error(n,{code:"commander.excessArguments"})}unknownCommand(){let t=this.args[0],o="";if(this._showSuggestionAfterError){let r=[];this.createHelp().visibleCommands(this).forEach(n=>{r.push(n.name()),n.alias()&&r.push(n.alias())}),o=Yr(t,r)}let i=`error: unknown command '${t}'${o}`;this.error(i,{code:"commander.unknownCommand"})}version(t,o,i){if(t===void 0)return this._version;this._version=t,o=o||"-V, --version",i=i||"output the version number";let r=this.createOption(o,i);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${t}
25
+ `),this._exit(0,"commander.version",t)}),this}description(t,o){return t===void 0&&o===void 0?this._description:(this._description=t,o&&(this._argsDescription=o),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let o=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(o=this.commands[this.commands.length-1]),t===o._name)throw new Error("Command alias can't be the same as its name");let i=this.parent?._findCommand(t);if(i){let r=[i.name()].concat(i.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${r}'`)}return o._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(o=>this.alias(o)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let o=this.registeredArguments.map(i=>Zu(i));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?o:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}helpGroup(t){return t===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=t,this)}commandsGroup(t){return t===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=t,this)}optionsGroup(t){return t===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=t,this)}_initOptionGroup(t){this._defaultOptionGroup&&!t.helpGroupHeading&&t.helpGroup(this._defaultOptionGroup)}_initCommandGroup(t){this._defaultCommandGroup&&!t.helpGroup()&&t.helpGroup(this._defaultCommandGroup)}nameFromFilename(t){return this._name=et.basename(t,et.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let o=this.createHelp(),i=this._getOutputContext(t);o.prepareContext({error:i.error,helpWidth:i.helpWidth,outputHasColors:i.hasColors});let r=o.formatHelp(this,o);return i.hasColors?r:this._outputConfiguration.stripColor(r)}_getOutputContext(t){t=t||{};let o=!!t.error,i,r,n;return o?(i=a=>this._outputConfiguration.writeErr(a),r=this._outputConfiguration.getErrHasColors(),n=this._outputConfiguration.getErrHelpWidth()):(i=a=>this._outputConfiguration.writeOut(a),r=this._outputConfiguration.getOutHasColors(),n=this._outputConfiguration.getOutHelpWidth()),{error:o,write:a=>(r||(a=this._outputConfiguration.stripColor(a)),i(a)),hasColors:r,helpWidth:n}}outputHelp(t){let o;typeof t=="function"&&(o=t,t=void 0);let i=this._getOutputContext(t),r={error:i.error,write:i.write,command:this};this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let n=this.helpInformation({error:i.error});if(o&&(n=o(n),typeof n!="string"&&!Buffer.isBuffer(n)))throw new Error("outputHelp callback must return a string or a Buffer");i.write(n),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(t,o){return typeof t=="boolean"?(t?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(t??"-h, --help",o??"display help for command"),(t||o)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this._initOptionGroup(t),this}help(t){this.outputHelp(t);let o=Number(J.exitCode??0);o===0&&t&&typeof t!="function"&&t.error&&(o=1),this._exit(o,"commander.help","(outputHelp)")}addHelpText(t,o){let i=["beforeAll","before","after","afterAll"];if(!i.includes(t))throw new Error(`Unexpected value for position to addHelpText.
26
26
  Expecting one of '${i.join("', '")}'`);let r=`${t}Help`;return this.on(r,n=>{let s;typeof o=="function"?s=o({error:n.error,command:n.command}):s=o,s&&n.write(`${s}
27
- `)}),this}_outputHelpIfRequested(t){let o=this._getHelpOption();o&&t.find(r=>o.is(r))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Xr(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let o,i="127.0.0.1",r="9229",n;return(n=t.match(/^(--inspect(-brk)?)$/))!==null?o=n[1]:(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(o=n[1],/^\d+$/.test(n[3])?r=n[3]:i=n[3]):(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(o=n[1],i=n[3],r=n[4]),o&&r!=="0"?`${o}=${i}:${parseInt(r)+1}`:t})}function Hi(){if(J.env.NO_COLOR||J.env.FORCE_COLOR==="0"||J.env.FORCE_COLOR==="false")return!1;if(J.env.FORCE_COLOR||J.env.CLICOLOR_FORCE!==void 0)return!0}Qi.Command=Gi;Qi.useColor=Hi});var rn=Re($e=>{var{Argument:en}=vo(),{Command:Ni}=Zr(),{CommanderError:om,InvalidArgumentError:tn}=to(),{Help:im}=Bi(),{Option:on}=ji();$e.program=new Ni;$e.createCommand=e=>new Ni(e);$e.createOption=(e,t)=>new on(e,t);$e.createArgument=(e,t)=>new en(e,t);$e.Command=Ni;$e.Option=on;$e.Argument=en;$e.Help=im;$e.CommanderError=om;$e.InvalidArgumentError=tn;$e.InvalidOptionArgumentError=tn});var sn=Re((Be,nn)=>{var Me=rn();Be=nn.exports={};Be.program=new Me.Command;Be.Argument=Me.Argument;Be.Command=Me.Command;Be.CommanderError=Me.CommanderError;Be.Help=Me.Help;Be.InvalidArgumentError=Me.InvalidArgumentError;Be.InvalidOptionArgumentError=Me.InvalidArgumentError;Be.Option=Me.Option;Be.createCommand=e=>new Me.Command(e);Be.createOption=(e,t)=>new Me.Option(e,t);Be.createArgument=(e,t)=>new Me.Argument(e,t)});var Ve=Re((dh,Mi)=>{var ko=process||{},cn=ko.argv||[],xo=ko.env||{},rm=!(xo.NO_COLOR||cn.includes("--no-color"))&&(!!xo.FORCE_COLOR||cn.includes("--color")||ko.platform==="win32"||(ko.stdout||{}).isTTY&&xo.TERM!=="dumb"||!!xo.CI),nm=(e,t,o=e)=>i=>{let r=""+i,n=r.indexOf(t,e.length);return~n?e+sm(r,t,o,n)+t:e+r+t},sm=(e,t,o,i)=>{let r="",n=0;do r+=e.substring(n,i)+o,n=i+t.length,i=e.indexOf(t,n);while(~i);return r+e.substring(n)},dn=(e=rm)=>{let t=e?nm:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};Mi.exports=dn();Mi.exports.createColors=dn});var Vi=Re((yh,Kn)=>{"use strict";var Ji={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let o="";return e<0?o+=`\x1B[${-e}D`:e>0&&(o+=`\x1B[${e}C`),t<0?o+=`\x1B[${-t}A`:t>0&&(o+=`\x1B[${t}B`),o},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Sm={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},vm={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let o=0;o<e;o++)t+=this.line+(o<e-1?Ji.up():"");return e&&(t+=Ji.left),t}};Kn.exports={cursor:Ji,scroll:Sm,erase:vm,beep:"\x07"}});var Zi,Nn=he(()=>{Zi={name:"resend-cli",version:"2.20.1",description:"The official CLI for Resend",license:"MIT",repository:{type:"git",url:"https://github.com/resend/resend-cli"},homepage:"https://github.com/resend/resend-cli#readme",keywords:["cli","resend","email","api","tanstack-intent"],engines:{node:">=22"},packageManager:"pnpm@11.8.0",files:["dist/cli.cjs","skills/"],type:"module",bin:{resend:"./dist/cli.cjs"},scripts:{dev:"tsx src/cli.ts","dev:watch":"tsx --watch src/cli.ts",build:"node scripts/build.mjs","build:bin":"pnpm build && pkg dist/cli.cjs --config package.json --compress Brotli --target node24 --output dist/resend",lint:"biome check .","lint:fix":"biome check --write .",typecheck:"tsc --noEmit",test:"vitest run","test:e2e":"vitest run --config vitest.config.e2e.ts",prepack:"pnpm install && pnpm build && node scripts/verify-bundle.mjs"},dependencies:{"@clack/prompts":"1.4.0","@commander-js/extra-typings":"14.0.0",commander:"14.0.3",esbuild:"0.28.1","esbuild-wasm":"0.28.0",picocolors:"1.1.1",resend:"6.27.0"},pkg:{scripts:["node_modules/esbuild-wasm/bin/esbuild","node_modules/esbuild-wasm/wasm_exec.js","node_modules/esbuild-wasm/wasm_exec_node.js"],assets:["node_modules/esbuild-wasm/esbuild.wasm"]},devDependencies:{"@biomejs/biome":"2.4.11","@types/node":"24.12.4","@yao-pkg/pkg":"6.20.0",tsx:"4.22.4",typescript:"5.9.3",vitest:"4.1.9"}}});var ne,Mn,St=he(()=>{"use strict";Nn();ne=Zi.version,Mn=Zi.name});var ts=Re(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});Ho.timingSafeEqual=void 0;function es(e,t=""){if(!e)throw new Error(t)}function mp(e,t){if(e.byteLength!==t.byteLength)return!1;e instanceof DataView||(e=new DataView(ArrayBuffer.isView(e)?e.buffer:e)),t instanceof DataView||(t=new DataView(ArrayBuffer.isView(t)?t.buffer:t)),es(e instanceof DataView),es(t instanceof DataView);let o=e.byteLength,i=0,r=-1;for(;++r<o;)i|=e.getUint8(r)^t.getUint8(r);return i===0}Ho.timingSafeEqual=mp});var rs=Re(Ie=>{"use strict";var pp=Ie&&Ie.__extends||(function(){var e=function(t,o){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,r){i.__proto__=r}||function(i,r){for(var n in r)r.hasOwnProperty(n)&&(i[n]=r[n])},e(t,o)};return function(t,o){e(t,o);function i(){this.constructor=t}t.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)}})();Object.defineProperty(Ie,"__esModule",{value:!0});var le=256,lr=(function(){function e(t){t===void 0&&(t="="),this._paddingCharacter=t}return e.prototype.encodedLength=function(t){return this._paddingCharacter?(t+2)/3*4|0:(t*8+5)/6|0},e.prototype.encode=function(t){for(var o="",i=0;i<t.length-2;i+=3){var r=t[i]<<16|t[i+1]<<8|t[i+2];o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),o+=this._encodeByte(r>>>6&63),o+=this._encodeByte(r>>>0&63)}var n=t.length-i;if(n>0){var r=t[i]<<16|(n===2?t[i+1]<<8:0);o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),n===2?o+=this._encodeByte(r>>>6&63):o+=this._paddingCharacter||"",o+=this._paddingCharacter||""}return o},e.prototype.maxDecodedLength=function(t){return this._paddingCharacter?t/4*3|0:(t*6+7)/8|0},e.prototype.decodedLength=function(t){return this.maxDecodedLength(t.length-this._getPaddingLength(t))},e.prototype.decode=function(t){if(t.length===0)return new Uint8Array(0);for(var o=this._getPaddingLength(t),i=t.length-o,r=new Uint8Array(this.maxDecodedLength(i)),n=0,s=0,a=0,l=0,d=0,c=0,m=0;s<i-4;s+=4)l=this._decodeChar(t.charCodeAt(s+0)),d=this._decodeChar(t.charCodeAt(s+1)),c=this._decodeChar(t.charCodeAt(s+2)),m=this._decodeChar(t.charCodeAt(s+3)),r[n++]=l<<2|d>>>4,r[n++]=d<<4|c>>>2,r[n++]=c<<6|m,a|=l&le,a|=d&le,a|=c&le,a|=m&le;if(s<i-1&&(l=this._decodeChar(t.charCodeAt(s)),d=this._decodeChar(t.charCodeAt(s+1)),r[n++]=l<<2|d>>>4,a|=l&le,a|=d&le),s<i-2&&(c=this._decodeChar(t.charCodeAt(s+2)),r[n++]=d<<4|c>>>2,a|=c&le),s<i-3&&(m=this._decodeChar(t.charCodeAt(s+3)),r[n++]=c<<6|m,a|=m&le),a!==0)throw new Error("Base64Coder: incorrect characters for decoding");return r},e.prototype._encodeByte=function(t){var o=t;return o+=65,o+=25-t>>>8&6,o+=51-t>>>8&-75,o+=61-t>>>8&-15,o+=62-t>>>8&3,String.fromCharCode(o)},e.prototype._decodeChar=function(t){var o=le;return o+=(42-t&t-44)>>>8&-le+t-43+62,o+=(46-t&t-48)>>>8&-le+t-47+63,o+=(47-t&t-58)>>>8&-le+t-48+52,o+=(64-t&t-91)>>>8&-le+t-65+0,o+=(96-t&t-123)>>>8&-le+t-97+26,o},e.prototype._getPaddingLength=function(t){var o=0;if(this._paddingCharacter){for(var i=t.length-1;i>=0&&t[i]===this._paddingCharacter;i--)o++;if(t.length<4||o>2)throw new Error("Base64Coder: incorrect padding")}return o},e})();Ie.Coder=lr;var co=new lr;function fp(e){return co.encode(e)}Ie.encode=fp;function gp(e){return co.decode(e)}Ie.decode=gp;var os=(function(e){pp(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype._encodeByte=function(o){var i=o;return i+=65,i+=25-o>>>8&6,i+=51-o>>>8&-75,i+=61-o>>>8&-13,i+=62-o>>>8&49,String.fromCharCode(i)},t.prototype._decodeChar=function(o){var i=le;return i+=(44-o&o-46)>>>8&-le+o-45+62,i+=(94-o&o-96)>>>8&-le+o-95+63,i+=(47-o&o-58)>>>8&-le+o-48+52,i+=(64-o&o-91)>>>8&-le+o-65+0,i+=(96-o&o-123)>>>8&-le+o-97+26,i},t})(lr);Ie.URLSafeCoder=os;var is=new os;function hp(e){return is.encode(e)}Ie.encodeURLSafe=hp;function Ap(e){return is.decode(e)}Ie.decodeURLSafe=Ap;Ie.encodedLength=function(e){return co.encodedLength(e)};Ie.maxDecodedLength=function(e){return co.maxDecodedLength(e)};Ie.decodedLength=function(e){return co.decodedLength(e)}});var ss=Re((ns,Qo)=>{(function(e,t){var o={};t(o);var i=o.default;for(var r in o)i[r]=o[r];typeof Qo=="object"&&typeof Qo.exports=="object"?Qo.exports=i:typeof define=="function"&&define.amd?define(function(){return i}):e.sha256=i})(ns,function(e){"use strict";e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function o(m,f,b,h,A){for(var w,S,v,K,x,D,I,G,E,N,we,ie,wt;A>=64;){for(w=f[0],S=f[1],v=f[2],K=f[3],x=f[4],D=f[5],I=f[6],G=f[7],N=0;N<16;N++)we=h+N*4,m[N]=(b[we]&255)<<24|(b[we+1]&255)<<16|(b[we+2]&255)<<8|b[we+3]&255;for(N=16;N<64;N++)E=m[N-2],ie=(E>>>17|E<<15)^(E>>>19|E<<13)^E>>>10,E=m[N-15],wt=(E>>>7|E<<25)^(E>>>18|E<<14)^E>>>3,m[N]=(ie+m[N-7]|0)+(wt+m[N-16]|0);for(N=0;N<64;N++)ie=(((x>>>6|x<<26)^(x>>>11|x<<21)^(x>>>25|x<<7))+(x&D^~x&I)|0)+(G+(t[N]+m[N]|0)|0)|0,wt=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&S^w&v^S&v)|0,G=I,I=D,D=x,x=K+ie|0,K=v,v=S,S=w,w=ie+wt|0;f[0]+=w,f[1]+=S,f[2]+=v,f[3]+=K,f[4]+=x,f[5]+=D,f[6]+=I,f[7]+=G,h+=64,A-=64}return h}var i=(function(){function m(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return m.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},m.prototype.clean=function(){for(var f=0;f<this.buffer.length;f++)this.buffer[f]=0;for(var f=0;f<this.temp.length;f++)this.temp[f]=0;this.reset()},m.prototype.update=function(f,b){if(b===void 0&&(b=f.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var h=0;if(this.bytesHashed+=b,this.bufferLength>0){for(;this.bufferLength<64&&b>0;)this.buffer[this.bufferLength++]=f[h++],b--;this.bufferLength===64&&(o(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(b>=64&&(h=o(this.temp,this.state,f,h,b),b%=64);b>0;)this.buffer[this.bufferLength++]=f[h++],b--;return this},m.prototype.finish=function(f){if(!this.finished){var b=this.bytesHashed,h=this.bufferLength,A=b/536870912|0,w=b<<3,S=b%64<56?64:128;this.buffer[h]=128;for(var v=h+1;v<S-8;v++)this.buffer[v]=0;this.buffer[S-8]=A>>>24&255,this.buffer[S-7]=A>>>16&255,this.buffer[S-6]=A>>>8&255,this.buffer[S-5]=A>>>0&255,this.buffer[S-4]=w>>>24&255,this.buffer[S-3]=w>>>16&255,this.buffer[S-2]=w>>>8&255,this.buffer[S-1]=w>>>0&255,o(this.temp,this.state,this.buffer,0,S),this.finished=!0}for(var v=0;v<8;v++)f[v*4+0]=this.state[v]>>>24&255,f[v*4+1]=this.state[v]>>>16&255,f[v*4+2]=this.state[v]>>>8&255,f[v*4+3]=this.state[v]>>>0&255;return this},m.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},m.prototype._saveState=function(f){for(var b=0;b<this.state.length;b++)f[b]=this.state[b]},m.prototype._restoreState=function(f,b){for(var h=0;h<this.state.length;h++)this.state[h]=f[h];this.bytesHashed=b,this.finished=!1,this.bufferLength=0},m})();e.Hash=i;var r=(function(){function m(f){this.inner=new i,this.outer=new i,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var b=new Uint8Array(this.blockSize);if(f.length>this.blockSize)new i().update(f).finish(b).clean();else for(var h=0;h<f.length;h++)b[h]=f[h];for(var h=0;h<b.length;h++)b[h]^=54;this.inner.update(b);for(var h=0;h<b.length;h++)b[h]^=106;this.outer.update(b),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(var h=0;h<b.length;h++)b[h]=0}return m.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},m.prototype.clean=function(){for(var f=0;f<this.istate.length;f++)this.ostate[f]=this.istate[f]=0;this.inner.clean(),this.outer.clean()},m.prototype.update=function(f){return this.inner.update(f),this},m.prototype.finish=function(f){return this.outer.finished?this.outer.finish(f):(this.inner.finish(f),this.outer.update(f,this.digestLength).finish(f)),this},m.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},m})();e.HMAC=r;function n(m){var f=new i().update(m),b=f.digest();return f.clean(),b}e.hash=n,e.default=n;function s(m,f){var b=new r(m).update(f),h=b.digest();return b.clean(),h}e.hmac=s;function a(m,f,b,h){var A=h[0];if(A===0)throw new Error("hkdf: cannot expand more");f.reset(),A>1&&f.update(m),b&&f.update(b),f.update(h),f.finish(m),h[0]++}var l=new Uint8Array(e.digestLength);function d(m,f,b,h){f===void 0&&(f=l),h===void 0&&(h=32);for(var A=new Uint8Array([1]),w=s(f,m),S=new r(w),v=new Uint8Array(S.digestLength),K=v.length,x=new Uint8Array(h),D=0;D<h;D++)K===v.length&&(a(v,S,b,A),K=0),x[D]=v[K++];return S.clean(),v.fill(0),A.fill(0),x}e.hkdf=d;function c(m,f,b,h){for(var A=new r(m),w=A.digestLength,S=new Uint8Array(4),v=new Uint8Array(w),K=new Uint8Array(w),x=new Uint8Array(h),D=0;D*w<h;D++){var I=D+1;S[0]=I>>>24&255,S[1]=I>>>16&255,S[2]=I>>>8&255,S[3]=I>>>0&255,A.reset(),A.update(f),A.update(S),A.finish(K);for(var G=0;G<w;G++)v[G]=K[G];for(var G=2;G<=b;G++){A.reset(),A.update(K).finish(K);for(var E=0;E<w;E++)v[E]^=K[E]}for(var G=0;G<w&&D*w+G<h;G++)x[D*w+G]=v[G]}for(var D=0;D<w;D++)v[D]=K[D]=0;for(var D=0;D<4;D++)S[D]=0;return A.clean(),x}e.pbkdf2=c})});var cs=Re(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Tt.Webhook=Tt.WebhookVerificationError=void 0;var bp=ts(),as=rs(),yp=ss(),ls=300,cr=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="ExtendableError",this.stack=new Error(t).stack}},ut=class e extends cr{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="WebhookVerificationError"}};Tt.WebhookVerificationError=ut;var No=class e{constructor(t,o){if(!t)throw new Error("Secret can't be empty.");if(o?.format==="raw")t instanceof Uint8Array?this.key=t:this.key=Uint8Array.from(t,i=>i.charCodeAt(0));else{if(typeof t!="string")throw new Error("Expected secret to be of type string");t.startsWith(e.prefix)&&(t=t.substring(e.prefix.length)),this.key=as.decode(t)}}verify(t,o){let i={};for(let f of Object.keys(o))i[f.toLowerCase()]=o[f];let r=i["webhook-id"],n=i["webhook-signature"],s=i["webhook-timestamp"];if(!n||!r||!s)throw new ut("Missing required headers");let a=this.verifyTimestamp(s),d=this.sign(r,a,t).split(",")[1],c=n.split(" "),m=new globalThis.TextEncoder;for(let f of c){let[b,h]=f.split(",");if(b==="v1"&&(0,bp.timingSafeEqual)(m.encode(h),m.encode(d)))return JSON.parse(t.toString())}throw new ut("No matching signature found")}sign(t,o,i){if(typeof i!="string")if(i.constructor.name==="Buffer")i=i.toString();else throw new Error("Expected payload to be of type string or Buffer.");let r=new TextEncoder,n=Math.floor(o.getTime()/1e3),s=r.encode(`${t}.${n}.${i}`);return`v1,${as.encode(yp.hmac(this.key,s))}`}verifyTimestamp(t){let o=Math.floor(Date.now()/1e3),i=parseInt(t,10);if(isNaN(i))throw new ut("Invalid Signature Headers");if(o-i>ls)throw new ut("Message timestamp too old");if(i>o+ls)throw new ut("Message timestamp too new");return new Date(i*1e3)}};Tt.Webhook=No;No.prefix="whsec_"});var Mo,ws=he(()=>{"use strict";Mo=class extends Error{constructor(t){super(`Credentials file is corrupted or contains invalid JSON: ${t}
27
+ `)}),this}_outputHelpIfRequested(t){let o=this._getHelpOption();o&&t.find(r=>o.is(r))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Xr(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let o,i="127.0.0.1",r="9229",n;return(n=t.match(/^(--inspect(-brk)?)$/))!==null?o=n[1]:(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(o=n[1],/^\d+$/.test(n[3])?r=n[3]:i=n[3]):(n=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(o=n[1],i=n[3],r=n[4]),o&&r!=="0"?`${o}=${i}:${parseInt(r)+1}`:t})}function Hi(){if(J.env.NO_COLOR||J.env.FORCE_COLOR==="0"||J.env.FORCE_COLOR==="false")return!1;if(J.env.FORCE_COLOR||J.env.CLICOLOR_FORCE!==void 0)return!0}Qi.Command=Gi;Qi.useColor=Hi});var rn=Re($e=>{var{Argument:en}=vo(),{Command:Ni}=Zr(),{CommanderError:im,InvalidArgumentError:tn}=to(),{Help:rm}=Bi(),{Option:on}=ji();$e.program=new Ni;$e.createCommand=e=>new Ni(e);$e.createOption=(e,t)=>new on(e,t);$e.createArgument=(e,t)=>new en(e,t);$e.Command=Ni;$e.Option=on;$e.Argument=en;$e.Help=rm;$e.CommanderError=im;$e.InvalidArgumentError=tn;$e.InvalidOptionArgumentError=tn});var sn=Re((Be,nn)=>{var qe=rn();Be=nn.exports={};Be.program=new qe.Command;Be.Argument=qe.Argument;Be.Command=qe.Command;Be.CommanderError=qe.CommanderError;Be.Help=qe.Help;Be.InvalidArgumentError=qe.InvalidArgumentError;Be.InvalidOptionArgumentError=qe.InvalidArgumentError;Be.Option=qe.Option;Be.createCommand=e=>new qe.Command(e);Be.createOption=(e,t)=>new qe.Option(e,t);Be.createArgument=(e,t)=>new qe.Argument(e,t)});var ze=Re((uh,Mi)=>{var ko=process||{},cn=ko.argv||[],xo=ko.env||{},nm=!(xo.NO_COLOR||cn.includes("--no-color"))&&(!!xo.FORCE_COLOR||cn.includes("--color")||ko.platform==="win32"||(ko.stdout||{}).isTTY&&xo.TERM!=="dumb"||!!xo.CI),sm=(e,t,o=e)=>i=>{let r=""+i,n=r.indexOf(t,e.length);return~n?e+am(r,t,o,n)+t:e+r+t},am=(e,t,o,i)=>{let r="",n=0;do r+=e.substring(n,i)+o,n=i+t.length,i=e.indexOf(t,n);while(~i);return r+e.substring(n)},dn=(e=nm)=>{let t=e?sm:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};Mi.exports=dn();Mi.exports.createColors=dn});var Vi=Re((Ch,Kn)=>{"use strict";var Ji={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let o="";return e<0?o+=`\x1B[${-e}D`:e>0&&(o+=`\x1B[${e}C`),t<0?o+=`\x1B[${-t}A`:t>0&&(o+=`\x1B[${t}B`),o},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},vm={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},Km={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let o=0;o<e;o++)t+=this.line+(o<e-1?Ji.up():"");return e&&(t+=Ji.left),t}};Kn.exports={cursor:Ji,scroll:vm,erase:Km,beep:"\x07"}});var Zi,Nn=he(()=>{Zi={name:"resend-cli",version:"2.21.1",description:"The official CLI for Resend",license:"MIT",repository:{type:"git",url:"https://github.com/resend/resend-cli"},homepage:"https://github.com/resend/resend-cli#readme",keywords:["cli","resend","email","api","tanstack-intent"],engines:{node:">=22"},packageManager:"pnpm@11.8.0",files:["dist/cli.cjs","skills/"],type:"module",bin:{resend:"./dist/cli.cjs"},scripts:{dev:"tsx src/cli.ts","dev:watch":"tsx --watch src/cli.ts",build:"node scripts/build.mjs","build:bin":"pnpm build && pkg dist/cli.cjs --config package.json --compress Brotli --target node24 --output dist/resend",lint:"biome check .","lint:fix":"biome check --write .",typecheck:"tsc --noEmit",test:"vitest run","test:e2e":"vitest run --config vitest.config.e2e.ts",prepack:"pnpm install && pnpm build && node scripts/verify-bundle.mjs"},dependencies:{"@clack/prompts":"1.4.0","@commander-js/extra-typings":"14.0.0",commander:"14.0.3",esbuild:"0.28.1","esbuild-wasm":"0.28.0",picocolors:"1.1.1",resend:"6.28.0"},pkg:{scripts:["node_modules/esbuild-wasm/bin/esbuild","node_modules/esbuild-wasm/wasm_exec.js","node_modules/esbuild-wasm/wasm_exec_node.js"],assets:["node_modules/esbuild-wasm/esbuild.wasm"]},devDependencies:{"@biomejs/biome":"2.4.11","@types/node":"24.12.4","@yao-pkg/pkg":"6.20.0",tsx:"4.22.4",typescript:"5.9.3",vitest:"4.1.9"}}});var ne,Mn,St=he(()=>{"use strict";Nn();ne=Zi.version,Mn=Zi.name});var ts=Re(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});Ho.timingSafeEqual=void 0;function es(e,t=""){if(!e)throw new Error(t)}function pp(e,t){if(e.byteLength!==t.byteLength)return!1;e instanceof DataView||(e=new DataView(ArrayBuffer.isView(e)?e.buffer:e)),t instanceof DataView||(t=new DataView(ArrayBuffer.isView(t)?t.buffer:t)),es(e instanceof DataView),es(t instanceof DataView);let o=e.byteLength,i=0,r=-1;for(;++r<o;)i|=e.getUint8(r)^t.getUint8(r);return i===0}Ho.timingSafeEqual=pp});var rs=Re(Ie=>{"use strict";var fp=Ie&&Ie.__extends||(function(){var e=function(t,o){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,r){i.__proto__=r}||function(i,r){for(var n in r)r.hasOwnProperty(n)&&(i[n]=r[n])},e(t,o)};return function(t,o){e(t,o);function i(){this.constructor=t}t.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)}})();Object.defineProperty(Ie,"__esModule",{value:!0});var le=256,lr=(function(){function e(t){t===void 0&&(t="="),this._paddingCharacter=t}return e.prototype.encodedLength=function(t){return this._paddingCharacter?(t+2)/3*4|0:(t*8+5)/6|0},e.prototype.encode=function(t){for(var o="",i=0;i<t.length-2;i+=3){var r=t[i]<<16|t[i+1]<<8|t[i+2];o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),o+=this._encodeByte(r>>>6&63),o+=this._encodeByte(r>>>0&63)}var n=t.length-i;if(n>0){var r=t[i]<<16|(n===2?t[i+1]<<8:0);o+=this._encodeByte(r>>>18&63),o+=this._encodeByte(r>>>12&63),n===2?o+=this._encodeByte(r>>>6&63):o+=this._paddingCharacter||"",o+=this._paddingCharacter||""}return o},e.prototype.maxDecodedLength=function(t){return this._paddingCharacter?t/4*3|0:(t*6+7)/8|0},e.prototype.decodedLength=function(t){return this.maxDecodedLength(t.length-this._getPaddingLength(t))},e.prototype.decode=function(t){if(t.length===0)return new Uint8Array(0);for(var o=this._getPaddingLength(t),i=t.length-o,r=new Uint8Array(this.maxDecodedLength(i)),n=0,s=0,a=0,l=0,d=0,c=0,m=0;s<i-4;s+=4)l=this._decodeChar(t.charCodeAt(s+0)),d=this._decodeChar(t.charCodeAt(s+1)),c=this._decodeChar(t.charCodeAt(s+2)),m=this._decodeChar(t.charCodeAt(s+3)),r[n++]=l<<2|d>>>4,r[n++]=d<<4|c>>>2,r[n++]=c<<6|m,a|=l&le,a|=d&le,a|=c&le,a|=m&le;if(s<i-1&&(l=this._decodeChar(t.charCodeAt(s)),d=this._decodeChar(t.charCodeAt(s+1)),r[n++]=l<<2|d>>>4,a|=l&le,a|=d&le),s<i-2&&(c=this._decodeChar(t.charCodeAt(s+2)),r[n++]=d<<4|c>>>2,a|=c&le),s<i-3&&(m=this._decodeChar(t.charCodeAt(s+3)),r[n++]=c<<6|m,a|=m&le),a!==0)throw new Error("Base64Coder: incorrect characters for decoding");return r},e.prototype._encodeByte=function(t){var o=t;return o+=65,o+=25-t>>>8&6,o+=51-t>>>8&-75,o+=61-t>>>8&-15,o+=62-t>>>8&3,String.fromCharCode(o)},e.prototype._decodeChar=function(t){var o=le;return o+=(42-t&t-44)>>>8&-le+t-43+62,o+=(46-t&t-48)>>>8&-le+t-47+63,o+=(47-t&t-58)>>>8&-le+t-48+52,o+=(64-t&t-91)>>>8&-le+t-65+0,o+=(96-t&t-123)>>>8&-le+t-97+26,o},e.prototype._getPaddingLength=function(t){var o=0;if(this._paddingCharacter){for(var i=t.length-1;i>=0&&t[i]===this._paddingCharacter;i--)o++;if(t.length<4||o>2)throw new Error("Base64Coder: incorrect padding")}return o},e})();Ie.Coder=lr;var co=new lr;function gp(e){return co.encode(e)}Ie.encode=gp;function hp(e){return co.decode(e)}Ie.decode=hp;var os=(function(e){fp(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype._encodeByte=function(o){var i=o;return i+=65,i+=25-o>>>8&6,i+=51-o>>>8&-75,i+=61-o>>>8&-13,i+=62-o>>>8&49,String.fromCharCode(i)},t.prototype._decodeChar=function(o){var i=le;return i+=(44-o&o-46)>>>8&-le+o-45+62,i+=(94-o&o-96)>>>8&-le+o-95+63,i+=(47-o&o-58)>>>8&-le+o-48+52,i+=(64-o&o-91)>>>8&-le+o-65+0,i+=(96-o&o-123)>>>8&-le+o-97+26,i},t})(lr);Ie.URLSafeCoder=os;var is=new os;function Ap(e){return is.encode(e)}Ie.encodeURLSafe=Ap;function bp(e){return is.decode(e)}Ie.decodeURLSafe=bp;Ie.encodedLength=function(e){return co.encodedLength(e)};Ie.maxDecodedLength=function(e){return co.maxDecodedLength(e)};Ie.decodedLength=function(e){return co.decodedLength(e)}});var ss=Re((ns,Qo)=>{(function(e,t){var o={};t(o);var i=o.default;for(var r in o)i[r]=o[r];typeof Qo=="object"&&typeof Qo.exports=="object"?Qo.exports=i:typeof define=="function"&&define.amd?define(function(){return i}):e.sha256=i})(ns,function(e){"use strict";e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function o(m,f,b,h,A){for(var w,S,v,K,x,D,I,G,E,N,we,ie,wt;A>=64;){for(w=f[0],S=f[1],v=f[2],K=f[3],x=f[4],D=f[5],I=f[6],G=f[7],N=0;N<16;N++)we=h+N*4,m[N]=(b[we]&255)<<24|(b[we+1]&255)<<16|(b[we+2]&255)<<8|b[we+3]&255;for(N=16;N<64;N++)E=m[N-2],ie=(E>>>17|E<<15)^(E>>>19|E<<13)^E>>>10,E=m[N-15],wt=(E>>>7|E<<25)^(E>>>18|E<<14)^E>>>3,m[N]=(ie+m[N-7]|0)+(wt+m[N-16]|0);for(N=0;N<64;N++)ie=(((x>>>6|x<<26)^(x>>>11|x<<21)^(x>>>25|x<<7))+(x&D^~x&I)|0)+(G+(t[N]+m[N]|0)|0)|0,wt=((w>>>2|w<<30)^(w>>>13|w<<19)^(w>>>22|w<<10))+(w&S^w&v^S&v)|0,G=I,I=D,D=x,x=K+ie|0,K=v,v=S,S=w,w=ie+wt|0;f[0]+=w,f[1]+=S,f[2]+=v,f[3]+=K,f[4]+=x,f[5]+=D,f[6]+=I,f[7]+=G,h+=64,A-=64}return h}var i=(function(){function m(){this.digestLength=e.digestLength,this.blockSize=e.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return m.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},m.prototype.clean=function(){for(var f=0;f<this.buffer.length;f++)this.buffer[f]=0;for(var f=0;f<this.temp.length;f++)this.temp[f]=0;this.reset()},m.prototype.update=function(f,b){if(b===void 0&&(b=f.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var h=0;if(this.bytesHashed+=b,this.bufferLength>0){for(;this.bufferLength<64&&b>0;)this.buffer[this.bufferLength++]=f[h++],b--;this.bufferLength===64&&(o(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(b>=64&&(h=o(this.temp,this.state,f,h,b),b%=64);b>0;)this.buffer[this.bufferLength++]=f[h++],b--;return this},m.prototype.finish=function(f){if(!this.finished){var b=this.bytesHashed,h=this.bufferLength,A=b/536870912|0,w=b<<3,S=b%64<56?64:128;this.buffer[h]=128;for(var v=h+1;v<S-8;v++)this.buffer[v]=0;this.buffer[S-8]=A>>>24&255,this.buffer[S-7]=A>>>16&255,this.buffer[S-6]=A>>>8&255,this.buffer[S-5]=A>>>0&255,this.buffer[S-4]=w>>>24&255,this.buffer[S-3]=w>>>16&255,this.buffer[S-2]=w>>>8&255,this.buffer[S-1]=w>>>0&255,o(this.temp,this.state,this.buffer,0,S),this.finished=!0}for(var v=0;v<8;v++)f[v*4+0]=this.state[v]>>>24&255,f[v*4+1]=this.state[v]>>>16&255,f[v*4+2]=this.state[v]>>>8&255,f[v*4+3]=this.state[v]>>>0&255;return this},m.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},m.prototype._saveState=function(f){for(var b=0;b<this.state.length;b++)f[b]=this.state[b]},m.prototype._restoreState=function(f,b){for(var h=0;h<this.state.length;h++)this.state[h]=f[h];this.bytesHashed=b,this.finished=!1,this.bufferLength=0},m})();e.Hash=i;var r=(function(){function m(f){this.inner=new i,this.outer=new i,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var b=new Uint8Array(this.blockSize);if(f.length>this.blockSize)new i().update(f).finish(b).clean();else for(var h=0;h<f.length;h++)b[h]=f[h];for(var h=0;h<b.length;h++)b[h]^=54;this.inner.update(b);for(var h=0;h<b.length;h++)b[h]^=106;this.outer.update(b),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(var h=0;h<b.length;h++)b[h]=0}return m.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},m.prototype.clean=function(){for(var f=0;f<this.istate.length;f++)this.ostate[f]=this.istate[f]=0;this.inner.clean(),this.outer.clean()},m.prototype.update=function(f){return this.inner.update(f),this},m.prototype.finish=function(f){return this.outer.finished?this.outer.finish(f):(this.inner.finish(f),this.outer.update(f,this.digestLength).finish(f)),this},m.prototype.digest=function(){var f=new Uint8Array(this.digestLength);return this.finish(f),f},m})();e.HMAC=r;function n(m){var f=new i().update(m),b=f.digest();return f.clean(),b}e.hash=n,e.default=n;function s(m,f){var b=new r(m).update(f),h=b.digest();return b.clean(),h}e.hmac=s;function a(m,f,b,h){var A=h[0];if(A===0)throw new Error("hkdf: cannot expand more");f.reset(),A>1&&f.update(m),b&&f.update(b),f.update(h),f.finish(m),h[0]++}var l=new Uint8Array(e.digestLength);function d(m,f,b,h){f===void 0&&(f=l),h===void 0&&(h=32);for(var A=new Uint8Array([1]),w=s(f,m),S=new r(w),v=new Uint8Array(S.digestLength),K=v.length,x=new Uint8Array(h),D=0;D<h;D++)K===v.length&&(a(v,S,b,A),K=0),x[D]=v[K++];return S.clean(),v.fill(0),A.fill(0),x}e.hkdf=d;function c(m,f,b,h){for(var A=new r(m),w=A.digestLength,S=new Uint8Array(4),v=new Uint8Array(w),K=new Uint8Array(w),x=new Uint8Array(h),D=0;D*w<h;D++){var I=D+1;S[0]=I>>>24&255,S[1]=I>>>16&255,S[2]=I>>>8&255,S[3]=I>>>0&255,A.reset(),A.update(f),A.update(S),A.finish(K);for(var G=0;G<w;G++)v[G]=K[G];for(var G=2;G<=b;G++){A.reset(),A.update(K).finish(K);for(var E=0;E<w;E++)v[E]^=K[E]}for(var G=0;G<w&&D*w+G<h;G++)x[D*w+G]=v[G]}for(var D=0;D<w;D++)v[D]=K[D]=0;for(var D=0;D<4;D++)S[D]=0;return A.clean(),x}e.pbkdf2=c})});var cs=Re(Tt=>{"use strict";Object.defineProperty(Tt,"__esModule",{value:!0});Tt.Webhook=Tt.WebhookVerificationError=void 0;var yp=ts(),as=rs(),Cp=ss(),ls=300,cr=class e extends Error{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="ExtendableError",this.stack=new Error(t).stack}},ut=class e extends cr{constructor(t){super(t),Object.setPrototypeOf(this,e.prototype),this.name="WebhookVerificationError"}};Tt.WebhookVerificationError=ut;var No=class e{constructor(t,o){if(!t)throw new Error("Secret can't be empty.");if(o?.format==="raw")t instanceof Uint8Array?this.key=t:this.key=Uint8Array.from(t,i=>i.charCodeAt(0));else{if(typeof t!="string")throw new Error("Expected secret to be of type string");t.startsWith(e.prefix)&&(t=t.substring(e.prefix.length)),this.key=as.decode(t)}}verify(t,o){let i={};for(let f of Object.keys(o))i[f.toLowerCase()]=o[f];let r=i["webhook-id"],n=i["webhook-signature"],s=i["webhook-timestamp"];if(!n||!r||!s)throw new ut("Missing required headers");let a=this.verifyTimestamp(s),d=this.sign(r,a,t).split(",")[1],c=n.split(" "),m=new globalThis.TextEncoder;for(let f of c){let[b,h]=f.split(",");if(b==="v1"&&(0,yp.timingSafeEqual)(m.encode(h),m.encode(d)))return JSON.parse(t.toString())}throw new ut("No matching signature found")}sign(t,o,i){if(typeof i!="string")if(i.constructor.name==="Buffer")i=i.toString();else throw new Error("Expected payload to be of type string or Buffer.");let r=new TextEncoder,n=Math.floor(o.getTime()/1e3),s=r.encode(`${t}.${n}.${i}`);return`v1,${as.encode(Cp.hmac(this.key,s))}`}verifyTimestamp(t){let o=Math.floor(Date.now()/1e3),i=parseInt(t,10);if(isNaN(i))throw new ut("Invalid Signature Headers");if(o-i>ls)throw new ut("Message timestamp too old");if(i>o+ls)throw new ut("Message timestamp too new");return new Date(i*1e3)}};Tt.Webhook=No;No.prefix="whsec_"});var Mo,ws=he(()=>{"use strict";Mo=class extends Error{constructor(t){super(`Credentials file is corrupted or contains invalid JSON: ${t}
28
28
  The file has been preserved for manual inspection.
29
- To fix: either repair the JSON manually, or delete the file and run: resend login`),this.name="CorruptedCredentialsError"}}});var ur={};eo(ur,{FileBackend:()=>dr});var dr,mr=he(()=>{"use strict";Ae();dr=class{name="plaintext file";isSecure=!1;async get(t,o){let i=ve();if(!i)return null;let r=i.profiles[o];return(r?.type==="api_key"?r.api_key:null)??null}async set(t,o,i){pr(i,o)}async delete(t,o){try{return Us(o),!0}catch{return!1}}async isAvailable(){return!0}}});var vs={};eo(vs,{MacOSBackend:()=>gr});function fr(e,t){return new Promise(o=>{(0,Ss.execFile)(e,t,{timeout:5e3},(i,r,n)=>{let s=i&&"code"in i?i.code:0;o({stdout:r??"",stderr:n??"",code:s})})})}var Ss,gr,Ks=he(()=>{"use strict";Ss=require("node:child_process");gr=class{name="macOS Keychain";isSecure=!0;async get(t,o){let{stdout:i,stderr:r,code:n}=await fr("/usr/bin/security",["find-generic-password","-s",t,"-a",o,"-w"]);if(n===44)return null;if(n!==0)throw new Error(`Failed to read from macOS Keychain (exit code ${n}): ${r.trim()}`);return i.trim()||null}async set(t,o,i){let{code:r,stderr:n}=await fr("/usr/bin/security",["add-generic-password","-s",t,"-a",o,"-w",i,"-U"]);if(r!==0)throw new Error(`Failed to store credential in macOS Keychain: ${n.trim()}`)}async delete(t,o){let{code:i}=await fr("/usr/bin/security",["delete-generic-password","-s",t,"-a",o]);return i===0}async isAvailable(){return process.platform==="darwin"}}});var xs={};eo(xs,{LinuxBackend:()=>hr});function qo(e,t,o){return new Promise(i=>{(0,Lo.execFile)(e,t,{timeout:o?.timeout??5e3},(r,n,s)=>{let a=r&&"code"in r?r.code:0;i({stdout:n??"",stderr:s??"",code:a})})})}function sf(e,t,o){return new Promise(i=>{let r=(0,Lo.spawn)(e,t,{stdio:["pipe","ignore","pipe"],timeout:5e3}),n="";r.stderr?.on("data",s=>{n+=s.toString()}),r.on("close",s=>{i({code:s,stderr:n})}),r.on("error",()=>{i({code:1,stderr:"Failed to spawn process"})}),r.stdin?.on("error",()=>{}),r.stdin?.write(o),r.stdin?.end()})}var Lo,hr,ks=he(()=>{"use strict";Lo=require("node:child_process");hr=class{name="Secret Service (libsecret)";isSecure=!0;async get(t,o){let{stdout:i,code:r}=await qo("secret-tool",["lookup","service",t,"account",o]);return r!==0||!i.trim()?null:i.trim()}async set(t,o,i){let{code:r,stderr:n}=await sf("secret-tool",["store",`--label=Resend CLI (${o})`,"service",t,"account",o],i);if(r!==0)throw new Error(`Failed to store credential in Secret Service: ${n.trim()}`)}async delete(t,o){let{code:i}=await qo("secret-tool",["clear","service",t,"account",o]);return i===0}async isAvailable(){if(process.platform!=="linux"||(await qo("which",["secret-tool"])).code!==0)return!1;let o=await qo("secret-tool",["lookup","service","__resend_cli_probe__"],{timeout:3e3});return o.code===0||o.code===1}}});var Fs={};eo(Fs,{WindowsBackend:()=>Ar});function Wo(e){return new Promise(t=>{(0,Jo.execFile)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{timeout:1e4},(o,i,r)=>{let n=o&&"code"in o?o.code:0;t({stdout:i??"",stderr:r??"",code:n})})})}function af(e,t){return new Promise(o=>{let i=(0,Jo.spawn)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{stdio:["pipe","pipe","pipe"],timeout:1e4}),r="",n="";i.stdout?.on("data",s=>{r+=s.toString()}),i.stderr?.on("data",s=>{n+=s.toString()}),i.on("close",s=>{o({stdout:r,stderr:n,code:s})}),i.on("error",()=>{o({stdout:"",stderr:"Failed to spawn process",code:1})}),i.stdin?.on("error",()=>{}),i.stdin?.write(t),i.stdin?.end()})}function mt(e){return e.replace(/'/g,"''")}var Jo,mo,Ar,Rs=he(()=>{"use strict";Jo=require("node:child_process");mo=`
29
+ To fix: either repair the JSON manually, or delete the file and run: resend login`),this.name="CorruptedCredentialsError"}}});var ur={};eo(ur,{FileBackend:()=>dr});var dr,mr=he(()=>{"use strict";Ae();dr=class{name="plaintext file";isSecure=!1;async get(t,o){let i=ve();if(!i)return null;let r=i.profiles[o];return(r?.type==="api_key"?r.api_key:null)??null}async set(t,o,i){pr(i,o)}async delete(t,o){try{return Us(o),!0}catch{return!1}}async isAvailable(){return!0}}});var vs={};eo(vs,{MacOSBackend:()=>gr});function fr(e,t){return new Promise(o=>{(0,Ss.execFile)(e,t,{timeout:5e3},(i,r,n)=>{let s=i&&"code"in i?i.code:0;o({stdout:r??"",stderr:n??"",code:s})})})}var Ss,gr,Ks=he(()=>{"use strict";Ss=require("node:child_process");gr=class{name="macOS Keychain";isSecure=!0;async get(t,o){let{stdout:i,stderr:r,code:n}=await fr("/usr/bin/security",["find-generic-password","-s",t,"-a",o,"-w"]);if(n===44)return null;if(n!==0)throw new Error(`Failed to read from macOS Keychain (exit code ${n}): ${r.trim()}`);return i.trim()||null}async set(t,o,i){let{code:r,stderr:n}=await fr("/usr/bin/security",["add-generic-password","-s",t,"-a",o,"-w",i,"-U"]);if(r!==0)throw new Error(`Failed to store credential in macOS Keychain: ${n.trim()}`)}async delete(t,o){let{code:i}=await fr("/usr/bin/security",["delete-generic-password","-s",t,"-a",o]);return i===0}async isAvailable(){return process.platform==="darwin"}}});var xs={};eo(xs,{LinuxBackend:()=>hr});function qo(e,t,o){return new Promise(i=>{(0,Lo.execFile)(e,t,{timeout:o?.timeout??5e3},(r,n,s)=>{let a=r&&"code"in r?r.code:0;i({stdout:n??"",stderr:s??"",code:a})})})}function af(e,t,o){return new Promise(i=>{let r=(0,Lo.spawn)(e,t,{stdio:["pipe","ignore","pipe"],timeout:5e3}),n="";r.stderr?.on("data",s=>{n+=s.toString()}),r.on("close",s=>{i({code:s,stderr:n})}),r.on("error",()=>{i({code:1,stderr:"Failed to spawn process"})}),r.stdin?.on("error",()=>{}),r.stdin?.write(o),r.stdin?.end()})}var Lo,hr,ks=he(()=>{"use strict";Lo=require("node:child_process");hr=class{name="Secret Service (libsecret)";isSecure=!0;async get(t,o){let{stdout:i,code:r}=await qo("secret-tool",["lookup","service",t,"account",o]);return r!==0||!i.trim()?null:i.trim()}async set(t,o,i){let{code:r,stderr:n}=await af("secret-tool",["store",`--label=Resend CLI (${o})`,"service",t,"account",o],i);if(r!==0)throw new Error(`Failed to store credential in Secret Service: ${n.trim()}`)}async delete(t,o){let{code:i}=await qo("secret-tool",["clear","service",t,"account",o]);return i===0}async isAvailable(){if(process.platform!=="linux"||(await qo("which",["secret-tool"])).code!==0)return!1;let o=await qo("secret-tool",["lookup","service","__resend_cli_probe__"],{timeout:3e3});return o.code===0||o.code===1}}});var Fs={};eo(Fs,{WindowsBackend:()=>Ar});function Wo(e){return new Promise(t=>{(0,Jo.execFile)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{timeout:1e4},(o,i,r)=>{let n=o&&"code"in o?o.code:0;t({stdout:i??"",stderr:r??"",code:n})})})}function lf(e,t){return new Promise(o=>{let i=(0,Jo.spawn)("powershell.exe",["-NoProfile","-NonInteractive","-Command",e],{stdio:["pipe","pipe","pipe"],timeout:1e4}),r="",n="";i.stdout?.on("data",s=>{r+=s.toString()}),i.stderr?.on("data",s=>{n+=s.toString()}),i.on("close",s=>{o({stdout:r,stderr:n,code:s})}),i.on("error",()=>{o({stdout:"",stderr:"Failed to spawn process",code:1})}),i.stdin?.on("error",()=>{}),i.stdin?.write(t),i.stdin?.end()})}function mt(e){return e.replace(/'/g,"''")}var Jo,mo,Ar,Rs=he(()=>{"use strict";Jo=require("node:child_process");mo=`
30
30
  try { $null = [Windows.Security.Credentials.PasswordVault] } catch {
31
31
  [void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]
32
32
  }
@@ -50,7 +50,7 @@ To fix: either repair the JSON manually, or delete the file and run: resend logi
50
50
  $v = New-Object Windows.Security.Credentials.PasswordVault
51
51
  $c = New-Object Windows.Security.Credentials.PasswordCredential('${mt(t)}', '${mt(o)}', $secret)
52
52
  $v.Add($c)
53
- `,{code:s,stderr:a}=await af(n,i);if(s!==0)throw new Error(`Failed to store credential in Windows Credential Manager: ${a.trim()}`)}async delete(t,o){let i=`${mo}
53
+ `,{code:s,stderr:a}=await lf(n,i);if(s!==0)throw new Error(`Failed to store credential in Windows Credential Manager: ${a.trim()}`)}async delete(t,o){let i=`${mo}
54
54
  $v = New-Object Windows.Security.Credentials.PasswordVault
55
55
  try {
56
56
  $c = $v.Retrieve('${mt(t)}', '${mt(o)}')
@@ -58,7 +58,7 @@ To fix: either repair the JSON manually, or delete the file and run: resend logi
58
58
  } catch {
59
59
  exit 1
60
60
  }
61
- `,{code:r}=await Wo(i);return r===0}async isAvailable(){if(process.platform!=="win32")return!1;let{code:t}=await Wo(`${mo} $null = New-Object Windows.Security.Credentials.PasswordVault`);return t===0}}});async function ot(){if(Ye)return Ye;let e=process.env.RESEND_CREDENTIAL_STORE;if(e==="file"){let{FileBackend:o}=await Promise.resolve().then(()=>(mr(),ur));return Ye=new o,Ye}if(e==="secure_storage"){let o=await _s();if(o)return Ye=o,Ye}if(!e){let o=await _s();if(o)return Ye=o,Ye}let{FileBackend:t}=await Promise.resolve().then(()=>(mr(),ur));return Ye=new t,Ye}async function _s(){if(process.platform==="darwin"){let{MacOSBackend:e}=await Promise.resolve().then(()=>(Ks(),vs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="linux"){let{LinuxBackend:e}=await Promise.resolve().then(()=>(ks(),xs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="win32"){let{WindowsBackend:e}=await Promise.resolve().then(()=>(Rs(),Fs)),t=new e;if(await t.isAvailable())return t}return null}var Le,Ye,br=he(()=>{"use strict";Le="resend-cli",Ye=null});function it(e,t){(0,Ke.mkdirSync)((0,Bs.dirname)(e),{recursive:!0});let o=df(e);try{let i=t();return i instanceof Promise?i.finally(()=>yr(e,o)):(yr(e,o),i)}catch(i){throw yr(e,o),i}}var Es,Ke,Bs,lf,cf,Ds,df,yr,uf,mf,Os=he(()=>{"use strict";Es=require("node:crypto"),Ke=require("node:fs"),Bs=require("node:path"),lf=1e4,cf=50,Ds=200;df=e=>{let t=(0,Es.randomUUID)();for(let o=0;o<Ds;o++)try{let i=(0,Ke.openSync)(e,"wx");try{(0,Ke.writeSync)(i,t)}finally{(0,Ke.closeSync)(i)}return t}catch(i){if(i.code!=="EEXIST")throw i;if(uf(e)){try{(0,Ke.unlinkSync)(e)}catch{}continue}mf(cf)}throw new Error(`Could not acquire lock on ${e} after ${Ds} retries. If no other resend process is running, delete the lock file manually.`)},yr=(e,t)=>{try{if((0,Ke.readFileSync)(e,"utf-8")!==t)return;(0,Ke.unlinkSync)(e)}catch{}},uf=e=>{try{let t=(0,Ke.statSync)(e);return Date.now()-t.mtimeMs>lf}catch{return!0}},mf=e=>{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}});var Ts,Is=he(()=>{"use strict";Ts="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCARXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAABkCgAwAEAAAAAQAAA4QAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIA4QGQAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAQEBAQEBAYEBAYJBgYGCQwJCQkJDA8MDAwMDA8SDw8PDw8PEhISEhISEhIVFRUVFRUZGRkZGRwcHBwcHBwcHBz/2wBDAQQFBQcHBwwHBwwdFBAUHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR3/3QAEAGT/2gAMAwEAAhEDEQA/APgDrRRRQAUUUUAFFFFABRRRQAUUUUAFFH0ooAKKKKACiiigAooooAKKKOKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo+tFABRRRQAUUUUAFFFFABRRRQAUuaSigB1FIDRQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUYoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigAooooAKKKKACkNLSUAdx4RvyDJp7n1dPb+8K9DXDgHGK8Ltbh7W4juI/vIciva7C6S7giuYj8sg70AaCgA1fifjBqkPpirEfHOc0AaqHIGTUwwapxEDk1aUjpQA888VGyg1IKUrkZ70AUJI+M4yaoyRe1bDLgVVdCRnrigDAljP+elUZYh909jXQSR9ttUpY++OvrQBgyRkt6/3arPERnAyPStmSJckY6/0qkynseaAMto153dPU1WyQTnuP0rRZCDt2ZOOtViGIHOeeKAKmD9cjqf89aRVBAJPT1qfaVBzgnqfxqJlbBI45oAjIyCMZNIcjoAakYHHXAHrSAEDHY96AGfwjGN1BOF9/wDPSk4Y7BwemaU4IyBQAq5IIzgj06UdOQBgcE035QpDd+1KoABbGc/yoAcuBntnrSguDzwB+IoG4qdoGP50u4gbeqk5xjmgB44I5yCOKmUu3zE44/Oq67Tn3/SpApABycmgC5vPBXGferyZAyOp555rLRuxzkVfidCATwelAGtEQDnoa0IpDt9zxWJGctuB+X1rRikAGQe9AG5FhR/StCM5H4Vi27jdn061pRNgCgC+DxS5PX8KjU9KmH+RQAnWoyPepgOPftTducE0AVWGRVd17VdK4bHpUEg5z+NAGTJH7YxVN1U579+a1nTPHv1qpKmRtPTvQBiuCQT3qm0UgG485rWkj5Jx+AqpImMnkZ/zxQBjyRsxJC5PUCq5YADI49e+a0WHl/OevOKqzKMZ45xj15oArFU64P1FNT72R9eOtPY7TuXIx2prZYnJ5U0AOKjAC+nU05N3IPPvUQ3BgR0xUsbYz/CfegBMhcP/ABKcdOpqQAH5gOR+XFIoYAlz2pNpHLE/SgBmfmLHgN/SlIIx/tc04fMfmzn9KVsYK425x60AQ4Kn5RnFMKggDJweh61NgEYJwMenWm4Xop6GgCLC5GOvYYpACucfkP6U9hk7lwMHFKTtyFPB6d6AIthJx3/SmHcpBGOetTZUhTyMdff/APXTSvpx6YoAibJXOc+gqPGe/PSpThl3KMD3prcjJGPSgCEjHFRsOan47j8aaR04zQBVYCoWHWrjCoWWgCmwqBhVxhUDCgCsRTCKnYVGRQBAajIqYimGgCOm080ygBKOKWm0Af/Q+AKKKKACiiigAoo9qKACiiigAooooAKKKKACiiigAooooAKKKKACij3ooAKKOtFABRRRQAdaKKKACiiigAooooAKKKKACiijpQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAC0lFFABRR1ooAKKKOlABRRRQAUtJRQA6im5paAFooooAKKSigBaKKKAClpKWgBKKKKACiiigAooooAWkoooAKKKKAClpKKACiiigAooNFAC0lFFABRSUtABRRRQAUUUUAFFFFABRRSUALRSUUALRRRQAUUlFAC0UlLQAUUUlAC0UlFAC0UUlABXoHg/UvkbTpGwVJZM9weorz81asbprK7iuV58tgSPUdxQB73GVIHOD6VYAw1Z1ncpcRJNGflcBl+hrSX34oAsqeatIapoCO1WEOKALg5p2Mc1Ep/WpM/5NAAR+lQuo9KnOM0FeOlAGfIp7DNUpYjkk8jFbDLuHpVWROKAMOSI9SMj6VTljXJ7DPWtuRfYVQkjxkcc0AYzxkH6dCe9U5IumenXp0radFA9wapTRAHb1z3oAySoPUd8YqJwqAJnGetaTxHG3uOM9/aqkkRZjx+HvQBVKg4JPHYetRn5s46Gp8hdylcgcj/Co3UHGBx6UAREKPuDvQQ5Y449acwOOOnakPX5hhemM0AMGRj1P50DODu4NKVY4XOPQ0bT07j1oAXJ4AGQP0pwK5yQMDoaiGBznnP4U4qyt0yR60AOyM/Kc59KkGRnHBHX2qE4U8e1TZy2aAJxjO5WyTjipgcDA5U9cVWTczdADn5TU+WR8sck9u1AF+IovGOTyG7Vei6Lt59qyYXZRgnHYetXYGYdeOwH0oA24WG4dvatSGQKcdc9awYm98e/1rTickLgcj3oA242HGeABVoVmxMD8uevetBOf8aAJOaPX3pQKUCgCE8Hjk1ER7VaI70w8/0oAoOmc47VTkjG08ZFaTAnPaq8i9QeBQBjyqR15NUZhgDjI9K2ZE5x+tUXUL8nv1oAyZULFh90Y6+9UjHy2SOB37VrSICPbNZ8kaqoIA7jOKAM9wdxy2T+vvVdjlgw/hxV10BbBbG45BqBwu35FA5xQBEcn5c8N0/p+dBx0yST2x0pSFOE3c44pArKcMckjg+uKAJDt5LHPp+HtSox+bIzmkTaygd26f8A16BlsEZwD16UASYUkEAk+p4pj/PluoXpTyq7uMnuOaAGKncMUANbGxcLgjv6UzBY8D73P5VIRgYHfqKQ7jgkAMPXtQAw7QWA+UnnPWmlgwwvygdafkKuCee+aQLtGM4LdjQBETuxwSBUZEmQB1HBFWCAqsRnPbjAOKiGDwWwD3oAibaenrSkY64IqV1UtwMEdaYVBHI+nrQBCRxn72KaylcYHBqYhfpimthhk8dqAK7DJz0qEjJq1sPAP4UwgZIA5oApslV2TvV5gemKhZcUAUWWoSKuMtQEUAVStRlasEVERQBARTalIqMjFADKaRT6bQB//9H4AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFpKKKAFpKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWkoooAKKKKACiiigAooooAKKKKACiiigAopaSgAoopfegBKKKKACiiigAooooAKKO1FABQKKKAFpabTqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigAooooASlxRRQB6H4N1IvG+nyHmP5k+h6j8DXo0bZXJ4HrXz/Z3UlldR3UX3oznHqO4/GvdbG5jureK5i5WRQ350Aay46A8+tTr6VXTGOepqdTjpQBZXqKlBBzVdWJ61MDQBKDnNLgmmjFLzmgBCO4qJlzkfjU+abtJ6mgDPZCBzyaqPHz0rWdetVZF4NAGM8fB6VSkQAccitkoAKrSpzuwDigDHeIL1AyPTv8AjVB4wxPGD1yOorZdC33OAKrNGP4sc96AMZ41yVJyTyMe1V2bBOeeMZrTkjVc5BJHaq0itwMcDt/WgCkVy2MDtwP88Uxhzzgj19asOgyWVSajIXqOB3z3oAh+QnDH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EEc5FRYJXp+tAEZXGUx9D/8AWp4wRzyAaTAQnHTFKCvIboBmgCRfu4HGev0qUdOpOO3oKhJ2Y7ZqXblffj8aALm8BR6+h6Yq/GQQTkE9Dn0rNjHGcEY7VdiZd4z+nagDUhY5AznGckelaKMcDnDVjxnAwf0rQVgyjPCigDWjPIBPIrThfjJ/GsRGA49uvar0bY5JoA21w2PyNOxjiqkL55Herq4IyaAIytRkfSrBHpUZAoApOmefSqzLxn07VoMODUDqMGgDJcFevNVJVwQ3PPpWoyY4AqnIpz1x60AZcq4JwOD+dVHCl+mcVqOScjGPeqkig9AOaAMt0U/e+XGenrVTZgjnGB07GtPALemOKqSJxxxjuep9qAM50DNhlJ/HFMAXaMc/j0q06jkL0PHPaq+3Dc8Y49h9aAIwPl5Xvk1NtBKyA/j6UxioGOpzkEdPekPJLcHv7UASof7+DuPbtUzIxyynHbFRIAVXb1BOf/rVIhBIUg7s9e3NAEvO4g8HHH0pVLkbW5zTT0YDHp1p6nCjnGOuev4e1ADCu44k4Ge3elYFQNwIOcUikrgAjKn/AD0p3GCuD/hQA3BxgEEE4yetRklMnsc1LgZy3I7496G2+3y9j3oAjKr1Y1GAB3xj/IqZlHBIyDx8tMIRs7icEYHegCDaQxYcZ7f59ajYHJ+XmrEg24Vj/wDrpmBt6YwecmgCtsDMexHIxTSEByT3696s/NuKr1I9qjYZXK447HrQBWI47A/41Ey/5/wqzg9WGTUZ78fQelAFJl9arsnWr5Xiq7IaAM91qsy1pMlVXWgD/9X4EooooAKOtFFABRRRQAUUUUAFJS0lABRRRQAUUUUAFFFJQAtJS0lABS0UZoASiiigAooooAKKWigBKWiigAooooASloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKACiiigAoopKAFoozSUAHWiiigAooooAKKKWgBKKKKAFpKKKADrRRRQAUUUUAFFHSigAooooAKKKKACiiigAooooAKKKKACiijrQAUUUUAFFFHSgAooo96ACiiigBaSiigAooooAKKKKACiiigAooooAKKPaigAooooAKKKKACiiigAooooAWikooAKKKKACiiigApaSigApaKSgAooooAKKKKACiiigAooooAKKKKALmn302nXcV3AcNG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PA+tLhs45UjkZPFMRlJKrnJOTg1Mqrkq3CgcZ68UAKCQevTGB60Fwr7Tyx6UikSFWU89cHtS7kfLDJI6CgBWIxtKgMelRyDpt5X3qY8rknB4GKbkcKv3TxQBGfm5AyCe1RkgfKDnvk1OqkjJBGfWkCsq7GIHcY/WgCAjKkL379qjIVVIb5c4XPXip8ZOw9u4qFtwJ2jAPNADHAVcN0H6/jUJToe/T/8AVVgKG6kZA49qZ23IcNQBW5wARz/Wo9uRluntxVplIQSckNx+NQMpZgSeD0NAFZlYfKBkDvUDr9488dKvsuSB7Z+tVCoHOPXigD//1/gWkpaKAEooooAKKKKAEpaKKAEpaKKAEopfpSUAFFFFABRRS0AJRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUUAFFFFABRRRQAUUUUAFLRRQAUYopfegBKSlooASiiigAooooAKKKKACiiigAooooAKSlooASilooASilpKAClopKACiiigAopaSgAooooAKKKKACiiigAooo+tABRRR1oAKKKKACiiigApaSigAooooAKKWkoAKKKKACiiigApaSigApaSigAooooAKKKWgApKWkoAKKKKADpRRS0AJRRRQAUUUUAFFFFABRRS0AJS0nSigAooooAKKKKACiiigAopaSgAooooAWk96WigaCikpaQBRSUtMLB0rt/BviAabObG5P7ic/KT/C3+BriKSgR9SxPuAOetWh2xXm/gvxD/AGhD9gunzcQrxn+JB/Ud69FU5HvQBMKUc00HJpRxzQA/FGKAeKKAG4pDkU+koAjI9abwalIz1qNulAELKOuKiI9eRVhhz71EVxz7UAQN1GO9V2BB9AatEKevUc49KiIPPf1+lAFcoOo/GoCoUjBxj171aK4HUfSoGAOMDOKAKzjgjv69qrvGMceuKtsv3sHOfyqJlTPT8qAKbKD16rnA9arOpRCQMjuKvEEHsSe57VCysQMfXp1oAz3TYMnoeKgbDkccjt7VfZfkP+eag2ZAPRjxigCkdueRye/t6VGy7m4GAO3pVtlO35sA5prBi2Tyo9O9AFXk8Hj09qkUEruHQcYpNhYHHUHkd6BkEEHGP1oAnBOevB44q3GemCDWdkFsHjPp2qzGxUjPegDbhkxwPTg1pQkFcDg+tY0T9WPFacDcg+tAGuo4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sA4yPyxUqs5zlQDnGBQBKqkgbjnjrTRuALL34weelJ8+WwBxjBx2p6gFckdetADMbcyEcjgj1pD8nGMjGckilXCrgcjufSl2qrEYzk0Af//W+DKKWjmgBKKWigBuKTFOooAbRS4pKACiiigBKKWkoASloxRQAlFLS0AJRS0YoAbRS0UAJRS0UAJRilooASilooASilooASilooAKSlooASjmlooASilooASilooASilpKACiiloASilooASiiloASjrS0UAJRS0UAJRRS0AJRS0daAEopaSgA9qKKKACiiigApKWigBKSnUUAJRRS0ANopaMUAJRS9KKAEo60tJQAUUUUAFFFLQAlFLRQAlFHSigAooooAKTmlooASilpKAEpaMUUAFJS0UAJ7UUtJQAUUUUAFFFFABR70UUAFFFFABR0oooAOlFFFABRR1ooAKKKKACiiloASilpKACiiigA96KWigBKKKKACiiigAopaSgAooooAKKKKAEpaKKACiiigA96KKKACiiigBKWiigAooooASilo+lACUUtFABTqbS0AFdx4T8Xz6E4tLg+ZZO2SO8ZPUr7eoriKOlAz62s72G7hSeCRZI2GVZeQa0CM4r5o8K+K5/D0xjkBltJCNyd1P95f6jvX0Npuo22o20d3aOJIpBuBH+e1AGjim0/gjigjvQIixjgUwr6VNj86QgUAVGGeKgdeOuR71eK46ComTIoAolRzu7DFQOgz/OrpXH4VEUz93gd6AKDJg5J5qJgWxxzVt1MnXqOlR9AMfjQBRZcnBz7motoY7RxVuROvrUJQbsNxQBXKbWyOo6HrmoSASeOcVYZSvA6E0wqwGFFAFbBBx6j8qikJwOOnOPWrLKxIGRkDmoWyATwCKAISBvDcgY/nTJODhMKp74z+FSsCo+Y578U0KQdpI29KAGMqjOzc3brT93yLvB+lN2lDwcAHjHSgDGW7D0oAtLhOQCQa04WYbeaxQS2CpzitGOUg5PI96AOntpFCj0zzW9G5bnPFchbTkEMcYxXQ2sgZQSODQBqcEc1GVHapV5GKUqPSgCmwA6jtVZgACKvsMCq5XmgCiUAztFWoJNvHbvTWFRAlDxQBqMAfmHSoCNwp8MvmAA96cVKGgDPkUEn1rOljBOD26VsSA8kAD0qjIjA89RQBjuhC4zmqrgEA4JJrUdMnHT1qhKuOc89qAKRQsD27E+lVmXgH7xPNXZORyBgDHtVZgd248cde1AFOQDZyvTkAVBIDsPUZq4RtOFP3utRMmPlHQ9KAKBHAzxgdv600K24c9e1WmXGdxwPbpUDgZJHynGMf1oAh6bhUYXaNhOccipWCupAx83PXoBTNoGAQcL0/GgAKsEAICk5zipQYwFY9uKiGQx3HBpPl6EY9M9qAJkUvwzEH09qlUjJJ6E44/SqvIOe46/41OFIHXvQBOpjDDcTk96RdqksCSfTNIuQgfOQTSludpxn35oAlP3hk4x1HpSNlVJfuaUkgfKCc9cdaGYlSoXI6jH8uaAP//X+DqKdSUAJRS0lACYpMU6igBpopaSgBKSnUUANopaKAEooxRigAopcUlAAKKKKACiiigANJS0UAJRS0UAJRS0UAGKKKKACkpaKACkpaKAEopaSgAopaKAEopaKAEopaKAEopaKAEopaKAEooooAKWikoAWkpaKAEopaKAEopaSgApKdRQA2ilooASiiigAooooAKKKKACiiigAooooASilooASilooASiiigAooooAKKWkoAKSlooASloooASilpKACiiigAooooAKKKKACkxS0UAJiilooASilooAbS0tFACUUtFACdaKWigBKKWkoAOtFFFACUUUUAFLSUtABRRRQAUlFLQAUUUUAFJS0UAFFJS0AFFFFACUUtFACUUUUAFFFLQAfWij60UAJRRRQAUUdKOlABRRS0AJRRRQAUUUUAFFFH1oAKWkpaBoSloooAWul8O+J7/AMPzjymL2zNmSE9D2yPQ1zVJQB9YaRq9nq9ot5ZSCRD1HdT3BHY1tAivk/RNdv8AQroXFm2VJ+eMn5XHuPX0NfRXh/xFY69bCa0JDjG+M/eQ+h9vegDpiPWkxSg07HpQIiIzURU1axmmEUAUmQ1EVJY56HtV0qfyqFo8HI60AZ7j0HHaoWTJOec1oFcZ9KgcEnjjPagCiUJ4xu+tV2BwSR+dXSpzgHj1qFgDnHegCi6nGeq0wjHtVxwc4A+WoWUnG0cUAUsMM89P1qPaBk8HNWGTIODkVGVIHB56igCswGNuOveogNg+XqOtWmRcdc571ER8xPc8UAQtkjJOFHI/rTCDuGOBzkf0qU8AYB460MA2Q2QRQAwMynIOBx06Af8A1+lTxsB2JqAkKBjknn/61SLnJTPJFAGnFIN2SRW/azEHk9OlcmgPGO3Wte3mKnj7tAHbQPuAJPWrn3h9KwrOcECtqNsigBrioWXFWyKiYUAUmUnoKruh+lXiPxqIgfSgCshKNkVog+aoPes10wcg8irEM2w460APYdjyO1QSLmrrLtO7rmoGXd0Gf6UAZEq+vaqTomDnr/8AXrYlXgj86zXQAbulAGZImQQQMHjH9arNGU5I46//AFqvsuQSBk9M1UfJy1AFJ1K/eXg1FIGAyOnpVxlYHIOcVC6ntwBzQBQYBvl+99KYwXdkfeHA9xVllUFvlDe9RHgADp6CgCmyl87TnH4VDsIBJ/T+tWWGFDc+1Mzj7owD1FAFfAztYEH19aXnPzc0hAzjnHYilZcEYOCP5UAO4DDoSeOOtPUnOAc4HAPGKjB5JK4IH4U77wOQCc8ev0oAnAKjPPPJNOViTjg4Oc1AC275zhT+P4VYyCSQdo6gY/nQBNxKA6rjHGOx/wD1U0M+AFbg9QOKapO5XGQpGfp+FIdpjwTjngmgD//Q+EKKdRQA2kp2KSgBtFFFABSUtFACUYpaMUAJRS0UANopcUlABSUtFABSYzS0UAJRS0UAJiilpKADFJTqKAG0U6igBKKMUUAFJS4oxQAUlLRigBKKWigBKWjFFACUUtFACUUuKKAEopaKAEooxS4oASilooASilooASloooASilpKACijFGKACij60UAFJS0UAFJilooAMUYoooATFFKaKAG0UtFACUUUYoAKKKKACigUUAFFFFABRRRQAUUUUAJRS0UAJS0UUAJRS0UAJRS0UANopaKAEopaKAEooooAKOtFFABRRS0AJRRRQAUUUUAFFFFABRRRQAUUUUAJR9aKKACkpaKACiiigAooooAKKKKACiiigAooooAWkoooAKKKKACiiigAooooAKKKKACkpaKACkpaKACiiigAooooAKKKKAEpaSigApaKKBoKKKKBhS0lFIAq/p2p3ulXS3lhKYpF7joR6EdxVCimI+kPC3jGy1uJYpG8q9HLRHpgd1PcfrXeKcgdOa+OYJ5baZJ4HMckZDKy8EEdwa9z8I+PY9RIsdWZYrroj9Ff/A+3ft6UgPVscUmM8U2NgwzxTxTERlaiZc/SrXXpTCM0AUmTI5/CoHXngYq+VqBlON1AGeyD8qg8vJ5xmtF171AUGM9KAM9lP8XGO3rUDA4YdM1otGM56d8iqrJlsYBoApsBkk8ADmq7AjB4welXnRXbBycdj0zVZ1IJAwR1z1oAqbeMYwT6VERwHI6cfhVtwwx6VE23JKjrQBUYEDCk9elN6rtxjHr3P1qw+AaiKLvx1IoAjAG3aFHTt60BRwOjAdaUjdxzj0FC5BwOMdfWgBykhRz35q5BIQQAc56iqOMEjt2qRWYNkgkjtQB0tpcMpHP3R2rp7aUsoOetcJDIWHTr6Vv2V0V+Q9jQB1oOaYw9qZFIGqweaAKhXrURXk1cYVXZc0AU2Xj61AVIbg1eK4qBlwc0AS27h8o54NSYOMH9KorlWzjmr+7euR260AVpEP3iOB61mzjaQOMdfxrYccfWqEqYzQBkOo6fgapyKM7QPc+9akyArjH5VTkTLZPXFAGeyMTgdqrOozn04q8w5y2RjjPqaqujD5160AVXVcfWoHAiGAoyatMQcbgCcf1qFwMMSv1NAFWTOA0Yz7fzzUexcbv7xGM1M4bIA5HfNREAgqeN3THSgCu7BSdnAprFuJBjZjBqd1EhPHIxgioXSQ5IIoAhPyjk9+9PDDH4ZH/66Vdg4Pf16Ux1XjBOensaAHszZHp608OuNpOSOc+1REIFBywzxUjbNvQ4PHPrQBPw0ZwxIJ4FO2qoxjdnp6VCuAF2j8KfG5KqMY5wfp34oA//0fhPBoxTsUUANpKdSUANxSYp1B9KAGUUuKKAEpKdSUAJRS4ooASkxS0UAJSAU6igBKMUvSigBKSnUlACUUtJQAe1FLRigBKKWkoAKKWkoAKWiigBKKWigBKKKKACiiloASiiloASilooASiiigAoopaAEooooAKSlooAKSlooASilooASilpKACiiigBPpRS0mKACilxR2oASiiloASilpKACiiigBKKWigBKMUUtACYpKWloASilpKACiiloASiiigAooooAKKKKACkpaKAEpaKKAEopaSgAooooAKKKKACkpaKAEopaSgAoxS0UAJijFLRQAlJTqSgAo60UtACdKSlpaAGUZp1FADaOtLijFACUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtJQxoKWkoqRi0lFLTAQ0tFJRcBaKSimI9T8JfEB7AR6drRL264VJurIPRh3Hv1Fe5W1zDcRJNCwZHGQwOQR6g18d113hrxhqXh1hChM9oTloWPT3U84P6GkB9Qj2oFY2j65p+s2y3VjOJE43Doyk9mHUGtrdnpTEIRmomXrVgc5pCMdKAKDpxioSp2+taBSoGTP4UAZ5T/8AVVZkGeBWoUGNuee5qBkOOlAGUy8jk89TUEigf41pyLngDpVV0IyTwD3oAobQOp464qBhzyMnrV5kycBcVDsYA7iOOPwoApMgwTnk9ahbPqOP0q6yAnIA6VXcHGNvA7f40AQEZJxx35qNAo4wfr3qcxbvf1poTDEZA9D60AQnJYhxnHftUgbJ46Dn8qRlwcN8oNG4j0A7f/WoAsxHGEPHNaNvIN3HQfrWPGTn5h14/CrcbEN9KAO0srrOB69K3UOR61xFrNhh711FpcBgOaAL5HeoitWOCKYRQBUZRULLnrVsjtULLQBUK89eRRA21j71KynOQMVEVyM46CgC2xJ681XlQ/nT0Yn5T2qRge/0FAGRLx8uMH17VnyAAgHvW28XGMZFZ8yAADGaAMqVT0HSqj7lGPXpV9k5GT16VVZdpwcnB/OgCkVI5bqagfKgAetXSuBjP1FVnDfdPAoAqbF2kE9eCf61DIoH7sHp0Iq4yqRjGMdqhcbc9ifxoArMRzx97HHSoPK2ZLcZ71ZK7k3E9OfpUOMYEgBznjuKAI3456DuOtRMrkEY6fyFTuScAMAQeM1COeVyw+tACKSQSvPt6UMhQbx39e1D5JBXj1AFIH4KNzgdT0/GgCXAIBYDHpTg24hs8nj/APVUKklSARk9utPUgpt28A9+Me4oA//S+FqKXHFJQAmKMelOooAZikp1JigBtFLSUAJSU6koAT60UvtRigBtJTqTigBKKdRigBuKKdRQA2ilooASilooATpRS0UANxS06koAbiinUGgBKKWigBMUUUUAGKTFLRQAlFLRQAmKKWigApMUtFACUUtFABRRRQAmKKWigBKKWigBKKWigBMUUtFACEUlLRQAlFGKKAExS4oooAKKKKAExRS0UAFJS0UAJRS0UAJikp1HvQAmKSnUUAJSUtFACUUtFACUUtFACUUUtACYopaKAExRS0UAJRS0lACUtFFACUUtFACUUtFACd6MUtFACUUtFACYoxS0UAJiilooASjFFLQA2ilpKACj60UtACUc0uKKAEopaSgAooooACKb0p1FADaKKSgAopaKADFFFFACUUtFACUUUUAFFFFABRRRQAUUtGKAEopaSgBaKKKAEopaKAEopaKACkxS0UAJiilooASloooAMUUUUAFFFFIdwooozRYLhRRRRYLiUUUUxBS0UlAGlpeq32j3Qu9PlMUg4PcMPRh3FfQHhXxxY6+VtZlFven/AJZ5+VvdCf5dfrXzbTkd42DoxVlOQQcEH1BoGfZ6tke9SV4P4U+I0kLLZ+IpCycBbjBJH+/jr9Rz9a9xtrqC4iWWFxIjgMrKcgg980hExWmFDUwwaCOaYFJ48j3qB4ycAdK0GWoiooAzPK5PpVdlx8p571pyRhsEdqgaI5GQM+1AGUUwpJGarFecYzmtVlIGQOaqmPBz2xigDOYZ+UYyR1HWoXUbdzkZ6EVfePA9+1VymTjGcfzoApFWA3ZH4VCy5KnHPr6fnV3b8vPXNQSIysWAzkc0AVXHRsA0gXPPTHarHtjmoAp79KAFUZbHTFSKSQRuxnmocgg5JA7VKMsAeM9qANGBsMOc1v2lyu7pzXLruBznGOvtWpbSbSCe9AHcQyAjmpzyM1i2k/rW0hDLQBCQc5qJlqywFQsOaAK7AmotvfrVkrnnsajYcjHbrQBWHynjirGAwAz161Ew7ZpyHHGc0ADrxgdKzpF5OBya1Dyv16VVlTdkrxmgDGlRQAQe+B7VRYEtjHTr61sSIAcAcg5qnInU42mgDKKqx5Ge9QPtLYPOPyzV1lGcn8Kr7Q31PegCsyE4c4OKqMMrvHrxV0rx83X2qB1bAA+uPSgCpjcScDK9R2qEgbmwOexNXGQkcDAxzUDP8xDYGB+tAFYDf8qrnjqfWmcdffFThDGBv9eoqBh8ueOeg9qAI2XHGRjOR34pG2sCPXvUm0EdCoA61E2FbB4HrQAhKxnLnJxkZ/8ArVKGAT/ZI6VGQVxxn0pxcpkgZ4oA/9P4ZxSU+kxQA2inYpMUANxSEU6igBhFJinkUlADMUU/FNxQA3FFOxSUAM70U7FGKAG0tLRQA2ilooASilooASjFLRQAmKMUtGKAEopaKAEoxS4ooAbRTqTFACUUtFACUUtFACUUtJQAlLRS0AJRS0UANopaWgBtFLSUAFFFLigBKKWigBKKWigBKKOlFACGilooAKSj3paYCUlOpOaQBRRRQAlFLjvRQAYpKdSUAJRS0ntQAUZoooAPaiiigBKWiigBPaloooASilooASiloxQAlFLSUAFFLSUAFFFFACUU6koASloooASjilooASilpKACilooASiiigAooooAKKKKACkpaKAExS0UUAFJzS0UAFNp2KSgBKWlooASiiigBMUmMU6igBlLRikoAKKKWgBKKKKACiikoAWiiigAooooAKKWigBKKWkoAKKKKACiiigAooooAKKWkoAKKKKACiiigAooooAKOlFFABRRRQAUmaWk60AFFFFABRRRQAUUUUAHSur8N+L9T8OSbIT51qxy0Lnj6qf4TXK0mKAPrTw94j07xBafaLKTkffjPDofcenuOK6MN+NfGFreXNjcJdWkrQyocq6nBFe8+FPiRZ3+yz1oi2ujwJekTn8fun68fSgD1cimlBSrKHH+H86f2oArMmagaPjmtDFRMlAGWyADHrVZk7GtZ48iq7RnGT0H50AZTRnA31WdBk8dK15Iy3HB7mqkoxnjg9qAMl1wc+vAzUDoVUkcjr71qMueew6Zqq6uWJboaAKBBAyBzUOFA9cd6vmNck9/Sq7oQu44x2oArFQwUjjHrTGVQcrnOMH0/CrIBHJHY800jo2Puj+dACRkDMYPbIq3HJgkk5AqmG2naM8+tTg8qo5xQB0FvPswSeT1rpLaTcuO+K4mGQhhj8a37K4B2j86AOmxkComFLC4IweakYdiKAKrCoyARVplHWoiOOlAFVlzyeKiIweBmrRGTUTJzkcZoAFOD04psi4yR9KIyVba3IqU4xigDNdOvrjpWc6smcdDyfWtxwOp6ms+WM5YnoPTvQBjvH3xx6DrVRgQAT0PatOVWBGM4PeqbxqAR156+lAFBxwGA6Y6dqhcMrZA6GrjjBK9OAfYmoHUAAdaAKTL0255GTVd3OCv8XUZ9KuMMBec1Cyx4wRuB7UAQOAWUEn14+neoCA2QF4Hf0q26N0Qj2zUD7QMAH6CgCqhZQV6Z6Go929WOOc4J9ce1Wij4weDTNwOMjkZyaAIBvBGBnjkUmTtAP4VMVBIwRn1pgUkg5wPSgD/1Ph2kNPxSEUANopaKAI8UlSUmKAGUlPxSYoAZRTsUlACYpMU/FIeaAGYop1JQA00U7FFADaSnYooATFJTqSgBMUUtFACUUuKKAEooxS4oASiil5oASkp1JQAlLRR9aAEopaKAExQaWigBtFLRQAlFLRQAlFLRQAlFLijFACUlOxSUAFFFFACUUtFACUUUtACUUtFACGkp1GKAG9aKdSUAJRS0YoASkpaKACilpKACkpaKAEopcUUAJRS0d6AEopaKAEopaSgBKWlpKACilpKAEopaKAEopaSgApKdSYoAKKKWgBKKKKAEpaKKACiiigApKWgUAJSU6koAKKKKAEopaSgAopTSe9ABRRRQAUUUUAHFFFFABSUtFABRRRQAlLRRQAmM0mKdRQAyloxSdKACkpaKAEopaSgAopaKACkpaKACiiigAooooAKSlpKACloooASiiloASilooASiiigAooooAKKKKACiiigAoopaAEooooAKSlpKACiiigAooooAKKKKACiiloA9C8LfEHUtCKWl5m7shgbT99B/snv9D+GK+gdK1rTtYtxdadcLOh64+8vsy9Qa+PK1NJ1jUNFuheadMYpB1HVWHow6EUhn2LwOn1pWA6V5x4U+IGna4Y7K6UWt6RgKTlJD6qT3/2Tz6Zr0YHcSD1piGlQRioGQ1bpCMigDNaPI9DnNV3TOTjitZkzVdoyc4oAx2iBPHGageLcpJG0jrWu8Z6frVZ4yxGe3agDHeMn5Rwaruh5BHFarxgE881VdM84yaAM6VTzjj09qiMYYjuR2q88JK4HJ7momjKnrwPzzQBQKEPg8mpBgAAHPpUmzgjr3zTCB2FAEyMqnBPJx0rThlAwF9etZG9dxHTHQmrcRJ298UAdfaz8dc81tBt6iuPtJQcbeOeRXRwSgrwelAFsjIqNhU+MjimlaAKhHPNMYHNWGT161GRxzQBUYYOakB47GnstRAbTnOTQAMCWHpVOZch9uQa0PlI+vIqCRT1PegDFcA8kZxziqUoIwCOo5xWw8YBOD1HNZ8iADnvxQBnOpckEc9hVTYMnPA/zxWk3K4+6D+dUpFxwDk9aAKThSOR931qEjbz3xwD2q6QPqOjVXcY49qAKxBznPTqaib5c7hnHJq1tPb8qrsu488HtQBW/vlfl7+9RtuKFjwcdR0qzIGLFW/CoirFsHgUAVy3B3DJ46dPrSAPuGW+UDvSupbtg9MUpG7LcqwHA7UAf/9X4hxSEVJim0AMpKeaTFADKTFPxSYoAbSYpxpKAG4pKfikxQA3FGKdigigBmKTFPxSYoAbRinYoxQAzFGKeRSYoAZikp9GKAGUfWlooAKSnUUANoxTqSgBKKXFGKAEopaKAG0YzS0tADaKdijHpQA2jFOxSEUANxRTqMUAJSU6jFADaMU7FLQA3FGKdRQAyin4ptADaKdikoAKTFOpKAEoxS96KAExSU6igBtFLRigBKKWigApKWigBKMUUUAJRS0UAJRS0daAEooxRQAUlOooASiiloAbRS4ooASiiloASjFLSUAFFFFABRRRQAYpKWigApMUtFACUlOooASiiigAxSUtJQAUUtFACUUUUAFFFFABRRRQAlHFLSUAJR1paMUAFJS4ooASilooASj3opaAEopaSgAoFFFABRS0UAJTcU6igBlFOxSUAJRS+1JQAUUtFACUUUUAFFFLQAlFFFABRRRQAUUUUAFFFFABRRRQAUUUdqACiiigBKKKWgBKKWkoAWkopaACkoooAKKKKAEpaKKAEooooAKKKKACj6UtJQAtFFFACglSCDgjpivUPCvxIvNL2WWtFru1HCydZU9ufvL7dR69q8upKQH2bp+pWWp2qXllMs0Ljhl/kfQjuOorRr480XX9U0G5+06bKUzwyHlHH+0v9etfQ3hTx3pviEJBIy2t8RgwseGPqhPX6df50DO9xTCgpwJP1p+OPrTEU3jzzVZ4l+8a08VCyEmgDJeJQcnk1WeI9FPTith4z6VTkiPXHNAGTImBwOP51VaJgQw5H9a2JE+T0Pc1UeMFsrnJ6gUAZZjG0gjJ9BUDfLyFHXitJkYjC856VWdCOcZx2/nQBVK5ION3rUoXg7hgev0qTZyzgheBx7U1D82GwD7e9AFuJwW68+3pXQWkqjJUmuYjbdlT2xj1rRgkKcnqeM0AdnE+UANSkdKybWb5R2rWDBwMUARsuajIzVg9KYRyaAK2M8ComBxjvVplqMrQBWBIxkU8qcHb1PalIxmnDBAB7c0AZzJjOef5VQljBzk9+a2HU5/WqEkZIPGe9AGQ0Y+vfiqzqB0GMf/rrQkjcAjp6f/XqnIDnoeKAM91UDuM9feq7KSduNvtV9lU9emOlVyNwyevt6UAU2B3buc+3Wo22g9KtFWOe1QMuAVXntQBTkCsDs7EZqD5d4Cr8wPr61dZBuPJA46+tQ7GaMqo2j+tAEbAswLDjsRVbl8gZ4PFWyNxKxj73PNQ7AVyzD2HrQB//1viam04ijFADCKTFPxSUAMxRin0lADCKbTzTaAG0cU7FJQAmKTFPpKAG4oxTsUYoAZiinYooAbSYp+KSgBmKTFSGm0ANxRTqSgBtFOpMUAJS4oxS0ANxSU6jFACUmKdRQA3FHWnUUANop1FADcUYpaWgBuKMU6igBuKKXFLQA3GaMUtFACUUuKSgApKXFFACYpMetO+tJQAmKMU6igBlFOxR0oAbiinUlACUU7FJigBtFOxSUANopaKAExRS0UAJRilooASilpKAEoopaAEopaKAEooo60AFJTqSgBKKWigBKKWigBKSndKSgAoxRS0ANopaKAEpaKSgAooooAKKKKAEoxS0UAJS0UlABSUtGKADpSUtFABRRRQAlFLRQAlFFFABRS0UAJSUtFACUUUUAFFFFABRRRQAUUUUAFFFFABSEHtS0UANpKcRSUAJRRS0AJRS0lABRRS0AJSUtFACUUtFABSUtFABRRRQAUlLRQAUlLSUAFFFJ7UALRRRQAUUUUAFJRRQAtFJRQAtFJRQAUUUUAJRS0UAFJRRQAUUtHFABRRRQMKKKKAClBIII4xyKbS0Aes+FPiXc2BWy18vcW4wFmHMiD/a/vD9frXvFjf2l/bJd2cqzwycq6HI/wDrH2NfFvSt7QfEeqeHbn7Rp8uFYjfE3KOP9of1HNID7DGDz1oIzXBeFvHWleIU8lnFpeDrC5Hze6N3+nX2rvUYNx/k0xEbLzVZkzxV89enWmlRQBlNEO44qu0Z59e1a7x1WaHgkDmgDFlh4zVdkIOeO1a8kZPAqs8WQRjqOlAGG0JGT75IprL0K9c8GtJ16cdPT0qu0ePu9DQBU2nftXqeKtxOWyAelR8qd2OcfzpVDNgodp/OgDatZsEHqT1HaugglVhgDFcfE/lkY6f41vWs60AbuOB703HPrRG4IAzT+BQBEQfTNREVY4qMigCuy5+tREHIH51ZPWomXkn8qAGEZFVZEAHBq8OvNRMgPIOfagDGkTIPr0qiUKoWJ5FbUqBgeMZ7VmvGMHA60AZjEbRx2/zmqrIzdCMjkY9K05cAYUDj1qjICBg+nUUAUWUqd4HXr7fSoMYXpgdh6GrrEtwBxVVl5GTz6YoArHk8HsSDURA+ZOQO3v8A/qq2yAtjPFQ4ZX77TxQBV28EyHoO3vUbxvnqOOnrVls4MYxtHb8OtRg7ThQfrigD/9f4pxSGpMU00ANxSGnUlADKSn4pMUAR0YqTFNxQAzFJin4pKAG4pMU/H40uKAI6XFKRRQAmKQ06igBuKMUtLQA0im4qSkxQBFijFPIpMUAMxiinUYoAbRS4oxQA2j606jFADaSnYooAbS0uKKAG0U7FGKAExRiloxQA2lpcUUAJijFOxRQAmMUlOpKAExSYp1FADaKdiigBtJinUdaAG0Yp2KMUANoxS4oxQA3FFOooAbSU7FFADe9GKWjFACUlOoNADaTFL3ooATFJS0hoAKKWigBKSlooAKDRRQAmKKWigBOlJS0YoASilxRQAlJTqSgAoopaAEooooAKSlooASilooATFFGKWgBDSU6kxQAlFLRQAlFLRQAlFLRQAlFLRQAhzSU6igBuKMUuKXFADcUU6m0AFFFLQAlFGKKAEopaKAEpKdSUAFFFFABSUtFACUUtFACUUUtACUEUtFADDRTiM03pQAUUUUAFFFFABSUtFABSUpooASiiigAoopaAEopaSgApKWigA9qKKKACiiigApKKWgBMYpKWigAooooAKSlooASloooAKKKKAEopaSgApKWigAFLRSUhi0UUUwEooooBiUYoooEKrFSCpwQeCP8AGvW/C/xOurJUs9eBuIRws45kX/eH8Q9+v1ryOigD7T07U7TUraO9s5BLBIMqyng+v4+o61ojBr430TxHq3h+cTabOUUkFozyjfVf6jmvojwv4+0vxAEt2P2a9PWFzwx/2G7/AE6/zpDPQdoPFRsnpT1dT0qTOeBTEZ8iZbpVaSE5IrXZQelQNHnqKAMSSPnjgj9apSIOWAPB/Kt2SHJ6c1UaMjPH1oAw2jBO4cMeP8KiZHBIXgjnNazQ7eM8DqarFO2AW56/1oArISPm9OM1ctmIfk84zVYx4wQcAmnIMH0GaAOpt5sbQa1OoyK5W3kZGwec8mt+CXOADQBZxSEcU9uBkc0lAELLzTCKnIqMjmgCueDSfeGBwae4pqjnmgCs6ZI96oTICe/+NbDpyRVGRPSgDFlTcDmqLxhuVzjHatmRD0Ocd6oOgGc8c4OO1AGeUPUDj1qqxVeXPJ6VeePABXk5/CqzqVJ3DOePoKAKrg4znv2qF1wTvYn1H0q0QNuB2quwI9sfrQBWbnLp/d/LmodvOActnOParZBxnGKY+ATg9fQdKAP/0Pi09aQipMUYoAjxSYqQikoAixS06koAaRTMVJ1pCKAGUmKfSUANxQadSYoAZijFOpQKAGYpKkxSYoAbikxTqSgBKKdijFADMU3FSYoxQBFijFPIoxQAzFIRT8UYoAjxRin4ooAZRTsUYoAbijFP6UlADcUuKWjFADcUY5p1LQAyinYooASiloxQA2kxUlJigBlFOxRigBtFOxRQA2kxinGigBuKKdikxQAlGKWkoAKSlooAbRRRQAUdKKKAEopaKAG4pMU+koAbikp9JQA2jFOoxQAzFFOoxQA2ilxRQAlFLijFADaKWigBKWiigBKMUtFACUUtFADaKdik7UAJRS0YoASilxRQAlFLRQAlFFFABSUtFACUU6koATFFLRQAmKSnUUAJikp1FADcUU6koASilooATFFLRQA3FFLijigBKKKKACijrRQAlFLRQAUlLRQA2inUlACYop1JigBKKKKACg4paSgBmKKf1phoASloooAKKKWgBKKKKACiiigBKKWjFABSUtJQAUUUUAFFFFABRRRQAUUUUAJRS0UANpaKKACiiigAooooAKKKO1ACUtFJQAUUUUALRRSUDQtJS0UAJmjFFFABSUtJQMKKKKBWClVipBBwRzSZooEeseGPidfWLR2eu5ubYYXzQP3qgcc/3gPzr32w1O11C3S7s5Vngfo6nI+nsfY818VVsaNrup6DcfadNmMZP3kPKP7Mvf8An70DPs8ENyKUjivNPC3xC0zXNlrcf6JebeVc/K+OuxvX2PP1r0lZAwz/AJ+tADWTIqs8e1cDsP51fIHak2KcgigRjSQ5HPQiqbRAjB9a3mjJ4PeqckfHyjBoAw5I2Pztkc9KhYFMs3f0/pWu8POfWqrRAAFs+1AECbSQe1attIwI5wKyvLYMCcVZjJBI64oA6eKQkfN09Kkx3rLgk6c8Vqqdy9c0AIeeajK5qUccdqAKAK7dKaw44qcqKYVz2oAgAJBOOlQyISDU5UoSM9TSuNw/CgDGkQEnPSqMo2+tbTqw6DOazpVwxGD+NAGUQCfm6mqbpxgckYFakiDsDwapyRqQM9aAM9ggOw5weuagZf4RggVbbcvXnPWo3H94/hQBWZQoOzjB5qAgNz35qyyMBkjI9qgkwI8LwRzmgD//0fjQim4qbHFRkUARmm4qQikoAjwaSpDSYoAZimmn4pOtADMUYp9N4oASkxT6SgBmKXFOxRQA3FGKWigBuKQin4oxQAwC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FABRRRQAlFBooASlopaAENJS0lAB0ooooAM0UlFAC0UUUAFJRRQAlJTqTHpQA2iiigAopaSgAo60UUAFJS0hoATvS0lFABR0paSgAziikpaACiiigA96KKKACiiigBKKWkoAWikpaAEoNFLQAlJS80lABS0lFABRRRQAUUlLQAUUUUAFNp1JQAUtNooAWkpaSgBKKKKAF5opKKAClpKKAFo6UUUAdT4Z8X6t4Yn3Wb+ZA334HJKH3Ho3uK+mvC3jPSfFFsDaN5VwgzJA5+dfcf3l9x+OK+O/pU9vcz2k6XNtI0UsZyrqcEH6igD7vVlbkdqkAU4rwzwd8U4LkJYeImEE/AScDCP2+f8Aun36fSvbYJ1kCtkENyCO4oAcyc00Ag1Y600gUAAwwwai5Vtv61MOlNdQ68dRQAo5oxioA5HB696nHIoAqHKNuP3WNIwyDVpk3qV79RVUMW68N3FAFKZRnjpisyaPGTnqK2p0zgVQkUEH8hQBjSq351RlUnGep/i9a1JV+b2I5qkyPj2PX/61AH//1fkoimVMRUZFAEZFMNS0wigCI03FSkU3FAEZphqSmkUAMNNxUhpuKAG0hp2KCKAI8UuKXFFACUUUUAJTadRQA2l4opKAFxSUuKKAG0lOooAaabT8UlADaKdSYoAbRTsUYoAZ9KTFSdKQigBtFLRigBtFLSYoAKWkooAKSnUUANopaSgApKd1ooAbRS0UAJRilpaAG4pMU6igBlLS02gAopaSgBKKdSUAJSfWlooASk60vvRigBO9FGKKAEoxS0UAIabTqTFADTS4pcCjFADaSlIpaAG0UtJQAUh9qWigBtJTqKAEooo5oAT2o4paSgApKKXpQA2kp2KKAEpKdSUAJSY5pTRQAlHSlpMUAFJS0UAJRR1ooASilooASilooASkpaKAEpaKKACko60tACUUUtADTRS4oxQA2ilooASkpaSgAopaKAEpKcaSgBKKKKACiiigApKWkoAKKKKACkoooAKSlooAKKKSgAopetFACUtFJQAhptOooASkpaSgAo+lFFABSGlpKADiiiigApKKWgBKBRRQAUUtFABSUtJ70AFFHvRQAlFLSUAFFFFAC0UUUAJRS0lABSUtJQAUUdaKACiiigAooooAKSlooASiiigBKXNJRQAlFLSUAFFLSUAFFLRQAlGaKKACiiloAOlekeEPiNqXh3y7C9zd6cDjYfvxj/YJ7f7J4+lebUUAfcWk61p+s2qXumzLPC/dTyD6MOoI9DWznIr4f0LxDqnh27F3pkpQn76HlHHow7/XqO1fUHhHx5pnihfKhBt7tBl4HOTgdSp7j9R3oA9AxmlHHFIrAj3p1AEEysMuvaiJs4qxjuRmqsgMRz2oAs9aqTqdwcd+CferCNuUGnMm4EH0xQBQfkHHYVTkXHQZHerwXBKn+GoZFIFAGNKvbnP9O1Z8qgELjPqRWzNwuTWdPHtxlskUAf/W+UCBUZFT4qMjigZCRTDUpFNIoEREUwipDSUARYppFSGmkUAMppqQimmgCPFGKU0lACUmO1OpKAG0tO70lADcUlPxSYoAbikxT8UmKAG0lOpDQAU2looASiik5oAKKWkoASjmlpDQAlFLRQA2kp1N5BoAKSlooASjFLiigApMUtFACUlLRQAmOKSnUUAJRRRQAUUUUAJRS0YoAbRSkUUAJS0UUANpKdRQAlJSmkoASloooASkxS0UAJRRRQAlIaWkoAKKXFJigBKSlpaAG4pMU7FJQAlFLSUAJRS0lABSUtFADaKXFFACUlLRQA2iloxQAlJTqSgBKKXFFADaOKXFJQAUhpaSgAopcUn0oAKSlpKACkpaKAEpaO1FAB0pKWigBKKWigBMUUtJQAUUUYoASkpaSgAoopaAG0UUUAFFFFACUUtFACUlLSUAFFFFABRRRQAlJTqQ0AJRRSUALRRRQAUlLSUALSUtFACUYopKACkpaKAG0UtJQAUnelpKACiiigBKWkzS0AJS0lFABRS0UAJRS0UAJRS0UAJRRRQAUUUUAFFFJQAtJS0lABSUtFACUUUUAFFFFABRRRQAUUUUAFJS0lABRRSUAFJS0UAFFFFABRRRQAlFLRQAlFLRQAlFFFAAR2qW3uJ7WVLi2kaKWM5V0JDA+xFRZooA+hfBPxRjuBHpviSQRzkhUuT9189A+Pun36H2r3SORX+6QQe4ORXwNzXpvgv4jXvh5hZahuubEkAZJLxf7vqPb8qAPrP0pkihlINZ+l6nZapZRXthMs8MoyrLyPcH0I7g9K0gc9KAKQbyW8t+nY1cQ571FLD5nIOGHQ1HFJng8UAOuF5Dr0H3veoGG5f1q+MEEHoeDVIr5ZKHoOlAFCZATx0rOlQe/v71sSrWfIpPPtx7UAf/1/E/HPw91PwXItyJDe6ZIcLcBcFD2WQDgH0PQ+1ee5DKCOcjNfoJLDFcQvbTxrNFINrxuAysD2IPBr5w8e/CWay87WvCEJlt8l5bNT80YP8AzyB5I/2eo7UDPCCKYRUhOQc8FThgeMEdQfemsMGgCEimYqbFMIoEREU2pSKYaAIzTTT6aRQAym/SpCKQigBmKSn0UANpKdSUAJSU40lACd6Q0tFADKMU7FGKAGYpKfikoAbSU+koAbRS0lABikp1GKAG0lLijFACUlPpMUAN70uKMUtACU2nGkxQAlJTqSgBKKXFJQAUlLR70AJSU6kxQAlFLRQAlLRRQAlFLikoASjFLRQAhpOlLSUAJSU6koASloooAKbTqT2oAbiinUlACUUtFACUlLSUAJRS0lAB9KSlxSUAJijFOpO1ADcUUUUAJRRRQAUUUYoASig0UAJRS0lACfyopaSgBKWiigBDSU6koAbRS0lABRRRQAlFLSUAFFFFACUUUUAFFHSloASiiigApKWigBKKKKADvSUtJQAUUUlAC4pppTSdaACilpKAEopaKAE5opaSgBKKXikoAKKKKACkpaSgBKKKOhoAKKKSgBaSlooASloooASg0UGgBKKKKACkpaKAG0UuKSgBKKKKAEpaKSgApaKBQAUUUUAFJS0UAFFFFACUUtFACUlLRQAlFLSe1ABS0lFABSU6koASij3paAEooooAKKKKACkpaKACjrSUUAFBoooASiiigAooooAKKKKACiiigAoopKACiiigApKWigBKOlFFAHTeGPFWp+F70XFk5aFiPNhJOxwP5H0NfVXhXxhpfie1M9k5WVDiSF8BlJ9u49xXxf8ASr2najfaVdx3unzNBNGflZf6+oPpQM+8gc81WnjIxInbqK818FfEiy8SFNPvwlpf7ehOEkI/uE9z/d/LNepgqw96AIY3V14pLhCVDr1Tr9DVd90L5/gb9KvKQw24+91oEUCB3yQKpSJxkcf1rRKlH2dCOhqvIuetAH//0PVge49ealzjkHFU1f3qcNQB5P49+FVp4mkfVtFZbPU9uGTGIpyOm4Do3bPfvXyzdW1xZXMlnfQtb3MJIeNwQQRx36j0NfoADXG+NfA2l+NrHyrg+RfRcw3Kj5lPo3qp9PyoGfFBHFMrf8ReGdZ8Kag2mazEFPWOVeY5F7FT/Q81hdeaQEZFRkVPioyKYiLFMNSkU00AR4pKdTTQA2ilooATFNxUlIetAEdFOIpKAEpKdSUANxS0tJQAlNp9JQA3HNJipO1NoAYRSU+koAbilo9qWgBppKfikNADaKWjFADc0UtFACUUUUAJRRRigBMUlOxSUAJijFOpKAEpDTsUmKAE6UUfWloASilooASkNLSUAJRQeKWgBKTpS0lABSUtFADaWlpKACijvRQAmKTFO+tBoAZS0Uc0AIKMUtJ7UAJikp1JigBKKWkoASjrS0UANxSYp1JQAlFLikoASiiigBPpRRRQAlJT6TFADaSnd6OKAEooooASjFFFACUmKWigBKSlpKACkoooAWkpaSgAooooADRRSUAFFLSUAFFLiigBMUlLRQAlJS0lMAooopAFJS0UANo4paSgAooooASkp1JQAUlFFABRS0lABSGlpKAEoopaAEopaKAEooooAKKKKAEoopaAEpKdikNACUUtHSgBKQilooAZRTjSUAJRRijtQAlKKKKACiiigAooooAKKKKACiiigApKWkoAKSlooASloooASilptAC0lFFABRRRQAGiiigANJS0UAJRS0UAJRRS0AJRRRQAmKKWkoAKKKKACiiigAooooASilpKACkpaKAEooo+tABSikpaAHo7RsHRirKcgjggjuK9+8C/FLf5Oj+JXw5IWO7JwD6CT0/3vz9a+f6KAPvnKyDae/IqtG7RSbG9eDXzT4D+JNzoTrpetO8+nNhUc5Z4Pp3K+o7dvSvpOKa31K0jurKVZopV3RuhyCPUfyNAFqUBgsvcdRVZl9DzU8EhYeW3UfezUagqzIw4HYUAf//R72OfOAKupJXJRXYbHzce1bENxwCT16UAbyvmpQ1Zkcucc1aV/egDP1/w/pPibTn0vWIBNDJ0I4ZG7MrdiK+RPGvgTVvBl0DKGudPmJEN0Bx/uvj7rfXrX2gGFMura01C0lsL+Jbi2nXbJG/KsPQ0Dufn4cYGKjNetfED4X3PhUS61pDtd6WWLOhH7y3BPHT7ye/UV5MGVl3Kcg96AIzTTTzTTQIZikp9JigCOilNFACUlLiigBtIadSYoAbijFOoNADKKdSYoAbiinYpKAG0lOpKAExTcU+mmgBKMUtJQAUlLSUAJij6UtFADaMUtFACUlLRQA2loooASkp1JQAUlKaMUANopxpKAEpcUUdaAG0U7rSUAJSUuKQ0AFJS0UANoxS0UANop1HFADaSnUGgBtLRRQAU2looASloooAQ0lLRQA0UYpaKAG0U6koASkpaKAEpKWigBKDS0lACUlOptACEUUtBoASiiigBKSlpaAGmkpaKAENJTqbQAtNp1JQAlJTqSgBtFLSUAFFAooASiiigApKWigAoxRRQACiikoAKKKKAE70UUUAJRS0lACUtFFACUUtJQAlFBooADSUtFACUUUUAJRRRQAUlLSGgA6UUUUAHWiiigBKKKKAFpKKOKACig0UAFFJRQAUn1paSgAopKWgApCKWigBtFKabQAtJRRQAUUUUAFFFJQAtFFFABRRRQAlFLSGgAooooAKPeik+tAC0UlLQA2lopKACiiigAooooAKKKKACkpaKAEooxRQAUtJS0AFJRRQAlLRRQAlFFFABRRRQAUUUGgBKKKKAEooooAKWkooAWlpKKRQo4rv/AAT47vvCd0InzcadIf3sGeV9Xj5wG9ex79jXAA0tAj7j0/UrLWrCPVdKlE0Mg6j+RHUMO4NXnbIWUcdiBXxz4U8W6n4UvfPtGL28h/fQE/JIP6MOx/pX1do+uabr2njVNLcy274VlPDIw6qw7Efr1pgf/9JsU/Hy9Dz6fnW1b3JCpuK4PQ9yK4aObCghwx3ck9/atmG4A6EYbpigDuILoHg8fWtFJc9x9K46G54AznGa2ILjAXPegDo1epwwzzzWVHPuAx3q0su7nNAF9gsgYOodHGGVgCCPQg9a+cviN8J5Imk1/wAHW+5MFrizTsepeIfzUfhX0Osn41OrbTkdaAPzvVwwyKQ19UfED4T2utLPrXhlFt9SOXktxxHcHuR2Rz+R78818syxywTSW9xG0UsTFHjcYZWHBBB6EUAMooooAaab3p5pKAG0UpFJQAGm06jFACYpKWigBtFLiigBtIadSUANxSU6koAbRSmkoASkp30ooAbijFLiigBvU0UuKMUANxS4pcUUAMpDT6SgBtFLRigBtFFLigBKKXFJQAlFLRQAlFFFACUlOoxQA2kp9JQA2g8U6koAbRilpDQAneilpKAEopaKACm06jpQA2ilpKAEpaKWgBtJS0UAJRilooAbikp5ptACUhpaKAEooooASil96SgBKKWigBppKd70fWgBnNFOpKAEoNLSUABoo70UANNJTqKAG0UtJQAUlFFACdqSlooASkpaSgAooooABRRRQAUUUfSgBKSlooAKKSigBOKKKWgBKSlooASiiigApKKKACkxRS0AFNpaSgBaSiigBKKWigBKKKDQAUfSikoAWkpaSgBDRRiigAooooASloooASiiigApOtLSUAFFFFABRRRQAU3FLS0AN6UlONNoAKKKKACiiigAooooAKKKKACkpaSgAooooAKKKKACikooASilo96AEooooAKKKKAEpaKKACkpaSgApaKSgAoopaACkpfrSGgBDS0UUAJRS0lABRRRQAUUUUAJRRRmgBKKWkoAKWiigAoopKkoUUtJRQA6us8H+LLzwnqi3kJL28mFuIuzp/LcOoP9K5KkpiP/0+CjnkJXfgkdCPX1Na0U4XIzgDue9clFOoyF+8Tlv8+1asMxVgz9B0Pc59KAOvhnIA2nGOOP/r1qxXO35mOQOOv+FcdBPkBW57kg8D0z71rwXOFGzHPJ+tAHaR3Iznd0xWrDPkdeK4uGckDbjPqe+K2YboHpQB1ccmRnNWlc44rCinbGegrQSYEdeaANEPXnfjv4c6f4zha7t2S01ZF+Scj5ZAOiS45I7Buo+ld0rVMHoA+B9W0fU9Cv5NM1e3a2uYuWQ85B6MpHDKexFZwr7k8V+EtH8Y6f9i1RNsqcw3CY8yJvY91PdTwfavkLxV4Q1jwfffY9UTdFIT5FwnMcoHdT2Pqp5FAHMEUlONJQA2kp1FADcUlOptABikpaKAG0UuPWkoASilooASkxTqT2oAYRSGnmkIoAb1paKKAG0U6kNACUUtBoAbSYp1IaAEpMc06m0AFJS0lABSUtFADaSnUUAN9qKKMUAFFApaAEpKdSUAJRS0lACdKQ06koATFJ1paKAExSU6koASjFLRQAlGKKKAExSUtFACYpKWkoAKSg5ooAKKWkoASjFLSUAJRS0YoAb0oxTvek5oAb1opaKAExSGlooAbRSmigBKSlpKAEopcUlACUUtJQAUcUUdKAG0UtJQAntRRRQAlJS0UAJ2pKdTTQAlFLRQAlFFFABS0lKaAEpKXFFACUUvWkoAKSlpKADFJS0lABSUUUAFJS0lABSUtFACUe9LR1oASiikoAWkooNABSUUUAJRS0UAJRS0hoAWkopKACiijtQAlLRRQAUlLRQAnFJTqbQAUUUUAFFFFACUtJS0AFIRS0lADaKXFJQAUUUUAFFFJQAtFFFABSUtFACUUUUAFFFFABRRRQAUUUUAJSUtFACYooooAKKKKACiiigBKWkpaAEpetJS0AFFFFACUUUlABRRRQAUUUUAFFFFABSYpaTNABRS0UAJRRRQAUUUUrDuFFFFFguLSUUlFguf/U8dhlGSQN2O44xV6KRVITAAI5z29xWJvwQqkgAEHPv296uREfKw5UjBzQB0ELKpJDYK9B2/ya07aYFdmOhz14rmYZQybTwR1JrSjmAUquQD938P6UAdPBPnLbuPrW1b3KsRg8dvwrkbebBLfKAfT29q04J8OCGxjk0AdlDc5ZcEjPWteK4AwCOfWuLt7nsRyoxn0z6Vr29z0+bdt65oA66OYGritmubhnzitaGXpQBpg1S1fSNM1/TZdJ1eET203UHhlI6Mp6hh2IqdWqUNQB8hePPhrqXg8nULVmvdKY/wCux88XtKBwPZhx64rzPOa/QwhJEaKVVkjkBVkYBlYHqCDwRXzV8RPhJLp7Sa54RhaazPzTWa5Z4feMclk9uq9uOiGeFUlIOaXtTAKbTqKBDKKWkOKBiUUdaSgBaSlpDQIKKSlzQA00cUuKSgBBSU6igBtFLR0oASkxRS0AJSEU6koAbikpxpCKAG0UuKMYoAbRS0EUAJRS9qSgBMUhp2KTFACUUtFACUUUGgBKKKKAE6UUtFACUlLSYoADSUpoxQA2ilxSUAFJilpKACiiigBtLiil7UAMPtSU40YoASilxSUAJSU6igBtFLRQAneiiigBMUlOpKAG4opaKAG0UuKKAEpKXHFFACUlLRQA2ilNAoASiikNACUUUYoASkp3NJQAlFLSYoASkp1J9KAEooooASilpKADFFFJQAfSilpKACkpaKAE7UlFFABRRSUAFFFFACUUUUAFFFFACUUUUwEope1JSAKTFLRQA2ilpKACiiimAUYopKQBSU6koASlpKKACiiigAooooASkp1JQAlFLQaAEooooAKSlooAbRS0lABR1oooASilpKACiiigAooooAKKKKAEopaSgBaSlpKACiiigBKWiigBKSnUlABSUtJQAUUUc0AFFFFACUooooAKKKSgBaKSloAKSlpKAEopcUlAC0lFLQAntRRRQAUlLSUAFLRSUAFFFFABRRRQAUUUUAFJS0lAH//V8GSTI3EYOe3cetTq4kYqGwx9On41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U4fmgD4D13w/q/hjUpNJ1qAwzpyMcq69mRuhB/8A11lV97+IvDei+LLA6drcPmKOY5F4kib+8jdj7Hg96+PvG3gPWPBN0q3g8+xnYi3u0Hyuf7rD+F/Y9e1IZw9FFFMQlLSc0UALRSUZoAdS02igB1FJRQAtLSdDRQAtFFJQAUtJRmgBaTFFFABTaWg0AIabSmloAbSfSnZpKAEopfeigBtFKaSgBPalpOlKaAExR7UtIaAE6UhpaTFABmkpcUlACUUtJQAhpD607ikNADaKXtRQA00U6kzxQA2k6UvtSHNABSUv1pKACiiigBKKKKACkopaAG0d6U0lABSUfSj60AFJRRQAUnJpaSgBKKWkoAKSiigAptO7UnegBDwKKOtIaAFpD0paQ0AJSUtFACUnSlNJQAlFFFABSUtJQAmKKWkoASiiigBKKKKAEooooASjmiigApKWk6UALSfSiigANFGaSgAooooAKSlpKACijNIeKACikooAKKKKACkpaKAEooooASiiimAUUUUgCiiigApKKKACkpaSgAopaSgAopKKAA0lLRQAlHel96SgAooooAKKKKACiiigBKKKKACiiloASkpaSgAooooAKKKKACiiigBKSlpKACiiigAo60UlABRRRQAUUUUALRSUUALSYoooASilooAKKKKAEopaSgAooo6UAJRRRQAUUGigAoopaACm0tJQB//R+ZdzcoOMY6fzpVDcEgkiofmYjBwO/tipMuAdp3YP50ATg7iXIxkA4x1p6gHDkAA9xUXmAjcGPHf39KfzwQRnGcDpxQBMGyPl+UHPfv8AWnLtXJbJ7YqFBnnoQelTKy7+Onqe/wBaALAyjEsCuMdPSpzId+CAM/rVPO3Geh5BJ7elT7iWCgAdhQBcV8c5wKljY7s9jVRWIznmpVft37UAXwRn3qyrkAEdaz0Y9+DVhW54oAvRtircch5zWWrHpVlGNAGzHN6VejnrASQir0cnTmgDoops1qRT4rl45cd60I5gDQB1cFx2rYguRxzXHwzdMGtOCc5AoA7WKbIq6r1y9vc8cmtWK4PTNAGyGNQ3tlZarZS6bqcKXNrOMSRuMg+n4jseopI3BGasKRQB8lfEP4X3fhUyatpBa70knJyMy2+ez46p6P8AnjrXkQORkdK/RQ4YFWAZWBBBGQQeoIPUGvnf4g/B4jzdb8GQ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lJRQAUe9NozQAtLTaM0ALSUlFABR2pM0H1oAWm59aM0maACjNNzSUAOzSUlFADqSkooAM0UlFABRRSUAJRRmigApKOetFACUZopMUAHFJS0lABSUUhoAWkoooAKSiigAopKKAFpKKKACikozQAUlBpKAFpppc0hoASiikoAWkoooAKSiigApKWkoASiiigAooooAKKKTNAATSUUUAFJmijrQAUUUUAJRRRQAUUUGgApKKSgBaTpRR9aACiiigAooooAKKKKACiig0AJSUUtABSUUUAFFFFABRRiigAooooASiiigBaKKKAEpKXvSUALSUUUAFFFFABRRiigAoopKAFpKKKACkoooAKKKKACiiigAopKWgAopKWgBDS0lFAC0UUUAHtRRRQAUUUUAJRRS0AJRS0lABRRRQAUUUUAFJS0lACUUUUAFJTqbQB//0/lD2pw9abS0AOApwpuc0o96AJOO9LmmDFL04oAeKdmmCnCgB4NOBqOnigB9Lmm0vagB2aWkpaAFp1MpRQA+im0tADhS036UtADs06mZoFAD80ueaZS0ASD3pc0wHvS8UAPz60uajFPB9aAJAakU+lQg9qcGoAm3c08NVcE0/PSgCyrVMGqmp561MDgUAW1cVOjVnq2e9TqxoAvo3INWUeswOanRjxzQBqpIOlXIpRxWKr1MspB60AbySjNXkm5rAilq6kvQ0Ab8c1aUVxjFcyk/FXo5umDQB1cNxitOK4z1NclHNjFaMU54yaAOtinX1p17a2OrWMum6lCtzaTjDxvyD7j0I7EcisKK47VoRzkEYNAHzF8Qfhhe+Ef+JppjNe6O5xvx+8gJ7S4/h9H/ADryjNfoKsyvG0bgMjgqysMhgeoIPBFfO/j/AOEywiXW/B8RMY+aWwXLMo7tD3IHXZ1Hb0oA8EzRTM9vwp1AxaKSloEKDRTaWgB1FNzS5oAWgUmaSgB9JSUlADqKbmjNAC5opM0lADjSUlGaACgmm5ooAKSiigA4pKXNJQAtJRmkzQAuaTNH0pKAClpM0UAJRRSZoAKKSlzQAUn0ozSUALmm5paSgAzSZo+tJQAtJmikoAKKKQ0ALSUCigApKKKAFpKKSgA+lFFJQAGk+tFFACUUGkoAKKKSgAooooAKKKT60AGaKKKAEpKWkoAKKKKACkoooAQ0ZopKAD2paSigBc0neiigAooo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"});function Ur(e){let t=e.split(".");if(t.length!==3)throw new Error(Cr);let o;try{o=JSON.parse(Buffer.from(t[1],"base64url").toString())}catch{throw new Error(Cr)}if(typeof o!="object"||o===null||typeof o.exp!="number")throw new Error(Cr);return o.exp}function $s(e){let t=new Error("Received an unexpected response from Resend while authenticating. Please run `resend login` again.");if(typeof e!="object"||e===null)throw t;let o=e;if(typeof o.access_token!="string"||o.access_token.length===0||typeof o.refresh_token!="string"||o.refresh_token.length===0||typeof o.scope!="string")throw t;return o}async function Gs(e,t,o){try{return await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:t,signal:AbortSignal.timeout(pf)})}catch(i){let r=i instanceof Error&&i.name==="TimeoutError"?`${o} timed out after 30s. Check your connection and try again.`:"Could not reach the Resend API. Check your connection and try again.",n=new Error(r);throw n.name=Sr,n}}async function Hs(e,t){let o=Math.floor(Date.now()/1e3);if(e.access_token_expires_at>o+ff)return{access_token:e.access_token,scope:e.scope};let i=process.env.RESEND_BASE_URL??"https://api.resend.com",r=await Gs(`${i}/oauth/token`,new URLSearchParams({grant_type:"refresh_token",client_id:Vo,refresh_token:e.refresh_token}),"Token refresh");if(!r.ok)throw new Error(`Token refresh failed (${r.status}). Please run \`resend login\` again.`);let n=$s(await r.json());return await Yo({access_token:n.access_token,access_token_expires_at:Ur(n.access_token),refresh_token:n.refresh_token,scope:n.scope},t),{access_token:n.access_token,scope:n.scope}}function wr(e){return e.toString("base64url")}function js(e){let{heading:t,message:o}=e;return`<!doctype html>
61
+ `,{code:r}=await Wo(i);return r===0}async isAvailable(){if(process.platform!=="win32")return!1;let{code:t}=await Wo(`${mo} $null = New-Object Windows.Security.Credentials.PasswordVault`);return t===0}}});async function ot(){if(Xe)return Xe;let e=process.env.RESEND_CREDENTIAL_STORE;if(e==="file"){let{FileBackend:o}=await Promise.resolve().then(()=>(mr(),ur));return Xe=new o,Xe}if(e==="secure_storage"){let o=await _s();if(o)return Xe=o,Xe}if(!e){let o=await _s();if(o)return Xe=o,Xe}let{FileBackend:t}=await Promise.resolve().then(()=>(mr(),ur));return Xe=new t,Xe}async function _s(){if(process.platform==="darwin"){let{MacOSBackend:e}=await Promise.resolve().then(()=>(Ks(),vs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="linux"){let{LinuxBackend:e}=await Promise.resolve().then(()=>(ks(),xs)),t=new e;if(await t.isAvailable())return t}else if(process.platform==="win32"){let{WindowsBackend:e}=await Promise.resolve().then(()=>(Rs(),Fs)),t=new e;if(await t.isAvailable())return t}return null}var We,Xe,br=he(()=>{"use strict";We="resend-cli",Xe=null});function it(e,t){(0,Ke.mkdirSync)((0,Bs.dirname)(e),{recursive:!0});let o=uf(e);try{let i=t();return i instanceof Promise?i.finally(()=>yr(e,o)):(yr(e,o),i)}catch(i){throw yr(e,o),i}}var Es,Ke,Bs,cf,df,Ds,uf,yr,mf,pf,Os=he(()=>{"use strict";Es=require("node:crypto"),Ke=require("node:fs"),Bs=require("node:path"),cf=1e4,df=50,Ds=200;uf=e=>{let t=(0,Es.randomUUID)();for(let o=0;o<Ds;o++)try{let i=(0,Ke.openSync)(e,"wx");try{(0,Ke.writeSync)(i,t)}finally{(0,Ke.closeSync)(i)}return t}catch(i){if(i.code!=="EEXIST")throw i;if(mf(e)){try{(0,Ke.unlinkSync)(e)}catch{}continue}pf(df)}throw new Error(`Could not acquire lock on ${e} after ${Ds} retries. If no other resend process is running, delete the lock file manually.`)},yr=(e,t)=>{try{if((0,Ke.readFileSync)(e,"utf-8")!==t)return;(0,Ke.unlinkSync)(e)}catch{}},mf=e=>{try{let t=(0,Ke.statSync)(e);return Date.now()-t.mtimeMs>cf}catch{return!0}},pf=e=>{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}});var Ts,Is=he(()=>{"use strict";Ts="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QCARXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAABkCgAwAEAAAAAQAAA4QAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIA4QGQAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAQEBAQEBAYEBAYJBgYGCQwJCQkJDA8MDAwMDA8SDw8PDw8PEhISEhISEhIVFRUVFRUZGRkZGRwcHBwcHBwcHBz/2wBDAQQFBQcHBwwHBwwdFBAUHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR3/3QAEAGT/2gAMAwEAAhEDEQA/APgDrRRRQAUUUUAFFFFABRRRQAUUUUAFFH0ooAKKKKACiiigAooooAKKKOKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo+tFABRRRQAUUUUAFFFFABRRRQAUuaSigB1FIDRQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUYoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigAooooAKKKKACkNLSUAdx4RvyDJp7n1dPb+8K9DXDgHGK8Ltbh7W4juI/vIciva7C6S7giuYj8sg70AaCgA1fifjBqkPpirEfHOc0AaqHIGTUwwapxEDk1aUjpQA888VGyg1IKUrkZ70AUJI+M4yaoyRe1bDLgVVdCRnrigDAljP+elUZYh909jXQSR9ttUpY++OvrQBgyRkt6/3arPERnAyPStmSJckY6/0qkynseaAMto153dPU1WyQTnuP0rRZCDt2ZOOtViGIHOeeKAKmD9cjqf89aRVBAJPT1qfaVBzgnqfxqJlbBI45oAjIyCMZNIcjoAakYHHXAHrSAEDHY96AGfwjGN1BOF9/wDPSk4Y7BwemaU4IyBQAq5IIzgj06UdOQBgcE035QpDd+1KoABbGc/yoAcuBntnrSguDzwB+IoG4qdoGP50u4gbeqk5xjmgB44I5yCOKmUu3zE44/Oq67Tn3/SpApABycmgC5vPBXGferyZAyOp555rLRuxzkVfidCATwelAGtEQDnoa0IpDt9zxWJGctuB+X1rRikAGQe9AG5FhR/StCM5H4Vi27jdn061pRNgCgC+DxS5PX8KjU9KmH+RQAnWoyPepgOPftTducE0AVWGRVd17VdK4bHpUEg5z+NAGTJH7YxVN1U579+a1nTPHv1qpKmRtPTvQBiuCQT3qm0UgG485rWkj5Jx+AqpImMnkZ/zxQBjyRsxJC5PUCq5YADI49e+a0WHl/OevOKqzKMZ45xj15oArFU64P1FNT72R9eOtPY7TuXIx2prZYnJ5U0AOKjAC+nU05N3IPPvUQ3BgR0xUsbYz/CfegBMhcP/ABKcdOpqQAH5gOR+XFIoYAlz2pNpHLE/SgBmfmLHgN/SlIIx/tc04fMfmzn9KVsYK425x60AQ4Kn5RnFMKggDJweh61NgEYJwMenWm4Xop6GgCLC5GOvYYpACucfkP6U9hk7lwMHFKTtyFPB6d6AIthJx3/SmHcpBGOetTZUhTyMdff/APXTSvpx6YoAibJXOc+gqPGe/PSpThl3KMD3prcjJGPSgCEjHFRsOan47j8aaR04zQBVYCoWHWrjCoWWgCmwqBhVxhUDCgCsRTCKnYVGRQBAajIqYimGgCOm080ygBKOKWm0Af/Q+AKKKKACiiigAoo9qKACiiigAooooAKKKKACiiigAooooAKKKKACij3ooAKKOtFABRRRQAdaKKKACiiigAooooAKKKKACiijpQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAC0lFFABRR1ooAKKKOlABRRRQAUtJRQA6im5paAFooooAKKSigBaKKKAClpKWgBKKKKACiiigAooooAWkoooAKKKKAClpKKACiiigAooNFAC0lFFABRSUtABRRRQAUUUUAFFFFABRRSUALRSUUALRRRQAUUlFAC0UlLQAUUUlAC0UlFAC0UUlABXoHg/UvkbTpGwVJZM9weorz81asbprK7iuV58tgSPUdxQB73GVIHOD6VYAw1Z1ncpcRJNGflcBl+hrSX34oAsqeatIapoCO1WEOKALg5p2Mc1Ep/WpM/5NAAR+lQuo9KnOM0FeOlAGfIp7DNUpYjkk8jFbDLuHpVWROKAMOSI9SMj6VTljXJ7DPWtuRfYVQkjxkcc0AYzxkH6dCe9U5IumenXp0radFA9wapTRAHb1z3oAySoPUd8YqJwqAJnGetaTxHG3uOM9/aqkkRZjx+HvQBVKg4JPHYetRn5s46Gp8hdylcgcj/Co3UHGBx6UAREKPuDvQQ5Y449acwOOOnakPX5hhemM0AMGRj1P50DODu4NKVY4XOPQ0bT07j1oAXJ4AGQP0pwK5yQMDoaiGBznnP4U4qyt0yR60AOyM/Kc59KkGRnHBHX2qE4U8e1TZy2aAJxjO5WyTjipgcDA5U9cVWTczdADn5TU+WR8sck9u1AF+IovGOTyG7Vei6Lt59qyYXZRgnHYetXYGYdeOwH0oA24WG4dvatSGQKcdc9awYm98e/1rTickLgcj3oA242HGeABVoVmxMD8uevetBOf8aAJOaPX3pQKUCgCE8Hjk1ER7VaI70w8/0oAoOmc47VTkjG08ZFaTAnPaq8i9QeBQBjyqR15NUZhgDjI9K2ZE5x+tUXUL8nv1oAyZULFh90Y6+9UjHy2SOB37VrSICPbNZ8kaqoIA7jOKAM9wdxy2T+vvVdjlgw/hxV10BbBbG45BqBwu35FA5xQBEcn5c8N0/p+dBx0yST2x0pSFOE3c44pArKcMckjg+uKAJDt5LHPp+HtSox+bIzmkTaygd26f8A16BlsEZwD16UASYUkEAk+p4pj/PluoXpTyq7uMnuOaAGKncMUANbGxcLgjv6UzBY8D73P5VIRgYHfqKQ7jgkAMPXtQAw7QWA+UnnPWmlgwwvygdafkKuCee+aQLtGM4LdjQBETuxwSBUZEmQB1HBFWCAqsRnPbjAOKiGDwWwD3oAibaenrSkY64IqV1UtwMEdaYVBHI+nrQBCRxn72KaylcYHBqYhfpimthhk8dqAK7DJz0qEjJq1sPAP4UwgZIA5oApslV2TvV5gemKhZcUAUWWoSKuMtQEUAVStRlasEVERQBARTalIqMjFADKaRT6bQB//9H4AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAFpKKKAFpKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAWkoooAKKKKACiiigAooooAKKKKACiiigAopaSgAoopfegBKKKKACiiigAooooAKKO1FABQKKKAFpabTqACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigAooooASlxRRQB6H4N1IvG+nyHmP5k+h6j8DXo0bZXJ4HrXz/Z3UlldR3UX3oznHqO4/GvdbG5jureK5i5WRQ350Aay46A8+tTr6VXTGOepqdTjpQBZXqKlBBzVdWJ61MDQBKDnNLgmmjFLzmgBCO4qJlzkfjU+abtJ6mgDPZCBzyaqPHz0rWdetVZF4NAGM8fB6VSkQAccitkoAKrSpzuwDigDHeIL1AyPTv8AjVB4wxPGD1yOorZdC33OAKrNGP4sc96AMZ41yVJyTyMe1V2bBOeeMZrTkjVc5BJHaq0itwMcDt/WgCkVy2MDtwP88Uxhzzgj19asOgyWVSajIXqOB3z3oAh+QnDH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EEc5FRYJXp+tAEZXGUx9D/8AWp4wRzyAaTAQnHTFKCvIboBmgCRfu4HGev0qUdOpOO3oKhJ2Y7ZqXblffj8aALm8BR6+h6Yq/GQQTkE9Dn0rNjHGcEY7VdiZd4z+nagDUhY5AznGckelaKMcDnDVjxnAwf0rQVgyjPCigDWjPIBPIrThfjJ/GsRGA49uvar0bY5JoA21w2PyNOxjiqkL55Herq4IyaAIytRkfSrBHpUZAoApOmefSqzLxn07VoMODUDqMGgDJcFevNVJVwQ3PPpWoyY4AqnIpz1x60AZcq4JwOD+dVHCl+mcVqOScjGPeqkig9AOaAMt0U/e+XGenrVTZgjnGB07GtPALemOKqSJxxxjuep9qAM50DNhlJ/HFMAXaMc/j0q06jkL0PHPaq+3Dc8Y49h9aAIwPl5Xvk1NtBKyA/j6UxioGOpzkEdPekPJLcHv7UASof7+DuPbtUzIxyynHbFRIAVXb1BOf/rVIhBIUg7s9e3NAEvO4g8HHH0pVLkbW5zTT0YDHp1p6nCjnGOuev4e1ADCu44k4Ge3elYFQNwIOcUikrgAjKn/AD0p3GCuD/hQA3BxgEEE4yetRklMnsc1LgZy3I7496G2+3y9j3oAjKr1Y1GAB3xj/IqZlHBIyDx8tMIRs7icEYHegCDaQxYcZ7f59ajYHJ+XmrEg24Vj/wDrpmBt6YwecmgCtsDMexHIxTSEByT3696s/NuKr1I9qjYZXK447HrQBWI47A/41Ey/5/wqzg9WGTUZ78fQelAFJl9arsnWr5Xiq7IaAM91qsy1pMlVXWgD/9X4EooooAKOtFFABRRRQAUUUUAFJS0lABRRRQAUUUUAFFFJQAtJS0lABS0UZoASiiigAooooAKKWigBKWiigAooooASloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKACiiigAoopKAFoozSUAHWiiigAooooAKKKWgBKKKKAFpKKKADrRRRQAUUUUAFFHSigAooooAKKKKACiiigAooooAKKKKACiijrQAUUUUAFFFHSgAooo96ACiiigBaSiigAooooAKKKKACiiigAooooAKKPaigAooooAKKKKACiiigAooooAWikooAKKKKACiiigApaSigApaKSgAooooAKKKKACiiigAooooAKKKKALmn302nXcV3AcNG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PA+tLhs45UjkZPFMRlJKrnJOTg1Mqrkq3CgcZ68UAKCQevTGB60Fwr7Tyx6UikSFWU89cHtS7kfLDJI6CgBWIxtKgMelRyDpt5X3qY8rknB4GKbkcKv3TxQBGfm5AyCe1RkgfKDnvk1OqkjJBGfWkCsq7GIHcY/WgCAjKkL379qjIVVIb5c4XPXip8ZOw9u4qFtwJ2jAPNADHAVcN0H6/jUJToe/T/8AVVgKG6kZA49qZ23IcNQBW5wARz/Wo9uRluntxVplIQSckNx+NQMpZgSeD0NAFZlYfKBkDvUDr9488dKvsuSB7Z+tVCoHOPXigD//1/gWkpaKAEooooAKKKKAEpaKKAEpaKKAEopfpSUAFFFFABRRS0AJRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUtFACUUUUAFFFFABRRRQAUUUUAFLRRQAUYopfegBKSlooASiiigAooooAKKKKACiiigAooooAKSlooASilooASilpKAClopKACiiigAopaSgAooooAKKKKACiiigAooo+tABRRR1oAKKKKACiiigApaSigAooooAKKWkoAKKKKACiiigApaSigApaSigAooooAKKKWgApKWkoAKKKKADpRRS0AJRRRQAUUUUAFFFFABRRS0AJS0nSigAooooAKKKKACiiigAopaSgAooooAWk96WigaCikpaQBRSUtMLB0rt/BviAabObG5P7ic/KT/C3+BriKSgR9SxPuAOetWh2xXm/gvxD/AGhD9gunzcQrxn+JB/Ud69FU5HvQBMKUc00HJpRxzQA/FGKAeKKAG4pDkU+koAjI9abwalIz1qNulAELKOuKiI9eRVhhz71EVxz7UAQN1GO9V2BB9AatEKevUc49KiIPPf1+lAFcoOo/GoCoUjBxj171aK4HUfSoGAOMDOKAKzjgjv69qrvGMceuKtsv3sHOfyqJlTPT8qAKbKD16rnA9arOpRCQMjuKvEEHsSe57VCysQMfXp1oAz3TYMnoeKgbDkccjt7VfZfkP+eag2ZAPRjxigCkdueRye/t6VGy7m4GAO3pVtlO35sA5prBi2Tyo9O9AFXk8Hj09qkUEruHQcYpNhYHHUHkd6BkEEHGP1oAnBOevB44q3GemCDWdkFsHjPp2qzGxUjPegDbhkxwPTg1pQkFcDg+tY0T9WPFacDcg+tAGuo4GetTKOMk1BGxxu6n0q0BnjvQBCwA5PanxuUPy8fXrUjLnhhgHvUJUA5c4xQBtQTB1BzxVtsdRWFBNtb/AGfWtuJwy9RQAxhUDgdauEetQsM0AUHXIOKpyJuwCODWm4wCaqOozmgDKlQdD1qrIuSTx1rRkRdp4OaqNGMfTvQBlsCxJ/SqxDDr1A61psuTnGR/OqMqjqP4eo9M0AUGjZk2j8qqSD5SB0HcVpun1B9RVTDYbGc+4xQBSZRyQO3P/wBaoiGVQMZUdu+auOFYEyAg9s8YqsRt6Dg/4UAMwFxtXtUmSCCo9Ka28AlGNNVXxlT7GgCwj5bAwB74wacu7czEfN0wfSq+N7c8gfhVlSSN3UHoKAJAM5UncOvPGalc5XC9+uKjVM/MOW/l+FSKTlkXovQ/T1oAaDyxHHPNS4Vg27hRz70nGd2QCB9317059qruxkD+R9KAI2+ZQQ2D6U0jHJH4VJtTcSPmHr/hSZyuS3zCgCIR5UjOB0AqLGVxgnFWwN3A4ZcHPpUbY3Yzg8596AIJAGw2ec9e+KiwFfGcirDKME4+U/560zYd2MEZ55oAqtGwAUcDrkGomTavAJJ6VbZCwByQPbtUXO35WOOmD/SgCuwII3ZG3tUbqWPXpz7H6VaKhSS+WJGTmoWH8IBB/TFAH//Q+BqQ0tFACUUtJQAUlLRQAlFFFABRRRQAUhpaKAEopaKAEoopaAEopaKAEooooAKKWkoAKKKKACilooASloooAKSlooAKKKKACiiigBKKWkoAKKWigBKWiigAooooAKKKKACiiloAbjFFLRQAlFLRQAlFLRQAlFLRQAlFFFABRS0lABRRRQAUUUUAFJS0UAJRR1petABSUtFACUUvSigBKKKKACiiloASiiigAooooAKWkooAKKPeigAopaSgAooooAOlFFFABRRRQAUUUUAFFHWigBaSj2ooAKKKKACiiigAooooAKKKKACiijrQAUUUUAFFFFAC0lLRQAlLRRQAlFLSUAH1opaSgAopaKAEoopaAEopaTrQAUUUUAL2oopKBi0UUlABRRRQAtFFFAie0up7K4S5tm2SRnINfQnh7WYtZ0+O6XCsCVkTOSGH+PavnStvQdan0W+S4jJMRIEqZ+8v+I7UAfSgIIz60+szT762vYEurZ98Ugyp9v8APWtIUAOHvTsUgFOoAbS0uKDQAymsKf60hHHcUAQnrmouCeBVgjk5qIgdO9AEDAZz0qJsk4P5etWW4Bz3qEqc5NAFfg84qFv97B9RVlhjnP0qKRQORycdDQBW2g9ehqJh82M9OKs+54NRsvVhzQBUKnO09qhZCc5PsDVzbnIGOagcAYI7UAUmjxyeRUJRjwrdT+VXedxb07VCyjccfX60AVJOH5Az6VDKAvzA8Z7eoq92z2HrVY/dLngUAVG3FwVx15NNwoOT0FWthYYPJboKgKEYU469KAI8E8DoakXjkdvWjjoCAD0FG1x8nQnigC9ExxyODWjA4bpwPcVkwkZH0/lV6JwBzmgDoYWHAHX86048ZyOTXPW7jjP6VuRPnac/jQBb2kc1CUwTxnNWRkDnvTWXjI4zQBTC7c9q0LaYghWIqs0ZqJMgnJx2BFAHRhty5A4pjAelV7aVWHWrxBXnHWgCmy45I4qoycfjWiw4J9aryKvfigDLkXIK9aplAc479a1HU4xjOaoyrjk9B6e/rQBmMAQR0x6VUZd3TkDqK03UHPQECqTBeh4z6UAUGww6Y6jHrVZlJPoT61oEKAR+VVJF4DDnnv0oAovHgYBJOOvWq5VgAg4wecVdkjG0Acc/zquwUHsynofT/GgCs4zkDt1HamKoI2kkk9u1SkAMW3E+lMZGAye/X+lADVJ3bz1xgg0+MtnaRgr3poc4Abr70/gdDjPagCdXwCQcEnrUwdSHYdMc4qrHydsf4jHFT7ACAwyP4sUATZVhvxwOvc4oR8KNwHX5T9aco3EYXGBz6H60wkY4IPOR9KAHqCo2dFPr/SmFQcZGD6e1PCAkAdxz/SheTkghh0+lACPn734VGpI+bHQY596nyo5HVuoHrUI3EncMY6UARs/7vAyB1z1pGDgBzwenHPHapmUfLg4I6jsajZSAQeMHn1oAh2Y49Dn/AD+NRvtJ59OMdKnY5YYBG3qfWmHCkN78g/4UAQ4JXcRnHTmocH5j1weeaneIk56Y4x6VEy5ByMY/WgD/0fgailooAbS0UdaACkpaKAEpKdSYoASilooASilooASiiigAoo7UlABS0lLQAUlLRQAUUUUAFFFJQAtFFFABRRRQAe9FH1ooAKKKKACilpKACiiigBKWiigAoo+lFACUtJS8UAFFFFABRRRQAUUUUAFFFFABRRRQAUlLRQAlLRRQAlFLRQAlFLRQAlLRRQAUlLRQAYpKWigBKKKKACiiigBKKWigBKWiigBKKKKACiiloASilooASiiigAo9qKKACilpKACijvRQAUUUUAFFFFABRRRQAUUUtACUUtJQAUUUUAFFFFABRRR9aACjrRRQAUUUUAFFFFABRRRQAUUUtACUtJRQAUUUUAFFFFABRRRQAUdaKKACiiigAoopaBiUUYooAKKWkoEFFFLQAZzSUtFAHbeD/Ep0if7FdHNrMw5P/LNj3+h7/nXu8T7hnPuPQ5r5Rr1bwP4nZjHol83I+WBz7fwH/wBl/L0oGew/Wl7VDG4YDFTigQmKKf0pNtADOD0ppHFS4puKAIyOahYcADntVgjJ4qMigCDBIwaiIzwelWSPQVEwA4FAFcjb8w6ioSMnJ5z/ACqyyjr0FRtkde/pQBWbBbJHP+FRMu5iR14zirDDGSeFbmomOM9iORQBXYYJ38nuRURTnGAM1Z4Vs9dw6VA65+X0oAqnPbtUZXaOOnrVplyAQAMdv51HgZIoApsCBnkVEyAk/wB7r9atkdgfzqMrnBoApYIwMg7u1MIyxXncOpHarjAfeK8ZqLy+CAfm5OaAKoyBxkAd6QbcEtgnpz2qXG0Z3/SgbsfNz9KAFLgA7j+VTws23OQAvAxVXcTjHX1FTKXBxjBP88UAasJK8jGeprat5OhPB9ulc8nYDt61pwPjjHFAHSRksMk1YKgjbWdbvkYPetJTuxntQBCVAHHaoHXByOTV0gk57VE6de+PSgCGNzGwUcn0rZicuBmsMqQcjAq1bzbGwRz3oA1ioqJ0BINTDDgEU3rxQBQZWwS34VQkQluf/r81sSLkYFU5EIOTQBjyxgde1VHTduA5Y+lakgOTxxVSRcYI496AMt12jK454qq0ZLfN09O2a0SpB2n+LmqrAgblyT6CgDPcEncvIAxUDZ5yeB1HvWhIBnJ5J7CqrRfMQOfWgCi7EjI7nH41CAu4t0yD+dW5Ag4UdOmDVWQ5AJGB0oAiHvzn+lCcZ4BwalcAL5jNkrxio8YIIOe+PagBQXIAGcGrKsR8rdhxmqgBHIbp+ZzU4znJwV6kE9KALIJRcHtUu7I9/fpUG5jtCn2/Cn5BXBzknAA9u9AE33gOCPpUhAzmolI2gA4PXB7Uu5ig3DnPGKAGNhTgce/c09SEb5wOfzpVwADjd6etKHVzlhyOnv8A/qoAhyWPyjk9x2oGd23nj8qmIO0EnnP0H6VH8u0sBz3xQBCcH27Y+tRnb0zx1+hqwBGXI2kEdyfam+Xt3EDBHrQBVMZcgk5K/hUW0kcYyTx36VcZQeSN1QGMJ9xSFPAoA//S+B6KWigBtFLiigBKKWkoAKKWkoAKSlooASilooASkpaKAEopaKAEopcUUAJRRRQAUUtJQAUUUtACUUtJigAopaTFABS0lLQAlFOpKAEpaKU0AJRRRQAUUUtACUUtJQAUmKWigApKWigBDRRS0AFJS0UAJRS4pKAA0UUUAFFLRQAlFFFABRRRQAdaKWkoAKKKKACiiigAooooAKSlooASjFLRQAlFFL1oASkpaKACiiigAoxRRQAUUUUAFFFFACUUtFABRRRQAlFLSUALRRRQAlFLRQAUUUUAFJS0UAFFFFABRRRQAlFLR0oASloooASloooASilooASilooASil9qKAEopaKACikpaAEopaKAEpaKPpQAUUUUAFFFFABSUtFABRSUtACUUUUAFFFFABRS0UAJRRS0AJSqzIwZSQQcgjsaT6UUAe7eDfE41iD7LeOPtsQ5z1kX+8Pf1/OvQlYMAQa+TrW6ns7iO5tnMcsR3Kw7Gvobwx4jg1208wARzx4Eseeh9R/smgDsOD1pQKYpB6VIKBDTTMDuKlIppFAyIjj2puM/WpSOOKbt7k0AQED/wDVUbDb1H0qcg544phDckHrQBVOcYpjKQMk96mb3qM8nkdO1AFdhgEdKh2kjHp0qyy9+tQspzn8MUAVvLCkemOTTSBnINTv7cnpiom+XknnoM0AVzncST+VRkEcnv2qwQAM/hULAZG4c5oArshzkjNRbSFYH1+WrLBuefbFMKlcA8UAVjjOTwCM1GcduT/OrLcnlev8qhKoVyehoArFCGDFc46fT3pCuWBH3TnGO1SkAjJyCe59PembCcjcc/y+lAEY67jx6mn/ADbtx4IpTDggsxyuc+hoX528zkDsaAJ0bJDKSfrWjE23Ckde1ZY2qoyd2TnrWgjYKjrxmgDbt5RkH8q2IWzgda5yJ+M4wK2oJMKPWgDVAwfSmMuTx3605TkD0qUCgDOZOcio8YbirrrnoarMnPv7UAXYJuQtXWUDheRWKh2OMjmtaFw6470AKwz2qq65q6Rz9KhZQRjpQBlujduKoyKMHn/61a7Kc9ckVQdMZx17UAZUi5GCenSqjKeFHDe3atN0CjLcH/GqTg+n496AKDg5LY6d6gcDhQMkVedQCe49BVR1bg9j+dAFJ41C7QuV9qrsr87vkDdR2+uK0WwAOcY/WqcgywL/AE+o60AUyu35gcn0H86Q527Sck8ZFTvt3DkKME//AFsU1lJHGQM0AVlHzfMOVHfpUw4BC/MO4qNvlwOvegMBggdDz7ZoAso3yYJxngH3p0ZBO7Hsc9arjg45yO3UVKjbmz6dKALAxgkjNPBI+ZwFAOQCajiYbcpyQcAH0qYnJIwMr0/GgBEXkyMMDqMmnZAbJ5yKaCMFH5Q9T3zT/L3EMeSOPwoAaHBG4DgHn600goTwDngelSqD0UZGP8mmqoTryCePUUAMCgLgjGe5phDgGMcg9TT3XjJ5NGcnP90daAIQAwyeCpxkc1H93C/ex2HU1K3+yeB1/GmZI4J3eh6GgD//0/giilooASijFFABSUvSigBKKWigBtFLSUAFFFFABRRRQAUUUUAJS0UUAJRS0UAJRilooASl6UUUAFFFFABRjuaKKACiiigAooooAKKKKACkpaKACiiigAooooAKKKKACiiigAooooAKSlooASilooAbS0tFACe9FLiigBKTFOxRigBKSnUlABRRRQAYooooAKKKKAEpaKKACkpaKAEooooAOtFFFAC0lFFACUtJS0AFFFFABSUtJQAUUUUAFFFFABRRS0AJRRRQAUUUUAFFFFABRRRQAUUUUAFFFLQAlFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFGaKACjNFFACUUtFABRRRQAlLSUtACUtJ7UtACUtFFACVpaTql3o96l7Zth14IPRl7qfY1nUUAfTmh6za6zZJeWp4PDKfvI3cH+hroVOQCK+X/D+vXOgXouYvnibAljPRl/xHY19GaZqdrqVol5aPvikGR6g9wfQjvQBrUlOHqOaKAGjGOlMIFS4puKAISB1qNgemcDvU5HFMK8EdzQBXwCexqI9DirGOpxmmMATkjGOuKAKuAc/p71AQxGf4e5q3swTjp/npUJB44oAq4wevTpUbrjgDg1OcngcZP4iozwMHgD9aAK2GOAThgcUxsDK+nUn0qc4PTOO1RsMN7jr/APWoArFR1Gf/AK9RsSRz36n0q1jqR+lQsANwHNAFY8nOeV6Uwqdx4J45FWGUkggdajZeenI9KAK/A5HK+n+NNKDduqbGOnIzxUXykFTwSeD6UANzkbwT0/OkyCdqt8p56dz2p58xR2AB7DtSgZBJX7x/n60ANx/EB0PIx/Kpohgg96j3BhjHA+XP9BUyEAmQYPGf8KANCOQnG7v/ACrVhcK3H3R0rBjYrjIxmteJugJ3E9KAN+Fsr6Zq56Vl25xxxWpGcjA/WgBGXmq5UE1eIqF19f1oAoMOanikK9OtEi8H09u1RjgYFAGwRuG5aixmoreTaQO2KtMF/OgCrInGPWqMq7RjGcda0yMjj8fpVaRBjJ4oAx2U5Py5PYD0rOlXJIGAo54rZlUkYzxVGRe3Y0AZso+bphhiqzLkHbjPoa0GjIGOuP1qm3OSRgjuKAKW3BbzBjHQdajIJUDoxqxICVAx7kf41C654PSgCjKjkhhjHYGoyMsDn25OOKuunBUgEZ6/4VVZWPptXgH1oAqbSNydT7UgBKkHv61N5YJJ7jn3phDEnaRljgUANjXgjOMU7CbQyHk9aaMJ9/P06/lTwGA5AO7mgCaNhwO5OAR2qTcwznqDz+FRfNu+UAL3B71IwVcOTz2ANMCZFLnJA4z+OalIVV+fse1V0Zsndj2FTg7tuOc9/SkAKF2jbkg/z/pRgbjnp/SkH3tpypB4p4YnJA49qAGEfKvO73pCu5yW7c4pxUDnk5OfoRSFjg/NnB5oAj278seTioxtY4A+70qd2xgZwSO9R7FDDIIHYg9aAP/U+CqKWkoASilooAbRS4ooATmilooASkpaKAEpKdikoASilooAKKKKACkpaKAEopaKAEopaKAEpaKKAEpaKKAE+tLRRQAlFOpKACiiigApKWigApKWigAoopaAEooooAKSlooAKKKKACkpaKAEpaKKACiiigApKWigBKKWigAooooASil96KAEopaSgBKKWigBKWiigBKKWigBKKOtFABRS0lABRRRQAlLRRQAlFLSUAFFLSUAFFFFABSUtFABRRRQAUlLRQAlFLRQAlLRRQAlFLRQAUlLRQAlFLSUAFFFFABRS0lABS0lFABRRS0AFJRS0AJRS0lABRRRQAUUtFACUUtJQAUUUUAFFFFABRS0lABRRS0AJRRS0AJRRRQAUUUtACUUUUAFFFFABRRRQAUUUUAFFFFABRRS0AJXUeGPEs3h+6JIMltKR5qd+P4l9x+tcvQaAPrGwvYb22iurVw8UqhlI960OM+tfOHhLxVPoVykM7F7F2+deuwn+Jf6jvX0NaXcNzEs0DrLG4yrKcgg96ALWP0puKf1xmjrQBHimkVNjtSYJHSgCqR7VGy/5/rVpgMe9Qleffv9KAKzDjgdOKrupYdevXFXSp9agZSDnFAFQqQcE/Men4VG33sHHuKtsB1NQFEbpwc0AVyoDDuB6VE2CfpVpkz0wPrUBUHoccZz6mgCsxPpk+3eoiq5JGc46nvVkAc1E3BAI5Pb0oAqsDhj+NMIPG7jPB+lTsNpweT1phGXBPQ/5xQBEQy9BnAqLAIAxgkc1Ock8H8fSmEdSeSO570AVCpZjjK470/YEwQeDnOelPZM5HGByabkkAHDKev9KAFYNuzu2gjH0qVWAX/ZPII61FuLIwOMjrnpQu5R0OCKALkTYYHr7VchdT0H5HpWbGygd+ew/nV2DacBc5oA3rdhs5OTmteIk9fmFYMUhwD36YrWgzxjpjpQBp5yKaRSp0xTzyKAKrD261WZSuRmr7DjFQEfjigCCJtvB7da1I2EiAHqtZTKAdw6d6sxSYII4oAuEc1DItWWGQGFRMARgUAZrg8sO/FUJIx9e1bMiD8qozpnpxQBkyJjg4x6jpVFwAc54HBrUlC/NgdO3Wqbqee+aAKDpweeagKgHIPtVuRSvbgf54qBk4yDg9MUAUfKIJcfw9BULDGQPlx27VdYEqRg5PrVdk3Y3H2H+NAFRuH3kfe6EVCzAHb1BGKuMGPc4UYx6571Gib854PTNAFPHK9sdTQ3AJA/yfWn7d42kcDrmmrk5UYB7fSgByxrGcsflxwOSaeuMbWGSOlRk7W+bnOOtSA7XOOexzQBOhUDGCP51MoOPlAJqqpwCW69h3NPDDJXPzf3RQBYUMeCetHRhjA+tMHHI5B4+lTZX5WzigABJPU5xkHsMUcn7/SkUuTk8LzjNAZjlhyR2HcUAIdx/dDnv9RUeF5OOnRT1qYcL8pyfrzTAMNuOG7BqAP/1fguilooAbRTsUlACUUUUABpKWigBKKKKADrSUtHSgBMUUUUAGKKKWgBKKKKAEpaKKACkpaKAEopaKAEpaKKACkpaKACiiigAoxRRQAUUUUAJRS0UAFJS0UAJRS0UAJRS0UAJRS0lABS0UUAJRS0UAJRRS0AJRS0UAJRS0UAJS0UUAJRS0lABRS0lACUUtJQAUUUUAFFLRQAlFFFABSUtFABSUtFACUtFFACUfWlpKACkp1FACUUUUAJRS0YoASloxRQAlFFFAB0oopaAEpaKKAEooooAKKKKACiiigBKWjpRQAYpKWigBKKWigBKXrRRQAUUdaKACkpaKAEpaKKACiiigApKWigBKKWigBKWiigAooooAKSlooASloooASilpKACiiigAopaKACiiigBKKWkoAXFJS0UAJRS/SigBKKWkoAKKWigAFdv4T8WS6FL9lucvZSHJHeMn+Jfb1FcSKXntQB9cW86TRrJGwdXAKkcgg8gg1aAHWvnbwh4tk0S4FreuzWL5GOpjPqPb1H4179a3cVzCs0DiRGGVYHgj2pDLZ9e9H1p1BApiIyKYVqUik2igCoy4JYnp/Oomyc+1XSc9MGoiv5igCmQAvPINV2ABxjg9aush5J71Ay5PTtQBT2/MQTxUZQe4qyy4b5+lRkc4xxQBTbAyMbselQ4BAxyT2q5t2HAGQ1QsozkUAViCXy3OKjK+nHvU/APqKhKHd0oAhIBG3pnvUe3qCeTUzddpAOaZtw5zwMUAVsAqSep4o2k42gc1NhmyAR+VRFTkAdeaAIyDyhGR6DrQAVIZQQBx7UoDcCNh7mlyyvwdwP8JoAkU7FAbDDB9vzq5C556AAcf8A16oZUOU2/ewfxqwoKHD5FAGrE5YB84I4NbUDlcc5PSufhlyNxG31961baQDA/n70AdGnUehqwAPzqlAwxgdBWguMc0ARFcEmoGXqKuNyKiZaAKDA/wCNRjKmrbLxVZl4yp/E0AX4H4waewA/Gs6FipGe9ag/eJ9KAK7A5yKpSDnitLr17VXdFwTigDGkQ44GKougySBgg1sSLgkD86oShV5IAx1oAy2Gdx9OhquV565781oOGLEOMelVGXorYoApMeMn1+tV2HT1Aq6VYsG65HbpUDb48Bx1PGKAKbFuB0zVdw2ODsxzn3q7JhZOe9RMVAIYZB6UAU9u9SPrnnrURDeVtVcr196tMoJIAGQOaiJGQQMntzx+NAEahsfKO3XFJhQc5/D3p5yykDoeaaOeXXCgdutAEm7awUc56+1SAngLwR196gjC+XnnsRnvj1p+Np69eeKALR3AKwxjP5mngncSxyD3qKMlsA4yPyxUqs5zlQDnGBQBKqkgbjnjrTRuALL34weelJ8+WwBxjBx2p6gFckdetADMbcyEcjgj1pD8nGMjGckilXCrgcjufSl2qrEYzk0Af//W+DKKWjmgBKKWigBuKTFOooAbRS4pKACiiigBKKWkoASloxRQAlFLS0AJRS0YoAbRS0UAJRS0UAJRilooASilooASilooASilooAKSlooASjmlooASilooASilooASilpKACiiloASilooASiiloASjrS0UAJRS0UAJRRS0AJRS0daAEopaSgA9qKKKACiiigApKWigBKSnUUAJRRS0ANopaMUAJRS9KKAEo60tJQAUUUUAFFFLQAlFLRQAlFHSigAooooAKTmlooASilpKAEpaMUUAFJS0UAJ7UUtJQAUUUUAFFFFABR70UUAFFFFABR0oooAOlFFFABRR1ooAKKKKACiiloASilpKACiiigA96KWigBKKKKACiiigAopaSgAooooAKKKKAEpaKKACiiigA96KKKACiiigBKWiigAooooASilo+lACUUtFABTqbS0AFdx4T8Xz6E4tLg+ZZO2SO8ZPUr7eoriKOlAz62s72G7hSeCRZI2GVZeQa0CM4r5o8K+K5/D0xjkBltJCNyd1P95f6jvX0Npuo22o20d3aOJIpBuBH+e1AGjim0/gjigjvQIixjgUwr6VNj86QgUAVGGeKgdeOuR71eK46ComTIoAolRzu7DFQOgz/OrpXH4VEUz93gd6AKDJg5J5qJgWxxzVt1MnXqOlR9AMfjQBRZcnBz7motoY7RxVuROvrUJQbsNxQBXKbWyOo6HrmoSASeOcVYZSvA6E0wqwGFFAFbBBx6j8qikJwOOnOPWrLKxIGRkDmoWyATwCKAISBvDcgY/nTJODhMKp74z+FSsCo+Y578U0KQdpI29KAGMqjOzc3brT93yLvB+lN2lDwcAHjHSgDGW7D0oAtLhOQCQa04WYbeaxQS2CpzitGOUg5PI96AOntpFCj0zzW9G5bnPFchbTkEMcYxXQ2sgZQSODQBqcEc1GVHapV5GKUqPSgCmwA6jtVZgACKvsMCq5XmgCiUAztFWoJNvHbvTWFRAlDxQBqMAfmHSoCNwp8MvmAA96cVKGgDPkUEn1rOljBOD26VsSA8kAD0qjIjA89RQBjuhC4zmqrgEA4JJrUdMnHT1qhKuOc89qAKRQsD27E+lVmXgH7xPNXZORyBgDHtVZgd248cde1AFOQDZyvTkAVBIDsPUZq4RtOFP3utRMmPlHQ9KAKBHAzxgdv600K24c9e1WmXGdxwPbpUDgZJHynGMf1oAh6bhUYXaNhOccipWCupAx83PXoBTNoGAQcL0/GgAKsEAICk5zipQYwFY9uKiGQx3HBpPl6EY9M9qAJkUvwzEH09qlUjJJ6E44/SqvIOe46/41OFIHXvQBOpjDDcTk96RdqksCSfTNIuQgfOQTSludpxn35oAlP3hk4x1HpSNlVJfuaUkgfKCc9cdaGYlSoXI6jH8uaAP//X+DqKdSUAJRS0lACYpMU6igBpopaSgBKSnUUANopaKAEooxRigAopcUlAAKKKKACiiigANJS0UAJRS0UAJRS0UAGKKKKACkpaKACkpaKAEopaSgAopaKAEopaKAEopaKAEopaKAEopaKAEooooAKWikoAWkpaKAEopaKAEopaSgApKdRQA2ilooASiiigAooooAKKKKACiiigAooooASilooASilooASiiigAooooAKKWkoAKSlooASloooASilpKACiiigAooooAKKKKACkxS0UAJiilooASilooAbS0tFACUUtFACdaKWigBKKWkoAOtFFFACUUUUAFLSUtABRRRQAUlFLQAUUUUAFJS0UAFFJS0AFFFFACUUtFACUUUUAFFFLQAfWij60UAJRRRQAUUdKOlABRRS0AJRRRQAUUUUAFFFH1oAKWkpaBoSloooAWul8O+J7/AMPzjymL2zNmSE9D2yPQ1zVJQB9YaRq9nq9ot5ZSCRD1HdT3BHY1tAivk/RNdv8AQroXFm2VJ+eMn5XHuPX0NfRXh/xFY69bCa0JDjG+M/eQ+h9vegDpiPWkxSg07HpQIiIzURU1axmmEUAUmQ1EVJY56HtV0qfyqFo8HI60AZ7j0HHaoWTJOec1oFcZ9KgcEnjjPagCiUJ4xu+tV2BwSR+dXSpzgHj1qFgDnHegCi6nGeq0wjHtVxwc4A+WoWUnG0cUAUsMM89P1qPaBk8HNWGTIODkVGVIHB56igCswGNuOveogNg+XqOtWmRcdc571ER8xPc8UAQtkjJOFHI/rTCDuGOBzkf0qU8AYB460MA2Q2QRQAwMynIOBx06Af8A1+lTxsB2JqAkKBjknn/61SLnJTPJ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AUZoooAPaiiigBKWiigBPaloooASilooASiloxQAlFLSUAFFLSUAFFFFACUU6koASloooASjilooASilpKACilooASiiigAooooAKKKKACkpaKAExS0UUAFJzS0UAFNp2KSgBKWlooASiiigBMUmMU6igBlLRikoAKKKWgBKKKKACiikoAWiiigAooooAKKWigBKKWkoAKKKKACiiigAooooAKKWkoAKKKKACiiigAooooAKOlFFABRRRQAUmaWk60AFFFFABRRRQAUUUUAHSur8N+L9T8OSbIT51qxy0Lnj6qf4TXK0mKAPrTw94j07xBafaLKTkffjPDofcenuOK6MN+NfGFreXNjcJdWkrQyocq6nBFe8+FPiRZ3+yz1oi2ujwJekTn8fun68fSgD1cimlBSrKHH+H86f2oArMmagaPjmtDFRMlAGWyADHrVZk7GtZ48iq7RnGT0H50AZTRnA31WdBk8dK15Iy3HB7mqkoxnjg9qAMl1wc+vAzUDoVUkcjr71qMueew6Zqq6uWJboaAKBBAyBzUOFA9cd6vmNck9/Sq7oQu44x2oArFQwUjjHrTGVQcrnOMH0/CrIBHJHY800jo2Puj+dACRkDMYPbIq3HJgkk5AqmG2naM8+tTg8qo5xQB0FvPswSeT1rpLaTcuO+K4mGQhhj8a37K4B2j86AOmxkComFLC4IweakYdiKAKrCoyARVplHWoiOOlAFVlzyeKiIweBmrRGTUTJzkcZoAFOD04psi4yR9KIyVba3IqU4xigDNdOvrjpWc6smcdDyfWtxwOp6ms+WM5YnoPTvQBjvH3xx6DrVRgQAT0PatOVWBGM4PeqbxqAR156+lAFBxwGA6Y6dqhcMrZA6GrjjBK9OAfYmoHUAAdaAKTL0255GTVd3OCv8XUZ9KuMMBec1Cyx4wRuB7UAQOAWUEn14+neoCA2QF4Hf0q26N0Qj2zUD7QMAH6CgCqhZQV6Z6Go929WOOc4J9ce1Wij4weDTNwOMjkZyaAIBvBGBnjkUmTtAP4VMVBIwRn1pgUkg5wPSgD/1Ph2kNPxSEUANopaKAI8UlSUmKAGUlPxSYoAZRTsUlACYpMU/FIeaAGYop1JQA00U7FFADaSnYooATFJTqSgBMUUtFACUUuKKAEooxS4oASiil5oASkp1JQAlLRR9aAEopaKAExQaWigBtFL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UmKfSUANxQadSYoAZijFOpQKAGYpKkxSYoAbikxTqSgBKKdijFADMU3FSYoxQBFijFPIoxQAzFIRT8UYoAjxRin4ooAZRTsUYoAbijFP6UlADcUuKWjFADcUY5p1LQAyinYooASiloxQA2kxUlJigBlFOxRigBtFOxRQA2kxinGigBuKKdikxQAlGKWkoAKSlooAbRRRQAUdKKKAEopaKAG4pMU+koAbikp9JQA2jFOoxQAzFFOoxQA2ilxRQAlFLijFADaKWigBKWiigBKMUtFACUUtFADaKdik7UAJRS0YoASilxRQAlFLRQAlFFFABSUtFACUU6koATFFLRQAmKSnUUAJikp1FADcUU6koASilooATFFLRQA3FFLijigBKKKKACijrRQAlFLRQAUlLRQA2inUlACYop1JigBKKKKACg4paSgBmKKf1phoASloooAKKKWgBKKKKACiiigBKKWjFABSUtJQAUUUUAFFFFABRRRQAUUUUAJRS0UANpaKKACiiigAooooAKKKO1ACUtFJQAUUUUALRRSUDQtJS0UAJmjFFFABSUtJQMKKKKBWClVipBBwRzSZooEeseGPidfWLR2eu5ubYYXzQP3qgcc/3gPzr32w1O11C3S7s5Vngfo6nI+nsfY818VVsaNrup6DcfadNmMZP3kPKP7Mvf8An70DPs8ENyKUjivNPC3xC0zXNlrcf6JebeVc/K+OuxvX2PP1r0lZAwz/AJ+tADWTIqs8e1cDsP51fIHak2KcgigRjSQ5HPQiqbRAjB9a3mjJ4PeqckfHyjBoAw5I2Pztkc9KhYFMs3f0/pWu8POfWqrRAAFs+1AECbSQe1attIwI5wKyvLYMCcVZjJBI64oA6eKQkfN09Kkx3rLgk6c8Vqqdy9c0AIeeajK5qUccdqAKAK7dKaw44qcqKYVz2oAgAJBOOlQyISDU5UoSM9TSuNw/CgDGkQEnPSqMo2+tbTqw6DOazpVwxGD+NAGUQCfm6mqbpxgckYFakiDsDwapyRqQM9aAM9ggOw5weuagZf4RggVbbcvXnPWo3H94/hQBWZQoOzjB5qAgNz35qyyMBkjI9qgkwI8LwRzmgD//0fjQim4qbHFRkUARmm4qQikoAjwaSpDSYoAZimmn4pOtADMUYp9N4oASkxT6SgBmKXFOxRQA3FGKWigBuKQin4oxQAwC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FABRRRQAlFBooASlopaAENJS0lAB0ooooAM0UlFAC0UUUAFJRRQAlJTqTHpQA2iiigAopaSgAo60UUAFJS0hoATvS0lFABR0paSgAziikpaACiiigA96KKKACiiigBKKWkoAWikpaAEoNFLQAlJS80lABS0lFABRRRQAUUlLQAUUUUAFNp1JQAUtNooAWkpaSgBKKKKAF5opKKAClpKKAFo6UUUAdT4Z8X6t4Yn3Wb+ZA334HJKH3Ho3uK+mvC3jPSfFFsDaN5VwgzJA5+dfcf3l9x+OK+O/pU9vcz2k6XNtI0UsZyrqcEH6igD7vVlbkdqkAU4rwzwd8U4LkJYeImEE/AScDCP2+f8Aun36fSvbYJ1kCtkENyCO4oAcyc00Ag1Y600gUAAwwwai5Vtv61MOlNdQ68dRQAo5oxioA5HB696nHIoAqHKNuP3WNIwyDVpk3qV79RVUMW68N3FAFKZRnjpisyaPGTnqK2p0zgVQkUEH8hQBjSq351RlUnGep/i9a1JV+b2I5qkyPj2PX/61AH//1fkoimVMRUZFAEZFMNS0wigCI03FSkU3FAEZphqSmkUAMNNxUhpuKAG0hp2KCKAI8UuKXFFACUUUUAJTadRQA2l4opKAFxSUuKKAG0lOooAaabT8UlADaKdSYoAbRTsUYoAZ9KTFSdKQigBtFLRigBtFLSYoAKWkooAKSnUUANopaSgApKd1ooAbRS0UAJRilpaAG4pMU6igBlLS02gAopaSgBKKdSUAJSfWlooASk60vvRigBO9FGKKAEoxS0UAIabTqTFADTS4pcCjFADaSlIpaAG0UtJQAUh9qWigBtJTqKAEooo5oAT2o4paSgApKKXpQA2kp2KKAEpKdSUAJSY5pTRQAlHSlpMUAFJS0UAJRR1ooASilooASilooASkpaKAEpaKKACko60tACUUUtADTRS4oxQA2ilooASkpaSgAopaKAEpKcaSgBKKKKACiiigApKWkoAKKKKACkoooAKSlooAKKKSgAopetFACUtFJQAhptOooASkpaSgAo+lFFABSGlpKADiiiigApKKWgBKBRRQAUUtFABSUtJ70AFFHvRQAlFLSUAFFFFAC0UUUAJRS0lABSUtJQAUUdaKACiiigAooooAKSlooASiiigBKXNJRQAlFLSUAFFLSUAFFLRQAlGaKKACiiloAOle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RkVPioyKYiLFMNSkU00AR4pKdTTQA2ilooATFNxUlIetAEdFOIpKAEpKdSUANxS0tJQAlNp9JQA3HNJipO1NoAYRSU+koAbilo9qWgBppKfikNADaKWjFADc0UtFACUUUUAJRRRigBMUlOxSUAJijFOpKAEpDTsUmKAE6UUfWloASilooASkNLSUAJRQeKWgBKTpS0lABSUtFADaWlpKACijvRQAmKTFO+tBoAZS0Uc0AIKMUtJ7UAJikp1JigBKKWkoASjrS0UANxSYp1JQAlFLikoASiiigBPpRRRQAlJT6TFADaSnd6OKAEooooASjFFFACUmKWigBKSlpKACkoooAWkpaSgAooooADRRSUAFFLSUAFFLiigBMUlLRQAlJS0lMAooopAFJS0UANo4paSgAooooASkp1JQAUlFFABRS0lABSGlpKAEoopaAEopaKAEooooAKKKKAEoopaAEpKdikNACUUtHSgBKQilooAZRTjSUAJRRijtQAlKKKKACiiigAooooAKKKKACiiigApKWkoAKSlooASloooASilptAC0lFFABRRRQAGiiigANJS0UAJRS0UAJRRS0AJRRRQAmKKWkoAKKKKACiiigAooooASilpKACkpaKAEooo+tABSikpaAHo7RsHRirKcgjggjuK9+8C/FLf5Oj+JXw5IWO7JwD6CT0/3vz9a+f6KAPvnKyDae/IqtG7RSbG9eDXzT4D+JNzoTrpetO8+nNhUc5Z4Pp3K+o7dvSvpOKa31K0jurKVZopV3RuhyCPUfyNAFqUBgsvcdRVZl9DzU8EhYeW3UfezUagqzIw4HYUAf//R72OfOAKupJXJRXYbHzce1bENxwCT16UAbyvmpQ1Zkcucc1aV/egDP1/w/pPibTn0vWIBNDJ0I4ZG7MrdiK+RPGvgTVvBl0DKGudPmJEN0Bx/uvj7rfXrX2gGFMura01C0lsL+Jbi2nXbJG/KsPQ0Dufn4cYGKjNetfED4X3PhUS61pDtd6WWLOhH7y3BPHT7ye/UV5MGVl3Kcg96AIzTTTzTTQIZikp9JigCOilNFACUlLiigBtIadSYoAbijFOoNADKKdSYoAbiinYpKAG0lOpKAExTcU+mmgBKMUtJQAUlLSUAJij6UtFADaMUtFACUlLRQA2loooASkp1JQAUlKaMUANopxpKAEpcUUdaAG0U7rSUAJSUuKQ0AFJS0UANoxS0UANop1HFADaSnUGgBtLRRQAU2looASloooAQ0lLRQA0UYpaKAG0U6koASkpaKAEpKWigBKDS0lACUlOptACEUUtBoASiiigBKSlpaAGmkpaKAENJTqbQAtNp1JQAlJTqSgBtFLSUAFFAooASiiigApKWigAoxRRQACiikoAKKKKAE70UUUAJRS0lACUtFFACUUtJQAlFBooADSUtFACUUUUAJRRRQAUlLSGgA6UUUUAHWiiigBKKKKAFpKKOKACig0UAFFJRQAUn1paSgAopKWgApCKWigBtFKabQAtJRRQAUUUUAFFFJQAtFFFABRRRQAlFLSGgAooooAKPeik+tAC0UlLQA2lopKACiiigAooooAKKKKACkpaKAEooxRQAUtJS0AFJRRQAlLRRQAlFFFABRRRQAUUUGgBKKKKAEooooAKWkooAWlpKKRQo4rv/AAT47vvCd0InzcadIf3sGeV9Xj5wG9ex79jXAA0tAj7j0/UrLWrCPVdKlE0Mg6j+RHUMO4NXnbIWUcdiBXxz4U8W6n4UvfPtGL28h/fQE/JIP6MOx/pX1do+uabr2njVNLcy274VlPDIw6qw7Efr1pgf/9JsU/Hy9Dz6fnW1b3JCpuK4PQ9yK4aObCghwx3ck9/atmG4A6EYbpigDuILoHg8fWtFJc9x9K46G54AznGa2ILjAXPegDo1epwwzzzWVHPuAx3q0su7nNAF9gsgYOodHGGVgCCPQg9a+cviN8J5Imk1/wAHW+5MFrizTsepeIfzUfhX0Osn41OrbTkdaAPzvVwwyKQ19UfED4T2utLPrXhlFt9SOXktxxHcHuR2Rz+R78818syxywTSW9xG0UsTFHjcYZWHBBB6EUAMooooAaab3p5pKAG0UpFJQAGm06jFACYpKWigBtFLiigBtIadSUANxSU6koAbRSmkoASkp30ooAbijFLiigBvU0UuKMUANxS4pcUUAMpDT6SgBtFLRigBtFFLigBKKXFJQAlFLRQAlFFFACUlOoxQA2kp9JQA2g8U6koAbRilpDQAneilpKAEopaKACm06jpQA2ilpKAEpaKWgBtJS0UAJRilooAbikp5ptACUhpaKAEooooASil96SgBKKWigBppKd70fWgBnNFOpKAEoNLSUABoo70UANNJTqKAG0UtJQAUlFFACdqSlooASkpaSgAooooABRRRQAUUUfSgBKSlooAKKSigBOKKKWgBKSlooASiiigApKKKACkxRS0AFNpaSgBaSiigBKKWigBKKKDQAUfSikoAWkpaSgBDRRiigAooooASloooASiiigApOtLSUAFFFFABRRRQAU3FLS0AN6UlONNoAKKKKACiiigAooooAKKKKACkpaSgAooooAKKKKACikooASilo96AEooooAKKKKAEpaKKACkpaSgApaKSgAoopaACkpfrSGgBDS0UUAJRS0lABRRRQAUUUUAJRRRmgBKKWkoAKWiigAoopKkoUUtJRQA6us8H+LLzwnqi3kJL28mFuIuzp/LcOoP9K5KkpiP/0+CjnkJXfgkdCPX1Na0U4XIzgDue9clFOoyF+8Tlv8+1asMxVgz9B0Pc59KAOvhnIA2nGOOP/r1qxXO35mOQOOv+FcdBPkBW57kg8D0z71rwXOFGzHPJ+tAHaR3Iznd0xWrDPkdeK4uGckDbjPqe+K2YboHpQB1ccmRnNWlc44rCinbGegrQSYEdeaANEPXnfjv4c6f4zha7t2S01ZF+Scj5ZAOiS45I7Buo+ld0rVMHoA+B9W0fU9Cv5NM1e3a2uYuWQ85B6MpHDKexFZwr7k8V+EtH8Y6f9i1RNsqcw3CY8yJvY91PdTwfavkLxV4Q1jwfffY9UTdFIT5FwnMcoHdT2Pqp5FAHMEUlONJQA2kp1FADcUlOptABikpaKAG0UuPWkoASilooASkxTqT2oAYRSGnmkIoAb1paKKAG0U6kNACUUtBoAbSYp1IaAEpMc06m0AFJS0lABSUtFADaSnUUAN9qKKMUAFFApaAEpKdSUAJRS0lACdKQ06koATFJ1paKAExSU6koASjFLRQAlGKKKAExSUtFACYpKWkoAKSg5ooAKKWkoASjFLSUAJRS0YoAb0oxTvek5oAb1opaKAExSGlooAbRSmigBKSlpKAEopcUlACUUtJQAUcUUdKAG0UtJQAntRRRQAlJS0UAJ2pKdTTQAlFLRQAlFFFABS0lKaAEpKXFFACUUvWkoAKSlpKADFJS0lABSUUUAFJS0lABSUtFACUe9LR1oASiikoAWkooNABSUUUAJRS0UAJRS0hoAWkopKACiijtQAlLRRQAUlLRQAnFJTqbQAUUUUAFFFFACUtJS0AFIRS0lADaKXFJQAUUUUAFFFJQAtFFFABSUtFACUUUUAFFFFABRRRQAUUUUAJSUtFACYooooAKKKKACiiigBKWkpaAEpetJS0AFFFFACUUUlABRRRQAUUUUAFFFFABSYpaTNABRS0UAJRRRQAUUUUrDuFFFFFguLSUUlFguf/U8dhlGSQN2O44xV6KRVITAAI5z29xWJvwQqkgAEHPv296uREfKw5UjBzQB0ELKpJDYK9B2/ya07aYFdmOhz14rmYZQybTwR1JrSjmAUquQD938P6UAdPBPnLbuPrW1b3KsRg8dvwrkbebBLfKAfT29q04J8OCGxjk0AdlDc5ZcEjPWteK4AwCOfWuLt7nsRyoxn0z6Vr29z0+bdt65oA66OYGritmubhnzitaGXpQBpg1S1fSNM1/TZdJ1eET203UHhlI6Mp6hh2IqdWqUNQB8hePPhrqXg8nULVmvdKY/wCux88XtKBwPZhx64rzPOa/QwhJEaKVVkjkBVkYBlYHqCDwRXzV8RPhJLp7Sa54RhaazPzTWa5Z4feMclk9uq9uOiGeFUlIOaXtTAKbTqKBDKKWkOKBiUUdaSgBaSlpDQIKKSlzQA00cUuKSgBBSU6igBtFLR0oASkxRS0AJSEU6koAbikpxpCKAG0UuKMYoAbRS0EUAJRS9qSgBMUhp2KTFACUUtFACUUUGgBKKKKAE6UUtFACUlLSYoADSUpoxQA2ilxSUAFJilpKACiiigBtLiil7UAMPtSU40YoASilxSUAJSU6igBtFLRQAneiiigBMUlOpKAG4opaKAG0UuKKAEpKXHFFACUlLRQA2ilNAoASiikNACUUUYoASkp3NJQAlFLSYoASkp1J9KAEooooASilpKADFFFJQAfSilpKACkpaKAE7UlFFABRRSUAFFFFACUUUUAFFFFACUUUUwEope1JSAKTFLRQA2ilpKACiiimAUYopKQBSU6koASlpKKACiiigAooooASkp1JQAlFLQaAEooooAKSlooAbRS0lABR1oooASilpKACiiigAooooAKKKKAEopaSgBaSlpKACiiigBKWiigBKSnUlABSUtJQAUUUc0AFFFFACUooooAKKKSgBaKSloAKSlpKAEopcUlAC0lFLQAntRRRQAUlLSUAFLRSUAFFFFABRRRQAUUUUAFJS0lAH//V8GSTI3EYOe3cetTq4kYqGwx9On41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U4fmgD4D13w/q/hjUpNJ1qAwzpyMcq69mRuhB/8A11lV97+IvDei+LLA6drcPmKOY5F4kib+8jdj7Hg96+PvG3gPWPBN0q3g8+xnYi3u0Hyuf7rD+F/Y9e1IZw9FFFMQlLSc0UALRSUZoAdS02igB1FJRQAtLSdDRQAtFFJQAUtJRmgBaTFFFABTaWg0AIabSmloAbSfSnZpKAEopfeigBtFKaSgBPalpOlKaAExR7UtIaAE6UhpaTFABmkpcUlACUUtJQAhpD607ikNADaKXtRQA00U6kzxQA2k6UvtSHNABSUv1pKACiiigBKKKKACkopaAG0d6U0lABSUfSj60AFJRRQAUnJpaSgBKKWkoAKSiigAptO7UnegBDwKKOtIaAFpD0paQ0AJSUtFACUnSlNJQAlFFFABSUtJQAmKKWkoASiiigBKKKKAEooooASjmiigApKWk6UALSfSiigANFGaSgAooooAKSlpKACijNIeKACikooAKKKKACkpaKAEooooASiiimAUUUUgCiiigApKKKACkpaSgAopaSgAopKKAA0lLRQAlHel96SgAooooAKKKKACiiigBKKKKACiiloASkpaSgAooooAKKKKACiiigBKSlpKACiiigAo60UlABRRRQAUUUUALRSUUALSYoooASilooAKKKKAEopaSgAooo6UAJRRRQAUUGigAoopaACm0tJQB//R+ZdzcoOMY6fzpVDcEgkiofmYjBwO/tipMuAdp3YP50ATg7iXIxkA4x1p6gHDkAA9xUXmAjcGPHf39KfzwQRnGcDpxQBMGyPl+UHPfv8AWnLtXJbJ7YqFBnnoQelTKy7+Onqe/wBaALAyjEsCuMdPSpzId+CAM/rVPO3Geh5BJ7elT7iWCgAdhQBcV8c5wKljY7s9jVRWIznmpVft37UAXwRn3qyrkAEdaz0Y9+DVhW54oAvRtircch5zWWrHpVlGNAGzHN6VejnrASQir0cnTmgDoops1qRT4rl45cd60I5gDQB1cFx2rYguRxzXHwzdMGtOCc5AoA7WKbIq6r1y9vc8cmtWK4PTNAGyGNQ3tlZarZS6bqcKXNrOMSRuMg+n4jseopI3BGasKRQB8lfEP4X3fhUyatpBa70knJyMy2+ez46p6P8AnjrXkQORkdK/RQ4YFWAZWBBBGQQeoIPUGvnf4g/B4jzdb8GQ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lJRQAUe9NozQAtLTaM0ALSUlFABR2pM0H1oAWm59aM0maACjNNzSUAOzSUlFADqSkooAM0UlFABRRSUAJRRmigApKOetFACUZopMUAHFJS0lABSUUhoAWkoooAKSiigAopKKAFpKKKACikozQAUlBpKAFpppc0hoASiikoAWkoooAKSiigApKWkoASiiigAooooAKKKTNAATSUUUAFJmijrQAUUUUAJRRRQAUUUGgApKKSgBaTpRR9aACiiigAooooAKKKKACiig0AJSUUtABSUUUAFFFFABRRiigAooooASiiigBaKKKAEpKXvSUALSUUUAFFFFABRRiigAoopKAFpKKKACkoooAKKKKACiiigAopKWgAopKWgBDS0lFAC0UUUAHtRRRQAUUUUAJRRS0AJRS0lABRRRQAUUUUAFJS0lACUUUUAFJTqbQB//0/lD2pw9abS0AOApwpuc0o96AJOO9LmmDFL04oAeKdmmCnCgB4NOBqOnigB9Lmm0vagB2aWkpaAFp1MpRQA+im0tADhS036UtADs06mZoFAD80ueaZS0ASD3pc0wHvS8UAPz60uajFPB9aAJAakU+lQg9qcGoAm3c08NVcE0/PSgCyrVMGqmp561MDgUAW1cVOjVnq2e9TqxoAvo3INWUeswOanRjxzQBqpIOlXIpRxWKr1MspB60AbySjNXkm5rAilq6kvQ0Ab8c1aUVxjFcyk/FXo5umDQB1cNxitOK4z1NclHNjFaMU54yaAOtinX1p17a2OrWMum6lCtzaTjDxvyD7j0I7EcisKK47VoRzkEYNAHzF8Qfhhe+Ef+JppjNe6O5xvx+8gJ7S4/h9H/ADryjNfoKsyvG0bgMjgqysMhgeoIPBFfO/j/AOEywiXW/B8RMY+aWwXLMo7tD3IHXZ1Hb0oA8EzRTM9vwp1AxaKSloEKDRTaWgB1FNzS5oAWgUmaSgB9JSUlADqKbmjNAC5opM0lADjSUlGaACgmm5ooAKSiigA4pKXNJQAtJRmkzQAuaTNH0pKAClpM0UAJRRSZoAKKSlzQAUn0ozSUALmm5paSgAzSZo+tJQAtJmikoAKKKQ0ALSUCigApKKKAFpKKSgA+lFFJQAGk+tFFACUUGkoAKKKSgAooooAKKKT60AGaKKKAEpKWkoAKKKKACkoooAQ0ZopKAD2paSigBc0neiigAooo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"});function Ur(e){let t=e.split(".");if(t.length!==3)throw new Error(Cr);let o;try{o=JSON.parse(Buffer.from(t[1],"base64url").toString())}catch{throw new Error(Cr)}if(typeof o!="object"||o===null||typeof o.exp!="number")throw new Error(Cr);return o.exp}function $s(e){let t=new Error("Received an unexpected response from Resend while authenticating. Please run `resend login` again.");if(typeof e!="object"||e===null)throw t;let o=e;if(typeof o.access_token!="string"||o.access_token.length===0||typeof o.refresh_token!="string"||o.refresh_token.length===0||typeof o.scope!="string")throw t;return o}async function Gs(e,t,o){try{return await fetch(e,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:t,signal:AbortSignal.timeout(ff)})}catch(i){let r=i instanceof Error&&i.name==="TimeoutError"?`${o} timed out after 30s. Check your connection and try again.`:"Could not reach the Resend API. Check your connection and try again.",n=new Error(r);throw n.name=Sr,n}}async function Hs(e,t){let o=Math.floor(Date.now()/1e3);if(e.access_token_expires_at>o+gf)return{access_token:e.access_token,scope:e.scope};let i=process.env.RESEND_BASE_URL??"https://api.resend.com",r=await Gs(`${i}/oauth/token`,new URLSearchParams({grant_type:"refresh_token",client_id:Vo,refresh_token:e.refresh_token}),"Token refresh");if(!r.ok)throw new Error(`Token refresh failed (${r.status}). Please run \`resend login\` again.`);let n=$s(await r.json());return await Yo({access_token:n.access_token,access_token_expires_at:Ur(n.access_token),refresh_token:n.refresh_token,scope:n.scope},t),{access_token:n.access_token,scope:n.scope}}function wr(e){return e.toString("base64url")}function js(e){let{heading:t,message:o}=e;return`<!doctype html>
62
62
  <html lang="en">
63
63
  <head>
64
64
  <meta charset="utf-8" />
@@ -123,12 +123,12 @@ To fix: either repair the JSON manually, or delete the file and run: resend logi
123
123
  <body>
124
124
  <div class="bg"></div>
125
125
  <main>
126
- ${gf}
126
+ ${hf}
127
127
  <h1>${t}</h1>
128
128
  <p>${o}</p>
129
129
  </main>
130
130
  </body>
131
- </html>`}function Qs(){let e=wr((0,po.randomBytes)(64)),t=wr((0,po.createHash)("sha256").update(e).digest()),o=wr((0,po.randomBytes)(24));return{codeVerifier:e,codeChallenge:t,state:o}}function Ns(){return new Promise((e,t)=>{let o,i,r=new Promise((a,l)=>{o=a,i=l}),n=(0,Ps.createServer)((a,l)=>{let d=new URL(a.url??"/","http://127.0.0.1");if(d.pathname!=="/oauth/callback"){l.writeHead(404,{Connection:"close"}),l.end();return}let c=d.searchParams.get("code"),m=d.searchParams.get("state"),f=d.searchParams.get("error"),b=f?`Authorization denied: ${f}`:!c||!m?"Missing code or state in OAuth callback":null,h=js(b?{heading:"Authentication failed",message:`${b}. Return to your terminal and try again.`}:{heading:"Authentication complete",message:"You can close this tab and return to your terminal."});l.writeHead(200,{"Content-Type":"text/html; charset=utf-8",Connection:"close"}),l.end(h,()=>{a.socket.destroy()}),n.close(),clearTimeout(s),b?i(new Error(b)):c&&m&&o({code:c,state:m})}),s=setTimeout(()=>{n.close(),i(new Error("OAuth login timed out after 5 minutes. Please try again."))},300*1e3);n.listen(0,"127.0.0.1",()=>{let{port:a}=n.address();e({port:a,waitForCallback:r})}),n.on("error",t)})}async function Ms(e){let t=await Gs(`${e.baseUrl}/oauth/token`,new URLSearchParams({grant_type:"authorization_code",client_id:e.clientId,code:e.code,redirect_uri:e.redirectUri,code_verifier:e.codeVerifier}),"Token exchange");if(!t.ok){let o="";try{let i=await t.json();o=i.error_description??i.error??""}catch{}throw new Error(`Token exchange failed (${t.status})${o?`: ${o}`:""}`)}return $s(await t.json())}var po,Ps,Vo,Cr,pf,ff,Sr,gf,zo=he(()=>{"use strict";po=require("node:crypto"),Ps=require("node:http");Ae();Is();Vo="7136aa0b-625c-4c9c-8820-e9784c8eb141",Cr="Received an invalid access token from Resend. Please run `resend login` to authenticate again.";pf=3e4,ff=60,Sr="OAuthNetworkError";gf=`<svg class="logo" role="img" aria-label="Resend" fill="none" viewBox="0 0 78 78" xmlns="http://www.w3.org/2000/svg">
131
+ </html>`}function Qs(){let e=wr((0,po.randomBytes)(64)),t=wr((0,po.createHash)("sha256").update(e).digest()),o=wr((0,po.randomBytes)(24));return{codeVerifier:e,codeChallenge:t,state:o}}function Ns(){return new Promise((e,t)=>{let o,i,r=new Promise((a,l)=>{o=a,i=l}),n=(0,Ps.createServer)((a,l)=>{let d=new URL(a.url??"/","http://127.0.0.1");if(d.pathname!=="/oauth/callback"){l.writeHead(404,{Connection:"close"}),l.end();return}let c=d.searchParams.get("code"),m=d.searchParams.get("state"),f=d.searchParams.get("error"),b=f?`Authorization denied: ${f}`:!c||!m?"Missing code or state in OAuth callback":null,h=js(b?{heading:"Authentication failed",message:`${b}. Return to your terminal and try again.`}:{heading:"Authentication complete",message:"You can close this tab and return to your terminal."});l.writeHead(200,{"Content-Type":"text/html; charset=utf-8",Connection:"close"}),l.end(h,()=>{a.socket.destroy()}),n.close(),clearTimeout(s),b?i(new Error(b)):c&&m&&o({code:c,state:m})}),s=setTimeout(()=>{n.close(),i(new Error("OAuth login timed out after 5 minutes. Please try again."))},300*1e3);n.listen(0,"127.0.0.1",()=>{let{port:a}=n.address();e({port:a,waitForCallback:r})}),n.on("error",t)})}async function Ms(e){let t=await Gs(`${e.baseUrl}/oauth/token`,new URLSearchParams({grant_type:"authorization_code",client_id:e.clientId,code:e.code,redirect_uri:e.redirectUri,code_verifier:e.codeVerifier}),"Token exchange");if(!t.ok){let o="";try{let i=await t.json();o=i.error_description??i.error??""}catch{}throw new Error(`Token exchange failed (${t.status})${o?`: ${o}`:""}`)}return $s(await t.json())}var po,Ps,Vo,Cr,ff,gf,Sr,hf,zo=he(()=>{"use strict";po=require("node:crypto"),Ps=require("node:http");Ae();Is();Vo="7136aa0b-625c-4c9c-8820-e9784c8eb141",Cr="Received an invalid access token from Resend. Please run `resend login` to authenticate again.";ff=3e4,gf=60,Sr="OAuthNetworkError";hf=`<svg class="logo" role="img" aria-label="Resend" fill="none" viewBox="0 0 78 78" xmlns="http://www.w3.org/2000/svg">
132
132
  <rect x="1" y="1" width="76" height="76" rx="21" stroke="#FDFDFD" stroke-opacity="0.1" stroke-width="2" />
133
133
  <path d="M43.0184 21C49.9908 21 54.1374 25.1467 54.1374 30.6513C54.1374 36.1558 49.9908 40.3025 43.0184 40.3025H39.4953L57 57H44.6329L31.3118 44.3394C30.3578 43.4587 29.9174 42.4312 29.9174 41.5506C29.9174 40.3029 30.7984 39.202 32.4864 38.7249L39.3485 36.8897C41.954 36.1925 43.7522 34.1741 43.7522 31.5319C43.7522 28.3027 41.1098 26.4312 37.8438 26.4312H21V21H43.0184Z" fill="url(#resend_cli_logo_a)" />
134
134
  <path d="M54.1375 30.6513C54.1374 25.1467 49.9908 21 43.0184 21V20.55C46.5934 20.55 49.4879 21.6142 51.4941 23.4275C53.4405 25.1867 54.5189 27.6229 54.5844 30.3832L54.5875 30.6513C54.5875 33.5218 53.5032 36.0591 51.4941 37.875C49.5505 39.6317 46.7734 40.6853 43.3515 40.7495L43.0184 40.7525H40.619L58.1237 57.45H44.4532L44.3231 57.3261L31.0064 44.6694C29.978 43.7199 29.4675 42.579 29.4674 41.5506C29.4674 40.0491 30.5379 38.8082 32.3643 38.292L32.37 38.2903L39.2321 36.4551C41.6742 35.8016 43.3023 33.9377 43.3023 31.5319C43.3023 30.0523 42.7022 28.9051 41.7383 28.1191C40.7652 27.3258 39.3949 26.8812 37.8438 26.8812H20.55V20.55H43.0184V21H21V26.4312H37.8438C41.1098 26.4312 43.7522 28.3027 43.7523 31.5319C43.7523 34.1741 41.954 36.1925 39.3485 36.8897L32.4865 38.7249C30.7984 39.202 29.9174 40.3029 29.9174 41.5506C29.9175 42.4312 30.3578 43.4587 31.3118 44.3393L44.633 57H57.0001L39.4953 40.3025H43.0184C49.9909 40.3025 54.1375 36.1558 54.1375 30.6513Z" fill="url(#resend_cli_logo_b)" />
@@ -142,71 +142,71 @@ To fix: either repair the JSON manually, or delete the file and run: resend logi
142
142
  <stop offset="1" stop-color="#ADADAD" />
143
143
  </linearGradient>
144
144
  </defs>
145
- </svg>`});var qs,xe,Ls,Ws,hf,Js=he(()=>{"use strict";qs=require("node:crypto"),xe=require("node:fs"),Ls=require("node:path"),Ws=(e,t,o)=>{let i=`${e}.tmp.${process.pid}.${(0,qs.randomUUID)()}`;try{let r=(0,xe.openSync)(i,"w",o);try{(0,xe.writeSync)(r,t),(0,xe.fsyncSync)(r)}finally{(0,xe.closeSync)(r)}(0,xe.renameSync)(i,e),hf((0,Ls.dirname)(e))}catch(r){try{(0,xe.unlinkSync)(i)}catch{}throw r}},hf=e=>{if(process.platform!=="win32")try{let t=(0,xe.openSync)(e,"r");try{(0,xe.fsyncSync)(t)}finally{(0,xe.closeSync)(t)}}catch{}}});function Ge(){return process.env.XDG_CONFIG_HOME?(0,Pt.join)(process.env.XDG_CONFIG_HOME,"resend"):process.platform==="win32"&&process.env.APPDATA?(0,Pt.join)(process.env.APPDATA,"resend"):(0,Pt.join)((0,Ys.homedir)(),".config","resend")}function xt(){return(0,Pt.join)(Ge(),"credentials.json")}function Vs(e){return e.type==="oauth_grant"?Kr(e)?{type:"oauth_grant",...e}:{type:"oauth_grant",scope:typeof e.scope=="string"?e.scope:""}:{type:"api_key",...e.api_key!==void 0?{api_key:e.api_key}:{},...e.permission?{permission:e.permission}:{}}}function vr(){try{return ve()}catch{return null}}function ve(){let e=xt();if(!(0,je.existsSync)(e))return null;let t=(0,je.readFileSync)(e,"utf-8");if(t.trim().length===0)return null;let o;try{o=JSON.parse(t)}catch{throw new Mo(e)}if(typeof o=="object"&&o!==null&&"api_key"in o&&!("profiles"in o)&&!("teams"in o))return{active_profile:"default",profiles:{default:{type:"api_key",api_key:o.api_key}}};if("profiles"in o){let i=o.storage==="keychain"?"secure_storage":o.storage,r=o.profiles;return{active_profile:o.active_profile??"default",...i?{storage:i}:{},profiles:Object.fromEntries(Object.entries(r).map(([n,s])=>[n,Vs(s)]))}}if("teams"in o){let i=o.teams;return{active_profile:o.active_team??"default",profiles:Object.fromEntries(Object.entries(i).map(([r,n])=>[r,Vs(n)]))}}return null}function ft(e){let t=Ge();(0,je.mkdirSync)(t,{recursive:!0,mode:448});let o=xt();return Ws(o,`${JSON.stringify(e,null,2)}
146
- `,384),(0,je.chmodSync)(o,384),o}function Xo(e){if(e)return e;let t=process.env.RESEND_PROFILE;if(t)return t;let o=ve();return o?.active_profile?o.active_profile:"default"}function pr(e,t,o){let i=t||"default",r=de(i);if(r)throw new Error(r);return it(pt(),()=>{let n=ve()||{active_profile:"default",profiles:{}},s={...n.profiles,[i]:{type:"api_key",api_key:e,...o&&{permission:o}}},a={...n,profiles:s,...Object.keys(s).length===1?{active_profile:i}:{}};return ft(a)})}function Us(e){return it(pt(),()=>{let t=ve();if(!t)throw new Error("No credentials file found.");let o=e||Xo();if(!t.profiles[o])throw new Error(`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`);let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=xt();return(0,je.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return ft({...t,active_profile:n,profiles:r})})}function fo(e){let t=de(e);if(t)throw new Error(t);it(pt(),()=>{let o=ve();if(!o)throw new Error("No credentials file found. Run: resend login");if(!o.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(o.profiles).join(", ")}`);ft({...o,active_profile:e})})}function ke(){let e=ve();return e?Object.keys(e.profiles).map(t=>({name:t,active:t===e.active_profile})):[]}function de(e){if(!e||e.length===0)return"Profile name must not be empty";if(e.length>64)return"Profile name must be 64 characters or fewer";if(!/^[a-zA-Z0-9._-]+$/.test(e))return"Profile name must contain only letters, numbers, dots, dashes, and underscores"}function gt(e){return e.length<=7?`${e.slice(0,3)}...`:`${e.slice(0,3)}...${e.slice(-4)}`}function Kr(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.access_token=="string"&&typeof t.access_token_expires_at=="number"&&typeof t.refresh_token=="string"&&typeof t.scope=="string"}function Af(e){return Kr(e)?e:null}function bf(e){let t;try{t=JSON.parse(e)}catch{t=null}if(!Kr(t))throw new Error("Stored OAuth credentials are invalid. Please run `resend login` to authenticate again.");return t}async function kt(e,t,o){if(e)return{type:"api_key",key:e,source:"flag"};let i=process.env.RESEND_API_KEY;if(i)return{type:"api_key",key:i,source:"env"};let r=ve(),n=t||process.env.RESEND_PROFILE||r?.active_profile||"default";if(r?.storage==="secure_storage"&&r.profiles[n]){let s=r.profiles[n],l=await(await ot()).get(Le,n);if(l){if(s.type==="oauth_grant"){let d=bf(l);return zs(d,n,"secure_storage",o)}return{type:"api_key",key:l,source:"secure_storage",profile:n,permission:s.permission}}}if(r){let s=r.profiles[n];if(s?.type==="api_key"&&s.api_key)return{type:"api_key",key:s.api_key,source:"config",profile:n,permission:s.permission};if(s?.type==="oauth_grant"){let a=Af(s);if(a)return zs(a,n,"config",o)}}return null}async function zs(e,t,o,i){if(i?.refresh===!1)return{type:"oauth_grant",access_token:e.access_token,profile:t,scope:e.scope,source:o};let{access_token:r,scope:n}=await Hs(e,t);return{type:"oauth_grant",access_token:r,profile:t,scope:n,source:o}}async function Xs(e,t,o){let i=t||"default",r=de(i);if(r)throw new Error(r);let n=await ot();return n.isSecure?{configPath:await it(pt(),async()=>{await n.set(Le,i,e);let a=ve()||{active_profile:"default",profiles:{}},l={...a.profiles,[i]:{type:"api_key",...o&&{permission:o}}};return ft({...a,storage:"secure_storage",profiles:l,...Object.keys(l).length===1?{active_profile:i}:{}})}),backend:n}:{configPath:pr(e,i,o),backend:n}}async function Yo(e,t){let o=t||"default",i=de(o);if(i)throw new Error(i);let r=await ot();return{configPath:await it(pt(),async()=>{let s=ve()||{active_profile:"default",profiles:{}},a=r.isSecure?{type:"oauth_grant",scope:e.scope}:{type:"oauth_grant",...e};r.isSecure&&await r.set(Le,o,JSON.stringify(e));let l={...s.profiles,[o]:a};try{return ft({...s,storage:r.isSecure?"secure_storage":"file",profiles:l,...Object.keys(l).length===1?{active_profile:o}:{}})}catch(d){throw r.isSecure&&await r.delete(Le,o).catch(()=>{}),d}}),backend:r}}async function Zo(e){return it(pt(),async()=>{let t=ve(),o=e||process.env.RESEND_PROFILE||t?.active_profile||"default";if(!t?.profiles[o])throw new Error(t?`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`:"No credentials file found.");if(t.storage==="secure_storage"){let s=await ot();if(s.isSecure&&!await s.delete(Le,o))throw new Error(`Failed to remove API key for profile "${o}" from ${s.name}. Credential may still exist in secure storage.`)}let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=xt();return(0,je.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return ft({...t,active_profile:n,profiles:r})})}async function Zs(){return it(pt(),async()=>{let e=vr(),t=xt();if(e?.storage==="secure_storage"){let o=await ot();if(o.isSecure){let i=Object.keys(e.profiles),r=await Promise.all(i.map(s=>o.delete(Le,s))),n=i.filter((s,a)=>!r[a]);if(n.length>0){let s=Object.fromEntries(Object.entries(e.profiles).filter(([l])=>!r[i.indexOf(l)])),a=Object.keys(s);throw ft({...e,active_profile:e.active_profile&&s[e.active_profile]?e.active_profile:a[0]??"default",profiles:s}),new Error(`Failed to remove API keys from ${o.name} for profiles: ${n.join(", ")}. Credentials may still exist in secure storage.`)}}}return(0,je.existsSync)(t)&&(0,je.unlinkSync)(t),t})}async function ei(e,t){if(e===t)return;let o=de(t);if(o)throw new Error(o);await it(pt(),async()=>{let i=ve();if(!i)throw new Error("No credentials file found. Run: resend login");if(!i.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(i.profiles).join(", ")}`);if(i.profiles[t])throw new Error(`Profile "${t}" already exists.`);if(i.storage==="secure_storage"){let s=await ot();if(s.isSecure){let a=await s.get(Le,e);if(a&&(await s.set(Le,t,a),!await s.delete(Le,e))){let d=await s.delete(Le,t);throw new Error(d?`Failed to remove old credential "${e}" from ${s.name} during rename. The rename has been rolled back.`:`Failed to remove old credential "${e}" from ${s.name} during rename. Rollback also failed \u2014 credential "${t}" may still exist in secure storage.`)}}}let{[e]:r,...n}=i.profiles;ft({...i,active_profile:i.active_profile===e?t:i.active_profile,profiles:{...n,[t]:r}})})}var je,Ys,Pt,$t,pt,Ae=he(()=>{"use strict";je=require("node:fs"),Ys=require("node:os"),Pt=require("node:path");ws();br();Os();zo();Js();$t=`Sending-only keys work with: emails send, emails batch, broadcasts send.
147
- Create a full access key at https://resend.com/api-keys`;pt=()=>(0,Pt.join)(Ge(),"credentials.json.lock")});function U(){return!(!process.stdin.isTTY||!process.stdout.isTTY||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||process.env.TERM==="dumb")}var rt,V=he(()=>{"use strict";rt=process.platform!=="win32"||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"});function uc(){return(0,dc.join)(Ge(),"update-state.json")}function og(){try{return JSON.parse((0,Vt.readFileSync)(uc(),"utf-8"))}catch{return null}}function ig(e){(0,Vt.mkdirSync)(Ge(),{recursive:!0,mode:448}),(0,Vt.writeFileSync)(uc(),JSON.stringify(e),{mode:384})}function yi(e,t){let o=d=>d.replace(/^v/,"").split(".").map(Number),[i,r,n]=o(e),[s,a,l]=o(t);return s!==i?s>i:a!==r?a>r:l>n}async function Tr(){try{let e=await fetch(Or,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return null;let t=await e.json();if(t.prerelease||t.draft)return null;let o=t.tag_name?.replace(/^v/,"");return!o||!/^\d+\.\d+\.\d+$/.test(o)?null:o}catch{return null}}function rg(e){return!!(e?.json||process.env.RESEND_NO_UPDATE_NOTIFIER==="1"||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||!process.stdout.isTTY)}function mc(){let e=Ci();return e.startsWith("npm")?"npm":e.startsWith("brew")?"homebrew":e.startsWith("curl")||e.startsWith("irm")?"install-script":"manual"}function Ci(){let e=process.execPath||process.argv[0]||"",t=process.argv[1]||"";return process.env.npm_execpath||/node_modules/.test(t)||/node_modules/.test(e)?"npm install -g resend-cli":/\/(Cellar|homebrew)\//i.test(e)?"brew update && brew upgrade resend":/[/\\]\.resend[/\\]bin[/\\]/.test(e)?process.platform==="win32"?"irm https://resend.com/install.ps1 | iex":"curl -fsSL https://resend.com/install.sh | bash":"https://github.com/resend/resend-cli/releases/latest"}function cc(e){let t=Ci(),o=t.startsWith("http"),i="\x1B[2m",r="\x1B[33m",n="\x1B[36m",s="\x1B[0m",a=["",`${i}Update available: ${r}v${ne}${s}${i} \u2192 ${n}v${e}${s}`,`${i}${o?"Visit":"Run"}: ${n}${t}${s}`];return process.platform==="win32"&&a.push(`${i}Or download from: ${n}https://github.com/resend/resend-cli/releases/latest${s}`),a.push(""),a.join(`
148
- `)}async function pc(e){if(rg(e))return;let t=og(),o=Date.now();if(t&&o-t.lastChecked<tg){yi(ne,t.latestVersion)&&process.stderr.write(cc(t.latestVersion));return}let i=await Tr();i&&(ig({lastChecked:o,latestVersion:i}),yi(ne,i)&&process.stderr.write(cc(i)))}var Vt,dc,tg,Or,wo=he(()=>{"use strict";Vt=require("node:fs"),dc=require("node:path");Ae();St();tg=3600*1e3,Or="https://api.github.com/repos/resend/resend-cli/releases/latest"});var Bu={};eo(Bu,{flushFromFile:()=>Lg,flushPayload:()=>Eu,getOrCreateAnonymousId:()=>Du,getSpoolDir:()=>Qr,isDisabled:()=>_u,trackCommand:()=>Nr});function Hg(){return Gg[process.platform]??process.platform}function Qr(){let e=(0,Je.join)(Ge(),"telemetry-spool");return(0,W.mkdirSync)(e,{recursive:!0,mode:448}),e}function _u(){return!Ru||process.env.DO_NOT_TRACK==="1"||process.env.RESEND_TELEMETRY_DISABLED==="1"}function Du(){let e=Ge(),t=(0,Je.join)(e,"telemetry-id");try{let i=(0,W.readFileSync)(t,"utf-8").trim();if(i)return i}catch{}let o=crypto.randomUUID();return(0,W.mkdirSync)(e,{recursive:!0,mode:448}),(0,W.writeFileSync)(t,o,{mode:384}),o}function Qg(e){if(!e)return;let t=Ge(),o=(0,Je.join)(t,"telemetry-notice-shown");(0,W.existsSync)(o)||((0,W.mkdirSync)(t,{recursive:!0,mode:448}),(0,W.writeFileSync)(o,"",{mode:384}),process.stderr.write(`
145
+ </svg>`});var qs,xe,Ls,Ws,Af,Js=he(()=>{"use strict";qs=require("node:crypto"),xe=require("node:fs"),Ls=require("node:path"),Ws=(e,t,o)=>{let i=`${e}.tmp.${process.pid}.${(0,qs.randomUUID)()}`;try{let r=(0,xe.openSync)(i,"w",o);try{(0,xe.writeSync)(r,t),(0,xe.fsyncSync)(r)}finally{(0,xe.closeSync)(r)}(0,xe.renameSync)(i,e),Af((0,Ls.dirname)(e))}catch(r){try{(0,xe.unlinkSync)(i)}catch{}throw r}},Af=e=>{if(process.platform!=="win32")try{let t=(0,xe.openSync)(e,"r");try{(0,xe.fsyncSync)(t)}finally{(0,xe.closeSync)(t)}}catch{}}});function Ge(){return process.env.XDG_CONFIG_HOME?(0,Pt.join)(process.env.XDG_CONFIG_HOME,"resend"):process.platform==="win32"&&process.env.APPDATA?(0,Pt.join)(process.env.APPDATA,"resend"):(0,Pt.join)((0,Ys.homedir)(),".config","resend")}function xt(){return(0,Pt.join)(Ge(),"credentials.json")}function Vs(e){return e.type==="oauth_grant"?Kr(e)?{type:"oauth_grant",...e}:{type:"oauth_grant",scope:typeof e.scope=="string"?e.scope:""}:{type:"api_key",...e.api_key!==void 0?{api_key:e.api_key}:{},...e.permission?{permission:e.permission}:{}}}function vr(){try{return ve()}catch{return null}}function ve(){let e=xt();if(!(0,je.existsSync)(e))return null;let t=(0,je.readFileSync)(e,"utf-8");if(t.trim().length===0)return null;let o;try{o=JSON.parse(t)}catch{throw new Mo(e)}if(typeof o=="object"&&o!==null&&"api_key"in o&&!("profiles"in o)&&!("teams"in o))return{active_profile:"default",profiles:{default:{type:"api_key",api_key:o.api_key}}};if("profiles"in o){let i=o.storage==="keychain"?"secure_storage":o.storage,r=o.profiles;return{active_profile:o.active_profile??"default",...i?{storage:i}:{},profiles:Object.fromEntries(Object.entries(r).map(([n,s])=>[n,Vs(s)]))}}if("teams"in o){let i=o.teams;return{active_profile:o.active_team??"default",profiles:Object.fromEntries(Object.entries(i).map(([r,n])=>[r,Vs(n)]))}}return null}function ft(e){let t=Ge();(0,je.mkdirSync)(t,{recursive:!0,mode:448});let o=xt();return Ws(o,`${JSON.stringify(e,null,2)}
146
+ `,384),(0,je.chmodSync)(o,384),o}function Xo(e){if(e)return e;let t=process.env.RESEND_PROFILE;if(t)return t;let o=ve();return o?.active_profile?o.active_profile:"default"}function pr(e,t,o){let i=t||"default",r=de(i);if(r)throw new Error(r);return it(pt(),()=>{let n=ve()||{active_profile:"default",profiles:{}},s={...n.profiles,[i]:{type:"api_key",api_key:e,...o&&{permission:o}}},a={...n,profiles:s,...Object.keys(s).length===1?{active_profile:i}:{}};return ft(a)})}function Us(e){return it(pt(),()=>{let t=ve();if(!t)throw new Error("No credentials file found.");let o=e||Xo();if(!t.profiles[o])throw new Error(`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`);let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=xt();return(0,je.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return ft({...t,active_profile:n,profiles:r})})}function fo(e){let t=de(e);if(t)throw new Error(t);it(pt(),()=>{let o=ve();if(!o)throw new Error("No credentials file found. Run: resend login");if(!o.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(o.profiles).join(", ")}`);ft({...o,active_profile:e})})}function ke(){let e=ve();return e?Object.keys(e.profiles).map(t=>({name:t,active:t===e.active_profile})):[]}function de(e){if(!e||e.length===0)return"Profile name must not be empty";if(e.length>64)return"Profile name must be 64 characters or fewer";if(!/^[a-zA-Z0-9._-]+$/.test(e))return"Profile name must contain only letters, numbers, dots, dashes, and underscores"}function gt(e){return e.length<=7?`${e.slice(0,3)}...`:`${e.slice(0,3)}...${e.slice(-4)}`}function Kr(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.access_token=="string"&&typeof t.access_token_expires_at=="number"&&typeof t.refresh_token=="string"&&typeof t.scope=="string"}function bf(e){return Kr(e)?e:null}function yf(e){let t;try{t=JSON.parse(e)}catch{t=null}if(!Kr(t))throw new Error("Stored OAuth credentials are invalid. Please run `resend login` to authenticate again.");return t}async function kt(e,t,o){if(e)return{type:"api_key",key:e,source:"flag"};let i=process.env.RESEND_API_KEY;if(i)return{type:"api_key",key:i,source:"env"};let r=ve(),n=t||process.env.RESEND_PROFILE||r?.active_profile||"default";if(r?.storage==="secure_storage"&&r.profiles[n]){let s=r.profiles[n],l=await(await ot()).get(We,n);if(l){if(s.type==="oauth_grant"){let d=yf(l);return zs(d,n,"secure_storage",o)}return{type:"api_key",key:l,source:"secure_storage",profile:n,permission:s.permission}}}if(r){let s=r.profiles[n];if(s?.type==="api_key"&&s.api_key)return{type:"api_key",key:s.api_key,source:"config",profile:n,permission:s.permission};if(s?.type==="oauth_grant"){let a=bf(s);if(a)return zs(a,n,"config",o)}}return null}async function zs(e,t,o,i){if(i?.refresh===!1)return{type:"oauth_grant",access_token:e.access_token,profile:t,scope:e.scope,source:o};let{access_token:r,scope:n}=await Hs(e,t);return{type:"oauth_grant",access_token:r,profile:t,scope:n,source:o}}async function Xs(e,t,o){let i=t||"default",r=de(i);if(r)throw new Error(r);let n=await ot();return n.isSecure?{configPath:await it(pt(),async()=>{await n.set(We,i,e);let a=ve()||{active_profile:"default",profiles:{}},l={...a.profiles,[i]:{type:"api_key",...o&&{permission:o}}};return ft({...a,storage:"secure_storage",profiles:l,...Object.keys(l).length===1?{active_profile:i}:{}})}),backend:n}:{configPath:pr(e,i,o),backend:n}}async function Yo(e,t){let o=t||"default",i=de(o);if(i)throw new Error(i);let r=await ot();return{configPath:await it(pt(),async()=>{let s=ve()||{active_profile:"default",profiles:{}},a=r.isSecure?{type:"oauth_grant",scope:e.scope}:{type:"oauth_grant",...e};r.isSecure&&await r.set(We,o,JSON.stringify(e));let l={...s.profiles,[o]:a};try{return ft({...s,storage:r.isSecure?"secure_storage":"file",profiles:l,...Object.keys(l).length===1?{active_profile:o}:{}})}catch(d){throw r.isSecure&&await r.delete(We,o).catch(()=>{}),d}}),backend:r}}async function Zo(e){return it(pt(),async()=>{let t=ve(),o=e||process.env.RESEND_PROFILE||t?.active_profile||"default";if(!t?.profiles[o])throw new Error(t?`Profile "${o}" not found. Available profiles: ${Object.keys(t.profiles).join(", ")}`:"No credentials file found.");if(t.storage==="secure_storage"){let s=await ot();if(s.isSecure&&!await s.delete(We,o))throw new Error(`Failed to remove API key for profile "${o}" from ${s.name}. Credential may still exist in secure storage.`)}let{[o]:i,...r}=t.profiles;if(Object.keys(r).length===0){let s=xt();return(0,je.unlinkSync)(s),s}let n=t.active_profile===o?Object.keys(r)[0]||"default":t.active_profile;return ft({...t,active_profile:n,profiles:r})})}async function Zs(){return it(pt(),async()=>{let e=vr(),t=xt();if(e?.storage==="secure_storage"){let o=await ot();if(o.isSecure){let i=Object.keys(e.profiles),r=await Promise.all(i.map(s=>o.delete(We,s))),n=i.filter((s,a)=>!r[a]);if(n.length>0){let s=Object.fromEntries(Object.entries(e.profiles).filter(([l])=>!r[i.indexOf(l)])),a=Object.keys(s);throw ft({...e,active_profile:e.active_profile&&s[e.active_profile]?e.active_profile:a[0]??"default",profiles:s}),new Error(`Failed to remove API keys from ${o.name} for profiles: ${n.join(", ")}. Credentials may still exist in secure storage.`)}}}return(0,je.existsSync)(t)&&(0,je.unlinkSync)(t),t})}async function ei(e,t){if(e===t)return;let o=de(t);if(o)throw new Error(o);await it(pt(),async()=>{let i=ve();if(!i)throw new Error("No credentials file found. Run: resend login");if(!i.profiles[e])throw new Error(`Profile "${e}" not found. Available profiles: ${Object.keys(i.profiles).join(", ")}`);if(i.profiles[t])throw new Error(`Profile "${t}" already exists.`);if(i.storage==="secure_storage"){let s=await ot();if(s.isSecure){let a=await s.get(We,e);if(a&&(await s.set(We,t,a),!await s.delete(We,e))){let d=await s.delete(We,t);throw new Error(d?`Failed to remove old credential "${e}" from ${s.name} during rename. The rename has been rolled back.`:`Failed to remove old credential "${e}" from ${s.name} during rename. Rollback also failed \u2014 credential "${t}" may still exist in secure storage.`)}}}let{[e]:r,...n}=i.profiles;ft({...i,active_profile:i.active_profile===e?t:i.active_profile,profiles:{...n,[t]:r}})})}var je,Ys,Pt,$t,pt,Ae=he(()=>{"use strict";je=require("node:fs"),Ys=require("node:os"),Pt=require("node:path");ws();br();Os();zo();Js();$t=`Sending-only keys work with: emails send, emails batch, broadcasts send.
147
+ Create a full access key at https://resend.com/api-keys`;pt=()=>(0,Pt.join)(Ge(),"credentials.json.lock")});function U(){return!(!process.stdin.isTTY||!process.stdout.isTTY||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||process.env.TERM==="dumb")}var rt,V=he(()=>{"use strict";rt=process.platform!=="win32"||!!process.env.WT_SESSION||process.env.TERM_PROGRAM==="vscode"});function mc(){return(0,uc.join)(Ge(),"update-state.json")}function ig(){try{return JSON.parse((0,Vt.readFileSync)(mc(),"utf-8"))}catch{return null}}function rg(e){(0,Vt.mkdirSync)(Ge(),{recursive:!0,mode:448}),(0,Vt.writeFileSync)(mc(),JSON.stringify(e),{mode:384})}function yi(e,t){let o=d=>d.replace(/^v/,"").split(".").map(Number),[i,r,n]=o(e),[s,a,l]=o(t);return s!==i?s>i:a!==r?a>r:l>n}async function Tr(){try{let e=await fetch(Or,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return null;let t=await e.json();if(t.prerelease||t.draft)return null;let o=t.tag_name?.replace(/^v/,"");return!o||!/^\d+\.\d+\.\d+$/.test(o)?null:o}catch{return null}}function ng(e){return!!(e?.json||process.env.RESEND_NO_UPDATE_NOTIFIER==="1"||process.env.CI==="true"||process.env.CI==="1"||process.env.GITHUB_ACTIONS||!process.stdout.isTTY)}function pc(){let e=Ci();return e.startsWith("npm")?"npm":e.startsWith("brew")?"homebrew":e.startsWith("curl")||e.startsWith("irm")?"install-script":"manual"}function Ci(){let e=process.execPath||process.argv[0]||"",t=process.argv[1]||"";return process.env.npm_execpath||/node_modules/.test(t)||/node_modules/.test(e)?"npm install -g resend-cli":/\/(Cellar|homebrew)\//i.test(e)?"brew update && brew upgrade resend":/[/\\]\.resend[/\\]bin[/\\]/.test(e)?process.platform==="win32"?"irm https://resend.com/install.ps1 | iex":"curl -fsSL https://resend.com/install.sh | bash":"https://github.com/resend/resend-cli/releases/latest"}function dc(e){let t=Ci(),o=t.startsWith("http"),i="\x1B[2m",r="\x1B[33m",n="\x1B[36m",s="\x1B[0m",a=["",`${i}Update available: ${r}v${ne}${s}${i} \u2192 ${n}v${e}${s}`,`${i}${o?"Visit":"Run"}: ${n}${t}${s}`];return process.platform==="win32"&&a.push(`${i}Or download from: ${n}https://github.com/resend/resend-cli/releases/latest${s}`),a.push(""),a.join(`
148
+ `)}async function fc(e){if(ng(e))return;let t=ig(),o=Date.now();if(t&&o-t.lastChecked<og){yi(ne,t.latestVersion)&&process.stderr.write(dc(t.latestVersion));return}let i=await Tr();i&&(rg({lastChecked:o,latestVersion:i}),yi(ne,i)&&process.stderr.write(dc(i)))}var Vt,uc,og,Or,wo=he(()=>{"use strict";Vt=require("node:fs"),uc=require("node:path");Ae();St();og=3600*1e3,Or="https://api.github.com/repos/resend/resend-cli/releases/latest"});var Ou={};eo(Ou,{flushFromFile:()=>Wg,flushPayload:()=>Bu,getOrCreateAnonymousId:()=>Eu,getSpoolDir:()=>Qr,isDisabled:()=>Du,trackCommand:()=>Nr});function Qg(){return Hg[process.platform]??process.platform}function Qr(){let e=(0,Ve.join)(Ge(),"telemetry-spool");return(0,W.mkdirSync)(e,{recursive:!0,mode:448}),e}function Du(){return!_u||process.env.DO_NOT_TRACK==="1"||process.env.RESEND_TELEMETRY_DISABLED==="1"}function Eu(){let e=Ge(),t=(0,Ve.join)(e,"telemetry-id");try{let i=(0,W.readFileSync)(t,"utf-8").trim();if(i)return i}catch{}let o=crypto.randomUUID();return(0,W.mkdirSync)(e,{recursive:!0,mode:448}),(0,W.writeFileSync)(t,o,{mode:384}),o}function Ng(e){if(!e)return;let t=Ge(),o=(0,Ve.join)(t,"telemetry-notice-shown");(0,W.existsSync)(o)||((0,W.mkdirSync)(t,{recursive:!0,mode:448}),(0,W.writeFileSync)(o,"",{mode:384}),process.stderr.write(`
149
149
  Resend collects anonymous CLI usage data to improve the tool.
150
150
  To opt out: export RESEND_TELEMETRY_DISABLED=1
151
151
 
152
- `))}function Nr(e,t){if(!_u())try{let o=U()&&!t.json;Qg(o);let i=Du(),r={command:e,cli_version:ne,os:Hg(),node_version:process.version,interactive:o,install_method:mc()};t.flags?.length&&(r.flags=t.flags),t.globalFlags?.length&&(r.global_flags=t.globalFlags);let n=crypto.randomUUID(),s=JSON.stringify({api_key:Ru,distinct_id:i,event:"cli.used",properties:r,_nonce:n}),a=Qr(),l=(0,Je.join)(a,`resend-telemetry-${crypto.randomUUID()}.json`),d=(0,W.openSync)(l,W.constants.O_CREAT|W.constants.O_EXCL|W.constants.O_WRONLY|(W.constants.O_NOFOLLOW??0),384);try{(0,W.writeFileSync)(d,s)}finally{(0,W.closeSync)(d)}let c="pkg"in process,m=c?["telemetry","flush",l]:process.execArgv.concat([process.argv[1],"telemetry","flush",l]);(0,Fu.spawn)(process.execPath,m,{detached:!0,stdio:"ignore",env:{...process.env,RESEND_TELEMETRY_DISABLED:"1",...c?{PKG_EXECPATH:""}:{}}}).unref()}catch{}}async function Eu(e){let t=JSON.parse(e);if(!Ng(t))throw new Error("invalid telemetry payload schema");let{_nonce:o,...i}=t,r=JSON.stringify(i),n=await fetch($g,{method:"POST",headers:{"Content-Type":"application/json"},body:r,signal:AbortSignal.timeout(3e3)});if(!n.ok)throw new Error(`telemetry flush failed: ${n.status}`)}async function Lg(e){let t=(0,Je.join)(e),o=Qr(),i=(0,Je.basename)(t);if((0,Je.dirname)(t)!==o||!qg.test(i)||(0,W.realpathSync)((0,Je.dirname)(t))!==(0,W.realpathSync)(o))throw new Error("invalid telemetry flush path");let r=(0,W.openSync)(t,W.constants.O_RDONLY|W.constants.O_NOFOLLOW),n;try{let s=(0,W.fstatSync)(r);if(!s.isFile()||s.nlink!==1)throw new Error("invalid telemetry flush path");n=(0,W.readFileSync)(r,"utf-8")}finally{(0,W.closeSync)(r)}try{await Eu(n)}finally{(0,W.unlinkSync)(t)}}var Fu,W,Je,Ru,$g,Gg,ku,Ng,Mg,qg,Mr=he(()=>{"use strict";Fu=require("node:child_process"),W=require("node:fs"),Je=require("node:path");Ae();V();wo();St();Ru="phc_AgEBpcQTRsBl3UgQX2U8XvimTlgdXG6YEhfvJl2cUfc",$g="https://us.i.posthog.com/capture/",Gg={darwin:"macOS",win32:"Windows",linux:"Linux"};ku=new Set(["api_key","distinct_id","event","properties","_nonce"]),Ng=e=>{if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e,o=Object.keys(t);return o.length!==ku.size||o.some(i=>!ku.has(i))?!1:typeof t.api_key=="string"&&typeof t.distinct_id=="string"&&t.event==="cli.used"&&typeof t.properties=="object"&&t.properties!==null&&!Array.isArray(t.properties)&&typeof t._nonce=="string"&&t._nonce.length>0};Mg="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",qg=new RegExp(`^resend-telemetry-${Mg}\\.json$`)});var an=ue(sn(),1),{program:th,createCommand:oh,createArgument:ih,createOption:rh,CommanderError:nh,InvalidArgumentError:sh,InvalidOptionArgumentError:ah,Command:u,Argument:ln,Option:L,Help:lh}=an.default;var Zt=ue(Ve(),1);var am=`Global options:
152
+ `))}function Nr(e,t){if(!Du())try{let o=U()&&!t.json;Ng(o);let i=Eu(),r={command:e,cli_version:ne,os:Qg(),node_version:process.version,interactive:o,install_method:pc()};t.flags?.length&&(r.flags=t.flags),t.globalFlags?.length&&(r.global_flags=t.globalFlags);let n=crypto.randomUUID(),s=JSON.stringify({api_key:_u,distinct_id:i,event:"cli.used",properties:r,_nonce:n}),a=Qr(),l=(0,Ve.join)(a,`resend-telemetry-${crypto.randomUUID()}.json`),d=(0,W.openSync)(l,W.constants.O_CREAT|W.constants.O_EXCL|W.constants.O_WRONLY|(W.constants.O_NOFOLLOW??0),384);try{(0,W.writeFileSync)(d,s)}finally{(0,W.closeSync)(d)}let c="pkg"in process,m=c?["telemetry","flush",l]:process.execArgv.concat([process.argv[1],"telemetry","flush",l]);(0,Ru.spawn)(process.execPath,m,{detached:!0,stdio:"ignore",env:{...process.env,RESEND_TELEMETRY_DISABLED:"1",...c?{PKG_EXECPATH:""}:{}}}).unref()}catch{}}async function Bu(e){let t=JSON.parse(e);if(!Mg(t))throw new Error("invalid telemetry payload schema");let{_nonce:o,...i}=t,r=JSON.stringify(i),n=await fetch(Gg,{method:"POST",headers:{"Content-Type":"application/json"},body:r,signal:AbortSignal.timeout(3e3)});if(!n.ok)throw new Error(`telemetry flush failed: ${n.status}`)}async function Wg(e){let t=(0,Ve.join)(e),o=Qr(),i=(0,Ve.basename)(t);if((0,Ve.dirname)(t)!==o||!Lg.test(i)||(0,W.realpathSync)((0,Ve.dirname)(t))!==(0,W.realpathSync)(o))throw new Error("invalid telemetry flush path");let r=(0,W.openSync)(t,W.constants.O_RDONLY|W.constants.O_NOFOLLOW),n;try{let s=(0,W.fstatSync)(r);if(!s.isFile()||s.nlink!==1)throw new Error("invalid telemetry flush path");n=(0,W.readFileSync)(r,"utf-8")}finally{(0,W.closeSync)(r)}try{await Bu(n)}finally{(0,W.unlinkSync)(t)}}var Ru,W,Ve,_u,Gg,Hg,Fu,Mg,qg,Lg,Mr=he(()=>{"use strict";Ru=require("node:child_process"),W=require("node:fs"),Ve=require("node:path");Ae();V();wo();St();_u="phc_AgEBpcQTRsBl3UgQX2U8XvimTlgdXG6YEhfvJl2cUfc",Gg="https://us.i.posthog.com/capture/",Hg={darwin:"macOS",win32:"Windows",linux:"Linux"};Fu=new Set(["api_key","distinct_id","event","properties","_nonce"]),Mg=e=>{if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e,o=Object.keys(t);return o.length!==Fu.size||o.some(i=>!Fu.has(i))?!1:typeof t.api_key=="string"&&typeof t.distinct_id=="string"&&t.event==="cli.used"&&typeof t.properties=="object"&&t.properties!==null&&!Array.isArray(t.properties)&&typeof t._nonce=="string"&&t._nonce.length>0};qg="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",Lg=new RegExp(`^resend-telemetry-${qg}\\.json$`)});var an=ue(sn(),1),{program:oh,createCommand:ih,createArgument:rh,createOption:nh,CommanderError:sh,InvalidArgumentError:ah,InvalidOptionArgumentError:lh,Command:u,Argument:ln,Option:L,Help:ch}=an.default;var Zt=ue(ze(),1);var lm=`Global options:
153
153
  --api-key <key> API key (or set RESEND_API_KEY env var)
154
154
  -p, --profile <name> Profile to use (overrides RESEND_PROFILE)
155
155
  --json Force JSON output (also auto-enabled when stdout is piped)
156
- -q, --quiet Suppress spinners and status output (implies --json)`,lm=`Global options:
156
+ -q, --quiet Suppress spinners and status output (implies --json)`,cm=`Global options:
157
157
  -p, --profile <name> Profile to use
158
158
  --json Force JSON output
159
- -q, --quiet Suppress spinners and status output (implies --json)`,cm=' {"error":{"message":"<message>","code":"<code>"}}';function p(e){let t=[];return e.context!=null&&t.push(e.context),t.push(e.setup?lm:am),e.output!=null&&t.push(`Output (--json or piped):
159
+ -q, --quiet Suppress spinners and status output (implies --json)`,dm=' {"error":{"message":"<message>","code":"<code>"}}';function p(e){let t=[];return e.context!=null&&t.push(e.context),t.push(e.setup?cm:lm),e.output!=null&&t.push(`Output (--json or piped):
160
160
  ${e.output}`),e.errorCodes!=null&&t.push(`Errors (exit code 1, JSON on stderr when using --json or non-TTY):
161
- ${cm}
161
+ ${dm}
162
162
  Codes: ${e.errorCodes.join(" | ")}`),t.push(`Examples:
163
163
  ${e.examples.map(o=>` $ ${o}`).join(`
164
164
  `)}`),`
165
165
  ${t.join(`
166
166
 
167
- `)}`}var Rt=require("node:util"),oo=require("node:process");var xn=ue(require("node:readline"),1);var un=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let o=0;for(e.lastIndex=0;e.test(t);)o+=1;return t.length-o}})(),mn=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,pn=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var dm=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,um=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,fn=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,mm=/\t{1,1000}/y,gn=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,pm=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,fm=/\p{M}+/gu,gm={limit:1/0,ellipsis:""},hn=(e,t={},o={})=>{let i=t.limit??1/0,r=t.ellipsis??"",n=t?.ellipsisWidth??(r?hn(r,gm,o).width:0),s=0,a=o.controlWidth??0,l=o.tabWidth??8,d=o.emojiWidth??2,c=2,m=o.regularWidth??1,f=o.wideWidth??c,b=[[pm,m],[dm,s],[um,a],[mm,l],[gn,d],[fn,f]],h=0,A=0,w=e.length,S=0,v=!1,K=w,x=Math.max(0,i-n),D=0,I=0,G=0,E=0;e:for(;;){if(I>D||A>=w&&A>h){let N=e.slice(D,I)||e.slice(h,A);S=0;for(let we of N.replaceAll(fm,"")){let ie=we.codePointAt(0)||0;if(mn(ie)?E=c:pn(ie)?E=f:E=m,G+E>x&&(K=Math.min(K,Math.max(D,h)+S)),G+E>i){v=!0;break e}S+=we.length,G+=E}D=I=0}if(A>=w)break e;for(let N=0,we=b.length;N<we;N++){let[ie,wt]=b[N];if(ie.lastIndex=A,ie.test(e)){if(S=ie===fn?un(e.slice(A,ie.lastIndex)):ie===gn?1:ie.lastIndex-A,E=S*wt,G+E>x&&(K=Math.min(K,A+Math.floor((x-G)/wt))),G+E>i){v=!0;break e}G+=E,D=h,I=A,A=h=ie.lastIndex;continue e}}A+=1}return{width:v?x:G,index:v?K:w,truncated:v,ellipsed:v&&i>=n}},An=hn;var hm={limit:1/0,ellipsis:"",ellipsisWidth:0},Am=(e,t={})=>An(e,hm,t).width,Ue=Am;var Fo="\x1B",Un="\x9B",bm=39,Li="\x07",Sn="[",ym="]",vn="m",Wi=`${ym}8;;`,bn=new RegExp(`(?:\\${Sn}(?<code>\\d+)m|\\${Wi}(?<uri>.*)${Li})`,"y"),yn=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},Cn=e=>`${Fo}${Sn}${e}${vn}`,wn=e=>`${Fo}${Wi}${e}${Li}`,qi=(e,t,o)=>{let i=t[Symbol.iterator](),r=!1,n=!1,s=e.at(-1),a=s===void 0?0:Ue(s),l=i.next(),d=i.next(),c=0;for(;!l.done;){let m=l.value,f=Ue(m);a+f<=o?e[e.length-1]+=m:(e.push(m),a=0),(m===Fo||m===Un)&&(r=!0,n=t.startsWith(Wi,c+1)),r?n?m===Li&&(r=!1,n=!1):m===vn&&(r=!1):(a+=f,a===o&&!d.done&&(e.push(""),a=0)),l=d,d=i.next(),c+=m.length}s=e.at(-1),!a&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},Cm=e=>{let t=e.split(" "),o=t.length;for(;o&&!Ue(t[o-1]);)o--;return o===t.length?e:t.slice(0,o).join(" ")+t.slice(o).join("")},wm=(e,t,o={})=>{if(o.trim!==!1&&e.trim()==="")return"";let i="",r,n,s=e.split(" "),a=[""],l=0;for(let m=0;m<s.length;m++){let f=s[m];if(o.trim!==!1){let h=a.at(-1)??"",A=h.trimStart();h.length!==A.length&&(a[a.length-1]=A,l=Ue(A))}m!==0&&(l>=t&&(o.wordWrap===!1||o.trim===!1)&&(a.push(""),l=0),(l||o.trim===!1)&&(a[a.length-1]+=" ",l++));let b=Ue(f);if(o.hard&&b>t){let h=t-l,A=1+Math.floor((b-h-1)/t);Math.floor((b-1)/t)<A&&a.push(""),qi(a,f,t),l=Ue(a.at(-1)??"");continue}if(l+b>t&&l&&b){if(o.wordWrap===!1&&l<t){qi(a,f,t),l=Ue(a.at(-1)??"");continue}a.push(""),l=0}if(l+b>t&&o.wordWrap===!1){qi(a,f,t),l=Ue(a.at(-1)??"");continue}a[a.length-1]+=f,l+=b}o.trim!==!1&&(a=a.map(m=>Cm(m)));let d=a.join(`
168
- `),c=!1;for(let m=0;m<d.length;m++){let f=d[m];if(i+=f,c)c=!1;else if(c=f>="\uD800"&&f<="\uDBFF",c)continue;if(f===Fo||f===Un){bn.lastIndex=m+1;let h=bn.exec(d)?.groups;if(h?.code!==void 0){let A=Number.parseFloat(h.code);r=A===bm?void 0:A}else h?.uri!==void 0&&(n=h.uri.length===0?void 0:h.uri)}if(d[m+1]===`
167
+ `)}`}var Rt=require("node:util"),oo=require("node:process");var xn=ue(require("node:readline"),1);var un=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let o=0;for(e.lastIndex=0;e.test(t);)o+=1;return t.length-o}})(),mn=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,pn=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141;var um=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,mm=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,fn=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,pm=/\t{1,1000}/y,gn=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,fm=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,gm=/\p{M}+/gu,hm={limit:1/0,ellipsis:""},hn=(e,t={},o={})=>{let i=t.limit??1/0,r=t.ellipsis??"",n=t?.ellipsisWidth??(r?hn(r,hm,o).width:0),s=0,a=o.controlWidth??0,l=o.tabWidth??8,d=o.emojiWidth??2,c=2,m=o.regularWidth??1,f=o.wideWidth??c,b=[[fm,m],[um,s],[mm,a],[pm,l],[gn,d],[fn,f]],h=0,A=0,w=e.length,S=0,v=!1,K=w,x=Math.max(0,i-n),D=0,I=0,G=0,E=0;e:for(;;){if(I>D||A>=w&&A>h){let N=e.slice(D,I)||e.slice(h,A);S=0;for(let we of N.replaceAll(gm,"")){let ie=we.codePointAt(0)||0;if(mn(ie)?E=c:pn(ie)?E=f:E=m,G+E>x&&(K=Math.min(K,Math.max(D,h)+S)),G+E>i){v=!0;break e}S+=we.length,G+=E}D=I=0}if(A>=w)break e;for(let N=0,we=b.length;N<we;N++){let[ie,wt]=b[N];if(ie.lastIndex=A,ie.test(e)){if(S=ie===fn?un(e.slice(A,ie.lastIndex)):ie===gn?1:ie.lastIndex-A,E=S*wt,G+E>x&&(K=Math.min(K,A+Math.floor((x-G)/wt))),G+E>i){v=!0;break e}G+=E,D=h,I=A,A=h=ie.lastIndex;continue e}}A+=1}return{width:v?x:G,index:v?K:w,truncated:v,ellipsed:v&&i>=n}},An=hn;var Am={limit:1/0,ellipsis:"",ellipsisWidth:0},bm=(e,t={})=>An(e,Am,t).width,Ue=bm;var Fo="\x1B",Un="\x9B",ym=39,Li="\x07",Sn="[",Cm="]",vn="m",Wi=`${Cm}8;;`,bn=new RegExp(`(?:\\${Sn}(?<code>\\d+)m|\\${Wi}(?<uri>.*)${Li})`,"y"),yn=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},Cn=e=>`${Fo}${Sn}${e}${vn}`,wn=e=>`${Fo}${Wi}${e}${Li}`,qi=(e,t,o)=>{let i=t[Symbol.iterator](),r=!1,n=!1,s=e.at(-1),a=s===void 0?0:Ue(s),l=i.next(),d=i.next(),c=0;for(;!l.done;){let m=l.value,f=Ue(m);a+f<=o?e[e.length-1]+=m:(e.push(m),a=0),(m===Fo||m===Un)&&(r=!0,n=t.startsWith(Wi,c+1)),r?n?m===Li&&(r=!1,n=!1):m===vn&&(r=!1):(a+=f,a===o&&!d.done&&(e.push(""),a=0)),l=d,d=i.next(),c+=m.length}s=e.at(-1),!a&&s!==void 0&&s.length&&e.length>1&&(e[e.length-2]+=e.pop())},wm=e=>{let t=e.split(" "),o=t.length;for(;o&&!Ue(t[o-1]);)o--;return o===t.length?e:t.slice(0,o).join(" ")+t.slice(o).join("")},Um=(e,t,o={})=>{if(o.trim!==!1&&e.trim()==="")return"";let i="",r,n,s=e.split(" "),a=[""],l=0;for(let m=0;m<s.length;m++){let f=s[m];if(o.trim!==!1){let h=a.at(-1)??"",A=h.trimStart();h.length!==A.length&&(a[a.length-1]=A,l=Ue(A))}m!==0&&(l>=t&&(o.wordWrap===!1||o.trim===!1)&&(a.push(""),l=0),(l||o.trim===!1)&&(a[a.length-1]+=" ",l++));let b=Ue(f);if(o.hard&&b>t){let h=t-l,A=1+Math.floor((b-h-1)/t);Math.floor((b-1)/t)<A&&a.push(""),qi(a,f,t),l=Ue(a.at(-1)??"");continue}if(l+b>t&&l&&b){if(o.wordWrap===!1&&l<t){qi(a,f,t),l=Ue(a.at(-1)??"");continue}a.push(""),l=0}if(l+b>t&&o.wordWrap===!1){qi(a,f,t),l=Ue(a.at(-1)??"");continue}a[a.length-1]+=f,l+=b}o.trim!==!1&&(a=a.map(m=>wm(m)));let d=a.join(`
168
+ `),c=!1;for(let m=0;m<d.length;m++){let f=d[m];if(i+=f,c)c=!1;else if(c=f>="\uD800"&&f<="\uDBFF",c)continue;if(f===Fo||f===Un){bn.lastIndex=m+1;let h=bn.exec(d)?.groups;if(h?.code!==void 0){let A=Number.parseFloat(h.code);r=A===ym?void 0:A}else h?.uri!==void 0&&(n=h.uri.length===0?void 0:h.uri)}if(d[m+1]===`
169
169
  `){n&&(i+=wn(""));let b=r?yn(r):void 0;r&&b&&(i+=Cn(b))}else f===`
170
- `&&(r&&yn(r)&&(i+=Cn(r)),n&&(i+=wn(n)))}return i},Um=/\r?\n/;function at(e,t,o){return String(e).normalize().split(Um).map(i=>wm(i,t,o)).join(`
171
- `)}var Oe=ue(Vi(),1);function tt(e,t,o){if(!o.some(s=>!s.disabled))return e;let i=e+t,r=Math.max(o.length-1,0),n=i<0?r:i>r?0:i;return o[n].disabled?tt(n,t<0?-1:1,o):n}var Km=["up","down","left","right","space","enter","cancel"],xm=["January","February","March","April","May","June","July","August","September","October","November","December"],ge={actions:new Set(Km),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...xm],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function kn(e,t){if(typeof e=="string")return ge.aliases.get(e)===t;for(let o of e)if(o!==void 0&&kn(o,t))return!0;return!1}function km(e,t){if(e===t)return;let o=e.split(`
170
+ `&&(r&&yn(r)&&(i+=Cn(r)),n&&(i+=wn(n)))}return i},Sm=/\r?\n/;function at(e,t,o){return String(e).normalize().split(Sm).map(i=>Um(i,t,o)).join(`
171
+ `)}var Oe=ue(Vi(),1);function tt(e,t,o){if(!o.some(s=>!s.disabled))return e;let i=e+t,r=Math.max(o.length-1,0),n=i<0?r:i>r?0:i;return o[n].disabled?tt(n,t<0?-1:1,o):n}var xm=["up","down","left","right","space","enter","cancel"],km=["January","February","March","April","May","June","July","August","September","October","November","December"],ge={actions:new Set(xm),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...km],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};function kn(e,t){if(typeof e=="string")return ge.aliases.get(e)===t;for(let o of e)if(o!==void 0&&kn(o,t))return!0;return!1}function Fm(e,t){if(e===t)return;let o=e.split(`
172
172
  `),i=t.split(`
173
- `),r=Math.max(o.length,i.length),n=[];for(let s=0;s<r;s++)o[s]!==i[s]&&n.push(s);return{lines:n,numLinesBefore:o.length,numLinesAfter:i.length,numLines:r}}var wh=globalThis.process.platform.startsWith("win"),zi=Symbol("clack:cancel");function k(e){return e===zi}function Ro(e,t){let o=e;o.isTTY&&o.setRawMode(t)}var Oo=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,Yi=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function lt(e,t,o,i=o,r=o,n){let s=Oo(e??oo.stdout);return at(t,s-o.length,{hard:!0,trim:!1}).split(`
173
+ `),r=Math.max(o.length,i.length),n=[];for(let s=0;s<r;s++)o[s]!==i[s]&&n.push(s);return{lines:n,numLinesBefore:o.length,numLinesAfter:i.length,numLines:r}}var Uh=globalThis.process.platform.startsWith("win"),zi=Symbol("clack:cancel");function k(e){return e===zi}function Ro(e,t){let o=e;o.isTTY&&o.setRawMode(t)}var Oo=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,Yi=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;function lt(e,t,o,i=o,r=o,n){let s=Oo(e??oo.stdout);return at(t,s-o.length,{hard:!0,trim:!1}).split(`
174
174
  `).map((a,l,d)=>{let c=n?n(a,l):a;return l===0?`${i}${c}`:l===d.length-1?`${r}${c}`:`${o}${c}`}).join(`
175
175
  `)}var _t=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(e,t=!0){let{input:o=oo.stdin,output:i=oo.stdout,render:r,signal:n,...s}=e;this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=r.bind(this),this._track=t,this._abortSignal=n,this.input=o,this.output=i}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let o=this._subscribers.get(e)??[];o.push(t),this._subscribers.set(e,o)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let o=this._subscribers.get(e)??[],i=[];for(let r of o)r.cb(...t),r.once&&i.push(()=>o.splice(o.indexOf(r),1));for(let r of i)r()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(zi);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=xn.default.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),Ro(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(Oe.cursor.show),this.output.off("resize",this.render),Ro(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(Oe.cursor.show),this.output.off("resize",this.render),Ro(this.input,!1),e(zi)})})}_isActionKey(e,t){return e===" "}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit("value",this.value)}_setUserInput(e,t){this.userInput=e??"",this.emit("userInput",this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(e,t){if(this._track&&t.name!=="return"&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&ge.aliases.has(t.name)&&this.emit("cursor",ge.aliases.get(t.name)),ge.actions.has(t.name)&&this.emit("cursor",t.name)),e&&(e.toLowerCase()==="y"||e.toLowerCase()==="n")&&this.emit("confirm",e.toLowerCase()==="y"),this.emit("key",e?.toLowerCase(),t),t?.name==="return"&&this._shouldSubmit(e,t)){if(this.opts.validate){let o=this.opts.validate(this.value);o&&(this.error=o instanceof Error?o.message:o,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}kn([e,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
176
176
  `),Ro(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=at(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
177
- `).length-1;this.output.write(Oe.cursor.move(-999,e*-1))}render(){let e=at(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(Oe.cursor.hide);else{let t=km(this._prevFrame,e),o=Yi(this.output);if(this.restoreCursor(),t){let i=Math.max(0,t.numLinesAfter-o),r=Math.max(0,t.numLinesBefore-o),n=t.lines.find(s=>s>=i);if(n===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(Oe.cursor.move(0,n-r)),this.output.write(Oe.erase.lines(1));let s=e.split(`
177
+ `).length-1;this.output.write(Oe.cursor.move(-999,e*-1))}render(){let e=at(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(Oe.cursor.hide);else{let t=Fm(this._prevFrame,e),o=Yi(this.output);if(this.restoreCursor(),t){let i=Math.max(0,t.numLinesAfter-o),r=Math.max(0,t.numLinesBefore-o),n=t.lines.find(s=>s>=i);if(n===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(Oe.cursor.move(0,n-r)),this.output.write(Oe.erase.lines(1));let s=e.split(`
178
178
  `);this.output.write(s[n]),this._prevFrame=e,this.output.write(Oe.cursor.move(0,s.length-n-1));return}else if(t.lines.length>1){if(i<r)n=i;else{let a=n-r;a>0&&this.output.write(Oe.cursor.move(0,a))}this.output.write(Oe.erase.down());let s=e.split(`
179
179
  `).slice(n);this.output.write(s.join(`
180
- `)),this._prevFrame=e;return}}this.output.write(Oe.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};function Fm(e,t){if(e===void 0||t.length===0)return 0;let o=t.findIndex(i=>i.value===e);return o!==-1?o:0}function Rm(e,t){return(t.label??String(t.value)).toLowerCase().includes(e.toLowerCase())}function _m(e,t){if(t)return e?t:t[0]}var Fn=class extends _t{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#i="";#t;#o;#r;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return(0,Rt.styleText)(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}\u2588`;let e=this.userInput.slice(0,this._cursor),[t,...o]=this.userInput.slice(this._cursor);return`${e}${(0,Rt.styleText)("inverse",t)}${o.join("")}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#r=e.placeholder;let t=this.options;this.filteredOptions=[...t],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??Rm;let o;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?o=e.initialValue:o=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(o=[this.options[0].value]),o)for(let i of o){let r=t.findIndex(n=>n.value===i);r!==-1&&(this.toggleSelected(i),this.#e=r)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,r)=>this.#n(i,r)),this.on("userInput",i=>this.#s(i))}_isActionKey(e,t){return e===" "||this.multiple&&this.isNavigating&&t.name==="space"&&e!==void 0&&e!==""}#n(e,t){let o=t.name==="up",i=t.name==="down",r=t.name==="return",n=this.userInput===""||this.userInput===" ",s=this.#r,a=this.options,l=s!==void 0&&s!==""&&a.some(d=>!d.disabled&&(this.#t?this.#t(s,d):!0));if(t.name==="tab"&&n&&l){this.userInput===" "&&this._clearUserInput(),this._setUserInput(s,!0),this.isNavigating=!1;return}o||i?(this.#e=tt(this.#e,o?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):r?this.value=_m(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(t.name==="tab"||this.isNavigating&&t.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter(t=>t!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#s(e){if(e!==this.#i){this.#i=e;let t=this.options;e&&this.#t?this.filteredOptions=t.filter(r=>this.#t?.(e,r)):this.filteredOptions=[...t];let o=Fm(this.focusedValue,this.filteredOptions);this.#e=tt(o,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}},_o=class extends _t{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",o=>{this.output.write(Oe.cursor.move(0,-1)),this.value=o,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};var Rn=class extends _t{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(e=>e.disabled!==!0)}toggleAll(){let e=this._enabledOptions,t=this.value!==void 0&&this.value.length===e.length;this.value=t?[]:e.map(o=>o.value)}toggleInvert(){let e=this.value;if(!e)return;let t=this._enabledOptions.filter(o=>!e.includes(o.value));this.value=t.map(o=>o.value)}toggleValue(){this.value===void 0&&(this.value=[]);let e=this.value.includes(this._value);this.value=e?this.value.filter(t=>t!==this._value):[...this.value,this._value]}constructor(e){super(e,!1),this.options=e.options,this.value=[...e.initialValues??[]];let t=Math.max(this.options.findIndex(({value:o})=>o===e.cursorAt),0);this.cursor=this.options[t].disabled?tt(t,1,this.options):t,this.on("key",o=>{o==="a"&&this.toggleAll(),o==="i"&&this.toggleInvert()}),this.on("cursor",o=>{switch(o){case"left":case"up":this.cursor=tt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=tt(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},Do=class extends _t{_mask="\u2022";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state==="submit"||this.state==="cancel")return this.masked;let t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${(0,Rt.styleText)(["inverse","hidden"],"_")}`;let o=this.masked,i=o.slice(0,this.cursor),r=o.slice(this.cursor);return`${i}${(0,Rt.styleText)("inverse",r[0])}${r.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...o}){super(o),this._mask=t??"\u2022",this.on("userInput",i=>{this._setValue(i)})}},Eo=class extends _t{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;let o=this.options.findIndex(({value:r})=>r===t.initialValue),i=o===-1?0:o;this.cursor=this.options[i].disabled?tt(i,1,this.options):i,this.changeValue(),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=tt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=tt(this.cursor,1,this.options);break}this.changeValue()})}};var Bo=class extends _t{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let o=t.slice(0,this.cursor),[i,...r]=t.slice(this.cursor);return`${o}${(0,Rt.styleText)("inverse",i)}${r.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",o=>{this._setValue(o)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}};var y=require("node:util"),Te=ue(require("node:process"),1);var Tn=ue(Vi(),1);function Dm(){return Te.default.platform!=="win32"?Te.default.env.TERM!=="linux":!!Te.default.env.CI||!!Te.default.env.WT_SESSION||!!Te.default.env.TERMINUS_SUBLIME||Te.default.env.ConEmuTask==="{cmd::Cmder}"||Te.default.env.TERM_PROGRAM==="Terminus-Sublime"||Te.default.env.TERM_PROGRAM==="vscode"||Te.default.env.TERM==="xterm-256color"||Te.default.env.TERM==="alacritty"||Te.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Em=Dm();var Z=(e,t)=>Em?e:t,Bm=Z("\u25C6","*"),Om=Z("\u25A0","x"),Tm=Z("\u25B2","x"),Xi=Z("\u25C7","o"),Im=Z("\u250C","T"),j=Z("\u2502","|"),qe=Z("\u2514","\u2014"),Th=Z("\u2510","T"),Ih=Z("\u2518","\u2014"),Io=Z("\u25CF",">"),Dt=Z("\u25CB"," "),jm=Z("\u25FB","[\u2022]"),_n=Z("\u25FC","[+]"),Dn=Z("\u25FB","[ ]"),Pm=Z("\u25AA","\u2022"),En=Z("\u2500","-"),$m=Z("\u256E","+"),Gm=Z("\u251C","+"),Hm=Z("\u256F","+"),Qm=Z("\u2570","+"),jh=Z("\u256D","+"),Nm=Z("\u25CF","\u2022"),Mm=Z("\u25C6","*"),qm=Z("\u25B2","!"),Lm=Z("\u25A0","x"),Ut=e=>{switch(e){case"initial":case"active":return(0,y.styleText)("cyan",Bm);case"cancel":return(0,y.styleText)("red",Om);case"error":return(0,y.styleText)("yellow",Tm);case"submit":return(0,y.styleText)("green",Xi)}},In=e=>{switch(e){case"initial":case"active":return(0,y.styleText)("cyan",j);case"cancel":return(0,y.styleText)("red",j);case"error":return(0,y.styleText)("yellow",j);case"submit":return(0,y.styleText)("green",j)}},Bn=(e,t,o,i,r,n=!1)=>{let s=t,a=0;if(n)for(let l=i-1;l>=o&&(s-=e[l].length,a++,!(s<=r));l--);else for(let l=o;l<i&&(s-=e[l].length,a++,!(s<=r));l++);return{lineCount:s,removals:a}},jo=({cursor:e,options:t,style:o,output:i=process.stdout,maxItems:r=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:s=4})=>{let a=Oo(i)-n,l=Yi(i),d=(0,y.styleText)("dim","..."),c=Math.max(l-s,0),m=Math.max(Math.min(r,c),5),f=0;e>=m-3&&(f=Math.max(Math.min(e-m+3,t.length-m),0));let b=m<t.length&&f>0,h=m<t.length&&f+m<t.length,A=Math.min(f+m,t.length),w=[],S=0;b&&S++,h&&S++;let v=f+(b?1:0),K=A-(h?1:0);for(let D=v;D<K;D++){let I=at(o(t[D],D===e),a,{hard:!0,trim:!1}).split(`
181
- `);w.push(I),S+=I.length}if(S>c){let D=0,I=0,G=S,E=e-v,N=c,we=()=>Bn(w,G,0,E,N),ie=()=>Bn(w,G,E+1,w.length,N,!0);b?({lineCount:G,removals:D}=we(),G>N&&(h||(N-=1),{lineCount:G,removals:I}=ie())):(h||(N-=1),{lineCount:G,removals:I}=ie(),G>N&&(N-=1,{lineCount:G,removals:D}=we())),D>0&&(b=!0,w.splice(0,D)),I>0&&(h=!0,w.splice(w.length-I,I))}let x=[];b&&x.push(d);for(let D of w)for(let I of D)x.push(I);return h&&x.push(d),x};function On(e){return e.label??String(e.value??"")}function Wm(e,t){if(!e)return!0;let o=(t.label??String(t.value??"")).toLowerCase(),i=(t.hint??"").toLowerCase(),r=String(t.value).toLowerCase(),n=e.toLowerCase();return o.includes(n)||i.includes(n)||r.includes(n)}function Jm(e,t){let o=[];for(let i of t)e.includes(i.value)&&o.push(i);return o}var jn=e=>new Fn({options:e.options,initialValue:e.initialValue?[e.initialValue]:void 0,initialUserInput:e.initialUserInput,placeholder:e.placeholder,filter:e.filter??((t,o)=>Wm(t,o)),signal:e.signal,input:e.input,output:e.output,validate:e.validate,render(){let t=e.withGuide??ge.withGuide,o=t?[`${(0,y.styleText)("gray",j)}`,`${Ut(this.state)} ${e.message}`]:[`${Ut(this.state)} ${e.message}`],i=this.userInput,r=this.options,n=e.placeholder,s=i===""&&n!==void 0,a=(l,d)=>{let c=On(l),m=l.hint&&l.value===this.focusedValue?(0,y.styleText)("dim",` (${l.hint})`):"";switch(d){case"active":return`${(0,y.styleText)("green",Io)} ${c}${m}`;case"inactive":return`${(0,y.styleText)("dim",Dt)} ${(0,y.styleText)("dim",c)}`;case"disabled":return`${(0,y.styleText)("gray",Dt)} ${(0,y.styleText)(["strikethrough","gray"],c)}`}};switch(this.state){case"submit":{let l=Jm(this.selectedValues,r),d=l.length>0?` ${(0,y.styleText)("dim",l.map(On).join(", "))}`:"",c=t?(0,y.styleText)("gray",j):"";return`${o.join(`
180
+ `)),this._prevFrame=e;return}}this.output.write(Oe.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}};function Rm(e,t){if(e===void 0||t.length===0)return 0;let o=t.findIndex(i=>i.value===e);return o!==-1?o:0}function _m(e,t){return(t.label??String(t.value)).toLowerCase().includes(e.toLowerCase())}function Dm(e,t){if(t)return e?t:t[0]}var Fn=class extends _t{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#e=0;#i="";#t;#o;#r;get cursor(){return this.#e}get userInputWithCursor(){if(!this.userInput)return(0,Rt.styleText)(["inverse","hidden"],"_");if(this._cursor>=this.userInput.length)return`${this.userInput}\u2588`;let e=this.userInput.slice(0,this._cursor),[t,...o]=this.userInput.slice(this._cursor);return`${e}${(0,Rt.styleText)("inverse",t)}${o.join("")}`}get options(){return typeof this.#o=="function"?this.#o():this.#o}constructor(e){super(e),this.#o=e.options,this.#r=e.placeholder;let t=this.options;this.filteredOptions=[...t],this.multiple=e.multiple===!0,this.#t=typeof e.options=="function"?e.filter:e.filter??_m;let o;if(e.initialValue&&Array.isArray(e.initialValue)?this.multiple?o=e.initialValue:o=e.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(o=[this.options[0].value]),o)for(let i of o){let r=t.findIndex(n=>n.value===i);r!==-1&&(this.toggleSelected(i),this.#e=r)}this.focusedValue=this.options[this.#e]?.value,this.on("key",(i,r)=>this.#n(i,r)),this.on("userInput",i=>this.#s(i))}_isActionKey(e,t){return e===" "||this.multiple&&this.isNavigating&&t.name==="space"&&e!==void 0&&e!==""}#n(e,t){let o=t.name==="up",i=t.name==="down",r=t.name==="return",n=this.userInput===""||this.userInput===" ",s=this.#r,a=this.options,l=s!==void 0&&s!==""&&a.some(d=>!d.disabled&&(this.#t?this.#t(s,d):!0));if(t.name==="tab"&&n&&l){this.userInput===" "&&this._clearUserInput(),this._setUserInput(s,!0),this.isNavigating=!1;return}o||i?(this.#e=tt(this.#e,o?-1:1,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#e]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):r?this.value=Dm(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(t.name==="tab"||this.isNavigating&&t.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(e){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(e)?this.selectedValues=this.selectedValues.filter(t=>t!==e):this.selectedValues=[...this.selectedValues,e]:this.selectedValues=[e])}#s(e){if(e!==this.#i){this.#i=e;let t=this.options;e&&this.#t?this.filteredOptions=t.filter(r=>this.#t?.(e,r)):this.filteredOptions=[...t];let o=Rm(this.focusedValue,this.filteredOptions);this.#e=tt(o,0,this.filteredOptions);let i=this.filteredOptions[this.#e];i&&!i.disabled?this.focusedValue=i.value:this.focusedValue=void 0,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}},_o=class extends _t{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",o=>{this.output.write(Oe.cursor.move(0,-1)),this.value=o,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};var Rn=class extends _t{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(e=>e.disabled!==!0)}toggleAll(){let e=this._enabledOptions,t=this.value!==void 0&&this.value.length===e.length;this.value=t?[]:e.map(o=>o.value)}toggleInvert(){let e=this.value;if(!e)return;let t=this._enabledOptions.filter(o=>!e.includes(o.value));this.value=t.map(o=>o.value)}toggleValue(){this.value===void 0&&(this.value=[]);let e=this.value.includes(this._value);this.value=e?this.value.filter(t=>t!==this._value):[...this.value,this._value]}constructor(e){super(e,!1),this.options=e.options,this.value=[...e.initialValues??[]];let t=Math.max(this.options.findIndex(({value:o})=>o===e.cursorAt),0);this.cursor=this.options[t].disabled?tt(t,1,this.options):t,this.on("key",o=>{o==="a"&&this.toggleAll(),o==="i"&&this.toggleInvert()}),this.on("cursor",o=>{switch(o){case"left":case"up":this.cursor=tt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=tt(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},Do=class extends _t{_mask="\u2022";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state==="submit"||this.state==="cancel")return this.masked;let t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${(0,Rt.styleText)(["inverse","hidden"],"_")}`;let o=this.masked,i=o.slice(0,this.cursor),r=o.slice(this.cursor);return`${i}${(0,Rt.styleText)("inverse",r[0])}${r.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...o}){super(o),this._mask=t??"\u2022",this.on("userInput",i=>{this._setValue(i)})}},Eo=class extends _t{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;let o=this.options.findIndex(({value:r})=>r===t.initialValue),i=o===-1?0:o;this.cursor=this.options[i].disabled?tt(i,1,this.options):i,this.changeValue(),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=tt(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=tt(this.cursor,1,this.options);break}this.changeValue()})}};var Bo=class extends _t{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let o=t.slice(0,this.cursor),[i,...r]=t.slice(this.cursor);return`${o}${(0,Rt.styleText)("inverse",i)}${r.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",o=>{this._setValue(o)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}};var y=require("node:util"),Te=ue(require("node:process"),1);var Tn=ue(Vi(),1);function Em(){return Te.default.platform!=="win32"?Te.default.env.TERM!=="linux":!!Te.default.env.CI||!!Te.default.env.WT_SESSION||!!Te.default.env.TERMINUS_SUBLIME||Te.default.env.ConEmuTask==="{cmd::Cmder}"||Te.default.env.TERM_PROGRAM==="Terminus-Sublime"||Te.default.env.TERM_PROGRAM==="vscode"||Te.default.env.TERM==="xterm-256color"||Te.default.env.TERM==="alacritty"||Te.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Bm=Em();var Z=(e,t)=>Bm?e:t,Om=Z("\u25C6","*"),Tm=Z("\u25A0","x"),Im=Z("\u25B2","x"),Xi=Z("\u25C7","o"),jm=Z("\u250C","T"),j=Z("\u2502","|"),Le=Z("\u2514","\u2014"),Ih=Z("\u2510","T"),jh=Z("\u2518","\u2014"),Io=Z("\u25CF",">"),Dt=Z("\u25CB"," "),Pm=Z("\u25FB","[\u2022]"),_n=Z("\u25FC","[+]"),Dn=Z("\u25FB","[ ]"),$m=Z("\u25AA","\u2022"),En=Z("\u2500","-"),Gm=Z("\u256E","+"),Hm=Z("\u251C","+"),Qm=Z("\u256F","+"),Nm=Z("\u2570","+"),Ph=Z("\u256D","+"),Mm=Z("\u25CF","\u2022"),qm=Z("\u25C6","*"),Lm=Z("\u25B2","!"),Wm=Z("\u25A0","x"),Ut=e=>{switch(e){case"initial":case"active":return(0,y.styleText)("cyan",Om);case"cancel":return(0,y.styleText)("red",Tm);case"error":return(0,y.styleText)("yellow",Im);case"submit":return(0,y.styleText)("green",Xi)}},In=e=>{switch(e){case"initial":case"active":return(0,y.styleText)("cyan",j);case"cancel":return(0,y.styleText)("red",j);case"error":return(0,y.styleText)("yellow",j);case"submit":return(0,y.styleText)("green",j)}},Bn=(e,t,o,i,r,n=!1)=>{let s=t,a=0;if(n)for(let l=i-1;l>=o&&(s-=e[l].length,a++,!(s<=r));l--);else for(let l=o;l<i&&(s-=e[l].length,a++,!(s<=r));l++);return{lineCount:s,removals:a}},jo=({cursor:e,options:t,style:o,output:i=process.stdout,maxItems:r=Number.POSITIVE_INFINITY,columnPadding:n=0,rowPadding:s=4})=>{let a=Oo(i)-n,l=Yi(i),d=(0,y.styleText)("dim","..."),c=Math.max(l-s,0),m=Math.max(Math.min(r,c),5),f=0;e>=m-3&&(f=Math.max(Math.min(e-m+3,t.length-m),0));let b=m<t.length&&f>0,h=m<t.length&&f+m<t.length,A=Math.min(f+m,t.length),w=[],S=0;b&&S++,h&&S++;let v=f+(b?1:0),K=A-(h?1:0);for(let D=v;D<K;D++){let I=at(o(t[D],D===e),a,{hard:!0,trim:!1}).split(`
181
+ `);w.push(I),S+=I.length}if(S>c){let D=0,I=0,G=S,E=e-v,N=c,we=()=>Bn(w,G,0,E,N),ie=()=>Bn(w,G,E+1,w.length,N,!0);b?({lineCount:G,removals:D}=we(),G>N&&(h||(N-=1),{lineCount:G,removals:I}=ie())):(h||(N-=1),{lineCount:G,removals:I}=ie(),G>N&&(N-=1,{lineCount:G,removals:D}=we())),D>0&&(b=!0,w.splice(0,D)),I>0&&(h=!0,w.splice(w.length-I,I))}let x=[];b&&x.push(d);for(let D of w)for(let I of D)x.push(I);return h&&x.push(d),x};function On(e){return e.label??String(e.value??"")}function Jm(e,t){if(!e)return!0;let o=(t.label??String(t.value??"")).toLowerCase(),i=(t.hint??"").toLowerCase(),r=String(t.value).toLowerCase(),n=e.toLowerCase();return o.includes(n)||i.includes(n)||r.includes(n)}function Vm(e,t){let o=[];for(let i of t)e.includes(i.value)&&o.push(i);return o}var jn=e=>new Fn({options:e.options,initialValue:e.initialValue?[e.initialValue]:void 0,initialUserInput:e.initialUserInput,placeholder:e.placeholder,filter:e.filter??((t,o)=>Jm(t,o)),signal:e.signal,input:e.input,output:e.output,validate:e.validate,render(){let t=e.withGuide??ge.withGuide,o=t?[`${(0,y.styleText)("gray",j)}`,`${Ut(this.state)} ${e.message}`]:[`${Ut(this.state)} ${e.message}`],i=this.userInput,r=this.options,n=e.placeholder,s=i===""&&n!==void 0,a=(l,d)=>{let c=On(l),m=l.hint&&l.value===this.focusedValue?(0,y.styleText)("dim",` (${l.hint})`):"";switch(d){case"active":return`${(0,y.styleText)("green",Io)} ${c}${m}`;case"inactive":return`${(0,y.styleText)("dim",Dt)} ${(0,y.styleText)("dim",c)}`;case"disabled":return`${(0,y.styleText)("gray",Dt)} ${(0,y.styleText)(["strikethrough","gray"],c)}`}};switch(this.state){case"submit":{let l=Vm(this.selectedValues,r),d=l.length>0?` ${(0,y.styleText)("dim",l.map(On).join(", "))}`:"",c=t?(0,y.styleText)("gray",j):"";return`${o.join(`
182
182
  `)}
183
183
  ${c}${d}`}case"cancel":{let l=i?` ${(0,y.styleText)(["strikethrough","dim"],i)}`:"",d=t?(0,y.styleText)("gray",j):"";return`${o.join(`
184
184
  `)}
185
- ${d}${l}`}default:{let l=this.state==="error"?"yellow":"cyan",d=t?`${(0,y.styleText)(l,j)} `:"",c=t?(0,y.styleText)(l,qe):"",m="";if(this.isNavigating||s){let v=s?n:i;m=v!==""?` ${(0,y.styleText)("dim",v)}`:""}else m=` ${this.userInputWithCursor}`;let f=this.filteredOptions.length!==r.length?(0,y.styleText)("dim",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"",b=this.filteredOptions.length===0&&i?[`${d}${(0,y.styleText)("yellow","No matches found")}`]:[],h=this.state==="error"?[`${d}${(0,y.styleText)("yellow",this.error)}`]:[];t&&o.push(`${d.trimEnd()}`),o.push(`${d}${(0,y.styleText)("dim","Search:")}${m}${f}`,...b,...h);let A=[`${(0,y.styleText)("dim","\u2191/\u2193")} to select`,`${(0,y.styleText)("dim","Enter:")} confirm`,`${(0,y.styleText)("dim","Type:")} to search`],w=[`${d}${A.join(" \u2022 ")}`,c],S=this.filteredOptions.length===0?[]:jo({cursor:this.cursor,options:this.filteredOptions,columnPadding:t?3:0,rowPadding:o.length+w.length,style:(v,K)=>a(v,v.disabled?"disabled":K?"active":"inactive"),maxItems:e.maxItems,output:e.output});return[...o,...S.map(v=>`${d}${v}`),...w].join(`
186
- `)}}}}).prompt();var ze=e=>{let t=e.active??"Yes",o=e.inactive??"No";return new _o({active:t,inactive:o,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let i=e.withGuide??ge.withGuide,r=`${Ut(this.state)} `,n=i?`${(0,y.styleText)("gray",j)} `:"",s=lt(e.output,e.message,n,r),a=`${i?`${(0,y.styleText)("gray",j)}
185
+ ${d}${l}`}default:{let l=this.state==="error"?"yellow":"cyan",d=t?`${(0,y.styleText)(l,j)} `:"",c=t?(0,y.styleText)(l,Le):"",m="";if(this.isNavigating||s){let v=s?n:i;m=v!==""?` ${(0,y.styleText)("dim",v)}`:""}else m=` ${this.userInputWithCursor}`;let f=this.filteredOptions.length!==r.length?(0,y.styleText)("dim",` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"",b=this.filteredOptions.length===0&&i?[`${d}${(0,y.styleText)("yellow","No matches found")}`]:[],h=this.state==="error"?[`${d}${(0,y.styleText)("yellow",this.error)}`]:[];t&&o.push(`${d.trimEnd()}`),o.push(`${d}${(0,y.styleText)("dim","Search:")}${m}${f}`,...b,...h);let A=[`${(0,y.styleText)("dim","\u2191/\u2193")} to select`,`${(0,y.styleText)("dim","Enter:")} confirm`,`${(0,y.styleText)("dim","Type:")} to search`],w=[`${d}${A.join(" \u2022 ")}`,c],S=this.filteredOptions.length===0?[]:jo({cursor:this.cursor,options:this.filteredOptions,columnPadding:t?3:0,rowPadding:o.length+w.length,style:(v,K)=>a(v,v.disabled?"disabled":K?"active":"inactive"),maxItems:e.maxItems,output:e.output});return[...o,...S.map(v=>`${d}${v}`),...w].join(`
186
+ `)}}}}).prompt();var Ye=e=>{let t=e.active??"Yes",o=e.inactive??"No";return new _o({active:t,inactive:o,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let i=e.withGuide??ge.withGuide,r=`${Ut(this.state)} `,n=i?`${(0,y.styleText)("gray",j)} `:"",s=lt(e.output,e.message,n,r),a=`${i?`${(0,y.styleText)("gray",j)}
187
187
  `:""}${s}
188
188
  `,l=this.value?t:o;switch(this.state){case"submit":{let d=i?`${(0,y.styleText)("gray",j)} `:"";return`${a}${d}${(0,y.styleText)("dim",l)}`}case"cancel":{let d=i?`${(0,y.styleText)("gray",j)} `:"";return`${a}${d}${(0,y.styleText)(["strikethrough","dim"],l)}${i?`
189
- ${(0,y.styleText)("gray",j)}`:""}`}default:{let d=i?`${(0,y.styleText)("cyan",j)} `:"",c=i?(0,y.styleText)("cyan",qe):"";return`${a}${d}${this.value?`${(0,y.styleText)("green",Io)} ${t}`:`${(0,y.styleText)("dim",Dt)} ${(0,y.styleText)("dim",t)}`}${e.vertical?i?`
189
+ ${(0,y.styleText)("gray",j)}`:""}`}default:{let d=i?`${(0,y.styleText)("cyan",j)} `:"",c=i?(0,y.styleText)("cyan",Le):"";return`${a}${d}${this.value?`${(0,y.styleText)("green",Io)} ${t}`:`${(0,y.styleText)("dim",Dt)} ${(0,y.styleText)("dim",t)}`}${e.vertical?i?`
190
190
  ${(0,y.styleText)("cyan",j)} `:`
191
191
  `:` ${(0,y.styleText)("dim","/")} `}${this.value?`${(0,y.styleText)("dim",Dt)} ${(0,y.styleText)("dim",o)}`:`${(0,y.styleText)("green",Io)} ${o}`}
192
192
  ${c}
193
193
  `}}}}).prompt()};var Pn=async(e,t)=>{let o={},i=Object.keys(e);for(let r of i){let n=e[r],s=await n({results:o})?.catch(a=>{throw a});if(typeof t?.onCancel=="function"&&k(s)){o[r]="canceled",t.onCancel({results:o});continue}o[r]=s}return o};var X={message:(e=[],{symbol:t=(0,y.styleText)("gray",j),secondarySymbol:o=(0,y.styleText)("gray",j),output:i=process.stdout,spacing:r=1,withGuide:n}={})=>{let s=[],a=n??ge.withGuide,l=a?o:"",d=a?`${t} `:"",c=a?`${o} `:"";for(let f=0;f<r;f++)s.push(l);let m=Array.isArray(e)?e:e.split(`
194
194
  `);if(m.length>0){let[f,...b]=m;f.length>0?s.push(`${d}${f}`):s.push(a?t:"");for(let h of b)h.length>0?s.push(`${c}${h}`):s.push(a?o:"")}i.write(`${s.join(`
195
195
  `)}
196
- `)},info:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("blue",Nm)})},success:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("green",Mm)})},step:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("green",Xi)})},warn:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("yellow",qm)})},warning:(e,t)=>{X.warn(e,t)},error:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("red",Lm)})}},$n=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",qe)} `:"";o.write(`${i}${(0,y.styleText)("red",e)}
196
+ `)},info:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("blue",Mm)})},success:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("green",qm)})},step:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("green",Xi)})},warn:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("yellow",Lm)})},warning:(e,t)=>{X.warn(e,t)},error:(e,t)=>{X.message(e,{...t,symbol:(0,y.styleText)("red",Wm)})}},$n=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",Le)} `:"";o.write(`${i}${(0,y.styleText)("red",e)}
197
197
 
198
- `)},Po=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",Im)} `:"";o.write(`${i}${e}
198
+ `)},Po=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",jm)} `:"";o.write(`${i}${e}
199
199
  `)},Et=(e="",t)=>{let o=t?.output??process.stdout,i=t?.withGuide??ge.withGuide?`${(0,y.styleText)("gray",j)}
200
- ${(0,y.styleText)("gray",qe)} `:"";o.write(`${i}${e}
200
+ ${(0,y.styleText)("gray",Le)} `:"";o.write(`${i}${e}
201
201
 
202
202
  `)};var io=(e,t)=>e.split(`
203
203
  `).map(o=>t(o)).join(`
204
- `),Gn=e=>{let t=(i,r)=>{let n=i.label??String(i.value);return r==="disabled"?`${(0,y.styleText)("gray",Dn)} ${io(n,s=>(0,y.styleText)(["strikethrough","gray"],s))}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint??"disabled"})`)}`:""}`:r==="active"?`${(0,y.styleText)("cyan",jm)} ${n}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="selected"?`${(0,y.styleText)("green",_n)} ${io(n,s=>(0,y.styleText)("dim",s))}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="cancelled"?`${io(n,s=>(0,y.styleText)(["strikethrough","dim"],s))}`:r==="active-selected"?`${(0,y.styleText)("green",_n)} ${n}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="submitted"?`${io(n,s=>(0,y.styleText)("dim",s))}`:`${(0,y.styleText)("dim",Dn)} ${io(n,s=>(0,y.styleText)("dim",s))}`},o=e.required??!0;return new Rn({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:o,cursorAt:e.cursorAt,validate(i){if(o&&(i===void 0||i.length===0))return`Please select at least one option.
204
+ `),Gn=e=>{let t=(i,r)=>{let n=i.label??String(i.value);return r==="disabled"?`${(0,y.styleText)("gray",Dn)} ${io(n,s=>(0,y.styleText)(["strikethrough","gray"],s))}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint??"disabled"})`)}`:""}`:r==="active"?`${(0,y.styleText)("cyan",Pm)} ${n}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="selected"?`${(0,y.styleText)("green",_n)} ${io(n,s=>(0,y.styleText)("dim",s))}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="cancelled"?`${io(n,s=>(0,y.styleText)(["strikethrough","dim"],s))}`:r==="active-selected"?`${(0,y.styleText)("green",_n)} ${n}${i.hint?` ${(0,y.styleText)("dim",`(${i.hint})`)}`:""}`:r==="submitted"?`${io(n,s=>(0,y.styleText)("dim",s))}`:`${(0,y.styleText)("dim",Dn)} ${io(n,s=>(0,y.styleText)("dim",s))}`},o=e.required??!0;return new Rn({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:o,cursorAt:e.cursorAt,validate(i){if(o&&(i===void 0||i.length===0))return`Please select at least one option.
205
205
  ${(0,y.styleText)("reset",(0,y.styleText)("dim",`Press ${(0,y.styleText)(["gray","bgWhite","inverse"]," space ")} to select, ${(0,y.styleText)("gray",(0,y.styleText)("bgWhite",(0,y.styleText)("inverse"," enter ")))} to submit`))}`},render(){let i=e.withGuide??ge.withGuide,r=lt(e.output,e.message,i?`${In(this.state)} `:"",`${Ut(this.state)} `),n=`${i?`${(0,y.styleText)("gray",j)}
206
206
  `:""}${r}
207
207
  `,s=this.value??[],a=(l,d)=>{if(l.disabled)return t(l,"disabled");let c=s.includes(l.value);return d&&c?t(l,"active-selected"):c?t(l,"selected"):t(l,d?"active":"inactive")};switch(this.state){case"submit":{let l=this.options.filter(({value:c})=>s.includes(c)).map(c=>t(c,"submitted")).join((0,y.styleText)("dim",", "))||(0,y.styleText)("dim","none"),d=lt(e.output,l,i?`${(0,y.styleText)("gray",j)} `:"");return`${n}${d}`}case"cancel":{let l=this.options.filter(({value:c})=>s.includes(c)).map(c=>t(c,"cancelled")).join((0,y.styleText)("dim",", "));if(l.trim()==="")return`${n}${(0,y.styleText)("gray",j)}`;let d=lt(e.output,l,i?`${(0,y.styleText)("gray",j)} `:"");return`${n}${d}${i?`
208
208
  ${(0,y.styleText)("gray",j)}`:""}`}case"error":{let l=i?`${(0,y.styleText)("yellow",j)} `:"",d=this.error.split(`
209
- `).map((f,b)=>b===0?`${i?`${(0,y.styleText)("yellow",qe)} `:""}${(0,y.styleText)("yellow",f)}`:` ${f}`).join(`
209
+ `).map((f,b)=>b===0?`${i?`${(0,y.styleText)("yellow",Le)} `:""}${(0,y.styleText)("yellow",f)}`:` ${f}`).join(`
210
210
  `),c=n.split(`
211
211
  `).length,m=d.split(`
212
212
  `).length+1;return`${n}${l}${jo({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:c+m,style:a}).join(`
@@ -215,47 +215,47 @@ ${d}
215
215
  `}default:{let l=i?`${(0,y.styleText)("cyan",j)} `:"",d=n.split(`
216
216
  `).length,c=i?2:1;return`${n}${l}${jo({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:l.length,rowPadding:d+c,style:a}).join(`
217
217
  ${l}`)}
218
- ${i?(0,y.styleText)("cyan",qe):""}
219
- `}}}}).prompt()},Vm=e=>(0,y.styleText)("dim",e),zm=(e,t,o)=>{let i={hard:!0,trim:!1},r=at(e,t,i).split(`
220
- `),n=r.reduce((l,d)=>Math.max(Ue(d),l),0),s=r.map(o).reduce((l,d)=>Math.max(Ue(d),l),0),a=t-(s-n);return at(e,a,i)},Hn=(e="",t="",o)=>{let i=o?.output??Te.default.stdout,r=o?.withGuide??ge.withGuide,n=o?.format??Vm,s=["",...zm(e,Oo(i)-6,n).split(`
218
+ ${i?(0,y.styleText)("cyan",Le):""}
219
+ `}}}}).prompt()},zm=e=>(0,y.styleText)("dim",e),Ym=(e,t,o)=>{let i={hard:!0,trim:!1},r=at(e,t,i).split(`
220
+ `),n=r.reduce((l,d)=>Math.max(Ue(d),l),0),s=r.map(o).reduce((l,d)=>Math.max(Ue(d),l),0),a=t-(s-n);return at(e,a,i)},Hn=(e="",t="",o)=>{let i=o?.output??Te.default.stdout,r=o?.withGuide??ge.withGuide,n=o?.format??zm,s=["",...Ym(e,Oo(i)-6,n).split(`
221
221
  `).map(n),""],a=Ue(t),l=Math.max(s.reduce((f,b)=>{let h=Ue(b);return h>f?h:f},0),a)+2,d=s.map(f=>`${(0,y.styleText)("gray",j)} ${f}${" ".repeat(l-Ue(f))}${(0,y.styleText)("gray",j)}`).join(`
222
222
  `),c=r?`${(0,y.styleText)("gray",j)}
223
- `:"",m=r?Gm:Qm;i.write(`${c}${(0,y.styleText)("green",Xi)} ${(0,y.styleText)("reset",t)} ${(0,y.styleText)("gray",En.repeat(Math.max(l-a-1,1))+$m)}
223
+ `:"",m=r?Hm:Nm;i.write(`${c}${(0,y.styleText)("green",Xi)} ${(0,y.styleText)("reset",t)} ${(0,y.styleText)("gray",En.repeat(Math.max(l-a-1,1))+Gm)}
224
224
  ${d}
225
- ${(0,y.styleText)("gray",m+En.repeat(l+2)+Hm)}
226
- `)},Qn=e=>new Do({validate:e.validate,mask:e.mask??Pm,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??ge.withGuide,o=`${t?`${(0,y.styleText)("gray",j)}
225
+ ${(0,y.styleText)("gray",m+En.repeat(l+2)+Qm)}
226
+ `)},Qn=e=>new Do({validate:e.validate,mask:e.mask??$m,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??ge.withGuide,o=`${t?`${(0,y.styleText)("gray",j)}
227
227
  `:""}${Ut(this.state)} ${e.message}
228
- `,i=this.userInputWithCursor,r=this.masked;switch(this.state){case"error":{let n=t?`${(0,y.styleText)("yellow",j)} `:"",s=t?`${(0,y.styleText)("yellow",qe)} `:"",a=r??"";return e.clearOnError&&this.clear(),`${o.trim()}
228
+ `,i=this.userInputWithCursor,r=this.masked;switch(this.state){case"error":{let n=t?`${(0,y.styleText)("yellow",j)} `:"",s=t?`${(0,y.styleText)("yellow",Le)} `:"",a=r??"";return e.clearOnError&&this.clear(),`${o.trim()}
229
229
  ${n}${a}
230
230
  ${s}${(0,y.styleText)("yellow",this.error)}
231
231
  `}case"submit":{let n=t?`${(0,y.styleText)("gray",j)} `:"",s=r?(0,y.styleText)("dim",r):"";return`${o}${n}${s}`}case"cancel":{let n=t?`${(0,y.styleText)("gray",j)} `:"",s=r?(0,y.styleText)(["strikethrough","dim"],r):"";return`${o}${n}${s}${r&&t?`
232
- ${(0,y.styleText)("gray",j)}`:""}`}default:{let n=t?`${(0,y.styleText)("cyan",j)} `:"",s=t?(0,y.styleText)("cyan",qe):"";return`${o}${n}${i}
232
+ ${(0,y.styleText)("gray",j)}`:""}`}default:{let n=t?`${(0,y.styleText)("cyan",j)} `:"",s=t?(0,y.styleText)("cyan",Le):"";return`${o}${n}${i}
233
233
  ${s}
234
- `}}}}).prompt();var Ph={light:Z("\u2500","-"),heavy:Z("\u2501","="),block:Z("\u2588","#")};var To=(e,t)=>e.includes(`
234
+ `}}}}).prompt();var $h={light:Z("\u2500","-"),heavy:Z("\u2501","="),block:Z("\u2588","#")};var To=(e,t)=>e.includes(`
235
235
  `)?e.split(`
236
236
  `).map(o=>t(o)).join(`
237
237
  `):t(e),re=e=>{let t=(o,i)=>{let r=o.label??String(o.value);switch(i){case"disabled":return`${(0,y.styleText)("gray",Dt)} ${To(r,n=>(0,y.styleText)("gray",n))}${o.hint?` ${(0,y.styleText)("dim",`(${o.hint??"disabled"})`)}`:""}`;case"selected":return`${To(r,n=>(0,y.styleText)("dim",n))}`;case"active":return`${(0,y.styleText)("green",Io)} ${r}${o.hint?` ${(0,y.styleText)("dim",`(${o.hint})`)}`:""}`;case"cancelled":return`${To(r,n=>(0,y.styleText)(["strikethrough","dim"],n))}`;default:return`${(0,y.styleText)("dim",Dt)} ${To(r,n=>(0,y.styleText)("dim",n))}`}};return new Eo({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let o=e.withGuide??ge.withGuide,i=`${Ut(this.state)} `,r=`${In(this.state)} `,n=lt(e.output,e.message,r,i),s=`${o?`${(0,y.styleText)("gray",j)}
238
238
  `:""}${n}
239
239
  `;switch(this.state){case"submit":{let a=o?`${(0,y.styleText)("gray",j)} `:"",l=lt(e.output,t(this.options[this.cursor],"selected"),a);return`${s}${l}`}case"cancel":{let a=o?`${(0,y.styleText)("gray",j)} `:"",l=lt(e.output,t(this.options[this.cursor],"cancelled"),a);return`${s}${l}${o?`
240
- ${(0,y.styleText)("gray",j)}`:""}`}default:{let a=o?`${(0,y.styleText)("cyan",j)} `:"",l=o?(0,y.styleText)("cyan",qe):"",d=s.split(`
240
+ ${(0,y.styleText)("gray",j)}`:""}`}default:{let a=o?`${(0,y.styleText)("cyan",j)} `:"",l=o?(0,y.styleText)("cyan",Le):"",d=s.split(`
241
241
  `).length,c=o?2:1;return`${s}${a}${jo({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:d+c,style:(m,f)=>t(m,m.disabled?"disabled":f?"active":"inactive")}).join(`
242
242
  ${a}`)}
243
243
  ${l}
244
- `}}}}).prompt()};var $h=`${(0,y.styleText)("gray",j)} `;var z=e=>new Bo({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??ge.withGuide,o=`${`${t?`${(0,y.styleText)("gray",j)}
244
+ `}}}}).prompt()};var Gh=`${(0,y.styleText)("gray",j)} `;var z=e=>new Bo({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??ge.withGuide,o=`${`${t?`${(0,y.styleText)("gray",j)}
245
245
  `:""}${Ut(this.state)} `}${e.message}
246
- `,i=e.placeholder?(0,y.styleText)("inverse",e.placeholder[0])+(0,y.styleText)("dim",e.placeholder.slice(1)):(0,y.styleText)(["inverse","hidden"],"_"),r=this.userInput?this.userInputWithCursor:i,n=this.value??"";switch(this.state){case"error":{let s=this.error?` ${(0,y.styleText)("yellow",this.error)}`:"",a=t?`${(0,y.styleText)("yellow",j)} `:"",l=t?(0,y.styleText)("yellow",qe):"";return`${o.trim()}
246
+ `,i=e.placeholder?(0,y.styleText)("inverse",e.placeholder[0])+(0,y.styleText)("dim",e.placeholder.slice(1)):(0,y.styleText)(["inverse","hidden"],"_"),r=this.userInput?this.userInputWithCursor:i,n=this.value??"";switch(this.state){case"error":{let s=this.error?` ${(0,y.styleText)("yellow",this.error)}`:"",a=t?`${(0,y.styleText)("yellow",j)} `:"",l=t?(0,y.styleText)("yellow",Le):"";return`${o.trim()}
247
247
  ${a}${r}
248
248
  ${l}${s}
249
249
  `}case"submit":{let s=n?` ${(0,y.styleText)("dim",n)}`:"",a=t?(0,y.styleText)("gray",j):"";return`${o}${a}${s}`}case"cancel":{let s=n?` ${(0,y.styleText)(["strikethrough","dim"],n)}`:"",a=t?(0,y.styleText)("gray",j):"";return`${o}${a}${s}${n.trim()?`
250
- ${a}`:""}`}default:{let s=t?`${(0,y.styleText)("cyan",j)} `:"",a=t?(0,y.styleText)("cyan",qe):"";return`${o}${s}${r}
250
+ ${a}`:""}`}default:{let s=t?`${(0,y.styleText)("cyan",j)} `:"",a=t?(0,y.styleText)("cyan",Le):"";return`${o}${s}${r}
251
251
  ${a}
252
- `}}}}).prompt();var ho=ue(Ve(),1);St();process.env.RESEND_USER_AGENT=`resend-cli:${ne}`;var ct=new TextEncoder,qn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ro=new Uint8Array(256);for(let e=0;e<qn.length;e++)ro[qn.charCodeAt(e)]=e;function $o(e){let t=Math.ceil(e.length/4)*3,o=e.length,i=0;e.length%4===3?t--:e.length%4===2?t-=2:e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);let r=new ArrayBuffer(t),n=new Uint8Array(r);for(let s=0;s<o;s+=4){let a=ro[e.charCodeAt(s)],l=ro[e.charCodeAt(s+1)],d=ro[e.charCodeAt(s+2)],c=ro[e.charCodeAt(s+3)];n[i++]=a<<2|l>>4,n[i++]=(l&15)<<4|d>>2,n[i++]=(d&3)<<6|c&63}return r}var Xm=new Map([["iso-8859-8-i","iso-8859-8"],["iso-8859-8-e","iso-8859-8"]]);function Bt(e){e=(e||"utf8").trim().toLowerCase(),e=Xm.get(e)||e;let t;try{t=new TextDecoder(e)}catch{t=new TextDecoder("windows-1252")}return t}async function dt(e){if("arrayBuffer"in e)return await e.arrayBuffer();let t=new FileReader;return new Promise((o,i)=>{t.onload=function(r){o(r.target.result)},t.onerror=function(r){i(t.error)},t.readAsArrayBuffer(e)})}function Ln(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70?String.fromCharCode(e):!1}function Zm(e,t,o){let i=e.indexOf("*");i>=0&&(e=e.substr(0,i)),t=t.toUpperCase();let r;if(t==="Q"){o=o.replace(/=\s+([0-9a-fA-F])/g,"=$1").replace(/[_\s]/g," ");let n=ct.encode(o),s=[];for(let l=0,d=n.length;l<d;l++){let c=n[l];if(l<=d-2&&c===61){let m=Ln(n[l+1]),f=Ln(n[l+2]);if(m&&f){let b=parseInt(m+f,16);s.push(b),l+=2;continue}}s.push(c)}r=new ArrayBuffer(s.length);let a=new DataView(r);for(let l=0,d=s.length;l<d;l++)a.setUint8(l,s[l])}else t==="B"?r=$o(o.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):r=ct.encode(o);return Bt(e).decode(r)}function vt(e){let t=!0,o=!1;for(;!o;){let i=(e||"").toString().replace(/(=\?([^?]+)\?[Bb]\?([^?]*)\?=)\s*(?==\?([^?]+)\?[Bb]\?[^?]*\?=)/g,(r,n,s,a,l)=>t&&s===l&&a.length%4===0&&!/=$/.test(a)?n+"__\0JOIN\0__":r).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g,(r,n,s,a)=>t&&s===a?n+"__\0JOIN\0__":r).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g,"").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g,"$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g,(r,n,s,a)=>Zm(n,s,a));if(t&&i.indexOf("\uFFFD")>=0)t=!1;else return i}}function ep(e,t){t=t||"utf-8";let o=[];for(let n=0;n<e.length;n++){let s=e.charAt(n);if(s==="%"&&/^[a-f0-9]{2}/i.test(e.substr(n+1,2))){let a=e.substr(n+1,2);n+=2,o.push(parseInt(a,16))}else if(s.charCodeAt(0)>126){s=ct.encode(s);for(let a=0;a<s.length;a++)o.push(s[a])}else o.push(s.charCodeAt(0))}let i=new ArrayBuffer(o.length),r=new DataView(i);for(let n=0,s=o.length;n<s;n++)r.setUint8(n,o[n]);return Bt(t).decode(i)}function Wn(e){let t=new Map;Object.keys(e.params).forEach(o=>{let i=o.match(/\*((\d+)\*?)?$/);if(!i)return;let r=o.substr(0,i.index).toLowerCase(),n=Number(i[2])||0,s;t.has(r)?s=t.get(r):(s={charset:!1,values:[]},t.set(r,s));let a=e.params[o];n===0&&i[0].charAt(i[0].length-1)==="*"&&(i=a.match(/^([^']*)'[^']*'(.*)$/))&&(s.charset=i[1]||"utf-8",a=i[2]),s.values.push({nr:n,value:a}),delete e.params[o]}),t.forEach((o,i)=>{e.params[i]=ep(o.values.sort((r,n)=>r.nr-n.nr).map(r=>r.value).join(""),o.charset)})}var no=class{constructor(){this.chunks=[]}update(t){this.chunks.push(t),this.chunks.push(`
253
- `)}finalize(){return dt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var so=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.chunks=[],this.remainder=""}update(t){let o=this.decoder.decode(t);if(o=o.replace(/[^a-zA-Z0-9+\/]+/g,""),this.remainder+=o,this.remainder.length>=this.maxChunkSize){let i=Math.floor(this.remainder.length/4)*4,r;i===this.remainder.length?(r=this.remainder,this.remainder=""):(r=this.remainder.substr(0,i),this.remainder=this.remainder.substr(i)),r.length&&this.chunks.push($o(r))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push($o(this.remainder)),dt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Jn=/^=[a-f0-9]{2}$/i,tp=/(?==[a-f0-9]{2})/i,op=/=\r?\n/g,ip=/=[a-fA-F0-9]?$/,ao=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.remainder="",this.chunks=[]}decodeQPBytes(t){let o=new ArrayBuffer(t.length),i=new DataView(o);for(let r=0,n=t.length;r<n;r++)i.setUint8(r,parseInt(t[r],16));return o}decodeChunks(t){t=t.replace(op,"");let o=t.split(tp),i=[];for(let r of o){if(r.charAt(0)!=="="){i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r);continue}if(r.length===3){Jn.test(r)?i.push(r.substr(1)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r));continue}if(r.length>3){let n=r.substr(0,3);Jn.test(n)?(i.push(r.substr(1,2)),this.chunks.push(this.decodeQPBytes(i)),i=[],r=r.substr(3),this.chunks.push(r)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r))}}i.length&&this.chunks.push(this.decodeQPBytes(i))}update(t){let o=this.decoder.decode(t)+`
254
- `;if(o=this.remainder+o,o.length<this.maxChunkSize){this.remainder=o;return}this.remainder="";let i=o.match(ip);if(i){if(i.index===0){this.remainder=o;return}this.remainder=o.substr(i.index),o=o.substr(0,i.index)}this.decodeChunks(o)}finalize(){return this.remainder.length&&(this.decodeChunks(this.remainder),this.remainder=""),dt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var rp=Bt(),Ot=class{constructor(t){if(this.options=t||{},this.postalMime=this.options.postalMime,this.root=!!this.options.parentNode,this.childNodes=[],this.options.parentNode){if(this.parentNode=this.options.parentNode,this.depth=this.parentNode.depth+1,this.depth>this.options.maxNestingDepth)throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);this.options.parentNode.childNodes.push(this)}else this.depth=0;this.state="header",this.headerLines=[],this.headerSize=0;let i=(this.options.parentMultipartType||null)==="digest"?"message/rfc822":"text/plain";this.contentType={value:i,default:!0},this.contentTransferEncoding={value:"8bit"},this.contentDisposition={value:""},this.headers=[],this.contentDecoder=!1}setupContentDecoder(t){/base64/i.test(t)?this.contentDecoder=new so:/quoted-printable/i.test(t)?this.contentDecoder=new ao({decoder:Bt(this.contentType.parsed.params.charset)}):this.contentDecoder=new no}async finalize(){if(this.state==="finished")return;this.state==="header"&&this.processHeaders();let t=this.postalMime.boundaries;for(let o=t.length-1;o>=0;o--)if(t[o].node===this){t.splice(o,1);break}await this.finalizeChildNodes(),this.content=this.contentDecoder?await this.contentDecoder.finalize():null,this.state="finished"}async finalizeChildNodes(){for(let t of this.childNodes)await t.finalize()}stripComments(t){let o="",i=0,r=!1,n=!1;for(let s=0;s<t.length;s++){let a=t.charAt(s);if(r){i===0&&(o+=a),r=!1;continue}if(a==="\\"){r=!0,i===0&&(o+=a);continue}if(a==='"'&&i===0){n=!n,o+=a;continue}if(!n){if(a==="("){i++;continue}if(a===")"&&i>0){i--;continue}}i===0&&(o+=a)}return o}parseStructuredHeader(t){t=this.stripComments(t);let o={value:!1,params:{}},i=!1,r="",n="value",s=!1,a=!1,l;for(let d=0,c=t.length;d<c;d++)switch(l=t.charAt(d),n){case"key":if(l==="="){i=r.trim().toLowerCase(),n="value",r="";break}r+=l;break;case"value":if(a)r+=l;else if(l==="\\"){a=!0;continue}else s&&l===s?s=!1:!s&&l==='"'?s=l:!s&&l===";"?(i===!1?o.value=r.trim():o.params[i]=r.trim(),n="key",r=""):r+=l;a=!1;break}return r=r.trim(),n==="value"?i===!1?o.value=r:o.params[i]=r:r&&(o.params[r.toLowerCase()]=""),o.value&&(o.value=o.value.toLowerCase()),Wn(o),o}decodeFlowedText(t,o){return t.split(/\r?\n/).reduce((i,r)=>i.endsWith(" ")&&i!=="-- "&&!i.endsWith(`
252
+ `}}}}).prompt();var ho=ue(ze(),1);St();process.env.RESEND_USER_AGENT=`resend-cli:${ne}`;var ct=new TextEncoder,qn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ro=new Uint8Array(256);for(let e=0;e<qn.length;e++)ro[qn.charCodeAt(e)]=e;function $o(e){let t=Math.ceil(e.length/4)*3,o=e.length,i=0;e.length%4===3?t--:e.length%4===2?t-=2:e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);let r=new ArrayBuffer(t),n=new Uint8Array(r);for(let s=0;s<o;s+=4){let a=ro[e.charCodeAt(s)],l=ro[e.charCodeAt(s+1)],d=ro[e.charCodeAt(s+2)],c=ro[e.charCodeAt(s+3)];n[i++]=a<<2|l>>4,n[i++]=(l&15)<<4|d>>2,n[i++]=(d&3)<<6|c&63}return r}var Zm=new Map([["iso-8859-8-i","iso-8859-8"],["iso-8859-8-e","iso-8859-8"]]);function Bt(e){e=(e||"utf8").trim().toLowerCase(),e=Zm.get(e)||e;let t;try{t=new TextDecoder(e)}catch{t=new TextDecoder("windows-1252")}return t}async function dt(e){if("arrayBuffer"in e)return await e.arrayBuffer();let t=new FileReader;return new Promise((o,i)=>{t.onload=function(r){o(r.target.result)},t.onerror=function(r){i(t.error)},t.readAsArrayBuffer(e)})}function Ln(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70?String.fromCharCode(e):!1}function ep(e,t,o){let i=e.indexOf("*");i>=0&&(e=e.substr(0,i)),t=t.toUpperCase();let r;if(t==="Q"){o=o.replace(/=\s+([0-9a-fA-F])/g,"=$1").replace(/[_\s]/g," ");let n=ct.encode(o),s=[];for(let l=0,d=n.length;l<d;l++){let c=n[l];if(l<=d-2&&c===61){let m=Ln(n[l+1]),f=Ln(n[l+2]);if(m&&f){let b=parseInt(m+f,16);s.push(b),l+=2;continue}}s.push(c)}r=new ArrayBuffer(s.length);let a=new DataView(r);for(let l=0,d=s.length;l<d;l++)a.setUint8(l,s[l])}else t==="B"?r=$o(o.replace(/[^a-zA-Z0-9\+\/=]+/g,"")):r=ct.encode(o);return Bt(e).decode(r)}function vt(e){let t=!0,o=!1;for(;!o;){let i=(e||"").toString().replace(/(=\?([^?]+)\?[Bb]\?([^?]*)\?=)\s*(?==\?([^?]+)\?[Bb]\?[^?]*\?=)/g,(r,n,s,a,l)=>t&&s===l&&a.length%4===0&&!/=$/.test(a)?n+"__\0JOIN\0__":r).replace(/(=\?([^?]+)\?[Qq]\?[^?]*\?=)\s*(?==\?([^?]+)\?[Qq]\?[^?]*\?=)/g,(r,n,s,a)=>t&&s===a?n+"__\0JOIN\0__":r).replace(/(\?=)?__\x00JOIN\x00__(=\?([^?]+)\?[QqBb]\?)?/g,"").replace(/(=\?[^?]+\?[QqBb]\?[^?]*\?=)\s+(?==\?[^?]+\?[QqBb]\?[^?]*\?=)/g,"$1").replace(/=\?([\w_\-*]+)\?([QqBb])\?([^?]*)\?=/g,(r,n,s,a)=>ep(n,s,a));if(t&&i.indexOf("\uFFFD")>=0)t=!1;else return i}}function tp(e,t){t=t||"utf-8";let o=[];for(let n=0;n<e.length;n++){let s=e.charAt(n);if(s==="%"&&/^[a-f0-9]{2}/i.test(e.substr(n+1,2))){let a=e.substr(n+1,2);n+=2,o.push(parseInt(a,16))}else if(s.charCodeAt(0)>126){s=ct.encode(s);for(let a=0;a<s.length;a++)o.push(s[a])}else o.push(s.charCodeAt(0))}let i=new ArrayBuffer(o.length),r=new DataView(i);for(let n=0,s=o.length;n<s;n++)r.setUint8(n,o[n]);return Bt(t).decode(i)}function Wn(e){let t=new Map;Object.keys(e.params).forEach(o=>{let i=o.match(/\*((\d+)\*?)?$/);if(!i)return;let r=o.substr(0,i.index).toLowerCase(),n=Number(i[2])||0,s;t.has(r)?s=t.get(r):(s={charset:!1,values:[]},t.set(r,s));let a=e.params[o];n===0&&i[0].charAt(i[0].length-1)==="*"&&(i=a.match(/^([^']*)'[^']*'(.*)$/))&&(s.charset=i[1]||"utf-8",a=i[2]),s.values.push({nr:n,value:a}),delete e.params[o]}),t.forEach((o,i)=>{e.params[i]=tp(o.values.sort((r,n)=>r.nr-n.nr).map(r=>r.value).join(""),o.charset)})}var no=class{constructor(){this.chunks=[]}update(t){this.chunks.push(t),this.chunks.push(`
253
+ `)}finalize(){return dt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var so=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.chunks=[],this.remainder=""}update(t){let o=this.decoder.decode(t);if(o=o.replace(/[^a-zA-Z0-9+\/]+/g,""),this.remainder+=o,this.remainder.length>=this.maxChunkSize){let i=Math.floor(this.remainder.length/4)*4,r;i===this.remainder.length?(r=this.remainder,this.remainder=""):(r=this.remainder.substr(0,i),this.remainder=this.remainder.substr(i)),r.length&&this.chunks.push($o(r))}}finalize(){return this.remainder&&!/^=+$/.test(this.remainder)&&this.chunks.push($o(this.remainder)),dt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var Jn=/^=[a-f0-9]{2}$/i,op=/(?==[a-f0-9]{2})/i,ip=/=\r?\n/g,rp=/=[a-fA-F0-9]?$/,ao=class{constructor(t){t=t||{},this.decoder=t.decoder||new TextDecoder,this.maxChunkSize=100*1024,this.remainder="",this.chunks=[]}decodeQPBytes(t){let o=new ArrayBuffer(t.length),i=new DataView(o);for(let r=0,n=t.length;r<n;r++)i.setUint8(r,parseInt(t[r],16));return o}decodeChunks(t){t=t.replace(ip,"");let o=t.split(op),i=[];for(let r of o){if(r.charAt(0)!=="="){i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r);continue}if(r.length===3){Jn.test(r)?i.push(r.substr(1)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r));continue}if(r.length>3){let n=r.substr(0,3);Jn.test(n)?(i.push(r.substr(1,2)),this.chunks.push(this.decodeQPBytes(i)),i=[],r=r.substr(3),this.chunks.push(r)):(i.length&&(this.chunks.push(this.decodeQPBytes(i)),i=[]),this.chunks.push(r))}}i.length&&this.chunks.push(this.decodeQPBytes(i))}update(t){let o=this.decoder.decode(t)+`
254
+ `;if(o=this.remainder+o,o.length<this.maxChunkSize){this.remainder=o;return}this.remainder="";let i=o.match(rp);if(i){if(i.index===0){this.remainder=o;return}this.remainder=o.substr(i.index),o=o.substr(0,i.index)}this.decodeChunks(o)}finalize(){return this.remainder.length&&(this.decodeChunks(this.remainder),this.remainder=""),dt(new Blob(this.chunks,{type:"application/octet-stream"}))}};var np=Bt(),Ot=class{constructor(t){if(this.options=t||{},this.postalMime=this.options.postalMime,this.root=!!this.options.parentNode,this.childNodes=[],this.options.parentNode){if(this.parentNode=this.options.parentNode,this.depth=this.parentNode.depth+1,this.depth>this.options.maxNestingDepth)throw new Error(`Maximum MIME nesting depth of ${this.options.maxNestingDepth} levels exceeded`);this.options.parentNode.childNodes.push(this)}else this.depth=0;this.state="header",this.headerLines=[],this.headerSize=0;let i=(this.options.parentMultipartType||null)==="digest"?"message/rfc822":"text/plain";this.contentType={value:i,default:!0},this.contentTransferEncoding={value:"8bit"},this.contentDisposition={value:""},this.headers=[],this.contentDecoder=!1}setupContentDecoder(t){/base64/i.test(t)?this.contentDecoder=new so:/quoted-printable/i.test(t)?this.contentDecoder=new ao({decoder:Bt(this.contentType.parsed.params.charset)}):this.contentDecoder=new no}async finalize(){if(this.state==="finished")return;this.state==="header"&&this.processHeaders();let t=this.postalMime.boundaries;for(let o=t.length-1;o>=0;o--)if(t[o].node===this){t.splice(o,1);break}await this.finalizeChildNodes(),this.content=this.contentDecoder?await this.contentDecoder.finalize():null,this.state="finished"}async finalizeChildNodes(){for(let t of this.childNodes)await t.finalize()}stripComments(t){let o="",i=0,r=!1,n=!1;for(let s=0;s<t.length;s++){let a=t.charAt(s);if(r){i===0&&(o+=a),r=!1;continue}if(a==="\\"){r=!0,i===0&&(o+=a);continue}if(a==='"'&&i===0){n=!n,o+=a;continue}if(!n){if(a==="("){i++;continue}if(a===")"&&i>0){i--;continue}}i===0&&(o+=a)}return o}parseStructuredHeader(t){t=this.stripComments(t);let o={value:!1,params:{}},i=!1,r="",n="value",s=!1,a=!1,l;for(let d=0,c=t.length;d<c;d++)switch(l=t.charAt(d),n){case"key":if(l==="="){i=r.trim().toLowerCase(),n="value",r="";break}r+=l;break;case"value":if(a)r+=l;else if(l==="\\"){a=!0;continue}else s&&l===s?s=!1:!s&&l==='"'?s=l:!s&&l===";"?(i===!1?o.value=r.trim():o.params[i]=r.trim(),n="key",r=""):r+=l;a=!1;break}return r=r.trim(),n==="value"?i===!1?o.value=r:o.params[i]=r:r&&(o.params[r.toLowerCase()]=""),o.value&&(o.value=o.value.toLowerCase()),Wn(o),o}decodeFlowedText(t,o){return t.split(/\r?\n/).reduce((i,r)=>i.endsWith(" ")&&i!=="-- "&&!i.endsWith(`
255
255
  -- `)?o?i.slice(0,-1)+r:i+r:i+`
256
256
  `+r).replace(/^ /gm,"")}getTextContent(){if(!this.content)return"";let t=Bt(this.contentType.parsed.params.charset).decode(this.content);return/^flowed$/i.test(this.contentType.parsed.params.format)&&(t=this.decodeFlowedText(t,/^yes$/i.test(this.contentType.parsed.params.delsp))),t}processHeaders(){for(let t=this.headerLines.length-1;t>=0;t--){let o=this.headerLines[t];t&&/^\s/.test(o)&&(this.headerLines[t-1]+=`
257
- `+o,this.headerLines.splice(t,1))}this.rawHeaderLines=[];for(let t=this.headerLines.length-1;t>=0;t--){let o=this.headerLines[t],i=o.indexOf(":"),r=i<0?o.trim():o.substr(0,i).trim();this.rawHeaderLines.push({key:r.toLowerCase(),line:o});let n=o.replace(/\s+/g," ");i=n.indexOf(":");let s=i<0?n.trim():n.substr(0,i).trim(),a=i<0?"":n.substr(i+1).trim();switch(this.headers.push({key:s.toLowerCase(),originalKey:s,value:a}),s.toLowerCase()){case"content-type":this.contentType.default&&(this.contentType={value:a,parsed:{}});break;case"content-transfer-encoding":this.contentTransferEncoding={value:a,parsed:{}};break;case"content-disposition":this.contentDisposition={value:a,parsed:{}};break;case"content-id":this.contentId=a;break;case"content-description":this.contentDescription=a;break}}this.contentType.parsed=this.parseStructuredHeader(this.contentType.value),this.contentType.multipart=/^multipart\//i.test(this.contentType.parsed.value)?this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/")+1):!1,this.contentType.multipart&&this.contentType.parsed.params.boundary&&this.postalMime.boundaries.push({value:ct.encode(this.contentType.parsed.params.boundary),node:this}),this.contentDisposition.parsed=this.parseStructuredHeader(this.contentDisposition.value),this.contentTransferEncoding.encoding=this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(),this.setupContentDecoder(this.contentTransferEncoding.encoding)}feed(t){switch(this.state){case"header":if(!t.length)return this.state="body",this.processHeaders();if(this.headerSize+=t.length,this.headerSize>this.options.maxHeadersSize)throw new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);this.headerLines.push(rp.decode(t));break;case"body":this.contentDecoder.update(t)}}};var np={"&AElig":"\xC6","&AElig;":"\xC6","&AMP":"&","&AMP;":"&","&Aacute":"\xC1","&Aacute;":"\xC1","&Abreve;":"\u0102","&Acirc":"\xC2","&Acirc;":"\xC2","&Acy;":"\u0410","&Afr;":"\u{1D504}","&Agrave":"\xC0","&Agrave;":"\xC0","&Alpha;":"\u0391","&Amacr;":"\u0100","&And;":"\u2A53","&Aogon;":"\u0104","&Aopf;":"\u{1D538}","&ApplyFunction;":"\u2061","&Aring":"\xC5","&Aring;":"\xC5","&Ascr;":"\u{1D49C}","&Assign;":"\u2254","&Atilde":"\xC3","&Atilde;":"\xC3","&Auml":"\xC4","&Auml;":"\xC4","&Backslash;":"\u2216","&Barv;":"\u2AE7","&Barwed;":"\u2306","&Bcy;":"\u0411","&Because;":"\u2235","&Bernoullis;":"\u212C","&Beta;":"\u0392","&Bfr;":"\u{1D505}","&Bopf;":"\u{1D539}","&Breve;":"\u02D8","&Bscr;":"\u212C","&Bumpeq;":"\u224E","&CHcy;":"\u0427","&COPY":"\xA9","&COPY;":"\xA9","&Cacute;":"\u0106","&Cap;":"\u22D2","&CapitalDifferentialD;":"\u2145","&Cayleys;":"\u212D","&Ccaron;":"\u010C","&Ccedil":"\xC7","&Ccedil;":"\xC7","&Ccirc;":"\u0108","&Cconint;":"\u2230","&Cdot;":"\u010A","&Cedilla;":"\xB8","&CenterDot;":"\xB7","&Cfr;":"\u212D","&Chi;":"\u03A7","&CircleDot;":"\u2299","&CircleMinus;":"\u2296","&CirclePlus;":"\u2295","&CircleTimes;":"\u2297","&ClockwiseContourIntegral;":"\u2232","&CloseCurlyDoubleQuote;":"\u201D","&CloseCurlyQuote;":"\u2019","&Colon;":"\u2237","&Colone;":"\u2A74","&Congruent;":"\u2261","&Conint;":"\u222F","&ContourIntegral;":"\u222E","&Copf;":"\u2102","&Coproduct;":"\u2210","&CounterClockwiseContourIntegral;":"\u2233","&Cross;":"\u2A2F","&Cscr;":"\u{1D49E}","&Cup;":"\u22D3","&CupCap;":"\u224D","&DD;":"\u2145","&DDotrahd;":"\u2911","&DJcy;":"\u0402","&DScy;":"\u0405","&DZcy;":"\u040F","&Dagger;":"\u2021","&Darr;":"\u21A1","&Dashv;":"\u2AE4","&Dcaron;":"\u010E","&Dcy;":"\u0414","&Del;":"\u2207","&Delta;":"\u0394","&Dfr;":"\u{1D507}","&DiacriticalAcute;":"\xB4","&DiacriticalDot;":"\u02D9","&DiacriticalDoubleAcute;":"\u02DD","&DiacriticalGrave;":"`","&DiacriticalTilde;":"\u02DC","&Diamond;":"\u22C4","&DifferentialD;":"\u2146","&Dopf;":"\u{1D53B}","&Dot;":"\xA8","&DotDot;":"\u20DC","&DotEqual;":"\u2250","&DoubleContourIntegral;":"\u222F","&DoubleDot;":"\xA8","&DoubleDownArrow;":"\u21D3","&DoubleLeftArrow;":"\u21D0","&DoubleLeftRightArrow;":"\u21D4","&DoubleLeftTee;":"\u2AE4","&DoubleLongLeftArrow;":"\u27F8","&DoubleLongLeftRightArrow;":"\u27FA","&DoubleLongRightArrow;":"\u27F9","&DoubleRightArrow;":"\u21D2","&DoubleRightTee;":"\u22A8","&DoubleUpArrow;":"\u21D1","&DoubleUpDownArrow;":"\u21D5","&DoubleVerticalBar;":"\u2225","&DownArrow;":"\u2193","&DownArrowBar;":"\u2913","&DownArrowUpArrow;":"\u21F5","&DownBreve;":"\u0311","&DownLeftRightVector;":"\u2950","&DownLeftTeeVector;":"\u295E","&DownLeftVector;":"\u21BD","&DownLeftVectorBar;":"\u2956","&DownRightTeeVector;":"\u295F","&DownRightVector;":"\u21C1","&DownRightVectorBar;":"\u2957","&DownTee;":"\u22A4","&DownTeeArrow;":"\u21A7","&Downarrow;":"\u21D3","&Dscr;":"\u{1D49F}","&Dstrok;":"\u0110","&ENG;":"\u014A","&ETH":"\xD0","&ETH;":"\xD0","&Eacute":"\xC9","&Eacute;":"\xC9","&Ecaron;":"\u011A","&Ecirc":"\xCA","&Ecirc;":"\xCA","&Ecy;":"\u042D","&Edot;":"\u0116","&Efr;":"\u{1D508}","&Egrave":"\xC8","&Egrave;":"\xC8","&Element;":"\u2208","&Emacr;":"\u0112","&EmptySmallSquare;":"\u25FB","&EmptyVerySmallSquare;":"\u25AB","&Eogon;":"\u0118","&Eopf;":"\u{1D53C}","&Epsilon;":"\u0395","&Equal;":"\u2A75","&EqualTilde;":"\u2242","&Equilibrium;":"\u21CC","&Escr;":"\u2130","&Esim;":"\u2A73","&Eta;":"\u0397","&Euml":"\xCB","&Euml;":"\xCB","&Exists;":"\u2203","&ExponentialE;":"\u2147","&Fcy;":"\u0424","&Ffr;":"\u{1D509}","&FilledSmallSquare;":"\u25FC","&FilledVerySmallSquare;":"\u25AA","&Fopf;":"\u{1D53D}","&ForAll;":"\u2200","&Fouriertrf;":"\u2131","&Fscr;":"\u2131","&GJcy;":"\u0403","&GT":">","&GT;":">","&Gamma;":"\u0393","&Gammad;":"\u03DC","&Gbreve;":"\u011E","&Gcedil;":"\u0122","&Gcirc;":"\u011C","&Gcy;":"\u0413","&Gdot;":"\u0120","&Gfr;":"\u{1D50A}","&Gg;":"\u22D9","&Gopf;":"\u{1D53E}","&GreaterEqual;":"\u2265","&GreaterEqualLess;":"\u22DB","&GreaterFullEqual;":"\u2267","&GreaterGreater;":"\u2AA2","&GreaterLess;":"\u2277","&GreaterSlantEqual;":"\u2A7E","&GreaterTilde;":"\u2273","&Gscr;":"\u{1D4A2}","&Gt;":"\u226B","&HARDcy;":"\u042A","&Hacek;":"\u02C7","&Hat;":"^","&Hcirc;":"\u0124","&Hfr;":"\u210C","&HilbertSpace;":"\u210B","&Hopf;":"\u210D","&HorizontalLine;":"\u2500","&Hscr;":"\u210B","&Hstrok;":"\u0126","&HumpDownHump;":"\u224E","&HumpEqual;":"\u224F","&IEcy;":"\u0415","&IJlig;":"\u0132","&IOcy;":"\u0401","&Iacute":"\xCD","&Iacute;":"\xCD","&Icirc":"\xCE","&Icirc;":"\xCE","&Icy;":"\u0418","&Idot;":"\u0130","&Ifr;":"\u2111","&Igrave":"\xCC","&Igrave;":"\xCC","&Im;":"\u2111","&Imacr;":"\u012A","&ImaginaryI;":"\u2148","&Implies;":"\u21D2","&Int;":"\u222C","&Integral;":"\u222B","&Intersection;":"\u22C2","&InvisibleComma;":"\u2063","&InvisibleTimes;":"\u2062","&Iogon;":"\u012E","&Iopf;":"\u{1D540}","&Iota;":"\u0399","&Iscr;":"\u2110","&Itilde;":"\u0128","&Iukcy;":"\u0406","&Iuml":"\xCF","&Iuml;":"\xCF","&Jcirc;":"\u0134","&Jcy;":"\u0419","&Jfr;":"\u{1D50D}","&Jopf;":"\u{1D541}","&Jscr;":"\u{1D4A5}","&Jsercy;":"\u0408","&Jukcy;":"\u0404","&KHcy;":"\u0425","&KJcy;":"\u040C","&Kappa;":"\u039A","&Kcedil;":"\u0136","&Kcy;":"\u041A","&Kfr;":"\u{1D50E}","&Kopf;":"\u{1D542}","&Kscr;":"\u{1D4A6}","&LJcy;":"\u0409","&LT":"<","&LT;":"<","&Lacute;":"\u0139","&Lambda;":"\u039B","&Lang;":"\u27EA","&Laplacetrf;":"\u2112","&Larr;":"\u219E","&Lcaron;":"\u013D","&Lcedil;":"\u013B","&Lcy;":"\u041B","&LeftAngleBracket;":"\u27E8","&LeftArrow;":"\u2190","&LeftArrowBar;":"\u21E4","&LeftArrowRightArrow;":"\u21C6","&LeftCeiling;":"\u2308","&LeftDoubleBracket;":"\u27E6","&LeftDownTeeVector;":"\u2961","&LeftDownVector;":"\u21C3","&LeftDownVectorBar;":"\u2959","&LeftFloor;":"\u230A","&LeftRightArrow;":"\u2194","&LeftRightVector;":"\u294E","&LeftTee;":"\u22A3","&LeftTeeArrow;":"\u21A4","&LeftTeeVector;":"\u295A","&LeftTriangle;":"\u22B2","&LeftTriangleBar;":"\u29CF","&LeftTriangleEqual;":"\u22B4","&LeftUpDownVector;":"\u2951","&LeftUpTeeVector;":"\u2960","&LeftUpVector;":"\u21BF","&LeftUpVectorBar;":"\u2958","&LeftVector;":"\u21BC","&LeftVectorBar;":"\u2952","&Leftarrow;":"\u21D0","&Leftrightarrow;":"\u21D4","&LessEqualGreater;":"\u22DA","&LessFullEqual;":"\u2266","&LessGreater;":"\u2276","&LessLess;":"\u2AA1","&LessSlantEqual;":"\u2A7D","&LessTilde;":"\u2272","&Lfr;":"\u{1D50F}","&Ll;":"\u22D8","&Lleftarrow;":"\u21DA","&Lmidot;":"\u013F","&LongLeftArrow;":"\u27F5","&LongLeftRightArrow;":"\u27F7","&LongRightArrow;":"\u27F6","&Longleftarrow;":"\u27F8","&Longleftrightarrow;":"\u27FA","&Longrightarrow;":"\u27F9","&Lopf;":"\u{1D543}","&LowerLeftArrow;":"\u2199","&LowerRightArrow;":"\u2198","&Lscr;":"\u2112","&Lsh;":"\u21B0","&Lstrok;":"\u0141","&Lt;":"\u226A","&Map;":"\u2905","&Mcy;":"\u041C","&MediumSpace;":"\u205F","&Mellintrf;":"\u2133","&Mfr;":"\u{1D510}","&MinusPlus;":"\u2213","&Mopf;":"\u{1D544}","&Mscr;":"\u2133","&Mu;":"\u039C","&NJcy;":"\u040A","&Nacute;":"\u0143","&Ncaron;":"\u0147","&Ncedil;":"\u0145","&Ncy;":"\u041D","&NegativeMediumSpace;":"\u200B","&NegativeThickSpace;":"\u200B","&NegativeThinSpace;":"\u200B","&NegativeVeryThinSpace;":"\u200B","&NestedGreaterGreater;":"\u226B","&NestedLessLess;":"\u226A","&NewLine;":`
258
- `,"&Nfr;":"\u{1D511}","&NoBreak;":"\u2060","&NonBreakingSpace;":"\xA0","&Nopf;":"\u2115","&Not;":"\u2AEC","&NotCongruent;":"\u2262","&NotCupCap;":"\u226D","&NotDoubleVerticalBar;":"\u2226","&NotElement;":"\u2209","&NotEqual;":"\u2260","&NotEqualTilde;":"\u2242\u0338","&NotExists;":"\u2204","&NotGreater;":"\u226F","&NotGreaterEqual;":"\u2271","&NotGreaterFullEqual;":"\u2267\u0338","&NotGreaterGreater;":"\u226B\u0338","&NotGreaterLess;":"\u2279","&NotGreaterSlantEqual;":"\u2A7E\u0338","&NotGreaterTilde;":"\u2275","&NotHumpDownHump;":"\u224E\u0338","&NotHumpEqual;":"\u224F\u0338","&NotLeftTriangle;":"\u22EA","&NotLeftTriangleBar;":"\u29CF\u0338","&NotLeftTriangleEqual;":"\u22EC","&NotLess;":"\u226E","&NotLessEqual;":"\u2270","&NotLessGreater;":"\u2278","&NotLessLess;":"\u226A\u0338","&NotLessSlantEqual;":"\u2A7D\u0338","&NotLessTilde;":"\u2274","&NotNestedGreaterGreater;":"\u2AA2\u0338","&NotNestedLessLess;":"\u2AA1\u0338","&NotPrecedes;":"\u2280","&NotPrecedesEqual;":"\u2AAF\u0338","&NotPrecedesSlantEqual;":"\u22E0","&NotReverseElement;":"\u220C","&NotRightTriangle;":"\u22EB","&NotRightTriangleBar;":"\u29D0\u0338","&NotRightTriangleEqual;":"\u22ED","&NotSquareSubset;":"\u228F\u0338","&NotSquareSubsetEqual;":"\u22E2","&NotSquareSuperset;":"\u2290\u0338","&NotSquareSupersetEqual;":"\u22E3","&NotSubset;":"\u2282\u20D2","&NotSubsetEqual;":"\u2288","&NotSucceeds;":"\u2281","&NotSucceedsEqual;":"\u2AB0\u0338","&NotSucceedsSlantEqual;":"\u22E1","&NotSucceedsTilde;":"\u227F\u0338","&NotSuperset;":"\u2283\u20D2","&NotSupersetEqual;":"\u2289","&NotTilde;":"\u2241","&NotTildeEqual;":"\u2244","&NotTildeFullEqual;":"\u2247","&NotTildeTilde;":"\u2249","&NotVerticalBar;":"\u2224","&Nscr;":"\u{1D4A9}","&Ntilde":"\xD1","&Ntilde;":"\xD1","&Nu;":"\u039D","&OElig;":"\u0152","&Oacute":"\xD3","&Oacute;":"\xD3","&Ocirc":"\xD4","&Ocirc;":"\xD4","&Ocy;":"\u041E","&Odblac;":"\u0150","&Ofr;":"\u{1D512}","&Ograve":"\xD2","&Ograve;":"\xD2","&Omacr;":"\u014C","&Omega;":"\u03A9","&Omicron;":"\u039F","&Oopf;":"\u{1D546}","&OpenCurlyDoubleQuote;":"\u201C","&OpenCurlyQuote;":"\u2018","&Or;":"\u2A54","&Oscr;":"\u{1D4AA}","&Oslash":"\xD8","&Oslash;":"\xD8","&Otilde":"\xD5","&Otilde;":"\xD5","&Otimes;":"\u2A37","&Ouml":"\xD6","&Ouml;":"\xD6","&OverBar;":"\u203E","&OverBrace;":"\u23DE","&OverBracket;":"\u23B4","&OverParenthesis;":"\u23DC","&PartialD;":"\u2202","&Pcy;":"\u041F","&Pfr;":"\u{1D513}","&Phi;":"\u03A6","&Pi;":"\u03A0","&PlusMinus;":"\xB1","&Poincareplane;":"\u210C","&Popf;":"\u2119","&Pr;":"\u2ABB","&Precedes;":"\u227A","&PrecedesEqual;":"\u2AAF","&PrecedesSlantEqual;":"\u227C","&PrecedesTilde;":"\u227E","&Prime;":"\u2033","&Product;":"\u220F","&Proportion;":"\u2237","&Proportional;":"\u221D","&Pscr;":"\u{1D4AB}","&Psi;":"\u03A8","&QUOT":'"',"&QUOT;":'"',"&Qfr;":"\u{1D514}","&Qopf;":"\u211A","&Qscr;":"\u{1D4AC}","&RBarr;":"\u2910","&REG":"\xAE","&REG;":"\xAE","&Racute;":"\u0154","&Rang;":"\u27EB","&Rarr;":"\u21A0","&Rarrtl;":"\u2916","&Rcaron;":"\u0158","&Rcedil;":"\u0156","&Rcy;":"\u0420","&Re;":"\u211C","&ReverseElement;":"\u220B","&ReverseEquilibrium;":"\u21CB","&ReverseUpEquilibrium;":"\u296F","&Rfr;":"\u211C","&Rho;":"\u03A1","&RightAngleBracket;":"\u27E9","&RightArrow;":"\u2192","&RightArrowBar;":"\u21E5","&RightArrowLeftArrow;":"\u21C4","&RightCeiling;":"\u2309","&RightDoubleBracket;":"\u27E7","&RightDownTeeVector;":"\u295D","&RightDownVector;":"\u21C2","&RightDownVectorBar;":"\u2955","&RightFloor;":"\u230B","&RightTee;":"\u22A2","&RightTeeArrow;":"\u21A6","&RightTeeVector;":"\u295B","&RightTriangle;":"\u22B3","&RightTriangleBar;":"\u29D0","&RightTriangleEqual;":"\u22B5","&RightUpDownVector;":"\u294F","&RightUpTeeVector;":"\u295C","&RightUpVector;":"\u21BE","&RightUpVectorBar;":"\u2954","&RightVector;":"\u21C0","&RightVectorBar;":"\u2953","&Rightarrow;":"\u21D2","&Ropf;":"\u211D","&RoundImplies;":"\u2970","&Rrightarrow;":"\u21DB","&Rscr;":"\u211B","&Rsh;":"\u21B1","&RuleDelayed;":"\u29F4","&SHCHcy;":"\u0429","&SHcy;":"\u0428","&SOFTcy;":"\u042C","&Sacute;":"\u015A","&Sc;":"\u2ABC","&Scaron;":"\u0160","&Scedil;":"\u015E","&Scirc;":"\u015C","&Scy;":"\u0421","&Sfr;":"\u{1D516}","&ShortDownArrow;":"\u2193","&ShortLeftArrow;":"\u2190","&ShortRightArrow;":"\u2192","&ShortUpArrow;":"\u2191","&Sigma;":"\u03A3","&SmallCircle;":"\u2218","&Sopf;":"\u{1D54A}","&Sqrt;":"\u221A","&Square;":"\u25A1","&SquareIntersection;":"\u2293","&SquareSubset;":"\u228F","&SquareSubsetEqual;":"\u2291","&SquareSuperset;":"\u2290","&SquareSupersetEqual;":"\u2292","&SquareUnion;":"\u2294","&Sscr;":"\u{1D4AE}","&Star;":"\u22C6","&Sub;":"\u22D0","&Subset;":"\u22D0","&SubsetEqual;":"\u2286","&Succeeds;":"\u227B","&SucceedsEqual;":"\u2AB0","&SucceedsSlantEqual;":"\u227D","&SucceedsTilde;":"\u227F","&SuchThat;":"\u220B","&Sum;":"\u2211","&Sup;":"\u22D1","&Superset;":"\u2283","&SupersetEqual;":"\u2287","&Supset;":"\u22D1","&THORN":"\xDE","&THORN;":"\xDE","&TRADE;":"\u2122","&TSHcy;":"\u040B","&TScy;":"\u0426","&Tab;":" ","&Tau;":"\u03A4","&Tcaron;":"\u0164","&Tcedil;":"\u0162","&Tcy;":"\u0422","&Tfr;":"\u{1D517}","&Therefore;":"\u2234","&Theta;":"\u0398","&ThickSpace;":"\u205F\u200A","&ThinSpace;":"\u2009","&Tilde;":"\u223C","&TildeEqual;":"\u2243","&TildeFullEqual;":"\u2245","&TildeTilde;":"\u2248","&Topf;":"\u{1D54B}","&TripleDot;":"\u20DB","&Tscr;":"\u{1D4AF}","&Tstrok;":"\u0166","&Uacute":"\xDA","&Uacute;":"\xDA","&Uarr;":"\u219F","&Uarrocir;":"\u2949","&Ubrcy;":"\u040E","&Ubreve;":"\u016C","&Ucirc":"\xDB","&Ucirc;":"\xDB","&Ucy;":"\u0423","&Udblac;":"\u0170","&Ufr;":"\u{1D518}","&Ugrave":"\xD9","&Ugrave;":"\xD9","&Umacr;":"\u016A","&UnderBar;":"_","&UnderBrace;":"\u23DF","&UnderBracket;":"\u23B5","&UnderParenthesis;":"\u23DD","&Union;":"\u22C3","&UnionPlus;":"\u228E","&Uogon;":"\u0172","&Uopf;":"\u{1D54C}","&UpArrow;":"\u2191","&UpArrowBar;":"\u2912","&UpArrowDownArrow;":"\u21C5","&UpDownArrow;":"\u2195","&UpEquilibrium;":"\u296E","&UpTee;":"\u22A5","&UpTeeArrow;":"\u21A5","&Uparrow;":"\u21D1","&Updownarrow;":"\u21D5","&UpperLeftArrow;":"\u2196","&UpperRightArrow;":"\u2197","&Upsi;":"\u03D2","&Upsilon;":"\u03A5","&Uring;":"\u016E","&Uscr;":"\u{1D4B0}","&Utilde;":"\u0168","&Uuml":"\xDC","&Uuml;":"\xDC","&VDash;":"\u22AB","&Vbar;":"\u2AEB","&Vcy;":"\u0412","&Vdash;":"\u22A9","&Vdashl;":"\u2AE6","&Vee;":"\u22C1","&Verbar;":"\u2016","&Vert;":"\u2016","&VerticalBar;":"\u2223","&VerticalLine;":"|","&VerticalSeparator;":"\u2758","&VerticalTilde;":"\u2240","&VeryThinSpace;":"\u200A","&Vfr;":"\u{1D519}","&Vopf;":"\u{1D54D}","&Vscr;":"\u{1D4B1}","&Vvdash;":"\u22AA","&Wcirc;":"\u0174","&Wedge;":"\u22C0","&Wfr;":"\u{1D51A}","&Wopf;":"\u{1D54E}","&Wscr;":"\u{1D4B2}","&Xfr;":"\u{1D51B}","&Xi;":"\u039E","&Xopf;":"\u{1D54F}","&Xscr;":"\u{1D4B3}","&YAcy;":"\u042F","&YIcy;":"\u0407","&YUcy;":"\u042E","&Yacute":"\xDD","&Yacute;":"\xDD","&Ycirc;":"\u0176","&Ycy;":"\u042B","&Yfr;":"\u{1D51C}","&Yopf;":"\u{1D550}","&Yscr;":"\u{1D4B4}","&Yuml;":"\u0178","&ZHcy;":"\u0416","&Zacute;":"\u0179","&Zcaron;":"\u017D","&Zcy;":"\u0417","&Zdot;":"\u017B","&ZeroWidthSpace;":"\u200B","&Zeta;":"\u0396","&Zfr;":"\u2128","&Zopf;":"\u2124","&Zscr;":"\u{1D4B5}","&aacute":"\xE1","&aacute;":"\xE1","&abreve;":"\u0103","&ac;":"\u223E","&acE;":"\u223E\u0333","&acd;":"\u223F","&acirc":"\xE2","&acirc;":"\xE2","&acute":"\xB4","&acute;":"\xB4","&acy;":"\u0430","&aelig":"\xE6","&aelig;":"\xE6","&af;":"\u2061","&afr;":"\u{1D51E}","&agrave":"\xE0","&agrave;":"\xE0","&alefsym;":"\u2135","&aleph;":"\u2135","&alpha;":"\u03B1","&amacr;":"\u0101","&amalg;":"\u2A3F","&amp":"&","&amp;":"&","&and;":"\u2227","&andand;":"\u2A55","&andd;":"\u2A5C","&andslope;":"\u2A58","&andv;":"\u2A5A","&ang;":"\u2220","&ange;":"\u29A4","&angle;":"\u2220","&angmsd;":"\u2221","&angmsdaa;":"\u29A8","&angmsdab;":"\u29A9","&angmsdac;":"\u29AA","&angmsdad;":"\u29AB","&angmsdae;":"\u29AC","&angmsdaf;":"\u29AD","&angmsdag;":"\u29AE","&angmsdah;":"\u29AF","&angrt;":"\u221F","&angrtvb;":"\u22BE","&angrtvbd;":"\u299D","&angsph;":"\u2222","&angst;":"\xC5","&angzarr;":"\u237C","&aogon;":"\u0105","&aopf;":"\u{1D552}","&ap;":"\u2248","&apE;":"\u2A70","&apacir;":"\u2A6F","&ape;":"\u224A","&apid;":"\u224B","&apos;":"'","&approx;":"\u2248","&approxeq;":"\u224A","&aring":"\xE5","&aring;":"\xE5","&ascr;":"\u{1D4B6}","&ast;":"*","&asymp;":"\u2248","&asympeq;":"\u224D","&atilde":"\xE3","&atilde;":"\xE3","&auml":"\xE4","&auml;":"\xE4","&awconint;":"\u2233","&awint;":"\u2A11","&bNot;":"\u2AED","&backcong;":"\u224C","&backepsilon;":"\u03F6","&backprime;":"\u2035","&backsim;":"\u223D","&backsimeq;":"\u22CD","&barvee;":"\u22BD","&barwed;":"\u2305","&barwedge;":"\u2305","&bbrk;":"\u23B5","&bbrktbrk;":"\u23B6","&bcong;":"\u224C","&bcy;":"\u0431","&bdquo;":"\u201E","&becaus;":"\u2235","&because;":"\u2235","&bemptyv;":"\u29B0","&bepsi;":"\u03F6","&bernou;":"\u212C","&beta;":"\u03B2","&beth;":"\u2136","&between;":"\u226C","&bfr;":"\u{1D51F}","&bigcap;":"\u22C2","&bigcirc;":"\u25EF","&bigcup;":"\u22C3","&bigodot;":"\u2A00","&bigoplus;":"\u2A01","&bigotimes;":"\u2A02","&bigsqcup;":"\u2A06","&bigstar;":"\u2605","&bigtriangledown;":"\u25BD","&bigtriangleup;":"\u25B3","&biguplus;":"\u2A04","&bigvee;":"\u22C1","&bigwedge;":"\u22C0","&bkarow;":"\u290D","&blacklozenge;":"\u29EB","&blacksquare;":"\u25AA","&blacktriangle;":"\u25B4","&blacktriangledown;":"\u25BE","&blacktriangleleft;":"\u25C2","&blacktriangleright;":"\u25B8","&blank;":"\u2423","&blk12;":"\u2592","&blk14;":"\u2591","&blk34;":"\u2593","&block;":"\u2588","&bne;":"=\u20E5","&bnequiv;":"\u2261\u20E5","&bnot;":"\u2310","&bopf;":"\u{1D553}","&bot;":"\u22A5","&bottom;":"\u22A5","&bowtie;":"\u22C8","&boxDL;":"\u2557","&boxDR;":"\u2554","&boxDl;":"\u2556","&boxDr;":"\u2553","&boxH;":"\u2550","&boxHD;":"\u2566","&boxHU;":"\u2569","&boxHd;":"\u2564","&boxHu;":"\u2567","&boxUL;":"\u255D","&boxUR;":"\u255A","&boxUl;":"\u255C","&boxUr;":"\u2559","&boxV;":"\u2551","&boxVH;":"\u256C","&boxVL;":"\u2563","&boxVR;":"\u2560","&boxVh;":"\u256B","&boxVl;":"\u2562","&boxVr;":"\u255F","&boxbox;":"\u29C9","&boxdL;":"\u2555","&boxdR;":"\u2552","&boxdl;":"\u2510","&boxdr;":"\u250C","&boxh;":"\u2500","&boxhD;":"\u2565","&boxhU;":"\u2568","&boxhd;":"\u252C","&boxhu;":"\u2534","&boxminus;":"\u229F","&boxplus;":"\u229E","&boxtimes;":"\u22A0","&boxuL;":"\u255B","&boxuR;":"\u2558","&boxul;":"\u2518","&boxur;":"\u2514","&boxv;":"\u2502","&boxvH;":"\u256A","&boxvL;":"\u2561","&boxvR;":"\u255E","&boxvh;":"\u253C","&boxvl;":"\u2524","&boxvr;":"\u251C","&bprime;":"\u2035","&breve;":"\u02D8","&brvbar":"\xA6","&brvbar;":"\xA6","&bscr;":"\u{1D4B7}","&bsemi;":"\u204F","&bsim;":"\u223D","&bsime;":"\u22CD","&bsol;":"\\","&bsolb;":"\u29C5","&bsolhsub;":"\u27C8","&bull;":"\u2022","&bullet;":"\u2022","&bump;":"\u224E","&bumpE;":"\u2AAE","&bumpe;":"\u224F","&bumpeq;":"\u224F","&cacute;":"\u0107","&cap;":"\u2229","&capand;":"\u2A44","&capbrcup;":"\u2A49","&capcap;":"\u2A4B","&capcup;":"\u2A47","&capdot;":"\u2A40","&caps;":"\u2229\uFE00","&caret;":"\u2041","&caron;":"\u02C7","&ccaps;":"\u2A4D","&ccaron;":"\u010D","&ccedil":"\xE7","&ccedil;":"\xE7","&ccirc;":"\u0109","&ccups;":"\u2A4C","&ccupssm;":"\u2A50","&cdot;":"\u010B","&cedil":"\xB8","&cedil;":"\xB8","&cemptyv;":"\u29B2","&cent":"\xA2","&cent;":"\xA2","&centerdot;":"\xB7","&cfr;":"\u{1D520}","&chcy;":"\u0447","&check;":"\u2713","&checkmark;":"\u2713","&chi;":"\u03C7","&cir;":"\u25CB","&cirE;":"\u29C3","&circ;":"\u02C6","&circeq;":"\u2257","&circlearrowleft;":"\u21BA","&circlearrowright;":"\u21BB","&circledR;":"\xAE","&circledS;":"\u24C8","&circledast;":"\u229B","&circledcirc;":"\u229A","&circleddash;":"\u229D","&cire;":"\u2257","&cirfnint;":"\u2A10","&cirmid;":"\u2AEF","&cirscir;":"\u29C2","&clubs;":"\u2663","&clubsuit;":"\u2663","&colon;":":","&colone;":"\u2254","&coloneq;":"\u2254","&comma;":",","&commat;":"@","&comp;":"\u2201","&compfn;":"\u2218","&complement;":"\u2201","&complexes;":"\u2102","&cong;":"\u2245","&congdot;":"\u2A6D","&conint;":"\u222E","&copf;":"\u{1D554}","&coprod;":"\u2210","&copy":"\xA9","&copy;":"\xA9","&copysr;":"\u2117","&crarr;":"\u21B5","&cross;":"\u2717","&cscr;":"\u{1D4B8}","&csub;":"\u2ACF","&csube;":"\u2AD1","&csup;":"\u2AD0","&csupe;":"\u2AD2","&ctdot;":"\u22EF","&cudarrl;":"\u2938","&cudarrr;":"\u2935","&cuepr;":"\u22DE","&cuesc;":"\u22DF","&cularr;":"\u21B6","&cularrp;":"\u293D","&cup;":"\u222A","&cupbrcap;":"\u2A48","&cupcap;":"\u2A46","&cupcup;":"\u2A4A","&cupdot;":"\u228D","&cupor;":"\u2A45","&cups;":"\u222A\uFE00","&curarr;":"\u21B7","&curarrm;":"\u293C","&curlyeqprec;":"\u22DE","&curlyeqsucc;":"\u22DF","&curlyvee;":"\u22CE","&curlywedge;":"\u22CF","&curren":"\xA4","&curren;":"\xA4","&curvearrowleft;":"\u21B6","&curvearrowright;":"\u21B7","&cuvee;":"\u22CE","&cuwed;":"\u22CF","&cwconint;":"\u2232","&cwint;":"\u2231","&cylcty;":"\u232D","&dArr;":"\u21D3","&dHar;":"\u2965","&dagger;":"\u2020","&daleth;":"\u2138","&darr;":"\u2193","&dash;":"\u2010","&dashv;":"\u22A3","&dbkarow;":"\u290F","&dblac;":"\u02DD","&dcaron;":"\u010F","&dcy;":"\u0434","&dd;":"\u2146","&ddagger;":"\u2021","&ddarr;":"\u21CA","&ddotseq;":"\u2A77","&deg":"\xB0","&deg;":"\xB0","&delta;":"\u03B4","&demptyv;":"\u29B1","&dfisht;":"\u297F","&dfr;":"\u{1D521}","&dharl;":"\u21C3","&dharr;":"\u21C2","&diam;":"\u22C4","&diamond;":"\u22C4","&diamondsuit;":"\u2666","&diams;":"\u2666","&die;":"\xA8","&digamma;":"\u03DD","&disin;":"\u22F2","&div;":"\xF7","&divide":"\xF7","&divide;":"\xF7","&divideontimes;":"\u22C7","&divonx;":"\u22C7","&djcy;":"\u0452","&dlcorn;":"\u231E","&dlcrop;":"\u230D","&dollar;":"$","&dopf;":"\u{1D555}","&dot;":"\u02D9","&doteq;":"\u2250","&doteqdot;":"\u2251","&dotminus;":"\u2238","&dotplus;":"\u2214","&dotsquare;":"\u22A1","&doublebarwedge;":"\u2306","&downarrow;":"\u2193","&downdownarrows;":"\u21CA","&downharpoonleft;":"\u21C3","&downharpoonright;":"\u21C2","&drbkarow;":"\u2910","&drcorn;":"\u231F","&drcrop;":"\u230C","&dscr;":"\u{1D4B9}","&dscy;":"\u0455","&dsol;":"\u29F6","&dstrok;":"\u0111","&dtdot;":"\u22F1","&dtri;":"\u25BF","&dtrif;":"\u25BE","&duarr;":"\u21F5","&duhar;":"\u296F","&dwangle;":"\u29A6","&dzcy;":"\u045F","&dzigrarr;":"\u27FF","&eDDot;":"\u2A77","&eDot;":"\u2251","&eacute":"\xE9","&eacute;":"\xE9","&easter;":"\u2A6E","&ecaron;":"\u011B","&ecir;":"\u2256","&ecirc":"\xEA","&ecirc;":"\xEA","&ecolon;":"\u2255","&ecy;":"\u044D","&edot;":"\u0117","&ee;":"\u2147","&efDot;":"\u2252","&efr;":"\u{1D522}","&eg;":"\u2A9A","&egrave":"\xE8","&egrave;":"\xE8","&egs;":"\u2A96","&egsdot;":"\u2A98","&el;":"\u2A99","&elinters;":"\u23E7","&ell;":"\u2113","&els;":"\u2A95","&elsdot;":"\u2A97","&emacr;":"\u0113","&empty;":"\u2205","&emptyset;":"\u2205","&emptyv;":"\u2205","&emsp13;":"\u2004","&emsp14;":"\u2005","&emsp;":"\u2003","&eng;":"\u014B","&ensp;":"\u2002","&eogon;":"\u0119","&eopf;":"\u{1D556}","&epar;":"\u22D5","&eparsl;":"\u29E3","&eplus;":"\u2A71","&epsi;":"\u03B5","&epsilon;":"\u03B5","&epsiv;":"\u03F5","&eqcirc;":"\u2256","&eqcolon;":"\u2255","&eqsim;":"\u2242","&eqslantgtr;":"\u2A96","&eqslantless;":"\u2A95","&equals;":"=","&equest;":"\u225F","&equiv;":"\u2261","&equivDD;":"\u2A78","&eqvparsl;":"\u29E5","&erDot;":"\u2253","&erarr;":"\u2971","&escr;":"\u212F","&esdot;":"\u2250","&esim;":"\u2242","&eta;":"\u03B7","&eth":"\xF0","&eth;":"\xF0","&euml":"\xEB","&euml;":"\xEB","&euro;":"\u20AC","&excl;":"!","&exist;":"\u2203","&expectation;":"\u2130","&exponentiale;":"\u2147","&fallingdotseq;":"\u2252","&fcy;":"\u0444","&female;":"\u2640","&ffilig;":"\uFB03","&fflig;":"\uFB00","&ffllig;":"\uFB04","&ffr;":"\u{1D523}","&filig;":"\uFB01","&fjlig;":"fj","&flat;":"\u266D","&fllig;":"\uFB02","&fltns;":"\u25B1","&fnof;":"\u0192","&fopf;":"\u{1D557}","&forall;":"\u2200","&fork;":"\u22D4","&forkv;":"\u2AD9","&fpartint;":"\u2A0D","&frac12":"\xBD","&frac12;":"\xBD","&frac13;":"\u2153","&frac14":"\xBC","&frac14;":"\xBC","&frac15;":"\u2155","&frac16;":"\u2159","&frac18;":"\u215B","&frac23;":"\u2154","&frac25;":"\u2156","&frac34":"\xBE","&frac34;":"\xBE","&frac35;":"\u2157","&frac38;":"\u215C","&frac45;":"\u2158","&frac56;":"\u215A","&frac58;":"\u215D","&frac78;":"\u215E","&frasl;":"\u2044","&frown;":"\u2322","&fscr;":"\u{1D4BB}","&gE;":"\u2267","&gEl;":"\u2A8C","&gacute;":"\u01F5","&gamma;":"\u03B3","&gammad;":"\u03DD","&gap;":"\u2A86","&gbreve;":"\u011F","&gcirc;":"\u011D","&gcy;":"\u0433","&gdot;":"\u0121","&ge;":"\u2265","&gel;":"\u22DB","&geq;":"\u2265","&geqq;":"\u2267","&geqslant;":"\u2A7E","&ges;":"\u2A7E","&gescc;":"\u2AA9","&gesdot;":"\u2A80","&gesdoto;":"\u2A82","&gesdotol;":"\u2A84","&gesl;":"\u22DB\uFE00","&gesles;":"\u2A94","&gfr;":"\u{1D524}","&gg;":"\u226B","&ggg;":"\u22D9","&gimel;":"\u2137","&gjcy;":"\u0453","&gl;":"\u2277","&glE;":"\u2A92","&gla;":"\u2AA5","&glj;":"\u2AA4","&gnE;":"\u2269","&gnap;":"\u2A8A","&gnapprox;":"\u2A8A","&gne;":"\u2A88","&gneq;":"\u2A88","&gneqq;":"\u2269","&gnsim;":"\u22E7","&gopf;":"\u{1D558}","&grave;":"`","&gscr;":"\u210A","&gsim;":"\u2273","&gsime;":"\u2A8E","&gsiml;":"\u2A90","&gt":">","&gt;":">","&gtcc;":"\u2AA7","&gtcir;":"\u2A7A","&gtdot;":"\u22D7","&gtlPar;":"\u2995","&gtquest;":"\u2A7C","&gtrapprox;":"\u2A86","&gtrarr;":"\u2978","&gtrdot;":"\u22D7","&gtreqless;":"\u22DB","&gtreqqless;":"\u2A8C","&gtrless;":"\u2277","&gtrsim;":"\u2273","&gvertneqq;":"\u2269\uFE00","&gvnE;":"\u2269\uFE00","&hArr;":"\u21D4","&hairsp;":"\u200A","&half;":"\xBD","&hamilt;":"\u210B","&hardcy;":"\u044A","&harr;":"\u2194","&harrcir;":"\u2948","&harrw;":"\u21AD","&hbar;":"\u210F","&hcirc;":"\u0125","&hearts;":"\u2665","&heartsuit;":"\u2665","&hellip;":"\u2026","&hercon;":"\u22B9","&hfr;":"\u{1D525}","&hksearow;":"\u2925","&hkswarow;":"\u2926","&hoarr;":"\u21FF","&homtht;":"\u223B","&hookleftarrow;":"\u21A9","&hookrightarrow;":"\u21AA","&hopf;":"\u{1D559}","&horbar;":"\u2015","&hscr;":"\u{1D4BD}","&hslash;":"\u210F","&hstrok;":"\u0127","&hybull;":"\u2043","&hyphen;":"\u2010","&iacute":"\xED","&iacute;":"\xED","&ic;":"\u2063","&icirc":"\xEE","&icirc;":"\xEE","&icy;":"\u0438","&iecy;":"\u0435","&iexcl":"\xA1","&iexcl;":"\xA1","&iff;":"\u21D4","&ifr;":"\u{1D526}","&igrave":"\xEC","&igrave;":"\xEC","&ii;":"\u2148","&iiiint;":"\u2A0C","&iiint;":"\u222D","&iinfin;":"\u29DC","&iiota;":"\u2129","&ijlig;":"\u0133","&imacr;":"\u012B","&image;":"\u2111","&imagline;":"\u2110","&imagpart;":"\u2111","&imath;":"\u0131","&imof;":"\u22B7","&imped;":"\u01B5","&in;":"\u2208","&incare;":"\u2105","&infin;":"\u221E","&infintie;":"\u29DD","&inodot;":"\u0131","&int;":"\u222B","&intcal;":"\u22BA","&integers;":"\u2124","&intercal;":"\u22BA","&intlarhk;":"\u2A17","&intprod;":"\u2A3C","&iocy;":"\u0451","&iogon;":"\u012F","&iopf;":"\u{1D55A}","&iota;":"\u03B9","&iprod;":"\u2A3C","&iquest":"\xBF","&iquest;":"\xBF","&iscr;":"\u{1D4BE}","&isin;":"\u2208","&isinE;":"\u22F9","&isindot;":"\u22F5","&isins;":"\u22F4","&isinsv;":"\u22F3","&isinv;":"\u2208","&it;":"\u2062","&itilde;":"\u0129","&iukcy;":"\u0456","&iuml":"\xEF","&iuml;":"\xEF","&jcirc;":"\u0135","&jcy;":"\u0439","&jfr;":"\u{1D527}","&jmath;":"\u0237","&jopf;":"\u{1D55B}","&jscr;":"\u{1D4BF}","&jsercy;":"\u0458","&jukcy;":"\u0454","&kappa;":"\u03BA","&kappav;":"\u03F0","&kcedil;":"\u0137","&kcy;":"\u043A","&kfr;":"\u{1D528}","&kgreen;":"\u0138","&khcy;":"\u0445","&kjcy;":"\u045C","&kopf;":"\u{1D55C}","&kscr;":"\u{1D4C0}","&lAarr;":"\u21DA","&lArr;":"\u21D0","&lAtail;":"\u291B","&lBarr;":"\u290E","&lE;":"\u2266","&lEg;":"\u2A8B","&lHar;":"\u2962","&lacute;":"\u013A","&laemptyv;":"\u29B4","&lagran;":"\u2112","&lambda;":"\u03BB","&lang;":"\u27E8","&langd;":"\u2991","&langle;":"\u27E8","&lap;":"\u2A85","&laquo":"\xAB","&laquo;":"\xAB","&larr;":"\u2190","&larrb;":"\u21E4","&larrbfs;":"\u291F","&larrfs;":"\u291D","&larrhk;":"\u21A9","&larrlp;":"\u21AB","&larrpl;":"\u2939","&larrsim;":"\u2973","&larrtl;":"\u21A2","&lat;":"\u2AAB","&latail;":"\u2919","&late;":"\u2AAD","&lates;":"\u2AAD\uFE00","&lbarr;":"\u290C","&lbbrk;":"\u2772","&lbrace;":"{","&lbrack;":"[","&lbrke;":"\u298B","&lbrksld;":"\u298F","&lbrkslu;":"\u298D","&lcaron;":"\u013E","&lcedil;":"\u013C","&lceil;":"\u2308","&lcub;":"{","&lcy;":"\u043B","&ldca;":"\u2936","&ldquo;":"\u201C","&ldquor;":"\u201E","&ldrdhar;":"\u2967","&ldrushar;":"\u294B","&ldsh;":"\u21B2","&le;":"\u2264","&leftarrow;":"\u2190","&leftarrowtail;":"\u21A2","&leftharpoondown;":"\u21BD","&leftharpoonup;":"\u21BC","&leftleftarrows;":"\u21C7","&leftrightarrow;":"\u2194","&leftrightarrows;":"\u21C6","&leftrightharpoons;":"\u21CB","&leftrightsquigarrow;":"\u21AD","&leftthreetimes;":"\u22CB","&leg;":"\u22DA","&leq;":"\u2264","&leqq;":"\u2266","&leqslant;":"\u2A7D","&les;":"\u2A7D","&lescc;":"\u2AA8","&lesdot;":"\u2A7F","&lesdoto;":"\u2A81","&lesdotor;":"\u2A83","&lesg;":"\u22DA\uFE00","&lesges;":"\u2A93","&lessapprox;":"\u2A85","&lessdot;":"\u22D6","&lesseqgtr;":"\u22DA","&lesseqqgtr;":"\u2A8B","&lessgtr;":"\u2276","&lesssim;":"\u2272","&lfisht;":"\u297C","&lfloor;":"\u230A","&lfr;":"\u{1D529}","&lg;":"\u2276","&lgE;":"\u2A91","&lhard;":"\u21BD","&lharu;":"\u21BC","&lharul;":"\u296A","&lhblk;":"\u2584","&ljcy;":"\u0459","&ll;":"\u226A","&llarr;":"\u21C7","&llcorner;":"\u231E","&llhard;":"\u296B","&lltri;":"\u25FA","&lmidot;":"\u0140","&lmoust;":"\u23B0","&lmoustache;":"\u23B0","&lnE;":"\u2268","&lnap;":"\u2A89","&lnapprox;":"\u2A89","&lne;":"\u2A87","&lneq;":"\u2A87","&lneqq;":"\u2268","&lnsim;":"\u22E6","&loang;":"\u27EC","&loarr;":"\u21FD","&lobrk;":"\u27E6","&longleftarrow;":"\u27F5","&longleftrightarrow;":"\u27F7","&longmapsto;":"\u27FC","&longrightarrow;":"\u27F6","&looparrowleft;":"\u21AB","&looparrowright;":"\u21AC","&lopar;":"\u2985","&lopf;":"\u{1D55D}","&loplus;":"\u2A2D","&lotimes;":"\u2A34","&lowast;":"\u2217","&lowbar;":"_","&loz;":"\u25CA","&lozenge;":"\u25CA","&lozf;":"\u29EB","&lpar;":"(","&lparlt;":"\u2993","&lrarr;":"\u21C6","&lrcorner;":"\u231F","&lrhar;":"\u21CB","&lrhard;":"\u296D","&lrm;":"\u200E","&lrtri;":"\u22BF","&lsaquo;":"\u2039","&lscr;":"\u{1D4C1}","&lsh;":"\u21B0","&lsim;":"\u2272","&lsime;":"\u2A8D","&lsimg;":"\u2A8F","&lsqb;":"[","&lsquo;":"\u2018","&lsquor;":"\u201A","&lstrok;":"\u0142","&lt":"<","&lt;":"<","&ltcc;":"\u2AA6","&ltcir;":"\u2A79","&ltdot;":"\u22D6","&lthree;":"\u22CB","&ltimes;":"\u22C9","&ltlarr;":"\u2976","&ltquest;":"\u2A7B","&ltrPar;":"\u2996","&ltri;":"\u25C3","&ltrie;":"\u22B4","&ltrif;":"\u25C2","&lurdshar;":"\u294A","&luruhar;":"\u2966","&lvertneqq;":"\u2268\uFE00","&lvnE;":"\u2268\uFE00","&mDDot;":"\u223A","&macr":"\xAF","&macr;":"\xAF","&male;":"\u2642","&malt;":"\u2720","&maltese;":"\u2720","&map;":"\u21A6","&mapsto;":"\u21A6","&mapstodown;":"\u21A7","&mapstoleft;":"\u21A4","&mapstoup;":"\u21A5","&marker;":"\u25AE","&mcomma;":"\u2A29","&mcy;":"\u043C","&mdash;":"\u2014","&measuredangle;":"\u2221","&mfr;":"\u{1D52A}","&mho;":"\u2127","&micro":"\xB5","&micro;":"\xB5","&mid;":"\u2223","&midast;":"*","&midcir;":"\u2AF0","&middot":"\xB7","&middot;":"\xB7","&minus;":"\u2212","&minusb;":"\u229F","&minusd;":"\u2238","&minusdu;":"\u2A2A","&mlcp;":"\u2ADB","&mldr;":"\u2026","&mnplus;":"\u2213","&models;":"\u22A7","&mopf;":"\u{1D55E}","&mp;":"\u2213","&mscr;":"\u{1D4C2}","&mstpos;":"\u223E","&mu;":"\u03BC","&multimap;":"\u22B8","&mumap;":"\u22B8","&nGg;":"\u22D9\u0338","&nGt;":"\u226B\u20D2","&nGtv;":"\u226B\u0338","&nLeftarrow;":"\u21CD","&nLeftrightarrow;":"\u21CE","&nLl;":"\u22D8\u0338","&nLt;":"\u226A\u20D2","&nLtv;":"\u226A\u0338","&nRightarrow;":"\u21CF","&nVDash;":"\u22AF","&nVdash;":"\u22AE","&nabla;":"\u2207","&nacute;":"\u0144","&nang;":"\u2220\u20D2","&nap;":"\u2249","&napE;":"\u2A70\u0338","&napid;":"\u224B\u0338","&napos;":"\u0149","&napprox;":"\u2249","&natur;":"\u266E","&natural;":"\u266E","&naturals;":"\u2115","&nbsp":"\xA0","&nbsp;":"\xA0","&nbump;":"\u224E\u0338","&nbumpe;":"\u224F\u0338","&ncap;":"\u2A43","&ncaron;":"\u0148","&ncedil;":"\u0146","&ncong;":"\u2247","&ncongdot;":"\u2A6D\u0338","&ncup;":"\u2A42","&ncy;":"\u043D","&ndash;":"\u2013","&ne;":"\u2260","&neArr;":"\u21D7","&nearhk;":"\u2924","&nearr;":"\u2197","&nearrow;":"\u2197","&nedot;":"\u2250\u0338","&nequiv;":"\u2262","&nesear;":"\u2928","&nesim;":"\u2242\u0338","&nexist;":"\u2204","&nexists;":"\u2204","&nfr;":"\u{1D52B}","&ngE;":"\u2267\u0338","&nge;":"\u2271","&ngeq;":"\u2271","&ngeqq;":"\u2267\u0338","&ngeqslant;":"\u2A7E\u0338","&nges;":"\u2A7E\u0338","&ngsim;":"\u2275","&ngt;":"\u226F","&ngtr;":"\u226F","&nhArr;":"\u21CE","&nharr;":"\u21AE","&nhpar;":"\u2AF2","&ni;":"\u220B","&nis;":"\u22FC","&nisd;":"\u22FA","&niv;":"\u220B","&njcy;":"\u045A","&nlArr;":"\u21CD","&nlE;":"\u2266\u0338","&nlarr;":"\u219A","&nldr;":"\u2025","&nle;":"\u2270","&nleftarrow;":"\u219A","&nleftrightarrow;":"\u21AE","&nleq;":"\u2270","&nleqq;":"\u2266\u0338","&nleqslant;":"\u2A7D\u0338","&nles;":"\u2A7D\u0338","&nless;":"\u226E","&nlsim;":"\u2274","&nlt;":"\u226E","&nltri;":"\u22EA","&nltrie;":"\u22EC","&nmid;":"\u2224","&nopf;":"\u{1D55F}","&not":"\xAC","&not;":"\xAC","&notin;":"\u2209","&notinE;":"\u22F9\u0338","&notindot;":"\u22F5\u0338","&notinva;":"\u2209","&notinvb;":"\u22F7","&notinvc;":"\u22F6","&notni;":"\u220C","&notniva;":"\u220C","&notnivb;":"\u22FE","&notnivc;":"\u22FD","&npar;":"\u2226","&nparallel;":"\u2226","&nparsl;":"\u2AFD\u20E5","&npart;":"\u2202\u0338","&npolint;":"\u2A14","&npr;":"\u2280","&nprcue;":"\u22E0","&npre;":"\u2AAF\u0338","&nprec;":"\u2280","&npreceq;":"\u2AAF\u0338","&nrArr;":"\u21CF","&nrarr;":"\u219B","&nrarrc;":"\u2933\u0338","&nrarrw;":"\u219D\u0338","&nrightarrow;":"\u219B","&nrtri;":"\u22EB","&nrtrie;":"\u22ED","&nsc;":"\u2281","&nsccue;":"\u22E1","&nsce;":"\u2AB0\u0338","&nscr;":"\u{1D4C3}","&nshortmid;":"\u2224","&nshortparallel;":"\u2226","&nsim;":"\u2241","&nsime;":"\u2244","&nsimeq;":"\u2244","&nsmid;":"\u2224","&nspar;":"\u2226","&nsqsube;":"\u22E2","&nsqsupe;":"\u22E3","&nsub;":"\u2284","&nsubE;":"\u2AC5\u0338","&nsube;":"\u2288","&nsubset;":"\u2282\u20D2","&nsubseteq;":"\u2288","&nsubseteqq;":"\u2AC5\u0338","&nsucc;":"\u2281","&nsucceq;":"\u2AB0\u0338","&nsup;":"\u2285","&nsupE;":"\u2AC6\u0338","&nsupe;":"\u2289","&nsupset;":"\u2283\u20D2","&nsupseteq;":"\u2289","&nsupseteqq;":"\u2AC6\u0338","&ntgl;":"\u2279","&ntilde":"\xF1","&ntilde;":"\xF1","&ntlg;":"\u2278","&ntriangleleft;":"\u22EA","&ntrianglelefteq;":"\u22EC","&ntriangleright;":"\u22EB","&ntrianglerighteq;":"\u22ED","&nu;":"\u03BD","&num;":"#","&numero;":"\u2116","&numsp;":"\u2007","&nvDash;":"\u22AD","&nvHarr;":"\u2904","&nvap;":"\u224D\u20D2","&nvdash;":"\u22AC","&nvge;":"\u2265\u20D2","&nvgt;":">\u20D2","&nvinfin;":"\u29DE","&nvlArr;":"\u2902","&nvle;":"\u2264\u20D2","&nvlt;":"<\u20D2","&nvltrie;":"\u22B4\u20D2","&nvrArr;":"\u2903","&nvrtrie;":"\u22B5\u20D2","&nvsim;":"\u223C\u20D2","&nwArr;":"\u21D6","&nwarhk;":"\u2923","&nwarr;":"\u2196","&nwarrow;":"\u2196","&nwnear;":"\u2927","&oS;":"\u24C8","&oacute":"\xF3","&oacute;":"\xF3","&oast;":"\u229B","&ocir;":"\u229A","&ocirc":"\xF4","&ocirc;":"\xF4","&ocy;":"\u043E","&odash;":"\u229D","&odblac;":"\u0151","&odiv;":"\u2A38","&odot;":"\u2299","&odsold;":"\u29BC","&oelig;":"\u0153","&ofcir;":"\u29BF","&ofr;":"\u{1D52C}","&ogon;":"\u02DB","&ograve":"\xF2","&ograve;":"\xF2","&ogt;":"\u29C1","&ohbar;":"\u29B5","&ohm;":"\u03A9","&oint;":"\u222E","&olarr;":"\u21BA","&olcir;":"\u29BE","&olcross;":"\u29BB","&oline;":"\u203E","&olt;":"\u29C0","&omacr;":"\u014D","&omega;":"\u03C9","&omicron;":"\u03BF","&omid;":"\u29B6","&ominus;":"\u2296","&oopf;":"\u{1D560}","&opar;":"\u29B7","&operp;":"\u29B9","&oplus;":"\u2295","&or;":"\u2228","&orarr;":"\u21BB","&ord;":"\u2A5D","&order;":"\u2134","&orderof;":"\u2134","&ordf":"\xAA","&ordf;":"\xAA","&ordm":"\xBA","&ordm;":"\xBA","&origof;":"\u22B6","&oror;":"\u2A56","&orslope;":"\u2A57","&orv;":"\u2A5B","&oscr;":"\u2134","&oslash":"\xF8","&oslash;":"\xF8","&osol;":"\u2298","&otilde":"\xF5","&otilde;":"\xF5","&otimes;":"\u2297","&otimesas;":"\u2A36","&ouml":"\xF6","&ouml;":"\xF6","&ovbar;":"\u233D","&par;":"\u2225","&para":"\xB6","&para;":"\xB6","&parallel;":"\u2225","&parsim;":"\u2AF3","&parsl;":"\u2AFD","&part;":"\u2202","&pcy;":"\u043F","&percnt;":"%","&period;":".","&permil;":"\u2030","&perp;":"\u22A5","&pertenk;":"\u2031","&pfr;":"\u{1D52D}","&phi;":"\u03C6","&phiv;":"\u03D5","&phmmat;":"\u2133","&phone;":"\u260E","&pi;":"\u03C0","&pitchfork;":"\u22D4","&piv;":"\u03D6","&planck;":"\u210F","&planckh;":"\u210E","&plankv;":"\u210F","&plus;":"+","&plusacir;":"\u2A23","&plusb;":"\u229E","&pluscir;":"\u2A22","&plusdo;":"\u2214","&plusdu;":"\u2A25","&pluse;":"\u2A72","&plusmn":"\xB1","&plusmn;":"\xB1","&plussim;":"\u2A26","&plustwo;":"\u2A27","&pm;":"\xB1","&pointint;":"\u2A15","&popf;":"\u{1D561}","&pound":"\xA3","&pound;":"\xA3","&pr;":"\u227A","&prE;":"\u2AB3","&prap;":"\u2AB7","&prcue;":"\u227C","&pre;":"\u2AAF","&prec;":"\u227A","&precapprox;":"\u2AB7","&preccurlyeq;":"\u227C","&preceq;":"\u2AAF","&precnapprox;":"\u2AB9","&precneqq;":"\u2AB5","&precnsim;":"\u22E8","&precsim;":"\u227E","&prime;":"\u2032","&primes;":"\u2119","&prnE;":"\u2AB5","&prnap;":"\u2AB9","&prnsim;":"\u22E8","&prod;":"\u220F","&profalar;":"\u232E","&profline;":"\u2312","&profsurf;":"\u2313","&prop;":"\u221D","&propto;":"\u221D","&prsim;":"\u227E","&prurel;":"\u22B0","&pscr;":"\u{1D4C5}","&psi;":"\u03C8","&puncsp;":"\u2008","&qfr;":"\u{1D52E}","&qint;":"\u2A0C","&qopf;":"\u{1D562}","&qprime;":"\u2057","&qscr;":"\u{1D4C6}","&quaternions;":"\u210D","&quatint;":"\u2A16","&quest;":"?","&questeq;":"\u225F","&quot":'"',"&quot;":'"',"&rAarr;":"\u21DB","&rArr;":"\u21D2","&rAtail;":"\u291C","&rBarr;":"\u290F","&rHar;":"\u2964","&race;":"\u223D\u0331","&racute;":"\u0155","&radic;":"\u221A","&raemptyv;":"\u29B3","&rang;":"\u27E9","&rangd;":"\u2992","&range;":"\u29A5","&rangle;":"\u27E9","&raquo":"\xBB","&raquo;":"\xBB","&rarr;":"\u2192","&rarrap;":"\u2975","&rarrb;":"\u21E5","&rarrbfs;":"\u2920","&rarrc;":"\u2933","&rarrfs;":"\u291E","&rarrhk;":"\u21AA","&rarrlp;":"\u21AC","&rarrpl;":"\u2945","&rarrsim;":"\u2974","&rarrtl;":"\u21A3","&rarrw;":"\u219D","&ratail;":"\u291A","&ratio;":"\u2236","&rationals;":"\u211A","&rbarr;":"\u290D","&rbbrk;":"\u2773","&rbrace;":"}","&rbrack;":"]","&rbrke;":"\u298C","&rbrksld;":"\u298E","&rbrkslu;":"\u2990","&rcaron;":"\u0159","&rcedil;":"\u0157","&rceil;":"\u2309","&rcub;":"}","&rcy;":"\u0440","&rdca;":"\u2937","&rdldhar;":"\u2969","&rdquo;":"\u201D","&rdquor;":"\u201D","&rdsh;":"\u21B3","&real;":"\u211C","&realine;":"\u211B","&realpart;":"\u211C","&reals;":"\u211D","&rect;":"\u25AD","&reg":"\xAE","&reg;":"\xAE","&rfisht;":"\u297D","&rfloor;":"\u230B","&rfr;":"\u{1D52F}","&rhard;":"\u21C1","&rharu;":"\u21C0","&rharul;":"\u296C","&rho;":"\u03C1","&rhov;":"\u03F1","&rightarrow;":"\u2192","&rightarrowtail;":"\u21A3","&rightharpoondown;":"\u21C1","&rightharpoonup;":"\u21C0","&rightleftarrows;":"\u21C4","&rightleftharpoons;":"\u21CC","&rightrightarrows;":"\u21C9","&rightsquigarrow;":"\u219D","&rightthreetimes;":"\u22CC","&ring;":"\u02DA","&risingdotseq;":"\u2253","&rlarr;":"\u21C4","&rlhar;":"\u21CC","&rlm;":"\u200F","&rmoust;":"\u23B1","&rmoustache;":"\u23B1","&rnmid;":"\u2AEE","&roang;":"\u27ED","&roarr;":"\u21FE","&robrk;":"\u27E7","&ropar;":"\u2986","&ropf;":"\u{1D563}","&roplus;":"\u2A2E","&rotimes;":"\u2A35","&rpar;":")","&rpargt;":"\u2994","&rppolint;":"\u2A12","&rrarr;":"\u21C9","&rsaquo;":"\u203A","&rscr;":"\u{1D4C7}","&rsh;":"\u21B1","&rsqb;":"]","&rsquo;":"\u2019","&rsquor;":"\u2019","&rthree;":"\u22CC","&rtimes;":"\u22CA","&rtri;":"\u25B9","&rtrie;":"\u22B5","&rtrif;":"\u25B8","&rtriltri;":"\u29CE","&ruluhar;":"\u2968","&rx;":"\u211E","&sacute;":"\u015B","&sbquo;":"\u201A","&sc;":"\u227B","&scE;":"\u2AB4","&scap;":"\u2AB8","&scaron;":"\u0161","&sccue;":"\u227D","&sce;":"\u2AB0","&scedil;":"\u015F","&scirc;":"\u015D","&scnE;":"\u2AB6","&scnap;":"\u2ABA","&scnsim;":"\u22E9","&scpolint;":"\u2A13","&scsim;":"\u227F","&scy;":"\u0441","&sdot;":"\u22C5","&sdotb;":"\u22A1","&sdote;":"\u2A66","&seArr;":"\u21D8","&searhk;":"\u2925","&searr;":"\u2198","&searrow;":"\u2198","&sect":"\xA7","&sect;":"\xA7","&semi;":";","&seswar;":"\u2929","&setminus;":"\u2216","&setmn;":"\u2216","&sext;":"\u2736","&sfr;":"\u{1D530}","&sfrown;":"\u2322","&sharp;":"\u266F","&shchcy;":"\u0449","&shcy;":"\u0448","&shortmid;":"\u2223","&shortparallel;":"\u2225","&shy":"\xAD","&shy;":"\xAD","&sigma;":"\u03C3","&sigmaf;":"\u03C2","&sigmav;":"\u03C2","&sim;":"\u223C","&simdot;":"\u2A6A","&sime;":"\u2243","&simeq;":"\u2243","&simg;":"\u2A9E","&simgE;":"\u2AA0","&siml;":"\u2A9D","&simlE;":"\u2A9F","&simne;":"\u2246","&simplus;":"\u2A24","&simrarr;":"\u2972","&slarr;":"\u2190","&smallsetminus;":"\u2216","&smashp;":"\u2A33","&smeparsl;":"\u29E4","&smid;":"\u2223","&smile;":"\u2323","&smt;":"\u2AAA","&smte;":"\u2AAC","&smtes;":"\u2AAC\uFE00","&softcy;":"\u044C","&sol;":"/","&solb;":"\u29C4","&solbar;":"\u233F","&sopf;":"\u{1D564}","&spades;":"\u2660","&spadesuit;":"\u2660","&spar;":"\u2225","&sqcap;":"\u2293","&sqcaps;":"\u2293\uFE00","&sqcup;":"\u2294","&sqcups;":"\u2294\uFE00","&sqsub;":"\u228F","&sqsube;":"\u2291","&sqsubset;":"\u228F","&sqsubseteq;":"\u2291","&sqsup;":"\u2290","&sqsupe;":"\u2292","&sqsupset;":"\u2290","&sqsupseteq;":"\u2292","&squ;":"\u25A1","&square;":"\u25A1","&squarf;":"\u25AA","&squf;":"\u25AA","&srarr;":"\u2192","&sscr;":"\u{1D4C8}","&ssetmn;":"\u2216","&ssmile;":"\u2323","&sstarf;":"\u22C6","&star;":"\u2606","&starf;":"\u2605","&straightepsilon;":"\u03F5","&straightphi;":"\u03D5","&strns;":"\xAF","&sub;":"\u2282","&subE;":"\u2AC5","&subdot;":"\u2ABD","&sube;":"\u2286","&subedot;":"\u2AC3","&submult;":"\u2AC1","&subnE;":"\u2ACB","&subne;":"\u228A","&subplus;":"\u2ABF","&subrarr;":"\u2979","&subset;":"\u2282","&subseteq;":"\u2286","&subseteqq;":"\u2AC5","&subsetneq;":"\u228A","&subsetneqq;":"\u2ACB","&subsim;":"\u2AC7","&subsub;":"\u2AD5","&subsup;":"\u2AD3","&succ;":"\u227B","&succapprox;":"\u2AB8","&succcurlyeq;":"\u227D","&succeq;":"\u2AB0","&succnapprox;":"\u2ABA","&succneqq;":"\u2AB6","&succnsim;":"\u22E9","&succsim;":"\u227F","&sum;":"\u2211","&sung;":"\u266A","&sup1":"\xB9","&sup1;":"\xB9","&sup2":"\xB2","&sup2;":"\xB2","&sup3":"\xB3","&sup3;":"\xB3","&sup;":"\u2283","&supE;":"\u2AC6","&supdot;":"\u2ABE","&supdsub;":"\u2AD8","&supe;":"\u2287","&supedot;":"\u2AC4","&suphsol;":"\u27C9","&suphsub;":"\u2AD7","&suplarr;":"\u297B","&supmult;":"\u2AC2","&supnE;":"\u2ACC","&supne;":"\u228B","&supplus;":"\u2AC0","&supset;":"\u2283","&supseteq;":"\u2287","&supseteqq;":"\u2AC6","&supsetneq;":"\u228B","&supsetneqq;":"\u2ACC","&supsim;":"\u2AC8","&supsub;":"\u2AD4","&supsup;":"\u2AD6","&swArr;":"\u21D9","&swarhk;":"\u2926","&swarr;":"\u2199","&swarrow;":"\u2199","&swnwar;":"\u292A","&szlig":"\xDF","&szlig;":"\xDF","&target;":"\u2316","&tau;":"\u03C4","&tbrk;":"\u23B4","&tcaron;":"\u0165","&tcedil;":"\u0163","&tcy;":"\u0442","&tdot;":"\u20DB","&telrec;":"\u2315","&tfr;":"\u{1D531}","&there4;":"\u2234","&therefore;":"\u2234","&theta;":"\u03B8","&thetasym;":"\u03D1","&thetav;":"\u03D1","&thickapprox;":"\u2248","&thicksim;":"\u223C","&thinsp;":"\u2009","&thkap;":"\u2248","&thksim;":"\u223C","&thorn":"\xFE","&thorn;":"\xFE","&tilde;":"\u02DC","&times":"\xD7","&times;":"\xD7","&timesb;":"\u22A0","&timesbar;":"\u2A31","&timesd;":"\u2A30","&tint;":"\u222D","&toea;":"\u2928","&top;":"\u22A4","&topbot;":"\u2336","&topcir;":"\u2AF1","&topf;":"\u{1D565}","&topfork;":"\u2ADA","&tosa;":"\u2929","&tprime;":"\u2034","&trade;":"\u2122","&triangle;":"\u25B5","&triangledown;":"\u25BF","&triangleleft;":"\u25C3","&trianglelefteq;":"\u22B4","&triangleq;":"\u225C","&triangleright;":"\u25B9","&trianglerighteq;":"\u22B5","&tridot;":"\u25EC","&trie;":"\u225C","&triminus;":"\u2A3A","&triplus;":"\u2A39","&trisb;":"\u29CD","&tritime;":"\u2A3B","&trpezium;":"\u23E2","&tscr;":"\u{1D4C9}","&tscy;":"\u0446","&tshcy;":"\u045B","&tstrok;":"\u0167","&twixt;":"\u226C","&twoheadleftarrow;":"\u219E","&twoheadrightarrow;":"\u21A0","&uArr;":"\u21D1","&uHar;":"\u2963","&uacute":"\xFA","&uacute;":"\xFA","&uarr;":"\u2191","&ubrcy;":"\u045E","&ubreve;":"\u016D","&ucirc":"\xFB","&ucirc;":"\xFB","&ucy;":"\u0443","&udarr;":"\u21C5","&udblac;":"\u0171","&udhar;":"\u296E","&ufisht;":"\u297E","&ufr;":"\u{1D532}","&ugrave":"\xF9","&ugrave;":"\xF9","&uharl;":"\u21BF","&uharr;":"\u21BE","&uhblk;":"\u2580","&ulcorn;":"\u231C","&ulcorner;":"\u231C","&ulcrop;":"\u230F","&ultri;":"\u25F8","&umacr;":"\u016B","&uml":"\xA8","&uml;":"\xA8","&uogon;":"\u0173","&uopf;":"\u{1D566}","&uparrow;":"\u2191","&updownarrow;":"\u2195","&upharpoonleft;":"\u21BF","&upharpoonright;":"\u21BE","&uplus;":"\u228E","&upsi;":"\u03C5","&upsih;":"\u03D2","&upsilon;":"\u03C5","&upuparrows;":"\u21C8","&urcorn;":"\u231D","&urcorner;":"\u231D","&urcrop;":"\u230E","&uring;":"\u016F","&urtri;":"\u25F9","&uscr;":"\u{1D4CA}","&utdot;":"\u22F0","&utilde;":"\u0169","&utri;":"\u25B5","&utrif;":"\u25B4","&uuarr;":"\u21C8","&uuml":"\xFC","&uuml;":"\xFC","&uwangle;":"\u29A7","&vArr;":"\u21D5","&vBar;":"\u2AE8","&vBarv;":"\u2AE9","&vDash;":"\u22A8","&vangrt;":"\u299C","&varepsilon;":"\u03F5","&varkappa;":"\u03F0","&varnothing;":"\u2205","&varphi;":"\u03D5","&varpi;":"\u03D6","&varpropto;":"\u221D","&varr;":"\u2195","&varrho;":"\u03F1","&varsigma;":"\u03C2","&varsubsetneq;":"\u228A\uFE00","&varsubsetneqq;":"\u2ACB\uFE00","&varsupsetneq;":"\u228B\uFE00","&varsupsetneqq;":"\u2ACC\uFE00","&vartheta;":"\u03D1","&vartriangleleft;":"\u22B2","&vartriangleright;":"\u22B3","&vcy;":"\u0432","&vdash;":"\u22A2","&vee;":"\u2228","&veebar;":"\u22BB","&veeeq;":"\u225A","&vellip;":"\u22EE","&verbar;":"|","&vert;":"|","&vfr;":"\u{1D533}","&vltri;":"\u22B2","&vnsub;":"\u2282\u20D2","&vnsup;":"\u2283\u20D2","&vopf;":"\u{1D567}","&vprop;":"\u221D","&vrtri;":"\u22B3","&vscr;":"\u{1D4CB}","&vsubnE;":"\u2ACB\uFE00","&vsubne;":"\u228A\uFE00","&vsupnE;":"\u2ACC\uFE00","&vsupne;":"\u228B\uFE00","&vzigzag;":"\u299A","&wcirc;":"\u0175","&wedbar;":"\u2A5F","&wedge;":"\u2227","&wedgeq;":"\u2259","&weierp;":"\u2118","&wfr;":"\u{1D534}","&wopf;":"\u{1D568}","&wp;":"\u2118","&wr;":"\u2240","&wreath;":"\u2240","&wscr;":"\u{1D4CC}","&xcap;":"\u22C2","&xcirc;":"\u25EF","&xcup;":"\u22C3","&xdtri;":"\u25BD","&xfr;":"\u{1D535}","&xhArr;":"\u27FA","&xharr;":"\u27F7","&xi;":"\u03BE","&xlArr;":"\u27F8","&xlarr;":"\u27F5","&xmap;":"\u27FC","&xnis;":"\u22FB","&xodot;":"\u2A00","&xopf;":"\u{1D569}","&xoplus;":"\u2A01","&xotime;":"\u2A02","&xrArr;":"\u27F9","&xrarr;":"\u27F6","&xscr;":"\u{1D4CD}","&xsqcup;":"\u2A06","&xuplus;":"\u2A04","&xutri;":"\u25B3","&xvee;":"\u22C1","&xwedge;":"\u22C0","&yacute":"\xFD","&yacute;":"\xFD","&yacy;":"\u044F","&ycirc;":"\u0177","&ycy;":"\u044B","&yen":"\xA5","&yen;":"\xA5","&yfr;":"\u{1D536}","&yicy;":"\u0457","&yopf;":"\u{1D56A}","&yscr;":"\u{1D4CE}","&yucy;":"\u044E","&yuml":"\xFF","&yuml;":"\xFF","&zacute;":"\u017A","&zcaron;":"\u017E","&zcy;":"\u0437","&zdot;":"\u017C","&zeetrf;":"\u2128","&zeta;":"\u03B6","&zfr;":"\u{1D537}","&zhcy;":"\u0436","&zigrarr;":"\u21DD","&zopf;":"\u{1D56B}","&zscr;":"\u{1D4CF}","&zwj;":"\u200D","&zwnj;":"\u200C"},er=np;function sp(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,(t,o)=>{if(typeof er[t]=="string")return er[t];if(o.charAt(0)!=="#"||t.charAt(t.length-1)!==";")return t;let i;o.charAt(1)==="x"?i=parseInt(o.substr(2),16):i=parseInt(o.substr(1),10);let r="";return i>=55296&&i<=57343||i>1114111?"\uFFFD":(i>65535&&(i-=65536,r+=String.fromCharCode(i>>>10&1023|55296),i=56320|i&1023),r+=String.fromCharCode(i),r)})}function Kt(e){return e.trim().replace(/[<>"'?&]/g,t=>{let o=t.charCodeAt(0).toString(16);return o.length<2&&(o="0"+o),"&#x"+o.toUpperCase()+";"})}function Vn(e){return"<div>"+Kt(e).replace(/\n/g,"<br />")+"</div>"}function zn(e){return e=e.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,`
257
+ `+o,this.headerLines.splice(t,1))}this.rawHeaderLines=[];for(let t=this.headerLines.length-1;t>=0;t--){let o=this.headerLines[t],i=o.indexOf(":"),r=i<0?o.trim():o.substr(0,i).trim();this.rawHeaderLines.push({key:r.toLowerCase(),line:o});let n=o.replace(/\s+/g," ");i=n.indexOf(":");let s=i<0?n.trim():n.substr(0,i).trim(),a=i<0?"":n.substr(i+1).trim();switch(this.headers.push({key:s.toLowerCase(),originalKey:s,value:a}),s.toLowerCase()){case"content-type":this.contentType.default&&(this.contentType={value:a,parsed:{}});break;case"content-transfer-encoding":this.contentTransferEncoding={value:a,parsed:{}};break;case"content-disposition":this.contentDisposition={value:a,parsed:{}};break;case"content-id":this.contentId=a;break;case"content-description":this.contentDescription=a;break}}this.contentType.parsed=this.parseStructuredHeader(this.contentType.value),this.contentType.multipart=/^multipart\//i.test(this.contentType.parsed.value)?this.contentType.parsed.value.substr(this.contentType.parsed.value.indexOf("/")+1):!1,this.contentType.multipart&&this.contentType.parsed.params.boundary&&this.postalMime.boundaries.push({value:ct.encode(this.contentType.parsed.params.boundary),node:this}),this.contentDisposition.parsed=this.parseStructuredHeader(this.contentDisposition.value),this.contentTransferEncoding.encoding=this.contentTransferEncoding.value.toLowerCase().split(/[^\w-]/).shift(),this.setupContentDecoder(this.contentTransferEncoding.encoding)}feed(t){switch(this.state){case"header":if(!t.length)return this.state="body",this.processHeaders();if(this.headerSize+=t.length,this.headerSize>this.options.maxHeadersSize)throw new Error(`Maximum header size of ${this.options.maxHeadersSize} bytes exceeded`);this.headerLines.push(np.decode(t));break;case"body":this.contentDecoder.update(t)}}};var sp={"&AElig":"\xC6","&AElig;":"\xC6","&AMP":"&","&AMP;":"&","&Aacute":"\xC1","&Aacute;":"\xC1","&Abreve;":"\u0102","&Acirc":"\xC2","&Acirc;":"\xC2","&Acy;":"\u0410","&Afr;":"\u{1D504}","&Agrave":"\xC0","&Agrave;":"\xC0","&Alpha;":"\u0391","&Amacr;":"\u0100","&And;":"\u2A53","&Aogon;":"\u0104","&Aopf;":"\u{1D538}","&ApplyFunction;":"\u2061","&Aring":"\xC5","&Aring;":"\xC5","&Ascr;":"\u{1D49C}","&Assign;":"\u2254","&Atilde":"\xC3","&Atilde;":"\xC3","&Auml":"\xC4","&Auml;":"\xC4","&Backslash;":"\u2216","&Barv;":"\u2AE7","&Barwed;":"\u2306","&Bcy;":"\u0411","&Because;":"\u2235","&Bernoullis;":"\u212C","&Beta;":"\u0392","&Bfr;":"\u{1D505}","&Bopf;":"\u{1D539}","&Breve;":"\u02D8","&Bscr;":"\u212C","&Bumpeq;":"\u224E","&CHcy;":"\u0427","&COPY":"\xA9","&COPY;":"\xA9","&Cacute;":"\u0106","&Cap;":"\u22D2","&CapitalDifferentialD;":"\u2145","&Cayleys;":"\u212D","&Ccaron;":"\u010C","&Ccedil":"\xC7","&Ccedil;":"\xC7","&Ccirc;":"\u0108","&Cconint;":"\u2230","&Cdot;":"\u010A","&Cedilla;":"\xB8","&CenterDot;":"\xB7","&Cfr;":"\u212D","&Chi;":"\u03A7","&CircleDot;":"\u2299","&CircleMinus;":"\u2296","&CirclePlus;":"\u2295","&CircleTimes;":"\u2297","&ClockwiseContourIntegral;":"\u2232","&CloseCurlyDoubleQuote;":"\u201D","&CloseCurlyQuote;":"\u2019","&Colon;":"\u2237","&Colone;":"\u2A74","&Congruent;":"\u2261","&Conint;":"\u222F","&ContourIntegral;":"\u222E","&Copf;":"\u2102","&Coproduct;":"\u2210","&CounterClockwiseContourIntegral;":"\u2233","&Cross;":"\u2A2F","&Cscr;":"\u{1D49E}","&Cup;":"\u22D3","&CupCap;":"\u224D","&DD;":"\u2145","&DDotrahd;":"\u2911","&DJcy;":"\u0402","&DScy;":"\u0405","&DZcy;":"\u040F","&Dagger;":"\u2021","&Darr;":"\u21A1","&Dashv;":"\u2AE4","&Dcaron;":"\u010E","&Dcy;":"\u0414","&Del;":"\u2207","&Delta;":"\u0394","&Dfr;":"\u{1D507}","&DiacriticalAcute;":"\xB4","&DiacriticalDot;":"\u02D9","&DiacriticalDoubleAcute;":"\u02DD","&DiacriticalGrave;":"`","&DiacriticalTilde;":"\u02DC","&Diamond;":"\u22C4","&DifferentialD;":"\u2146","&Dopf;":"\u{1D53B}","&Dot;":"\xA8","&DotDot;":"\u20DC","&DotEqual;":"\u2250","&DoubleContourIntegral;":"\u222F","&DoubleDot;":"\xA8","&DoubleDownArrow;":"\u21D3","&DoubleLeftArrow;":"\u21D0","&DoubleLeftRightArrow;":"\u21D4","&DoubleLeftTee;":"\u2AE4","&DoubleLongLeftArrow;":"\u27F8","&DoubleLongLeftRightArrow;":"\u27FA","&DoubleLongRightArrow;":"\u27F9","&DoubleRightArrow;":"\u21D2","&DoubleRightTee;":"\u22A8","&DoubleUpArrow;":"\u21D1","&DoubleUpDownArrow;":"\u21D5","&DoubleVerticalBar;":"\u2225","&DownArrow;":"\u2193","&DownArrowBar;":"\u2913","&DownArrowUpArrow;":"\u21F5","&DownBreve;":"\u0311","&DownLeftRightVector;":"\u2950","&DownLeftTeeVector;":"\u295E","&DownLeftVector;":"\u21BD","&DownLeftVectorBar;":"\u2956","&DownRightTeeVector;":"\u295F","&DownRightVector;":"\u21C1","&DownRightVectorBar;":"\u2957","&DownTee;":"\u22A4","&DownTeeArrow;":"\u21A7","&Downarrow;":"\u21D3","&Dscr;":"\u{1D49F}","&Dstrok;":"\u0110","&ENG;":"\u014A","&ETH":"\xD0","&ETH;":"\xD0","&Eacute":"\xC9","&Eacute;":"\xC9","&Ecaron;":"\u011A","&Ecirc":"\xCA","&Ecirc;":"\xCA","&Ecy;":"\u042D","&Edot;":"\u0116","&Efr;":"\u{1D508}","&Egrave":"\xC8","&Egrave;":"\xC8","&Element;":"\u2208","&Emacr;":"\u0112","&EmptySmallSquare;":"\u25FB","&EmptyVerySmallSquare;":"\u25AB","&Eogon;":"\u0118","&Eopf;":"\u{1D53C}","&Epsilon;":"\u0395","&Equal;":"\u2A75","&EqualTilde;":"\u2242","&Equilibrium;":"\u21CC","&Escr;":"\u2130","&Esim;":"\u2A73","&Eta;":"\u0397","&Euml":"\xCB","&Euml;":"\xCB","&Exists;":"\u2203","&ExponentialE;":"\u2147","&Fcy;":"\u0424","&Ffr;":"\u{1D509}","&FilledSmallSquare;":"\u25FC","&FilledVerySmallSquare;":"\u25AA","&Fopf;":"\u{1D53D}","&ForAll;":"\u2200","&Fouriertrf;":"\u2131","&Fscr;":"\u2131","&GJcy;":"\u0403","&GT":">","&GT;":">","&Gamma;":"\u0393","&Gammad;":"\u03DC","&Gbreve;":"\u011E","&Gcedil;":"\u0122","&Gcirc;":"\u011C","&Gcy;":"\u0413","&Gdot;":"\u0120","&Gfr;":"\u{1D50A}","&Gg;":"\u22D9","&Gopf;":"\u{1D53E}","&GreaterEqual;":"\u2265","&GreaterEqualLess;":"\u22DB","&GreaterFullEqual;":"\u2267","&GreaterGreater;":"\u2AA2","&GreaterLess;":"\u2277","&GreaterSlantEqual;":"\u2A7E","&GreaterTilde;":"\u2273","&Gscr;":"\u{1D4A2}","&Gt;":"\u226B","&HARDcy;":"\u042A","&Hacek;":"\u02C7","&Hat;":"^","&Hcirc;":"\u0124","&Hfr;":"\u210C","&HilbertSpace;":"\u210B","&Hopf;":"\u210D","&HorizontalLine;":"\u2500","&Hscr;":"\u210B","&Hstrok;":"\u0126","&HumpDownHump;":"\u224E","&HumpEqual;":"\u224F","&IEcy;":"\u0415","&IJlig;":"\u0132","&IOcy;":"\u0401","&Iacute":"\xCD","&Iacute;":"\xCD","&Icirc":"\xCE","&Icirc;":"\xCE","&Icy;":"\u0418","&Idot;":"\u0130","&Ifr;":"\u2111","&Igrave":"\xCC","&Igrave;":"\xCC","&Im;":"\u2111","&Imacr;":"\u012A","&ImaginaryI;":"\u2148","&Implies;":"\u21D2","&Int;":"\u222C","&Integral;":"\u222B","&Intersection;":"\u22C2","&InvisibleComma;":"\u2063","&InvisibleTimes;":"\u2062","&Iogon;":"\u012E","&Iopf;":"\u{1D540}","&Iota;":"\u0399","&Iscr;":"\u2110","&Itilde;":"\u0128","&Iukcy;":"\u0406","&Iuml":"\xCF","&Iuml;":"\xCF","&Jcirc;":"\u0134","&Jcy;":"\u0419","&Jfr;":"\u{1D50D}","&Jopf;":"\u{1D541}","&Jscr;":"\u{1D4A5}","&Jsercy;":"\u0408","&Jukcy;":"\u0404","&KHcy;":"\u0425","&KJcy;":"\u040C","&Kappa;":"\u039A","&Kcedil;":"\u0136","&Kcy;":"\u041A","&Kfr;":"\u{1D50E}","&Kopf;":"\u{1D542}","&Kscr;":"\u{1D4A6}","&LJcy;":"\u0409","&LT":"<","&LT;":"<","&Lacute;":"\u0139","&Lambda;":"\u039B","&Lang;":"\u27EA","&Laplacetrf;":"\u2112","&Larr;":"\u219E","&Lcaron;":"\u013D","&Lcedil;":"\u013B","&Lcy;":"\u041B","&LeftAngleBracket;":"\u27E8","&LeftArrow;":"\u2190","&LeftArrowBar;":"\u21E4","&LeftArrowRightArrow;":"\u21C6","&LeftCeiling;":"\u2308","&LeftDoubleBracket;":"\u27E6","&LeftDownTeeVector;":"\u2961","&LeftDownVector;":"\u21C3","&LeftDownVectorBar;":"\u2959","&LeftFloor;":"\u230A","&LeftRightArrow;":"\u2194","&LeftRightVector;":"\u294E","&LeftTee;":"\u22A3","&LeftTeeArrow;":"\u21A4","&LeftTeeVector;":"\u295A","&LeftTriangle;":"\u22B2","&LeftTriangleBar;":"\u29CF","&LeftTriangleEqual;":"\u22B4","&LeftUpDownVector;":"\u2951","&LeftUpTeeVector;":"\u2960","&LeftUpVector;":"\u21BF","&LeftUpVectorBar;":"\u2958","&LeftVector;":"\u21BC","&LeftVectorBar;":"\u2952","&Leftarrow;":"\u21D0","&Leftrightarrow;":"\u21D4","&LessEqualGreater;":"\u22DA","&LessFullEqual;":"\u2266","&LessGreater;":"\u2276","&LessLess;":"\u2AA1","&LessSlantEqual;":"\u2A7D","&LessTilde;":"\u2272","&Lfr;":"\u{1D50F}","&Ll;":"\u22D8","&Lleftarrow;":"\u21DA","&Lmidot;":"\u013F","&LongLeftArrow;":"\u27F5","&LongLeftRightArrow;":"\u27F7","&LongRightArrow;":"\u27F6","&Longleftarrow;":"\u27F8","&Longleftrightarrow;":"\u27FA","&Longrightarrow;":"\u27F9","&Lopf;":"\u{1D543}","&LowerLeftArrow;":"\u2199","&LowerRightArrow;":"\u2198","&Lscr;":"\u2112","&Lsh;":"\u21B0","&Lstrok;":"\u0141","&Lt;":"\u226A","&Map;":"\u2905","&Mcy;":"\u041C","&MediumSpace;":"\u205F","&Mellintrf;":"\u2133","&Mfr;":"\u{1D510}","&MinusPlus;":"\u2213","&Mopf;":"\u{1D544}","&Mscr;":"\u2133","&Mu;":"\u039C","&NJcy;":"\u040A","&Nacute;":"\u0143","&Ncaron;":"\u0147","&Ncedil;":"\u0145","&Ncy;":"\u041D","&NegativeMediumSpace;":"\u200B","&NegativeThickSpace;":"\u200B","&NegativeThinSpace;":"\u200B","&NegativeVeryThinSpace;":"\u200B","&NestedGreaterGreater;":"\u226B","&NestedLessLess;":"\u226A","&NewLine;":`
258
+ `,"&Nfr;":"\u{1D511}","&NoBreak;":"\u2060","&NonBreakingSpace;":"\xA0","&Nopf;":"\u2115","&Not;":"\u2AEC","&NotCongruent;":"\u2262","&NotCupCap;":"\u226D","&NotDoubleVerticalBar;":"\u2226","&NotElement;":"\u2209","&NotEqual;":"\u2260","&NotEqualTilde;":"\u2242\u0338","&NotExists;":"\u2204","&NotGreater;":"\u226F","&NotGreaterEqual;":"\u2271","&NotGreaterFullEqual;":"\u2267\u0338","&NotGreaterGreater;":"\u226B\u0338","&NotGreaterLess;":"\u2279","&NotGreaterSlantEqual;":"\u2A7E\u0338","&NotGreaterTilde;":"\u2275","&NotHumpDownHump;":"\u224E\u0338","&NotHumpEqual;":"\u224F\u0338","&NotLeftTriangle;":"\u22EA","&NotLeftTriangleBar;":"\u29CF\u0338","&NotLeftTriangleEqual;":"\u22EC","&NotLess;":"\u226E","&NotLessEqual;":"\u2270","&NotLessGreater;":"\u2278","&NotLessLess;":"\u226A\u0338","&NotLessSlantEqual;":"\u2A7D\u0338","&NotLessTilde;":"\u2274","&NotNestedGreaterGreater;":"\u2AA2\u0338","&NotNestedLessLess;":"\u2AA1\u0338","&NotPrecedes;":"\u2280","&NotPrecedesEqual;":"\u2AAF\u0338","&NotPrecedesSlantEqual;":"\u22E0","&NotReverseElement;":"\u220C","&NotRightTriangle;":"\u22EB","&NotRightTriangleBar;":"\u29D0\u0338","&NotRightTriangleEqual;":"\u22ED","&NotSquareSubset;":"\u228F\u0338","&NotSquareSubsetEqual;":"\u22E2","&NotSquareSuperset;":"\u2290\u0338","&NotSquareSupersetEqual;":"\u22E3","&NotSubset;":"\u2282\u20D2","&NotSubsetEqual;":"\u2288","&NotSucceeds;":"\u2281","&NotSucceedsEqual;":"\u2AB0\u0338","&NotSucceedsSlantEqual;":"\u22E1","&NotSucceedsTilde;":"\u227F\u0338","&NotSuperset;":"\u2283\u20D2","&NotSupersetEqual;":"\u2289","&NotTilde;":"\u2241","&NotTildeEqual;":"\u2244","&NotTildeFullEqual;":"\u2247","&NotTildeTilde;":"\u2249","&NotVerticalBar;":"\u2224","&Nscr;":"\u{1D4A9}","&Ntilde":"\xD1","&Ntilde;":"\xD1","&Nu;":"\u039D","&OElig;":"\u0152","&Oacute":"\xD3","&Oacute;":"\xD3","&Ocirc":"\xD4","&Ocirc;":"\xD4","&Ocy;":"\u041E","&Odblac;":"\u0150","&Ofr;":"\u{1D512}","&Ograve":"\xD2","&Ograve;":"\xD2","&Omacr;":"\u014C","&Omega;":"\u03A9","&Omicron;":"\u039F","&Oopf;":"\u{1D546}","&OpenCurlyDoubleQuote;":"\u201C","&OpenCurlyQuote;":"\u2018","&Or;":"\u2A54","&Oscr;":"\u{1D4AA}","&Oslash":"\xD8","&Oslash;":"\xD8","&Otilde":"\xD5","&Otilde;":"\xD5","&Otimes;":"\u2A37","&Ouml":"\xD6","&Ouml;":"\xD6","&OverBar;":"\u203E","&OverBrace;":"\u23DE","&OverBracket;":"\u23B4","&OverParenthesis;":"\u23DC","&PartialD;":"\u2202","&Pcy;":"\u041F","&Pfr;":"\u{1D513}","&Phi;":"\u03A6","&Pi;":"\u03A0","&PlusMinus;":"\xB1","&Poincareplane;":"\u210C","&Popf;":"\u2119","&Pr;":"\u2ABB","&Precedes;":"\u227A","&PrecedesEqual;":"\u2AAF","&PrecedesSlantEqual;":"\u227C","&PrecedesTilde;":"\u227E","&Prime;":"\u2033","&Product;":"\u220F","&Proportion;":"\u2237","&Proportional;":"\u221D","&Pscr;":"\u{1D4AB}","&Psi;":"\u03A8","&QUOT":'"',"&QUOT;":'"',"&Qfr;":"\u{1D514}","&Qopf;":"\u211A","&Qscr;":"\u{1D4AC}","&RBarr;":"\u2910","&REG":"\xAE","&REG;":"\xAE","&Racute;":"\u0154","&Rang;":"\u27EB","&Rarr;":"\u21A0","&Rarrtl;":"\u2916","&Rcaron;":"\u0158","&Rcedil;":"\u0156","&Rcy;":"\u0420","&Re;":"\u211C","&ReverseElement;":"\u220B","&ReverseEquilibrium;":"\u21CB","&ReverseUpEquilibrium;":"\u296F","&Rfr;":"\u211C","&Rho;":"\u03A1","&RightAngleBracket;":"\u27E9","&RightArrow;":"\u2192","&RightArrowBar;":"\u21E5","&RightArrowLeftArrow;":"\u21C4","&RightCeiling;":"\u2309","&RightDoubleBracket;":"\u27E7","&RightDownTeeVector;":"\u295D","&RightDownVector;":"\u21C2","&RightDownVectorBar;":"\u2955","&RightFloor;":"\u230B","&RightTee;":"\u22A2","&RightTeeArrow;":"\u21A6","&RightTeeVector;":"\u295B","&RightTriangle;":"\u22B3","&RightTriangleBar;":"\u29D0","&RightTriangleEqual;":"\u22B5","&RightUpDownVector;":"\u294F","&RightUpTeeVector;":"\u295C","&RightUpVector;":"\u21BE","&RightUpVectorBar;":"\u2954","&RightVector;":"\u21C0","&RightVectorBar;":"\u2953","&Rightarrow;":"\u21D2","&Ropf;":"\u211D","&RoundImplies;":"\u2970","&Rrightarrow;":"\u21DB","&Rscr;":"\u211B","&Rsh;":"\u21B1","&RuleDelayed;":"\u29F4","&SHCHcy;":"\u0429","&SHcy;":"\u0428","&SOFTcy;":"\u042C","&Sacute;":"\u015A","&Sc;":"\u2ABC","&Scaron;":"\u0160","&Scedil;":"\u015E","&Scirc;":"\u015C","&Scy;":"\u0421","&Sfr;":"\u{1D516}","&ShortDownArrow;":"\u2193","&ShortLeftArrow;":"\u2190","&ShortRightArrow;":"\u2192","&ShortUpArrow;":"\u2191","&Sigma;":"\u03A3","&SmallCircle;":"\u2218","&Sopf;":"\u{1D54A}","&Sqrt;":"\u221A","&Square;":"\u25A1","&SquareIntersection;":"\u2293","&SquareSubset;":"\u228F","&SquareSubsetEqual;":"\u2291","&SquareSuperset;":"\u2290","&SquareSupersetEqual;":"\u2292","&SquareUnion;":"\u2294","&Sscr;":"\u{1D4AE}","&Star;":"\u22C6","&Sub;":"\u22D0","&Subset;":"\u22D0","&SubsetEqual;":"\u2286","&Succeeds;":"\u227B","&SucceedsEqual;":"\u2AB0","&SucceedsSlantEqual;":"\u227D","&SucceedsTilde;":"\u227F","&SuchThat;":"\u220B","&Sum;":"\u2211","&Sup;":"\u22D1","&Superset;":"\u2283","&SupersetEqual;":"\u2287","&Supset;":"\u22D1","&THORN":"\xDE","&THORN;":"\xDE","&TRADE;":"\u2122","&TSHcy;":"\u040B","&TScy;":"\u0426","&Tab;":" ","&Tau;":"\u03A4","&Tcaron;":"\u0164","&Tcedil;":"\u0162","&Tcy;":"\u0422","&Tfr;":"\u{1D517}","&Therefore;":"\u2234","&Theta;":"\u0398","&ThickSpace;":"\u205F\u200A","&ThinSpace;":"\u2009","&Tilde;":"\u223C","&TildeEqual;":"\u2243","&TildeFullEqual;":"\u2245","&TildeTilde;":"\u2248","&Topf;":"\u{1D54B}","&TripleDot;":"\u20DB","&Tscr;":"\u{1D4AF}","&Tstrok;":"\u0166","&Uacute":"\xDA","&Uacute;":"\xDA","&Uarr;":"\u219F","&Uarrocir;":"\u2949","&Ubrcy;":"\u040E","&Ubreve;":"\u016C","&Ucirc":"\xDB","&Ucirc;":"\xDB","&Ucy;":"\u0423","&Udblac;":"\u0170","&Ufr;":"\u{1D518}","&Ugrave":"\xD9","&Ugrave;":"\xD9","&Umacr;":"\u016A","&UnderBar;":"_","&UnderBrace;":"\u23DF","&UnderBracket;":"\u23B5","&UnderParenthesis;":"\u23DD","&Union;":"\u22C3","&UnionPlus;":"\u228E","&Uogon;":"\u0172","&Uopf;":"\u{1D54C}","&UpArrow;":"\u2191","&UpArrowBar;":"\u2912","&UpArrowDownArrow;":"\u21C5","&UpDownArrow;":"\u2195","&UpEquilibrium;":"\u296E","&UpTee;":"\u22A5","&UpTeeArrow;":"\u21A5","&Uparrow;":"\u21D1","&Updownarrow;":"\u21D5","&UpperLeftArrow;":"\u2196","&UpperRightArrow;":"\u2197","&Upsi;":"\u03D2","&Upsilon;":"\u03A5","&Uring;":"\u016E","&Uscr;":"\u{1D4B0}","&Utilde;":"\u0168","&Uuml":"\xDC","&Uuml;":"\xDC","&VDash;":"\u22AB","&Vbar;":"\u2AEB","&Vcy;":"\u0412","&Vdash;":"\u22A9","&Vdashl;":"\u2AE6","&Vee;":"\u22C1","&Verbar;":"\u2016","&Vert;":"\u2016","&VerticalBar;":"\u2223","&VerticalLine;":"|","&VerticalSeparator;":"\u2758","&VerticalTilde;":"\u2240","&VeryThinSpace;":"\u200A","&Vfr;":"\u{1D519}","&Vopf;":"\u{1D54D}","&Vscr;":"\u{1D4B1}","&Vvdash;":"\u22AA","&Wcirc;":"\u0174","&Wedge;":"\u22C0","&Wfr;":"\u{1D51A}","&Wopf;":"\u{1D54E}","&Wscr;":"\u{1D4B2}","&Xfr;":"\u{1D51B}","&Xi;":"\u039E","&Xopf;":"\u{1D54F}","&Xscr;":"\u{1D4B3}","&YAcy;":"\u042F","&YIcy;":"\u0407","&YUcy;":"\u042E","&Yacute":"\xDD","&Yacute;":"\xDD","&Ycirc;":"\u0176","&Ycy;":"\u042B","&Yfr;":"\u{1D51C}","&Yopf;":"\u{1D550}","&Yscr;":"\u{1D4B4}","&Yuml;":"\u0178","&ZHcy;":"\u0416","&Zacute;":"\u0179","&Zcaron;":"\u017D","&Zcy;":"\u0417","&Zdot;":"\u017B","&ZeroWidthSpace;":"\u200B","&Zeta;":"\u0396","&Zfr;":"\u2128","&Zopf;":"\u2124","&Zscr;":"\u{1D4B5}","&aacute":"\xE1","&aacute;":"\xE1","&abreve;":"\u0103","&ac;":"\u223E","&acE;":"\u223E\u0333","&acd;":"\u223F","&acirc":"\xE2","&acirc;":"\xE2","&acute":"\xB4","&acute;":"\xB4","&acy;":"\u0430","&aelig":"\xE6","&aelig;":"\xE6","&af;":"\u2061","&afr;":"\u{1D51E}","&agrave":"\xE0","&agrave;":"\xE0","&alefsym;":"\u2135","&aleph;":"\u2135","&alpha;":"\u03B1","&amacr;":"\u0101","&amalg;":"\u2A3F","&amp":"&","&amp;":"&","&and;":"\u2227","&andand;":"\u2A55","&andd;":"\u2A5C","&andslope;":"\u2A58","&andv;":"\u2A5A","&ang;":"\u2220","&ange;":"\u29A4","&angle;":"\u2220","&angmsd;":"\u2221","&angmsdaa;":"\u29A8","&angmsdab;":"\u29A9","&angmsdac;":"\u29AA","&angmsdad;":"\u29AB","&angmsdae;":"\u29AC","&angmsdaf;":"\u29AD","&angmsdag;":"\u29AE","&angmsdah;":"\u29AF","&angrt;":"\u221F","&angrtvb;":"\u22BE","&angrtvbd;":"\u299D","&angsph;":"\u2222","&angst;":"\xC5","&angzarr;":"\u237C","&aogon;":"\u0105","&aopf;":"\u{1D552}","&ap;":"\u2248","&apE;":"\u2A70","&apacir;":"\u2A6F","&ape;":"\u224A","&apid;":"\u224B","&apos;":"'","&approx;":"\u2248","&approxeq;":"\u224A","&aring":"\xE5","&aring;":"\xE5","&ascr;":"\u{1D4B6}","&ast;":"*","&asymp;":"\u2248","&asympeq;":"\u224D","&atilde":"\xE3","&atilde;":"\xE3","&auml":"\xE4","&auml;":"\xE4","&awconint;":"\u2233","&awint;":"\u2A11","&bNot;":"\u2AED","&backcong;":"\u224C","&backepsilon;":"\u03F6","&backprime;":"\u2035","&backsim;":"\u223D","&backsimeq;":"\u22CD","&barvee;":"\u22BD","&barwed;":"\u2305","&barwedge;":"\u2305","&bbrk;":"\u23B5","&bbrktbrk;":"\u23B6","&bcong;":"\u224C","&bcy;":"\u0431","&bdquo;":"\u201E","&becaus;":"\u2235","&because;":"\u2235","&bemptyv;":"\u29B0","&bepsi;":"\u03F6","&bernou;":"\u212C","&beta;":"\u03B2","&beth;":"\u2136","&between;":"\u226C","&bfr;":"\u{1D51F}","&bigcap;":"\u22C2","&bigcirc;":"\u25EF","&bigcup;":"\u22C3","&bigodot;":"\u2A00","&bigoplus;":"\u2A01","&bigotimes;":"\u2A02","&bigsqcup;":"\u2A06","&bigstar;":"\u2605","&bigtriangledown;":"\u25BD","&bigtriangleup;":"\u25B3","&biguplus;":"\u2A04","&bigvee;":"\u22C1","&bigwedge;":"\u22C0","&bkarow;":"\u290D","&blacklozenge;":"\u29EB","&blacksquare;":"\u25AA","&blacktriangle;":"\u25B4","&blacktriangledown;":"\u25BE","&blacktriangleleft;":"\u25C2","&blacktriangleright;":"\u25B8","&blank;":"\u2423","&blk12;":"\u2592","&blk14;":"\u2591","&blk34;":"\u2593","&block;":"\u2588","&bne;":"=\u20E5","&bnequiv;":"\u2261\u20E5","&bnot;":"\u2310","&bopf;":"\u{1D553}","&bot;":"\u22A5","&bottom;":"\u22A5","&bowtie;":"\u22C8","&boxDL;":"\u2557","&boxDR;":"\u2554","&boxDl;":"\u2556","&boxDr;":"\u2553","&boxH;":"\u2550","&boxHD;":"\u2566","&boxHU;":"\u2569","&boxHd;":"\u2564","&boxHu;":"\u2567","&boxUL;":"\u255D","&boxUR;":"\u255A","&boxUl;":"\u255C","&boxUr;":"\u2559","&boxV;":"\u2551","&boxVH;":"\u256C","&boxVL;":"\u2563","&boxVR;":"\u2560","&boxVh;":"\u256B","&boxVl;":"\u2562","&boxVr;":"\u255F","&boxbox;":"\u29C9","&boxdL;":"\u2555","&boxdR;":"\u2552","&boxdl;":"\u2510","&boxdr;":"\u250C","&boxh;":"\u2500","&boxhD;":"\u2565","&boxhU;":"\u2568","&boxhd;":"\u252C","&boxhu;":"\u2534","&boxminus;":"\u229F","&boxplus;":"\u229E","&boxtimes;":"\u22A0","&boxuL;":"\u255B","&boxuR;":"\u2558","&boxul;":"\u2518","&boxur;":"\u2514","&boxv;":"\u2502","&boxvH;":"\u256A","&boxvL;":"\u2561","&boxvR;":"\u255E","&boxvh;":"\u253C","&boxvl;":"\u2524","&boxvr;":"\u251C","&bprime;":"\u2035","&breve;":"\u02D8","&brvbar":"\xA6","&brvbar;":"\xA6","&bscr;":"\u{1D4B7}","&bsemi;":"\u204F","&bsim;":"\u223D","&bsime;":"\u22CD","&bsol;":"\\","&bsolb;":"\u29C5","&bsolhsub;":"\u27C8","&bull;":"\u2022","&bullet;":"\u2022","&bump;":"\u224E","&bumpE;":"\u2AAE","&bumpe;":"\u224F","&bumpeq;":"\u224F","&cacute;":"\u0107","&cap;":"\u2229","&capand;":"\u2A44","&capbrcup;":"\u2A49","&capcap;":"\u2A4B","&capcup;":"\u2A47","&capdot;":"\u2A40","&caps;":"\u2229\uFE00","&caret;":"\u2041","&caron;":"\u02C7","&ccaps;":"\u2A4D","&ccaron;":"\u010D","&ccedil":"\xE7","&ccedil;":"\xE7","&ccirc;":"\u0109","&ccups;":"\u2A4C","&ccupssm;":"\u2A50","&cdot;":"\u010B","&cedil":"\xB8","&cedil;":"\xB8","&cemptyv;":"\u29B2","&cent":"\xA2","&cent;":"\xA2","&centerdot;":"\xB7","&cfr;":"\u{1D520}","&chcy;":"\u0447","&check;":"\u2713","&checkmark;":"\u2713","&chi;":"\u03C7","&cir;":"\u25CB","&cirE;":"\u29C3","&circ;":"\u02C6","&circeq;":"\u2257","&circlearrowleft;":"\u21BA","&circlearrowright;":"\u21BB","&circledR;":"\xAE","&circledS;":"\u24C8","&circledast;":"\u229B","&circledcirc;":"\u229A","&circleddash;":"\u229D","&cire;":"\u2257","&cirfnint;":"\u2A10","&cirmid;":"\u2AEF","&cirscir;":"\u29C2","&clubs;":"\u2663","&clubsuit;":"\u2663","&colon;":":","&colone;":"\u2254","&coloneq;":"\u2254","&comma;":",","&commat;":"@","&comp;":"\u2201","&compfn;":"\u2218","&complement;":"\u2201","&complexes;":"\u2102","&cong;":"\u2245","&congdot;":"\u2A6D","&conint;":"\u222E","&copf;":"\u{1D554}","&coprod;":"\u2210","&copy":"\xA9","&copy;":"\xA9","&copysr;":"\u2117","&crarr;":"\u21B5","&cross;":"\u2717","&cscr;":"\u{1D4B8}","&csub;":"\u2ACF","&csube;":"\u2AD1","&csup;":"\u2AD0","&csupe;":"\u2AD2","&ctdot;":"\u22EF","&cudarrl;":"\u2938","&cudarrr;":"\u2935","&cuepr;":"\u22DE","&cuesc;":"\u22DF","&cularr;":"\u21B6","&cularrp;":"\u293D","&cup;":"\u222A","&cupbrcap;":"\u2A48","&cupcap;":"\u2A46","&cupcup;":"\u2A4A","&cupdot;":"\u228D","&cupor;":"\u2A45","&cups;":"\u222A\uFE00","&curarr;":"\u21B7","&curarrm;":"\u293C","&curlyeqprec;":"\u22DE","&curlyeqsucc;":"\u22DF","&curlyvee;":"\u22CE","&curlywedge;":"\u22CF","&curren":"\xA4","&curren;":"\xA4","&curvearrowleft;":"\u21B6","&curvearrowright;":"\u21B7","&cuvee;":"\u22CE","&cuwed;":"\u22CF","&cwconint;":"\u2232","&cwint;":"\u2231","&cylcty;":"\u232D","&dArr;":"\u21D3","&dHar;":"\u2965","&dagger;":"\u2020","&daleth;":"\u2138","&darr;":"\u2193","&dash;":"\u2010","&dashv;":"\u22A3","&dbkarow;":"\u290F","&dblac;":"\u02DD","&dcaron;":"\u010F","&dcy;":"\u0434","&dd;":"\u2146","&ddagger;":"\u2021","&ddarr;":"\u21CA","&ddotseq;":"\u2A77","&deg":"\xB0","&deg;":"\xB0","&delta;":"\u03B4","&demptyv;":"\u29B1","&dfisht;":"\u297F","&dfr;":"\u{1D521}","&dharl;":"\u21C3","&dharr;":"\u21C2","&diam;":"\u22C4","&diamond;":"\u22C4","&diamondsuit;":"\u2666","&diams;":"\u2666","&die;":"\xA8","&digamma;":"\u03DD","&disin;":"\u22F2","&div;":"\xF7","&divide":"\xF7","&divide;":"\xF7","&divideontimes;":"\u22C7","&divonx;":"\u22C7","&djcy;":"\u0452","&dlcorn;":"\u231E","&dlcrop;":"\u230D","&dollar;":"$","&dopf;":"\u{1D555}","&dot;":"\u02D9","&doteq;":"\u2250","&doteqdot;":"\u2251","&dotminus;":"\u2238","&dotplus;":"\u2214","&dotsquare;":"\u22A1","&doublebarwedge;":"\u2306","&downarrow;":"\u2193","&downdownarrows;":"\u21CA","&downharpoonleft;":"\u21C3","&downharpoonright;":"\u21C2","&drbkarow;":"\u2910","&drcorn;":"\u231F","&drcrop;":"\u230C","&dscr;":"\u{1D4B9}","&dscy;":"\u0455","&dsol;":"\u29F6","&dstrok;":"\u0111","&dtdot;":"\u22F1","&dtri;":"\u25BF","&dtrif;":"\u25BE","&duarr;":"\u21F5","&duhar;":"\u296F","&dwangle;":"\u29A6","&dzcy;":"\u045F","&dzigrarr;":"\u27FF","&eDDot;":"\u2A77","&eDot;":"\u2251","&eacute":"\xE9","&eacute;":"\xE9","&easter;":"\u2A6E","&ecaron;":"\u011B","&ecir;":"\u2256","&ecirc":"\xEA","&ecirc;":"\xEA","&ecolon;":"\u2255","&ecy;":"\u044D","&edot;":"\u0117","&ee;":"\u2147","&efDot;":"\u2252","&efr;":"\u{1D522}","&eg;":"\u2A9A","&egrave":"\xE8","&egrave;":"\xE8","&egs;":"\u2A96","&egsdot;":"\u2A98","&el;":"\u2A99","&elinters;":"\u23E7","&ell;":"\u2113","&els;":"\u2A95","&elsdot;":"\u2A97","&emacr;":"\u0113","&empty;":"\u2205","&emptyset;":"\u2205","&emptyv;":"\u2205","&emsp13;":"\u2004","&emsp14;":"\u2005","&emsp;":"\u2003","&eng;":"\u014B","&ensp;":"\u2002","&eogon;":"\u0119","&eopf;":"\u{1D556}","&epar;":"\u22D5","&eparsl;":"\u29E3","&eplus;":"\u2A71","&epsi;":"\u03B5","&epsilon;":"\u03B5","&epsiv;":"\u03F5","&eqcirc;":"\u2256","&eqcolon;":"\u2255","&eqsim;":"\u2242","&eqslantgtr;":"\u2A96","&eqslantless;":"\u2A95","&equals;":"=","&equest;":"\u225F","&equiv;":"\u2261","&equivDD;":"\u2A78","&eqvparsl;":"\u29E5","&erDot;":"\u2253","&erarr;":"\u2971","&escr;":"\u212F","&esdot;":"\u2250","&esim;":"\u2242","&eta;":"\u03B7","&eth":"\xF0","&eth;":"\xF0","&euml":"\xEB","&euml;":"\xEB","&euro;":"\u20AC","&excl;":"!","&exist;":"\u2203","&expectation;":"\u2130","&exponentiale;":"\u2147","&fallingdotseq;":"\u2252","&fcy;":"\u0444","&female;":"\u2640","&ffilig;":"\uFB03","&fflig;":"\uFB00","&ffllig;":"\uFB04","&ffr;":"\u{1D523}","&filig;":"\uFB01","&fjlig;":"fj","&flat;":"\u266D","&fllig;":"\uFB02","&fltns;":"\u25B1","&fnof;":"\u0192","&fopf;":"\u{1D557}","&forall;":"\u2200","&fork;":"\u22D4","&forkv;":"\u2AD9","&fpartint;":"\u2A0D","&frac12":"\xBD","&frac12;":"\xBD","&frac13;":"\u2153","&frac14":"\xBC","&frac14;":"\xBC","&frac15;":"\u2155","&frac16;":"\u2159","&frac18;":"\u215B","&frac23;":"\u2154","&frac25;":"\u2156","&frac34":"\xBE","&frac34;":"\xBE","&frac35;":"\u2157","&frac38;":"\u215C","&frac45;":"\u2158","&frac56;":"\u215A","&frac58;":"\u215D","&frac78;":"\u215E","&frasl;":"\u2044","&frown;":"\u2322","&fscr;":"\u{1D4BB}","&gE;":"\u2267","&gEl;":"\u2A8C","&gacute;":"\u01F5","&gamma;":"\u03B3","&gammad;":"\u03DD","&gap;":"\u2A86","&gbreve;":"\u011F","&gcirc;":"\u011D","&gcy;":"\u0433","&gdot;":"\u0121","&ge;":"\u2265","&gel;":"\u22DB","&geq;":"\u2265","&geqq;":"\u2267","&geqslant;":"\u2A7E","&ges;":"\u2A7E","&gescc;":"\u2AA9","&gesdot;":"\u2A80","&gesdoto;":"\u2A82","&gesdotol;":"\u2A84","&gesl;":"\u22DB\uFE00","&gesles;":"\u2A94","&gfr;":"\u{1D524}","&gg;":"\u226B","&ggg;":"\u22D9","&gimel;":"\u2137","&gjcy;":"\u0453","&gl;":"\u2277","&glE;":"\u2A92","&gla;":"\u2AA5","&glj;":"\u2AA4","&gnE;":"\u2269","&gnap;":"\u2A8A","&gnapprox;":"\u2A8A","&gne;":"\u2A88","&gneq;":"\u2A88","&gneqq;":"\u2269","&gnsim;":"\u22E7","&gopf;":"\u{1D558}","&grave;":"`","&gscr;":"\u210A","&gsim;":"\u2273","&gsime;":"\u2A8E","&gsiml;":"\u2A90","&gt":">","&gt;":">","&gtcc;":"\u2AA7","&gtcir;":"\u2A7A","&gtdot;":"\u22D7","&gtlPar;":"\u2995","&gtquest;":"\u2A7C","&gtrapprox;":"\u2A86","&gtrarr;":"\u2978","&gtrdot;":"\u22D7","&gtreqless;":"\u22DB","&gtreqqless;":"\u2A8C","&gtrless;":"\u2277","&gtrsim;":"\u2273","&gvertneqq;":"\u2269\uFE00","&gvnE;":"\u2269\uFE00","&hArr;":"\u21D4","&hairsp;":"\u200A","&half;":"\xBD","&hamilt;":"\u210B","&hardcy;":"\u044A","&harr;":"\u2194","&harrcir;":"\u2948","&harrw;":"\u21AD","&hbar;":"\u210F","&hcirc;":"\u0125","&hearts;":"\u2665","&heartsuit;":"\u2665","&hellip;":"\u2026","&hercon;":"\u22B9","&hfr;":"\u{1D525}","&hksearow;":"\u2925","&hkswarow;":"\u2926","&hoarr;":"\u21FF","&homtht;":"\u223B","&hookleftarrow;":"\u21A9","&hookrightarrow;":"\u21AA","&hopf;":"\u{1D559}","&horbar;":"\u2015","&hscr;":"\u{1D4BD}","&hslash;":"\u210F","&hstrok;":"\u0127","&hybull;":"\u2043","&hyphen;":"\u2010","&iacute":"\xED","&iacute;":"\xED","&ic;":"\u2063","&icirc":"\xEE","&icirc;":"\xEE","&icy;":"\u0438","&iecy;":"\u0435","&iexcl":"\xA1","&iexcl;":"\xA1","&iff;":"\u21D4","&ifr;":"\u{1D526}","&igrave":"\xEC","&igrave;":"\xEC","&ii;":"\u2148","&iiiint;":"\u2A0C","&iiint;":"\u222D","&iinfin;":"\u29DC","&iiota;":"\u2129","&ijlig;":"\u0133","&imacr;":"\u012B","&image;":"\u2111","&imagline;":"\u2110","&imagpart;":"\u2111","&imath;":"\u0131","&imof;":"\u22B7","&imped;":"\u01B5","&in;":"\u2208","&incare;":"\u2105","&infin;":"\u221E","&infintie;":"\u29DD","&inodot;":"\u0131","&int;":"\u222B","&intcal;":"\u22BA","&integers;":"\u2124","&intercal;":"\u22BA","&intlarhk;":"\u2A17","&intprod;":"\u2A3C","&iocy;":"\u0451","&iogon;":"\u012F","&iopf;":"\u{1D55A}","&iota;":"\u03B9","&iprod;":"\u2A3C","&iquest":"\xBF","&iquest;":"\xBF","&iscr;":"\u{1D4BE}","&isin;":"\u2208","&isinE;":"\u22F9","&isindot;":"\u22F5","&isins;":"\u22F4","&isinsv;":"\u22F3","&isinv;":"\u2208","&it;":"\u2062","&itilde;":"\u0129","&iukcy;":"\u0456","&iuml":"\xEF","&iuml;":"\xEF","&jcirc;":"\u0135","&jcy;":"\u0439","&jfr;":"\u{1D527}","&jmath;":"\u0237","&jopf;":"\u{1D55B}","&jscr;":"\u{1D4BF}","&jsercy;":"\u0458","&jukcy;":"\u0454","&kappa;":"\u03BA","&kappav;":"\u03F0","&kcedil;":"\u0137","&kcy;":"\u043A","&kfr;":"\u{1D528}","&kgreen;":"\u0138","&khcy;":"\u0445","&kjcy;":"\u045C","&kopf;":"\u{1D55C}","&kscr;":"\u{1D4C0}","&lAarr;":"\u21DA","&lArr;":"\u21D0","&lAtail;":"\u291B","&lBarr;":"\u290E","&lE;":"\u2266","&lEg;":"\u2A8B","&lHar;":"\u2962","&lacute;":"\u013A","&laemptyv;":"\u29B4","&lagran;":"\u2112","&lambda;":"\u03BB","&lang;":"\u27E8","&langd;":"\u2991","&langle;":"\u27E8","&lap;":"\u2A85","&laquo":"\xAB","&laquo;":"\xAB","&larr;":"\u2190","&larrb;":"\u21E4","&larrbfs;":"\u291F","&larrfs;":"\u291D","&larrhk;":"\u21A9","&larrlp;":"\u21AB","&larrpl;":"\u2939","&larrsim;":"\u2973","&larrtl;":"\u21A2","&lat;":"\u2AAB","&latail;":"\u2919","&late;":"\u2AAD","&lates;":"\u2AAD\uFE00","&lbarr;":"\u290C","&lbbrk;":"\u2772","&lbrace;":"{","&lbrack;":"[","&lbrke;":"\u298B","&lbrksld;":"\u298F","&lbrkslu;":"\u298D","&lcaron;":"\u013E","&lcedil;":"\u013C","&lceil;":"\u2308","&lcub;":"{","&lcy;":"\u043B","&ldca;":"\u2936","&ldquo;":"\u201C","&ldquor;":"\u201E","&ldrdhar;":"\u2967","&ldrushar;":"\u294B","&ldsh;":"\u21B2","&le;":"\u2264","&leftarrow;":"\u2190","&leftarrowtail;":"\u21A2","&leftharpoondown;":"\u21BD","&leftharpoonup;":"\u21BC","&leftleftarrows;":"\u21C7","&leftrightarrow;":"\u2194","&leftrightarrows;":"\u21C6","&leftrightharpoons;":"\u21CB","&leftrightsquigarrow;":"\u21AD","&leftthreetimes;":"\u22CB","&leg;":"\u22DA","&leq;":"\u2264","&leqq;":"\u2266","&leqslant;":"\u2A7D","&les;":"\u2A7D","&lescc;":"\u2AA8","&lesdot;":"\u2A7F","&lesdoto;":"\u2A81","&lesdotor;":"\u2A83","&lesg;":"\u22DA\uFE00","&lesges;":"\u2A93","&lessapprox;":"\u2A85","&lessdot;":"\u22D6","&lesseqgtr;":"\u22DA","&lesseqqgtr;":"\u2A8B","&lessgtr;":"\u2276","&lesssim;":"\u2272","&lfisht;":"\u297C","&lfloor;":"\u230A","&lfr;":"\u{1D529}","&lg;":"\u2276","&lgE;":"\u2A91","&lhard;":"\u21BD","&lharu;":"\u21BC","&lharul;":"\u296A","&lhblk;":"\u2584","&ljcy;":"\u0459","&ll;":"\u226A","&llarr;":"\u21C7","&llcorner;":"\u231E","&llhard;":"\u296B","&lltri;":"\u25FA","&lmidot;":"\u0140","&lmoust;":"\u23B0","&lmoustache;":"\u23B0","&lnE;":"\u2268","&lnap;":"\u2A89","&lnapprox;":"\u2A89","&lne;":"\u2A87","&lneq;":"\u2A87","&lneqq;":"\u2268","&lnsim;":"\u22E6","&loang;":"\u27EC","&loarr;":"\u21FD","&lobrk;":"\u27E6","&longleftarrow;":"\u27F5","&longleftrightarrow;":"\u27F7","&longmapsto;":"\u27FC","&longrightarrow;":"\u27F6","&looparrowleft;":"\u21AB","&looparrowright;":"\u21AC","&lopar;":"\u2985","&lopf;":"\u{1D55D}","&loplus;":"\u2A2D","&lotimes;":"\u2A34","&lowast;":"\u2217","&lowbar;":"_","&loz;":"\u25CA","&lozenge;":"\u25CA","&lozf;":"\u29EB","&lpar;":"(","&lparlt;":"\u2993","&lrarr;":"\u21C6","&lrcorner;":"\u231F","&lrhar;":"\u21CB","&lrhard;":"\u296D","&lrm;":"\u200E","&lrtri;":"\u22BF","&lsaquo;":"\u2039","&lscr;":"\u{1D4C1}","&lsh;":"\u21B0","&lsim;":"\u2272","&lsime;":"\u2A8D","&lsimg;":"\u2A8F","&lsqb;":"[","&lsquo;":"\u2018","&lsquor;":"\u201A","&lstrok;":"\u0142","&lt":"<","&lt;":"<","&ltcc;":"\u2AA6","&ltcir;":"\u2A79","&ltdot;":"\u22D6","&lthree;":"\u22CB","&ltimes;":"\u22C9","&ltlarr;":"\u2976","&ltquest;":"\u2A7B","&ltrPar;":"\u2996","&ltri;":"\u25C3","&ltrie;":"\u22B4","&ltrif;":"\u25C2","&lurdshar;":"\u294A","&luruhar;":"\u2966","&lvertneqq;":"\u2268\uFE00","&lvnE;":"\u2268\uFE00","&mDDot;":"\u223A","&macr":"\xAF","&macr;":"\xAF","&male;":"\u2642","&malt;":"\u2720","&maltese;":"\u2720","&map;":"\u21A6","&mapsto;":"\u21A6","&mapstodown;":"\u21A7","&mapstoleft;":"\u21A4","&mapstoup;":"\u21A5","&marker;":"\u25AE","&mcomma;":"\u2A29","&mcy;":"\u043C","&mdash;":"\u2014","&measuredangle;":"\u2221","&mfr;":"\u{1D52A}","&mho;":"\u2127","&micro":"\xB5","&micro;":"\xB5","&mid;":"\u2223","&midast;":"*","&midcir;":"\u2AF0","&middot":"\xB7","&middot;":"\xB7","&minus;":"\u2212","&minusb;":"\u229F","&minusd;":"\u2238","&minusdu;":"\u2A2A","&mlcp;":"\u2ADB","&mldr;":"\u2026","&mnplus;":"\u2213","&models;":"\u22A7","&mopf;":"\u{1D55E}","&mp;":"\u2213","&mscr;":"\u{1D4C2}","&mstpos;":"\u223E","&mu;":"\u03BC","&multimap;":"\u22B8","&mumap;":"\u22B8","&nGg;":"\u22D9\u0338","&nGt;":"\u226B\u20D2","&nGtv;":"\u226B\u0338","&nLeftarrow;":"\u21CD","&nLeftrightarrow;":"\u21CE","&nLl;":"\u22D8\u0338","&nLt;":"\u226A\u20D2","&nLtv;":"\u226A\u0338","&nRightarrow;":"\u21CF","&nVDash;":"\u22AF","&nVdash;":"\u22AE","&nabla;":"\u2207","&nacute;":"\u0144","&nang;":"\u2220\u20D2","&nap;":"\u2249","&napE;":"\u2A70\u0338","&napid;":"\u224B\u0338","&napos;":"\u0149","&napprox;":"\u2249","&natur;":"\u266E","&natural;":"\u266E","&naturals;":"\u2115","&nbsp":"\xA0","&nbsp;":"\xA0","&nbump;":"\u224E\u0338","&nbumpe;":"\u224F\u0338","&ncap;":"\u2A43","&ncaron;":"\u0148","&ncedil;":"\u0146","&ncong;":"\u2247","&ncongdot;":"\u2A6D\u0338","&ncup;":"\u2A42","&ncy;":"\u043D","&ndash;":"\u2013","&ne;":"\u2260","&neArr;":"\u21D7","&nearhk;":"\u2924","&nearr;":"\u2197","&nearrow;":"\u2197","&nedot;":"\u2250\u0338","&nequiv;":"\u2262","&nesear;":"\u2928","&nesim;":"\u2242\u0338","&nexist;":"\u2204","&nexists;":"\u2204","&nfr;":"\u{1D52B}","&ngE;":"\u2267\u0338","&nge;":"\u2271","&ngeq;":"\u2271","&ngeqq;":"\u2267\u0338","&ngeqslant;":"\u2A7E\u0338","&nges;":"\u2A7E\u0338","&ngsim;":"\u2275","&ngt;":"\u226F","&ngtr;":"\u226F","&nhArr;":"\u21CE","&nharr;":"\u21AE","&nhpar;":"\u2AF2","&ni;":"\u220B","&nis;":"\u22FC","&nisd;":"\u22FA","&niv;":"\u220B","&njcy;":"\u045A","&nlArr;":"\u21CD","&nlE;":"\u2266\u0338","&nlarr;":"\u219A","&nldr;":"\u2025","&nle;":"\u2270","&nleftarrow;":"\u219A","&nleftrightarrow;":"\u21AE","&nleq;":"\u2270","&nleqq;":"\u2266\u0338","&nleqslant;":"\u2A7D\u0338","&nles;":"\u2A7D\u0338","&nless;":"\u226E","&nlsim;":"\u2274","&nlt;":"\u226E","&nltri;":"\u22EA","&nltrie;":"\u22EC","&nmid;":"\u2224","&nopf;":"\u{1D55F}","&not":"\xAC","&not;":"\xAC","&notin;":"\u2209","&notinE;":"\u22F9\u0338","&notindot;":"\u22F5\u0338","&notinva;":"\u2209","&notinvb;":"\u22F7","&notinvc;":"\u22F6","&notni;":"\u220C","&notniva;":"\u220C","&notnivb;":"\u22FE","&notnivc;":"\u22FD","&npar;":"\u2226","&nparallel;":"\u2226","&nparsl;":"\u2AFD\u20E5","&npart;":"\u2202\u0338","&npolint;":"\u2A14","&npr;":"\u2280","&nprcue;":"\u22E0","&npre;":"\u2AAF\u0338","&nprec;":"\u2280","&npreceq;":"\u2AAF\u0338","&nrArr;":"\u21CF","&nrarr;":"\u219B","&nrarrc;":"\u2933\u0338","&nrarrw;":"\u219D\u0338","&nrightarrow;":"\u219B","&nrtri;":"\u22EB","&nrtrie;":"\u22ED","&nsc;":"\u2281","&nsccue;":"\u22E1","&nsce;":"\u2AB0\u0338","&nscr;":"\u{1D4C3}","&nshortmid;":"\u2224","&nshortparallel;":"\u2226","&nsim;":"\u2241","&nsime;":"\u2244","&nsimeq;":"\u2244","&nsmid;":"\u2224","&nspar;":"\u2226","&nsqsube;":"\u22E2","&nsqsupe;":"\u22E3","&nsub;":"\u2284","&nsubE;":"\u2AC5\u0338","&nsube;":"\u2288","&nsubset;":"\u2282\u20D2","&nsubseteq;":"\u2288","&nsubseteqq;":"\u2AC5\u0338","&nsucc;":"\u2281","&nsucceq;":"\u2AB0\u0338","&nsup;":"\u2285","&nsupE;":"\u2AC6\u0338","&nsupe;":"\u2289","&nsupset;":"\u2283\u20D2","&nsupseteq;":"\u2289","&nsupseteqq;":"\u2AC6\u0338","&ntgl;":"\u2279","&ntilde":"\xF1","&ntilde;":"\xF1","&ntlg;":"\u2278","&ntriangleleft;":"\u22EA","&ntrianglelefteq;":"\u22EC","&ntriangleright;":"\u22EB","&ntrianglerighteq;":"\u22ED","&nu;":"\u03BD","&num;":"#","&numero;":"\u2116","&numsp;":"\u2007","&nvDash;":"\u22AD","&nvHarr;":"\u2904","&nvap;":"\u224D\u20D2","&nvdash;":"\u22AC","&nvge;":"\u2265\u20D2","&nvgt;":">\u20D2","&nvinfin;":"\u29DE","&nvlArr;":"\u2902","&nvle;":"\u2264\u20D2","&nvlt;":"<\u20D2","&nvltrie;":"\u22B4\u20D2","&nvrArr;":"\u2903","&nvrtrie;":"\u22B5\u20D2","&nvsim;":"\u223C\u20D2","&nwArr;":"\u21D6","&nwarhk;":"\u2923","&nwarr;":"\u2196","&nwarrow;":"\u2196","&nwnear;":"\u2927","&oS;":"\u24C8","&oacute":"\xF3","&oacute;":"\xF3","&oast;":"\u229B","&ocir;":"\u229A","&ocirc":"\xF4","&ocirc;":"\xF4","&ocy;":"\u043E","&odash;":"\u229D","&odblac;":"\u0151","&odiv;":"\u2A38","&odot;":"\u2299","&odsold;":"\u29BC","&oelig;":"\u0153","&ofcir;":"\u29BF","&ofr;":"\u{1D52C}","&ogon;":"\u02DB","&ograve":"\xF2","&ograve;":"\xF2","&ogt;":"\u29C1","&ohbar;":"\u29B5","&ohm;":"\u03A9","&oint;":"\u222E","&olarr;":"\u21BA","&olcir;":"\u29BE","&olcross;":"\u29BB","&oline;":"\u203E","&olt;":"\u29C0","&omacr;":"\u014D","&omega;":"\u03C9","&omicron;":"\u03BF","&omid;":"\u29B6","&ominus;":"\u2296","&oopf;":"\u{1D560}","&opar;":"\u29B7","&operp;":"\u29B9","&oplus;":"\u2295","&or;":"\u2228","&orarr;":"\u21BB","&ord;":"\u2A5D","&order;":"\u2134","&orderof;":"\u2134","&ordf":"\xAA","&ordf;":"\xAA","&ordm":"\xBA","&ordm;":"\xBA","&origof;":"\u22B6","&oror;":"\u2A56","&orslope;":"\u2A57","&orv;":"\u2A5B","&oscr;":"\u2134","&oslash":"\xF8","&oslash;":"\xF8","&osol;":"\u2298","&otilde":"\xF5","&otilde;":"\xF5","&otimes;":"\u2297","&otimesas;":"\u2A36","&ouml":"\xF6","&ouml;":"\xF6","&ovbar;":"\u233D","&par;":"\u2225","&para":"\xB6","&para;":"\xB6","&parallel;":"\u2225","&parsim;":"\u2AF3","&parsl;":"\u2AFD","&part;":"\u2202","&pcy;":"\u043F","&percnt;":"%","&period;":".","&permil;":"\u2030","&perp;":"\u22A5","&pertenk;":"\u2031","&pfr;":"\u{1D52D}","&phi;":"\u03C6","&phiv;":"\u03D5","&phmmat;":"\u2133","&phone;":"\u260E","&pi;":"\u03C0","&pitchfork;":"\u22D4","&piv;":"\u03D6","&planck;":"\u210F","&planckh;":"\u210E","&plankv;":"\u210F","&plus;":"+","&plusacir;":"\u2A23","&plusb;":"\u229E","&pluscir;":"\u2A22","&plusdo;":"\u2214","&plusdu;":"\u2A25","&pluse;":"\u2A72","&plusmn":"\xB1","&plusmn;":"\xB1","&plussim;":"\u2A26","&plustwo;":"\u2A27","&pm;":"\xB1","&pointint;":"\u2A15","&popf;":"\u{1D561}","&pound":"\xA3","&pound;":"\xA3","&pr;":"\u227A","&prE;":"\u2AB3","&prap;":"\u2AB7","&prcue;":"\u227C","&pre;":"\u2AAF","&prec;":"\u227A","&precapprox;":"\u2AB7","&preccurlyeq;":"\u227C","&preceq;":"\u2AAF","&precnapprox;":"\u2AB9","&precneqq;":"\u2AB5","&precnsim;":"\u22E8","&precsim;":"\u227E","&prime;":"\u2032","&primes;":"\u2119","&prnE;":"\u2AB5","&prnap;":"\u2AB9","&prnsim;":"\u22E8","&prod;":"\u220F","&profalar;":"\u232E","&profline;":"\u2312","&profsurf;":"\u2313","&prop;":"\u221D","&propto;":"\u221D","&prsim;":"\u227E","&prurel;":"\u22B0","&pscr;":"\u{1D4C5}","&psi;":"\u03C8","&puncsp;":"\u2008","&qfr;":"\u{1D52E}","&qint;":"\u2A0C","&qopf;":"\u{1D562}","&qprime;":"\u2057","&qscr;":"\u{1D4C6}","&quaternions;":"\u210D","&quatint;":"\u2A16","&quest;":"?","&questeq;":"\u225F","&quot":'"',"&quot;":'"',"&rAarr;":"\u21DB","&rArr;":"\u21D2","&rAtail;":"\u291C","&rBarr;":"\u290F","&rHar;":"\u2964","&race;":"\u223D\u0331","&racute;":"\u0155","&radic;":"\u221A","&raemptyv;":"\u29B3","&rang;":"\u27E9","&rangd;":"\u2992","&range;":"\u29A5","&rangle;":"\u27E9","&raquo":"\xBB","&raquo;":"\xBB","&rarr;":"\u2192","&rarrap;":"\u2975","&rarrb;":"\u21E5","&rarrbfs;":"\u2920","&rarrc;":"\u2933","&rarrfs;":"\u291E","&rarrhk;":"\u21AA","&rarrlp;":"\u21AC","&rarrpl;":"\u2945","&rarrsim;":"\u2974","&rarrtl;":"\u21A3","&rarrw;":"\u219D","&ratail;":"\u291A","&ratio;":"\u2236","&rationals;":"\u211A","&rbarr;":"\u290D","&rbbrk;":"\u2773","&rbrace;":"}","&rbrack;":"]","&rbrke;":"\u298C","&rbrksld;":"\u298E","&rbrkslu;":"\u2990","&rcaron;":"\u0159","&rcedil;":"\u0157","&rceil;":"\u2309","&rcub;":"}","&rcy;":"\u0440","&rdca;":"\u2937","&rdldhar;":"\u2969","&rdquo;":"\u201D","&rdquor;":"\u201D","&rdsh;":"\u21B3","&real;":"\u211C","&realine;":"\u211B","&realpart;":"\u211C","&reals;":"\u211D","&rect;":"\u25AD","&reg":"\xAE","&reg;":"\xAE","&rfisht;":"\u297D","&rfloor;":"\u230B","&rfr;":"\u{1D52F}","&rhard;":"\u21C1","&rharu;":"\u21C0","&rharul;":"\u296C","&rho;":"\u03C1","&rhov;":"\u03F1","&rightarrow;":"\u2192","&rightarrowtail;":"\u21A3","&rightharpoondown;":"\u21C1","&rightharpoonup;":"\u21C0","&rightleftarrows;":"\u21C4","&rightleftharpoons;":"\u21CC","&rightrightarrows;":"\u21C9","&rightsquigarrow;":"\u219D","&rightthreetimes;":"\u22CC","&ring;":"\u02DA","&risingdotseq;":"\u2253","&rlarr;":"\u21C4","&rlhar;":"\u21CC","&rlm;":"\u200F","&rmoust;":"\u23B1","&rmoustache;":"\u23B1","&rnmid;":"\u2AEE","&roang;":"\u27ED","&roarr;":"\u21FE","&robrk;":"\u27E7","&ropar;":"\u2986","&ropf;":"\u{1D563}","&roplus;":"\u2A2E","&rotimes;":"\u2A35","&rpar;":")","&rpargt;":"\u2994","&rppolint;":"\u2A12","&rrarr;":"\u21C9","&rsaquo;":"\u203A","&rscr;":"\u{1D4C7}","&rsh;":"\u21B1","&rsqb;":"]","&rsquo;":"\u2019","&rsquor;":"\u2019","&rthree;":"\u22CC","&rtimes;":"\u22CA","&rtri;":"\u25B9","&rtrie;":"\u22B5","&rtrif;":"\u25B8","&rtriltri;":"\u29CE","&ruluhar;":"\u2968","&rx;":"\u211E","&sacute;":"\u015B","&sbquo;":"\u201A","&sc;":"\u227B","&scE;":"\u2AB4","&scap;":"\u2AB8","&scaron;":"\u0161","&sccue;":"\u227D","&sce;":"\u2AB0","&scedil;":"\u015F","&scirc;":"\u015D","&scnE;":"\u2AB6","&scnap;":"\u2ABA","&scnsim;":"\u22E9","&scpolint;":"\u2A13","&scsim;":"\u227F","&scy;":"\u0441","&sdot;":"\u22C5","&sdotb;":"\u22A1","&sdote;":"\u2A66","&seArr;":"\u21D8","&searhk;":"\u2925","&searr;":"\u2198","&searrow;":"\u2198","&sect":"\xA7","&sect;":"\xA7","&semi;":";","&seswar;":"\u2929","&setminus;":"\u2216","&setmn;":"\u2216","&sext;":"\u2736","&sfr;":"\u{1D530}","&sfrown;":"\u2322","&sharp;":"\u266F","&shchcy;":"\u0449","&shcy;":"\u0448","&shortmid;":"\u2223","&shortparallel;":"\u2225","&shy":"\xAD","&shy;":"\xAD","&sigma;":"\u03C3","&sigmaf;":"\u03C2","&sigmav;":"\u03C2","&sim;":"\u223C","&simdot;":"\u2A6A","&sime;":"\u2243","&simeq;":"\u2243","&simg;":"\u2A9E","&simgE;":"\u2AA0","&siml;":"\u2A9D","&simlE;":"\u2A9F","&simne;":"\u2246","&simplus;":"\u2A24","&simrarr;":"\u2972","&slarr;":"\u2190","&smallsetminus;":"\u2216","&smashp;":"\u2A33","&smeparsl;":"\u29E4","&smid;":"\u2223","&smile;":"\u2323","&smt;":"\u2AAA","&smte;":"\u2AAC","&smtes;":"\u2AAC\uFE00","&softcy;":"\u044C","&sol;":"/","&solb;":"\u29C4","&solbar;":"\u233F","&sopf;":"\u{1D564}","&spades;":"\u2660","&spadesuit;":"\u2660","&spar;":"\u2225","&sqcap;":"\u2293","&sqcaps;":"\u2293\uFE00","&sqcup;":"\u2294","&sqcups;":"\u2294\uFE00","&sqsub;":"\u228F","&sqsube;":"\u2291","&sqsubset;":"\u228F","&sqsubseteq;":"\u2291","&sqsup;":"\u2290","&sqsupe;":"\u2292","&sqsupset;":"\u2290","&sqsupseteq;":"\u2292","&squ;":"\u25A1","&square;":"\u25A1","&squarf;":"\u25AA","&squf;":"\u25AA","&srarr;":"\u2192","&sscr;":"\u{1D4C8}","&ssetmn;":"\u2216","&ssmile;":"\u2323","&sstarf;":"\u22C6","&star;":"\u2606","&starf;":"\u2605","&straightepsilon;":"\u03F5","&straightphi;":"\u03D5","&strns;":"\xAF","&sub;":"\u2282","&subE;":"\u2AC5","&subdot;":"\u2ABD","&sube;":"\u2286","&subedot;":"\u2AC3","&submult;":"\u2AC1","&subnE;":"\u2ACB","&subne;":"\u228A","&subplus;":"\u2ABF","&subrarr;":"\u2979","&subset;":"\u2282","&subseteq;":"\u2286","&subseteqq;":"\u2AC5","&subsetneq;":"\u228A","&subsetneqq;":"\u2ACB","&subsim;":"\u2AC7","&subsub;":"\u2AD5","&subsup;":"\u2AD3","&succ;":"\u227B","&succapprox;":"\u2AB8","&succcurlyeq;":"\u227D","&succeq;":"\u2AB0","&succnapprox;":"\u2ABA","&succneqq;":"\u2AB6","&succnsim;":"\u22E9","&succsim;":"\u227F","&sum;":"\u2211","&sung;":"\u266A","&sup1":"\xB9","&sup1;":"\xB9","&sup2":"\xB2","&sup2;":"\xB2","&sup3":"\xB3","&sup3;":"\xB3","&sup;":"\u2283","&supE;":"\u2AC6","&supdot;":"\u2ABE","&supdsub;":"\u2AD8","&supe;":"\u2287","&supedot;":"\u2AC4","&suphsol;":"\u27C9","&suphsub;":"\u2AD7","&suplarr;":"\u297B","&supmult;":"\u2AC2","&supnE;":"\u2ACC","&supne;":"\u228B","&supplus;":"\u2AC0","&supset;":"\u2283","&supseteq;":"\u2287","&supseteqq;":"\u2AC6","&supsetneq;":"\u228B","&supsetneqq;":"\u2ACC","&supsim;":"\u2AC8","&supsub;":"\u2AD4","&supsup;":"\u2AD6","&swArr;":"\u21D9","&swarhk;":"\u2926","&swarr;":"\u2199","&swarrow;":"\u2199","&swnwar;":"\u292A","&szlig":"\xDF","&szlig;":"\xDF","&target;":"\u2316","&tau;":"\u03C4","&tbrk;":"\u23B4","&tcaron;":"\u0165","&tcedil;":"\u0163","&tcy;":"\u0442","&tdot;":"\u20DB","&telrec;":"\u2315","&tfr;":"\u{1D531}","&there4;":"\u2234","&therefore;":"\u2234","&theta;":"\u03B8","&thetasym;":"\u03D1","&thetav;":"\u03D1","&thickapprox;":"\u2248","&thicksim;":"\u223C","&thinsp;":"\u2009","&thkap;":"\u2248","&thksim;":"\u223C","&thorn":"\xFE","&thorn;":"\xFE","&tilde;":"\u02DC","&times":"\xD7","&times;":"\xD7","&timesb;":"\u22A0","&timesbar;":"\u2A31","&timesd;":"\u2A30","&tint;":"\u222D","&toea;":"\u2928","&top;":"\u22A4","&topbot;":"\u2336","&topcir;":"\u2AF1","&topf;":"\u{1D565}","&topfork;":"\u2ADA","&tosa;":"\u2929","&tprime;":"\u2034","&trade;":"\u2122","&triangle;":"\u25B5","&triangledown;":"\u25BF","&triangleleft;":"\u25C3","&trianglelefteq;":"\u22B4","&triangleq;":"\u225C","&triangleright;":"\u25B9","&trianglerighteq;":"\u22B5","&tridot;":"\u25EC","&trie;":"\u225C","&triminus;":"\u2A3A","&triplus;":"\u2A39","&trisb;":"\u29CD","&tritime;":"\u2A3B","&trpezium;":"\u23E2","&tscr;":"\u{1D4C9}","&tscy;":"\u0446","&tshcy;":"\u045B","&tstrok;":"\u0167","&twixt;":"\u226C","&twoheadleftarrow;":"\u219E","&twoheadrightarrow;":"\u21A0","&uArr;":"\u21D1","&uHar;":"\u2963","&uacute":"\xFA","&uacute;":"\xFA","&uarr;":"\u2191","&ubrcy;":"\u045E","&ubreve;":"\u016D","&ucirc":"\xFB","&ucirc;":"\xFB","&ucy;":"\u0443","&udarr;":"\u21C5","&udblac;":"\u0171","&udhar;":"\u296E","&ufisht;":"\u297E","&ufr;":"\u{1D532}","&ugrave":"\xF9","&ugrave;":"\xF9","&uharl;":"\u21BF","&uharr;":"\u21BE","&uhblk;":"\u2580","&ulcorn;":"\u231C","&ulcorner;":"\u231C","&ulcrop;":"\u230F","&ultri;":"\u25F8","&umacr;":"\u016B","&uml":"\xA8","&uml;":"\xA8","&uogon;":"\u0173","&uopf;":"\u{1D566}","&uparrow;":"\u2191","&updownarrow;":"\u2195","&upharpoonleft;":"\u21BF","&upharpoonright;":"\u21BE","&uplus;":"\u228E","&upsi;":"\u03C5","&upsih;":"\u03D2","&upsilon;":"\u03C5","&upuparrows;":"\u21C8","&urcorn;":"\u231D","&urcorner;":"\u231D","&urcrop;":"\u230E","&uring;":"\u016F","&urtri;":"\u25F9","&uscr;":"\u{1D4CA}","&utdot;":"\u22F0","&utilde;":"\u0169","&utri;":"\u25B5","&utrif;":"\u25B4","&uuarr;":"\u21C8","&uuml":"\xFC","&uuml;":"\xFC","&uwangle;":"\u29A7","&vArr;":"\u21D5","&vBar;":"\u2AE8","&vBarv;":"\u2AE9","&vDash;":"\u22A8","&vangrt;":"\u299C","&varepsilon;":"\u03F5","&varkappa;":"\u03F0","&varnothing;":"\u2205","&varphi;":"\u03D5","&varpi;":"\u03D6","&varpropto;":"\u221D","&varr;":"\u2195","&varrho;":"\u03F1","&varsigma;":"\u03C2","&varsubsetneq;":"\u228A\uFE00","&varsubsetneqq;":"\u2ACB\uFE00","&varsupsetneq;":"\u228B\uFE00","&varsupsetneqq;":"\u2ACC\uFE00","&vartheta;":"\u03D1","&vartriangleleft;":"\u22B2","&vartriangleright;":"\u22B3","&vcy;":"\u0432","&vdash;":"\u22A2","&vee;":"\u2228","&veebar;":"\u22BB","&veeeq;":"\u225A","&vellip;":"\u22EE","&verbar;":"|","&vert;":"|","&vfr;":"\u{1D533}","&vltri;":"\u22B2","&vnsub;":"\u2282\u20D2","&vnsup;":"\u2283\u20D2","&vopf;":"\u{1D567}","&vprop;":"\u221D","&vrtri;":"\u22B3","&vscr;":"\u{1D4CB}","&vsubnE;":"\u2ACB\uFE00","&vsubne;":"\u228A\uFE00","&vsupnE;":"\u2ACC\uFE00","&vsupne;":"\u228B\uFE00","&vzigzag;":"\u299A","&wcirc;":"\u0175","&wedbar;":"\u2A5F","&wedge;":"\u2227","&wedgeq;":"\u2259","&weierp;":"\u2118","&wfr;":"\u{1D534}","&wopf;":"\u{1D568}","&wp;":"\u2118","&wr;":"\u2240","&wreath;":"\u2240","&wscr;":"\u{1D4CC}","&xcap;":"\u22C2","&xcirc;":"\u25EF","&xcup;":"\u22C3","&xdtri;":"\u25BD","&xfr;":"\u{1D535}","&xhArr;":"\u27FA","&xharr;":"\u27F7","&xi;":"\u03BE","&xlArr;":"\u27F8","&xlarr;":"\u27F5","&xmap;":"\u27FC","&xnis;":"\u22FB","&xodot;":"\u2A00","&xopf;":"\u{1D569}","&xoplus;":"\u2A01","&xotime;":"\u2A02","&xrArr;":"\u27F9","&xrarr;":"\u27F6","&xscr;":"\u{1D4CD}","&xsqcup;":"\u2A06","&xuplus;":"\u2A04","&xutri;":"\u25B3","&xvee;":"\u22C1","&xwedge;":"\u22C0","&yacute":"\xFD","&yacute;":"\xFD","&yacy;":"\u044F","&ycirc;":"\u0177","&ycy;":"\u044B","&yen":"\xA5","&yen;":"\xA5","&yfr;":"\u{1D536}","&yicy;":"\u0457","&yopf;":"\u{1D56A}","&yscr;":"\u{1D4CE}","&yucy;":"\u044E","&yuml":"\xFF","&yuml;":"\xFF","&zacute;":"\u017A","&zcaron;":"\u017E","&zcy;":"\u0437","&zdot;":"\u017C","&zeetrf;":"\u2128","&zeta;":"\u03B6","&zfr;":"\u{1D537}","&zhcy;":"\u0436","&zigrarr;":"\u21DD","&zopf;":"\u{1D56B}","&zscr;":"\u{1D4CF}","&zwj;":"\u200D","&zwnj;":"\u200C"},er=sp;function ap(e){return e.replace(/&(#\d+|#x[a-f0-9]+|[a-z]+\d*);?/gi,(t,o)=>{if(typeof er[t]=="string")return er[t];if(o.charAt(0)!=="#"||t.charAt(t.length-1)!==";")return t;let i;o.charAt(1)==="x"?i=parseInt(o.substr(2),16):i=parseInt(o.substr(1),10);let r="";return i>=55296&&i<=57343||i>1114111?"\uFFFD":(i>65535&&(i-=65536,r+=String.fromCharCode(i>>>10&1023|55296),i=56320|i&1023),r+=String.fromCharCode(i),r)})}function Kt(e){return e.trim().replace(/[<>"'?&]/g,t=>{let o=t.charCodeAt(0).toString(16);return o.length<2&&(o="0"+o),"&#x"+o.toUpperCase()+";"})}function Vn(e){return"<div>"+Kt(e).replace(/\n/g,"<br />")+"</div>"}function zn(e){return e=e.replace(/\r?\n/g,"").replace(/<\!\-\-.*?\-\->/gi," ").replace(/<br\b[^>]*>/gi,`
259
259
  `).replace(/<\/?(p|div|table|tr|td|th)\b[^>]*>/gi,`
260
260
 
261
261
  `).replace(/<script\b[^>]*>.*?<\/script\b[^>]*>/gi," ").replace(/^.*<body\b[^>]*>/i,"").replace(/^.*<\/head\b[^>]*>/i,"").replace(/^.*<\!doctype\b[^>]*>/i,"").replace(/<\/body\b[^>]*>.*$/i,"").replace(/<\/html\b[^>]*>.*$/i,"").replace(/<a\b[^>]*href\s*=\s*["']?([^\s"']+)[^>]*>/gi," ($1) ").replace(/<\/?(span|em|i|strong|b|u|a)\b[^>]*>/gi,"").replace(/<li\b[^>]*>[\n\u0001\s]*/gi,"* ").replace(/<hr\b[^>]*>/g,`
@@ -265,26 +265,26 @@ ${a}
265
265
 
266
266
  `).replace(/^\n+/,`
267
267
  `).replace(/\n+$/,`
268
- `),e=sp(e),e}function Yn(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function tr(e){let t=[],o=(i,r)=>{if(r&&t.push(", "),i.group){let n=`${i.name}:`,s=";";t.push(n),i.group.forEach(o),t.push(s)}else t.push(Yn(i))};return e.forEach(o),t.join("")}function Xn(e){return`<a href="mailto:${Kt(e.address)}" class="postal-email-address">${Kt(e.name||`<${e.address}>`)}</a>`}function or(e){let t=[],o=(i,r)=>{if(r&&t.push('<span class="postal-email-address-separator">, </span>'),i.group){let n=`<span class="postal-email-address-group">${Kt(i.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';t.push(n),i.group.forEach(o),t.push(s)}else t.push(Xn(i))};return e.forEach(o),t.join(" ")}function ap(e,t,o){e=(e||"").toString(),t=t||76;let i=0,r=e.length,n="",s,a;for(;i<r;){if(s=e.substr(i,t),s.length<t){n+=s;break}if(a=s.match(/^[^\n\r]*(\r?\n|\r)/)){s=a[0],n+=s,i+=s.length;continue}else(a=s.match(/(\s+)[^\s]*$/))&&a[0].length-(o?(a[1]||"").length:0)<s.length?s=s.substr(0,s.length-(a[0].length-(o?(a[1]||"").length:0))):(a=e.substr(i+s.length).match(/^[^\s]+(\s*)/))&&(s=s+a[0].substr(0,a[0].length-(o?0:(a[1]||"").length)));n+=s,i+=s.length,i<r&&(n+=`\r
269
- `)}return n}function ir(e){let t=[];if(e.from&&t.push({key:"From",val:Yn(e.from)}),e.subject&&t.push({key:"Subject",val:e.subject}),e.date){let s={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},a=typeof Intl>"u"?e.date:new Intl.DateTimeFormat("default",s).format(new Date(e.date));t.push({key:"Date",val:a})}e.to&&e.to.length&&t.push({key:"To",val:tr(e.to)}),e.cc&&e.cc.length&&t.push({key:"Cc",val:tr(e.cc)}),e.bcc&&e.bcc.length&&t.push({key:"Bcc",val:tr(e.bcc)});let o=t.map(s=>s.key.length).reduce((s,a)=>a>s?a:s,0);t=t.flatMap(s=>{let a=o-s.key.length,l=`${s.key}: ${" ".repeat(a)}`,d=`${" ".repeat(s.key.length+1)} ${" ".repeat(a)}`;return ap(s.val,80,!0).split(/\r?\n/).map(m=>m.trim()).map((m,f)=>`${f?d:l}${m}`)});let i=t.map(s=>s.length).reduce((s,a)=>a>s?a:s,0),r="-".repeat(i);return`
268
+ `),e=ap(e),e}function Yn(e){return[].concat(e.name||[]).concat(e.name?`<${e.address}>`:e.address).join(" ")}function tr(e){let t=[],o=(i,r)=>{if(r&&t.push(", "),i.group){let n=`${i.name}:`,s=";";t.push(n),i.group.forEach(o),t.push(s)}else t.push(Yn(i))};return e.forEach(o),t.join("")}function Xn(e){return`<a href="mailto:${Kt(e.address)}" class="postal-email-address">${Kt(e.name||`<${e.address}>`)}</a>`}function or(e){let t=[],o=(i,r)=>{if(r&&t.push('<span class="postal-email-address-separator">, </span>'),i.group){let n=`<span class="postal-email-address-group">${Kt(i.name)}:</span>`,s='<span class="postal-email-address-group">;</span>';t.push(n),i.group.forEach(o),t.push(s)}else t.push(Xn(i))};return e.forEach(o),t.join(" ")}function lp(e,t,o){e=(e||"").toString(),t=t||76;let i=0,r=e.length,n="",s,a;for(;i<r;){if(s=e.substr(i,t),s.length<t){n+=s;break}if(a=s.match(/^[^\n\r]*(\r?\n|\r)/)){s=a[0],n+=s,i+=s.length;continue}else(a=s.match(/(\s+)[^\s]*$/))&&a[0].length-(o?(a[1]||"").length:0)<s.length?s=s.substr(0,s.length-(a[0].length-(o?(a[1]||"").length:0))):(a=e.substr(i+s.length).match(/^[^\s]+(\s*)/))&&(s=s+a[0].substr(0,a[0].length-(o?0:(a[1]||"").length)));n+=s,i+=s.length,i<r&&(n+=`\r
269
+ `)}return n}function ir(e){let t=[];if(e.from&&t.push({key:"From",val:Yn(e.from)}),e.subject&&t.push({key:"Subject",val:e.subject}),e.date){let s={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},a=typeof Intl>"u"?e.date:new Intl.DateTimeFormat("default",s).format(new Date(e.date));t.push({key:"Date",val:a})}e.to&&e.to.length&&t.push({key:"To",val:tr(e.to)}),e.cc&&e.cc.length&&t.push({key:"Cc",val:tr(e.cc)}),e.bcc&&e.bcc.length&&t.push({key:"Bcc",val:tr(e.bcc)});let o=t.map(s=>s.key.length).reduce((s,a)=>a>s?a:s,0);t=t.flatMap(s=>{let a=o-s.key.length,l=`${s.key}: ${" ".repeat(a)}`,d=`${" ".repeat(s.key.length+1)} ${" ".repeat(a)}`;return lp(s.val,80,!0).split(/\r?\n/).map(m=>m.trim()).map((m,f)=>`${f?d:l}${m}`)});let i=t.map(s=>s.length).reduce((s,a)=>a>s?a:s,0),r="-".repeat(i);return`
270
270
  ${r}
271
271
  ${t.join(`
272
272
  `)}
273
273
  ${r}
274
274
  `}function rr(e){let t=[];if(e.from&&t.push(`<div class="postal-email-header-key">From</div><div class="postal-email-header-value">${Xn(e.from)}</div>`),e.subject&&t.push(`<div class="postal-email-header-key">Subject</div><div class="postal-email-header-value postal-email-header-subject">${Kt(e.subject)}</div>`),e.date){let i={year:"numeric",month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",second:"numeric",hour12:!1},r=typeof Intl>"u"?e.date:new Intl.DateTimeFormat("default",i).format(new Date(e.date));t.push(`<div class="postal-email-header-key">Date</div><div class="postal-email-header-value postal-email-header-date" data-date="${Kt(e.date)}">${Kt(r)}</div>`)}return e.to&&e.to.length&&t.push(`<div class="postal-email-header-key">To</div><div class="postal-email-header-value">${or(e.to)}</div>`),e.cc&&e.cc.length&&t.push(`<div class="postal-email-header-key">Cc</div><div class="postal-email-header-value">${or(e.cc)}</div>`),e.bcc&&e.bcc.length&&t.push(`<div class="postal-email-header-key">Bcc</div><div class="postal-email-header-value">${or(e.bcc)}</div>`),`<div class="postal-email-header">${t.length?'<div class="postal-email-header-row">':""}${t.join(`</div>
275
- <div class="postal-email-header-row">`)}${t.length?"</div>":""}</div>`}function lp(e,t){let o=!1,i="text",r,n=[],s={address:[],comment:[],group:[],text:[],textWasQuoted:[]},a,l,d=!1;for(a=0,l=e.length;a<l;a++){let c=e[a],m=a?e[a-1]:null;if(c.type==="operator")switch(c.value){case"<":i="address",d=!1;break;case"(":i="comment",d=!1;break;case":":i="group",o=!0,d=!1;break;case'"':d=!d,i="text";break;default:i="text",d=!1;break}else c.value&&(i==="address"&&(c.value=c.value.replace(/^[^<]*<\s*/,"")),m&&m.noBreak&&s[i].length?(s[i][s[i].length-1]+=c.value,i==="text"&&d&&(s.textWasQuoted[s.textWasQuoted.length-1]=!0)):(s[i].push(c.value),i==="text"&&s.textWasQuoted.push(d)))}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),o){s.text=s.text.join(" ");let c=[];s.group.length&&sr(s.group.join(","),{_depth:t+1}).forEach(f=>{f.group?c=c.concat(f.group):c.push(f)}),n.push({name:vt(s.text||r&&r.name),group:c})}else{if(!s.address.length&&s.text.length){for(a=s.text.length-1;a>=0;a--)if(!s.textWasQuoted[a]&&s.text[a].match(/^[^@\s]+@[^@\s]+$/)){s.address=s.text.splice(a,1),s.textWasQuoted.splice(a,1);break}let c=function(m){return s.address.length?m:(s.address=[m.trim()]," ")};if(!s.address.length)for(a=s.text.length-1;a>=0&&!(!s.textWasQuoted[a]&&(s.text[a]=s.text[a].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/,c).trim(),s.address.length));a--);}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),s.address.length>1&&(s.text=s.text.concat(s.address.splice(1))),s.text=s.text.join(" "),s.address=s.address.join(" "),!s.address&&/^=\?[^=]+?=$/.test(s.text.trim())){let c=vt(s.text);if(/<[^<>]+@[^<>]+>/.test(c)){let m=sr(c);if(m&&m.length)return m}return[{address:"",name:c}]}r={address:s.address||s.text||"",name:vt(s.text||s.address||"")},r.address===r.name&&((r.address||"").match(/@/)?r.name="":r.address=""),n.push(r)}return n}var nr=class{constructor(t){this.str=(t||"").toString(),this.operatorCurrent="",this.operatorExpecting="",this.node=null,this.escaped=!1,this.list=[],this.operators={'"':'"',"(":")","<":">",",":"",":":";",";":""}}tokenize(){let t=[];for(let o=0,i=this.str.length;o<i;o++){let r=this.str.charAt(o),n=o<i-1?this.str.charAt(o+1):null;this.checkChar(r,n)}return this.list.forEach(o=>{o.value=(o.value||"").toString().trim(),o.value&&t.push(o)}),t}checkChar(t,o){if(!this.escaped){if(t===this.operatorExpecting){this.node={type:"operator",value:t},o&&![" "," ","\r",`
275
+ <div class="postal-email-header-row">`)}${t.length?"</div>":""}</div>`}function cp(e,t){let o=!1,i="text",r,n=[],s={address:[],comment:[],group:[],text:[],textWasQuoted:[]},a,l,d=!1;for(a=0,l=e.length;a<l;a++){let c=e[a],m=a?e[a-1]:null;if(c.type==="operator")switch(c.value){case"<":i="address",d=!1;break;case"(":i="comment",d=!1;break;case":":i="group",o=!0,d=!1;break;case'"':d=!d,i="text";break;default:i="text",d=!1;break}else c.value&&(i==="address"&&(c.value=c.value.replace(/^[^<]*<\s*/,"")),m&&m.noBreak&&s[i].length?(s[i][s[i].length-1]+=c.value,i==="text"&&d&&(s.textWasQuoted[s.textWasQuoted.length-1]=!0)):(s[i].push(c.value),i==="text"&&s.textWasQuoted.push(d)))}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),o){s.text=s.text.join(" ");let c=[];s.group.length&&sr(s.group.join(","),{_depth:t+1}).forEach(f=>{f.group?c=c.concat(f.group):c.push(f)}),n.push({name:vt(s.text||r&&r.name),group:c})}else{if(!s.address.length&&s.text.length){for(a=s.text.length-1;a>=0;a--)if(!s.textWasQuoted[a]&&s.text[a].match(/^[^@\s]+@[^@\s]+$/)){s.address=s.text.splice(a,1),s.textWasQuoted.splice(a,1);break}let c=function(m){return s.address.length?m:(s.address=[m.trim()]," ")};if(!s.address.length)for(a=s.text.length-1;a>=0&&!(!s.textWasQuoted[a]&&(s.text[a]=s.text[a].replace(/\s*\b[^@\s]+@[^\s]+\b\s*/,c).trim(),s.address.length));a--);}if(!s.text.length&&s.comment.length&&(s.text=s.comment,s.comment=[]),s.address.length>1&&(s.text=s.text.concat(s.address.splice(1))),s.text=s.text.join(" "),s.address=s.address.join(" "),!s.address&&/^=\?[^=]+?=$/.test(s.text.trim())){let c=vt(s.text);if(/<[^<>]+@[^<>]+>/.test(c)){let m=sr(c);if(m&&m.length)return m}return[{address:"",name:c}]}r={address:s.address||s.text||"",name:vt(s.text||s.address||"")},r.address===r.name&&((r.address||"").match(/@/)?r.name="":r.address=""),n.push(r)}return n}var nr=class{constructor(t){this.str=(t||"").toString(),this.operatorCurrent="",this.operatorExpecting="",this.node=null,this.escaped=!1,this.list=[],this.operators={'"':'"',"(":")","<":">",",":"",":":";",";":""}}tokenize(){let t=[];for(let o=0,i=this.str.length;o<i;o++){let r=this.str.charAt(o),n=o<i-1?this.str.charAt(o+1):null;this.checkChar(r,n)}return this.list.forEach(o=>{o.value=(o.value||"").toString().trim(),o.value&&t.push(o)}),t}checkChar(t,o){if(!this.escaped){if(t===this.operatorExpecting){this.node={type:"operator",value:t},o&&![" "," ","\r",`
276
276
  `,",",";"].includes(o)&&(this.node.noBreak=!0),this.list.push(this.node),this.node=null,this.operatorExpecting="",this.escaped=!1;return}else if(!this.operatorExpecting&&t in this.operators){this.node={type:"operator",value:t},this.list.push(this.node),this.node=null,this.operatorExpecting=this.operators[t],this.escaped=!1;return}else if(this.operatorExpecting==='"'&&t==="\\"){this.escaped=!0;return}}this.node||(this.node={type:"text",value:""},this.list.push(this.node)),t===`
277
- `&&(t=" "),(t.charCodeAt(0)>=33||[" "," "].includes(t))&&(this.node.value+=t),this.escaped=!1}},cp=50;function sr(e,t){t=t||{};let o=t._depth||0;if(o>cp)return[];let r=new nr(e).tokenize(),n=[],s=[],a=[];if(r.forEach(l=>{l.type==="operator"&&(l.value===","||l.value===";")?(s.length&&n.push(s),s=[]):s.push(l)}),s.length&&n.push(s),n.forEach(l=>{l=lp(l,o),l.length&&(a=a.concat(l))}),t.flatten){let l=[],d=c=>{c.forEach(m=>{if(m.group)return d(m.group);l.push(m)})};return d(a),l}return a}var Go=sr;function Zn(e){for(var t="",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(e),r=i.byteLength,n=r%3,s=r-n,a,l,d,c,m,f=0;f<s;f=f+3)m=i[f]<<16|i[f+1]<<8|i[f+2],a=(m&16515072)>>18,l=(m&258048)>>12,d=(m&4032)>>6,c=m&63,t+=o[a]+o[l]+o[d]+o[c];return n==1?(m=i[s],a=(m&252)>>2,l=(m&3)<<4,t+=o[a]+o[l]+"=="):n==2&&(m=i[s]<<8|i[s+1],a=(m&64512)>>10,l=(m&1008)>>4,d=(m&15)<<2,t+=o[a]+o[l]+o[d]+"="),t}var dp=256,up=2*1024*1024;function ar(e){return e.replace(/-(.)/g,(t,o)=>o.toUpperCase())}var lo=class e{static parse(t,o){return new e(o).parse(t)}constructor(t){this.options=t||{},this.mimeOptions={maxNestingDepth:this.options.maxNestingDepth||dp,maxHeadersSize:this.options.maxHeadersSize||up},this.root=this.currentNode=new Ot({postalMime:this,...this.mimeOptions}),this.boundaries=[],this.textContent={},this.attachments=[],this.attachmentEncoding=(this.options.attachmentEncoding||"").toString().replace(/[-_\s]/g,"").trim().toLowerCase()||"arraybuffer",this.started=!1}async finalize(){await this.root.finalize()}async processLine(t,o){let i=this.boundaries;if(i.length&&t.length>2&&t[0]===45&&t[1]===45)for(let r=i.length-1;r>=0;r--){let n=i[r];if(t.length<n.value.length+2)continue;let s=!0;for(let c=0;c<n.value.length;c++)if(t[c+2]!==n.value[c]){s=!1;break}if(!s)continue;let a=n.value.length+2,l=!1;t.length>=n.value.length+4&&t[n.value.length+2]===45&&t[n.value.length+3]===45&&(l=!0,a=n.value.length+4);let d=!0;for(let c=a;c<t.length;c++)if(t[c]!==32&&t[c]!==9){d=!1;break}if(d)return l?(await n.node.finalize(),this.currentNode=n.node.parentNode||this.root):(await n.node.finalizeChildNodes(),this.currentNode=new Ot({postalMime:this,parentNode:n.node,parentMultipartType:n.node.contentType.multipart,...this.mimeOptions})),o?this.finalize():void 0}if(this.currentNode.feed(t),o)return this.finalize()}readLine(){let t=this.readPos,o=this.readPos;for(;this.readPos<this.av.length;){let i=this.av[this.readPos++];if(i!==13&&i!==10&&(o=this.readPos),i===10)return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}async processNodeTree(){let t={},o=new Set,i=this.textMap=new Map,r=this.forceRfc822Attachments(),n=async(s,a,l)=>{if(a=a||!1,l=l||!1,s.contentType.multipart)s.contentType.multipart==="alternative"?a=s:s.contentType.multipart==="related"&&(l=s);else if(this.isInlineMessageRfc822(s)&&!r){let d=new e;s.subMessage=await d.parse(s.content),i.has(s)||i.set(s,{});let c=i.get(s);(s.subMessage.text||!s.subMessage.html)&&(c.plain=c.plain||[],c.plain.push({type:"subMessage",value:s.subMessage}),o.add("plain")),s.subMessage.html&&(c.html=c.html||[],c.html.push({type:"subMessage",value:s.subMessage}),o.add("html")),d.textMap&&d.textMap.forEach((m,f)=>{i.set(f,m)});for(let m of s.subMessage.attachments||[])this.attachments.push(m)}else if(this.isInlineTextNode(s)){let d=s.contentType.parsed.value.substr(s.contentType.parsed.value.indexOf("/")+1),c=a||s;i.has(c)||i.set(c,{});let m=i.get(c);m[d]=m[d]||[],m[d].push({type:"text",value:s.getTextContent()}),o.add(d)}else if(s.content){let d=s.contentDisposition?.parsed?.params?.filename||s.contentType.parsed.params.name||null,c={filename:d?vt(d):null,mimeType:s.contentType.parsed.value,disposition:s.contentDisposition?.parsed?.value||null};switch(l&&s.contentId&&(c.related=!0),s.contentDescription&&(c.description=s.contentDescription),s.contentId&&(c.contentId=s.contentId),s.contentType.parsed.value){case"text/calendar":case"application/ics":{s.contentType.parsed.params.method&&(c.method=s.contentType.parsed.params.method.toString().toUpperCase().trim());let m=s.getTextContent().replace(/\r?\n/g,`
277
+ `&&(t=" "),(t.charCodeAt(0)>=33||[" "," "].includes(t))&&(this.node.value+=t),this.escaped=!1}},dp=50;function sr(e,t){t=t||{};let o=t._depth||0;if(o>dp)return[];let r=new nr(e).tokenize(),n=[],s=[],a=[];if(r.forEach(l=>{l.type==="operator"&&(l.value===","||l.value===";")?(s.length&&n.push(s),s=[]):s.push(l)}),s.length&&n.push(s),n.forEach(l=>{l=cp(l,o),l.length&&(a=a.concat(l))}),t.flatten){let l=[],d=c=>{c.forEach(m=>{if(m.group)return d(m.group);l.push(m)})};return d(a),l}return a}var Go=sr;function Zn(e){for(var t="",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(e),r=i.byteLength,n=r%3,s=r-n,a,l,d,c,m,f=0;f<s;f=f+3)m=i[f]<<16|i[f+1]<<8|i[f+2],a=(m&16515072)>>18,l=(m&258048)>>12,d=(m&4032)>>6,c=m&63,t+=o[a]+o[l]+o[d]+o[c];return n==1?(m=i[s],a=(m&252)>>2,l=(m&3)<<4,t+=o[a]+o[l]+"=="):n==2&&(m=i[s]<<8|i[s+1],a=(m&64512)>>10,l=(m&1008)>>4,d=(m&15)<<2,t+=o[a]+o[l]+o[d]+"="),t}var up=256,mp=2*1024*1024;function ar(e){return e.replace(/-(.)/g,(t,o)=>o.toUpperCase())}var lo=class e{static parse(t,o){return new e(o).parse(t)}constructor(t){this.options=t||{},this.mimeOptions={maxNestingDepth:this.options.maxNestingDepth||up,maxHeadersSize:this.options.maxHeadersSize||mp},this.root=this.currentNode=new Ot({postalMime:this,...this.mimeOptions}),this.boundaries=[],this.textContent={},this.attachments=[],this.attachmentEncoding=(this.options.attachmentEncoding||"").toString().replace(/[-_\s]/g,"").trim().toLowerCase()||"arraybuffer",this.started=!1}async finalize(){await this.root.finalize()}async processLine(t,o){let i=this.boundaries;if(i.length&&t.length>2&&t[0]===45&&t[1]===45)for(let r=i.length-1;r>=0;r--){let n=i[r];if(t.length<n.value.length+2)continue;let s=!0;for(let c=0;c<n.value.length;c++)if(t[c+2]!==n.value[c]){s=!1;break}if(!s)continue;let a=n.value.length+2,l=!1;t.length>=n.value.length+4&&t[n.value.length+2]===45&&t[n.value.length+3]===45&&(l=!0,a=n.value.length+4);let d=!0;for(let c=a;c<t.length;c++)if(t[c]!==32&&t[c]!==9){d=!1;break}if(d)return l?(await n.node.finalize(),this.currentNode=n.node.parentNode||this.root):(await n.node.finalizeChildNodes(),this.currentNode=new Ot({postalMime:this,parentNode:n.node,parentMultipartType:n.node.contentType.multipart,...this.mimeOptions})),o?this.finalize():void 0}if(this.currentNode.feed(t),o)return this.finalize()}readLine(){let t=this.readPos,o=this.readPos;for(;this.readPos<this.av.length;){let i=this.av[this.readPos++];if(i!==13&&i!==10&&(o=this.readPos),i===10)return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}return{bytes:new Uint8Array(this.buf,t,o-t),done:this.readPos>=this.av.length}}async processNodeTree(){let t={},o=new Set,i=this.textMap=new Map,r=this.forceRfc822Attachments(),n=async(s,a,l)=>{if(a=a||!1,l=l||!1,s.contentType.multipart)s.contentType.multipart==="alternative"?a=s:s.contentType.multipart==="related"&&(l=s);else if(this.isInlineMessageRfc822(s)&&!r){let d=new e;s.subMessage=await d.parse(s.content),i.has(s)||i.set(s,{});let c=i.get(s);(s.subMessage.text||!s.subMessage.html)&&(c.plain=c.plain||[],c.plain.push({type:"subMessage",value:s.subMessage}),o.add("plain")),s.subMessage.html&&(c.html=c.html||[],c.html.push({type:"subMessage",value:s.subMessage}),o.add("html")),d.textMap&&d.textMap.forEach((m,f)=>{i.set(f,m)});for(let m of s.subMessage.attachments||[])this.attachments.push(m)}else if(this.isInlineTextNode(s)){let d=s.contentType.parsed.value.substr(s.contentType.parsed.value.indexOf("/")+1),c=a||s;i.has(c)||i.set(c,{});let m=i.get(c);m[d]=m[d]||[],m[d].push({type:"text",value:s.getTextContent()}),o.add(d)}else if(s.content){let d=s.contentDisposition?.parsed?.params?.filename||s.contentType.parsed.params.name||null,c={filename:d?vt(d):null,mimeType:s.contentType.parsed.value,disposition:s.contentDisposition?.parsed?.value||null};switch(l&&s.contentId&&(c.related=!0),s.contentDescription&&(c.description=s.contentDescription),s.contentId&&(c.contentId=s.contentId),s.contentType.parsed.value){case"text/calendar":case"application/ics":{s.contentType.parsed.params.method&&(c.method=s.contentType.parsed.params.method.toString().toUpperCase().trim());let m=s.getTextContent().replace(/\r?\n/g,`
278
278
  `).replace(/\n*$/,`
279
279
  `);c.content=ct.encode(m);break}default:c.content=s.content}this.attachments.push(c)}for(let d of s.childNodes)await n(d,a,l)};await n(this.root,!1,!1),i.forEach(s=>{o.forEach(a=>{if(t[a]||(t[a]=[]),s[a])s[a].forEach(l=>{switch(l.type){case"text":t[a].push(l.value);break;case"subMessage":switch(a){case"html":t[a].push(rr(l.value));break;case"plain":t[a].push(ir(l.value));break}break}});else{let l;switch(a){case"html":l="plain";break;case"plain":l="html";break}(s[l]||[]).forEach(d=>{switch(d.type){case"text":switch(a){case"html":t[a].push(Vn(d.value));break;case"plain":t[a].push(zn(d.value));break}break;case"subMessage":switch(a){case"html":t[a].push(rr(d.value));break;case"plain":t[a].push(ir(d.value));break}break}})}})}),Object.keys(t).forEach(s=>{t[s]=t[s].join(`
280
- `)}),this.textContent=t}isInlineTextNode(t){if(t.contentDisposition?.parsed?.value==="attachment")return!1;switch(t.contentType.parsed?.value){case"text/html":case"text/plain":return!0;default:return!1}}isInlineMessageRfc822(t){return t.contentType.parsed?.value!=="message/rfc822"?!1:(t.contentDisposition?.parsed?.value||(this.options.rfc822Attachments?"attachment":"inline"))==="inline"}forceRfc822Attachments(){if(this.options.forceRfc822Attachments)return!0;let t=!1,o=i=>{i.contentType.multipart||i.contentType.parsed&&["message/delivery-status","message/feedback-report"].includes(i.contentType.parsed.value)&&(t=!0);for(let r of i.childNodes)o(r)};return o(this.root),t}async resolveStream(t){let o=0,i=[],r=t.getReader();for(;;){let{done:a,value:l}=await r.read();if(a)break;i.push(l),o+=l.length}let n=new Uint8Array(o),s=0;for(let a of i)n.set(a,s),s+=a.length;return n}async parse(t){if(this.started)throw new Error("Can not reuse parser, create a new PostalMime object");for(this.started=!0,t&&typeof t.getReader=="function"&&(t=await this.resolveStream(t)),t=t||new ArrayBuffer(0),typeof t=="string"&&(t=ct.encode(t)),(t instanceof Blob||Object.prototype.toString.call(t)==="[object Blob]")&&(t=await dt(t)),t.buffer instanceof ArrayBuffer&&(t=new Uint8Array(t).buffer),this.buf=t,this.av=new Uint8Array(t),this.readPos=0;this.readPos<this.av.length;){let r=this.readLine();await this.processLine(r.bytes,r.done)}await this.processNodeTree();let o={headers:this.root.headers.map(r=>({key:r.key,originalKey:r.originalKey,value:r.value})).reverse()};for(let r of["from","sender"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=Go(n.value);s&&s.length&&(o[r]=s[0])}}for(let r of["delivered-to","return-path"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=Go(n.value);if(s&&s.length&&s[0].address){let a=ar(r);o[a]=s[0].address}}}for(let r of["to","cc","bcc","reply-to"]){let n=this.root.headers.filter(a=>a.key===r),s=[];if(n.filter(a=>a&&a.value).map(a=>Go(a.value)).forEach(a=>s=s.concat(a||[])),s&&s.length){let a=ar(r);o[a]=s}}for(let r of["subject","message-id","in-reply-to","references"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=ar(r);o[s]=vt(n.value)}}let i=this.root.headers.find(r=>r.key==="date");if(i){let r=new Date(i.value);r.toString()==="Invalid Date"?r=i.value:r=r.toISOString(),o.date=r}switch(this.textContent?.html&&(o.html=this.textContent.html),this.textContent?.plain&&(o.text=this.textContent.plain),o.attachments=this.attachments,o.headerLines=(this.root.rawHeaderLines||[]).slice().reverse(),this.attachmentEncoding){case"arraybuffer":break;case"base64":for(let n of o.attachments||[])n?.content&&(n.content=Zn(n.content),n.encoding="base64");break;case"utf8":let r=new TextDecoder("utf8");for(let n of o.attachments||[])n?.content&&(n.content=r.decode(n.content),n.encoding="utf8");break;default:throw new Error("Unknown attachment encoding")}return o}};var As=ue(cs(),1),Cp="6.27.0";function ce(e,t){let o=It(t);return o?`${e}?${o}`:e}function It(e){let t=new URLSearchParams;return e.limit!==void 0&&t.set("limit",e.limit.toString()),"after"in e&&e.after!==void 0&&t.set("after",e.after),"before"in e&&e.before!==void 0&&t.set("before",e.before),t.toString()}var wp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/api-keys",e,t)}async list(e={}){let t=ce("/api-keys",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/api-keys/${e}`,t)}async remove(e){return await this.resend.delete(`/api-keys/${e}`)}},Up=class{constructor(e){this.resend=e}async get(e){return await this.resend.get(`/automations/${e.automationId}/runs/${e.runId}`)}async list(e){let t=It(e),o=new URLSearchParams(t);if(e.status){let n=Array.isArray(e.status)?e.status.join(","):e.status;o.set("status",n)}let i=o.toString(),r=i?`/automations/${e.automationId}/runs?${i}`:`/automations/${e.automationId}/runs`;return await this.resend.get(r)}};function bs(e){switch(e.type){case"trigger":return{key:e.key,type:e.type,config:{event_name:e.config.eventName}};case"delay":return{key:e.key,type:e.type,config:e.config};case"send_email":return{key:e.key,type:e.type,config:{template:e.config.template,subject:e.config.subject,from:e.config.from,reply_to:e.config.replyTo}};case"wait_for_event":return{key:e.key,type:e.type,config:{event_name:e.config.eventName,timeout:e.config.timeout,filter_rule:e.config.filterRule}};case"condition":return{key:e.key,type:e.type,config:e.config};case"contact_update":return{key:e.key,type:e.type,config:{first_name:e.config.firstName,last_name:e.config.lastName,unsubscribed:e.config.unsubscribed,properties:e.config.properties}};case"contact_delete":return{key:e.key,type:e.type,config:e.config};case"add_to_segment":return{key:e.key,type:e.type,config:{segment_id:e.config.segmentId}}}}function ys(e){return{from:e.from,to:e.to,type:e.type}}function Sp(e){return{name:e.name,status:e.status,steps:e.steps.map(bs),connections:e.connections.map(ys)}}function vp(e){return{event:e.event,contact_id:e.contactId,email:e.email,payload:e.payload}}var Kp=class{constructor(e){this.resend=e,this.runs=new Up(this.resend)}async create(e){return await this.resend.post("/automations",Sp(e))}async list(e={}){let t=[It(e)];e.status&&t.push(`status=${encodeURIComponent(e.status)}`);let o=t.filter(Boolean).join("&"),i=o?`/automations?${o}`:"/automations";return await this.resend.get(i)}async get(e){return await this.resend.get(`/automations/${e}`)}async remove(e){return await this.resend.delete(`/automations/${e}`)}async update(e,t){let o={};return t.name!==void 0&&(o.name=t.name),t.status!==void 0&&(o.status=t.status),t.steps!==void 0&&(o.steps=t.steps.map(bs)),t.connections!==void 0&&(o.connections=t.connections.map(ys)),await this.resend.patch(`/automations/${e}`,o)}async duplicate(e){return await this.resend.post(`/automations/${e}/duplicate`)}async stop(e){return await this.resend.post(`/automations/${e}/stop`)}};function xp(e){return e?.map(t=>({content:t.content,filename:t.filename,path:t.path,content_type:t.contentType,content_id:t.contentId}))}function Cs(e){return{attachments:xp(e.attachments),bcc:e.bcc,cc:e.cc,from:e.from,headers:e.headers,html:e.html,reply_to:e.replyTo,scheduled_at:e.scheduledAt,subject:e.subject,tags:e.tags,text:e.text,to:e.to,template:e.template?{id:e.template.id,variables:e.template.variables}:void 0,topic_id:e.topicId}}async function uo(e){let t;try{({render:t}=await import("@react-email/render"))}catch{throw new Error("Failed to render React component. Make sure to install `@react-email/render` or `@react-email/components`.")}return t(e)}var kp=class{constructor(e){this.resend=e}async send(e,t){return this.create(e,t)}async create(e,t){let o=[];for(let i of e)i.react&&(i.html=await uo(i.react),i.react=void 0),o.push(Cs(i));return await this.resend.post("/emails/batch",o,{...t,headers:{"x-batch-validation":t?.batchValidation??"strict",...t?.headers}})}},Fp=class{constructor(e){this.resend=e}async create(e,t={}){let o=e.react?await uo(e.react):e.html;return await this.resend.post("/broadcasts",{name:e.name,segment_id:e.segmentId,audience_id:e.audienceId,preview_text:e.previewText,from:e.from,html:o,reply_to:e.replyTo,subject:e.subject,text:e.text,topic_id:e.topicId,send:e.send,scheduled_at:e.scheduledAt},t)}async send(e,t){return await this.resend.post(`/broadcasts/${e}/send`,{scheduled_at:t?.scheduledAt})}async list(e={}){let t=ce("/broadcasts",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/broadcasts/${e}`)}async recipients(e,t){let o=`/broadcasts/${e}/recipients?${Rp(t)}`;return await this.resend.get(o)}async clickedLinks(e,t={}){let o=ce(`/broadcasts/${e}/clicked-links`,t);return await this.resend.get(o)}async remove(e){return await this.resend.delete(`/broadcasts/${e}`)}async cancel(e){return await this.resend.post(`/broadcasts/${e}/cancel`)}async update(e,t){let o=t.react?await uo(t.react):t.html;return await this.resend.patch(`/broadcasts/${e}`,{name:t.name,segment_id:t.segmentId,audience_id:t.audienceId,from:t.from,html:o,text:t.text,subject:t.subject,reply_to:t.replyTo,preview_text:t.previewText,topic_id:t.topicId})}};function Rp(e){let{type:t,email:o,bounceType:i,...r}=e,n=new URLSearchParams(It(r));return n.set("type",t),o!==void 0&&n.set("email",o),i!==void 0&&n.set("bounce_type",i),n.toString()}function ds(e){return{id:e.id,key:e.key,createdAt:e.created_at,type:e.type,fallbackValue:e.fallback_value}}function us(e){return"key"in e?{key:e.key,type:e.type,fallback_value:e.fallbackValue}:{fallback_value:e.fallbackValue}}var _p=class{constructor(e){this.resend=e}async create(e){let t=us(e);return await this.resend.post("/contact-properties",t)}async list(e={}){let t=ce("/contact-properties",e),o=await this.resend.get(t);return o.data?{data:{...o.data,data:o.data.data.map(i=>ds(i))},headers:o.headers,error:null}:o}async get(e){if(!e)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=await this.resend.get(`/contact-properties/${e}`);return t.data?{data:{object:"contact_property",...ds(t.data)},headers:t.headers,error:null}:t}async update(e){if(!e.id)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=us(e);return await this.resend.patch(`/contact-properties/${e.id}`,t)}async remove(e){return e?await this.resend.delete(`/contact-properties/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},Dp=class{constructor(e){this.resend=e}async create(e,t={}){let o=this.buildCreateFormData(e);return this.resend.post("/contacts/imports",o,t)}async list(e={}){let t=new URLSearchParams(It(e));e.status!==void 0&&t.set("status",e.status);let o=t.toString(),i=o?`/contacts/imports?${o}`:"/contacts/imports";return this.resend.get(i)}async get(e){return this.resend.get(`/contacts/imports/${e}`)}buildCreateFormData(e){let t=new FormData;return t.append("file",e.file),this.appendField(t,"column_map",this.buildColumnMap(e.columnMap??null)),this.appendField(t,"on_conflict",e.onConflict??null),this.appendField(t,"segments",e.segments??null),this.appendField(t,"topics",e.topics??null),t}buildColumnMap(e){return e===null?null:{email:e.email,first_name:e.firstName,last_name:e.lastName,unsubscribed:e.unsubscribed,properties:e.properties}}appendField(e,t,o){o!==null&&e.append(t,typeof o=="string"?o:JSON.stringify(o))}},Ep=class{constructor(e){this.resend=e}async list(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=ce(`/contacts/${e.email?e.email:e.contactId}/segments`,e);return await this.resend.get(t)}async add(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.post(`/contacts/${t}/segments/${e.segmentId}`)}async remove(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.delete(`/contacts/${t}/segments/${e.segmentId}`)}},Bp=class{constructor(e){this.resend=e}async update(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.id;return this.resend.patch(`/contacts/${t}/topics`,e.topics)}async list(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=ce(`/contacts/${e.email?e.email:e.id}/topics`,e);return this.resend.get(t)}},Op=class{constructor(e){this.resend=e,this.imports=new Dp(this.resend),this.topics=new Bp(this.resend),this.segments=new Ep(this.resend)}async create(e,t={}){return"audienceId"in e?"segments"in e||"topics"in e?{data:null,headers:null,error:{message:"`audienceId` is deprecated, and cannot be used together with `segments` or `topics`. Use `segments` instead to add one or more segments to the new contact.",statusCode:null,name:"invalid_parameter"}}:await this.resend.post(`/audiences/${e.audienceId}/contacts`,{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties},t):await this.resend.post("/contacts",{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties,segments:e.segments,topics:e.topics},t)}async list(e={}){let t=e.segmentId??e.audienceId;if(!t){let i=ce("/contacts",e);return await this.resend.get(i)}let o=ce(`/segments/${t}/contacts`,e);return await this.resend.get(o)}async get(e){return typeof e=="string"?this.resend.get(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.get(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.get(`/contacts/${e?.email?e?.email:e?.id}`)}async update(e){return!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?await this.resend.patch(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties}):await this.resend.patch(`/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties})}async remove(e){return typeof e=="string"?this.resend.delete(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.delete(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.delete(`/contacts/${e?.email?e?.email:e?.id}`)}};function Tp(e){return{name:e.name,region:e.region,custom_return_path:e.customReturnPath,capabilities:e.capabilities,open_tracking:e.openTracking,click_tracking:e.clickTracking,tls:e.tls,tracking_subdomain:e.trackingSubdomain}}var Ip=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/domains/claim",{name:e.name,region:e.region,custom_return_path:e.customReturnPath,open_tracking:e.openTracking,click_tracking:e.clickTracking,tracking_subdomain:e.trackingSubdomain},t)}async get(e){return await this.resend.get(`/domains/${e}/claim`)}async verify(e){return await this.resend.post(`/domains/${e}/claim/verify`)}},jp=class{constructor(e){this.resend=e,this.claims=new Ip(this.resend)}async create(e,t={}){return await this.resend.post("/domains",Tp(e),t)}async list(e={}){let t=ce("/domains",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/domains/${e}`)}async update(e){return await this.resend.patch(`/domains/${e.id}`,{click_tracking:e.clickTracking,open_tracking:e.openTracking,tls:e.tls,capabilities:e.capabilities,tracking_subdomain:e.trackingSubdomain})}async remove(e){return await this.resend.delete(`/domains/${e}`)}async verify(e){return await this.resend.post(`/domains/${e}/verify`)}},Pp=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=ce(`/emails/${t}/attachments`,e);return await this.resend.get(o)}},$p=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/receiving/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=ce(`/emails/receiving/${t}/attachments`,e);return await this.resend.get(o)}},Gp=class{constructor(e){this.resend=e,this.attachments=new $p(e)}async get(e,t={}){let o=new URLSearchParams;t.html_format!==void 0&&o.set("html_format",t.html_format);let i=o.toString(),r=i?`/emails/receiving/${e}?${i}`:`/emails/receiving/${e}`;return await this.resend.get(r)}async list(e={}){let t=ce("/emails/receiving",e);return await this.resend.get(t)}async forward(e,t={}){let{emailId:o,to:i,from:r}=e,n=e.passthrough!==!1,s=await this.get(o);if(s.error)return{data:null,error:s.error,headers:s.headers};let a=s.data,l=a.subject||"(no subject)";if(n)return this.forwardPassthrough(a,{to:i,from:r,subject:l},t);let d=l.startsWith("Fwd:")?l:`Fwd: ${l}`;return this.forwardWrapped(a,{to:i,from:r,subject:d,text:"text"in e?e.text:void 0,html:"html"in e?e.html:void 0},t)}async forwardPassthrough(e,t,o){let{to:i,from:r,subject:n}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let s=await fetch(e.raw.download_url);if(!s.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:s.status},headers:null};let a=await s.text(),l=await lo.parse(a,{attachmentEncoding:"base64"}),d=l.attachments.map(c=>{let m=c.contentId?c.contentId.replace(/^<|>$/g,""):void 0;return{filename:c.filename,content:c.content.toString(),content_type:c.mimeType,content_id:m||void 0}});return await this.resend.post("/emails",{from:r,to:i,subject:n,text:l.text||void 0,html:l.html||void 0,attachments:d.length>0?d:void 0},o)}async forwardWrapped(e,t,o){let{to:i,from:r,subject:n,text:s,html:a}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let l=await fetch(e.raw.download_url);if(!l.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:l.status},headers:null};let d=await l.text();return await this.resend.post("/emails",{from:r,to:i,subject:n,text:s,html:a,attachments:[{filename:"forwarded_message.eml",content:Buffer.from(d).toString("base64"),content_type:"message/rfc822"}]},o)}},Hp=class{constructor(e){this.resend=e,this.attachments=new Pp(e),this.receiving=new Gp(e)}async send(e,t={}){return this.create(e,t)}async create(e,t={}){let o={...e};return e.react&&(o.html=await uo(e.react)),await this.resend.post("/emails",Cs(o),t)}async get(e){return await this.resend.get(`/emails/${e}`)}async list(e={}){let t=ce("/emails",e);return await this.resend.get(t)}async update(e){return await this.resend.patch(`/emails/${e.id}`,{scheduled_at:e.scheduledAt})}async cancel(e){return await this.resend.post(`/emails/${e}/cancel`)}async share(e,t){return await this.resend.post(`/emails/${e}/share`,{expires_in:t?.expiresIn})}async metrics(e={}){let t=Qp(e),o=t?`/emails/metrics?${t}`:"/emails/metrics";return await this.resend.get(o)}};function Qp(e){let t={start_date:e.startDate,end_date:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:e.metrics?.join(","),dimensions:e.dimensions?.join(","),domain_id:e.domainId?.join(","),email_id:e.emailId?.join(","),broadcast_id:e.broadcastId?.join(",")},o=new URLSearchParams;for(let[i,r]of Object.entries(t))r!==void 0&&r!==""&&o.set(i,r);return o.toString()}var Np=class{constructor(e){this.resend=e}async send(e){return await this.resend.post("/events/send",vp(e))}async create(e){return await this.resend.post("/events",e)}async get(e){return await this.resend.get(`/events/${encodeURIComponent(e)}`)}async list(e={}){let t=ce("/events",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/events/${encodeURIComponent(e)}`,t)}async remove(e){return await this.resend.delete(`/events/${encodeURIComponent(e)}`)}},Mp=class{constructor(e){this.resend=e}async list(e={}){let t=ce("/logs",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/logs/${e}`)}},qp=class{constructor(e){this.resend=e}async list(e={}){let t=ce("/oauth/grants",e);return await this.resend.get(t)}async revoke(e){return await this.resend.delete(`/oauth/grants/${e}`)}},Lp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/segments",e,t)}async list(e={}){let t=ce("/segments",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/segments/${e}`)}async update(e,t){return await this.resend.patch(`/segments/${e}`,t)}async remove(e){return await this.resend.delete(`/segments/${e}`)}},Wp=class{constructor(e){this.resend=e}async add(e){return this.resend.post("/suppressions/batch/add",e)}async remove(e){return this.resend.post("/suppressions/batch/remove",e)}},ms=()=>({data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}),Jp=class{constructor(e){this.resend=e,this.batch=new Wp(e)}async add(e){return this.resend.post("/suppressions",e)}async list(e={}){let t=Vp(e),o=t?`/suppressions?${t}`:"/suppressions";return this.resend.get(o)}async get(e){return e?this.resend.get(`/suppressions/${encodeURIComponent(e)}`):ms()}async remove(e){return e?this.resend.delete(`/suppressions/${encodeURIComponent(e)}`):ms()}};function Vp(e){let{origin:t,...o}=e,i=new URLSearchParams(It(o));return t&&i.set("origin",t),i.toString()}function zp(e={}){let t=new URLSearchParams;return e.before&&t.set("before",e.before),e.after&&t.set("after",e.after),e.limit&&t.set("limit",e.limit.toString()),t.size>0?`?${t.toString()}`:""}function Yp(e){return e?.map(t=>({key:t.key,type:t.type,fallback_value:t.fallbackValue}))}function ps(e){return{name:"name"in e?e.name:void 0,subject:e.subject,html:e.html,text:e.text,alias:e.alias,from:e.from,reply_to:e.replyTo,variables:Yp(e.variables)}}var fs=class{constructor(e,t){this.promise=e,this.publishFn=t}then(e,t){return this.promise.then(e,t)}async publish(){let{data:e,error:t}=await this.promise;return t?{data:null,headers:null,error:t}:this.publishFn(e.id)}},Xp=class{constructor(e){this.resend=e}create(e){return new fs(this.performCreate(e),this.publish.bind(this))}async performCreate(e){let t={...e};return e.react&&(t.html=await uo(e.react)),this.resend.post("/templates",ps(t))}async remove(e){return await this.resend.delete(`/templates/${e}`)}async get(e){return await this.resend.get(`/templates/${e}`)}async list(e={}){return this.resend.get(`/templates${zp(e)}`)}duplicate(e){return new fs(this.resend.post(`/templates/${e}/duplicate`),this.publish.bind(this))}async publish(e){return await this.resend.post(`/templates/${e}/publish`)}async update(e,t){return await this.resend.patch(`/templates/${e}`,ps(t))}},Zp=class{constructor(e){this.resend=e}async create(e){let{defaultSubscription:t,...o}=e;return await this.resend.post("/topics",{...o,default_subscription:t})}async list(){return await this.resend.get("/topics")}async get(e){return e?await this.resend.get(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async update(e){return e.id?await this.resend.patch(`/topics/${e.id}`,e):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async remove(e){return e?await this.resend.delete(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},ef=class{constructor(e){this.resend=e}async list(e){let{webhookId:t,eventId:o}=e,i=ce(`/webhooks/${t}/events/${o}/attempts`,e);return await this.resend.get(i)}},tf=class{constructor(e){this.resend=e,this.attempts=new ef(e)}async list(e){let{webhookId:t}=e,o=ce(`/webhooks/${t}/events`,e);return await this.resend.get(o)}async get(e){let{webhookId:t,eventId:o}=e;return await this.resend.get(`/webhooks/${t}/events/${o}`)}async replay(e){let{webhookId:t,eventId:o}=e;return await this.resend.post(`/webhooks/${t}/events/${o}/replay`)}},of=class{constructor(e){this.resend=e,this.events=new tf(e)}async create(e,t={}){return await this.resend.post("/webhooks",e,t)}async get(e){return await this.resend.get(`/webhooks/${e}`)}async list(e={}){let t=ce("/webhooks",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/webhooks/${e}`,t)}async remove(e){return await this.resend.delete(`/webhooks/${e}`)}async rotateSigningSecret(e){return await this.resend.post(`/webhooks/${e}/signing-secret/rotate`)}verify(e){return new As.Webhook(e.webhookSecret).verify(e.payload,{"webhook-id":e.headers.id,"webhook-timestamp":e.headers.timestamp,"webhook-signature":e.headers.signature})}},gs="https://api.resend.com",hs=`resend-node:${Cp}`;function rf(){return typeof process<"u"&&process.env&&process.env.RESEND_BASE_URL||gs}function nf(){return typeof process<"u"&&process.env&&process.env.RESEND_USER_AGENT||hs}var jt=class{constructor(e,t){if(this.key=e,this.segments=new Lp(this),this.apiKeys=new wp(this),this.audiences=this.segments,this.automations=new Kp(this),this.batch=new kp(this),this.broadcasts=new Fp(this),this.contactProperties=new _p(this),this.contacts=new Op(this),this.domains=new jp(this),this.emails=new Hp(this),this.events=new Np(this),this.logs=new Mp(this),this.oauthGrants=new qp(this),this.suppressions=new Jp(this),this.templates=new Xp(this),this.topics=new Zp(this),this.webhooks=new of(this),!e&&(typeof process<"u"&&process.env&&(this.key=process.env.RESEND_API_KEY),!this.key))throw new Error('Missing API key. Pass it to the constructor `new Resend("re_123")`');this.baseUrl=t?.baseUrl??rf(),this.userAgent=t?.userAgent??nf(),this.headers=new Headers({Authorization:`Bearer ${this.key}`,"User-Agent":this.userAgent,"Content-Type":"application/json"})}logError(e,t,o){typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"&&console.error("[Resend API Error]:",{...o!==void 0&&{status:o},error:e,path:t})}async fetchRequest(e,t={}){try{let o=await fetch(`${this.baseUrl}${e}`,t);if(!o.ok)try{let i=await o.text(),r=JSON.parse(i);return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}catch(i){if(i instanceof SyntaxError){let n={name:"application_error",statusCode:o.status,message:"Internal server error. We are unable to process your request right now, please try again later."};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}let r={message:o.statusText,statusCode:o.status,name:"application_error"};if(i instanceof Error){let n={...r,message:i.message};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}return{data:await o.json(),error:null,headers:Object.fromEntries(o.headers.entries())}}catch{let o={name:"application_error",statusCode:null,message:"Unable to fetch data. The request could not be resolved."};return this.logError(o,e),{data:null,error:o,headers:null}}}async post(e,t,o={}){let i=new Headers(this.headers),r=typeof FormData<"u"&&t instanceof FormData;if(r&&i.delete("Content-Type"),o.headers)for(let[s,a]of new Headers(o.headers).entries())i.set(s,a);o.idempotencyKey&&i.set("Idempotency-Key",o.idempotencyKey);let n={method:"POST",body:r?t:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,n)}async get(e,t={}){let o=new Headers(this.headers);if(t.headers)for(let[r,n]of new Headers(t.headers).entries())o.set(r,n);let i={method:"GET",...t,headers:o};return this.fetchRequest(e,i)}async put(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PUT",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async patch(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PATCH",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async delete(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"DELETE",body:t===void 0?void 0:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}};Ae();var xr=ue(Ve(),1);function q(e,t){return e instanceof Error?e.message:t}function ea(e){return!!(e||!process.stdout.isTTY)}function H(e,t={}){ea(t.json)?console.log(JSON.stringify(e,null,2)):console.log(typeof e=="string"?e:JSON.stringify(e,null,2)),t.exitCode!==void 0&&process.exit(t.exitCode)}var yf=new Set(["content-type","retry-after"]);function Cf(e){let t={};for(let[o,i]of Object.entries(e)){let r=o.toLowerCase();(yf.has(r)||r.startsWith("x-"))&&(t[r]=i)}return t}function g(e,t={}){let o=t.exitCode??1,i=e.headers&&Object.keys(e.headers).length>0?Cf(e.headers):void 0,r=i!==void 0&&Object.keys(i).length>0;if(ea(t.json)){let n={message:e.message,code:e.code??"unknown"};typeof e.statusCode=="number"&&(n.statusCode=e.statusCode),r&&(n.headers=i),typeof e.body=="string"&&e.body.length>0&&(n.body=e.body),console.error(JSON.stringify({error:n},null,2))}else{console.error(`${xr.default.red("Error:")} ${e.message}`);let n=[];if(typeof e.statusCode=="number"&&n.push(`HTTP ${e.statusCode}`),r)for(let[s,a]of Object.entries(i))n.push(`${s}: ${a}`);n.length>0&&console.error(xr.default.dim(`[${n.join("; ")}]`))}process.exit(o)}var ta={sending_access:0,full_access:1};function wf(e,t){return ta[e]>=ta[t]}async function Y(e,t){let o=e.profile;try{let i=await kt(e.apiKey,o);if(!i){if(o){let s=ke();if(!s.some(l=>l.name===o))throw new Error(`Profile "${o}" not found. Available profiles: ${s.map(l=>l.name).join(", ")||"(none)"}`)}throw new Error("No API key found. Set RESEND_API_KEY, use --api-key, or run: resend login")}let r;if(i.type==="api_key")r=i.permission;else{let s=i.scope.split(" ").filter(Boolean);s.includes("full_access")?r="full_access":s.includes("emails:send")?r="sending_access":g({message:`Unrecognized credential scope${i.scope?` "${i.scope}"`:""}. Run \`resend login\` to re-authenticate.`,code:"unrecognized_scope"},{json:e.json})}if(r){let s=t?.permission??"full_access";wf(r,s)||g({message:`This command requires full access. Your current credential has sending access only.
281
- ${$t}`,code:"insufficient_permissions"},{json:e.json})}let n=i.type==="api_key"?i.key:i.access_token;return new jt(n)}catch(i){g({message:q(i,"Failed to create client"),code:"auth_error"},{json:e.json})}}var oa=130;function Uf(){process.stderr.isTTY&&process.stderr.write("\r\x1B[2K"),console.error("Cancelled."),process.exit(oa)}var Gt;function ia(){Gt=Uf,process.on("SIGINT",Gt),process.on("uncaughtException",e=>{g({message:q(e,"An unexpected error occurred"),code:"unexpected_error"},{}),process.exit(1)})}function ti(e){Gt&&process.removeListener("SIGINT",Gt),Gt=e,process.on("SIGINT",Gt)}function Ht(){return oa}Ae();var oi=ue(Ve(),1);V();var ra=[1,2,4],Sf=ra.length,vf=new Set(["internal_server_error","service_unavailable","gateway_timeout"]),Kf=(e,t)=>!!(e==="rate_limit_exceeded"||t&&e!==void 0&&vf.has(e)),xf=e=>{let t=e?.["retry-after"];if(!t)return;let o=Number(t);if(Number.isFinite(o)&&o>=0)return o;let i=Date.parse(t);if(!Number.isNaN(i)){let r=(i-Date.now())/1e3;return r>0?r:0}},kf=e=>new Promise(t=>setTimeout(t,e)),go=async(e,t,o=0)=>{let i=await e(),r=t?.retryTransient??!1;if(i.error&&o<Sf&&Kf(i.error.name,r)){let n=xf(i.headers)??ra[o];return t?.onRetry?.(o,n,i.error.name??""),await kf(n*1e3),go(e,t,o+1)}return i};var na=(e,t)=>new Promise((o,i)=>{let r=setTimeout(()=>{i(new Error(`Request timed out after ${t/1e3}s`))},t);r.unref(),e.then(n=>{clearTimeout(r),o(n)},n=>{clearTimeout(r),i(n)})});var Rf=rt?String.fromCodePoint(10004):"v",_f=rt?String.fromCodePoint(9888):"!",Df=rt?String.fromCodePoint(10007):"x",Ef=["\u2839","\u2838","\u2834","\u2826","\u2807","\u280F","\u2819","\u2839"],Bf=80;async function ae(e,t,o,i,r={}){let n=se(e,i.quiet);try{let{data:s,error:a,headers:l}=await go(()=>na(t(),3e4),{retryTransient:r.retryTransient,onRetry:(d,c,m)=>{n.update(m==="rate_limit_exceeded"?`Rate limited, retrying in ${c}s...`:`Server error, retrying in ${c}s...`)}});return a&&(n.stop(),g({message:a.message,code:o,statusCode:a.statusCode,headers:l},{json:i.json})),s===null&&(n.stop(),g({message:"Unexpected empty response",code:o,headers:l},{json:i.json})),n.stop(),s}catch(s){return n.stop(),g({message:q(s,"Unknown error"),code:o},{json:i.json})}}function se(e,t){if(t||!U())return{update(a){},stop(a){},clear(){},warn(a){},fail(a){}};let o=rt?Ef:["-","\\","|","/"],i=Bf,r=0,n=e,s=setInterval(()=>{process.stderr.write(`\r\x1B[2K ${o[r++%o.length]} ${n}`)},i);return{update(a){n=a},stop(a){clearInterval(s),a?process.stderr.write(`\r\x1B[2K ${oi.default.green(Rf)} ${a}
282
- `):process.stderr.write("\r\x1B[2K")},clear(){clearInterval(s),process.stderr.write("\r\x1B[2K")},warn(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${oi.default.yellow(_f)} ${a}
283
- `)},fail(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${oi.default.red(Df)} ${a}
284
- `)}}}V();function R(e){$n(e),process.exit(Ht())}async function ii(e,t,o){(!U()||o.json)&&g({message:"Use --yes to confirm deletion in non-interactive mode.",code:"confirmation_required"},{json:o.json});let i=await ze({message:t});(k(i)||!i)&&R("Deletion cancelled.")}async function ri(e,t){let o=de(e);if(!o)return e;if(!U()||t.json)return g({message:`Profile "${e}" has an invalid name: ${o}`,code:"invalid_profile_name"},{json:t.json}),null;X.warn(`Profile "${e}" has an invalid name: ${o}`);let i=await z({message:"Enter a new name for this profile:",placeholder:e.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:r=>de(r)});k(i)&&R("Rename cancelled.");try{await ei(e,i)}catch(r){return g({message:q(r,"Failed to rename profile"),code:"rename_failed"},{json:t.json}),null}return X.success(`Profile renamed to '${i}'.`),i}async function P(e,t,o,i){if(e!==void 0)return e;(!U()||i.json)&&g(o,{json:i.json});let r=await z({message:t.message,placeholder:t.placeholder,defaultValue:t.defaultValue,validate:t.validate??(n=>!t.defaultValue&&(!n||n.length===0)?`${t.message} is required`:void 0)});return k(r)&&R("Cancelled."),r}async function ht(e,t,o,i){if(e!==void 0)return e;(!U()||i.json)&&g(o,{json:i.json});let r=await re({message:t.message,options:t.options});return k(r)&&R("Cancelled."),r}async function la(e,t,o){let i=t.filter(s=>s.required!==!1&&e[s.flag]==="");if(i.length>0){let s=i.map(a=>`--${a.flag}`).join(", ");g({message:`Empty value for required flags: ${s}`,code:"invalid_options"},{json:o.json})}let r=t.filter(s=>s.required!==!1&&!e[s.flag]);if(r.length===0)return e;if(!U()||o.json){let s=r.map(a=>`--${a.flag}`).join(", ");g({message:`Missing required flags: ${s}`,code:"missing_flags"},{json:o.json})}let n=await Pn(Object.fromEntries(r.map(s=>[s.flag,()=>z({message:s.message,placeholder:s.placeholder,defaultValue:s.defaultValue,validate:s.validate??(a=>!s.defaultValue&&(!a||a.length===0)?`${s.message} is required`:void 0)})])),{onCancel:()=>R("Operation cancelled.")});return{...e,...n}}var Of=20,sa="__fetch_more__",aa="__none__";async function ee(e,t,o,i){if(e)return{id:e,label:e};let r=i?.optional??!1;if(!U()||o.json){if(r)return;g({message:"Missing required argument: id",code:"missing_id"},{json:o.json})}let n=await Y(o,t.permission?{permission:t.permission}:void 0),s=[];for(;;){let a=s.at(-1)?.id,l=se(s.length===0?`Fetching ${t.resourcePlural}...`:`Fetching more ${t.resourcePlural}...`,o.quiet),d=await t.fetchItems(n,{limit:Of,...a&&{after:a}});if(d.error||!d.data){if(r){l.clear();return}l.fail(`Failed to fetch ${t.resourcePlural}`),g({message:d.error?.message??"Unexpected empty response",code:"list_error"},{json:o.json})}s.push(...d.data.data);let c=d.data.has_more??!1,m=t.filter?s.filter(t.filter):s;if(m.length===0&&!c&&r){l.clear();return}if(l.stop(s.length===m.length?`${t.resourcePlural} fetched`:`More ${t.resourcePlural} fetched`),m.length===0&&!c&&(X.warn(`No ${t.resourcePlural} found.`),g({message:`No ${t.resourcePlural} found.`,code:"no_items"},{json:o.json})),m.length===0&&c&&!r)continue;let f=m.map(A=>({item:A,...t.display(A)})),b=f.map(({item:A,label:w,hint:S})=>({value:A.id,label:w,hint:S}));r&&b.unshift({value:aa,label:"None"}),c&&b.push({value:sa,label:"Fetch more..."});let h=await re({message:`Select a ${t.resource}`,options:b});if(k(h)&&R("Cancelled."),h===aa)return;if(h!==sa){let A=f.find(({item:w})=>w.id===h);return{id:h,label:A?.label??h}}}}async function C(e,t,o,i){return(await ee(e,t,o,i))?.id}var ca=require("node:util"),Tf=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\r(?!\n)/g,Fe=e=>(0,ca.stripVTControlCharacters)(String(e)).replace(Tf,"");function Qt(e){return typeof e=="string"?Fe(e):Array.isArray(e)?e.map(Qt):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,o])=>[t,Qt(o)])):e}V();async function Q(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"fetch_error",t,{retryTransient:!0});!t.json&&U()?e.onInteractive(Qt(r)):H(r,{json:t.json})}async function te(e,t,o,i){let r=o.permission?{permission:o.permission}:void 0,n=await Y(i,r);t||await ii(e,o.confirmMessage,i),await ae(o.loading,()=>o.sdkCall(n),"delete_error",i),!i.json&&U()?console.log(o.successMsg):H({object:o.object,id:e,deleted:!0},{json:i.json})}async function M(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"create_error",t);!t.json&&U()?e.onInteractive(Qt(r)):H(r,{json:t.json})}async function B(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),e.errorCode,t,{retryTransient:e.retryTransient});!t.json&&U()?console.log(e.successMsg):H(r,{json:t.json})}async function F(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"list_error",t,{retryTransient:!0});!t.json&&U()?e.onInteractive(Qt(r)):H(r,{json:t.json})}V();V();var me=rt?{h:String.fromCodePoint(9472),v:String.fromCodePoint(9474),tl:String.fromCodePoint(9484),tr:String.fromCodePoint(9488),bl:String.fromCodePoint(9492),br:String.fromCodePoint(9496),lm:String.fromCodePoint(9500),rm:String.fromCodePoint(9508),tm:String.fromCodePoint(9516),bm:String.fromCodePoint(9524),mm:String.fromCodePoint(9532)}:{h:"-",v:"|",tl:"+",tr:"+",bl:"+",br:"+",lm:"+",rm:"+",tm:"+",bm:"+",mm:"+"};function If(){return process.stdout.columns}function jf(e,t,o){let i=Math.max(...e.map(n=>n.length)),r=Math.max(20,Math.min(o,60));return t.map((n,s)=>{let a=String(s+1),l=`${me.h}${me.h} ${a} ${me.h.repeat(Math.max(0,r-a.length-4))}`,d=e.map((c,m)=>` ${c.padEnd(i)} ${n[m]}`);return[l,...d].join(`
280
+ `)}),this.textContent=t}isInlineTextNode(t){if(t.contentDisposition?.parsed?.value==="attachment")return!1;switch(t.contentType.parsed?.value){case"text/html":case"text/plain":return!0;default:return!1}}isInlineMessageRfc822(t){return t.contentType.parsed?.value!=="message/rfc822"?!1:(t.contentDisposition?.parsed?.value||(this.options.rfc822Attachments?"attachment":"inline"))==="inline"}forceRfc822Attachments(){if(this.options.forceRfc822Attachments)return!0;let t=!1,o=i=>{i.contentType.multipart||i.contentType.parsed&&["message/delivery-status","message/feedback-report"].includes(i.contentType.parsed.value)&&(t=!0);for(let r of i.childNodes)o(r)};return o(this.root),t}async resolveStream(t){let o=0,i=[],r=t.getReader();for(;;){let{done:a,value:l}=await r.read();if(a)break;i.push(l),o+=l.length}let n=new Uint8Array(o),s=0;for(let a of i)n.set(a,s),s+=a.length;return n}async parse(t){if(this.started)throw new Error("Can not reuse parser, create a new PostalMime object");for(this.started=!0,t&&typeof t.getReader=="function"&&(t=await this.resolveStream(t)),t=t||new ArrayBuffer(0),typeof t=="string"&&(t=ct.encode(t)),(t instanceof Blob||Object.prototype.toString.call(t)==="[object Blob]")&&(t=await dt(t)),t.buffer instanceof ArrayBuffer&&(t=new Uint8Array(t).buffer),this.buf=t,this.av=new Uint8Array(t),this.readPos=0;this.readPos<this.av.length;){let r=this.readLine();await this.processLine(r.bytes,r.done)}await this.processNodeTree();let o={headers:this.root.headers.map(r=>({key:r.key,originalKey:r.originalKey,value:r.value})).reverse()};for(let r of["from","sender"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=Go(n.value);s&&s.length&&(o[r]=s[0])}}for(let r of["delivered-to","return-path"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=Go(n.value);if(s&&s.length&&s[0].address){let a=ar(r);o[a]=s[0].address}}}for(let r of["to","cc","bcc","reply-to"]){let n=this.root.headers.filter(a=>a.key===r),s=[];if(n.filter(a=>a&&a.value).map(a=>Go(a.value)).forEach(a=>s=s.concat(a||[])),s&&s.length){let a=ar(r);o[a]=s}}for(let r of["subject","message-id","in-reply-to","references"]){let n=this.root.headers.find(s=>s.key===r);if(n&&n.value){let s=ar(r);o[s]=vt(n.value)}}let i=this.root.headers.find(r=>r.key==="date");if(i){let r=new Date(i.value);r.toString()==="Invalid Date"?r=i.value:r=r.toISOString(),o.date=r}switch(this.textContent?.html&&(o.html=this.textContent.html),this.textContent?.plain&&(o.text=this.textContent.plain),o.attachments=this.attachments,o.headerLines=(this.root.rawHeaderLines||[]).slice().reverse(),this.attachmentEncoding){case"arraybuffer":break;case"base64":for(let n of o.attachments||[])n?.content&&(n.content=Zn(n.content),n.encoding="base64");break;case"utf8":let r=new TextDecoder("utf8");for(let n of o.attachments||[])n?.content&&(n.content=r.decode(n.content),n.encoding="utf8");break;default:throw new Error("Unknown attachment encoding")}return o}};var As=ue(cs(),1),wp="6.28.0";function ce(e,t){let o=It(t);return o?`${e}?${o}`:e}function It(e){let t=new URLSearchParams;return e.limit!==void 0&&t.set("limit",e.limit.toString()),"after"in e&&e.after!==void 0&&t.set("after",e.after),"before"in e&&e.before!==void 0&&t.set("before",e.before),t.toString()}var Up=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/api-keys",e,t)}async list(e={}){let t=ce("/api-keys",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/api-keys/${e}`,t)}async remove(e){return await this.resend.delete(`/api-keys/${e}`)}},Sp=class{constructor(e){this.resend=e}async get(e){return await this.resend.get(`/automations/${e.automationId}/runs/${e.runId}`)}async list(e){let t=It(e),o=new URLSearchParams(t);if(e.status){let n=Array.isArray(e.status)?e.status.join(","):e.status;o.set("status",n)}let i=o.toString(),r=i?`/automations/${e.automationId}/runs?${i}`:`/automations/${e.automationId}/runs`;return await this.resend.get(r)}};function bs(e){switch(e.type){case"trigger":return{key:e.key,type:e.type,config:{event_name:e.config.eventName}};case"delay":return{key:e.key,type:e.type,config:e.config};case"send_email":return{key:e.key,type:e.type,config:{template:e.config.template,subject:e.config.subject,from:e.config.from,reply_to:e.config.replyTo}};case"wait_for_event":return{key:e.key,type:e.type,config:{event_name:e.config.eventName,timeout:e.config.timeout,filter_rule:e.config.filterRule}};case"condition":return{key:e.key,type:e.type,config:e.config};case"contact_update":return{key:e.key,type:e.type,config:{first_name:e.config.firstName,last_name:e.config.lastName,unsubscribed:e.config.unsubscribed,properties:e.config.properties}};case"contact_delete":return{key:e.key,type:e.type,config:e.config};case"add_to_segment":return{key:e.key,type:e.type,config:{segment_id:e.config.segmentId}}}}function ys(e){return{from:e.from,to:e.to,type:e.type}}function vp(e){return{name:e.name,status:e.status,steps:e.steps.map(bs),connections:e.connections.map(ys)}}function Kp(e){return{event:e.event,contact_id:e.contactId,email:e.email,payload:e.payload}}var xp=class{constructor(e){this.resend=e,this.runs=new Sp(this.resend)}async create(e){return await this.resend.post("/automations",vp(e))}async list(e={}){let t=[It(e)];e.status&&t.push(`status=${encodeURIComponent(e.status)}`);let o=t.filter(Boolean).join("&"),i=o?`/automations?${o}`:"/automations";return await this.resend.get(i)}async get(e){return await this.resend.get(`/automations/${e}`)}async remove(e){return await this.resend.delete(`/automations/${e}`)}async update(e,t){let o={};return t.name!==void 0&&(o.name=t.name),t.status!==void 0&&(o.status=t.status),t.steps!==void 0&&(o.steps=t.steps.map(bs)),t.connections!==void 0&&(o.connections=t.connections.map(ys)),await this.resend.patch(`/automations/${e}`,o)}async duplicate(e){return await this.resend.post(`/automations/${e}/duplicate`)}async stop(e){return await this.resend.post(`/automations/${e}/stop`)}};function kp(e){return e?.map(t=>({content:t.content,filename:t.filename,path:t.path,content_type:t.contentType,content_id:t.contentId}))}function Cs(e){return{attachments:kp(e.attachments),bcc:e.bcc,cc:e.cc,from:e.from,headers:e.headers,html:e.html,reply_to:e.replyTo,scheduled_at:e.scheduledAt,subject:e.subject,tags:e.tags,text:e.text,to:e.to,template:e.template?{id:e.template.id,variables:e.template.variables}:void 0,topic_id:e.topicId}}async function uo(e){let t;try{({render:t}=await import("@react-email/render"))}catch{throw new Error("Failed to render React component. Make sure to install `@react-email/render` or `@react-email/components`.")}return t(e)}var Fp=class{constructor(e){this.resend=e}async send(e,t){return this.create(e,t)}async create(e,t){let o=[];for(let i of e)i.react&&(i.html=await uo(i.react),i.react=void 0),o.push(Cs(i));return await this.resend.post("/emails/batch",o,{...t,headers:{"x-batch-validation":t?.batchValidation??"strict",...t?.headers}})}},Rp=class{constructor(e){this.resend=e}async create(e,t={}){let o=e.react?await uo(e.react):e.html;return await this.resend.post("/broadcasts",{name:e.name,segment_id:e.segmentId,audience_id:e.audienceId,preview_text:e.previewText,from:e.from,html:o,reply_to:e.replyTo,subject:e.subject,text:e.text,topic_id:e.topicId,send:e.send,scheduled_at:e.scheduledAt},t)}async send(e,t){return await this.resend.post(`/broadcasts/${e}/send`,{scheduled_at:t?.scheduledAt})}async list(e={}){let t=ce("/broadcasts",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/broadcasts/${e}`)}async recipients(e,t){let o=`/broadcasts/${e}/recipients?${_p(t)}`;return await this.resend.get(o)}async clickedLinks(e,t={}){let o=ce(`/broadcasts/${e}/clicked-links`,t);return await this.resend.get(o)}async remove(e){return await this.resend.delete(`/broadcasts/${e}`)}async cancel(e){return await this.resend.post(`/broadcasts/${e}/cancel`)}async duplicate(e){return await this.resend.post(`/broadcasts/${e}/duplicate`)}async update(e,t){let o=t.react?await uo(t.react):t.html;return await this.resend.patch(`/broadcasts/${e}`,{name:t.name,segment_id:t.segmentId,audience_id:t.audienceId,from:t.from,html:o,text:t.text,subject:t.subject,reply_to:t.replyTo,preview_text:t.previewText,topic_id:t.topicId})}};function _p(e){let{type:t,email:o,bounceType:i,...r}=e,n=new URLSearchParams(It(r));return n.set("type",t),o!==void 0&&n.set("email",o),i!==void 0&&n.set("bounce_type",i),n.toString()}function ds(e){return{id:e.id,key:e.key,createdAt:e.created_at,type:e.type,fallbackValue:e.fallback_value}}function us(e){return"key"in e?{key:e.key,type:e.type,fallback_value:e.fallbackValue}:{fallback_value:e.fallbackValue}}var Dp=class{constructor(e){this.resend=e}async create(e){let t=us(e);return await this.resend.post("/contact-properties",t)}async list(e={}){let t=ce("/contact-properties",e),o=await this.resend.get(t);return o.data?{data:{...o.data,data:o.data.data.map(i=>ds(i))},headers:o.headers,error:null}:o}async get(e){if(!e)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=await this.resend.get(`/contact-properties/${e}`);return t.data?{data:{object:"contact_property",...ds(t.data)},headers:t.headers,error:null}:t}async update(e){if(!e.id)return{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}};let t=us(e);return await this.resend.patch(`/contact-properties/${e.id}`,t)}async remove(e){return e?await this.resend.delete(`/contact-properties/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},Ep=class{constructor(e){this.resend=e}async create(e,t={}){let o=this.buildCreateFormData(e);return this.resend.post("/contacts/imports",o,t)}async list(e={}){let t=new URLSearchParams(It(e));e.status!==void 0&&t.set("status",e.status);let o=t.toString(),i=o?`/contacts/imports?${o}`:"/contacts/imports";return this.resend.get(i)}async get(e){return this.resend.get(`/contacts/imports/${e}`)}buildCreateFormData(e){let t=new FormData;return t.append("file",e.file),this.appendField(t,"column_map",this.buildColumnMap(e.columnMap??null)),this.appendField(t,"on_conflict",e.onConflict??null),this.appendField(t,"segments",e.segments??null),this.appendField(t,"topics",e.topics??null),t}buildColumnMap(e){return e===null?null:{email:e.email,first_name:e.firstName,last_name:e.lastName,unsubscribed:e.unsubscribed,properties:e.properties}}appendField(e,t,o){o!==null&&e.append(t,typeof o=="string"?o:JSON.stringify(o))}},Bp=class{constructor(e){this.resend=e}async list(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=ce(`/contacts/${e.email?e.email:e.contactId}/segments`,e);return await this.resend.get(t)}async add(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.post(`/contacts/${t}/segments/${e.segmentId}`)}async remove(e){if(!e.contactId&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.contactId;return this.resend.delete(`/contacts/${t}/segments/${e.segmentId}`)}},Op=class{constructor(e){this.resend=e}async update(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=e.email?e.email:e.id;return this.resend.patch(`/contacts/${t}/topics`,e.topics)}async list(e){if(!e.id&&!e.email)return{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}};let t=ce(`/contacts/${e.email?e.email:e.id}/topics`,e);return this.resend.get(t)}},Tp=class{constructor(e){this.resend=e,this.imports=new Ep(this.resend),this.topics=new Op(this.resend),this.segments=new Bp(this.resend)}async create(e,t={}){return"audienceId"in e?"segments"in e||"topics"in e?{data:null,headers:null,error:{message:"`audienceId` is deprecated, and cannot be used together with `segments` or `topics`. Use `segments` instead to add one or more segments to the new contact.",statusCode:null,name:"invalid_parameter"}}:await this.resend.post(`/audiences/${e.audienceId}/contacts`,{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties},t):await this.resend.post("/contacts",{unsubscribed:e.unsubscribed,email:e.email,first_name:e.firstName,last_name:e.lastName,properties:e.properties,segments:e.segments,topics:e.topics},t)}async list(e={}){let t=e.segmentId??e.audienceId;if(!t){let i=ce("/contacts",e);return await this.resend.get(i)}let o=ce(`/segments/${t}/contacts`,e);return await this.resend.get(o)}async get(e){return typeof e=="string"?this.resend.get(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.get(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.get(`/contacts/${e?.email?e?.email:e?.id}`)}async update(e){return!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?await this.resend.patch(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties}):await this.resend.patch(`/contacts/${e?.email?e?.email:e?.id}`,{unsubscribed:e.unsubscribed,first_name:e.firstName,last_name:e.lastName,properties:e.properties})}async remove(e){return typeof e=="string"?this.resend.delete(`/contacts/${e}`):!e.id&&!e.email?{data:null,headers:null,error:{message:"Missing `id` or `email` field.",statusCode:null,name:"missing_required_field"}}:e.audienceId?this.resend.delete(`/audiences/${e.audienceId}/contacts/${e?.email?e?.email:e?.id}`):this.resend.delete(`/contacts/${e?.email?e?.email:e?.id}`)}};function Ip(e){return{name:e.name,region:e.region,custom_return_path:e.customReturnPath,capabilities:e.capabilities,open_tracking:e.openTracking,click_tracking:e.clickTracking,tls:e.tls,tracking_subdomain:e.trackingSubdomain}}var jp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/domains/claim",{name:e.name,region:e.region,custom_return_path:e.customReturnPath,open_tracking:e.openTracking,click_tracking:e.clickTracking,tracking_subdomain:e.trackingSubdomain},t)}async get(e){return await this.resend.get(`/domains/${e}/claim`)}async verify(e){return await this.resend.post(`/domains/${e}/claim/verify`)}},Pp=class{constructor(e){this.resend=e,this.claims=new jp(this.resend)}async create(e,t={}){return await this.resend.post("/domains",Ip(e),t)}async list(e={}){let t=ce("/domains",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/domains/${e}`)}async update(e){return await this.resend.patch(`/domains/${e.id}`,{click_tracking:e.clickTracking,open_tracking:e.openTracking,tls:e.tls,capabilities:e.capabilities,tracking_subdomain:e.trackingSubdomain})}async remove(e){return await this.resend.delete(`/domains/${e}`)}async verify(e){return await this.resend.post(`/domains/${e}/verify`)}},$p=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=ce(`/emails/${t}/attachments`,e);return await this.resend.get(o)}},Gp=class{constructor(e){this.resend=e}async get(e){let{emailId:t,id:o}=e;return await this.resend.get(`/emails/receiving/${t}/attachments/${o}`)}async list(e){let{emailId:t}=e,o=ce(`/emails/receiving/${t}/attachments`,e);return await this.resend.get(o)}},Hp=class{constructor(e){this.resend=e,this.attachments=new Gp(e)}async get(e,t={}){let o=new URLSearchParams;t.html_format!==void 0&&o.set("html_format",t.html_format);let i=o.toString(),r=i?`/emails/receiving/${e}?${i}`:`/emails/receiving/${e}`;return await this.resend.get(r)}async list(e={}){let t=ce("/emails/receiving",e);return await this.resend.get(t)}async forward(e,t={}){let{emailId:o,to:i,from:r}=e,n=e.passthrough!==!1,s=await this.get(o);if(s.error)return{data:null,error:s.error,headers:s.headers};let a=s.data,l=a.subject||"(no subject)";if(n)return this.forwardPassthrough(a,{to:i,from:r,subject:l},t);let d=l.startsWith("Fwd:")?l:`Fwd: ${l}`;return this.forwardWrapped(a,{to:i,from:r,subject:d,text:"text"in e?e.text:void 0,html:"html"in e?e.html:void 0},t)}async forwardPassthrough(e,t,o){let{to:i,from:r,subject:n}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let s=await fetch(e.raw.download_url);if(!s.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:s.status},headers:null};let a=await s.text(),l=await lo.parse(a,{attachmentEncoding:"base64"}),d=l.attachments.map(c=>{let m=c.contentId?c.contentId.replace(/^<|>$/g,""):void 0;return{filename:c.filename,content:c.content.toString(),content_type:c.mimeType,content_id:m||void 0}});return await this.resend.post("/emails",{from:r,to:i,subject:n,text:l.text||void 0,html:l.html||void 0,attachments:d.length>0?d:void 0},o)}async forwardWrapped(e,t,o){let{to:i,from:r,subject:n,text:s,html:a}=t;if(!e.raw?.download_url)return{data:null,error:{name:"validation_error",message:"Raw email content is not available for this email",statusCode:400},headers:null};let l=await fetch(e.raw.download_url);if(!l.ok)return{data:null,error:{name:"application_error",message:"Failed to download raw email content",statusCode:l.status},headers:null};let d=await l.text();return await this.resend.post("/emails",{from:r,to:i,subject:n,text:s,html:a,attachments:[{filename:"forwarded_message.eml",content:Buffer.from(d).toString("base64"),content_type:"message/rfc822"}]},o)}},Qp=class{constructor(e){this.resend=e,this.attachments=new $p(e),this.receiving=new Hp(e)}async send(e,t={}){return this.create(e,t)}async create(e,t={}){let o={...e};return e.react&&(o.html=await uo(e.react)),await this.resend.post("/emails",Cs(o),t)}async get(e){return await this.resend.get(`/emails/${e}`)}async list(e={}){let t=ce("/emails",e);return await this.resend.get(t)}async update(e){return await this.resend.patch(`/emails/${e.id}`,{scheduled_at:e.scheduledAt})}async cancel(e){return await this.resend.post(`/emails/${e}/cancel`)}async share(e,t){return await this.resend.post(`/emails/${e}/share`,{expires_in:t?.expiresIn})}async metrics(e={}){let t=Np(e),o=t?`/emails/metrics?${t}`:"/emails/metrics";return await this.resend.get(o)}};function Np(e){let t={start_date:e.startDate,end_date:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:e.metrics?.join(","),dimensions:e.dimensions?.join(","),domain_id:e.domainId?.join(","),email_id:e.emailId?.join(","),broadcast_id:e.broadcastId?.join(",")},o=new URLSearchParams;for(let[i,r]of Object.entries(t))r!==void 0&&r!==""&&o.set(i,r);return o.toString()}var Mp=class{constructor(e){this.resend=e}async send(e){return await this.resend.post("/events/send",Kp(e))}async create(e){return await this.resend.post("/events",e)}async get(e){return await this.resend.get(`/events/${encodeURIComponent(e)}`)}async list(e={}){let t=ce("/events",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/events/${encodeURIComponent(e)}`,t)}async remove(e){return await this.resend.delete(`/events/${encodeURIComponent(e)}`)}},qp=class{constructor(e){this.resend=e}async list(e={}){let t=ce("/logs",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/logs/${e}`)}},Lp=class{constructor(e){this.resend=e}async list(e={}){let t=ce("/oauth/grants",e);return await this.resend.get(t)}async revoke(e){return await this.resend.delete(`/oauth/grants/${e}`)}},Wp=class{constructor(e){this.resend=e}async create(e,t={}){return await this.resend.post("/segments",e,t)}async list(e={}){let t=ce("/segments",e);return await this.resend.get(t)}async get(e){return await this.resend.get(`/segments/${e}`)}async update(e,t){return await this.resend.patch(`/segments/${e}`,t)}async remove(e){return await this.resend.delete(`/segments/${e}`)}},Jp=class{constructor(e){this.resend=e}async add(e){return this.resend.post("/suppressions/batch/add",e)}async remove(e){return this.resend.post("/suppressions/batch/remove",e)}},ms=()=>({data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}),Vp=class{constructor(e){this.resend=e,this.batch=new Jp(e)}async add(e){return this.resend.post("/suppressions",e)}async list(e={}){let t=zp(e),o=t?`/suppressions?${t}`:"/suppressions";return this.resend.get(o)}async get(e){return e?this.resend.get(`/suppressions/${encodeURIComponent(e)}`):ms()}async remove(e){return e?this.resend.delete(`/suppressions/${encodeURIComponent(e)}`):ms()}};function zp(e){let{origin:t,...o}=e,i=new URLSearchParams(It(o));return t&&i.set("origin",t),i.toString()}function Yp(e={}){let t=new URLSearchParams;return e.before&&t.set("before",e.before),e.after&&t.set("after",e.after),e.limit&&t.set("limit",e.limit.toString()),t.size>0?`?${t.toString()}`:""}function Xp(e){return e?.map(t=>({key:t.key,type:t.type,fallback_value:t.fallbackValue}))}function ps(e){return{name:"name"in e?e.name:void 0,subject:e.subject,html:e.html,text:e.text,alias:e.alias,from:e.from,reply_to:e.replyTo,variables:Xp(e.variables)}}var fs=class{constructor(e,t){this.promise=e,this.publishFn=t}then(e,t){return this.promise.then(e,t)}async publish(){let{data:e,error:t}=await this.promise;return t?{data:null,headers:null,error:t}:this.publishFn(e.id)}},Zp=class{constructor(e){this.resend=e}create(e){return new fs(this.performCreate(e),this.publish.bind(this))}async performCreate(e){let t={...e};return e.react&&(t.html=await uo(e.react)),this.resend.post("/templates",ps(t))}async remove(e){return await this.resend.delete(`/templates/${e}`)}async get(e){return await this.resend.get(`/templates/${e}`)}async list(e={}){return this.resend.get(`/templates${Yp(e)}`)}duplicate(e){return new fs(this.resend.post(`/templates/${e}/duplicate`),this.publish.bind(this))}async publish(e){return await this.resend.post(`/templates/${e}/publish`)}async update(e,t){return await this.resend.patch(`/templates/${e}`,ps(t))}},ef=class{constructor(e){this.resend=e}async create(e){let{defaultSubscription:t,...o}=e;return await this.resend.post("/topics",{...o,default_subscription:t})}async list(){return await this.resend.get("/topics")}async get(e){return e?await this.resend.get(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async update(e){return e.id?await this.resend.patch(`/topics/${e.id}`,e):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}async remove(e){return e?await this.resend.delete(`/topics/${e}`):{data:null,headers:null,error:{message:"Missing `id` field.",statusCode:null,name:"missing_required_field"}}}},tf=class{constructor(e){this.resend=e}async list(e){let{webhookId:t,eventId:o}=e,i=ce(`/webhooks/${t}/events/${o}/attempts`,e);return await this.resend.get(i)}},of=class{constructor(e){this.resend=e,this.attempts=new tf(e)}async list(e){let{webhookId:t}=e,o=ce(`/webhooks/${t}/events`,e);return await this.resend.get(o)}async get(e){let{webhookId:t,eventId:o}=e;return await this.resend.get(`/webhooks/${t}/events/${o}`)}async replay(e){let{webhookId:t,eventId:o}=e;return await this.resend.post(`/webhooks/${t}/events/${o}/replay`)}},rf=class{constructor(e){this.resend=e,this.events=new of(e)}async create(e,t={}){return await this.resend.post("/webhooks",e,t)}async get(e){return await this.resend.get(`/webhooks/${e}`)}async list(e={}){let t=ce("/webhooks",e);return await this.resend.get(t)}async update(e,t){return await this.resend.patch(`/webhooks/${e}`,t)}async remove(e){return await this.resend.delete(`/webhooks/${e}`)}async rotateSigningSecret(e){return await this.resend.post(`/webhooks/${e}/signing-secret/rotate`)}verify(e){return new As.Webhook(e.webhookSecret).verify(e.payload,{"webhook-id":e.headers.id,"webhook-timestamp":e.headers.timestamp,"webhook-signature":e.headers.signature})}},gs="https://api.resend.com",hs=`resend-node:${wp}`;function nf(){return typeof process<"u"&&process.env&&process.env.RESEND_BASE_URL||gs}function sf(){return typeof process<"u"&&process.env&&process.env.RESEND_USER_AGENT||hs}var jt=class{constructor(e,t){if(this.key=e,this.segments=new Wp(this),this.apiKeys=new Up(this),this.audiences=this.segments,this.automations=new xp(this),this.batch=new Fp(this),this.broadcasts=new Rp(this),this.contactProperties=new Dp(this),this.contacts=new Tp(this),this.domains=new Pp(this),this.emails=new Qp(this),this.events=new Mp(this),this.logs=new qp(this),this.oauthGrants=new Lp(this),this.suppressions=new Vp(this),this.templates=new Zp(this),this.topics=new ef(this),this.webhooks=new rf(this),!e&&(typeof process<"u"&&process.env&&(this.key=process.env.RESEND_API_KEY),!this.key))throw new Error('Missing API key. Pass it to the constructor `new Resend("re_123")`');this.baseUrl=t?.baseUrl??nf(),this.userAgent=t?.userAgent??sf(),this.headers=new Headers({Authorization:`Bearer ${this.key}`,"User-Agent":this.userAgent,"Content-Type":"application/json"})}logError(e,t,o){typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"&&console.error("[Resend API Error]:",{...o!==void 0&&{status:o},error:e,path:t})}async fetchRequest(e,t={}){try{let o=await fetch(`${this.baseUrl}${e}`,t);if(!o.ok)try{let i=await o.text(),r=JSON.parse(i);return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}catch(i){if(i instanceof SyntaxError){let n={name:"application_error",statusCode:o.status,message:"Internal server error. We are unable to process your request right now, please try again later."};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}let r={message:o.statusText,statusCode:o.status,name:"application_error"};if(i instanceof Error){let n={...r,message:i.message};return this.logError(n,e,o.status),{data:null,error:n,headers:Object.fromEntries(o.headers.entries())}}return this.logError(r,e,o.status),{data:null,error:r,headers:Object.fromEntries(o.headers.entries())}}return{data:await o.json(),error:null,headers:Object.fromEntries(o.headers.entries())}}catch{let o={name:"application_error",statusCode:null,message:"Unable to fetch data. The request could not be resolved."};return this.logError(o,e),{data:null,error:o,headers:null}}}async post(e,t,o={}){let i=new Headers(this.headers),r=typeof FormData<"u"&&t instanceof FormData;if(r&&i.delete("Content-Type"),o.headers)for(let[s,a]of new Headers(o.headers).entries())i.set(s,a);o.idempotencyKey&&i.set("Idempotency-Key",o.idempotencyKey);let n={method:"POST",body:r?t:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,n)}async get(e,t={}){let o=new Headers(this.headers);if(t.headers)for(let[r,n]of new Headers(t.headers).entries())o.set(r,n);let i={method:"GET",...t,headers:o};return this.fetchRequest(e,i)}async put(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PUT",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async patch(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"PATCH",body:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}async delete(e,t,o={}){let i=new Headers(this.headers);if(o.headers)for(let[n,s]of new Headers(o.headers).entries())i.set(n,s);let r={method:"DELETE",body:t===void 0?void 0:JSON.stringify(t),...o,headers:i};return this.fetchRequest(e,r)}};Ae();var xr=ue(ze(),1);function q(e,t){return e instanceof Error?e.message:t}function ea(e){return!!(e||!process.stdout.isTTY)}function H(e,t={}){ea(t.json)?console.log(JSON.stringify(e,null,2)):console.log(typeof e=="string"?e:JSON.stringify(e,null,2)),t.exitCode!==void 0&&process.exit(t.exitCode)}var Cf=new Set(["content-type","retry-after"]);function wf(e){let t={};for(let[o,i]of Object.entries(e)){let r=o.toLowerCase();(Cf.has(r)||r.startsWith("x-"))&&(t[r]=i)}return t}function g(e,t={}){let o=t.exitCode??1,i=e.headers&&Object.keys(e.headers).length>0?wf(e.headers):void 0,r=i!==void 0&&Object.keys(i).length>0;if(ea(t.json)){let n={message:e.message,code:e.code??"unknown"};typeof e.statusCode=="number"&&(n.statusCode=e.statusCode),r&&(n.headers=i),typeof e.body=="string"&&e.body.length>0&&(n.body=e.body),console.error(JSON.stringify({error:n},null,2))}else{console.error(`${xr.default.red("Error:")} ${e.message}`);let n=[];if(typeof e.statusCode=="number"&&n.push(`HTTP ${e.statusCode}`),r)for(let[s,a]of Object.entries(i))n.push(`${s}: ${a}`);n.length>0&&console.error(xr.default.dim(`[${n.join("; ")}]`))}process.exit(o)}var ta={sending_access:0,full_access:1};function Uf(e,t){return ta[e]>=ta[t]}async function Y(e,t){let o=e.profile;try{let i=await kt(e.apiKey,o);if(!i){if(o){let s=ke();if(!s.some(l=>l.name===o))throw new Error(`Profile "${o}" not found. Available profiles: ${s.map(l=>l.name).join(", ")||"(none)"}`)}throw new Error("No API key found. Set RESEND_API_KEY, use --api-key, or run: resend login")}let r;if(i.type==="api_key")r=i.permission;else{let s=i.scope.split(" ").filter(Boolean);s.includes("full_access")?r="full_access":s.includes("emails:send")?r="sending_access":g({message:`Unrecognized credential scope${i.scope?` "${i.scope}"`:""}. Run \`resend login\` to re-authenticate.`,code:"unrecognized_scope"},{json:e.json})}if(r){let s=t?.permission??"full_access";Uf(r,s)||g({message:`This command requires full access. Your current credential has sending access only.
281
+ ${$t}`,code:"insufficient_permissions"},{json:e.json})}let n=i.type==="api_key"?i.key:i.access_token;return new jt(n)}catch(i){g({message:q(i,"Failed to create client"),code:"auth_error"},{json:e.json})}}var oa=130;function Sf(){process.stderr.isTTY&&process.stderr.write("\r\x1B[2K"),console.error("Cancelled."),process.exit(oa)}var Gt;function ia(){Gt=Sf,process.on("SIGINT",Gt),process.on("uncaughtException",e=>{g({message:q(e,"An unexpected error occurred"),code:"unexpected_error"},{}),process.exit(1)})}function ti(e){Gt&&process.removeListener("SIGINT",Gt),Gt=e,process.on("SIGINT",Gt)}function Ht(){return oa}Ae();var oi=ue(ze(),1);V();var ra=[1,2,4],vf=ra.length,Kf=new Set(["internal_server_error","service_unavailable","gateway_timeout"]),xf=(e,t)=>!!(e==="rate_limit_exceeded"||t&&e!==void 0&&Kf.has(e)),kf=e=>{let t=e?.["retry-after"];if(!t)return;let o=Number(t);if(Number.isFinite(o)&&o>=0)return o;let i=Date.parse(t);if(!Number.isNaN(i)){let r=(i-Date.now())/1e3;return r>0?r:0}},Ff=e=>new Promise(t=>setTimeout(t,e)),go=async(e,t,o=0)=>{let i=await e(),r=t?.retryTransient??!1;if(i.error&&o<vf&&xf(i.error.name,r)){let n=kf(i.headers)??ra[o];return t?.onRetry?.(o,n,i.error.name??""),await Ff(n*1e3),go(e,t,o+1)}return i};var na=(e,t)=>new Promise((o,i)=>{let r=setTimeout(()=>{i(new Error(`Request timed out after ${t/1e3}s`))},t);r.unref(),e.then(n=>{clearTimeout(r),o(n)},n=>{clearTimeout(r),i(n)})});var _f=rt?String.fromCodePoint(10004):"v",Df=rt?String.fromCodePoint(9888):"!",Ef=rt?String.fromCodePoint(10007):"x",Bf=["\u2839","\u2838","\u2834","\u2826","\u2807","\u280F","\u2819","\u2839"],Of=80;async function ae(e,t,o,i,r={}){let n=se(e,i.quiet);try{let{data:s,error:a,headers:l}=await go(()=>na(t(),3e4),{retryTransient:r.retryTransient,onRetry:(d,c,m)=>{n.update(m==="rate_limit_exceeded"?`Rate limited, retrying in ${c}s...`:`Server error, retrying in ${c}s...`)}});return a&&(n.stop(),g({message:a.message,code:o,statusCode:a.statusCode,headers:l},{json:i.json})),s===null&&(n.stop(),g({message:"Unexpected empty response",code:o,headers:l},{json:i.json})),n.stop(),s}catch(s){return n.stop(),g({message:q(s,"Unknown error"),code:o},{json:i.json})}}function se(e,t){if(t||!U())return{update(a){},stop(a){},clear(){},warn(a){},fail(a){}};let o=rt?Bf:["-","\\","|","/"],i=Of,r=0,n=e,s=setInterval(()=>{process.stderr.write(`\r\x1B[2K ${o[r++%o.length]} ${n}`)},i);return{update(a){n=a},stop(a){clearInterval(s),a?process.stderr.write(`\r\x1B[2K ${oi.default.green(_f)} ${a}
282
+ `):process.stderr.write("\r\x1B[2K")},clear(){clearInterval(s),process.stderr.write("\r\x1B[2K")},warn(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${oi.default.yellow(Df)} ${a}
283
+ `)},fail(a){clearInterval(s),process.stderr.write(`\r\x1B[2K ${oi.default.red(Ef)} ${a}
284
+ `)}}}V();function R(e){$n(e),process.exit(Ht())}async function ii(e,t,o){(!U()||o.json)&&g({message:"Use --yes to confirm deletion in non-interactive mode.",code:"confirmation_required"},{json:o.json});let i=await Ye({message:t});(k(i)||!i)&&R("Deletion cancelled.")}async function ri(e,t){let o=de(e);if(!o)return e;if(!U()||t.json)return g({message:`Profile "${e}" has an invalid name: ${o}`,code:"invalid_profile_name"},{json:t.json}),null;X.warn(`Profile "${e}" has an invalid name: ${o}`);let i=await z({message:"Enter a new name for this profile:",placeholder:e.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:r=>de(r)});k(i)&&R("Rename cancelled.");try{await ei(e,i)}catch(r){return g({message:q(r,"Failed to rename profile"),code:"rename_failed"},{json:t.json}),null}return X.success(`Profile renamed to '${i}'.`),i}async function P(e,t,o,i){if(e!==void 0)return e;(!U()||i.json)&&g(o,{json:i.json});let r=await z({message:t.message,placeholder:t.placeholder,defaultValue:t.defaultValue,validate:t.validate??(n=>!t.defaultValue&&(!n||n.length===0)?`${t.message} is required`:void 0)});return k(r)&&R("Cancelled."),r}async function ht(e,t,o,i){if(e!==void 0)return e;(!U()||i.json)&&g(o,{json:i.json});let r=await re({message:t.message,options:t.options});return k(r)&&R("Cancelled."),r}async function la(e,t,o){let i=t.filter(s=>s.required!==!1&&e[s.flag]==="");if(i.length>0){let s=i.map(a=>`--${a.flag}`).join(", ");g({message:`Empty value for required flags: ${s}`,code:"invalid_options"},{json:o.json})}let r=t.filter(s=>s.required!==!1&&!e[s.flag]);if(r.length===0)return e;if(!U()||o.json){let s=r.map(a=>`--${a.flag}`).join(", ");g({message:`Missing required flags: ${s}`,code:"missing_flags"},{json:o.json})}let n=await Pn(Object.fromEntries(r.map(s=>[s.flag,()=>z({message:s.message,placeholder:s.placeholder,defaultValue:s.defaultValue,validate:s.validate??(a=>!s.defaultValue&&(!a||a.length===0)?`${s.message} is required`:void 0)})])),{onCancel:()=>R("Operation cancelled.")});return{...e,...n}}var Tf=20,sa="__fetch_more__",aa="__none__";async function ee(e,t,o,i){if(e)return{id:e,label:e};let r=i?.optional??!1;if(!U()||o.json){if(r)return;g({message:"Missing required argument: id",code:"missing_id"},{json:o.json})}let n=await Y(o,t.permission?{permission:t.permission}:void 0),s=[];for(;;){let a=s.at(-1)?.id,l=se(s.length===0?`Fetching ${t.resourcePlural}...`:`Fetching more ${t.resourcePlural}...`,o.quiet),d=await t.fetchItems(n,{limit:Tf,...a&&{after:a}});if(d.error||!d.data){if(r){l.clear();return}l.fail(`Failed to fetch ${t.resourcePlural}`),g({message:d.error?.message??"Unexpected empty response",code:"list_error"},{json:o.json})}s.push(...d.data.data);let c=d.data.has_more??!1,m=t.filter?s.filter(t.filter):s;if(m.length===0&&!c&&r){l.clear();return}if(l.stop(s.length===m.length?`${t.resourcePlural} fetched`:`More ${t.resourcePlural} fetched`),m.length===0&&!c&&(X.warn(`No ${t.resourcePlural} found.`),g({message:`No ${t.resourcePlural} found.`,code:"no_items"},{json:o.json})),m.length===0&&c&&!r)continue;let f=m.map(A=>({item:A,...t.display(A)})),b=f.map(({item:A,label:w,hint:S})=>({value:A.id,label:w,hint:S}));r&&b.unshift({value:aa,label:"None"}),c&&b.push({value:sa,label:"Fetch more..."});let h=await re({message:`Select a ${t.resource}`,options:b});if(k(h)&&R("Cancelled."),h===aa)return;if(h!==sa){let A=f.find(({item:w})=>w.id===h);return{id:h,label:A?.label??h}}}}async function C(e,t,o,i){return(await ee(e,t,o,i))?.id}var ca=require("node:util"),If=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\r(?!\n)/g,Fe=e=>(0,ca.stripVTControlCharacters)(String(e)).replace(If,"");function Qt(e){return typeof e=="string"?Fe(e):Array.isArray(e)?e.map(Qt):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,o])=>[t,Qt(o)])):e}V();async function Q(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"fetch_error",t,{retryTransient:!0});!t.json&&U()?e.onInteractive(Qt(r)):H(r,{json:t.json})}async function te(e,t,o,i){let r=o.permission?{permission:o.permission}:void 0,n=await Y(i,r);t||await ii(e,o.confirmMessage,i),await ae(o.loading,()=>o.sdkCall(n),"delete_error",i),!i.json&&U()?console.log(o.successMsg):H({object:o.object,id:e,deleted:!0},{json:i.json})}async function M(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"create_error",t);!t.json&&U()?e.onInteractive(Qt(r)):H(r,{json:t.json})}async function B(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),e.errorCode,t,{retryTransient:e.retryTransient});!t.json&&U()?console.log(e.successMsg):H(r,{json:t.json})}async function F(e,t){let o=e.permission?{permission:e.permission}:void 0,i=await Y(t,o),r=await ae(e.loading,()=>e.sdkCall(i),"list_error",t,{retryTransient:!0});!t.json&&U()?e.onInteractive(Qt(r)):H(r,{json:t.json})}V();V();var me=rt?{h:String.fromCodePoint(9472),v:String.fromCodePoint(9474),tl:String.fromCodePoint(9484),tr:String.fromCodePoint(9488),bl:String.fromCodePoint(9492),br:String.fromCodePoint(9496),lm:String.fromCodePoint(9500),rm:String.fromCodePoint(9508),tm:String.fromCodePoint(9516),bm:String.fromCodePoint(9524),mm:String.fromCodePoint(9532)}:{h:"-",v:"|",tl:"+",tr:"+",bl:"+",br:"+",lm:"+",rm:"+",tm:"+",bm:"+",mm:"+"};function jf(){return process.stdout.columns}function Pf(e,t,o){let i=Math.max(...e.map(n=>n.length)),r=Math.max(20,Math.min(o,60));return t.map((n,s)=>{let a=String(s+1),l=`${me.h}${me.h} ${a} ${me.h.repeat(Math.max(0,r-a.length-4))}`,d=e.map((c,m)=>` ${c.padEnd(i)} ${n[m]}`);return[l,...d].join(`
285
285
  `)}).join(`
286
286
 
287
- `)}function _(e,t,o="(no results)"){if(t.length===0)return o;let i=t.map(c=>c.map(Fe)),r=e.map((c,m)=>Math.max(c.length,...i.map(f=>f[m].length))),n=If();if(n!==void 0&&r.reduce((m,f)=>m+f,0)+3*r.length+1>n)return jf(e,i,n);let s=me.tl+r.map(c=>me.h.repeat(c+2)).join(me.tm)+me.tr,a=me.lm+r.map(c=>me.h.repeat(c+2)).join(me.mm)+me.rm,l=me.bl+r.map(c=>me.h.repeat(c+2)).join(me.bm)+me.br,d=c=>me.v+" "+c.map((m,f)=>m.padEnd(r[f])).join(` ${me.v} `)+" "+me.v;return[s,d(e),a,...i.map(d),l].join(`
287
+ `)}function _(e,t,o="(no results)"){if(t.length===0)return o;let i=t.map(c=>c.map(Fe)),r=e.map((c,m)=>Math.max(c.length,...i.map(f=>f[m].length))),n=jf();if(n!==void 0&&r.reduce((m,f)=>m+f,0)+3*r.length+1>n)return Pf(e,i,n);let s=me.tl+r.map(c=>me.h.repeat(c+2)).join(me.tm)+me.tr,a=me.lm+r.map(c=>me.h.repeat(c+2)).join(me.mm)+me.rm,l=me.bl+r.map(c=>me.h.repeat(c+2)).join(me.bm)+me.br,d=c=>me.v+" "+c.map((m,f)=>m.padEnd(r[f])).join(` ${me.v} `)+" "+me.v;return[s,d(e),a,...i.map(d),l].join(`
288
288
  `)}V();var kr=rt?String.fromCodePoint(9472):"-";function ni(e,t){return e.length===0?"(no DNS records)":e.map(i=>{let r=i.name?i.name.includes(".")?i.name:`${i.name}.${t}`:t;return[`${kr}${kr} ${i.type} ${kr.repeat(40)}`,` Name ${r}`,` TTL ${i.ttl}`,` Value ${i.value}`].join(`
289
289
  `)}).join(`
290
290
 
@@ -306,16 +306,16 @@ $ resend ${t} ${n} ${r}${s}${d}${a}${l}`)}var ga=new u("list").alias("ls").descr
306
306
  Tokens are never included in list responses.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend api-keys list","resend api-keys list --limit 25 --json","resend api-keys list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching API keys...",sdkCall:n=>n.apiKeys.list(r),onInteractive:n=>{console.log(pa(n.data)),T(n,"api-keys list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ha=new u("update").description("Rename an API key").argument("[id]","API key ID").option("--name <name>","New API key name").addHelpText("after",p({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).",output:' {"object":"api_key","id":"<id>"}',errorCodes:["auth_error","missing_name","update_error"],examples:['resend api-keys update dacf4072-aa82-4ff3-97de-514ae3000ee0 --name "Production v2"','resend api-keys update dacf4072-aa82-4ff3-97de-514ae3000ee0 --name "Production v2" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,si,i),n=await P(t.name,{message:"New key name",placeholder:"e.g. Production v2",validate:s=>{if(!s)return"Name is required"}},{message:"Missing --name flag.",code:"missing_name"},i);n||g({message:"Name is required.",code:"missing_name"},{json:i.json}),await B({loading:"Updating API key...",sdkCall:s=>s.apiKeys.update(r,{name:n}),errorCode:"update_error",successMsg:`API key updated: ${r}`},i)});var Aa=new u("api-keys").description("Manage API keys for authentication").addHelpText("after",p({context:`Security notes:
307
307
  - Tokens are only shown at creation time and cannot be retrieved again.
308
308
  - Use sending_access keys with --domain-id for per-domain CI tokens.
309
- - Deleting a key is immediate \u2014 any service using it loses access instantly.`,examples:["resend api-keys list",'resend api-keys create --name "Production"','resend api-keys create --name "CI Token" --permission sending_access --domain-id <domain-id>','resend api-keys update <id> --name "Production v2"',"resend api-keys delete <id> --yes"]})).addCommand(ma).addCommand(ga,{isDefault:!0}).addCommand(ha).addCommand(fa);Ae();V();function Pf(e){let t=ke();if(e.json){H({profiles:t},{json:!0});return}if(t.length===0){console.log("No profiles configured. Run: resend login");return}U()&&console.log(`
309
+ - Deleting a key is immediate \u2014 any service using it loses access instantly.`,examples:["resend api-keys list",'resend api-keys create --name "Production"','resend api-keys create --name "CI Token" --permission sending_access --domain-id <domain-id>','resend api-keys update <id> --name "Production v2"',"resend api-keys delete <id> --yes"]})).addCommand(ma).addCommand(ga,{isDefault:!0}).addCommand(ha).addCommand(fa);Ae();V();function $f(e){let t=ke();if(e.json){H({profiles:t},{json:!0});return}if(t.length===0){console.log("No profiles configured. Run: resend login");return}U()&&console.log(`
310
310
  Profiles
311
- `);let o=!1;for(let i of t){let r=i.active?" (active)":"",n=de(i.name)!==void 0;n&&(o=!0),console.log(` ${i.active?"\u25B8":" "} ${i.name}${r}${n?" (invalid name)":""}`)}o&&U()&&console.log("\n Profiles with invalid names can be renamed via `resend auth rename`."),U()&&console.log("")}var ba=new u("list").description("List all profiles").action((e,t)=>{Pf(t.optsWithGlobals())});var ya=require("node:child_process"),Ao=ue(Ve(),1),We="https://resend.com";function ai(e){return new Promise(t=>{let o=process.platform==="win32"?"cmd.exe":process.platform==="darwin"?"open":"xdg-open",i=e.replaceAll('"',""),r=process.platform==="win32"?["/c","start",'""',`"${i}"`]:[e];(0,ya.execFile)(o,r,{timeout:5e3,windowsVerbatimArguments:!0},n=>t(!n))})}async function De(e,t){let o=await ai(e);t?.json||t?.quiet||(o?console.log(Ao.default.dim("Opened"),Ao.default.blue(e)):console.warn(Ao.default.yellow("Could not open browser. Visit this link:"),Ao.default.blue(e)))}var pe={emails:`${We}/emails`,logs:`${We}/logs`,log:e=>`${We}/logs/${e}`,templates:`${We}/templates`,template:e=>`${We}/templates/${e}`,broadcasts:`${We}/broadcasts`,broadcast:e=>`${We}/broadcasts/${e}`,documentation:`${We}/docs`,automations:`${We}/automations`,automation:e=>`${We}/automations/${e}/editor`,events:`${We}/automations/events`};Ae();zo();V();var Fr="https://resend.com/api-keys?new=true";async function Ca(e,t){let o=e.profile!==void 0?e.profile.trim():void 0;if(o!==void 0){let r=de(o);return r&&g({message:r,code:"invalid_profile_name"},{json:e.json}),o}if(!U()||e.json)return o;let i=ke();if(i.length>0){let r=[...i.map(s=>({value:s.name,label:`${s.name} (overwrite)`,hint:de(s.name)?"invalid name":void 0})),{value:"__new__",label:"+ Create new profile"}],n=await re({message:t,options:r});if(k(n)&&R("Login cancelled."),n==="__new__"){let s=await z({message:"Enter a name for the new profile:",validate:l=>de((l??"").trim())});if(k(s)&&R("Login cancelled."),o=(s??"").trim()||"default",i.some(l=>l.name===o)){let l=await ze({message:`Profile '${o}' already exists. Overwrite?`});(k(l)||!l)&&R("Login cancelled.")}}else if(de(n)){let s=await ri(n,e);if(!s)return;o=s}else o=n}else o="default";return o}function wa(e){let{noun:t,profileLabel:o,configPath:i,backend:r}=e,n=r.isSecure?`in ${r.name}`:`at ${i}`,s=`${t} stored for profile '${o}' ${n}`;if(U()?Et(s):console.log(s),!r.isSecure&&process.platform==="linux"){let a="Tip: Install libsecret-tools and a Secret Service provider (e.g. gnome-keyring) to store credentials in secure storage instead of a plaintext file.";U()?X.info(a):console.log(a)}}async function $f(e){let{codeVerifier:t,codeChallenge:o,state:i}=Qs(),r=se("Starting local callback server...",e.quiet),n,s;try{({port:n,waitForCallback:s}=await Ns()),r.stop("")}catch(K){r.fail("Failed to start callback server"),g({message:q(K,"Failed to start callback server"),code:"oauth_error"},{json:e.json})}let a=`http://127.0.0.1:${n}/oauth/callback`,l=process.env.RESEND_BASE_URL??"https://api.resend.com",d=new URL(`${l}/oauth/authorize`);d.search=new URLSearchParams({client_id:Vo,response_type:"code",redirect_uri:a,scope:"full_access",state:i,code_challenge:o,code_challenge_method:"S256"}).toString(),await ai(d.toString())?X.info("Browser opened. Complete authentication to continue."):X.warn(`Could not open browser. Visit this URL to authenticate:
312
- ${d.toString()}`);let m=se("Waiting for browser authentication...",e.quiet),f;try{f=await s}catch(K){m.fail("Authentication failed"),g({message:q(K,"Authentication failed"),code:"oauth_error"},{json:e.json})}f.state!==i&&(m.fail("Authentication failed"),g({message:"State mismatch in OAuth callback. Possible CSRF attack.",code:"oauth_state_mismatch"},{json:e.json})),m.stop("Browser authentication complete");let b=se("Exchanging authorization code...",e.quiet),h;try{h=await Ms({code:f.code,codeVerifier:t,redirectUri:a,clientId:Vo,baseUrl:l})}catch(K){b.fail("Token exchange failed"),g({message:q(K,"Token exchange failed"),code:"oauth_error"},{json:e.json})}b.stop("Authenticated successfully");let A=await Ca(e,"Save credentials to which profile?"),w=A||"default",{configPath:S,backend:v}=await Yo({access_token:h.access_token,access_token_expires_at:Ur(h.access_token),refresh_token:h.refresh_token,scope:h.scope},A);if(A)try{fo(w)}catch(K){g({message:q(K,"Failed to switch profile"),code:"switch_failed"},{json:e.json})}e.json?H({success:!0,config_path:S,profile:w,storage:v.name,scope:h.scope},{json:!0}):wa({noun:"Credentials",profileLabel:w,configPath:S,backend:v})}var li=new u("login").description("Save a Resend API key").option("--key <key>","API key to store (required in non-interactive mode)").addHelpText("after",p({setup:!0,context:"Non-interactive: --key is required (no prompts will appear when stdin/stdout is not a TTY).",output:' {"success":true,"config_path":"<path>","profile":"<name>"}',errorCodes:["missing_key","invalid_key_format","validation_failed","invalid_profile_name","switch_failed","write_failed","oauth_error","oauth_state_mismatch"],examples:["resend login --key re_123456789","resend login (interactive \u2014 prompts and opens browser)","RESEND_API_KEY=re_123 resend emails send ... (skip login; use env var directly)"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=typeof e.key=="string"?e.key.trim():e.key;if(!i){(!U()||o.json)&&g({message:"Missing --key flag. Provide your API key in non-interactive mode.",code:"missing_key"},{json:o.json}),Po("Resend Authentication");let c=await re({message:"How would you like to authenticate?",options:[{value:"oauth",label:"Login with Resend (opens browser)"},{value:"browser",label:"Get API key from resend.com (opens browser)"},{value:"manual",label:"Enter API key manually"}]});if(k(c)&&R("Login cancelled."),c==="oauth"){await $f(o);return}X.info(`Use a full access API key for complete CLI access.
311
+ `);let o=!1;for(let i of t){let r=i.active?" (active)":"",n=de(i.name)!==void 0;n&&(o=!0),console.log(` ${i.active?"\u25B8":" "} ${i.name}${r}${n?" (invalid name)":""}`)}o&&U()&&console.log("\n Profiles with invalid names can be renamed via `resend auth rename`."),U()&&console.log("")}var ba=new u("list").description("List all profiles").action((e,t)=>{$f(t.optsWithGlobals())});var ya=require("node:child_process"),Ao=ue(ze(),1),Je="https://resend.com";function ai(e){return new Promise(t=>{let o=process.platform==="win32"?"cmd.exe":process.platform==="darwin"?"open":"xdg-open",i=e.replaceAll('"',""),r=process.platform==="win32"?["/c","start",'""',`"${i}"`]:[e];(0,ya.execFile)(o,r,{timeout:5e3,windowsVerbatimArguments:!0},n=>t(!n))})}async function De(e,t){let o=await ai(e);t?.json||t?.quiet||(o?console.log(Ao.default.dim("Opened"),Ao.default.blue(e)):console.warn(Ao.default.yellow("Could not open browser. Visit this link:"),Ao.default.blue(e)))}var pe={emails:`${Je}/emails`,logs:`${Je}/logs`,log:e=>`${Je}/logs/${e}`,templates:`${Je}/templates`,template:e=>`${Je}/templates/${e}`,broadcasts:`${Je}/broadcasts`,broadcast:e=>`${Je}/broadcasts/${e}`,documentation:`${Je}/docs`,automations:`${Je}/automations`,automation:e=>`${Je}/automations/${e}/editor`,events:`${Je}/automations/events`};Ae();zo();V();var Fr="https://resend.com/api-keys?new=true";async function Ca(e,t){let o=e.profile!==void 0?e.profile.trim():void 0;if(o!==void 0){let r=de(o);return r&&g({message:r,code:"invalid_profile_name"},{json:e.json}),o}if(!U()||e.json)return o;let i=ke();if(i.length>0){let r=[...i.map(s=>({value:s.name,label:`${s.name} (overwrite)`,hint:de(s.name)?"invalid name":void 0})),{value:"__new__",label:"+ Create new profile"}],n=await re({message:t,options:r});if(k(n)&&R("Login cancelled."),n==="__new__"){let s=await z({message:"Enter a name for the new profile:",validate:l=>de((l??"").trim())});if(k(s)&&R("Login cancelled."),o=(s??"").trim()||"default",i.some(l=>l.name===o)){let l=await Ye({message:`Profile '${o}' already exists. Overwrite?`});(k(l)||!l)&&R("Login cancelled.")}}else if(de(n)){let s=await ri(n,e);if(!s)return;o=s}else o=n}else o="default";return o}function wa(e){let{noun:t,profileLabel:o,configPath:i,backend:r}=e,n=r.isSecure?`in ${r.name}`:`at ${i}`,s=`${t} stored for profile '${o}' ${n}`;if(U()?Et(s):console.log(s),!r.isSecure&&process.platform==="linux"){let a="Tip: Install libsecret-tools and a Secret Service provider (e.g. gnome-keyring) to store credentials in secure storage instead of a plaintext file.";U()?X.info(a):console.log(a)}}async function Gf(e){let{codeVerifier:t,codeChallenge:o,state:i}=Qs(),r=se("Starting local callback server...",e.quiet),n,s;try{({port:n,waitForCallback:s}=await Ns()),r.stop("")}catch(K){r.fail("Failed to start callback server"),g({message:q(K,"Failed to start callback server"),code:"oauth_error"},{json:e.json})}let a=`http://127.0.0.1:${n}/oauth/callback`,l=process.env.RESEND_BASE_URL??"https://api.resend.com",d=new URL(`${l}/oauth/authorize`);d.search=new URLSearchParams({client_id:Vo,response_type:"code",redirect_uri:a,scope:"full_access",state:i,code_challenge:o,code_challenge_method:"S256"}).toString(),await ai(d.toString())?X.info("Browser opened. Complete authentication to continue."):X.warn(`Could not open browser. Visit this URL to authenticate:
312
+ ${d.toString()}`);let m=se("Waiting for browser authentication...",e.quiet),f;try{f=await s}catch(K){m.fail("Authentication failed"),g({message:q(K,"Authentication failed"),code:"oauth_error"},{json:e.json})}f.state!==i&&(m.fail("Authentication failed"),g({message:"State mismatch in OAuth callback. Possible CSRF attack.",code:"oauth_state_mismatch"},{json:e.json})),m.stop("Browser authentication complete");let b=se("Exchanging authorization code...",e.quiet),h;try{h=await Ms({code:f.code,codeVerifier:t,redirectUri:a,clientId:Vo,baseUrl:l})}catch(K){b.fail("Token exchange failed"),g({message:q(K,"Token exchange failed"),code:"oauth_error"},{json:e.json})}b.stop("Authenticated successfully");let A=await Ca(e,"Save credentials to which profile?"),w=A||"default",{configPath:S,backend:v}=await Yo({access_token:h.access_token,access_token_expires_at:Ur(h.access_token),refresh_token:h.refresh_token,scope:h.scope},A);if(A)try{fo(w)}catch(K){g({message:q(K,"Failed to switch profile"),code:"switch_failed"},{json:e.json})}e.json?H({success:!0,config_path:S,profile:w,storage:v.name,scope:h.scope},{json:!0}):wa({noun:"Credentials",profileLabel:w,configPath:S,backend:v})}var li=new u("login").description("Save a Resend API key").option("--key <key>","API key to store (required in non-interactive mode)").addHelpText("after",p({setup:!0,context:"Non-interactive: --key is required (no prompts will appear when stdin/stdout is not a TTY).",output:' {"success":true,"config_path":"<path>","profile":"<name>"}',errorCodes:["missing_key","invalid_key_format","validation_failed","invalid_profile_name","switch_failed","write_failed","oauth_error","oauth_state_mismatch"],examples:["resend login --key re_123456789","resend login (interactive \u2014 prompts and opens browser)","RESEND_API_KEY=re_123 resend emails send ... (skip login; use env var directly)"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=typeof e.key=="string"?e.key.trim():e.key;if(!i){(!U()||o.json)&&g({message:"Missing --key flag. Provide your API key in non-interactive mode.",code:"missing_key"},{json:o.json}),Po("Resend Authentication");let c=await re({message:"How would you like to authenticate?",options:[{value:"oauth",label:"Login with Resend (opens browser)"},{value:"browser",label:"Get API key from resend.com (opens browser)"},{value:"manual",label:"Enter API key manually"}]});if(k(c)&&R("Login cancelled."),c==="oauth"){await Gf(o);return}X.info(`Use a full access API key for complete CLI access.
313
313
  ${$t}`),c==="browser"&&(await ai(Fr)?X.info(`Opened ${Fr}`):X.warn(`Could not open browser. Visit ${Fr} manually.`));let m=await Qn({message:"Enter your Resend API key:",validate:f=>{if(!f)return"API key is required";if(!f.startsWith("re_"))return"API key must start with re_"}});k(m)&&R("Login cancelled."),i=m.trim()}i?.startsWith("re_")||g({message:"Invalid API key format. Key must start with re_",code:"invalid_key_format"},{json:o.json});let r=se("Validating API key...",o.quiet),n="full_access";try{let c=new jt(i),{error:m}=await c.domains.list();if(m){let f=m;f.name==="restricted_api_key"?(n="sending_access",r.warn("API key is valid (sending access only)")):(r.fail("API key validation failed"),g({message:f.message||"Failed to validate API key",code:"validation_failed"},{json:o.json}))}else r.stop("API key is valid (full access)")}catch(c){r.fail("API key validation failed"),g({message:q(c,"Failed to validate API key"),code:"validation_failed"},{json:o.json})}let s=await Ca(o,"Save API key to which profile?"),{configPath:a,backend:l}=await Xs(i,s,n),d=s||"default";if(s)try{fo(d)}catch(c){g({message:q(c,"Failed to switch profile"),code:"switch_failed"},{json:o.json})}o.json?H({success:!0,config_path:a,profile:d,storage:l.name,permission:n},{json:!0}):wa({noun:"API key",profileLabel:d,configPath:a,backend:l})});var Ua=require("node:fs");Ae();V();var ci=new u("logout").description("Remove your saved Resend API key").addHelpText("after",p({setup:!0,context:`Removes the saved API key from secure storage and the credentials file.
314
314
 
315
315
  When --profile is specified, only that profile's entry is removed.
316
316
  When no profile is specified, all profiles are removed.
317
317
 
318
- If no credentials file exists, exits cleanly with no error.`,output:' {"success":true,"config_path":"<path>"}',errorCodes:["remove_failed"],examples:["resend logout","resend logout --profile staging","resend logout --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=xt(),r=vr();if(!r&&!(0,Ua.existsSync)(i)){!o.json&&U()?console.log("No saved credentials found. Nothing to remove."):H({success:!0,already_logged_out:!0},{json:o.json});return}let n=o.profile,s=!n,a=n??"all";if(!s&&r&&!r.profiles[a]&&g({message:`Profile "${a}" not found. Available profiles: ${Object.keys(r.profiles).join(", ")}`,code:"remove_failed"},{json:o.json}),!o.json&&U()){let l=s?"Remove all saved API keys?":`Remove saved API key for profile '${a}'?`,d=await ze({message:l});(k(d)||!d)&&R("Logout cancelled.")}try{s?await Zs():await Zo(a)}catch(l){g({message:q(l,"Failed to remove credentials"),code:"remove_failed"},{json:o.json})}if(!o.json&&U()){let l=s?"Logged out. All API keys removed.":`Logged out. API key removed for profile '${a}'.`;Et(l)}else H({success:!0,config_path:i,profile:s?"all":a},{json:o.json})});Ae();V();async function Gf(e,t){let o=e;if(!o){if(!U()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let i=ke();if(i.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let r=await re({message:"Remove which profile?",options:i.map(n=>({value:n.name,label:n.name,hint:n.active?"active":void 0}))});k(r)&&R("Remove cancelled."),o=r}if(!t.json&&U()){let i=await ze({message:`Remove profile '${o}' and its API key?`});(k(i)||!i)&&R("Remove cancelled.")}try{await Zo(o)}catch(i){g({message:q(i,"Failed to remove profile"),code:"remove_failed"},{json:t.json});return}t.json?H({success:!0,removed_profile:o},{json:!0}):console.log(`Profile '${o}' removed.`)}var Sa=new u("remove").description("Remove a profile").argument("[name]","Profile name to remove").action(async(e,t,o)=>{await Gf(e,o.optsWithGlobals())});Ae();V();async function Hf(e,t,o){let i=e,r=t;if(!i){if(!U()||o.json){g({message:"Missing profile name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=ke();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:o.json});return}let s=await re({message:"Rename which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":de(a.name)?"invalid name":void 0}))});k(s)&&R("Rename cancelled."),i=s}if(!r){if(!U()||o.json){g({message:"Missing new name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=await z({message:`Enter new name for '${i}':`,placeholder:i.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:s=>de(s)});k(n)&&R("Rename cancelled."),r=n}try{await ei(i,r)}catch(n){g({message:q(n,"Failed to rename profile"),code:"rename_failed"},{json:o.json});return}o.json?H({success:!0,old_name:i,new_name:r},{json:!0}):console.log(`Profile '${i}' renamed to '${r}'.`)}var va=new u("rename").description("Rename a profile").argument("[old-name]","Current profile name").argument("[new-name]","New profile name").action(async(e,t,o,i)=>{await Hf(e,t,i.optsWithGlobals())});Ae();V();async function Qf(e,t){let o=e;if(!o){if(!U()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let n=ke();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let s=await re({message:"Switch to which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":de(a.name)?"invalid name":void 0}))});k(s)&&R("Switch cancelled."),o=s}if(ke().some(n=>n.name===o)){let n=await ri(o,t);if(!n)return;o=n}try{fo(o)}catch(n){g({message:q(n,"Failed to switch profile"),code:"switch_failed"},{json:t.json});return}t.json?H({success:!0,active_profile:o},{json:!0}):console.log(`Switched to profile '${o}'.`)}var Ka=new u("switch").description("Switch the active profile").argument("[name]","Profile name to switch to").action(async(e,t,o)=>{await Qf(e,o.optsWithGlobals())});var xa=new u("auth").description("Manage authentication and profiles").addHelpText("after",p({setup:!0,context:`Environment variables:
318
+ If no credentials file exists, exits cleanly with no error.`,output:' {"success":true,"config_path":"<path>"}',errorCodes:["remove_failed"],examples:["resend logout","resend logout --profile staging","resend logout --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=xt(),r=vr();if(!r&&!(0,Ua.existsSync)(i)){!o.json&&U()?console.log("No saved credentials found. Nothing to remove."):H({success:!0,already_logged_out:!0},{json:o.json});return}let n=o.profile,s=!n,a=n??"all";if(!s&&r&&!r.profiles[a]&&g({message:`Profile "${a}" not found. Available profiles: ${Object.keys(r.profiles).join(", ")}`,code:"remove_failed"},{json:o.json}),!o.json&&U()){let l=s?"Remove all saved API keys?":`Remove saved API key for profile '${a}'?`,d=await Ye({message:l});(k(d)||!d)&&R("Logout cancelled.")}try{s?await Zs():await Zo(a)}catch(l){g({message:q(l,"Failed to remove credentials"),code:"remove_failed"},{json:o.json})}if(!o.json&&U()){let l=s?"Logged out. All API keys removed.":`Logged out. API key removed for profile '${a}'.`;Et(l)}else H({success:!0,config_path:i,profile:s?"all":a},{json:o.json})});Ae();V();async function Hf(e,t){let o=e;if(!o){if(!U()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let i=ke();if(i.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let r=await re({message:"Remove which profile?",options:i.map(n=>({value:n.name,label:n.name,hint:n.active?"active":void 0}))});k(r)&&R("Remove cancelled."),o=r}if(!t.json&&U()){let i=await Ye({message:`Remove profile '${o}' and its API key?`});(k(i)||!i)&&R("Remove cancelled.")}try{await Zo(o)}catch(i){g({message:q(i,"Failed to remove profile"),code:"remove_failed"},{json:t.json});return}t.json?H({success:!0,removed_profile:o},{json:!0}):console.log(`Profile '${o}' removed.`)}var Sa=new u("remove").description("Remove a profile").argument("[name]","Profile name to remove").action(async(e,t,o)=>{await Hf(e,o.optsWithGlobals())});Ae();V();async function Qf(e,t,o){let i=e,r=t;if(!i){if(!U()||o.json){g({message:"Missing profile name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=ke();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:o.json});return}let s=await re({message:"Rename which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":de(a.name)?"invalid name":void 0}))});k(s)&&R("Rename cancelled."),i=s}if(!r){if(!U()||o.json){g({message:"Missing new name. Provide old and new names in non-interactive mode.",code:"missing_name"},{json:o.json});return}let n=await z({message:`Enter new name for '${i}':`,placeholder:i.replace(/[^a-zA-Z0-9._-]/g,"-"),validate:s=>de(s)});k(n)&&R("Rename cancelled."),r=n}try{await ei(i,r)}catch(n){g({message:q(n,"Failed to rename profile"),code:"rename_failed"},{json:o.json});return}o.json?H({success:!0,old_name:i,new_name:r},{json:!0}):console.log(`Profile '${i}' renamed to '${r}'.`)}var va=new u("rename").description("Rename a profile").argument("[old-name]","Current profile name").argument("[new-name]","New profile name").action(async(e,t,o,i)=>{await Qf(e,t,i.optsWithGlobals())});Ae();V();async function Nf(e,t){let o=e;if(!o){if(!U()||t.json){g({message:"Missing profile name. Provide a profile name in non-interactive mode.",code:"missing_name"},{json:t.json});return}let n=ke();if(n.length===0){g({message:"No profiles configured. Run `resend login` first.",code:"no_profiles"},{json:t.json});return}let s=await re({message:"Switch to which profile?",options:n.map(a=>({value:a.name,label:a.name,hint:a.active?"active":de(a.name)?"invalid name":void 0}))});k(s)&&R("Switch cancelled."),o=s}if(ke().some(n=>n.name===o)){let n=await ri(o,t);if(!n)return;o=n}try{fo(o)}catch(n){g({message:q(n,"Failed to switch profile"),code:"switch_failed"},{json:t.json});return}t.json?H({success:!0,active_profile:o},{json:!0}):console.log(`Switched to profile '${o}'.`)}var Ka=new u("switch").description("Switch the active profile").argument("[name]","Profile name to switch to").action(async(e,t,o)=>{await Nf(e,o.optsWithGlobals())});var xa=new u("auth").description("Manage authentication and profiles").addHelpText("after",p({setup:!0,context:`Environment variables:
319
319
  RESEND_API_KEY API key (overrides stored credentials)
320
320
  RESEND_PROFILE Profile name (overrides config default)
321
321
  RESEND_CREDENTIAL_STORE Storage method: "secure_storage" or "file"`,examples:["resend login","resend login --key re_123456789","resend logout","resend auth list","resend auth switch staging","resend auth rename staging production","resend auth remove staging"]})).addCommand(li).addCommand(ci).addCommand(ba,{isDefault:!0}).addCommand(Ka).addCommand(va).addCommand(Sa);var Rr=require("node:fs");function oe(e,t){if(e==="-"){process.stdin.isTTY&&g({message:"No input piped to stdin",code:"stdin_read_error"},{json:t.json});try{return(0,Rr.readFileSync)(0,"utf-8")}catch{g({message:"Failed to read from stdin",code:"stdin_read_error"},{json:t.json})}}try{return(0,Rr.readFileSync)(e,"utf-8")}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}}function Ft(e,t,o){if(e!==void 0)try{return JSON.parse(e)}catch(i){g({message:`Invalid JSON for ${t}: ${i instanceof Error?i.message:"parse error"}`,code:"invalid_json"},{json:o.json})}}var ka=new u("create").description("Create a new automation").option("--name <name>","Automation name").addOption(new L("--status <status>","Initial status").choices(["enabled","disabled"])).option("--steps <json>","Steps array as JSON string").option("--connections <json>","Connections array as JSON string").option("--file <path>",'Path to a JSON file containing the full automation payload (use "-" for stdin)').addHelpText("after",p({context:`Non-interactive: --name and --steps/--connections (or --file) are required.
@@ -348,12 +348,12 @@ Lifecycle:
348
348
  3. resend automations duplicate <id> (copy an automation)
349
349
  4. resend automations stop <id> (stop automation)
350
350
  5. resend automations runs <id> (inspect runs)
351
- 6. resend automations open <id> (view in dashboard)`,examples:["resend automations list",'resend automations create --name "Welcome Flow" --file workflow.json',"resend automations get <id>","resend automations update <id> --status enabled","resend automations duplicate <id>","resend automations stop <id>","resend automations delete <id> --yes","resend automations runs <automation-id>","resend automations runs get --automation-id <id> --run-id <id>","resend automations open <id>"]})).addCommand(ka).addCommand(Da).addCommand(Ea,{isDefault:!0}).addCommand(Pa).addCommand(Ra).addCommand(_a).addCommand(ja).addCommand(Ba).addCommand(Ia);function Dr(e){switch(e){case"draft":return"\u25CB Draft";case"queued":return"\u23F3 Queued";case"scheduled":return"\u{1F4C5} Scheduled";case"sent":return"\u2713 Sent";default:return e}}var Xe={resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(e,{limit:t,after:o})=>e.broadcasts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name??"(untitled)",hint:e.id})};function Ga(e){return{resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(t,{limit:o,after:i})=>t.broadcasts.list({limit:o,...i&&{after:i}}),display:t=>({label:t.name??"(untitled)",hint:`${Dr(t.status)} ${t.id}`}),filter:e}}var Ha=Ga(e=>e.status==="draft"),Qa=Ga(e=>e.status==="queued"||e.status==="scheduled");function Na(e){let t=e.map(o=>[o.name??"(untitled)",o.status,o.created_at,o.id]);return _(["Name","Status","Created","ID"],t,"(no broadcasts)")}function Ma(e){let t=e.map(o=>[o.email,o.contact_id??"-",o.count!==void 0&&o.count!==null?String(o.count):"-",o.bounce_type??"-",o.clicked_links&&o.clicked_links.length>0?o.clicked_links.map(i=>`${i.url} (${i.clicks})`).join(", "):"-",o.id]);return _(["Email","Contact ID","Count","Bounce Type","Clicked Links","ID"],t,"(no recipients)")}function qa(e){let t=e.map(o=>[o.url,String(o.clicks),String(o.unique_clicks)]);return _(["URL","Clicks","Unique Clicks"],t,"(no clicked links)")}var La=new u("cancel").description("Cancel a queued or scheduled broadcast").argument("[id]","Broadcast ID").addHelpText("after",p({context:`Only queued or scheduled broadcasts can be cancelled; draft and sent broadcasts cannot.
351
+ 6. resend automations open <id> (view in dashboard)`,examples:["resend automations list",'resend automations create --name "Welcome Flow" --file workflow.json',"resend automations get <id>","resend automations update <id> --status enabled","resend automations duplicate <id>","resend automations stop <id>","resend automations delete <id> --yes","resend automations runs <automation-id>","resend automations runs get --automation-id <id> --run-id <id>","resend automations open <id>"]})).addCommand(ka).addCommand(Da).addCommand(Ea,{isDefault:!0}).addCommand(Pa).addCommand(Ra).addCommand(_a).addCommand(ja).addCommand(Ba).addCommand(Ia);function Dr(e){switch(e){case"draft":return"\u25CB Draft";case"queued":return"\u23F3 Queued";case"scheduled":return"\u{1F4C5} Scheduled";case"sent":return"\u2713 Sent";default:return e}}var Qe={resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(e,{limit:t,after:o})=>e.broadcasts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name??"(untitled)",hint:e.id})};function Ga(e){return{resource:"broadcast",resourcePlural:"broadcasts",fetchItems:(t,{limit:o,after:i})=>t.broadcasts.list({limit:o,...i&&{after:i}}),display:t=>({label:t.name??"(untitled)",hint:`${Dr(t.status)} ${t.id}`}),filter:e}}var Ha=Ga(e=>e.status==="draft"),Qa=Ga(e=>e.status==="queued"||e.status==="scheduled");function Na(e){let t=e.map(o=>[o.name??"(untitled)",o.status,o.created_at,o.id]);return _(["Name","Status","Created","ID"],t,"(no broadcasts)")}function Ma(e){let t=e.map(o=>[o.email,o.contact_id??"-",o.count!==void 0&&o.count!==null?String(o.count):"-",o.bounce_type??"-",o.clicked_links&&o.clicked_links.length>0?o.clicked_links.map(i=>`${i.url} (${i.clicks})`).join(", "):"-",o.id]);return _(["Email","Contact ID","Count","Bounce Type","Clicked Links","ID"],t,"(no recipients)")}function qa(e){let t=e.map(o=>[o.url,String(o.clicks),String(o.unique_clicks)]);return _(["URL","Clicks","Unique Clicks"],t,"(no clicked links)")}var La=new u("cancel").description("Cancel a queued or scheduled broadcast").argument("[id]","Broadcast ID").addHelpText("after",p({context:`Only queued or scheduled broadcasts can be cancelled; draft and sent broadcasts cannot.
352
352
  Cancelling a scheduled broadcast stops the scheduled delivery. Cancelling a queued
353
- broadcast stops it mid-send \u2014 emails already sent are not affected.`,output:' {"object":"broadcast","id":"<id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qa,i);await B({loading:"Cancelling broadcast...",sdkCall:n=>n.broadcasts.cancel(r),errorCode:"cancel_error",successMsg:"Broadcast cancelled"},i)});var Wa=new u("clicked-links").description("List the links clicked in a broadcast, ranked by total clicks").argument("[id]","Broadcast ID").option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({output:' {"object":"list","has_more":false,"data":[{"id":"...","url":"...","clicks":42,"unique_clicks":30}]}',errorCodes:["auth_error","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 5","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --after b2Zmc2V0OjA","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Xe,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching clicked links...",sdkCall:a=>a.broadcasts.clickedLinks(r,s),onInteractive:a=>{console.log(qa(a.data)),T(a,`broadcasts clicked-links ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});async function di(e){try{let{data:t,error:o}=await e.domains.list();return o||!t?[]:t.data.filter(i=>i.status==="verified"&&i.capabilities.sending==="enabled").map(i=>i.name)}catch{return[]}}var Nf=["hello","support"];async function ui(e){let t;if(e.length===1)t=e[0];else{let r=await re({message:"Select a verified domain",options:e.map(n=>({value:n,label:n}))});k(r)&&R("Send cancelled."),t=r}let o=Nf.map(r=>({value:`${r}@${t}`,label:`${r}@${t}`}));o.push({value:null,label:"Custom address..."});let i=await re({message:`From address (@${t})`,options:o});if(k(i)&&R("Send cancelled."),i===null){let r=await z({message:"From address",placeholder:`e.g. you@${t}`,validate:n=>n?.includes("@")?void 0:"Enter a valid email address"});return k(r)&&R("Send cancelled."),r}return i}var Mt=require("node:fs"),il=require("node:path");var mi=require("node:fs"),Za=require("node:os"),Nt=ue(require("node:path"),1);function Ja(){return"pkg"in process?require("esbuild-wasm"):require("esbuild")}var za=require("node:fs"),Ya=ue(require("node:path"),1);function Va(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var Xa=e=>({name:"rendering-utilities-exporter",setup:t=>{t.onLoad({filter:new RegExp(e.map(o=>Va(o)).join("|"))},async({path:o})=>({contents:`${await za.promises.readFile(o,"utf8")};
353
+ broadcast stops it mid-send \u2014 emails already sent are not affected.`,output:' {"object":"broadcast","id":"<id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qa,i);await B({loading:"Cancelling broadcast...",sdkCall:n=>n.broadcasts.cancel(r),errorCode:"cancel_error",successMsg:"Broadcast cancelled"},i)});var Wa=new u("clicked-links").description("List the links clicked in a broadcast, ranked by total clicks").argument("[id]","Broadcast ID").option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({output:' {"object":"list","has_more":false,"data":[{"id":"...","url":"...","clicks":42,"unique_clicks":30}]}',errorCodes:["auth_error","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 5","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --after b2Zmc2V0OjA","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching clicked links...",sdkCall:a=>a.broadcasts.clickedLinks(r,s),onInteractive:a=>{console.log(qa(a.data)),T(a,`broadcasts clicked-links ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});async function di(e){try{let{data:t,error:o}=await e.domains.list();return o||!t?[]:t.data.filter(i=>i.status==="verified"&&i.capabilities.sending==="enabled").map(i=>i.name)}catch{return[]}}var Mf=["hello","support"];async function ui(e){let t;if(e.length===1)t=e[0];else{let r=await re({message:"Select a verified domain",options:e.map(n=>({value:n,label:n}))});k(r)&&R("Send cancelled."),t=r}let o=Mf.map(r=>({value:`${r}@${t}`,label:`${r}@${t}`}));o.push({value:null,label:"Custom address..."});let i=await re({message:`From address (@${t})`,options:o});if(k(i)&&R("Send cancelled."),i===null){let r=await z({message:"From address",placeholder:`e.g. you@${t}`,validate:n=>n?.includes("@")?void 0:"Enter a valid email address"});return k(r)&&R("Send cancelled."),r}return i}var Mt=require("node:fs"),il=require("node:path");var mi=require("node:fs"),Za=require("node:os"),Nt=ue(require("node:path"),1);function Ja(){return"pkg"in process?require("esbuild-wasm"):require("esbuild")}var za=require("node:fs"),Ya=ue(require("node:path"),1);function Va(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}var Xa=e=>({name:"rendering-utilities-exporter",setup:t=>{t.onLoad({filter:new RegExp(e.map(o=>Va(o)).join("|"))},async({path:o})=>({contents:`${await za.promises.readFile(o,"utf8")};
354
354
  export { render } from 'react-email-module-that-will-export-render'
355
355
  export { createElement as reactEmailCreateReactElement } from 'react';
356
- `,loader:Ya.default.extname(o).slice(1)})),t.onResolve({filter:/^react-email-module-that-will-export-render$/},async o=>{let i={kind:"import-statement",importer:o.importer,resolveDir:o.resolveDir,namespace:o.namespace},r=await t.resolve("react-email",i);return r.errors.length===0||(r=await t.resolve("@react-email/components",i),r.errors.length===0)||(r=await t.resolve("@react-email/render",i),r.errors.length>0&&r.errors[0]&&(r.errors[0].text="Failed to import `render` from `react-email` (6.0+), `@react-email/components` (5.x), or `@react-email/render`. Install one of them in your project.")),r})}});async function el(e){let t=Nt.default.resolve(e),o=(0,mi.mkdtempSync)(Nt.default.join((0,Za.tmpdir)(),"resend-react-email-"));try{let{build:n}=Ja();await n({bundle:!0,entryPoints:[t],format:"cjs",jsx:"automatic",logLevel:"silent",outExtension:{".js":".cjs"},outdir:o,platform:"node",plugins:[Xa([t])],write:!0})}catch(n){throw(0,mi.rmSync)(o,{recursive:!0,force:!0}),n}let i=Nt.default.basename(t,Nt.default.extname(t));return{cjsPath:Nt.default.join(o,`${i}.cjs`),tmpDir:o}}var tl=require("node:module");async function ol(e){let t=(0,tl.createRequire)(e);delete t.cache[e];let o=t(e);return o.render(o.reactEmailCreateReactElement(o.default,{}),{})}var Er=e=>{e&&(0,Mt.rmSync)(e,{recursive:!0,force:!0})},Qe=async(e,t)=>{if(e.trim()==="")return g({message:"--react-email path cannot be empty",code:"react_email_build_error"},{json:t.json});let o=(0,il.resolve)(e);if(!(0,Mt.existsSync)(o))return g({message:`File not found: ${e}`,code:"react_email_build_error"},{json:t.json});if(!(0,Mt.statSync)(o).isFile())return g({message:`--react-email path must be a file, got a directory: ${e}`,code:"react_email_build_error"},{json:t.json});let i=se("Bundling React Email template...",t.quiet),r;try{let n=await el(e);r=n.tmpDir,i.stop("Bundled React Email template");let s=se("Rendering React Email template...",t.quiet);try{let a=await ol(n.cjsPath);return s.stop("Rendered React Email template"),Er(r),a}catch(a){return s.fail("Failed to render React Email template"),Er(r),g({message:q(a,"Failed to render React Email template"),code:"react_email_render_error"},{json:t.json})}}catch(n){return i.fail("Failed to bundle React Email template"),Er(r),g({message:q(n,"Failed to bundle React Email template"),code:"react_email_build_error"},{json:t.json})}};V();var Ee={resource:"segment",resourcePlural:"segments",fetchItems:(e,{limit:t,after:o})=>e.segments.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function pi(e){let t=e.map(o=>[o.name,o.id,o.created_at]);return _(["Name","ID","Created"],t,"(no segments)")}var At={resource:"topic",resourcePlural:"topics",fetchItems:e=>e.topics.list().then(t=>({...t,data:t.data?{data:t.data.data,has_more:!1}:null})),display:e=>({label:e.name,hint:e.id})};function rl(e){let t=e.map(o=>[o.name,o.description??"",o.id,o.created_at]);return _(["Name","Description","ID","Created"],t,"(no topics)")}var nl=new u("create").description("Create a broadcast draft (or send immediately with --send)").option("--from <address>","Sender address \u2014 required").option("--subject <subject>","Email subject \u2014 required").option("--segment-id <id>","Target segment ID \u2014 required").option("--html <html>","HTML body (supports {{{FIRST_NAME|fallback}}} triple-brace variable interpolation)").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Internal label for the broadcast (optional)").option("--reply-to <address>","Reply-to address (optional)").option("--preview-text <text>","Preview text shown in inbox below the subject line (optional)").option("--topic-id <id>","Associate with a topic for subscription filtering (optional)").option("--send","Send immediately on create instead of saving as draft").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET" (only valid with --send)').option("--dry-run","Validate input and print the create request JSON without calling the API (interactive: type segment/topic IDs; lists are not fetched)").addHelpText("after",p({context:`Non-interactive: --from, --subject, and --segment-id are required.
356
+ `,loader:Ya.default.extname(o).slice(1)})),t.onResolve({filter:/^react-email-module-that-will-export-render$/},async o=>{let i={kind:"import-statement",importer:o.importer,resolveDir:o.resolveDir,namespace:o.namespace},r=await t.resolve("react-email",i);return r.errors.length===0||(r=await t.resolve("@react-email/components",i),r.errors.length===0)||(r=await t.resolve("@react-email/render",i),r.errors.length>0&&r.errors[0]&&(r.errors[0].text="Failed to import `render` from `react-email` (6.0+), `@react-email/components` (5.x), or `@react-email/render`. Install one of them in your project.")),r})}});async function el(e){let t=Nt.default.resolve(e),o=(0,mi.mkdtempSync)(Nt.default.join((0,Za.tmpdir)(),"resend-react-email-"));try{let{build:n}=Ja();await n({bundle:!0,entryPoints:[t],format:"cjs",jsx:"automatic",logLevel:"silent",outExtension:{".js":".cjs"},outdir:o,platform:"node",plugins:[Xa([t])],write:!0})}catch(n){throw(0,mi.rmSync)(o,{recursive:!0,force:!0}),n}let i=Nt.default.basename(t,Nt.default.extname(t));return{cjsPath:Nt.default.join(o,`${i}.cjs`),tmpDir:o}}var tl=require("node:module");async function ol(e){let t=(0,tl.createRequire)(e);delete t.cache[e];let o=t(e);return o.render(o.reactEmailCreateReactElement(o.default,{}),{})}var Er=e=>{e&&(0,Mt.rmSync)(e,{recursive:!0,force:!0})},Ne=async(e,t)=>{if(e.trim()==="")return g({message:"--react-email path cannot be empty",code:"react_email_build_error"},{json:t.json});let o=(0,il.resolve)(e);if(!(0,Mt.existsSync)(o))return g({message:`File not found: ${e}`,code:"react_email_build_error"},{json:t.json});if(!(0,Mt.statSync)(o).isFile())return g({message:`--react-email path must be a file, got a directory: ${e}`,code:"react_email_build_error"},{json:t.json});let i=se("Bundling React Email template...",t.quiet),r;try{let n=await el(e);r=n.tmpDir,i.stop("Bundled React Email template");let s=se("Rendering React Email template...",t.quiet);try{let a=await ol(n.cjsPath);return s.stop("Rendered React Email template"),Er(r),a}catch(a){return s.fail("Failed to render React Email template"),Er(r),g({message:q(a,"Failed to render React Email template"),code:"react_email_render_error"},{json:t.json})}}catch(n){return i.fail("Failed to bundle React Email template"),Er(r),g({message:q(n,"Failed to bundle React Email template"),code:"react_email_build_error"},{json:t.json})}};V();var Ee={resource:"segment",resourcePlural:"segments",fetchItems:(e,{limit:t,after:o})=>e.segments.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function pi(e){let t=e.map(o=>[o.name,o.id,o.created_at]);return _(["Name","ID","Created"],t,"(no segments)")}var At={resource:"topic",resourcePlural:"topics",fetchItems:e=>e.topics.list().then(t=>({...t,data:t.data?{data:t.data.data,has_more:!1}:null})),display:e=>({label:e.name,hint:e.id})};function rl(e){let t=e.map(o=>[o.name,o.description??"",o.id,o.created_at]);return _(["Name","Description","ID","Created"],t,"(no topics)")}var nl=new u("create").description("Create a broadcast draft (or send immediately with --send)").option("--from <address>","Sender address \u2014 required").option("--subject <subject>","Email subject \u2014 required").option("--segment-id <id>","Target segment ID \u2014 required").option("--html <html>","HTML body (supports {{{FIRST_NAME|fallback}}} triple-brace variable interpolation)").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Internal label for the broadcast (optional)").option("--reply-to <address>","Reply-to address (optional)").option("--preview-text <text>","Preview text shown in inbox below the subject line (optional)").option("--topic-id <id>","Associate with a topic for subscription filtering (optional)").option("--send","Send immediately on create instead of saving as draft").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET" (only valid with --send)').option("--dry-run","Validate input and print the create request JSON without calling the API (interactive: type segment/topic IDs; lists are not fetched)").addHelpText("after",p({context:`Non-interactive: --from, --subject, and --segment-id are required.
357
357
  Body: provide at least one of --html, --html-file, --text, --text-file, or --react-email.
358
358
 
359
359
  Use --dry-run to print the request JSON without creating a broadcast.
@@ -365,29 +365,31 @@ Variable interpolation:
365
365
  Scheduling:
366
366
  Use --scheduled-at with --send to schedule delivery.
367
367
  Accepts ISO 8601 (e.g. 2026-08-05T11:52:01Z) or natural language (e.g. "in 1 hour").
368
- --scheduled-at without --send is ignored.`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","missing_from","missing_subject","missing_segment","missing_body","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","create_error"],examples:['resend broadcasts create --from onboarding@resend.dev --subject "Weekly Update" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hello {{{FIRST_NAME|there}}}</p>"','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html-file ./email.html --send','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --text "Hello!" --send --scheduled-at "tomorrow at 9am ET"']})).action(async(e,t)=>{let o=t.optsWithGlobals();e.htmlFile==="-"&&e.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:o.json}),e.html!==void 0&&e.htmlFile!==void 0&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:o.json}),e.text!==void 0&&e.textFile!==void 0&&g({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:o.json});let i=e.from,r=e.subject,n=e.segmentId;if(!i&&U()&&!o.json&&!e.dryRun){let c=await Y(o),m=await di(c);m.length>0&&(i=await ui(m))}if(!i){(!U()||o.json)&&g({message:"Missing --from flag.",code:"missing_from"},{json:o.json});let c=await z({message:"From address",placeholder:"e.g. onboarding@resend.dev",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),i=c}if(!r){(!U()||o.json)&&g({message:"Missing --subject flag.",code:"missing_subject"},{json:o.json});let c=await z({message:"Subject",placeholder:"e.g. Weekly Newsletter",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),r=c}if(!n)if((!U()||o.json)&&g({message:"Missing --segment-id flag.",code:"missing_segment"},{json:o.json}),e.dryRun){let c=await z({message:"Segment ID",placeholder:"e.g. 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),n=c}else n=await C(void 0,Ee,o);let s=e.reactEmail?await Qe(e.reactEmail,o):e.htmlFile?oe(e.htmlFile,o):e.html,a=e.textFile?oe(e.textFile,o):e.text;if(!s&&!a){(!U()||o.json)&&g({message:"Missing body. Provide --html, --html-file, --text, --text-file, or --react-email.",code:"missing_body"},{json:o.json});let c=await z({message:"Body (plain text)",placeholder:"e.g. Hello {{{FIRST_NAME|there}}}!",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),a=c}let l=e.topicId;if(!l&&U()&&!o.json)if(e.dryRun){let c=await z({message:"Topic ID (optional)",placeholder:"Press Enter to skip"});k(c)&&R("Cancelled."),l=c.trim()||void 0}else l=await C(void 0,At,o,{optional:!0});let d={from:i,subject:r,segmentId:n,...s&&{html:s},...a&&{text:a},...e.name&&{name:e.name},...e.replyTo&&{replyTo:e.replyTo},...e.previewText&&{previewText:e.previewText},...l&&{topicId:l},...e.send&&{send:!0},...e.send&&e.scheduledAt&&{scheduledAt:e.scheduledAt}};if(e.dryRun){H({dryRun:!0,request:d},{json:o.json});return}await M({loading:"Creating broadcast...",sdkCall:c=>c.broadcasts.create(d),onInteractive:c=>{e.send?e.scheduledAt?console.log(`Broadcast scheduled: ${c.id}`):console.log(`Broadcast sent: ${c.id}`):(console.log(`Broadcast created: ${c.id}`),console.log("Status: draft"),console.log(`Send it with: resend broadcasts send ${c.id}`))}},o)});var sl=new u("delete").alias("rm").description("Delete a broadcast \u2014 draft broadcasts are removed; scheduled broadcasts are cancelled before delivery").argument("[id]","Broadcast ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:`Warning: Deleting a scheduled broadcast cancels its delivery immediately.
368
+ --scheduled-at without --send is ignored.`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","missing_from","missing_subject","missing_segment","missing_body","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","create_error"],examples:['resend broadcasts create --from onboarding@resend.dev --subject "Weekly Update" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hello {{{FIRST_NAME|there}}}</p>"','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html-file ./email.html --send','resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --text "Hello!" --send --scheduled-at "tomorrow at 9am ET"']})).action(async(e,t)=>{let o=t.optsWithGlobals();e.htmlFile==="-"&&e.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:o.json}),e.html!==void 0&&e.htmlFile!==void 0&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:o.json}),e.text!==void 0&&e.textFile!==void 0&&g({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:o.json});let i=e.from,r=e.subject,n=e.segmentId;if(!i&&U()&&!o.json&&!e.dryRun){let c=await Y(o),m=await di(c);m.length>0&&(i=await ui(m))}if(!i){(!U()||o.json)&&g({message:"Missing --from flag.",code:"missing_from"},{json:o.json});let c=await z({message:"From address",placeholder:"e.g. onboarding@resend.dev",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),i=c}if(!r){(!U()||o.json)&&g({message:"Missing --subject flag.",code:"missing_subject"},{json:o.json});let c=await z({message:"Subject",placeholder:"e.g. Weekly Newsletter",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),r=c}if(!n)if((!U()||o.json)&&g({message:"Missing --segment-id flag.",code:"missing_segment"},{json:o.json}),e.dryRun){let c=await z({message:"Segment ID",placeholder:"e.g. 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),n=c}else n=await C(void 0,Ee,o);let s=e.reactEmail?await Ne(e.reactEmail,o):e.htmlFile?oe(e.htmlFile,o):e.html,a=e.textFile?oe(e.textFile,o):e.text;if(!s&&!a){(!U()||o.json)&&g({message:"Missing body. Provide --html, --html-file, --text, --text-file, or --react-email.",code:"missing_body"},{json:o.json});let c=await z({message:"Body (plain text)",placeholder:"e.g. Hello {{{FIRST_NAME|there}}}!",validate:m=>m?void 0:"Required"});k(c)&&R("Cancelled."),a=c}let l=e.topicId;if(!l&&U()&&!o.json)if(e.dryRun){let c=await z({message:"Topic ID (optional)",placeholder:"Press Enter to skip"});k(c)&&R("Cancelled."),l=c.trim()||void 0}else l=await C(void 0,At,o,{optional:!0});let d={from:i,subject:r,segmentId:n,...s&&{html:s},...a&&{text:a},...e.name&&{name:e.name},...e.replyTo&&{replyTo:e.replyTo},...e.previewText&&{previewText:e.previewText},...l&&{topicId:l},...e.send&&{send:!0},...e.send&&e.scheduledAt&&{scheduledAt:e.scheduledAt}};if(e.dryRun){H({dryRun:!0,request:d},{json:o.json});return}await M({loading:"Creating broadcast...",sdkCall:c=>c.broadcasts.create(d),onInteractive:c=>{e.send?e.scheduledAt?console.log(`Broadcast scheduled: ${c.id}`):console.log(`Broadcast sent: ${c.id}`):(console.log(`Broadcast created: ${c.id}`),console.log("Status: draft"),console.log(`Send it with: resend broadcasts send ${c.id}`))}},o)});var sl=new u("delete").alias("rm").description("Delete a broadcast \u2014 draft broadcasts are removed; scheduled broadcasts are cancelled before delivery").argument("[id]","Broadcast ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:`Warning: Deleting a scheduled broadcast cancels its delivery immediately.
369
369
  Only draft and scheduled broadcasts can be deleted; sent broadcasts cannot.
370
370
 
371
- Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"broadcast","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Xe,i);await te(r.id,!!t.yes,{confirmMessage:`Delete broadcast "${r.label}"?
371
+ Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"broadcast","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Qe,i);await te(r.id,!!t.yes,{confirmMessage:`Delete broadcast "${r.label}"?
372
372
  ID: ${r.id}
373
- If scheduled, delivery will be cancelled.`,loading:"Deleting broadcast...",object:"broadcast",successMsg:"Broadcast deleted",sdkCall:n=>n.broadcasts.remove(r.id)},i)});var al=new u("get").description("Retrieve full details for a broadcast including HTML body, status, and delivery times").argument("[id]","Broadcast ID").addHelpText("after",p({context:`Note: The list command returns summary objects without html/text/from/subject.
374
- Use this command to retrieve the full broadcast payload.`,output:' {"id":"...","object":"broadcast","name":"...","segment_id":"...","from":"...","subject":"...","status":"draft|queued|sent","created_at":"...","scheduled_at":null,"sent_at":null}',errorCodes:["auth_error","fetch_error"],examples:["resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Xe,i);await Q({loading:"Fetching broadcast...",sdkCall:n=>n.broadcasts.get(r),onInteractive:n=>{console.log(`Broadcast: ${n.id}`),console.log(` Status: ${Dr(n.status)}`),console.log(` Name: ${n.name??"(untitled)"}`),console.log(` From: ${n.from??"\u2014"}`),console.log(` Subject: ${n.subject??"\u2014"}`),console.log(` Segment: ${n.segment_id??"\u2014"}`),n.preview_text&&console.log(` Preview: ${n.preview_text}`),n.topic_id&&console.log(` Topic: ${n.topic_id}`),console.log(` Created: ${n.created_at}`),n.scheduled_at&&console.log(` Scheduled: ${n.scheduled_at}`),n.sent_at&&console.log(` Sent: ${n.sent_at}`)}},i)});var ll=new u("list").alias("ls").description('List broadcasts \u2014 returns summary objects (use "get <id>" for full details including html/text)').option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({context:`Note: List results include name, status, created_at, and id only.
375
- To retrieve full details (html, from, subject), use: resend broadcasts get <id>`,output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|queued|sent","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend broadcasts list","resend broadcasts list --limit 5","resend broadcasts list --after d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 10","resend broadcasts list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching broadcasts...",sdkCall:n=>n.broadcasts.list(r),onInteractive:n=>{console.log(Na(n.data)),T(n,"broadcasts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var cl=new u("open").description("Open a broadcast or the broadcasts list in the Resend dashboard").argument("[id]","Broadcast ID \u2014 omit to open the broadcasts list").addHelpText("after",p({context:`Opens the Resend dashboard in your default browser.
373
+ If scheduled, delivery will be cancelled.`,loading:"Deleting broadcast...",object:"broadcast",successMsg:"Broadcast deleted",sdkCall:n=>n.broadcasts.remove(r.id)},i)});var al=new u("duplicate").description("Duplicate a broadcast").argument("[id]","Broadcast ID").addHelpText("after",p({context:`Creates a copy of an existing broadcast and returns the new broadcast ID.
374
+ The copy is a draft named after the original with " (copy)" appended, truncated to 70 characters.
375
+ Segment, topic, from, subject, reply-to, preview text, and content are copied. Any broadcast can be duplicated, including sent ones.`,output:' {"object":"broadcast","id":"<new-broadcast-id>"}',errorCodes:["auth_error","create_error"],examples:["resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i);await M({loading:"Duplicating broadcast...",sdkCall:n=>n.broadcasts.duplicate(r),onInteractive:n=>{console.log(`Broadcast duplicated: ${n.id}`)}},i)});var ll=new u("get").description("Retrieve full details for a broadcast including HTML body, status, and delivery times").argument("[id]","Broadcast ID").addHelpText("after",p({context:`Note: The list command returns summary objects without html/text/from/subject.
376
+ Use this command to retrieve the full broadcast payload.`,output:' {"id":"...","object":"broadcast","name":"...","segment_id":"...","from":"...","subject":"...","status":"draft|queued|sent","created_at":"...","scheduled_at":null,"sent_at":null}',errorCodes:["auth_error","fetch_error"],examples:["resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i);await Q({loading:"Fetching broadcast...",sdkCall:n=>n.broadcasts.get(r),onInteractive:n=>{console.log(`Broadcast: ${n.id}`),console.log(` Status: ${Dr(n.status)}`),console.log(` Name: ${n.name??"(untitled)"}`),console.log(` From: ${n.from??"\u2014"}`),console.log(` Subject: ${n.subject??"\u2014"}`),console.log(` Segment: ${n.segment_id??"\u2014"}`),n.preview_text&&console.log(` Preview: ${n.preview_text}`),n.topic_id&&console.log(` Topic: ${n.topic_id}`),console.log(` Created: ${n.created_at}`),n.scheduled_at&&console.log(` Scheduled: ${n.scheduled_at}`),n.sent_at&&console.log(` Sent: ${n.sent_at}`)}},i)});var cl=new u("list").alias("ls").description('List broadcasts \u2014 returns summary objects (use "get <id>" for full details including html/text)').option("--limit <n>","Maximum number of results to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({context:`Note: List results include name, status, created_at, and id only.
377
+ To retrieve full details (html, from, subject), use: resend broadcasts get <id>`,output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|queued|sent","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend broadcasts list","resend broadcasts list --limit 5","resend broadcasts list --after d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --limit 10","resend broadcasts list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching broadcasts...",sdkCall:n=>n.broadcasts.list(r),onInteractive:n=>{console.log(Na(n.data)),T(n,"broadcasts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var dl=new u("open").description("Open a broadcast or the broadcasts list in the Resend dashboard").argument("[id]","Broadcast ID \u2014 omit to open the broadcasts list").addHelpText("after",p({context:`Opens the Resend dashboard in your default browser.
376
378
  With an ID: opens that broadcast's page for viewing or editing.
377
- Without an ID: opens the broadcasts list.`,examples:["resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).action(async(e,t,o)=>{let i=e?pe.broadcast(e):pe.broadcasts,r=o.optsWithGlobals();await De(i,r)});var dl=["sent","delivered","opened","clicked","bounced","complained","unsubscribed","suppressed"],ul=new u("recipients").description("List a broadcast's recipients for a given event type").argument("[id]","Broadcast ID").addOption(new L("--type <type>","Event type to filter recipients by").choices(dl)).option("--email <email>","Filter recipients whose email contains this value").addOption(new L("--bounce-type <type>","Filter by bounce classification \u2014 only meaningful when --type is bounced").choices(["permanent","transient","undetermined"])).option("--limit <n>","Maximum number of recipients to return (1-100)","20").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({context:`Non-interactive: --type is required.
379
+ Without an ID: opens the broadcasts list.`,examples:["resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).action(async(e,t,o)=>{let i=e?pe.broadcast(e):pe.broadcasts,r=o.optsWithGlobals();await De(i,r)});var ul=["sent","delivered","opened","clicked","bounced","complained","unsubscribed","suppressed"],ml=new u("recipients").description("List a broadcast's recipients for a given event type").argument("[id]","Broadcast ID").addOption(new L("--type <type>","Event type to filter recipients by").choices(ul)).option("--email <email>","Filter recipients whose email contains this value").addOption(new L("--bounce-type <type>","Filter by bounce classification \u2014 only meaningful when --type is bounced").choices(["permanent","transient","undetermined"])).option("--limit <n>","Maximum number of recipients to return (1-100)","20").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({context:`Non-interactive: --type is required.
378
380
  Note: responses are cached for up to 15 minutes, so requesting the same page
379
381
  again may return slightly stale data within that window.
380
- --bounce-type only has an effect when --type is bounced.`,output:' {"object":"list","has_more":false,"data":[{"id":"<cursor>","contact_id":"<id>|null","email":"...","count":3,"clicked_links":[{"url":"...","clicks":2}]}]}',errorCodes:["auth_error","missing_type","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type clicked --limit 50","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type bounced --bounce-type permanent","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type sent --email @example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Xe,i),n=await ht(t.type,{message:"Event type",options:dl.map(l=>({value:l,label:l}))},{message:"Missing --type flag.",code:"missing_type"},i),s=O(t.limit,i),a=$(s,t.after,t.before,i);await F({loading:"Fetching recipients...",sdkCall:l=>l.broadcasts.recipients(r,{type:n,...a,...t.email&&{email:t.email},...t.bounceType&&{bounceType:t.bounceType}}),onInteractive:l=>{console.log(Ma(l.data)),T(l,`broadcasts recipients ${r}`,{limit:s,before:t.before,apiKey:i.apiKey,profile:i.profile,extraFlags:[`--type ${n}`,t.email&&`--email ${t.email}`,t.bounceType&&`--bounce-type ${t.bounceType}`].filter(Boolean).join(" ")})}},i)});var ml=new u("send").description("Send a draft broadcast (API-created drafts only \u2014 dashboard broadcasts cannot be sent via API)").argument("[id]","Broadcast ID").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').addHelpText("after",p({context:`Note: Only broadcasts created via the API can be sent via this command.
382
+ --bounce-type only has an effect when --type is bounced.`,output:' {"object":"list","has_more":false,"data":[{"id":"<cursor>","contact_id":"<id>|null","email":"...","count":3,"clicked_links":[{"url":"...","clicks":2}]}]}',errorCodes:["auth_error","missing_type","invalid_limit","invalid_pagination","list_error"],examples:["resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type clicked --limit 50","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type bounced --bounce-type permanent","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type sent --email @example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Qe,i),n=await ht(t.type,{message:"Event type",options:ul.map(l=>({value:l,label:l}))},{message:"Missing --type flag.",code:"missing_type"},i),s=O(t.limit,i),a=$(s,t.after,t.before,i);await F({loading:"Fetching recipients...",sdkCall:l=>l.broadcasts.recipients(r,{type:n,...a,...t.email&&{email:t.email},...t.bounceType&&{bounceType:t.bounceType}}),onInteractive:l=>{console.log(Ma(l.data)),T(l,`broadcasts recipients ${r}`,{limit:s,before:t.before,apiKey:i.apiKey,profile:i.profile,extraFlags:[`--type ${n}`,t.email&&`--email ${t.email}`,t.bounceType&&`--bounce-type ${t.bounceType}`].filter(Boolean).join(" ")})}},i)});var pl=new u("send").description("Send a draft broadcast (API-created drafts only \u2014 dashboard broadcasts cannot be sent via API)").argument("[id]","Broadcast ID").option("--scheduled-at <datetime>",'Schedule delivery \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').addHelpText("after",p({context:`Note: Only broadcasts created via the API can be sent via this command.
381
383
  Broadcasts created in the Resend dashboard cannot be sent programmatically.
382
384
 
383
385
  Scheduling:
384
386
  --scheduled-at accepts ISO 8601 (e.g. 2026-08-05T11:52:01Z) or
385
- natural language (e.g. "in 1 hour", "tomorrow at 9am ET").`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","send_error"],examples:["resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"','resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "2026-08-05T11:52:01Z" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ha,i);await B({loading:t.scheduledAt?"Scheduling broadcast...":"Sending broadcast...",sdkCall:n=>n.broadcasts.send(r,{...t.scheduledAt&&{scheduledAt:t.scheduledAt}}),errorCode:"send_error",successMsg:t.scheduledAt?"Broadcast scheduled":"Broadcast sent",permission:"sending_access"},i)});var pl=new u("update").description("Update a draft broadcast \u2014 only drafts can be updated; sent broadcasts are immutable").argument("[id]","Broadcast ID").option("--from <address>","Update sender address").option("--subject <subject>","Update subject").option("--html <html>","Update HTML body (supports {{{FIRST_NAME|fallback}}} variable interpolation)").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Update internal label").addHelpText("after",p({context:`Note: Only draft broadcasts can be updated.
387
+ natural language (e.g. "in 1 hour", "tomorrow at 9am ET").`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","send_error"],examples:["resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"','resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "2026-08-05T11:52:01Z" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ha,i);await B({loading:t.scheduledAt?"Scheduling broadcast...":"Sending broadcast...",sdkCall:n=>n.broadcasts.send(r,{...t.scheduledAt&&{scheduledAt:t.scheduledAt}}),errorCode:"send_error",successMsg:t.scheduledAt?"Broadcast scheduled":"Broadcast sent",permission:"sending_access"},i)});var fl=new u("update").description("Update a draft broadcast \u2014 only drafts can be updated; sent broadcasts are immutable").argument("[id]","Broadcast ID").option("--from <address>","Update sender address").option("--subject <subject>","Update subject").option("--html <html>","Update HTML body (supports {{{FIRST_NAME|fallback}}} variable interpolation)").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin, supports {{{FIRST_NAME|fallback}}} variable interpolation)').option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--name <name>","Update internal label").addHelpText("after",p({context:`Note: Only draft broadcasts can be updated.
386
388
  If the broadcast is already sent or sending, the API will return an error.
387
389
 
388
390
  Variable interpolation:
389
391
  HTML bodies support triple-brace syntax for contact properties.
390
- Example: {{{FIRST_NAME|Friend}}} \u2014 uses FIRST_NAME or falls back to "Friend".`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","no_changes","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","update_error"],examples:['resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file ./new-email.html",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --name "Q1 Newsletter" --from "onboarding@resend.dev" --json','echo "<p>New content</p>" | resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file -']})).action(async(e,t,o)=>{let i=o.optsWithGlobals();t.from==null&&t.subject==null&&t.html==null&&t.htmlFile==null&&t.text==null&&t.textFile==null&&t.reactEmail==null&&t.name==null&&g({message:"Provide at least one option to update: --from, --subject, --html, --html-file, --text, --text-file, --react-email, or --name.",code:"no_changes"},{json:i.json}),t.htmlFile==="-"&&t.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:i.json}),t.reactEmail!=null&&(t.html!=null||t.htmlFile!=null)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:i.json}),t.html!=null&&t.htmlFile!=null&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:i.json}),t.text!=null&&t.textFile!=null&&g({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:i.json});let r=await C(e,Xe,i),n=t.reactEmail!=null?await Qe(t.reactEmail,i):t.htmlFile!=null?oe(t.htmlFile,i):t.html,s=t.textFile!=null?oe(t.textFile,i):t.text;await B({loading:"Updating broadcast...",sdkCall:a=>a.broadcasts.update(r,{...t.from!=null&&{from:t.from},...t.subject!=null&&{subject:t.subject},...n!=null&&{html:n},...s!=null&&{text:s},...t.name!=null&&{name:t.name}}),errorCode:"update_error",successMsg:`Broadcast updated: ${r}`},i)});var fl=new u("broadcasts").description("Manage broadcasts").addHelpText("after",p({context:`Lifecycle:
392
+ Example: {{{FIRST_NAME|Friend}}} \u2014 uses FIRST_NAME or falls back to "Friend".`,output:' {"id":"<broadcast-id>"}',errorCodes:["auth_error","no_changes","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","update_error"],examples:['resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file ./new-email.html",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --name "Q1 Newsletter" --from "onboarding@resend.dev" --json','echo "<p>New content</p>" | resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --html-file -']})).action(async(e,t,o)=>{let i=o.optsWithGlobals();t.from==null&&t.subject==null&&t.html==null&&t.htmlFile==null&&t.text==null&&t.textFile==null&&t.reactEmail==null&&t.name==null&&g({message:"Provide at least one option to update: --from, --subject, --html, --html-file, --text, --text-file, --react-email, or --name.",code:"no_changes"},{json:i.json}),t.htmlFile==="-"&&t.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:i.json}),t.reactEmail!=null&&(t.html!=null||t.htmlFile!=null)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:i.json}),t.html!=null&&t.htmlFile!=null&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:i.json}),t.text!=null&&t.textFile!=null&&g({message:"--text and --text-file are mutually exclusive.",code:"invalid_options"},{json:i.json});let r=await C(e,Qe,i),n=t.reactEmail!=null?await Ne(t.reactEmail,i):t.htmlFile!=null?oe(t.htmlFile,i):t.html,s=t.textFile!=null?oe(t.textFile,i):t.text;await B({loading:"Updating broadcast...",sdkCall:a=>a.broadcasts.update(r,{...t.from!=null&&{from:t.from},...t.subject!=null&&{subject:t.subject},...n!=null&&{html:n},...s!=null&&{text:s},...t.name!=null&&{name:t.name}}),errorCode:"update_error",successMsg:`Broadcast updated: ${r}`},i)});var gl=new u("broadcasts").description("Manage broadcasts").addHelpText("after",p({context:`Lifecycle:
391
393
  Broadcasts follow a draft \u2192 send flow:
392
394
  1. create \u2014 creates a draft (or sends immediately with --send)
393
395
  2. send \u2014 sends an API-created draft (dashboard broadcasts cannot be sent via API)
@@ -401,7 +403,7 @@ Template variables:
401
403
  Example: {{{FIRST_NAME|Friend}}} \u2014 uses FIRST_NAME or falls back to "Friend".
402
404
 
403
405
  Scheduling:
404
- --scheduled-at accepts ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET".`,examples:["resend broadcasts list",'resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hi {{{FIRST_NAME|there}}}</p>"',"resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"',"resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).addCommand(nl).addCommand(cl).addCommand(ml).addCommand(al).addCommand(ll,{isDefault:!0}).addCommand(ul).addCommand(pl).addCommand(La).addCommand(sl).addCommand(Wa);var Cl=require("node:fs"),bo=require("node:path");V();var gl=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","British Indian Ocean Territory","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos Islands","Colombia","Comoros","Cook Islands","Costa Rica","Croatia","Cuba","Cura\xE7ao","Cyprus","Czech Republic","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Guiana","French Polynesia","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Ivory Coast","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn","Poland","Portugal","Puerto Rico","Qatar","Republic of the Congo","R\xE9union","Romania","Russia","Rwanda","Saint Barth\xE9lemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","S\xE3o Tom\xE9 and Pr\xEDncipe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","U.S. Virgin Islands","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"];var hl={resource:"job posting",resourcePlural:"job postings",permission:"sending_access",fetchItems:async e=>{let{data:t,error:o}=await e.get("/careers");return{data:t?{data:t.data,has_more:!1}:null,error:o}},display:e=>({label:e.title,hint:e.location??e.id})};function Al(e){let t=e.map(o=>[o.title,o.location??"",o.department??"",o.id]);return _(["Title","Location","Department","ID"],t,"(no open positions)")}var Mf=10*1024*1024,qf={".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".txt":"text/plain"},qt="__skip__",wl=new u("apply").description("Apply to an open position at Resend").argument("[id]","Job posting ID (from `resend careers list`)").option("--name <name>","Your full name").option("--email <email>","Your email address").option("--resume <path>","Path to your resume file (PDF, max 10MB)").option("--field <path=value...>","Answer a job-specific question by field path (repeatable: --field <path>=<answer>). Field paths are shown on the job posting page at resend.com/careers").option("--yes","Skip the confirmation prompt in interactive mode").addHelpText("after",p({context:`Interactive: run without flags to pick a position and answer each application
406
+ --scheduled-at accepts ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET".`,examples:["resend broadcasts list",'resend broadcasts create --from onboarding@resend.dev --subject "Launch" --segment-id 7b1e0a3d-4c5f-4e8a-9b2d-1a3c5e7f9b2d --html "<p>Hi {{{FIRST_NAME|there}}}</p>"',"resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6",'resend broadcasts send d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --scheduled-at "in 1 hour"',"resend broadcasts get d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts recipients d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --type opened",'resend broadcasts update d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --subject "Updated Subject"',"resend broadcasts cancel d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts duplicate d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts delete d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6 --yes","resend broadcasts open","resend broadcasts open d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6","resend broadcasts clicked-links d1c2b3a4-5e6f-7a8b-9c0d-e1f2a3b4c5d6"]})).addCommand(nl).addCommand(dl).addCommand(pl).addCommand(ll).addCommand(cl,{isDefault:!0}).addCommand(ml).addCommand(fl).addCommand(La).addCommand(al).addCommand(sl).addCommand(Wa);var wl=require("node:fs"),bo=require("node:path");V();var hl=["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Brazil","British Indian Ocean Territory","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central African Republic","Chad","Chile","China","Christmas Island","Cocos Islands","Colombia","Comoros","Cook Islands","Costa Rica","Croatia","Cuba","Cura\xE7ao","Cyprus","Czech Republic","Democratic Republic of the Congo","Denmark","Djibouti","Dominica","Dominican Republic","East Timor","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Eswatini","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Guiana","French Polynesia","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Ivory Coast","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","Niue","Norfolk Island","North Korea","North Macedonia","Northern Mariana Islands","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Pitcairn","Poland","Portugal","Puerto Rico","Qatar","Republic of the Congo","R\xE9union","Romania","Russia","Rwanda","Saint Barth\xE9lemy","Saint Helena","Saint Kitts and Nevis","Saint Lucia","Saint Martin","Saint Pierre and Miquelon","Saint Vincent and the Grenadines","Samoa","San Marino","S\xE3o Tom\xE9 and Pr\xEDncipe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Sint Maarten","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Svalbard and Jan Mayen","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Togo","Tokelau","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Turks and Caicos Islands","Tuvalu","U.S. Virgin Islands","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Wallis and Futuna","Western Sahara","Yemen","Zambia","Zimbabwe"];var Al={resource:"job posting",resourcePlural:"job postings",permission:"sending_access",fetchItems:async e=>{let{data:t,error:o}=await e.get("/careers");return{data:t?{data:t.data,has_more:!1}:null,error:o}},display:e=>({label:e.title,hint:e.location??e.id})};function bl(e){let t=e.map(o=>[o.title,o.location??"",o.department??"",o.id]);return _(["Title","Location","Department","ID"],t,"(no open positions)")}var qf=10*1024*1024,Lf={".pdf":"application/pdf",".doc":"application/msword",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".txt":"text/plain"},qt="__skip__",Ul=new u("apply").description("Apply to an open position at Resend").argument("[id]","Job posting ID (from `resend careers list`)").option("--name <name>","Your full name").option("--email <email>","Your email address").option("--resume <path>","Path to your resume file (PDF, max 10MB)").option("--field <path=value...>","Answer a job-specific question by field path (repeatable: --field <path>=<answer>). Field paths are shown on the job posting page at resend.com/careers").option("--yes","Skip the confirmation prompt in interactive mode").addHelpText("after",p({context:`Interactive: run without flags to pick a position and answer each application
405
407
  question in a guided form. Flags pre-fill their matching questions.
406
408
 
407
409
  Non-interactive: --name, --email, and --resume are required, plus the job posting
@@ -409,27 +411,27 @@ ID argument. Answer job-specific questions with --field <path>=<value>, where
409
411
  <path> is shown on the job posting page at resend.com/careers (custom questions
410
412
  use UUID paths).
411
413
 
412
- The resume is uploaded as multipart form data (max 10MB, PDF recommended).`,output:' {"success":true}',errorCodes:["auth_error","missing_id","list_error","missing_name","missing_email","missing_resume","invalid_field","file_read_error","invalid_resume","fetch_error","apply_error"],examples:["resend careers apply",`resend careers apply 053bde8f-294e-4cce-9d62-2301282120a2 --name "Ada Lovelace" --email ada@example.com --resume ./resume.pdf --field 'd5cef330-d154-4f3a-8c5a-092986c61fe3=I love email infrastructure.'`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=new Map;for(let[h,A]of Lf(t.field,i))r.set(h,A);t.name!==void 0&&r.set("name",t.name),t.email!==void 0&&r.set("email",t.email);let n=U()&&!i.json,s=await ee(e,hl,i),a=s.id,l=t.resume,d=s.label;if(n){let h=await Y(i,{permission:"sending_access"}),A=await ae("Fetching the application form...",()=>h.get(`/careers/${a}`),"fetch_error",i,{retryTransient:!0});d=A.title,Po(A.location?`Apply to ${A.title} - ${A.location}`:`Apply to ${A.title}`);for(let w of A.fields){if(w.path==="resume"){l=l??await yl(w.title);continue}if(w.type==="File"){X.warn(`Skipping "${w.title}": only the resume file can be uploaded here. Apply on the careers page to include it.`);continue}if(r.has(w.path))continue;let S=await Wf(w);S!==void 0&&r.set(w.path,S)}r.has("name")||r.set("name",await bl("Name")),r.has("email")||r.set("email",await bl("Email")),l=l??await yl("Resume"),t.yes||await Jf(A,r,l)}else r.get("name")||g({message:"Missing --name flag.",code:"missing_name"},{json:i.json}),r.get("email")||g({message:"Missing --email flag.",code:"missing_email"},{json:i.json}),l||g({message:"Missing --resume flag.",code:"missing_resume"},{json:i.json});let c=zf(l,i),m=new FormData;for(let[h,A]of r)m.append(h,A);m.append("resume",c.blob,c.filename);let f=await Y(i,{permission:"sending_access"}),b=await ae("Submitting application...",()=>f.fetchRequest(`/careers/${a}`,{method:"POST",headers:{Authorization:`Bearer ${f.key}`,"User-Agent":process.env.RESEND_USER_AGENT??""},body:m}),"apply_error",i);!i.json&&U()?Et(`Application submitted for ${d}. Thanks for applying to Resend!`):H(b,{json:i.json})});function Lf(e,t){let o=new Map;for(let i of e??[]){let r=i.indexOf("=");r<=0&&g({message:`Invalid --field value "${i}". Use --field <path>=<value>.`,code:"invalid_field"},{json:t.json}),o.set(i.slice(0,r),i.slice(r+1))}return o}async function Wf(e){let t=e.required?e.title:`${e.title} (optional)`;if(e.selectable_values&&e.selectable_values.length>0){let r=[...e.required?[]:[{value:qt,label:"Skip"}],...e.selectable_values.map(s=>({value:s.value,label:s.label}))],n=await re({message:t,options:r});return k(n)&&R("Application cancelled."),n===qt?void 0:n}if(e.type==="Boolean"){let r=[...e.required?[]:[{value:qt,label:"Skip"}],{value:"true",label:"Yes"},{value:"false",label:"No"}],n=await re({message:t,options:r});return k(n)&&R("Application cancelled."),n===qt?void 0:n}if(e.type==="Location"){let r=[...e.required?[]:[{value:qt,label:"Skip"}],...gl.map(s=>({value:s,label:s}))],n=await jn({message:t,options:r,maxItems:8,placeholder:"Start typing a country..."});return k(n)&&R("Application cancelled."),n===qt?void 0:n}let o=await z({message:t,...e.description?{placeholder:e.description}:{},validate:r=>{let n=r?.trim()??"";if(e.required&&n.length===0)return`${e.title} is required`;if(n&&e.type==="Email"&&!n.includes("@"))return"Enter a valid email address";if(n&&e.type==="Number"&&Number.isNaN(Number(n)))return"Enter a number"}});k(o)&&R("Application cancelled.");let i=o?.trim()??"";return i.length>0?i:void 0}async function bl(e){let t=await z({message:e,validate:o=>!o||o.trim().length===0?`${e} is required`:void 0});return k(t)&&R("Application cancelled."),t.trim()}async function yl(e){let t=await z({message:`${e} (path to a local file, PDF recommended)`,placeholder:"./resume.pdf",validate:o=>!o||o.trim().length===0?"A resume file is required":void 0});return k(t)&&R("Application cancelled."),t.trim()}async function Jf(e,t,o){let i=new Map(e.fields.map(s=>[s.path,s])),r=[...t.entries()].map(([s,a])=>{let l=i.get(s),d=l?.title??s,c=l?.type==="Boolean"?a==="true"?"Yes":a==="false"?"No":a:a;return`${d}: ${Vf(c,80)}`});r.push(`Resume: ${(0,bo.basename)(o)}`),Hn(r.join(`
413
- `),"Application summary");let n=await ze({message:"Submit this application?"});(k(n)||!n)&&R("Application not submitted.")}function Vf(e,t){let o=e.replace(/\s+/g," ").trim();return o.length>t?`${o.slice(0,t-3)}...`:o}function zf(e,t){let o;try{o=(0,Cl.readFileSync)(e)}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}o.length>Mf&&g({message:"Resume file is too large. Maximum size is 10MB.",code:"invalid_resume"},{json:t.json});let i=qf[(0,bo.extname)(e).toLowerCase()]??"application/octet-stream";return{blob:new Blob([new Uint8Array(o)],{type:i}),filename:(0,bo.basename)(e)}}var Ul=new u("list").description("List open positions at Resend").addHelpText("after",p({context:"Lists open positions, fetched live from our applicant tracking system.",output:' {"object":"list","data":[{"id":"<id>","title":"<title>","department":"<department>","team":"<team>","location":"<location>","employment_type":"<type>","workplace_type":"<type>","published_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend careers","resend careers list --json","resend careers apply <id>"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await F({loading:"Fetching open positions...",sdkCall:i=>i.get("/careers"),permission:"sending_access",onInteractive:i=>{console.log(Al(i.data)),i.data.length>0&&console.log(`
414
- Apply with: resend careers apply <id>`)}},o)});var Sl=new u("careers").description("Browse open positions at Resend and apply from your terminal").addHelpText("after",p({context:"Flow: `resend careers` lists open positions, and `resend careers apply`\nwalks you through the application (or takes flags for scripted submissions).\n\nAny Resend API key works \u2014 applications are not tied to your team.",examples:["resend careers","resend careers apply"]})).addCommand(wl).addCommand(Ul,{isDefault:!0});function yo(e){let t=[];for(let i of e.commands)i._hidden||t.push(yo(i));let o=[];for(let i of e.options)i.hidden||o.push({long:i.long,short:i.short,description:i.description,takesValue:i.required||i.optional,choices:i.argChoices});return{name:e.name(),aliases:e.aliases(),description:e.description(),subcommands:t,options:o}}function Co(e,t,o){let i=t?`${t} ${e.name}`:e.name,r=[],n=[];for(let a of e.subcommands){n.push({name:a.name,description:a.description});for(let l of a.aliases)n.push({name:l,description:a.description})}let s=[...e.options,...o];r.push({path:i,subcommands:n,options:s});for(let a of e.subcommands)r.push(...Co(a,i,o));return r}function Br(e){let t=new Set;function o(i){for(let r of i.options)r.takesValue&&(r.long&&t.add(r.long),r.short&&t.add(r.short));for(let r of i.subcommands)o(r)}return o(e),[...t]}function Kl(e){let t=Co(e,"",[]),o=[],i=e.name;o.push(`# bash completion for ${i}`),o.push(`# Generated by: ${i} completion bash`),o.push(""),o.push(`_${i}_completions() {`),o.push(" local cur prev words cword"),o.push(" if type _init_completion &>/dev/null; then _init_completion || return; else"),o.push(' cur="${COMP_WORDS[COMP_CWORD]}"'),o.push(' prev="${COMP_WORDS[COMP_CWORD-1]}"'),o.push(' words=("${COMP_WORDS[@]}")'),o.push(" cword=$COMP_CWORD"),o.push(" fi"),o.push("");let n=Br(e).join("|");o.push(' local cmd_path=""'),o.push(" local i=1"),o.push(" while [ $i -lt $cword ]; do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) i=$((i + 1)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" i=$((i + 1))"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(A=>A.choices&&A.long),d=s.options.map(A=>A.long).filter(Boolean).join(" "),c=s.subcommands.map(A=>A.name).join(" "),m=l.length>0,f=d.length>0,b=c.length>0;if(!m&&!f&&!b)continue;o.push(` "${a}")`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(m||h.length>0){o.push(' case "$prev" in');for(let A of l)o.push(` ${A.long}) COMPREPLY=($(compgen -W "${A.choices?.join(" ")}" -- "$cur")); return ;;`);if(h.length>0){let A=h.flatMap(w=>[w.long,w.short].filter(Boolean)).join("|");o.push(` ${A}) return ;;`)}o.push(" esac")}f&&(o.push(' if [[ "$cur" == -* ]]; then'),o.push(` COMPREPLY=($(compgen -W "${d}" -- "$cur")); return`),o.push(" fi")),b&&o.push(` COMPREPLY=($(compgen -W "${c}" -- "$cur"))`),o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`complete -o default -F _${i}_completions ${i}`),o.join(`
415
- `)}function xl(e){let t=Co(e,"",[]),o=[],i=e.name;o.push(`#compdef ${i}`),o.push(`# zsh completion for ${i}`),o.push(`# Generated by: ${i} completion zsh`),o.push(""),o.push(`_${i}() {`),o.push(" local cur prev cmd_path"),o.push(' cur="${words[$CURRENT]}"'),o.push(' prev="${words[$CURRENT-1]}"'),o.push("");let n=Br(e).join("|");o.push(' cmd_path=""'),o.push(" for ((i=2; i < CURRENT; i++)); do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) ((i++)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(f=>f.choices&&f.long),d=s.options.filter(f=>f.long),c=s.subcommands.length>0;o.push(` "${a}")`);let m=s.options.filter(f=>f.takesValue&&!f.choices);if(l.length>0||m.length>0){o.push(' case "$prev" in');for(let f of l)o.push(` ${f.long}) compadd -- ${f.choices?.join(" ")}; return ;;`);if(m.length>0){let f=m.flatMap(b=>[b.long,b.short].filter(Boolean)).join("|");o.push(` ${f}) _files; return ;;`)}o.push(" esac")}if(d.length>0){o.push(' if [[ "$cur" == -* ]]; then');let f=d.map(b=>`"${b.long}:${vl(b.description)}"`).join(" ");o.push(` local -a opts=(${f}); _describe 'option' opts; return`),o.push(" fi")}if(c){let f=s.subcommands.map(b=>`"${b.name}:${vl(b.description)}"`).join(" ");o.push(` local -a cmds=(${f}); _describe 'command' cmds`)}else o.push(" _files");o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`compdef _${i} ${i}`),o.join(`
416
- `)}function kl(e){let t=e.name,o=Co(e,"",[]),i=[];i.push(`# fish completion for ${t}`),i.push(`# Generated by: ${t} completion fish`),i.push("");let r=o[0];for(let n of r.subcommands)i.push(`complete -c ${t} -n "__fish_use_subcommand" -a "${n.name}" -d "${fi(n.description)}"`);for(let n of e.options)if(n.long){let s=n.long.replace("--",""),a=`complete -c ${t} -l "${s}"`;n.short&&(a+=` -s "${n.short.replace("-","")}"`),n.takesValue&&(a+=" -r"),n.choices&&(a+=` -a "${n.choices.join(" ")}"`),a+=` -d "${fi(n.description)}"`,i.push(a)}for(let n of o.slice(1)){let s=n.path.split(" ").slice(1),l=`__fish_seen_subcommand_from ${s[s.length-1]}`;for(let d of n.subcommands)i.push(`complete -c ${t} -n "${l}" -a "${d.name}" -d "${fi(d.description)}"`);for(let d of n.options)if(d.long){let c=d.long.replace("--",""),m=`complete -c ${t} -n "${l}" -l "${c}"`;d.short&&(m+=` -s "${d.short.replace("-","")}"`),d.takesValue&&(m+=" -r"),d.choices&&(m+=` -a "${d.choices.join(" ")}"`),m+=` -d "${fi(d.description)}"`,i.push(m)}}return i.join(`
417
- `)}function vl(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/:/g,"\\:")}function fi(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Fl(e){let t=e.name,o=Co(e,"",[]),i=[];i.push(`# PowerShell completion for ${t}`),i.push(`# Generated by: ${t} completion powershell`),i.push(""),i.push(`Register-ArgumentCompleter -Native -CommandName ${t} -ScriptBlock {`),i.push(" param($wordToComplete, $commandAst, $cursorPosition)"),i.push(""),i.push(' $words = $commandAst.ToString().Substring(0, $cursorPosition) -split "\\s+"');let n=Br(e).map(s=>`"${s}"`).join(", ");i.push(" $cmdPath = @()"),i.push(` $valueFlags = @(${n})`),i.push(" for ($i = 1; $i -lt $words.Count - 1; $i++) {"),i.push(" if ($valueFlags -contains $words[$i]) { $i++; continue }"),i.push(' if ($words[$i] -notlike "-*") { $cmdPath += $words[$i] }'),i.push(" }"),i.push(' $joined = $cmdPath -join " "'),i.push(" $cur = $words[-1]"),i.push(' if ($words.Count -eq 1) { $cur = "" }'),i.push(""),i.push(' $prev = if ($words.Count -ge 2) { $words[-2] } else { "" }'),i.push(""),i.push(" switch ($joined) {");for(let s of o){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(A=>A.choices&&A.long),d=s.options.map(A=>A.long).filter(Boolean).map(A=>`"${A}"`).join(", "),c=s.subcommands.map(A=>`"${A.name}"`).join(", "),m=l.length>0,f=d.length>0,b=c.length>0;if(!m&&!f&&!b)continue;i.push(` "${a}" {`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(m||h.length>0){i.push(" switch ($prev) {");for(let A of l){let w=A.choices?.map(S=>`"${S}"`).join(", ");i.push(` "${A.long}" { @(${w}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return }`)}if(h.length>0){let A=h.flatMap(w=>[w.long,w.short].filter(Boolean)).map(w=>`"${w}"`).join(", ");i.push(` { $_ -in @(${A}) } { return }`)}i.push(" }")}f&&(i.push(' if ($cur -like "-*") {'),i.push(` @(${d}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return`),i.push(" }")),b&&i.push(` @(${c}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }`),i.push(" }")}return i.push(" }"),i.push("}"),i.join(`
418
- `)}var Rl=new u("commands").description("Print the full command tree as JSON (for agents and tooling)").addHelpText("after",p({context:`Outputs every subcommand, option, and description from the CLI definition.
419
- In machine mode (piped, CI, or --json), the tree is JSON you can feed to agents or scripts.`,examples:["resend commands","resend commands --json",'resend commands | jq ".subcommands[].name"']})).action((e,t)=>{let o=t.parent;if(!o)throw new Error("commands must be registered on the root program");let i=t.optsWithGlobals(),r=yo(o);H(r,{json:i.json})});var fe=require("node:fs"),bt=require("node:os"),Pe=require("node:path");V();var El=["bash","zsh","fish","powershell"],gi="# resend shell completion";function Yf(){let e=process.env.SHELL;if(e){let t=(0,Pe.basename)(e);if(t==="bash")return"bash";if(t==="zsh")return"zsh";if(t==="fish")return"fish"}if(process.env.PSModulePath)return"powershell"}async function Xf(e){if(e)return e;let t=Yf();if(t)return t;U()||(process.stderr.write(`error: could not detect shell. Pass the shell name explicitly.
420
- `),process.exit(1));let o=await re({message:"Which shell do you use?",options:El.map(i=>({value:i,label:i}))});return k(o)&&R("Cancelled."),o}function _l(e){switch(e){case"bash":return process.platform==="darwin"?(0,Pe.join)((0,bt.homedir)(),".bash_profile"):(0,Pe.join)((0,bt.homedir)(),".bashrc");case"zsh":return(0,Pe.join)((0,bt.homedir)(),".zshrc");case"powershell":return process.platform==="win32"?(0,Pe.join)((0,bt.homedir)(),"Documents","PowerShell","Microsoft.PowerShell_profile.ps1"):(0,Pe.join)((0,bt.homedir)(),".config","powershell","Microsoft.PowerShell_profile.ps1")}}function Zf(e,t){switch(e){case"bash":return Kl(t);case"zsh":return xl(t);case"fish":return kl(t);case"powershell":return Fl(t)}}function Dl(e,t,o){(0,fe.existsSync)(e)||(0,fe.mkdirSync)(e,{recursive:!0});let i=(0,Pe.join)(e,t);return(0,fe.writeFileSync)(i,`${o}
421
- `),i}function eg(e,t){switch(e){case"zsh":{let o=(0,Pe.join)((0,bt.homedir)(),".zsh","completions"),i=Dl(o,"_resend",t);X.success(`Completions written to ${i}`);let r=_l(e),n=!0;if((0,fe.existsSync)(r)&&(0,fe.readFileSync)(r,"utf8").includes(o)&&(n=!1),n){let s=`${gi}
414
+ The resume is uploaded as multipart form data (max 10MB, PDF recommended).`,output:' {"success":true}',errorCodes:["auth_error","missing_id","list_error","missing_name","missing_email","missing_resume","invalid_field","file_read_error","invalid_resume","fetch_error","apply_error"],examples:["resend careers apply",`resend careers apply 053bde8f-294e-4cce-9d62-2301282120a2 --name "Ada Lovelace" --email ada@example.com --resume ./resume.pdf --field 'd5cef330-d154-4f3a-8c5a-092986c61fe3=I love email infrastructure.'`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=new Map;for(let[h,A]of Wf(t.field,i))r.set(h,A);t.name!==void 0&&r.set("name",t.name),t.email!==void 0&&r.set("email",t.email);let n=U()&&!i.json,s=await ee(e,Al,i),a=s.id,l=t.resume,d=s.label;if(n){let h=await Y(i,{permission:"sending_access"}),A=await ae("Fetching the application form...",()=>h.get(`/careers/${a}`),"fetch_error",i,{retryTransient:!0});d=A.title,Po(A.location?`Apply to ${A.title} - ${A.location}`:`Apply to ${A.title}`);for(let w of A.fields){if(w.path==="resume"){l=l??await Cl(w.title);continue}if(w.type==="File"){X.warn(`Skipping "${w.title}": only the resume file can be uploaded here. Apply on the careers page to include it.`);continue}if(r.has(w.path))continue;let S=await Jf(w);S!==void 0&&r.set(w.path,S)}r.has("name")||r.set("name",await yl("Name")),r.has("email")||r.set("email",await yl("Email")),l=l??await Cl("Resume"),t.yes||await Vf(A,r,l)}else r.get("name")||g({message:"Missing --name flag.",code:"missing_name"},{json:i.json}),r.get("email")||g({message:"Missing --email flag.",code:"missing_email"},{json:i.json}),l||g({message:"Missing --resume flag.",code:"missing_resume"},{json:i.json});let c=Yf(l,i),m=new FormData;for(let[h,A]of r)m.append(h,A);m.append("resume",c.blob,c.filename);let f=await Y(i,{permission:"sending_access"}),b=await ae("Submitting application...",()=>f.fetchRequest(`/careers/${a}`,{method:"POST",headers:{Authorization:`Bearer ${f.key}`,"User-Agent":process.env.RESEND_USER_AGENT??""},body:m}),"apply_error",i);!i.json&&U()?Et(`Application submitted for ${d}. Thanks for applying to Resend!`):H(b,{json:i.json})});function Wf(e,t){let o=new Map;for(let i of e??[]){let r=i.indexOf("=");r<=0&&g({message:`Invalid --field value "${i}". Use --field <path>=<value>.`,code:"invalid_field"},{json:t.json}),o.set(i.slice(0,r),i.slice(r+1))}return o}async function Jf(e){let t=e.required?e.title:`${e.title} (optional)`;if(e.selectable_values&&e.selectable_values.length>0){let r=[...e.required?[]:[{value:qt,label:"Skip"}],...e.selectable_values.map(s=>({value:s.value,label:s.label}))],n=await re({message:t,options:r});return k(n)&&R("Application cancelled."),n===qt?void 0:n}if(e.type==="Boolean"){let r=[...e.required?[]:[{value:qt,label:"Skip"}],{value:"true",label:"Yes"},{value:"false",label:"No"}],n=await re({message:t,options:r});return k(n)&&R("Application cancelled."),n===qt?void 0:n}if(e.type==="Location"){let r=[...e.required?[]:[{value:qt,label:"Skip"}],...hl.map(s=>({value:s,label:s}))],n=await jn({message:t,options:r,maxItems:8,placeholder:"Start typing a country..."});return k(n)&&R("Application cancelled."),n===qt?void 0:n}let o=await z({message:t,...e.description?{placeholder:e.description}:{},validate:r=>{let n=r?.trim()??"";if(e.required&&n.length===0)return`${e.title} is required`;if(n&&e.type==="Email"&&!n.includes("@"))return"Enter a valid email address";if(n&&e.type==="Number"&&Number.isNaN(Number(n)))return"Enter a number"}});k(o)&&R("Application cancelled.");let i=o?.trim()??"";return i.length>0?i:void 0}async function yl(e){let t=await z({message:e,validate:o=>!o||o.trim().length===0?`${e} is required`:void 0});return k(t)&&R("Application cancelled."),t.trim()}async function Cl(e){let t=await z({message:`${e} (path to a local file, PDF recommended)`,placeholder:"./resume.pdf",validate:o=>!o||o.trim().length===0?"A resume file is required":void 0});return k(t)&&R("Application cancelled."),t.trim()}async function Vf(e,t,o){let i=new Map(e.fields.map(s=>[s.path,s])),r=[...t.entries()].map(([s,a])=>{let l=i.get(s),d=l?.title??s,c=l?.type==="Boolean"?a==="true"?"Yes":a==="false"?"No":a:a;return`${d}: ${zf(c,80)}`});r.push(`Resume: ${(0,bo.basename)(o)}`),Hn(r.join(`
415
+ `),"Application summary");let n=await Ye({message:"Submit this application?"});(k(n)||!n)&&R("Application not submitted.")}function zf(e,t){let o=e.replace(/\s+/g," ").trim();return o.length>t?`${o.slice(0,t-3)}...`:o}function Yf(e,t){let o;try{o=(0,wl.readFileSync)(e)}catch{g({message:`Failed to read file: ${e}`,code:"file_read_error"},{json:t.json})}o.length>qf&&g({message:"Resume file is too large. Maximum size is 10MB.",code:"invalid_resume"},{json:t.json});let i=Lf[(0,bo.extname)(e).toLowerCase()]??"application/octet-stream";return{blob:new Blob([new Uint8Array(o)],{type:i}),filename:(0,bo.basename)(e)}}var Sl=new u("list").description("List open positions at Resend").addHelpText("after",p({context:"Lists open positions, fetched live from our applicant tracking system.",output:' {"object":"list","data":[{"id":"<id>","title":"<title>","department":"<department>","team":"<team>","location":"<location>","employment_type":"<type>","workplace_type":"<type>","published_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend careers","resend careers list --json","resend careers apply <id>"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await F({loading:"Fetching open positions...",sdkCall:i=>i.get("/careers"),permission:"sending_access",onInteractive:i=>{console.log(bl(i.data)),i.data.length>0&&console.log(`
416
+ Apply with: resend careers apply <id>`)}},o)});var vl=new u("careers").description("Browse open positions at Resend and apply from your terminal").addHelpText("after",p({context:"Flow: `resend careers` lists open positions, and `resend careers apply`\nwalks you through the application (or takes flags for scripted submissions).\n\nAny Resend API key works \u2014 applications are not tied to your team.",examples:["resend careers","resend careers apply"]})).addCommand(Ul).addCommand(Sl,{isDefault:!0});function yo(e){let t=[];for(let i of e.commands)i._hidden||t.push(yo(i));let o=[];for(let i of e.options)i.hidden||o.push({long:i.long,short:i.short,description:i.description,takesValue:i.required||i.optional,choices:i.argChoices});return{name:e.name(),aliases:e.aliases(),description:e.description(),subcommands:t,options:o}}function Co(e,t,o){let i=t?`${t} ${e.name}`:e.name,r=[],n=[];for(let a of e.subcommands){n.push({name:a.name,description:a.description});for(let l of a.aliases)n.push({name:l,description:a.description})}let s=[...e.options,...o];r.push({path:i,subcommands:n,options:s});for(let a of e.subcommands)r.push(...Co(a,i,o));return r}function Br(e){let t=new Set;function o(i){for(let r of i.options)r.takesValue&&(r.long&&t.add(r.long),r.short&&t.add(r.short));for(let r of i.subcommands)o(r)}return o(e),[...t]}function xl(e){let t=Co(e,"",[]),o=[],i=e.name;o.push(`# bash completion for ${i}`),o.push(`# Generated by: ${i} completion bash`),o.push(""),o.push(`_${i}_completions() {`),o.push(" local cur prev words cword"),o.push(" if type _init_completion &>/dev/null; then _init_completion || return; else"),o.push(' cur="${COMP_WORDS[COMP_CWORD]}"'),o.push(' prev="${COMP_WORDS[COMP_CWORD-1]}"'),o.push(' words=("${COMP_WORDS[@]}")'),o.push(" cword=$COMP_CWORD"),o.push(" fi"),o.push("");let n=Br(e).join("|");o.push(' local cmd_path=""'),o.push(" local i=1"),o.push(" while [ $i -lt $cword ]; do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) i=$((i + 1)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" i=$((i + 1))"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(A=>A.choices&&A.long),d=s.options.map(A=>A.long).filter(Boolean).join(" "),c=s.subcommands.map(A=>A.name).join(" "),m=l.length>0,f=d.length>0,b=c.length>0;if(!m&&!f&&!b)continue;o.push(` "${a}")`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(m||h.length>0){o.push(' case "$prev" in');for(let A of l)o.push(` ${A.long}) COMPREPLY=($(compgen -W "${A.choices?.join(" ")}" -- "$cur")); return ;;`);if(h.length>0){let A=h.flatMap(w=>[w.long,w.short].filter(Boolean)).join("|");o.push(` ${A}) return ;;`)}o.push(" esac")}f&&(o.push(' if [[ "$cur" == -* ]]; then'),o.push(` COMPREPLY=($(compgen -W "${d}" -- "$cur")); return`),o.push(" fi")),b&&o.push(` COMPREPLY=($(compgen -W "${c}" -- "$cur"))`),o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`complete -o default -F _${i}_completions ${i}`),o.join(`
417
+ `)}function kl(e){let t=Co(e,"",[]),o=[],i=e.name;o.push(`#compdef ${i}`),o.push(`# zsh completion for ${i}`),o.push(`# Generated by: ${i} completion zsh`),o.push(""),o.push(`_${i}() {`),o.push(" local cur prev cmd_path"),o.push(' cur="${words[$CURRENT]}"'),o.push(' prev="${words[$CURRENT-1]}"'),o.push("");let n=Br(e).join("|");o.push(' cmd_path=""'),o.push(" for ((i=2; i < CURRENT; i++)); do"),o.push(' case "${words[$i]}" in'),n&&o.push(` ${n}) ((i++)) ;;`),o.push(" -*) ;;"),o.push(' *) cmd_path="${cmd_path:+$cmd_path }${words[$i]}" ;;'),o.push(" esac"),o.push(" done"),o.push(""),o.push(' case "$cmd_path" in');for(let s of t){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(f=>f.choices&&f.long),d=s.options.filter(f=>f.long),c=s.subcommands.length>0;o.push(` "${a}")`);let m=s.options.filter(f=>f.takesValue&&!f.choices);if(l.length>0||m.length>0){o.push(' case "$prev" in');for(let f of l)o.push(` ${f.long}) compadd -- ${f.choices?.join(" ")}; return ;;`);if(m.length>0){let f=m.flatMap(b=>[b.long,b.short].filter(Boolean)).join("|");o.push(` ${f}) _files; return ;;`)}o.push(" esac")}if(d.length>0){o.push(' if [[ "$cur" == -* ]]; then');let f=d.map(b=>`"${b.long}:${Kl(b.description)}"`).join(" ");o.push(` local -a opts=(${f}); _describe 'option' opts; return`),o.push(" fi")}if(c){let f=s.subcommands.map(b=>`"${b.name}:${Kl(b.description)}"`).join(" ");o.push(` local -a cmds=(${f}); _describe 'command' cmds`)}else o.push(" _files");o.push(" ;;")}return o.push(" esac"),o.push("}"),o.push(""),o.push(`compdef _${i} ${i}`),o.join(`
418
+ `)}function Fl(e){let t=e.name,o=Co(e,"",[]),i=[];i.push(`# fish completion for ${t}`),i.push(`# Generated by: ${t} completion fish`),i.push("");let r=o[0];for(let n of r.subcommands)i.push(`complete -c ${t} -n "__fish_use_subcommand" -a "${n.name}" -d "${fi(n.description)}"`);for(let n of e.options)if(n.long){let s=n.long.replace("--",""),a=`complete -c ${t} -l "${s}"`;n.short&&(a+=` -s "${n.short.replace("-","")}"`),n.takesValue&&(a+=" -r"),n.choices&&(a+=` -a "${n.choices.join(" ")}"`),a+=` -d "${fi(n.description)}"`,i.push(a)}for(let n of o.slice(1)){let s=n.path.split(" ").slice(1),l=`__fish_seen_subcommand_from ${s[s.length-1]}`;for(let d of n.subcommands)i.push(`complete -c ${t} -n "${l}" -a "${d.name}" -d "${fi(d.description)}"`);for(let d of n.options)if(d.long){let c=d.long.replace("--",""),m=`complete -c ${t} -n "${l}" -l "${c}"`;d.short&&(m+=` -s "${d.short.replace("-","")}"`),d.takesValue&&(m+=" -r"),d.choices&&(m+=` -a "${d.choices.join(" ")}"`),m+=` -d "${fi(d.description)}"`,i.push(m)}}return i.join(`
419
+ `)}function Kl(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/:/g,"\\:")}function fi(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function Rl(e){let t=e.name,o=Co(e,"",[]),i=[];i.push(`# PowerShell completion for ${t}`),i.push(`# Generated by: ${t} completion powershell`),i.push(""),i.push(`Register-ArgumentCompleter -Native -CommandName ${t} -ScriptBlock {`),i.push(" param($wordToComplete, $commandAst, $cursorPosition)"),i.push(""),i.push(' $words = $commandAst.ToString().Substring(0, $cursorPosition) -split "\\s+"');let n=Br(e).map(s=>`"${s}"`).join(", ");i.push(" $cmdPath = @()"),i.push(` $valueFlags = @(${n})`),i.push(" for ($i = 1; $i -lt $words.Count - 1; $i++) {"),i.push(" if ($valueFlags -contains $words[$i]) { $i++; continue }"),i.push(' if ($words[$i] -notlike "-*") { $cmdPath += $words[$i] }'),i.push(" }"),i.push(' $joined = $cmdPath -join " "'),i.push(" $cur = $words[-1]"),i.push(' if ($words.Count -eq 1) { $cur = "" }'),i.push(""),i.push(' $prev = if ($words.Count -ge 2) { $words[-2] } else { "" }'),i.push(""),i.push(" switch ($joined) {");for(let s of o){let a=s.path===e.name?"":s.path.replace(`${e.name} `,""),l=s.options.filter(A=>A.choices&&A.long),d=s.options.map(A=>A.long).filter(Boolean).map(A=>`"${A}"`).join(", "),c=s.subcommands.map(A=>`"${A.name}"`).join(", "),m=l.length>0,f=d.length>0,b=c.length>0;if(!m&&!f&&!b)continue;i.push(` "${a}" {`);let h=s.options.filter(A=>A.takesValue&&!A.choices);if(m||h.length>0){i.push(" switch ($prev) {");for(let A of l){let w=A.choices?.map(S=>`"${S}"`).join(", ");i.push(` "${A.long}" { @(${w}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return }`)}if(h.length>0){let A=h.flatMap(w=>[w.long,w.short].filter(Boolean)).map(w=>`"${w}"`).join(", ");i.push(` { $_ -in @(${A}) } { return }`)}i.push(" }")}f&&(i.push(' if ($cur -like "-*") {'),i.push(` @(${d}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }; return`),i.push(" }")),b&&i.push(` @(${c}) | Where-Object { $_ -like "$cur*" } | ForEach-Object { [System.Management.Automation.CompletionResult]::new($_) }`),i.push(" }")}return i.push(" }"),i.push("}"),i.join(`
420
+ `)}var _l=new u("commands").description("Print the full command tree as JSON (for agents and tooling)").addHelpText("after",p({context:`Outputs every subcommand, option, and description from the CLI definition.
421
+ In machine mode (piped, CI, or --json), the tree is JSON you can feed to agents or scripts.`,examples:["resend commands","resend commands --json",'resend commands | jq ".subcommands[].name"']})).action((e,t)=>{let o=t.parent;if(!o)throw new Error("commands must be registered on the root program");let i=t.optsWithGlobals(),r=yo(o);H(r,{json:i.json})});var fe=require("node:fs"),bt=require("node:os"),Pe=require("node:path");V();var Bl=["bash","zsh","fish","powershell"],gi="# resend shell completion";function Xf(){let e=process.env.SHELL;if(e){let t=(0,Pe.basename)(e);if(t==="bash")return"bash";if(t==="zsh")return"zsh";if(t==="fish")return"fish"}if(process.env.PSModulePath)return"powershell"}async function Zf(e){if(e)return e;let t=Xf();if(t)return t;U()||(process.stderr.write(`error: could not detect shell. Pass the shell name explicitly.
422
+ `),process.exit(1));let o=await re({message:"Which shell do you use?",options:Bl.map(i=>({value:i,label:i}))});return k(o)&&R("Cancelled."),o}function Dl(e){switch(e){case"bash":return process.platform==="darwin"?(0,Pe.join)((0,bt.homedir)(),".bash_profile"):(0,Pe.join)((0,bt.homedir)(),".bashrc");case"zsh":return(0,Pe.join)((0,bt.homedir)(),".zshrc");case"powershell":return process.platform==="win32"?(0,Pe.join)((0,bt.homedir)(),"Documents","PowerShell","Microsoft.PowerShell_profile.ps1"):(0,Pe.join)((0,bt.homedir)(),".config","powershell","Microsoft.PowerShell_profile.ps1")}}function eg(e,t){switch(e){case"bash":return xl(t);case"zsh":return kl(t);case"fish":return Fl(t);case"powershell":return Rl(t)}}function El(e,t,o){(0,fe.existsSync)(e)||(0,fe.mkdirSync)(e,{recursive:!0});let i=(0,Pe.join)(e,t);return(0,fe.writeFileSync)(i,`${o}
423
+ `),i}function tg(e,t){switch(e){case"zsh":{let o=(0,Pe.join)((0,bt.homedir)(),".zsh","completions"),i=El(o,"_resend",t);X.success(`Completions written to ${i}`);let r=Dl(e),n=!0;if((0,fe.existsSync)(r)&&(0,fe.readFileSync)(r,"utf8").includes(o)&&(n=!1),n){let s=`${gi}
422
424
  fpath=(${o} $fpath)
423
425
  `,a=(0,fe.existsSync)(r)?(0,fe.readFileSync)(r,"utf8"):"",l=a.match(/^.*compinit.*$/m);if(l){let d=a.indexOf(l[0]),c=a.slice(0,d),m=a.slice(d);(0,fe.writeFileSync)(r,`${c}${s}
424
426
  ${m}`)}else{let d=`
425
427
  ${s}autoload -Uz compinit && compinit
426
- `;(0,fe.writeFileSync)(r,d,{flag:"a"})}X.info(`Added completion path to ${r}`)}X.info("Restart your shell to activate completions.");return}case"fish":{let o=(0,Pe.join)((0,bt.homedir)(),".config","fish","completions"),i=Dl(o,"resend.fish",t);X.success(`Completions written to ${i}`),X.info("Completions will be available in new fish sessions.");return}case"bash":case"powershell":{let o=_l(e),i=e==="powershell"?`
428
+ `;(0,fe.writeFileSync)(r,d,{flag:"a"})}X.info(`Added completion path to ${r}`)}X.info("Restart your shell to activate completions.");return}case"fish":{let o=(0,Pe.join)((0,bt.homedir)(),".config","fish","completions"),i=El(o,"resend.fish",t);X.success(`Completions written to ${i}`),X.info("Completions will be available in new fish sessions.");return}case"bash":case"powershell":{let o=Dl(e),i=e==="powershell"?`
427
429
  ${gi}
428
430
  resend completion powershell | Invoke-Expression
429
431
  `:`
430
432
  ${gi}
431
433
  eval "$(resend completion ${e})"
432
- `;if((0,fe.existsSync)(o)&&(0,fe.readFileSync)(o,"utf8").includes(gi)){X.info(`Completions already installed in ${o}`);return}let r=(0,Pe.dirname)(o);(0,fe.existsSync)(r)||(0,fe.mkdirSync)(r,{recursive:!0}),(0,fe.writeFileSync)(o,i,{flag:"a"}),X.success(`Completions added to ${o}`),X.info("Restart your shell to activate completions.");return}}}var Bl=new u("completion").description("Generate shell completion script").addArgument(new ln("[shell]","Shell type").choices(El)).option("--install","Install completions into your shell profile").addHelpText("after",p({context:`Outputs a completion script for the given shell. The shell is auto-detected
434
+ `;if((0,fe.existsSync)(o)&&(0,fe.readFileSync)(o,"utf8").includes(gi)){X.info(`Completions already installed in ${o}`);return}let r=(0,Pe.dirname)(o);(0,fe.existsSync)(r)||(0,fe.mkdirSync)(r,{recursive:!0}),(0,fe.writeFileSync)(o,i,{flag:"a"}),X.success(`Completions added to ${o}`),X.info("Restart your shell to activate completions.");return}}}var Ol=new u("completion").description("Generate shell completion script").addArgument(new ln("[shell]","Shell type").choices(Bl)).option("--install","Install completions into your shell profile").addHelpText("after",p({context:`Outputs a completion script for the given shell. The shell is auto-detected
433
435
  from $SHELL when not specified.
434
436
 
435
437
  Quick setup:
@@ -449,7 +451,7 @@ Manual setup:
449
451
  PowerShell (add to $PROFILE):
450
452
  resend completion powershell >> $PROFILE
451
453
 
452
- Homebrew users: completions may be configured automatically by your formula.`,examples:["resend completion --install","resend completion bash","resend completion zsh",'eval "$(resend completion bash)"']})).action(async(e,t,o)=>{let i=await Xf(e),r=o.parent;if(!r)throw new Error("completion command must be registered under a parent");let n=yo(r),s=Zf(i,n);if(t.install){eg(i,s);return}if(!e&&U()){o.help();return}console.log(s)});var Ol=new u("create").description("Create a new contact property definition").addOption(new L("--key <key>","Property key name, used in broadcast template interpolation (e.g. company_name, department)")).addOption(new L("--type <type>","Property data type: 'string' for text values, 'number' for numeric values").choices(["string","number"])).option("--fallback-value <value>","Default value used in broadcast templates when a contact has no value set for this property").addHelpText("after",p({context:`Property keys are used as identifiers in broadcast HTML template interpolation:
454
+ Homebrew users: completions may be configured automatically by your formula.`,examples:["resend completion --install","resend completion bash","resend completion zsh",'eval "$(resend completion bash)"']})).action(async(e,t,o)=>{let i=await Zf(e),r=o.parent;if(!r)throw new Error("completion command must be registered under a parent");let n=yo(r),s=eg(i,n);if(t.install){tg(i,s);return}if(!e&&U()){o.help();return}console.log(s)});var Tl=new u("create").description("Create a new contact property definition").addOption(new L("--key <key>","Property key name, used in broadcast template interpolation (e.g. company_name, department)")).addOption(new L("--type <type>","Property data type: 'string' for text values, 'number' for numeric values").choices(["string","number"])).option("--fallback-value <value>","Default value used in broadcast templates when a contact has no value set for this property").addHelpText("after",p({context:`Property keys are used as identifiers in broadcast HTML template interpolation:
453
455
  {{{PROPERTY_NAME|fallback}}} \u2014 triple-brace syntax substitutes the contact's value
454
456
  {{{company_name|Unknown}}} \u2014 falls back to "Unknown" if the property is not set
455
457
 
@@ -457,20 +459,20 @@ Reserved keys (cannot be used): FIRST_NAME, LAST_NAME, EMAIL, UNSUBSCRIBE_URL
457
459
 
458
460
  Non-interactive: --key and --type are required. --fallback-value is optional.
459
461
  Warning: do not create properties with reserved key names \u2014 they will conflict with
460
- built-in contact fields and may cause unexpected behavior in broadcasts.`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","missing_key","missing_type","invalid_fallback_value","create_error"],examples:["resend contact-properties create --key company_name --type string",'resend contact-properties create --key company_name --type string --fallback-value "Unknown"',"resend contact-properties create --key employee_count --type number --fallback-value 0","resend contact-properties create --key department --type string --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.key,{message:"Property key",placeholder:"e.g. company_name"},{message:"Missing --key flag.",code:"missing_key"},o),r=await ht(e.type,{message:"Property data type",options:[{value:"string",label:"string \u2014 text values"},{value:"number",label:"number \u2014 numeric values"}]},{message:"Missing --type flag.",code:"missing_type"},o),n;if(e.fallbackValue!==void 0)if(r==="number"){let a=parseFloat(e.fallbackValue);Number.isNaN(a)&&g({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:o.json}),n=a}else n=e.fallbackValue;let s={key:i,type:r,...n!==void 0&&{fallbackValue:n}};await M({loading:"Creating contact property...",sdkCall:a=>a.contactProperties.create(s),onInteractive:a=>{console.log(`Contact property created: ${a.id}`)}},o)});var Lt={resource:"contact property",resourcePlural:"contact properties",fetchItems:(e,{limit:t,after:o})=>e.contactProperties.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.key} (${e.type})`,hint:e.id})};function Tl(e){let t=e.map(o=>[o.key,o.type,o.fallbackValue!=null?String(o.fallbackValue):"",o.id,o.createdAt]);return _(["Key","Type","Fallback Value","ID","Created"],t,"(no contact properties)")}var Il=new u("delete").alias("rm").description("Delete a contact property definition").argument("[id]","Contact property UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`WARNING: Deleting a property definition removes that property value from ALL contacts
462
+ built-in contact fields and may cause unexpected behavior in broadcasts.`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","missing_key","missing_type","invalid_fallback_value","create_error"],examples:["resend contact-properties create --key company_name --type string",'resend contact-properties create --key company_name --type string --fallback-value "Unknown"',"resend contact-properties create --key employee_count --type number --fallback-value 0","resend contact-properties create --key department --type string --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.key,{message:"Property key",placeholder:"e.g. company_name"},{message:"Missing --key flag.",code:"missing_key"},o),r=await ht(e.type,{message:"Property data type",options:[{value:"string",label:"string \u2014 text values"},{value:"number",label:"number \u2014 numeric values"}]},{message:"Missing --type flag.",code:"missing_type"},o),n;if(e.fallbackValue!==void 0)if(r==="number"){let a=parseFloat(e.fallbackValue);Number.isNaN(a)&&g({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:o.json}),n=a}else n=e.fallbackValue;let s={key:i,type:r,...n!==void 0&&{fallbackValue:n}};await M({loading:"Creating contact property...",sdkCall:a=>a.contactProperties.create(s),onInteractive:a=>{console.log(`Contact property created: ${a.id}`)}},o)});var Lt={resource:"contact property",resourcePlural:"contact properties",fetchItems:(e,{limit:t,after:o})=>e.contactProperties.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.key} (${e.type})`,hint:e.id})};function Il(e){let t=e.map(o=>[o.key,o.type,o.fallbackValue!=null?String(o.fallbackValue):"",o.id,o.createdAt]);return _(["Key","Type","Fallback Value","ID","Created"],t,"(no contact properties)")}var jl=new u("delete").alias("rm").description("Delete a contact property definition").argument("[id]","Contact property UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`WARNING: Deleting a property definition removes that property value from ALL contacts
461
463
  permanently. This cannot be undone, and any broadcasts that reference this property key
462
464
  via {{{PROPERTY_NAME}}} will render an empty string or their inline fallback instead.
463
465
 
464
466
  Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"contact_property","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes","resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Lt,i);await te(r.id,!!t.yes,{confirmMessage:`Delete contact property "${r.label}"?
465
467
  ID: ${r.id}
466
- This will remove this property from ALL contacts permanently.`,loading:"Deleting contact property...",object:"contact_property",successMsg:"Contact property deleted",sdkCall:n=>n.contactProperties.remove(r.id)},i)});var jl=new u("get").description("Retrieve a contact property definition by ID").argument("[id]","Contact property UUID").addHelpText("after",p({output:` {
468
+ This will remove this property from ALL contacts permanently.`,loading:"Deleting contact property...",object:"contact_property",successMsg:"Contact property deleted",sdkCall:n=>n.contactProperties.remove(r.id)},i)});var Pl=new u("get").description("Retrieve a contact property definition by ID").argument("[id]","Contact property UUID").addHelpText("after",p({output:` {
467
469
  "object": "contact_property",
468
470
  "id": "<uuid>",
469
471
  "key": "company_name",
470
472
  "type": "string",
471
473
  "fallbackValue": null,
472
474
  "createdAt": "2026-01-01 00:00:00+00"
473
- }`,errorCodes:["auth_error","fetch_error"],examples:["resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Lt,i);await Q({loading:"Fetching contact property...",sdkCall:n=>n.contactProperties.get(r),onInteractive:n=>{console.log(`${n.key} (${n.type})`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.createdAt}`),console.log(`Fallback value: ${n.fallbackValue??"(none)"}`)}},i)});var Pl=new u("list").alias("ls").description("List all contact property definitions").option("--limit <n>","Maximum number of contact properties to return (1-100)","10").option("--after <cursor>","Return contact properties after this cursor (next page)").option("--before <cursor>","Return contact properties before this cursor (previous page)").addHelpText("after",p({context:`Pagination: use --after or --before with a contact property ID as the cursor.
475
+ }`,errorCodes:["auth_error","fetch_error"],examples:["resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Lt,i);await Q({loading:"Fetching contact property...",sdkCall:n=>n.contactProperties.get(r),onInteractive:n=>{console.log(`${n.key} (${n.type})`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.createdAt}`),console.log(`Fallback value: ${n.fallbackValue??"(none)"}`)}},i)});var $l=new u("list").alias("ls").description("List all contact property definitions").option("--limit <n>","Maximum number of contact properties to return (1-100)","10").option("--after <cursor>","Return contact properties after this cursor (next page)").option("--before <cursor>","Return contact properties before this cursor (previous page)").addHelpText("after",p({context:`Pagination: use --after or --before with a contact property ID as the cursor.
474
476
  Only one of --after or --before may be used at a time.
475
477
  The response includes has_more: true when additional pages exist.`,output:` {
476
478
  "object": "list",
@@ -478,14 +480,14 @@ This will remove this property from ALL contacts permanently.`,loading:"Deleting
478
480
  "data": [
479
481
  { "id": "<uuid>", "key": "company_name", "type": "string", "fallbackValue": null, "createdAt": "..." }
480
482
  ]
481
- }`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contact-properties list","resend contact-properties list --limit 25 --json","resend contact-properties list --after b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching contact properties...",sdkCall:n=>n.contactProperties.list(r),onInteractive:n=>{console.log(Tl(n.data)),T(n,"contact-properties list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var $l=new u("update").description("Update a contact property definition").argument("[id]","Contact property UUID").option("--fallback-value <value>","New fallback value used in broadcast templates when a contact has no value set for this property").option("--clear-fallback-value","Remove the fallback value (sets it to null)").addHelpText("after",p({context:`Note: the property key and type cannot be changed after creation. Only the fallback value
483
+ }`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contact-properties list","resend contact-properties list --limit 25 --json","resend contact-properties list --after b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching contact properties...",sdkCall:n=>n.contactProperties.list(r),onInteractive:n=>{console.log(Il(n.data)),T(n,"contact-properties list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Gl=new u("update").description("Update a contact property definition").argument("[id]","Contact property UUID").option("--fallback-value <value>","New fallback value used in broadcast templates when a contact has no value set for this property").option("--clear-fallback-value","Remove the fallback value (sets it to null)").addHelpText("after",p({context:`Note: the property key and type cannot be changed after creation. Only the fallback value
482
484
  is updatable. Renaming a property would break existing broadcasts that reference the old key.
483
485
 
484
486
  --fallback-value and --clear-fallback-value are mutually exclusive.
485
487
 
486
488
  The fallback value is used in broadcast template interpolation when a contact has no value:
487
489
  {{{company_name|Unknown}}} \u2014 inline fallback (takes precedence over the property's fallback)
488
- {{{company_name}}} \u2014 uses the property's stored fallback value if set`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","no_changes","conflicting_flags","fetch_error","invalid_fallback_value","update_error"],examples:['resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Acme Corp"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value 42","resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Lt,i);t.fallbackValue===void 0&&!t.clearFallbackValue&&g({message:"Provide at least one option to update: --fallback-value or --clear-fallback-value.",code:"no_changes"},{json:i.json}),t.fallbackValue!==void 0&&t.clearFallbackValue&&g({message:"--fallback-value and --clear-fallback-value are mutually exclusive.",code:"conflicting_flags"},{json:i.json});let n=t.clearFallbackValue?null:t.fallbackValue;if(typeof n=="string"){let s=await Y(i);if((await ae("Fetching contact property...",()=>s.contactProperties.get(r),"fetch_error",i,{retryTransient:!0})).type==="number"){let l=parseFloat(n);Number.isNaN(l)&&g({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:i.json}),n=l}}await B({loading:"Updating contact property...",sdkCall:s=>s.contactProperties.update({id:r,...n!==void 0&&{fallbackValue:n}}),errorCode:"update_error",successMsg:`Contact property updated: ${r}`},i)});var Gl=new u("contact-properties").description("Manage contact property definitions").addHelpText("after",p({context:`Contact properties define the schema for custom data stored on contacts.
490
+ {{{company_name}}} \u2014 uses the property's stored fallback value if set`,output:' {"object":"contact_property","id":"<id>"}',errorCodes:["auth_error","no_changes","conflicting_flags","fetch_error","invalid_fallback_value","update_error"],examples:['resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Acme Corp"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value 42","resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Lt,i);t.fallbackValue===void 0&&!t.clearFallbackValue&&g({message:"Provide at least one option to update: --fallback-value or --clear-fallback-value.",code:"no_changes"},{json:i.json}),t.fallbackValue!==void 0&&t.clearFallbackValue&&g({message:"--fallback-value and --clear-fallback-value are mutually exclusive.",code:"conflicting_flags"},{json:i.json});let n=t.clearFallbackValue?null:t.fallbackValue;if(typeof n=="string"){let s=await Y(i);if((await ae("Fetching contact property...",()=>s.contactProperties.get(r),"fetch_error",i,{retryTransient:!0})).type==="number"){let l=parseFloat(n);Number.isNaN(l)&&g({message:"--fallback-value must be a valid number for number-type properties.",code:"invalid_fallback_value"},{json:i.json}),n=l}}await B({loading:"Updating contact property...",sdkCall:s=>s.contactProperties.update({id:r,...n!==void 0&&{fallbackValue:n}}),errorCode:"update_error",successMsg:`Contact property updated: ${r}`},i)});var Hl=new u("contact-properties").description("Manage contact property definitions").addHelpText("after",p({context:`Contact properties define the schema for custom data stored on contacts.
489
491
  Think of them as column definitions \u2014 you create a property definition (e.g. company_name)
490
492
  and then set values for that property on individual contacts via "resend contacts update --properties".
491
493
 
@@ -500,9 +502,9 @@ Supported types:
500
502
  number \u2014 numeric values (useful for counts, scores, thresholds)
501
503
 
502
504
  Note: property keys and types are immutable after creation. Only the fallback value can
503
- be updated. Deleting a property removes it from all contacts.`,examples:["resend contact-properties list","resend contact-properties create --key company_name --type string",'resend contact-properties create --key plan --type string --fallback-value "free"',"resend contact-properties create --key score --type number --fallback-value 0","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value","resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes"]})).addCommand(Ol).addCommand(jl).addCommand(Pl,{isDefault:!0}).addCommand($l).addCommand(Il);function hi(e){let t=e.map(o=>[o.email,o.first_name??"",o.last_name??"",o.unsubscribed?"yes":"no",o.id]);return _(["Email","First Name","Last Name","Unsubscribed","ID"],t,"(no contacts)")}function Hl(e){let t=e.map(o=>[o.name,o.subscription,o.id,o.description??""]);return _(["Name","Subscription","ID","Description"],t,"(no topic subscriptions)")}var be={resource:"contact",resourcePlural:"contacts",fetchItems:(e,{limit:t,after:o})=>e.contacts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function Wt(e){return e.includes("@")?{email:e}:{id:e}}function Jt(e){return e.includes("@")?{email:e}:{contactId:e}}function Ai(e,t){let o;try{o=JSON.parse(e)}catch{g({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json})}return Array.isArray(o)||g({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json}),o}function bi(e,t){if(e)try{return JSON.parse(e)}catch{g({message:"Invalid --properties JSON.",code:"invalid_properties"},{json:t.json})}}var Ql=new u("add-segment").description("Add a contact to a segment").argument("[contactId]","Contact UUID or email address").option("--segment-id <id>","Segment ID to add the contact to (required)").addHelpText("after",p({context:`The <contactId> argument accepts either a UUID or an email address.
505
+ be updated. Deleting a property removes it from all contacts.`,examples:["resend contact-properties list","resend contact-properties create --key company_name --type string",'resend contact-properties create --key plan --type string --fallback-value "free"',"resend contact-properties create --key score --type number --fallback-value 0","resend contact-properties get b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d",'resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --fallback-value "Unknown"',"resend contact-properties update b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --clear-fallback-value","resend contact-properties delete b4a3c2d1-6e5f-8a7b-0c9d-2e1f4a3b6c5d --yes"]})).addCommand(Tl).addCommand(Pl).addCommand($l,{isDefault:!0}).addCommand(Gl).addCommand(jl);function hi(e){let t=e.map(o=>[o.email,o.first_name??"",o.last_name??"",o.unsubscribed?"yes":"no",o.id]);return _(["Email","First Name","Last Name","Unsubscribed","ID"],t,"(no contacts)")}function Ql(e){let t=e.map(o=>[o.name,o.subscription,o.id,o.description??""]);return _(["Name","Subscription","ID","Description"],t,"(no topic subscriptions)")}var be={resource:"contact",resourcePlural:"contacts",fetchItems:(e,{limit:t,after:o})=>e.contacts.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function Wt(e){return e.includes("@")?{email:e}:{id:e}}function Jt(e){return e.includes("@")?{email:e}:{contactId:e}}function Ai(e,t){let o;try{o=JSON.parse(e)}catch{g({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json})}return Array.isArray(o)||g({message:"Invalid --topics JSON. Expected an array of {id, subscription} objects.",code:"invalid_topics"},{json:t.json}),o}function bi(e,t){if(e)try{return JSON.parse(e)}catch{g({message:"Invalid --properties JSON.",code:"invalid_properties"},{json:t.json})}}var Nl=new u("add-segment").description("Add a contact to a segment").argument("[contactId]","Contact UUID or email address").option("--segment-id <id>","Segment ID to add the contact to (required)").addHelpText("after",p({context:`The <contactId> argument accepts either a UUID or an email address.
504
506
 
505
- Non-interactive: --segment-id is required.`,output:' {"id":"<segment-membership-id>"}',errorCodes:["auth_error","missing_segment_id","add_segment_error"],examples:["resend contacts add-segment e169aa45-1ecf-4183-9955-b1499d5701d3 --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=await C(t.segmentId,Ee,i),s={...Jt(r),segmentId:n};await B({loading:"Adding contact to segment...",sdkCall:a=>a.contacts.segments.add(s),errorCode:"add_segment_error",successMsg:`Contact added to segment: ${n}`},i)});V();var Nl=new u("create").description("Create a new contact").option("--email <email>","Contact email address (required)").option("--first-name <name>","First name").option("--last-name <name>","Last name").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--properties <json>",`Custom properties as a JSON string (e.g. '{"company":"Acme"}')`).option("--segment-id <id...>","Segment ID to add the contact to on creation (repeatable: --segment-id abc --segment-id def)").addHelpText("after",p({context:`Non-interactive: --email is required. All other flags are optional.
507
+ Non-interactive: --segment-id is required.`,output:' {"id":"<segment-membership-id>"}',errorCodes:["auth_error","missing_segment_id","add_segment_error"],examples:["resend contacts add-segment e169aa45-1ecf-4183-9955-b1499d5701d3 --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=await C(t.segmentId,Ee,i),s={...Jt(r),segmentId:n};await B({loading:"Adding contact to segment...",sdkCall:a=>a.contacts.segments.add(s),errorCode:"add_segment_error",successMsg:`Contact added to segment: ${n}`},i)});V();var Ml=new u("create").description("Create a new contact").option("--email <email>","Contact email address (required)").option("--first-name <name>","First name").option("--last-name <name>","Last name").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--properties <json>",`Custom properties as a JSON string (e.g. '{"company":"Acme"}')`).option("--segment-id <id...>","Segment ID to add the contact to on creation (repeatable: --segment-id abc --segment-id def)").addHelpText("after",p({context:`Non-interactive: --email is required. All other flags are optional.
506
508
 
507
509
  Properties: pass a JSON object string to --properties (e.g. '{"plan":"pro","company":"Acme"}').
508
510
  Properties are stored as custom contact attributes. To clear a property, set it to null.
@@ -510,11 +512,11 @@ Properties: pass a JSON object string to --properties (e.g. '{"plan":"pro","comp
510
512
 
511
513
  Segments: use --segment-id once per segment to add the contact to one or more segments on creation.
512
514
 
513
- Unsubscribed: setting --unsubscribed is a team-wide opt-out from all broadcasts, regardless of segments/topics.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","missing_email","invalid_properties","create_error"],examples:["resend contacts create --email steve.wozniak@gmail.com","resend contacts create --email steve.wozniak@gmail.com --first-name Steve --last-name Wozniak",`resend contacts create --email steve.wozniak@gmail.com --properties '{"company":"Acme","plan":"pro"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.email,{message:"Email address",placeholder:"steve.wozniak@gmail.com"},{message:"Missing --email flag.",code:"missing_email"},o),r=e.firstName,n=e.lastName;if(U()&&!o.json&&!e.firstName){let l=await z({message:"First name (optional)"});k(l)&&R("Cancelled."),l&&(r=l)}if(U()&&!o.json&&!e.lastName){let l=await z({message:"Last name (optional)"});k(l)&&R("Cancelled."),l&&(n=l)}let s=bi(e.properties,o),a=e.segmentId??[];await M({loading:"Creating contact...",sdkCall:l=>l.contacts.create({email:i,...r&&{firstName:r},...n&&{lastName:n},...e.unsubscribed&&{unsubscribed:!0},...s&&{properties:s},...a.length>0&&{segments:a.map(d=>({id:d}))}}),onInteractive:l=>{console.log(`Contact created: ${l.id}`)}},o)});var Ml=new u("delete").alias("rm").description("Delete a contact").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
515
+ Unsubscribed: setting --unsubscribed is a team-wide opt-out from all broadcasts, regardless of segments/topics.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","missing_email","invalid_properties","create_error"],examples:["resend contacts create --email steve.wozniak@gmail.com","resend contacts create --email steve.wozniak@gmail.com --first-name Steve --last-name Wozniak",`resend contacts create --email steve.wozniak@gmail.com --properties '{"company":"Acme","plan":"pro"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.email,{message:"Email address",placeholder:"steve.wozniak@gmail.com"},{message:"Missing --email flag.",code:"missing_email"},o),r=e.firstName,n=e.lastName;if(U()&&!o.json&&!e.firstName){let l=await z({message:"First name (optional)"});k(l)&&R("Cancelled."),l&&(r=l)}if(U()&&!o.json&&!e.lastName){let l=await z({message:"Last name (optional)"});k(l)&&R("Cancelled."),l&&(n=l)}let s=bi(e.properties,o),a=e.segmentId??[];await M({loading:"Creating contact...",sdkCall:l=>l.contacts.create({email:i,...r&&{firstName:r},...n&&{lastName:n},...e.unsubscribed&&{unsubscribed:!0},...s&&{properties:s},...a.length>0&&{segments:a.map(d=>({id:d}))}}),onInteractive:l=>{console.log(`Contact created: ${l.id}`)}},o)});var ql=new u("delete").alias("rm").description("Delete a contact").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
514
516
 
515
517
  Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"contact","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend contacts delete 520784e2-887d-4c25-b53c-4ad46ad38100 --yes","resend contacts delete acme@example.com --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,be,i);await te(r.id,!!t.yes,{confirmMessage:`Delete contact "${r.label}"?
516
518
  ID: ${r.id}
517
- This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMsg:"Contact deleted",sdkCall:n=>n.contacts.remove(r.id)},i)});var ql=new u("get").description("Retrieve a contact by ID or email address").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").addHelpText("after",p({output:` {
519
+ This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMsg:"Contact deleted",sdkCall:n=>n.contacts.remove(r.id)},i)});var Ll=new u("get").description("Retrieve a contact by ID or email address").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").addHelpText("after",p({output:` {
518
520
  "object": "contact",
519
521
  "id": "e169aa45-1ecf-4183-9955-b1499d5701d3",
520
522
  "email": "steve.wozniak@gmail.com",
@@ -523,7 +525,7 @@ This cannot be undone.`,loading:"Deleting contact...",object:"contact",successMs
523
525
  "created_at": "2026-01-01 00:00:00+00",
524
526
  "unsubscribed": false,
525
527
  "properties": {}
526
- }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await Q({loading:"Fetching contact...",sdkCall:n=>n.contacts.get(r),onInteractive:n=>{let s=[n.first_name,n.last_name].filter(Boolean).join(" ");console.log(`${n.email}${s?` (${s})`:""}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`Unsubscribed: ${n.unsubscribed?"yes":"no"}`);let a=Object.entries(n.properties??{});if(a.length>0){console.log("Properties:");for(let[l,d]of a)console.log(` ${l}: ${d.value}`)}}},i)});var Vl=require("node:fs"),zl=require("node:path");function Ll(e){let t=e.map(o=>[o.status,String(o.counts.total),String(o.counts.created),String(o.counts.updated),String(o.counts.skipped),String(o.counts.failed),o.created_at,o.id]);return _(["Status","Total","Created","Updated","Skipped","Failed","Created At","ID"],t,"(no contact imports)")}var Wl={resource:"contact import",resourcePlural:"contact imports",fetchItems:(e,{limit:t,after:o})=>e.contacts.imports.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.status} - ${e.counts.total} contacts`,hint:e.id})};function Jl(e,t){if(!e)return;let o;try{o=JSON.parse(e)}catch{g({message:"Invalid --column-map JSON.",code:"invalid_column_map"},{json:t.json})}return(typeof o!="object"||o===null||Array.isArray(o))&&g({message:"Invalid --column-map JSON. Expected an object mapping contact fields to CSV column headers.",code:"invalid_column_map"},{json:t.json}),o}var Yl=new u("create").description("Import contacts in bulk from a local CSV file").option("--file <path>","Path to the CSV file to import (required)").option("--column-map <json>",`Map CSV columns to contact fields as a JSON object (e.g. '{"email":"Email","firstName":"First Name"}')`).addOption(new L("--on-conflict <strategy>","How to handle contacts that already exist").choices(["upsert","skip"])).option("--segment-id <id...>","Segment ID to add imported contacts to (repeatable: --segment-id abc --segment-id def)").option("--topics <json>","Topic subscriptions as a JSON array of {id, subscription} objects").addHelpText("after",p({context:`Non-interactive: --file is required. All other flags are optional.
528
+ }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await Q({loading:"Fetching contact...",sdkCall:n=>n.contacts.get(r),onInteractive:n=>{let s=[n.first_name,n.last_name].filter(Boolean).join(" ");console.log(`${n.email}${s?` (${s})`:""}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`Unsubscribed: ${n.unsubscribed?"yes":"no"}`);let a=Object.entries(n.properties??{});if(a.length>0){console.log("Properties:");for(let[l,d]of a)console.log(` ${l}: ${d.value}`)}}},i)});var zl=require("node:fs"),Yl=require("node:path");function Wl(e){let t=e.map(o=>[o.status,String(o.counts.total),String(o.counts.created),String(o.counts.updated),String(o.counts.skipped),String(o.counts.failed),o.created_at,o.id]);return _(["Status","Total","Created","Updated","Skipped","Failed","Created At","ID"],t,"(no contact imports)")}var Jl={resource:"contact import",resourcePlural:"contact imports",fetchItems:(e,{limit:t,after:o})=>e.contacts.imports.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.status} - ${e.counts.total} contacts`,hint:e.id})};function Vl(e,t){if(!e)return;let o;try{o=JSON.parse(e)}catch{g({message:"Invalid --column-map JSON.",code:"invalid_column_map"},{json:t.json})}return(typeof o!="object"||o===null||Array.isArray(o))&&g({message:"Invalid --column-map JSON. Expected an object mapping contact fields to CSV column headers.",code:"invalid_column_map"},{json:t.json}),o}var Xl=new u("create").description("Import contacts in bulk from a local CSV file").option("--file <path>","Path to the CSV file to import (required)").option("--column-map <json>",`Map CSV columns to contact fields as a JSON object (e.g. '{"email":"Email","firstName":"First Name"}')`).addOption(new L("--on-conflict <strategy>","How to handle contacts that already exist").choices(["upsert","skip"])).option("--segment-id <id...>","Segment ID to add imported contacts to (repeatable: --segment-id abc --segment-id def)").option("--topics <json>","Topic subscriptions as a JSON array of {id, subscription} objects").addHelpText("after",p({context:`Non-interactive: --file is required. All other flags are optional.
527
529
 
528
530
  The CSV file is uploaded as multipart form data (max 100MB).
529
531
 
@@ -539,32 +541,32 @@ On conflict: --on-conflict upsert (default) updates existing contacts; skip leav
539
541
 
540
542
  Segments: use --segment-id once per segment to add imported contacts to one or more segments.
541
543
 
542
- Topics: pass a JSON array of {id, subscription} objects (subscription is "opt_in" or "opt_out").`,output:' {"object":"contact_import","id":"<id>"}',errorCodes:["auth_error","missing_file","file_read_error","invalid_column_map","invalid_topics","create_error"],examples:["resend contacts imports create --file ./contacts.csv",`resend contacts imports create --file ./contacts.csv --column-map '{"email":"Email","firstName":"First Name"}'`,"resend contacts imports create --file ./contacts.csv --on-conflict skip --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.file,{message:"Path to the CSV file",placeholder:"./contacts.csv"},{message:"Missing --file flag.",code:"missing_file"},o),r;try{r=(0,Vl.readFileSync)(i)}catch{g({message:`Failed to read file: ${i}`,code:"file_read_error"},{json:o.json})}let n=new File([new Uint8Array(r)],(0,zl.basename)(i),{type:"text/csv"}),s=Jl(e.columnMap,o),a=(e.segmentId??[]).map(d=>({id:d})),l=e.topics!==void 0?Ai(e.topics,o):void 0;await M({loading:"Starting contact import...",sdkCall:d=>d.contacts.imports.create({file:n,...s&&{columnMap:s},...e.onConflict&&{onConflict:e.onConflict},...a.length>0&&{segments:a},...l&&{topics:l}}),onInteractive:d=>{console.log(`Contact import started: ${d.id}`)}},o)});var Xl=new u("get").description("Retrieve a contact import by ID").argument("[id]","Contact import ID").addHelpText("after",p({output:` {
544
+ Topics: pass a JSON array of {id, subscription} objects (subscription is "opt_in" or "opt_out").`,output:' {"object":"contact_import","id":"<id>"}',errorCodes:["auth_error","missing_file","file_read_error","invalid_column_map","invalid_topics","create_error"],examples:["resend contacts imports create --file ./contacts.csv",`resend contacts imports create --file ./contacts.csv --column-map '{"email":"Email","firstName":"First Name"}'`,"resend contacts imports create --file ./contacts.csv --on-conflict skip --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.file,{message:"Path to the CSV file",placeholder:"./contacts.csv"},{message:"Missing --file flag.",code:"missing_file"},o),r;try{r=(0,zl.readFileSync)(i)}catch{g({message:`Failed to read file: ${i}`,code:"file_read_error"},{json:o.json})}let n=new File([new Uint8Array(r)],(0,Yl.basename)(i),{type:"text/csv"}),s=Vl(e.columnMap,o),a=(e.segmentId??[]).map(d=>({id:d})),l=e.topics!==void 0?Ai(e.topics,o):void 0;await M({loading:"Starting contact import...",sdkCall:d=>d.contacts.imports.create({file:n,...s&&{columnMap:s},...e.onConflict&&{onConflict:e.onConflict},...a.length>0&&{segments:a},...l&&{topics:l}}),onInteractive:d=>{console.log(`Contact import started: ${d.id}`)}},o)});var Zl=new u("get").description("Retrieve a contact import by ID").argument("[id]","Contact import ID").addHelpText("after",p({output:` {
543
545
  "object": "contact_import",
544
546
  "id": "479e3145-dd38-476b-932c-529ceb705947",
545
547
  "status": "completed",
546
548
  "created_at": "2026-05-15 18:32:37.823+00",
547
549
  "completed_at": "2026-05-15 18:33:42.916+00",
548
550
  "counts": {"total":1200,"created":800,"updated":300,"skipped":75,"failed":25}
549
- }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Wl,i);await Q({loading:"Fetching contact import...",sdkCall:n=>n.contacts.imports.get(r),onInteractive:n=>{console.log(`${n.id} - ${n.status}`),console.log(`Created: ${n.created_at}`),n.completed_at&&console.log(`Completed: ${n.completed_at}`);let s=n.counts;console.log(`Counts: ${s.total} total, ${s.created} created, ${s.updated} updated, ${s.skipped} skipped, ${s.failed} failed`)}},i)});var Zl=new u("list").alias("ls").description("List contact imports").option("--limit <n>","Maximum number of contact imports to return (1-100)","10").option("--after <cursor>","Return imports after this cursor (next page)").option("--before <cursor>","Return imports before this cursor (previous page)").addOption(new L("--status <status>","Filter by import status").choices(["queued","in_progress","completed","failed"])).addHelpText("after",p({context:`Pagination: use --after or --before with a contact import ID as the cursor.
551
+ }`,errorCodes:["auth_error","fetch_error"],examples:["resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Jl,i);await Q({loading:"Fetching contact import...",sdkCall:n=>n.contacts.imports.get(r),onInteractive:n=>{console.log(`${n.id} - ${n.status}`),console.log(`Created: ${n.created_at}`),n.completed_at&&console.log(`Completed: ${n.completed_at}`);let s=n.counts;console.log(`Counts: ${s.total} total, ${s.created} created, ${s.updated} updated, ${s.skipped} skipped, ${s.failed} failed`)}},i)});var ec=new u("list").alias("ls").description("List contact imports").option("--limit <n>","Maximum number of contact imports to return (1-100)","10").option("--after <cursor>","Return imports after this cursor (next page)").option("--before <cursor>","Return imports before this cursor (previous page)").addOption(new L("--status <status>","Filter by import status").choices(["queued","in_progress","completed","failed"])).addHelpText("after",p({context:`Pagination: use --after or --before with a contact import ID as the cursor.
550
552
  Only one of --after or --before may be used at a time.
551
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"object":"contact_import","id":"...","status":"completed","counts":{"total":1200,"created":800,"updated":300,"skipped":75,"failed":25}}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts imports list","resend contacts imports list --status completed --json","resend contacts imports list --after 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching contact imports...",sdkCall:n=>n.contacts.imports.list({...r,...e.status&&{status:e.status}}),onInteractive:n=>{console.log(Ll(n.data)),T(n,"contacts imports list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ec=new u("imports").description("Import contacts in bulk from a CSV file").addHelpText("after",p({context:`Import lifecycle:
553
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"object":"contact_import","id":"...","status":"completed","counts":{"total":1200,"created":800,"updated":300,"skipped":75,"failed":25}}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts imports list","resend contacts imports list --status completed --json","resend contacts imports list --after 479e3145-dd38-476b-932c-529ceb705947 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching contact imports...",sdkCall:n=>n.contacts.imports.list({...r,...e.status&&{status:e.status}}),onInteractive:n=>{console.log(Wl(n.data)),T(n,"contacts imports list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var tc=new u("imports").description("Import contacts in bulk from a CSV file").addHelpText("after",p({context:`Import lifecycle:
552
554
  1. resend contacts imports create --file ./contacts.csv (returns the import id)
553
555
  2. resend contacts imports get <id> (poll until "completed")
554
556
  3. resend contacts imports list (review past imports)
555
557
 
556
558
  Imports run asynchronously. The create command returns immediately with an id while
557
- the file is processed in the background.`,examples:["resend contacts imports create --file ./contacts.csv","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports list --status completed"]})).addCommand(Yl).addCommand(Xl).addCommand(Zl,{isDefault:!0});var tc=new u("list").alias("ls").description("List all contacts").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",p({context:`Contacts are global \u2014 they are not scoped to audiences or segments since the 2025 migration.
559
+ the file is processed in the background.`,examples:["resend contacts imports create --file ./contacts.csv","resend contacts imports get 479e3145-dd38-476b-932c-529ceb705947","resend contacts imports list --status completed"]})).addCommand(Xl).addCommand(Zl).addCommand(ec,{isDefault:!0});var oc=new u("list").alias("ls").description("List all contacts").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",p({context:`Contacts are global \u2014 they are not scoped to audiences or segments since the 2025 migration.
558
560
 
559
561
  Pagination: use --after or --before with a contact ID as the cursor.
560
562
  Only one of --after or --before may be used at a time.
561
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts list","resend contacts list --limit 25 --json","resend contacts list --after 479e3145-dd38-4932-8c0c-e58b548c9e76 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching contacts...",sdkCall:n=>n.contacts.list(r),onInteractive:n=>{console.log(hi(n.data)),T(n,"contacts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var oc=new u("remove-segment").description("Remove a contact from a segment").argument("[contactId]","Contact UUID or email address").argument("[segmentId]","Segment ID to remove the contact from").addHelpText("after",p({context:`The <contactId> argument accepts either a UUID or an email address.
562
- The <segmentId> argument must be a segment UUID (not an email).`,output:' {"id":"<segment-id>","deleted":true}',errorCodes:["auth_error","remove_segment_error"],examples:["resend contacts remove-segment e169aa45-1ecf-4183-9955-b1499d5701d3 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,be,r),s=await C(t,Ee,r),a={...Jt(n),segmentId:s};await B({loading:"Removing contact from segment...",sdkCall:l=>l.contacts.segments.remove(a),errorCode:"remove_segment_error",successMsg:`Contact removed from segment: ${s}`},r)});var ic=new u("segments").description("List the segments a contact belongs to").argument("[id]","Contact UUID or email address").addHelpText("after",p({context:"The <id> argument accepts either a UUID or an email address.",output:' {"object":"list","data":[{"id":"<segment-uuid>","name":"Newsletter Subscribers","created_at":"..."}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts segments steve.wozniak@gmail.com","resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await F({loading:"Fetching segments...",sdkCall:n=>n.contacts.segments.list(Jt(r)),onInteractive:n=>console.log(pi(n.data))},i)});var rc=new u("topics").description("List a contact's topic subscriptions").argument("[id]","Contact UUID or email address").addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
563
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend contacts list","resend contacts list --limit 25 --json","resend contacts list --after 479e3145-dd38-4932-8c0c-e58b548c9e76 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching contacts...",sdkCall:n=>n.contacts.list(r),onInteractive:n=>{console.log(hi(n.data)),T(n,"contacts list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ic=new u("remove-segment").description("Remove a contact from a segment").argument("[contactId]","Contact UUID or email address").argument("[segmentId]","Segment ID to remove the contact from").addHelpText("after",p({context:`The <contactId> argument accepts either a UUID or an email address.
564
+ The <segmentId> argument must be a segment UUID (not an email).`,output:' {"id":"<segment-id>","deleted":true}',errorCodes:["auth_error","remove_segment_error"],examples:["resend contacts remove-segment e169aa45-1ecf-4183-9955-b1499d5701d3 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,be,r),s=await C(t,Ee,r),a={...Jt(n),segmentId:s};await B({loading:"Removing contact from segment...",sdkCall:l=>l.contacts.segments.remove(a),errorCode:"remove_segment_error",successMsg:`Contact removed from segment: ${s}`},r)});var rc=new u("segments").description("List the segments a contact belongs to").argument("[id]","Contact UUID or email address").addHelpText("after",p({context:"The <id> argument accepts either a UUID or an email address.",output:' {"object":"list","data":[{"id":"<segment-uuid>","name":"Newsletter Subscribers","created_at":"..."}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts segments steve.wozniak@gmail.com","resend contacts segments e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await F({loading:"Fetching segments...",sdkCall:n=>n.contacts.segments.list(Jt(r)),onInteractive:n=>console.log(pi(n.data))},i)});var nc=new u("topics").description("List a contact's topic subscriptions").argument("[id]","Contact UUID or email address").addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
563
565
 
564
566
  Topics control which broadcast email types a contact receives.
565
567
  subscription values: "opt_in" (receiving) | "opt_out" (not receiving)
566
568
 
567
- Use "resend contacts update-topics <id>" to change subscription statuses.`,output:' {"object":"list","data":[{"id":"...","name":"Product Updates","description":"...","subscription":"opt_in"}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts topics steve.wozniak@gmail.com","resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await F({loading:"Fetching topic subscriptions...",sdkCall:n=>n.contacts.topics.list(Wt(r)),onInteractive:n=>console.log(Hl(n.data))},i)});var nc=new u("update").description("Update a contact's subscription status or custom properties").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--no-unsubscribed","Re-subscribe the contact (clears the global unsubscribe flag)").option("--properties <json>",`JSON object of properties to merge (e.g. '{"company":"Acme"}'); set a key to null to clear it`).addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
569
+ Use "resend contacts update-topics <id>" to change subscription statuses.`,output:' {"object":"list","data":[{"id":"...","name":"Product Updates","description":"...","subscription":"opt_in"}],"has_more":false}',errorCodes:["auth_error","list_error"],examples:["resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts topics steve.wozniak@gmail.com","resend contacts topics e169aa45-1ecf-4183-9955-b1499d5701d3 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i);await F({loading:"Fetching topic subscriptions...",sdkCall:n=>n.contacts.topics.list(Wt(r)),onInteractive:n=>console.log(Ql(n.data))},i)});var sc=new u("update").description("Update a contact's subscription status or custom properties").argument("[id]","Contact UUID or email address \u2014 both are accepted by the API").option("--unsubscribed","Globally unsubscribe the contact from all broadcasts").option("--no-unsubscribed","Re-subscribe the contact (clears the global unsubscribe flag)").option("--properties <json>",`JSON object of properties to merge (e.g. '{"company":"Acme"}'); set a key to null to clear it`).addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
568
570
 
569
571
  Subscription toggle:
570
572
  --unsubscribed Sets unsubscribed: true \u2014 contact will not receive any broadcasts.
@@ -572,7 +574,7 @@ Subscription toggle:
572
574
  Omitting both flags leaves the subscription status unchanged.
573
575
 
574
576
  Properties: --properties merges the given JSON object with existing properties.
575
- Set a key to null to clear it: '{"company":null}'.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","invalid_properties","update_error"],examples:["resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --unsubscribed","resend contacts update acme@example.com --no-unsubscribed",`resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --properties '{"plan":"pro"}'`,"resend contacts update acme@example.com --unsubscribed --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=bi(t.properties,i),s={...Wt(r),...t.unsubscribed!==void 0&&{unsubscribed:t.unsubscribed},...n&&{properties:n}};await B({loading:"Updating contact...",sdkCall:a=>a.contacts.update(s),errorCode:"update_error",successMsg:`Contact updated: ${r}`},i)});V();var sc=new u("update-topics").description("Update a contact's topic subscription statuses").argument("[id]","Contact UUID or email address").option("--topics <json>",`JSON array of topic subscriptions (required) \u2014 e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]'`).addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
577
+ Set a key to null to clear it: '{"company":null}'.`,output:' {"object":"contact","id":"<id>"}',errorCodes:["auth_error","invalid_properties","update_error"],examples:["resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --unsubscribed","resend contacts update acme@example.com --no-unsubscribed",`resend contacts update e169aa45-1ecf-4183-9955-b1499d5701d3 --properties '{"plan":"pro"}'`,"resend contacts update acme@example.com --unsubscribed --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=bi(t.properties,i),s={...Wt(r),...t.unsubscribed!==void 0&&{unsubscribed:t.unsubscribed},...n&&{properties:n}};await B({loading:"Updating contact...",sdkCall:a=>a.contacts.update(s),errorCode:"update_error",successMsg:`Contact updated: ${r}`},i)});V();var ac=new u("update-topics").description("Update a contact's topic subscription statuses").argument("[id]","Contact UUID or email address").option("--topics <json>",`JSON array of topic subscriptions (required) \u2014 e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]'`).addHelpText("after",p({context:`The <id> argument accepts either a UUID or an email address.
576
578
 
577
579
  Non-interactive: --topics is required.
578
580
 
@@ -581,7 +583,7 @@ Topics JSON format:
581
583
  subscription values: "opt_in" | "opt_out"
582
584
 
583
585
  This operation replaces all topic subscriptions for the specified topics.
584
- Topics not included in the array are left unchanged.`,output:' {"id":"<contact-id>"}',errorCodes:["auth_error","missing_topics","invalid_topics","update_topics_error"],examples:[`resend contacts update-topics e169aa45-1ecf-4183-9955-b1499d5701d3 --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_out"},{"id":"07d84122-7224-4881-9c31-1c048e204602","subscription":"opt_in"}]' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=await Y(i),s=t.topics;if(!s){(!U()||i.json)&&g({message:"Missing --topics flag.",code:"missing_topics"},{json:i.json});let d=await z({message:`Topics JSON (e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]')`,placeholder:'[{"id":"topic-uuid","subscription":"opt_in"}]',validate:c=>c?void 0:"Required"});k(d)&&R("Cancelled."),s=d}let a=Ai(s,i),l=await ae("Updating topic subscriptions...",()=>n.contacts.topics.update({...Wt(r),topics:a}),"update_topics_error",i);!i.json&&U()?console.log(`Topic subscriptions updated for contact: ${r}`):H(l,{json:i.json})});var ac=new u("contacts").description("Manage contacts").addHelpText("after",p({context:`Contacts are global entities (not audience-scoped since the 2025 migration).
586
+ Topics not included in the array are left unchanged.`,output:' {"id":"<contact-id>"}',errorCodes:["auth_error","missing_topics","invalid_topics","update_topics_error"],examples:[`resend contacts update-topics e169aa45-1ecf-4183-9955-b1499d5701d3 --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_out"},{"id":"07d84122-7224-4881-9c31-1c048e204602","subscription":"opt_in"}]' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,be,i),n=await Y(i),s=t.topics;if(!s){(!U()||i.json)&&g({message:"Missing --topics flag.",code:"missing_topics"},{json:i.json});let d=await z({message:`Topics JSON (e.g. '[{"id":"topic-uuid","subscription":"opt_in"}]')`,placeholder:'[{"id":"topic-uuid","subscription":"opt_in"}]',validate:c=>c?void 0:"Required"});k(d)&&R("Cancelled."),s=d}let a=Ai(s,i),l=await ae("Updating topic subscriptions...",()=>n.contacts.topics.update({...Wt(r),topics:a}),"update_topics_error",i);!i.json&&U()?console.log(`Topic subscriptions updated for contact: ${r}`):H(l,{json:i.json})});var lc=new u("contacts").description("Manage contacts").addHelpText("after",p({context:`Contacts are global entities (not audience-scoped since the 2025 migration).
585
587
  Each contact is identified by a UUID or email address \u2014 both are accepted in all subcommands.
586
588
 
587
589
  Properties:
@@ -598,7 +600,7 @@ Segments:
598
600
  Manage membership with "resend contacts add-segment" and "resend contacts remove-segment".
599
601
 
600
602
  Imports:
601
- Bulk-import contacts from a CSV file with "resend contacts imports create --file <path>".`,examples:["resend contacts list","resend contacts create --email steve.wozniak@gmail.com --first-name Steve","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts update acme@example.com --unsubscribed","resend contacts delete e169aa45-1ecf-4183-9955-b1499d5701d3 --yes","resend contacts segments steve.wozniak@gmail.com","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts topics steve.wozniak@gmail.com",`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,"resend contacts imports create --file ./contacts.csv"]})).addCommand(Nl).addCommand(ql).addCommand(tc,{isDefault:!0}).addCommand(nc).addCommand(Ml).addCommand(ic).addCommand(Ql).addCommand(oc).addCommand(rc).addCommand(sc).addCommand(ec);var lc=new u("docs").description("Open the Resend documentation in your browser").addHelpText("after",p({context:"Opens https://resend.com/docs in your default browser.",examples:["resend docs"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.documentation,o)});Ae();br();zo();V();wo();St();var Ir="TimeoutError",fc=(e,t)=>{let o,i=new Promise((r,n)=>{o=setTimeout(()=>{let s=new Error(`Operation timed out after ${t}ms`);s.name=Ir,n(s)},t)});return Promise.race([e,i]).finally(()=>{clearTimeout(o)})};var ng=5e3;function sg(e){return e instanceof Error&&e.name===Sr}async function ag(){try{let e=await fetch(Or,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`};let t=await e.json();if(t.prerelease||t.draft)return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`};let o=t.tag_name?.replace(/^v/,"")??"unknown";return o===ne?{name:"CLI Version",status:"pass",message:`v${ne} (latest)`}:{name:"CLI Version",status:"warn",message:`v${ne} (latest: v${o})`,detail:"Update available"}}catch{return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`}}}async function lg(e){let t;try{t=await kt(e,void 0,{refresh:!1})}catch(n){return{name:"API Key",status:"fail",message:q(n,"Authentication failed"),detail:"Run: resend login"}}if(!t)return{name:"API Key",status:"fail",message:"No API key found",detail:"Run: resend login"};let o=t.type==="api_key"?t.key:t.access_token,i=t.profile?`, profile: ${t.profile}`:"",r=t.type==="oauth_grant"?`${t.source} (oauth)`:t.source;return{name:"API Key",status:"pass",message:`${gt(o)} (source: ${r}${i})`}}async function cg(e){let t;try{t=await kt(e)}catch(r){let n=sg(r);return{name:"API Validation",status:n?"warn":"fail",message:q(r,"Authentication failed"),...n?{}:{detail:"Run: resend login"}}}if(!t)return{name:"API Validation",status:"fail",message:"Skipped \u2014 no API key"};let o=t.type==="api_key"?t.key:t.access_token,i=t.type==="api_key"?"API key":"credential";try{let r=new jt(o),{data:n,error:s}=await fc(r.domains.list(),ng);if(s){let c=s;return c.name==="restricted_api_key"?{name:"API Validation",status:"warn",message:`Sending-only ${i}`,detail:$t}:c.name==="application_error"?{name:"API Validation",status:"warn",message:"Network error. Check your connection and try again"}:{name:"API Validation",status:"fail",message:`Invalid ${i}: ${s.message}`}}let a=n?.data??[],l=a.filter(c=>c.status==="verified"),d=a.filter(c=>c.status!=="verified");return a.length===0?{name:"Domains",status:"warn",message:"No domains configured",detail:"Add a domain at https://resend.com/domains"}:l.length===0?{name:"Domains",status:"warn",message:`${d.length} domain(s) pending verification`,detail:a.map(c=>`${c.name} (${c.status})`).join(", ")}:{name:"Domains",status:"pass",message:`${l.length} verified, ${d.length} pending`,detail:a.map(c=>`${c.name} (${c.status})`).join(", ")}}catch(r){return r instanceof Error&&r.name===Ir?{name:"API Validation",status:"warn",message:"Request timed out"}:{name:"API Validation",status:"fail",message:q(r,`Failed to validate ${i}`)}}}var gc=new u("doctor").description("Check CLI version, API key, and domain status").addHelpText("after",p({setup:!0,context:`Checks performed:
603
+ Bulk-import contacts from a CSV file with "resend contacts imports create --file <path>".`,examples:["resend contacts list","resend contacts create --email steve.wozniak@gmail.com --first-name Steve","resend contacts get e169aa45-1ecf-4183-9955-b1499d5701d3","resend contacts get steve.wozniak@gmail.com","resend contacts update acme@example.com --unsubscribed","resend contacts delete e169aa45-1ecf-4183-9955-b1499d5701d3 --yes","resend contacts segments steve.wozniak@gmail.com","resend contacts add-segment steve.wozniak@gmail.com --segment-id 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts remove-segment steve.wozniak@gmail.com 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend contacts topics steve.wozniak@gmail.com",`resend contacts update-topics steve.wozniak@gmail.com --topics '[{"id":"b6d24b8e-af0b-4c3c-be0c-359bbd97381e","subscription":"opt_in"}]'`,"resend contacts imports create --file ./contacts.csv"]})).addCommand(Ml).addCommand(Ll).addCommand(oc,{isDefault:!0}).addCommand(sc).addCommand(ql).addCommand(rc).addCommand(Nl).addCommand(ic).addCommand(nc).addCommand(ac).addCommand(tc);var cc=new u("docs").description("Open the Resend documentation in your browser").addHelpText("after",p({context:"Opens https://resend.com/docs in your default browser.",examples:["resend docs"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.documentation,o)});Ae();br();zo();V();wo();St();var Ir="TimeoutError",gc=(e,t)=>{let o,i=new Promise((r,n)=>{o=setTimeout(()=>{let s=new Error(`Operation timed out after ${t}ms`);s.name=Ir,n(s)},t)});return Promise.race([e,i]).finally(()=>{clearTimeout(o)})};var sg=5e3;function ag(e){return e instanceof Error&&e.name===Sr}async function lg(){try{let e=await fetch(Or,{headers:{Accept:"application/vnd.github.v3+json"},signal:AbortSignal.timeout(5e3)});if(!e.ok)return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`};let t=await e.json();if(t.prerelease||t.draft)return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`};let o=t.tag_name?.replace(/^v/,"")??"unknown";return o===ne?{name:"CLI Version",status:"pass",message:`v${ne} (latest)`}:{name:"CLI Version",status:"warn",message:`v${ne} (latest: v${o})`,detail:"Update available"}}catch{return{name:"CLI Version",status:"warn",message:`v${ne} (could not check for updates)`}}}async function cg(e){let t;try{t=await kt(e,void 0,{refresh:!1})}catch(n){return{name:"API Key",status:"fail",message:q(n,"Authentication failed"),detail:"Run: resend login"}}if(!t)return{name:"API Key",status:"fail",message:"No API key found",detail:"Run: resend login"};let o=t.type==="api_key"?t.key:t.access_token,i=t.profile?`, profile: ${t.profile}`:"",r=t.type==="oauth_grant"?`${t.source} (oauth)`:t.source;return{name:"API Key",status:"pass",message:`${gt(o)} (source: ${r}${i})`}}async function dg(e){let t;try{t=await kt(e)}catch(r){let n=ag(r);return{name:"API Validation",status:n?"warn":"fail",message:q(r,"Authentication failed"),...n?{}:{detail:"Run: resend login"}}}if(!t)return{name:"API Validation",status:"fail",message:"Skipped \u2014 no API key"};let o=t.type==="api_key"?t.key:t.access_token,i=t.type==="api_key"?"API key":"credential";try{let r=new jt(o),{data:n,error:s}=await gc(r.domains.list(),sg);if(s){let c=s;return c.name==="restricted_api_key"?{name:"API Validation",status:"warn",message:`Sending-only ${i}`,detail:$t}:c.name==="application_error"?{name:"API Validation",status:"warn",message:"Network error. Check your connection and try again"}:{name:"API Validation",status:"fail",message:`Invalid ${i}: ${s.message}`}}let a=n?.data??[],l=a.filter(c=>c.status==="verified"),d=a.filter(c=>c.status!=="verified");return a.length===0?{name:"Domains",status:"warn",message:"No domains configured",detail:"Add a domain at https://resend.com/domains"}:l.length===0?{name:"Domains",status:"warn",message:`${d.length} domain(s) pending verification`,detail:a.map(c=>`${c.name} (${c.status})`).join(", ")}:{name:"Domains",status:"pass",message:`${l.length} verified, ${d.length} pending`,detail:a.map(c=>`${c.name} (${c.status})`).join(", ")}}catch(r){return r instanceof Error&&r.name===Ir?{name:"API Validation",status:"warn",message:"Request timed out"}:{name:"API Validation",status:"fail",message:q(r,`Failed to validate ${i}`)}}}var hc=new u("doctor").description("Check CLI version, API key, and domain status").addHelpText("after",p({setup:!0,context:`Checks performed:
602
604
  CLI Version Is the installed version up to date?
603
605
  API Key Is a key present (--api-key, RESEND_API_KEY, or credentials file)?
604
606
  Credential Storage Which backend is storing credentials (secure storage vs plaintext file)?
@@ -613,37 +615,37 @@ Imports:
613
615
  status values: "pass" | "warn" | "fail"
614
616
  Exit code 1 if any check has status "fail"`,examples:["resend doctor","resend doctor --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=[],r=U()&&!o.json;r&&console.log(`
615
617
  Resend Doctor
616
- `);let n=r?se("Checking CLI version..."):null,s=await ag();i.push(s),s.status==="warn"?n?.warn(s.message):n?.stop(s.message),n=r?se("Checking API key..."):null;let a=await lg(o.apiKey);i.push(a),a.status==="fail"?n?.fail(a.message):n?.stop(a.message),n=r?se("Checking credential storage..."):null;let l=await ot(),d=ve(),c=l.isSecure,m={name:"Credential Storage",status:c?"pass":"warn",message:c?l.name:"plaintext file",...!c&&process.env.RESEND_CREDENTIAL_STORE!=="file"&&(d?.storage==="secure_storage"||process.env.RESEND_CREDENTIAL_STORE==="secure_storage")?{detail:"Secure backend unavailable despite secure storage preference \u2014 falling back to plaintext"}:{}};i.push(m),m.status==="warn"?n?.warn(m.message):n?.stop(m.message),n=r?se("Validating API key & domains..."):null;let f=await cg(o.apiKey);i.push(f),f.status==="fail"?n?.fail(f.message):f.status==="warn"?n?.warn(f.message):n?.stop(f.message);let b=i.some(h=>h.status==="fail");!o.json&&U()?console.log(""):H({ok:!b,checks:i},{json:o.json}),b&&process.exit(1)});var hc=new u("create").description("Start a claim for a domain another Resend account has verified").option("--name <domain>","Domain name to claim (e.g. example.com)").addOption(new L("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").addHelpText("after",p({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" domain_claim object with the placeholder domain_id and the TXT record to add to DNS.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains claim create --name example.com","resend domains claim create --name example.com --region eu-west-1","resend domains claim create --name example.com --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Domain name to claim",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Starting domain claim...",sdkCall:r=>r.domains.claims.create({name:i,...e.region&&{region:e.region},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...e.openTracking!==void 0&&{openTracking:e.openTracking},...e.clickTracking!==void 0&&{clickTracking:e.clickTracking},...e.trackingSubdomain!==void 0&&{trackingSubdomain:e.trackingSubdomain}}),onInteractive:r=>{console.log(`Claim started for ${r.name} (claim id: ${r.id}, domain id: ${r.domain_id})`),console.log(`Status: ${r.status}`),console.log(`
618
+ `);let n=r?se("Checking CLI version..."):null,s=await lg();i.push(s),s.status==="warn"?n?.warn(s.message):n?.stop(s.message),n=r?se("Checking API key..."):null;let a=await cg(o.apiKey);i.push(a),a.status==="fail"?n?.fail(a.message):n?.stop(a.message),n=r?se("Checking credential storage..."):null;let l=await ot(),d=ve(),c=l.isSecure,m={name:"Credential Storage",status:c?"pass":"warn",message:c?l.name:"plaintext file",...!c&&process.env.RESEND_CREDENTIAL_STORE!=="file"&&(d?.storage==="secure_storage"||process.env.RESEND_CREDENTIAL_STORE==="secure_storage")?{detail:"Secure backend unavailable despite secure storage preference \u2014 falling back to plaintext"}:{}};i.push(m),m.status==="warn"?n?.warn(m.message):n?.stop(m.message),n=r?se("Validating API key & domains..."):null;let f=await dg(o.apiKey);i.push(f),f.status==="fail"?n?.fail(f.message):f.status==="warn"?n?.warn(f.message):n?.stop(f.message);let b=i.some(h=>h.status==="fail");!o.json&&U()?console.log(""):H({ok:!b,checks:i},{json:o.json}),b&&process.exit(1)});var Ac=new u("create").description("Start a claim for a domain another Resend account has verified").option("--name <domain>","Domain name to claim (e.g. example.com)").addOption(new L("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").addHelpText("after",p({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" domain_claim object with the placeholder domain_id and the TXT record to add to DNS.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains claim create --name example.com","resend domains claim create --name example.com --region eu-west-1","resend domains claim create --name example.com --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Domain name to claim",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Starting domain claim...",sdkCall:r=>r.domains.claims.create({name:i,...e.region&&{region:e.region},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...e.openTracking!==void 0&&{openTracking:e.openTracking},...e.clickTracking!==void 0&&{clickTracking:e.clickTracking},...e.trackingSubdomain!==void 0&&{trackingSubdomain:e.trackingSubdomain}}),onInteractive:r=>{console.log(`Claim started for ${r.name} (claim id: ${r.id}, domain id: ${r.domain_id})`),console.log(`Status: ${r.status}`),console.log(`
617
619
  Add this TXT record at your DNS provider:`),console.log(` ${r.record.name} TXT ${r.record.value}`),console.log(`
618
- Then run \`resend domains claim verify ${r.domain_id}\`.`)}},o)});var Ac=new u("get").description("Retrieve the latest claim for a domain").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",p({output:` domain_claim object: status, domain_id, the TXT record, blocked_reason, expires_at.
620
+ Then run \`resend domains claim verify ${r.domain_id}\`.`)}},o)});var bc=new u("get").description("Retrieve the latest claim for a domain").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",p({output:` domain_claim object: status, domain_id, the TXT record, blocked_reason, expires_at.
619
621
 
620
622
  Claim status values: pending | verified | completed | blocked | expired | superseded | canceled | failed`,errorCodes:["auth_error","fetch_error","not_found"],examples:["resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await Q({loading:"Fetching domain claim...",sdkCall:n=>n.domains.claims.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${n.status}`),console.log(`Claim ID: ${n.id}`),console.log(`Domain ID: ${n.domain_id}`),n.blocked_reason&&console.log(`Blocked: ${n.blocked_reason}`),console.log(`Expires: ${n.expires_at}`),console.log(`
621
- TXT record:`),console.log(` ${n.record.name} TXT ${n.record.value}`)}},i)});var bc=new u("verify").description("Trigger DNS verification and transfer for a domain claim").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",p({output:" domain_claim object (status stays pending while verification runs async).",errorCodes:["auth_error","verify_error","not_found"],examples:["resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await B({loading:"Verifying domain claim...",sdkCall:n=>n.domains.claims.verify(r),errorCode:"verify_error",successMsg:`Domain claim verification started. Check status with resend domains claim get ${r}.`},i)});var yc=new u("claim").description("Claim a domain already verified by another Resend account").addHelpText("after",p({context:`Claim lifecycle:
623
+ TXT record:`),console.log(` ${n.record.name} TXT ${n.record.value}`)}},i)});var yc=new u("verify").description("Trigger DNS verification and transfer for a domain claim").argument("[id]","Domain ID (the placeholder domain created by the claim)").addHelpText("after",p({output:" domain_claim object (status stays pending while verification runs async).",errorCodes:["auth_error","verify_error","not_found"],examples:["resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await B({loading:"Verifying domain claim...",sdkCall:n=>n.domains.claims.verify(r),errorCode:"verify_error",successMsg:`Domain claim verification started. Check status with resend domains claim get ${r}.`},i)});var Cc=new u("claim").description("Claim a domain already verified by another Resend account").addHelpText("after",p({context:`Claim lifecycle:
622
624
  1. resend domains claim create --name example.com (returns the TXT record)
623
625
  2. Configure the TXT record at your DNS provider
624
626
  3. resend domains claim verify <domain-id> (trigger verification + transfer)
625
627
  4. resend domains claim get <domain-id> (poll until "completed")
626
628
  5. The transferred domain has NEW DKIM records \u2014 update DNS, then run:
627
- resend domains verify <domain-id>`,examples:["resend domains claim create --name example.com","resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).addCommand(hc).addCommand(Ac).addCommand(bc);var Cc=new u("create").description("Create a new domain and receive DNS records to configure").option("--name <domain>","Domain name (e.g. example.com)").addOption(new L("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).addOption(new L("--tls <mode>","TLS mode (default: opportunistic)").choices(["opportunistic","enforced"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--sending","Enable sending capability (default: enabled)").option("--receiving","Enable receiving capability (default: disabled)").addHelpText("after",p({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" Full domain object with DNS records array to configure in your DNS provider.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains create --name example.com","resend domains create --name example.com --region eu-west-1 --tls enforced","resend domains create --name example.com --tracking-subdomain track","resend domains create --name example.com --custom-return-path bounce","resend domains create --name example.com --receiving --json","resend domains create --name example.com --sending --receiving --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Domain name",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating domain...",sdkCall:r=>r.domains.create({name:i,...e.region&&{region:e.region},...e.tls&&{tls:e.tls},...e.trackingSubdomain&&{trackingSubdomain:e.trackingSubdomain},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...(e.sending||e.receiving)&&{capabilities:{...e.sending&&{sending:"enabled"},...e.receiving&&{receiving:"enabled"}}}}),onInteractive:r=>{console.log(`Domain created: ${r.name} (id: ${r.id})`),console.log(`
629
+ resend domains verify <domain-id>`,examples:["resend domains claim create --name example.com","resend domains claim get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains claim verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0"]})).addCommand(Ac).addCommand(bc).addCommand(yc);var wc=new u("create").description("Create a new domain and receive DNS records to configure").option("--name <domain>","Domain name (e.g. example.com)").addOption(new L("--region <region>","Sending region").choices(["us-east-1","eu-west-1","sa-east-1","ap-northeast-1"])).addOption(new L("--tls <mode>","TLS mode (default: opportunistic)").choices(["opportunistic","enforced"])).option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").option("--custom-return-path <subdomain>","Subdomain for the Return-Path address (e.g. bounce)").option("--sending","Enable sending capability (default: enabled)").option("--receiving","Enable receiving capability (default: disabled)").addHelpText("after",p({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY)",output:" Full domain object with DNS records array to configure in your DNS provider.",errorCodes:["auth_error","missing_name","create_error"],examples:["resend domains create --name example.com","resend domains create --name example.com --region eu-west-1 --tls enforced","resend domains create --name example.com --tracking-subdomain track","resend domains create --name example.com --custom-return-path bounce","resend domains create --name example.com --receiving --json","resend domains create --name example.com --sending --receiving --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Domain name",placeholder:"example.com"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating domain...",sdkCall:r=>r.domains.create({name:i,...e.region&&{region:e.region},...e.tls&&{tls:e.tls},...e.trackingSubdomain&&{trackingSubdomain:e.trackingSubdomain},...e.customReturnPath!==void 0&&{customReturnPath:e.customReturnPath},...(e.sending||e.receiving)&&{capabilities:{...e.sending&&{sending:"enabled"},...e.receiving&&{receiving:"enabled"}}}}),onInteractive:r=>{console.log(`Domain created: ${r.name} (id: ${r.id})`),console.log(`
628
630
  DNS Records to configure:`),console.log(ni(r.records,r.name)),console.log(`
629
- Run \`resend domains verify ${r.id}\` after configuring DNS.`)}},o)});var wc=new u("delete").alias("rm").description("Delete a domain").argument("[id]","Domain ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"domain","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes","resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,_e,i);await te(r.id,!!t.yes,{confirmMessage:`Delete domain "${r.label}"?
631
+ Run \`resend domains verify ${r.id}\` after configuring DNS.`)}},o)});var Uc=new u("delete").alias("rm").description("Delete a domain").argument("[id]","Domain ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"domain","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes","resend domains delete 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,_e,i);await te(r.id,!!t.yes,{confirmMessage:`Delete domain "${r.label}"?
630
632
  ID: ${r.id}
631
- This cannot be undone.`,loading:"Deleting domain...",object:"domain",successMsg:"Domain deleted",sdkCall:n=>n.domains.remove(r.id)},i)});var Uc=new u("get").description("Retrieve a domain with its DNS records and current verification status").argument("[id]","Domain ID").addHelpText("after",p({output:` Full domain object including records array and current status.
633
+ This cannot be undone.`,loading:"Deleting domain...",object:"domain",successMsg:"Domain deleted",sdkCall:n=>n.domains.remove(r.id)},i)});var Sc=new u("get").description("Retrieve a domain with its DNS records and current verification status").argument("[id]","Domain ID").addHelpText("after",p({output:` Full domain object including records array and current status.
632
634
 
633
635
  Domain status values: not_started | pending | verified | failed | partially_verified | partially_failed`,errorCodes:["auth_error","fetch_error"],examples:["resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await Q({loading:"Fetching domain...",sdkCall:n=>n.domains.get(r),onInteractive:n=>{console.log(`${n.name} \u2014 ${ua(n.status)}`),console.log(`ID: ${n.id}`),console.log(`Region: ${n.region}`),console.log(`Created: ${n.created_at}`),n.open_tracking!==void 0&&console.log(`Open tracking: ${n.open_tracking?"enabled":"disabled"}`),n.click_tracking!==void 0&&console.log(`Click tracking: ${n.click_tracking?"enabled":"disabled"}`),n.tracking_subdomain&&console.log(`Tracking subdomain: ${n.tracking_subdomain}`),n.records.length>0&&(console.log(`
634
- DNS Records:`),console.log(ni(n.records,n.name)))}},i)});var Sc=new u("list").alias("ls").description("List all domains").option("--limit <n>","Maximum number of domains to return (1-100)","10").option("--after <cursor>","Return domains after this cursor (next page)").option("--before <cursor>","Return domains before this cursor (previous page)").addHelpText("after",p({output:` {"object":"list","data":[...],"has_more":true}
635
- The list response does not include DNS records \u2014 use "resend domains get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend domains list","resend domains list --limit 25 --json","resend domains list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching domains...",sdkCall:n=>n.domains.list(r),onInteractive:n=>{console.log(da(n.data)),T(n,"domains list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var vc=new u("update").description("Update domain settings: TLS mode, tracking, and tracking subdomain").argument("[id]","Domain ID").addOption(new L("--tls <mode>","TLS mode").choices(["opportunistic","enforced"])).option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").addHelpText("after",p({output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend domains update <id> --tls enforced","resend domains update <id> --open-tracking --click-tracking","resend domains update <id> --tracking-subdomain track","resend domains update <id> --no-open-tracking --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i),{tls:n,openTracking:s,clickTracking:a,trackingSubdomain:l}=t;!n&&s===void 0&&a===void 0&&!l&&g({message:"Provide at least one option to update: --tls, --open-tracking, --click-tracking, or --tracking-subdomain.",code:"no_changes"},{json:i.json});let d={id:r};n&&(d.tls=n),s!==void 0&&(d.openTracking=s),a!==void 0&&(d.clickTracking=a),l&&(d.trackingSubdomain=l),await B({loading:"Updating domain...",sdkCall:c=>c.domains.update(d),errorCode:"update_error",successMsg:`Domain updated: ${r}`},i)});var Kc=new u("verify").description("Trigger async DNS verification for a domain").argument("[id]","Domain ID").addHelpText("after",p({context:`Verification is async \u2014 the domain enters "pending" status while DNS records are checked.
636
- Poll the status with: resend domains get <id>`,output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","verify_error"],examples:["resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await B({loading:"Verifying domain...",sdkCall:n=>n.domains.verify(r),errorCode:"verify_error",successMsg:`Domain verification started. Check status with resend domains get ${r}.`},i)});var xc=new u("domains").description("Manage verified sending and receiving domains").addHelpText("after",p({context:`Domain lifecycle:
636
+ DNS Records:`),console.log(ni(n.records,n.name)))}},i)});var vc=new u("list").alias("ls").description("List all domains").option("--limit <n>","Maximum number of domains to return (1-100)","10").option("--after <cursor>","Return domains after this cursor (next page)").option("--before <cursor>","Return domains before this cursor (previous page)").addHelpText("after",p({output:` {"object":"list","data":[...],"has_more":true}
637
+ The list response does not include DNS records \u2014 use "resend domains get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend domains list","resend domains list --limit 25 --json","resend domains list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching domains...",sdkCall:n=>n.domains.list(r),onInteractive:n=>{console.log(da(n.data)),T(n,"domains list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Kc=new u("update").description("Update domain settings: TLS mode, tracking, and tracking subdomain").argument("[id]","Domain ID").addOption(new L("--tls <mode>","TLS mode").choices(["opportunistic","enforced"])).option("--open-tracking","Enable open tracking").option("--no-open-tracking","Disable open tracking").option("--click-tracking","Enable click tracking").option("--no-click-tracking","Disable click tracking").option("--tracking-subdomain <subdomain>","Subdomain for click and open tracking (e.g. track)").addHelpText("after",p({output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend domains update <id> --tls enforced","resend domains update <id> --open-tracking --click-tracking","resend domains update <id> --tracking-subdomain track","resend domains update <id> --no-open-tracking --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i),{tls:n,openTracking:s,clickTracking:a,trackingSubdomain:l}=t;!n&&s===void 0&&a===void 0&&!l&&g({message:"Provide at least one option to update: --tls, --open-tracking, --click-tracking, or --tracking-subdomain.",code:"no_changes"},{json:i.json});let d={id:r};n&&(d.tls=n),s!==void 0&&(d.openTracking=s),a!==void 0&&(d.clickTracking=a),l&&(d.trackingSubdomain=l),await B({loading:"Updating domain...",sdkCall:c=>c.domains.update(d),errorCode:"update_error",successMsg:`Domain updated: ${r}`},i)});var xc=new u("verify").description("Trigger async DNS verification for a domain").argument("[id]","Domain ID").addHelpText("after",p({context:`Verification is async \u2014 the domain enters "pending" status while DNS records are checked.
638
+ Poll the status with: resend domains get <id>`,output:' {"object":"domain","id":"<id>"}',errorCodes:["auth_error","verify_error"],examples:["resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,_e,i);await B({loading:"Verifying domain...",sdkCall:n=>n.domains.verify(r),errorCode:"verify_error",successMsg:`Domain verification started. Check status with resend domains get ${r}.`},i)});var kc=new u("domains").description("Manage verified sending and receiving domains").addHelpText("after",p({context:`Domain lifecycle:
637
639
  1. resend domains create --name example.com (get DNS records)
638
640
  2. Configure DNS records at your DNS provider
639
641
  3. resend domains verify <id> (trigger verification)
640
- 4. resend domains get <id> (poll until "verified")`,examples:["resend domains list","resend domains create --name example.com --region us-east-1","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains update <id> --tls enforced --open-tracking","resend domains delete <id> --yes","resend domains claim create --name example.com"]})).addCommand(Cc).addCommand(Kc).addCommand(Uc).addCommand(Sc,{isDefault:!0}).addCommand(vc).addCommand(wc).addCommand(yc);var Ne={resource:"email",resourcePlural:"emails",fetchItems:(e,{limit:t,after:o})=>e.emails.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function kc(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function wi(e){let t=e.map(o=>[o.filename??"(unnamed)",o.content_type,String(o.size),o.id]);return _(["Filename","Content-Type","Size (bytes)","ID"],t,"(no attachments)")}var Fc=new u("attachment").description("Retrieve a single attachment from a sent (outbound) email").argument("[emailId]","Email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",p({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
641
- resend emails attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails attachment <email-id> <attachment-id>","resend emails attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,Ne,r),s=await C(t,kc(n),r);await Q({loading:"Fetching attachment...",sdkCall:a=>a.emails.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var Rc=new u("attachments").description("List attachments on a sent (outbound) email").argument("[emailId]","Email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",p({context:`Each attachment has a download_url (signed, expires ~1 hour).
642
+ 4. resend domains get <id> (poll until "verified")`,examples:["resend domains list","resend domains create --name example.com --region us-east-1","resend domains verify 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains get 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend domains update <id> --tls enforced --open-tracking","resend domains delete <id> --yes","resend domains claim create --name example.com"]})).addCommand(wc).addCommand(xc).addCommand(Sc).addCommand(vc,{isDefault:!0}).addCommand(Kc).addCommand(Uc).addCommand(Cc);var Me={resource:"email",resourcePlural:"emails",fetchItems:(e,{limit:t,after:o})=>e.emails.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function Fc(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function wi(e){let t=e.map(o=>[o.filename??"(unnamed)",o.content_type,String(o.size),o.id]);return _(["Filename","Content-Type","Size (bytes)","ID"],t,"(no attachments)")}var Rc=new u("attachment").description("Retrieve a single attachment from a sent (outbound) email").argument("[emailId]","Email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",p({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
643
+ resend emails attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails attachment <email-id> <attachment-id>","resend emails attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,Me,r),s=await C(t,Fc(n),r);await Q({loading:"Fetching attachment...",sdkCall:a=>a.emails.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var _c=new u("attachments").description("List attachments on a sent (outbound) email").argument("[emailId]","Email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",p({context:`Each attachment has a download_url (signed, expires ~1 hour).
642
644
  Use the attachment sub-command to retrieve a single attachment with its download URL:
643
645
  resend emails attachment <emailId> <attachmentId>
644
646
 
645
647
  content_disposition: "inline" means the attachment is embedded in the HTML body (e.g. an image).
646
- content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails attachments <email-id>","resend emails attachments <email-id> --json","resend emails attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching attachments...",sdkCall:a=>a.emails.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(wi(a.data)),T(a,`emails attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});V();var _c=new u("batch").description("Send up to 100 emails in a single API request from a JSON file").option("--file <path>",'Path to a JSON file containing an array of email objects (use "-" for stdin; required in non-interactive mode)').option("--react-email <path>","Path to a React Email template (.tsx) \u2014 rendered HTML is set on every email in the batch").option("--idempotency-key <key>","Deduplicate this batch request using this key").addOption(new L("--batch-validation <mode>","Validation mode: strict (default, fail all on error) or permissive (partial success)").choices(["strict","permissive"])).addHelpText("after",p({context:`Non-interactive: --file
648
+ content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails attachments <email-id>","resend emails attachments <email-id> --json","resend emails attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Me,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching attachments...",sdkCall:a=>a.emails.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(wi(a.data)),T(a,`emails attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});V();var Dc=new u("batch").description("Send up to 100 emails in a single API request from a JSON file").option("--file <path>",'Path to a JSON file containing an array of email objects (use "-" for stdin; required in non-interactive mode)').option("--react-email <path>","Path to a React Email template (.tsx) \u2014 rendered HTML is set on every email in the batch").option("--idempotency-key <key>","Deduplicate this batch request using this key").addOption(new L("--batch-validation <mode>","Validation mode: strict (default, fail all on error) or permissive (partial success)").choices(["strict","permissive"])).addHelpText("after",p({context:`Non-interactive: --file
647
649
  Limit: 100 emails per request (API hard limit \u2014 warned if exceeded)
648
650
  Unsupported per-email fields: attachments
649
651
 
@@ -651,55 +653,55 @@ File format (--file path):
651
653
  [
652
654
  {"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","text":"Hi"},
653
655
  {"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","html":"<b>Hi</b>","scheduled_at":"in 1 hour","tags":[{"name":"campaign","value":"welcome"}]}
654
- ]`,output:' [{"id":"<email-id>"},{"id":"<email-id>"}]',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","react_email_build_error","react_email_render_error","batch_error"],examples:["resend emails batch --file ./emails.json","resend emails batch --file ./emails.json --batch-validation permissive",`echo '[{"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hi","text":"Hello"}]' | resend emails batch --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o,{permission:"sending_access"}),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email objects.",code:"missing_file"},o),n=oe(r,o),s;try{s=JSON.parse(n)}catch{g({message:"File content is not valid JSON.",code:"invalid_json"},{json:o.json})}Array.isArray(s)||g({message:"File content must be a JSON array of email objects.",code:"invalid_format"},{json:o.json});let a=s;if(a.length>100&&console.warn(`Warning: ${a.length} emails exceeds the 100-email limit. The API may reject this request.`),e.reactEmail){let f=await Qe(e.reactEmail,o);for(let b of a)b.html=f}let l={reply_to:"replyTo",scheduled_at:"scheduledAt",topic_id:"topicId"};for(let f=0;f<a.length;f++){let b=a[f];(b===null||typeof b!="object"||Array.isArray(b))&&g({message:`Email at index ${f} must be a JSON object.`,code:"invalid_format"},{json:o.json}),"attachments"in b&&g({message:`Email at index ${f} contains "attachments", which is not supported in batch sends.`,code:"batch_error"},{json:o.json});let h=b;for(let[A,w]of Object.entries(l))A in h&&(h[w]??=h[A],delete h[A])}let d=await ae("Sending batch...",()=>{let f={...e.idempotencyKey&&{idempotencyKey:e.idempotencyKey},...e.batchValidation&&{batchValidation:e.batchValidation}};return i.batch.send(a,Object.keys(f).length>0?f:void 0)},"batch_error",o),c=d.data,m=d.errors;if(!o.json&&U()){console.log(`Sent ${c.length} email${c.length===1?"":"s"}`);for(let f of c)console.log(` ${f.id}`);if(m&&m.length>0){console.warn(`
655
- ${m.length} email${m.length===1?"":"s"} failed:`);for(let f of m)console.warn(` [${f.index}] ${f.message}`)}}else H(m&&m.length>0?{data:c,errors:m}:c,{json:o.json})});var Dc=new u("cancel").description("Cancel a scheduled email").argument("[id]","Email ID").addHelpText("after",p({output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend emails cancel <email-id>","resend emails cancel <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i);await B({loading:"Cancelling email...",sdkCall:n=>n.emails.cancel(r),errorCode:"cancel_error",successMsg:`Email cancelled: ${r}`},i)});var Ec=new u("get").description("Retrieve a sent email by ID").argument("[id]","Email ID").addHelpText("after",p({output:' {"object":"email","id":"<uuid>","message_id":"<111-222-333@email.example.com>","from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","html":"<p>Hi</p>","text":"Hi","last_event":"delivered","created_at":"<date>","scheduled_at":null,"bcc":null,"cc":null,"reply_to":null}',errorCodes:["auth_error","fetch_error"],examples:["resend emails get <email-id>","resend emails get <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i);await Q({loading:"Fetching email...",sdkCall:n=>n.emails.get(r),onInteractive:n=>{console.log(`From: ${n.from}`),console.log(`To: ${n.to.join(", ")}`),console.log(`Subject: ${n.subject}`),console.log(`Message-ID: ${n.message_id}`),console.log(`Status: ${n.last_event}`),console.log(`Date: ${n.created_at}`),n.scheduled_at&&console.log(`Scheduled: ${n.scheduled_at}`)}},i)});function dg(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.last_event??"\u2014",o.created_at,o.id]});return _(["From","To","Subject","Status","Created","ID"],t,"(no sent emails)")}var Bc=new u("list").alias("ls").description('List sent emails \u2014 returns summary (use "get <id>" for full details)').option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({context:"Lists emails sent by your team. For emails received by your domain, use: resend emails receiving list",output:' {"object":"list","has_more":false,"data":[{"id":"...","message_id":"<111-222-333@email.example.com>","to":["..."],"from":"...","subject":"...","created_at":"...","last_event":"delivered|opened|...","scheduled_at":null}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails list","resend emails list --limit 5","resend emails list --after <email-id> --limit 10","resend emails list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching sent emails...",sdkCall:n=>n.emails.list(r),onInteractive:n=>{console.log(dg(n.data)),T(n,"emails list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});function Uo(e){if(e!==void 0)return e.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function ug(e){let t=Object.entries(e).map(([o,i])=>[o,String(i)]);return _(["Metric","Value"],t,"(no metrics)")}function mg(e,t){let i=[...Object.keys(e[0]??{}).filter(n=>!t.includes(n)),...t],r=e.map(n=>i.map(s=>String(n[s]??"")));return _(i,r,"(no breakdown rows)")}var Oc=new u("metrics").description("Retrieve account-level email metrics").option("--start-date <date>","ISO 8601 date/datetime, defaults to 6 days before --end-date").option("--end-date <date>","ISO 8601 date/datetime, defaults to now").option("--timezone <tz>","IANA timezone, e.g. America/New_York, defaults to UTC").addOption(new L("--granularity <granularity>",'Bucket size used when "period" is a dimension (default: daily)').choices(["hourly","daily","weekly","monthly"])).option("--metrics <list>","Comma-separated metrics to include, defaults to all").option("--dimensions <list>","Comma-separated dimensions to break down by: period, domain, email, broadcast").option("--domain-id <list>","Comma-separated sending domain IDs (max 100)").option("--email-id <list>",'Comma-separated email IDs (max 100). Cannot be combined with the "broadcast" dimension or --broadcast-id').option("--broadcast-id <list>",'Comma-separated broadcast IDs (max 100). Cannot be combined with the "email" dimension or --email-id').addHelpText("after",p({output:' {"object":"metrics","start_date":"...","end_date":"...","metrics":["sent","delivered"],"dimensions":[],"granularity":"daily","totals":{"sent":100,"delivered":95}}',errorCodes:["auth_error","invalid_options","fetch_error"],examples:["resend emails metrics","resend emails metrics --start-date 2026-07-01 --end-date 2026-07-08","resend emails metrics --dimensions period,broadcast --broadcast-id <broadcast-id>","resend emails metrics --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Uo(e.dimensions),r=Uo(e.emailId),n=Uo(e.broadcastId),s=(i?.includes("email")??!1)||e.emailId!==void 0,a=(i?.includes("broadcast")??!1)||e.broadcastId!==void 0;s&&a&&g({message:'The "broadcast" dimension/--broadcast-id cannot be combined with the "email" dimension/--email-id.',code:"invalid_options"},{json:o.json});let l=Uo(e.metrics);await Q({loading:"Fetching email metrics...",sdkCall:d=>d.emails.metrics({startDate:e.startDate,endDate:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:l,dimensions:i,domainId:Uo(e.domainId),emailId:r,broadcastId:n}),onInteractive:d=>{console.log(`Metrics for ${d.start_date} to ${d.end_date} (${d.granularity} granularity)`),console.log(),console.log("Totals:"),console.log(ug(d.totals)),d.data&&d.data.length>0&&(console.log(),console.log(`Breakdown by ${d.dimensions.join(", ")}:`),console.log(mg(d.data,d.metrics)))}},o)});var yt={resource:"received email",resourcePlural:"received emails",fetchItems:(e,{limit:t,after:o})=>e.emails.receiving.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function Tc(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.receiving.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function Ic(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.created_at,o.id]});return _(["From","To","Subject","Created At","ID"],t,"(no received emails)")}var jc=new u("attachment").description("Retrieve a single attachment from a received (inbound) email").argument("[emailId]","Received email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",p({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
656
- resend emails receiving attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,yt,r),s=await C(t,Tc(n),r);await Q({loading:"Fetching attachment...",sdkCall:a=>a.emails.receiving.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var Pc=new u("attachments").description("List attachments on a received (inbound) email").argument("[emailId]","Received email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",p({context:`Each attachment has a download_url (signed, expires ~1 hour).
656
+ ]`,output:' [{"id":"<email-id>"},{"id":"<email-id>"}]',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","react_email_build_error","react_email_render_error","batch_error"],examples:["resend emails batch --file ./emails.json","resend emails batch --file ./emails.json --batch-validation permissive",`echo '[{"from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hi","text":"Hello"}]' | resend emails batch --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o,{permission:"sending_access"}),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email objects.",code:"missing_file"},o),n=oe(r,o),s;try{s=JSON.parse(n)}catch{g({message:"File content is not valid JSON.",code:"invalid_json"},{json:o.json})}Array.isArray(s)||g({message:"File content must be a JSON array of email objects.",code:"invalid_format"},{json:o.json});let a=s;if(a.length>100&&console.warn(`Warning: ${a.length} emails exceeds the 100-email limit. The API may reject this request.`),e.reactEmail){let f=await Ne(e.reactEmail,o);for(let b of a)b.html=f}let l={reply_to:"replyTo",scheduled_at:"scheduledAt",topic_id:"topicId"};for(let f=0;f<a.length;f++){let b=a[f];(b===null||typeof b!="object"||Array.isArray(b))&&g({message:`Email at index ${f} must be a JSON object.`,code:"invalid_format"},{json:o.json}),"attachments"in b&&g({message:`Email at index ${f} contains "attachments", which is not supported in batch sends.`,code:"batch_error"},{json:o.json});let h=b;for(let[A,w]of Object.entries(l))A in h&&(h[w]??=h[A],delete h[A])}let d=await ae("Sending batch...",()=>{let f={...e.idempotencyKey&&{idempotencyKey:e.idempotencyKey},...e.batchValidation&&{batchValidation:e.batchValidation}};return i.batch.send(a,Object.keys(f).length>0?f:void 0)},"batch_error",o),c=d.data,m=d.errors;if(!o.json&&U()){console.log(`Sent ${c.length} email${c.length===1?"":"s"}`);for(let f of c)console.log(` ${f.id}`);if(m&&m.length>0){console.warn(`
657
+ ${m.length} email${m.length===1?"":"s"} failed:`);for(let f of m)console.warn(` [${f.index}] ${f.message}`)}}else H(m&&m.length>0?{data:c,errors:m}:c,{json:o.json})});var Ec=new u("cancel").description("Cancel a scheduled email").argument("[id]","Email ID").addHelpText("after",p({output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","cancel_error"],examples:["resend emails cancel <email-id>","resend emails cancel <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Me,i);await B({loading:"Cancelling email...",sdkCall:n=>n.emails.cancel(r),errorCode:"cancel_error",successMsg:`Email cancelled: ${r}`},i)});var Bc=new u("get").description("Retrieve a sent email by ID").argument("[id]","Email ID").addHelpText("after",p({output:' {"object":"email","id":"<uuid>","message_id":"<111-222-333@email.example.com>","from":"onboarding@resend.dev","to":["delivered@resend.dev"],"subject":"Hello","html":"<p>Hi</p>","text":"Hi","last_event":"delivered","created_at":"<date>","scheduled_at":null,"bcc":null,"cc":null,"reply_to":null}',errorCodes:["auth_error","fetch_error"],examples:["resend emails get <email-id>","resend emails get <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Me,i);await Q({loading:"Fetching email...",sdkCall:n=>n.emails.get(r),onInteractive:n=>{console.log(`From: ${n.from}`),console.log(`To: ${n.to.join(", ")}`),console.log(`Subject: ${n.subject}`),console.log(`Message-ID: ${n.message_id}`),console.log(`Status: ${n.last_event}`),console.log(`Date: ${n.created_at}`),n.scheduled_at&&console.log(`Scheduled: ${n.scheduled_at}`)}},i)});function ug(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.last_event??"\u2014",o.created_at,o.id]});return _(["From","To","Subject","Status","Created","ID"],t,"(no sent emails)")}var Oc=new u("list").alias("ls").description('List sent emails \u2014 returns summary (use "get <id>" for full details)').option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({context:"Lists emails sent by your team. For emails received by your domain, use: resend emails receiving list",output:' {"object":"list","has_more":false,"data":[{"id":"...","message_id":"<111-222-333@email.example.com>","to":["..."],"from":"...","subject":"...","created_at":"...","last_event":"delivered|opened|...","scheduled_at":null}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails list","resend emails list --limit 5","resend emails list --after <email-id> --limit 10","resend emails list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching sent emails...",sdkCall:n=>n.emails.list(r),onInteractive:n=>{console.log(ug(n.data)),T(n,"emails list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});function Uo(e){if(e!==void 0)return e.split(",").map(t=>t.trim()).filter(t=>t.length>0)}function mg(e){let t=Object.entries(e).map(([o,i])=>[o,String(i)]);return _(["Metric","Value"],t,"(no metrics)")}function pg(e,t){let i=[...Object.keys(e[0]??{}).filter(n=>!t.includes(n)),...t],r=e.map(n=>i.map(s=>String(n[s]??"")));return _(i,r,"(no breakdown rows)")}var Tc=new u("metrics").description("Retrieve account-level email metrics").option("--start-date <date>","ISO 8601 date/datetime, defaults to 6 days before --end-date").option("--end-date <date>","ISO 8601 date/datetime, defaults to now").option("--timezone <tz>","IANA timezone, e.g. America/New_York, defaults to UTC").addOption(new L("--granularity <granularity>",'Bucket size used when "period" is a dimension (default: daily)').choices(["hourly","daily","weekly","monthly"])).option("--metrics <list>","Comma-separated metrics to include, defaults to all").option("--dimensions <list>","Comma-separated dimensions to break down by: period, domain, email, broadcast").option("--domain-id <list>","Comma-separated sending domain IDs (max 100)").option("--email-id <list>",'Comma-separated email IDs (max 100). Cannot be combined with the "broadcast" dimension or --broadcast-id').option("--broadcast-id <list>",'Comma-separated broadcast IDs (max 100). Cannot be combined with the "email" dimension or --email-id').addHelpText("after",p({output:' {"object":"metrics","start_date":"...","end_date":"...","metrics":["sent","delivered"],"dimensions":[],"granularity":"daily","totals":{"sent":100,"delivered":95}}',errorCodes:["auth_error","invalid_options","fetch_error"],examples:["resend emails metrics","resend emails metrics --start-date 2026-07-01 --end-date 2026-07-08","resend emails metrics --dimensions period,broadcast --broadcast-id <broadcast-id>","resend emails metrics --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Uo(e.dimensions),r=Uo(e.emailId),n=Uo(e.broadcastId),s=(i?.includes("email")??!1)||e.emailId!==void 0,a=(i?.includes("broadcast")??!1)||e.broadcastId!==void 0;s&&a&&g({message:'The "broadcast" dimension/--broadcast-id cannot be combined with the "email" dimension/--email-id.',code:"invalid_options"},{json:o.json});let l=Uo(e.metrics);await Q({loading:"Fetching email metrics...",sdkCall:d=>d.emails.metrics({startDate:e.startDate,endDate:e.endDate,timezone:e.timezone,granularity:e.granularity,metrics:l,dimensions:i,domainId:Uo(e.domainId),emailId:r,broadcastId:n}),onInteractive:d=>{console.log(`Metrics for ${d.start_date} to ${d.end_date} (${d.granularity} granularity)`),console.log(),console.log("Totals:"),console.log(mg(d.totals)),d.data&&d.data.length>0&&(console.log(),console.log(`Breakdown by ${d.dimensions.join(", ")}:`),console.log(pg(d.data,d.metrics)))}},o)});var yt={resource:"received email",resourcePlural:"received emails",fetchItems:(e,{limit:t,after:o})=>e.emails.receiving.list({limit:t,...o&&{after:o}}),display:e=>({label:e.subject||"(no subject)",hint:e.id})};function Ic(e){return{resource:"attachment",resourcePlural:"attachments",fetchItems:(t,{limit:o,after:i})=>t.emails.receiving.attachments.list({emailId:e,limit:o,...i&&{after:i}}),display:t=>({label:t.filename??"(unnamed)",hint:t.id})}}function jc(e){let t=e.map(o=>{let i=o.to.join(", "),r=i.length>40?`${i.slice(0,37)}...`:i,n=o.subject.length>50?`${o.subject.slice(0,47)}...`:o.subject;return[o.from,r,n,o.created_at,o.id]});return _(["From","To","Subject","Created At","ID"],t,"(no received emails)")}var Pc=new u("attachment").description("Retrieve a single attachment from a received (inbound) email").argument("[emailId]","Received email UUID").argument("[attachmentId]","Attachment UUID").addHelpText("after",p({context:`The download_url is a signed URL that expires in ~1 hour. Download the file directly:
658
+ resend emails receiving attachment <emailId> <attachmentId> --json | jq -r .download_url | xargs curl -O`,output:' {"object":"attachment","id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<signed-url>","expires_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving attachment <email-id> <attachment-id> --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,yt,r),s=await C(t,Ic(n),r);await Q({loading:"Fetching attachment...",sdkCall:a=>a.emails.receiving.attachments.get({emailId:n,id:s}),onInteractive:a=>{console.log(`${a.filename??"(unnamed)"}`),console.log(`ID: ${a.id}`),console.log(`Content-Type: ${a.content_type}`),console.log(`Size: ${a.size} bytes`),console.log(`Disposition: ${a.content_disposition}`),console.log(`Download URL: ${a.download_url}`),console.log(`Expires: ${a.expires_at}`)}},r)});var $c=new u("attachments").description("List attachments on a received (inbound) email").argument("[emailId]","Received email UUID").option("--limit <n>","Maximum number of attachments to return (1-100)","10").option("--after <cursor>","Return attachments after this cursor (next page)").option("--before <cursor>","Return attachments before this cursor (previous page)").addHelpText("after",p({context:`Each attachment has a download_url (signed, expires ~1 hour).
657
659
  Use the attachment sub-command to retrieve a single attachment with its download URL:
658
660
  resend emails receiving attachment <emailId> <attachmentId>
659
661
 
660
662
  content_disposition: "inline" means the attachment is embedded in the HTML body (e.g. an image).
661
- content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving attachments <email-id>","resend emails receiving attachments <email-id> --json","resend emails receiving attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,yt,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching attachments...",sdkCall:a=>a.emails.receiving.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(wi(a.data)),T(a,`emails receiving attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var $c=new u("forward").description("Forward a received email").argument("[id]","Received email ID").requiredOption("--to <addresses...>","Recipient address(es)").requiredOption("--from <address>","Sender address").addHelpText("after",p({context:`Required: --to, --from
662
- Forwards the original email content (passthrough mode).`,output:' {"id":"<email-id>"}',errorCodes:["auth_error","create_error"],examples:["resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,yt,i);await M({loading:"Forwarding email...",sdkCall:n=>n.emails.receiving.forward({emailId:r,to:t.to,from:t.from}),onInteractive:n=>{console.log(`Email forwarded: ${n.id}`)}},i)});var Gc=new u("get").description("Retrieve a single received (inbound) email with full details including HTML, text, and headers").argument("[id]","Received email UUID").addHelpText("after",p({context:`The raw.download_url field is a signed URL (expires ~1 hour) containing the full RFC 2822
663
+ content_disposition: "attachment" means it is a standalone file download.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","filename":"invoice.pdf","size":51200,"content_type":"application/pdf","content_disposition":"attachment","content_id":null,"download_url":"<url>","expires_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving attachments <email-id>","resend emails receiving attachments <email-id> --json","resend emails receiving attachments <email-id> --limit 25 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,yt,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching attachments...",sdkCall:a=>a.emails.receiving.attachments.list({emailId:r,...s}),onInteractive:a=>{console.log(wi(a.data)),T(a,`emails receiving attachments ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Gc=new u("forward").description("Forward a received email").argument("[id]","Received email ID").requiredOption("--to <addresses...>","Recipient address(es)").requiredOption("--from <address>","Sender address").addHelpText("after",p({context:`Required: --to, --from
664
+ Forwards the original email content (passthrough mode).`,output:' {"id":"<email-id>"}',errorCodes:["auth_error","create_error"],examples:["resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,yt,i);await M({loading:"Forwarding email...",sdkCall:n=>n.emails.receiving.forward({emailId:r,to:t.to,from:t.from}),onInteractive:n=>{console.log(`Email forwarded: ${n.id}`)}},i)});var Hc=new u("get").description("Retrieve a single received (inbound) email with full details including HTML, text, and headers").argument("[id]","Received email UUID").addHelpText("after",p({context:`The raw.download_url field is a signed URL (expires ~1 hour) containing the full RFC 2822
663
665
  MIME message. Pipe it to curl to save the original email:
664
666
  resend emails receiving get <id> --json | jq -r .raw.download_url | xargs curl > email.eml
665
667
 
666
668
  Attachments are listed in the attachments array. Use the attachments sub-command to get
667
669
  download URLs:
668
670
  resend emails receiving attachments <id>`,output:' {"object":"email","id":"<uuid>","to":["inbox@example.com"],"from":"sender@external.com","subject":"Hello","html":"<p>Hello!</p>","text":"Hello!","headers":{"x-mailer":"..."},"message_id":"<str>","bcc":[],"cc":[],"reply_to":[],"raw":{"download_url":"<url>","expires_at":"<date>"},"attachments":[]}',errorCodes:["auth_error","fetch_error"],examples:["resend emails receiving get <email-id>","resend emails receiving get <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,yt,i);await Q({loading:"Fetching received email...",sdkCall:n=>n.emails.receiving.get(r),onInteractive:n=>{if(console.log(`From: ${n.from}`),console.log(`To: ${n.to.join(", ")}`),console.log(`Subject: ${n.subject}`),console.log(`Date: ${n.created_at}`),n.attachments.length>0&&console.log(`Files: ${n.attachments.length} attachment(s)`),n.text){let s=n.text.length>200?`${n.text.slice(0,197)}...`:n.text;console.log(`${s}`)}else n.html&&console.log(`
669
- (HTML body only \u2014 use --json to view or pipe to a browser)`)}},i)});var Hc=new u("list").alias("ls").description("List received (inbound) emails for domains with receiving enabled").option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Return emails after this cursor (next page)").option("--before <cursor>","Return emails before this cursor (previous page)").addHelpText("after",p({context:`Receiving must be enabled on the domain first:
671
+ (HTML body only \u2014 use --json to view or pipe to a browser)`)}},i)});var Qc=new u("list").alias("ls").description("List received (inbound) emails for domains with receiving enabled").option("--limit <n>","Maximum number of emails to return (1-100)","10").option("--after <cursor>","Return emails after this cursor (next page)").option("--before <cursor>","Return emails before this cursor (previous page)").addHelpText("after",p({context:`Receiving must be enabled on the domain first:
670
672
  resend domains update <id> --receiving enabled
671
673
 
672
674
  Pagination: use --after or --before with a received email ID as the cursor.
673
675
  Only one of --after or --before may be used at a time.
674
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","to":["inbox@example.com"],"from":"sender@external.com","subject":"Hello","created_at":"<date>","message_id":"<str>","bcc":null,"cc":null,"reply_to":null,"attachments":[]}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving list","resend emails receiving list --limit 25 --json","resend emails receiving list --after <email-id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching received emails...",sdkCall:n=>n.emails.receiving.list(r),onInteractive:n=>{console.log(Ic(n.data)),T(n,"emails receiving list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var nt=ue(Ve(),1);V();var Qc=(e=1e4)=>{if(!Number.isInteger(e)||e<1)throw new RangeError(`maxSize must be a positive integer, got ${e}`);let t=new Map,o=()=>{let i=t.keys().next();i.done||t.delete(i.value)};return{has:i=>t.has(i)?(t.delete(i),t.set(i,!0),!0):!1,add:i=>{if(t.has(i)){t.delete(i),t.set(i,!0);return}t.size>=e&&o(),t.set(i,!0)},size:()=>t.size}};var jr=100,Nc=5,Pr=()=>new Date().toLocaleTimeString("en-GB",{hour12:!1}),pg=(e,t)=>{if(t)console.log(JSON.stringify(e));else{let o=e.to.map(Fe).join(", "),i=nt.default.dim(`[${Pr()}]`),r=Fe(e.subject),n=r.length>50?`${r.slice(0,47)}...`:r,s=Fe(e.from),a=Fe(e.id);process.stderr.write(`${i} ${s} -> ${o} ${nt.default.bold(`"${n}"`)} ${nt.default.dim(a)}
675
- `)}},fg=(e,t)=>{let o=e.findIndex(i=>t.has(i.id));return o===-1?{newEmails:e,foundSeen:!1}:{newEmails:e.slice(0,o),foundSeen:!0}},Mc=new u("listen").description("Poll for new inbound emails and display them as they arrive").option("--interval <seconds>","Polling interval in seconds (minimum 2)","5").addHelpText("after",p({context:`Long-running command that polls the receiving API at a fixed
676
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","has_more":false,"data":[{"id":"<uuid>","to":["inbox@example.com"],"from":"sender@external.com","subject":"Hello","created_at":"<date>","message_id":"<str>","bcc":null,"cc":null,"reply_to":null,"attachments":[]}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend emails receiving list","resend emails receiving list --limit 25 --json","resend emails receiving list --after <email-id> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching received emails...",sdkCall:n=>n.emails.receiving.list(r),onInteractive:n=>{console.log(jc(n.data)),T(n,"emails receiving list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var nt=ue(ze(),1);V();var Nc=(e=1e4)=>{if(!Number.isInteger(e)||e<1)throw new RangeError(`maxSize must be a positive integer, got ${e}`);let t=new Map,o=()=>{let i=t.keys().next();i.done||t.delete(i.value)};return{has:i=>t.has(i)?(t.delete(i),t.set(i,!0),!0):!1,add:i=>{if(t.has(i)){t.delete(i),t.set(i,!0);return}t.size>=e&&o(),t.set(i,!0)},size:()=>t.size}};var jr=100,Mc=5,Pr=()=>new Date().toLocaleTimeString("en-GB",{hour12:!1}),fg=(e,t)=>{if(t)console.log(JSON.stringify(e));else{let o=e.to.map(Fe).join(", "),i=nt.default.dim(`[${Pr()}]`),r=Fe(e.subject),n=r.length>50?`${r.slice(0,47)}...`:r,s=Fe(e.from),a=Fe(e.id);process.stderr.write(`${i} ${s} -> ${o} ${nt.default.bold(`"${n}"`)} ${nt.default.dim(a)}
677
+ `)}},gg=(e,t)=>{let o=e.findIndex(i=>t.has(i.id));return o===-1?{newEmails:e,foundSeen:!1}:{newEmails:e.slice(0,o),foundSeen:!0}},qc=new u("listen").description("Poll for new inbound emails and display them as they arrive").option("--interval <seconds>","Polling interval in seconds (minimum 2)","5").addHelpText("after",p({context:`Long-running command that polls the receiving API at a fixed
676
678
  interval and prints each new email as it arrives.
677
679
 
678
680
  Interactive output shows one line per email. When piped (or with --json),
679
681
  output is NDJSON (one JSON object per line).
680
682
 
681
- Ctrl+C exits cleanly.`,examples:["resend emails receiving listen","resend emails receiving listen --interval 10","resend emails receiving listen --json | head -3"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Number.parseInt(e.interval??"5",10);(Number.isNaN(i)||i<2)&&g({message:"Polling interval must be at least 2 seconds.",code:"invalid_interval"},{json:o.json});let r=await Y(o),n=o.json||!U(),s=se("Connecting...",o.quiet||n),a=Qc(),l=0;try{let{data:A,error:w}=await r.emails.receiving.list({limit:1});(w||!A)&&(s.fail("Failed to connect"),g({message:w?.message??"Unexpected empty response",code:"list_error"},{json:o.json}));for(let S of A.data)a.add(S.id);s.stop("Ready")}catch(A){s.fail("Failed to connect"),g({message:q(A,"Unknown error"),code:"list_error"},{json:o.json})}n||(process.stderr.write(`
683
+ Ctrl+C exits cleanly.`,examples:["resend emails receiving listen","resend emails receiving listen --interval 10","resend emails receiving listen --json | head -3"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=Number.parseInt(e.interval??"5",10);(Number.isNaN(i)||i<2)&&g({message:"Polling interval must be at least 2 seconds.",code:"invalid_interval"},{json:o.json});let r=await Y(o),n=o.json||!U(),s=se("Connecting...",o.quiet||n),a=Nc(),l=0;try{let{data:A,error:w}=await r.emails.receiving.list({limit:1});(w||!A)&&(s.fail("Failed to connect"),g({message:w?.message??"Unexpected empty response",code:"list_error"},{json:o.json}));for(let S of A.data)a.add(S.id);s.stop("Ready")}catch(A){s.fail("Failed to connect"),g({message:q(A,"Unknown error"),code:"list_error"},{json:o.json})}n||(process.stderr.write(`
682
684
  `),process.stderr.write(` ${nt.default.bold("Polling:")} every ${i}s
683
685
  `),process.stderr.write(`
684
686
  Listening for new inbound emails. Press Ctrl+C to stop.
685
687
 
686
688
  `));let d=A=>{l++,n||process.stderr.write(`${nt.default.dim(`[${Pr()}]`)} ${nt.default.yellow("Warning:")} ${A}
687
- `),l>=5&&g({message:"Exiting after 5 consecutive API failures.",code:"poll_error"},{json:o.json})},c=async(A,w,S)=>{if(S<=0)return{emails:w,hasMore:!0};let v=A?{limit:jr,after:A}:{limit:jr},{data:K,error:x}=await go(()=>r.emails.receiving.list(v));if(x||!K)return{emails:w,error:x?.message??"Empty response",hasMore:!1};let{newEmails:D,foundSeen:I}=fg(K.data,a),G=[...w,...D];if(I||!K.has_more)return{emails:G,hasMore:!1};let E=K.data[K.data.length-1]?.id;return E?c(E,G,S-1):{emails:G,hasMore:!0}},m,f=()=>{let A=`Hit page cap of ${Nc*jr} emails this poll; remaining will be picked up next tick.`;n?console.log(JSON.stringify({warning:"page_cap_reached",message:A})):process.stderr.write(`${nt.default.dim(`[${Pr()}]`)} ${nt.default.yellow("Warning:")} ${A}
688
- `)},b=async()=>{try{let A=await c(void 0,[],Nc);A.error&&d(A.error),A.hasMore&&f();let w=A.emails.toReversed();for(let S of w)a.add(S.id);if(A.emails.length>0){l=0;for(let S of w)pg(S,n)}else A.error||(l=0)}catch(A){d(q(A,"Unknown error"))}finally{m=setTimeout(b,i*1e3)}};m=setTimeout(b,i*1e3);let h=()=>{clearTimeout(m),n||process.stderr.write(`
689
+ `),l>=5&&g({message:"Exiting after 5 consecutive API failures.",code:"poll_error"},{json:o.json})},c=async(A,w,S)=>{if(S<=0)return{emails:w,hasMore:!0};let v=A?{limit:jr,after:A}:{limit:jr},{data:K,error:x}=await go(()=>r.emails.receiving.list(v));if(x||!K)return{emails:w,error:x?.message??"Empty response",hasMore:!1};let{newEmails:D,foundSeen:I}=gg(K.data,a),G=[...w,...D];if(I||!K.has_more)return{emails:G,hasMore:!1};let E=K.data[K.data.length-1]?.id;return E?c(E,G,S-1):{emails:G,hasMore:!0}},m,f=()=>{let A=`Hit page cap of ${Mc*jr} emails this poll; remaining will be picked up next tick.`;n?console.log(JSON.stringify({warning:"page_cap_reached",message:A})):process.stderr.write(`${nt.default.dim(`[${Pr()}]`)} ${nt.default.yellow("Warning:")} ${A}
690
+ `)},b=async()=>{try{let A=await c(void 0,[],Mc);A.error&&d(A.error),A.hasMore&&f();let w=A.emails.toReversed();for(let S of w)a.add(S.id);if(A.emails.length>0){l=0;for(let S of w)fg(S,n)}else A.error||(l=0)}catch(A){d(q(A,"Unknown error"))}finally{m=setTimeout(b,i*1e3)}};m=setTimeout(b,i*1e3);let h=()=>{clearTimeout(m),n||process.stderr.write(`
689
691
  Stopped listening.
690
- `),process.exit(Ht())};ti(h),process.on("SIGTERM",h),await new Promise(()=>{})});var qc=new u("receiving").description("Manage received (inbound) emails \u2014 requires domain receiving to be enabled").addHelpText("after",p({context:`Receiving must be enabled on the domain first:
691
- resend domains update <id> --receiving enabled`,examples:["resend emails receiving list","resend emails receiving listen","resend emails receiving get <email-id>","resend emails receiving attachments <email-id>","resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(Hc,{isDefault:!0}).addCommand(Gc).addCommand(Mc).addCommand(Pc).addCommand(jc).addCommand($c);var Vc=require("node:fs"),zc=require("node:path");var gg=/;(cid|type|filename)=/,Lc=/;[\w-]+=/,hg={cid:"contentId",type:"contentType",filename:"filename"};function Wc(e){let t=e.split(gg),o=t[0];if(!o)throw new Error(`Missing file path or URL in attachment "${e}".`);if(Lc.test(o))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);let i={source:o,isUrl:/^https?:\/\//i.test(o)};for(let r=1;r<t.length;r+=2){let n=t[r],s=t[r+1],a=hg[n];if(i[a]!==void 0)throw new Error(`Duplicate ";${n}=" in attachment "${e}".`);if(!s)throw new Error(`Empty ";${n}=" in attachment "${e}".`);if(a!=="contentType"&&Lc.test(s))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);i[a]=s}return i}var Ag={content_type:"contentType",content_id:"contentId"},bg=new Set(["content","filename","path","contentType","contentId"]);function Jc(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Attachments file is not valid JSON.")}if(!Array.isArray(t))throw new Error("Attachments file must contain a JSON array of attachment objects.");return t.map((o,i)=>{if(o===null||typeof o!="object"||Array.isArray(o))throw new Error(`Attachment at index ${i} must be a JSON object.`);let r={};for(let[n,s]of Object.entries(o)){let a=Ag[n]??n;if(!bg.has(a))throw new Error(`Attachment at index ${i} has unsupported field "${n}". Supported: content, filename, path, content_type/contentType, content_id/contentId.`);if(a in r)throw new Error(`Attachment at index ${i} sets "${a}" more than once (snake_case and camelCase are aliases).`);if(typeof s!="string")throw new Error(`Attachment at index ${i}: "${n}" must be a string.`);r[a]=s}if(!r.content&&!r.path)throw new Error(`Attachment at index ${i} must include "content" (base64) or "path" (hosted URL).`);return r})}V();function yg(e){let{attachments:t,...o}=e;return t?.length?{...o,attachments:t.map(i=>({...i.filename!==void 0&&{filename:i.filename},...i.path&&{path:i.path},...i.contentType&&{contentType:i.contentType},...i.contentId&&{contentId:i.contentId},...i.content!==void 0&&{byteLength:Buffer.isBuffer(i.content)?i.content.byteLength:Buffer.byteLength(String(i.content),"utf8")}}))}:o}var Yc=new u("send").description("Send an email").option("--from <address>","Sender address (required unless using --template)").option("--to <addresses...>","Recipient address(es) (required)").option("--subject <subject>","Email subject (required unless using --template)").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and send").option("--cc <addresses...>","CC recipients").option("--bcc <addresses...>","BCC recipients").option("--reply-to <address>","Reply-to address").option("--scheduled-at <datetime>",'Schedule email for later \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').option("--attachment <specs...>","File path or URL to attach, with optional ;cid= ;type= ;filename= params (quote the value)").option("--attachments-file <path>",'Path to a JSON array of attachment objects (use "-" for stdin)').option("--headers <key=value...>","Custom headers as key=value pairs (e.g. X-Entity-Ref-ID=123)").option("--tags <name=value...>","Email tags as name=value pairs (e.g. category=marketing)").option("--idempotency-key <key>","Deduplicate this send request using this key").option("--dry-run","Validate input and print the request JSON without calling the API (interactive: verified-domain list is not fetched)").option("--template <id>","Template ID to use").option("--var <key=value...>","Template variables as key=value pairs (repeatable, e.g. --var name=John --var count=42)").addHelpText("after",p({context:`Required: --to and either --template, --react-email, or (--from, --subject, and one of --text | --text-file | --html | --html-file).
692
+ `),process.exit(Ht())};ti(h),process.on("SIGTERM",h),await new Promise(()=>{})});var Lc=new u("receiving").description("Manage received (inbound) emails \u2014 requires domain receiving to be enabled").addHelpText("after",p({context:`Receiving must be enabled on the domain first:
693
+ resend domains update <id> --receiving enabled`,examples:["resend emails receiving list","resend emails receiving listen","resend emails receiving get <email-id>","resend emails receiving attachments <email-id>","resend emails receiving attachment <email-id> <attachment-id>","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(Qc,{isDefault:!0}).addCommand(Hc).addCommand(qc).addCommand($c).addCommand(Pc).addCommand(Gc);var zc=require("node:fs"),Yc=require("node:path");var hg=/;(cid|type|filename)=/,Wc=/;[\w-]+=/,Ag={cid:"contentId",type:"contentType",filename:"filename"};function Jc(e){let t=e.split(hg),o=t[0];if(!o)throw new Error(`Missing file path or URL in attachment "${e}".`);if(Wc.test(o))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);let i={source:o,isUrl:/^https?:\/\//i.test(o)};for(let r=1;r<t.length;r+=2){let n=t[r],s=t[r+1],a=Ag[n];if(i[a]!==void 0)throw new Error(`Duplicate ";${n}=" in attachment "${e}".`);if(!s)throw new Error(`Empty ";${n}=" in attachment "${e}".`);if(a!=="contentType"&&Wc.test(s))throw new Error(`Unrecognized attachment parameter in "${e}". Supported: ;cid=, ;type=, ;filename= (use --attachments-file for paths containing ";key=").`);i[a]=s}return i}var bg={content_type:"contentType",content_id:"contentId"},yg=new Set(["content","filename","path","contentType","contentId"]);function Vc(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Attachments file is not valid JSON.")}if(!Array.isArray(t))throw new Error("Attachments file must contain a JSON array of attachment objects.");return t.map((o,i)=>{if(o===null||typeof o!="object"||Array.isArray(o))throw new Error(`Attachment at index ${i} must be a JSON object.`);let r={};for(let[n,s]of Object.entries(o)){let a=bg[n]??n;if(!yg.has(a))throw new Error(`Attachment at index ${i} has unsupported field "${n}". Supported: content, filename, path, content_type/contentType, content_id/contentId.`);if(a in r)throw new Error(`Attachment at index ${i} sets "${a}" more than once (snake_case and camelCase are aliases).`);if(typeof s!="string")throw new Error(`Attachment at index ${i}: "${n}" must be a string.`);r[a]=s}if(!r.content&&!r.path)throw new Error(`Attachment at index ${i} must include "content" (base64) or "path" (hosted URL).`);return r})}V();function Cg(e){let{attachments:t,...o}=e;return t?.length?{...o,attachments:t.map(i=>({...i.filename!==void 0&&{filename:i.filename},...i.path&&{path:i.path},...i.contentType&&{contentType:i.contentType},...i.contentId&&{contentId:i.contentId},...i.content!==void 0&&{byteLength:Buffer.isBuffer(i.content)?i.content.byteLength:Buffer.byteLength(String(i.content),"utf8")}}))}:o}var Xc=new u("send").description("Send an email").option("--from <address>","Sender address (required unless using --template)").option("--to <addresses...>","Recipient address(es) (required)").option("--subject <subject>","Email subject (required unless using --template)").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and send").option("--cc <addresses...>","CC recipients").option("--bcc <addresses...>","BCC recipients").option("--reply-to <address>","Reply-to address").option("--scheduled-at <datetime>",'Schedule email for later \u2014 ISO 8601 or natural language e.g. "in 1 hour", "tomorrow at 9am ET"').option("--attachment <specs...>","File path or URL to attach, with optional ;cid= ;type= ;filename= params (quote the value)").option("--attachments-file <path>",'Path to a JSON array of attachment objects (use "-" for stdin)').option("--headers <key=value...>","Custom headers as key=value pairs (e.g. X-Entity-Ref-ID=123)").option("--tags <name=value...>","Email tags as name=value pairs (e.g. category=marketing)").option("--idempotency-key <key>","Deduplicate this send request using this key").option("--dry-run","Validate input and print the request JSON without calling the API (interactive: verified-domain list is not fetched)").option("--template <id>","Template ID to use").option("--var <key=value...>","Template variables as key=value pairs (repeatable, e.g. --var name=John --var count=42)").addHelpText("after",p({context:`Required: --to and either --template, --react-email, or (--from, --subject, and one of --text | --text-file | --html | --html-file).
692
694
  Attachments: --attachment takes a local path or https:// URL plus optional ;cid= (inline content-id), ;type= (MIME type), ;filename= params. Always double-quote values containing ";" \u2014 required on every shell (bash, PowerShell, cmd). For paths containing ";key=" or scripted use, pass a JSON array via --attachments-file.
693
695
  URL attachments are fetched by the API after send: an unreachable URL fails the email (check \`emails get <id>\`), and filename/MIME type are not derived from the URL \u2014 pass ;filename= and ;type=.
694
696
  Use --dry-run to print the request JSON without sending (attachment content shows byteLength only).`,output:' {"id":"<email-id>"}',errorCodes:["auth_error","missing_body","file_read_error","invalid_options","stdin_read_error","invalid_header","invalid_tag","invalid_var","invalid_attachment","template_body_conflict","template_attachment_conflict","react_email_build_error","react_email_render_error","send_error"],examples:['resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --html "<b>Hi</b>"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachment ./report.pdf','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --html "<img src=cid:logo>" --attachment "./logo.png;cid=logo"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachment "https://example.com/report.pdf;filename=report.pdf;type=application/pdf"','resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi" --attachments-file ./attachments.json',"resend emails send --template tmpl_123 --to delivered@resend.dev"]})).action(async(e,t)=>{let o=t.optsWithGlobals();[e.htmlFile,e.textFile,e.attachmentsFile].filter(K=>K==="-").length>1&&g({message:'Only one of --html-file, --text-file, or --attachments-file can read from stdin ("-"). Pass the others as file paths.',code:"invalid_options"},{json:o.json}),e.from===""&&g({message:"--from cannot be empty",code:"invalid_options"},{json:o.json});let r=!!e.template;e.var&&!r&&g({message:"--var can only be used with --template",code:"invalid_var"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile||r)&&g({message:"Cannot use --react-email with --html, --html-file, or --template",code:"invalid_options"},{json:o.json}),r&&(e.html||e.htmlFile||e.text||e.textFile)&&g({message:"Cannot use --template with --html, --html-file, --text, or --text-file",code:"template_body_conflict"},{json:o.json}),r&&(e.attachment||e.attachmentsFile!==void 0)&&g({message:"Cannot use --attachment or --attachments-file with --template",code:"template_attachment_conflict"},{json:o.json});let n=e.var?Object.fromEntries(e.var.map(K=>{let x=K.indexOf("=");x<1&&g({message:`Invalid var format: "${K}". Expected key=value.`,code:"invalid_var"},{json:o.json});let D=K.slice(0,x),I=K.slice(x+1);return[D,I]})):void 0,s=e.from;if(!e.dryRun&&!s&&!r&&U()&&!o.json){let K=await Y(o,{permission:"sending_access"}),x=await di(K);x.length>0&&(s=await ui(x))}let a=[{flag:"from",message:"From address",placeholder:"onboarding@resend.dev",defaultValue:"onboarding@resend.dev",required:!r},{flag:"to",message:"To address",placeholder:"delivered@resend.dev",defaultValue:"delivered@resend.dev"},{flag:"subject",message:"Subject",placeholder:"Hello!",defaultValue:"Hello!",required:!r}],l=await la({from:s,to:e.to?.[0],subject:e.subject},a,o),d=e.html,c=e.text;e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
695
697
  `),d=oe(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
696
- `),c=oe(e.textFile,o)),e.reactEmail&&(d=await Qe(e.reactEmail,o));let m=c;!r&&!e.reactEmail&&!d&&!c&&(m=await P(void 0,{message:"Email body (plain text)",placeholder:"Hello, World!",defaultValue:"Hello, World!"},{message:"Missing email body. Provide --html, --html-file, --text, --text-file, or --react-email",code:"missing_body"},o));let f=e.to??[l.to],b=e.attachment?.map(K=>{let x;try{x=Wc(K)}catch(I){return g({message:I.message,code:"invalid_attachment"},{json:o.json})}let D={...x.contentType&&{contentType:x.contentType},...x.contentId&&{contentId:x.contentId}};if(x.isUrl)return{path:x.source,...x.filename&&{filename:x.filename},...D};try{let I=(0,Vc.readFileSync)(x.source);return{filename:x.filename??(0,zc.basename)(x.source),content:I,...D}}catch{return g({message:`Failed to read file: ${x.source}`,code:"file_read_error"},{json:o.json})}});if(e.attachmentsFile!==void 0){let K=oe(e.attachmentsFile,o);try{b=[...b??[],...Jc(K)]}catch(x){g({message:x.message,code:"invalid_attachment"},{json:o.json})}}let h=e.headers?Object.fromEntries(e.headers.map(K=>{let x=K.indexOf("=");return x<1&&g({message:`Invalid header format: "${K}". Expected key=value.`,code:"invalid_header"},{json:o.json}),[K.slice(0,x),K.slice(x+1)]})):void 0,A=e.tags?.map(K=>{let x=K.indexOf("=");return x<1&&g({message:`Invalid tag format: "${K}". Expected name=value.`,code:"invalid_tag"},{json:o.json}),{name:K.slice(0,x),value:K.slice(x+1)}}),w;if(r?w={template:{id:e.template,...n&&{variables:n}},to:f,...l.from&&{from:l.from},...l.subject&&{subject:l.subject},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...h&&{headers:h},...A&&{tags:A}}:w={from:l.from,to:f,subject:l.subject,...d&&{html:d},...m&&{text:m},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...b&&{attachments:b},...h&&{headers:h},...A&&{tags:A}},e.dryRun){H({dryRun:!0,request:yg(w)},{json:o.json});return}let S=await Y(o,{permission:"sending_access"}),v=await ae(e.scheduledAt?"Scheduling email...":"Sending email...",()=>S.emails.send(w,e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:void 0),"send_error",o);!o.json&&U()?e.scheduledAt?console.log(`Email scheduled: ${v.id}`):console.log(`Email sent: ${v.id}`):H(v,{json:o.json})});var $r=ue(Ve(),1);var Xc=new u("share").description("Create a shareable link for a sent or received email").argument("[id]","Email ID").option("--expires-in <duration>",'Link expiration, e.g. "10m", "2 hours", "1 day" (max 48h, default 48h)').addHelpText("after",p({output:' {"object":"email","id":"<email-id>","url":"<share-link-url>"}',errorCodes:["auth_error","create_error"],examples:["resend emails share <email-id>",'resend emails share <email-id> --expires-in "1 day"',"resend emails share <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i);await M({loading:"Creating share link...",sdkCall:n=>n.emails.share(r,t.expiresIn!==void 0?{expiresIn:t.expiresIn}:void 0),onInteractive:n=>{console.log(` ${$r.default.gray("ID:")} ${n.id}`),console.log(` ${$r.default.gray("URL:")} ${n.url}`)}},i)});var Zc=new u("update").description("Update a scheduled email").argument("[id]","Email ID").requiredOption("--scheduled-at <datetime>","New scheduled date in ISO 8601 format (e.g. 2024-08-05T11:52:01.858Z)").addHelpText("after",p({context:"Required: --scheduled-at",output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","update_error"],examples:["resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z","resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ne,i);await B({loading:"Updating email...",sdkCall:n=>n.emails.update({id:r,scheduledAt:t.scheduledAt}),errorCode:"update_error",successMsg:`Email updated: ${r}`},i)});var ed=new u("emails").description("Send and manage emails").addHelpText("after",p({examples:['resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi"',"resend emails get <email-id>","resend emails batch --file ./emails.json","resend emails cancel <email-id>","resend emails share <email-id>","resend emails metrics","resend emails attachments <email-id>","resend emails attachment <email-id> <attachment-id>","resend emails receiving list","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(Bc,{isDefault:!0}).addCommand(Yc).addCommand(Ec).addCommand(_c).addCommand(Dc).addCommand(Zc).addCommand(Xc).addCommand(Oc).addCommand(Rc).addCommand(Fc).addCommand(qc);var Cg=new Set(["string","number","boolean","date"]);function Gr(e){if(!e)return"(none)";let t=Object.entries(e);return t.length===0?"(empty)":t.map(([o,i])=>`${o}:${i}`).join(", ")}function td(e){let t=e.map(o=>[o.name,Gr(o.schema),o.created_at,o.id]);return _(["Name","Schema","Created","ID"],t,"(no events)")}function Ui(e,t){if(e==="null")return null;let o=Ft(e,"--schema",t);(typeof o!="object"||o===null||Array.isArray(o))&&g({message:"--schema must be a JSON object mapping field names to types (string | number | boolean | date).",code:"invalid_schema"},{json:t.json});for(let[i,r]of Object.entries(o))(typeof r!="string"||!Cg.has(r))&&g({message:`Invalid schema type for "${i}": "${r}". Must be one of: string, number, boolean, date.`,code:"invalid_schema"},{json:t.json});return o}var zt={resource:"event",resourcePlural:"events",fetchItems:(e,{limit:t,after:o})=>e.events.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var od=new u("create").description("Create a new event definition").option("--name <name>","Event name (e.g. user.signed_up)").option("--schema <json>","Schema as JSON mapping field names to types (string | number | boolean | date)").addHelpText("after",p({context:`Non-interactive: --name is required. --schema is optional.
698
+ `),c=oe(e.textFile,o)),e.reactEmail&&(d=await Ne(e.reactEmail,o));let m=c;!r&&!e.reactEmail&&!d&&!c&&(m=await P(void 0,{message:"Email body (plain text)",placeholder:"Hello, World!",defaultValue:"Hello, World!"},{message:"Missing email body. Provide --html, --html-file, --text, --text-file, or --react-email",code:"missing_body"},o));let f=e.to??[l.to],b=e.attachment?.map(K=>{let x;try{x=Jc(K)}catch(I){return g({message:I.message,code:"invalid_attachment"},{json:o.json})}let D={...x.contentType&&{contentType:x.contentType},...x.contentId&&{contentId:x.contentId}};if(x.isUrl)return{path:x.source,...x.filename&&{filename:x.filename},...D};try{let I=(0,zc.readFileSync)(x.source);return{filename:x.filename??(0,Yc.basename)(x.source),content:I,...D}}catch{return g({message:`Failed to read file: ${x.source}`,code:"file_read_error"},{json:o.json})}});if(e.attachmentsFile!==void 0){let K=oe(e.attachmentsFile,o);try{b=[...b??[],...Vc(K)]}catch(x){g({message:x.message,code:"invalid_attachment"},{json:o.json})}}let h=e.headers?Object.fromEntries(e.headers.map(K=>{let x=K.indexOf("=");return x<1&&g({message:`Invalid header format: "${K}". Expected key=value.`,code:"invalid_header"},{json:o.json}),[K.slice(0,x),K.slice(x+1)]})):void 0,A=e.tags?.map(K=>{let x=K.indexOf("=");return x<1&&g({message:`Invalid tag format: "${K}". Expected name=value.`,code:"invalid_tag"},{json:o.json}),{name:K.slice(0,x),value:K.slice(x+1)}}),w;if(r?w={template:{id:e.template,...n&&{variables:n}},to:f,...l.from&&{from:l.from},...l.subject&&{subject:l.subject},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...h&&{headers:h},...A&&{tags:A}}:w={from:l.from,to:f,subject:l.subject,...d&&{html:d},...m&&{text:m},...e.cc&&{cc:e.cc},...e.bcc&&{bcc:e.bcc},...e.replyTo&&{replyTo:e.replyTo},...e.scheduledAt&&{scheduledAt:e.scheduledAt},...b&&{attachments:b},...h&&{headers:h},...A&&{tags:A}},e.dryRun){H({dryRun:!0,request:Cg(w)},{json:o.json});return}let S=await Y(o,{permission:"sending_access"}),v=await ae(e.scheduledAt?"Scheduling email...":"Sending email...",()=>S.emails.send(w,e.idempotencyKey?{idempotencyKey:e.idempotencyKey}:void 0),"send_error",o);!o.json&&U()?e.scheduledAt?console.log(`Email scheduled: ${v.id}`):console.log(`Email sent: ${v.id}`):H(v,{json:o.json})});var $r=ue(ze(),1);var Zc=new u("share").description("Create a shareable link for a sent or received email").argument("[id]","Email ID").option("--expires-in <duration>",'Link expiration, e.g. "10m", "2 hours", "1 day" (max 48h, default 48h)').addHelpText("after",p({output:' {"object":"email","id":"<email-id>","url":"<share-link-url>"}',errorCodes:["auth_error","create_error"],examples:["resend emails share <email-id>",'resend emails share <email-id> --expires-in "1 day"',"resend emails share <email-id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Me,i);await M({loading:"Creating share link...",sdkCall:n=>n.emails.share(r,t.expiresIn!==void 0?{expiresIn:t.expiresIn}:void 0),onInteractive:n=>{console.log(` ${$r.default.gray("ID:")} ${n.id}`),console.log(` ${$r.default.gray("URL:")} ${n.url}`)}},i)});var ed=new u("update").description("Update a scheduled email").argument("[id]","Email ID").requiredOption("--scheduled-at <datetime>","New scheduled date in ISO 8601 format (e.g. 2024-08-05T11:52:01.858Z)").addHelpText("after",p({context:"Required: --scheduled-at",output:' {"object":"email","id":"<email-id>"}',errorCodes:["auth_error","update_error"],examples:["resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z","resend emails update <email-id> --scheduled-at 2024-08-05T11:52:01.858Z --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Me,i);await B({loading:"Updating email...",sdkCall:n=>n.emails.update({id:r,scheduledAt:t.scheduledAt}),errorCode:"update_error",successMsg:`Email updated: ${r}`},i)});var td=new u("emails").description("Send and manage emails").addHelpText("after",p({examples:['resend emails send --from onboarding@resend.dev --to delivered@resend.dev --subject "Hello" --text "Hi"',"resend emails get <email-id>","resend emails batch --file ./emails.json","resend emails cancel <email-id>","resend emails share <email-id>","resend emails metrics","resend emails attachments <email-id>","resend emails attachment <email-id> <attachment-id>","resend emails receiving list","resend emails receiving forward <email-id> --to delivered@resend.dev --from onboarding@resend.dev"]})).addCommand(Oc,{isDefault:!0}).addCommand(Xc).addCommand(Bc).addCommand(Dc).addCommand(Ec).addCommand(ed).addCommand(Zc).addCommand(Tc).addCommand(_c).addCommand(Rc).addCommand(Lc);var wg=new Set(["string","number","boolean","date"]);function Gr(e){if(!e)return"(none)";let t=Object.entries(e);return t.length===0?"(empty)":t.map(([o,i])=>`${o}:${i}`).join(", ")}function od(e){let t=e.map(o=>[o.name,Gr(o.schema),o.created_at,o.id]);return _(["Name","Schema","Created","ID"],t,"(no events)")}function Ui(e,t){if(e==="null")return null;let o=Ft(e,"--schema",t);(typeof o!="object"||o===null||Array.isArray(o))&&g({message:"--schema must be a JSON object mapping field names to types (string | number | boolean | date).",code:"invalid_schema"},{json:t.json});for(let[i,r]of Object.entries(o))(typeof r!="string"||!wg.has(r))&&g({message:`Invalid schema type for "${i}": "${r}". Must be one of: string, number, boolean, date.`,code:"invalid_schema"},{json:t.json});return o}var zt={resource:"event",resourcePlural:"events",fetchItems:(e,{limit:t,after:o})=>e.events.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};var id=new u("create").description("Create a new event definition").option("--name <name>","Event name (e.g. user.signed_up)").option("--schema <json>","Schema as JSON mapping field names to types (string | number | boolean | date)").addHelpText("after",p({context:`Non-interactive: --name is required. --schema is optional.
697
699
 
698
700
  Schema format:
699
701
  A JSON object mapping field names to type strings.
700
702
  Valid types: string, number, boolean, date.
701
- Example: '{"plan":"string","age":"number","active":"boolean"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_name","invalid_schema","create_error"],examples:['resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,'resend events create --name "user.signed_up" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --name flag.",code:"missing_name"},o),r=e.schema?Ui(e.schema,o):void 0;await M({loading:"Creating event...",sdkCall:n=>n.events.create({name:i,...r!==void 0&&{schema:r}}),onInteractive:n=>{console.log(`Event created: ${n.id}`)}},o)});var id=new u("delete").alias("rm").description("Delete an event definition").argument("[id]","Event ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"event","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend events delete <id> --yes","resend events delete <id> --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,zt,i);await te(r,!!t.yes,{confirmMessage:`Delete event ${r}?
702
- This cannot be undone.`,loading:"Deleting event...",object:"event",successMsg:"Event deleted",sdkCall:n=>n.events.remove(r)},i)});var rd=new u("get").description("Retrieve an event definition").argument("[id]","Event ID").addHelpText("after",p({output:" Full event object including schema.",errorCodes:["auth_error","fetch_error"],examples:["resend events get <id>","resend events get <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,zt,i);await Q({loading:"Fetching event...",sdkCall:n=>n.events.get(r),onInteractive:n=>{console.log(n.name),console.log(`ID: ${n.id}`),console.log(`Schema: ${Gr(n.schema)}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`)}},i)});var nd=new u("list").alias("ls").description("List all events").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this cursor (next page)").option("--before <cursor>","Return events before this cursor (previous page)").addHelpText("after",p({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend events list","resend events list --limit 25 --json","resend events list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching events...",sdkCall:n=>n.events.list(r),onInteractive:n=>{console.log(td(n.data)),T(n,"events list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var sd=new u("open").description("Open the events page in the Resend dashboard").addHelpText("after",p({context:"Opens the events management page in the Resend dashboard in your default browser.",examples:["resend events open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.events,o)});var ad=new u("send").description("Send an event to trigger automations for a contact").option("--event <name>","Event name (e.g. user.signed_up)").option("--contact-id <id>","Contact ID (mutually exclusive with --email)").option("--email <email>","Contact email (mutually exclusive with --contact-id)").option("--payload <json>","Event payload as JSON string").addHelpText("after",p({context:`Sends an event for a specific contact, triggering any automations listening for it.
703
+ Example: '{"plan":"string","age":"number","active":"boolean"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_name","invalid_schema","create_error"],examples:['resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,'resend events create --name "user.signed_up" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --name flag.",code:"missing_name"},o),r=e.schema?Ui(e.schema,o):void 0;await M({loading:"Creating event...",sdkCall:n=>n.events.create({name:i,...r!==void 0&&{schema:r}}),onInteractive:n=>{console.log(`Event created: ${n.id}`)}},o)});var rd=new u("delete").alias("rm").description("Delete an event definition").argument("[id]","Event ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:"Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.",output:' {"object":"event","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend events delete <id> --yes","resend events delete <id> --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,zt,i);await te(r,!!t.yes,{confirmMessage:`Delete event ${r}?
704
+ This cannot be undone.`,loading:"Deleting event...",object:"event",successMsg:"Event deleted",sdkCall:n=>n.events.remove(r)},i)});var nd=new u("get").description("Retrieve an event definition").argument("[id]","Event ID").addHelpText("after",p({output:" Full event object including schema.",errorCodes:["auth_error","fetch_error"],examples:["resend events get <id>","resend events get <id> --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,zt,i);await Q({loading:"Fetching event...",sdkCall:n=>n.events.get(r),onInteractive:n=>{console.log(n.name),console.log(`ID: ${n.id}`),console.log(`Schema: ${Gr(n.schema)}`),console.log(`Created: ${n.created_at}`),n.updated_at&&console.log(`Updated: ${n.updated_at}`)}},i)});var sd=new u("list").alias("ls").description("List all events").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this cursor (next page)").option("--before <cursor>","Return events before this cursor (previous page)").addHelpText("after",p({output:' {"object":"list","data":[...],"has_more":true}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend events list","resend events list --limit 25 --json","resend events list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching events...",sdkCall:n=>n.events.list(r),onInteractive:n=>{console.log(od(n.data)),T(n,"events list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var ad=new u("open").description("Open the events page in the Resend dashboard").addHelpText("after",p({context:"Opens the events management page in the Resend dashboard in your default browser.",examples:["resend events open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.events,o)});var ld=new u("send").description("Send an event to trigger automations for a contact").option("--event <name>","Event name (e.g. user.signed_up)").option("--contact-id <id>","Contact ID (mutually exclusive with --email)").option("--email <email>","Contact email (mutually exclusive with --contact-id)").option("--payload <json>","Event payload as JSON string").addHelpText("after",p({context:`Sends an event for a specific contact, triggering any automations listening for it.
703
705
 
704
706
  Contact targeting:
705
707
  Provide exactly one of --contact-id or --email to identify the contact.
@@ -707,12 +709,12 @@ Contact targeting:
707
709
 
708
710
  Payload:
709
711
  Optional JSON object with event-specific data.
710
- Must match the event's schema if one is defined.`,output:' {"object":"event","event":"<name>"}',errorCodes:["auth_error","missing_event","missing_contact","conflicting_contact","invalid_json","send_error"],examples:['resend events send --event "user.signed_up" --contact-id <id>','resend events send --event "user.signed_up" --email user@example.com',`resend events send --event "order.completed" --contact-id <id> --payload '{"amount":99,"currency":"usd"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals();e.contactId!==void 0&&e.email!==void 0&&g({message:"Cannot use both --contact-id and --email. Provide only one.",code:"conflicting_contact"},{json:o.json});let i=await P(e.event,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --event flag.",code:"missing_event"},o),r=e.contactId,n=e.email;!r&&!n&&(await ht(void 0,{message:"Identify contact by",options:[{value:"contact-id",label:"Contact ID"},{value:"email",label:"Email address"}]},{message:"Missing --contact-id or --email flag.",code:"missing_contact"},o)==="contact-id"?r=await P(void 0,{message:"Contact ID"},{message:"Missing contact ID.",code:"missing_contact"},o):n=await P(void 0,{message:"Email address",placeholder:"user@example.com"},{message:"Missing email.",code:"missing_contact"},o));let s=Ft(e.payload,"--payload",o),a=r?{event:i,contactId:r,...s&&{payload:s}}:{event:i,email:n,...s&&{payload:s}};await B({loading:"Sending event...",sdkCall:l=>l.events.send(a),errorCode:"send_error",successMsg:`Event sent: ${i}`},o)});V();var ld=new u("update").description("Update an event schema").argument("[id]","Event ID").option("--schema <json>",'New schema as JSON (or "null" to clear the schema)').addHelpText("after",p({context:`Non-interactive: --schema is required. Pass "null" to remove the schema.
712
+ Must match the event's schema if one is defined.`,output:' {"object":"event","event":"<name>"}',errorCodes:["auth_error","missing_event","missing_contact","conflicting_contact","invalid_json","send_error"],examples:['resend events send --event "user.signed_up" --contact-id <id>','resend events send --event "user.signed_up" --email user@example.com',`resend events send --event "order.completed" --contact-id <id> --payload '{"amount":99,"currency":"usd"}'`]})).action(async(e,t)=>{let o=t.optsWithGlobals();e.contactId!==void 0&&e.email!==void 0&&g({message:"Cannot use both --contact-id and --email. Provide only one.",code:"conflicting_contact"},{json:o.json});let i=await P(e.event,{message:"Event name",placeholder:"e.g. user.signed_up"},{message:"Missing --event flag.",code:"missing_event"},o),r=e.contactId,n=e.email;!r&&!n&&(await ht(void 0,{message:"Identify contact by",options:[{value:"contact-id",label:"Contact ID"},{value:"email",label:"Email address"}]},{message:"Missing --contact-id or --email flag.",code:"missing_contact"},o)==="contact-id"?r=await P(void 0,{message:"Contact ID"},{message:"Missing contact ID.",code:"missing_contact"},o):n=await P(void 0,{message:"Email address",placeholder:"user@example.com"},{message:"Missing email.",code:"missing_contact"},o));let s=Ft(e.payload,"--payload",o),a=r?{event:i,contactId:r,...s&&{payload:s}}:{event:i,email:n,...s&&{payload:s}};await B({loading:"Sending event...",sdkCall:l=>l.events.send(a),errorCode:"send_error",successMsg:`Event sent: ${i}`},o)});V();var cd=new u("update").description("Update an event schema").argument("[id]","Event ID").option("--schema <json>",'New schema as JSON (or "null" to clear the schema)').addHelpText("after",p({context:`Non-interactive: --schema is required. Pass "null" to remove the schema.
711
713
 
712
714
  Schema format:
713
715
  A JSON object mapping field names to type strings.
714
716
  Valid types: string, number, boolean, date.
715
- Example: '{"plan":"string","age":"number"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_schema","invalid_schema","update_error"],examples:[`resend events update <id> --schema '{"plan":"string","age":"number"}'`,"resend events update <id> --schema null",`resend events update <id> --schema '{"plan":"string"}' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,zt,i),n=t.schema;n===void 0&&((!U()||i.json)&&g({message:"Missing --schema flag.",code:"missing_schema"},{json:i.json}),n=await P(void 0,{message:'Schema JSON (or "null" to clear)',placeholder:'{"field":"string"}'},{message:"Missing --schema flag.",code:"missing_schema"},i));let s=Ui(n,i);await B({loading:"Updating event...",sdkCall:a=>a.events.update(r,{schema:s}),errorCode:"update_error",successMsg:`Event updated: ${r}`},i)});var cd=new u("events").description("Manage events").addHelpText("after",p({context:`Events define the signals that trigger automations.
717
+ Example: '{"plan":"string","age":"number"}'`,output:' {"object":"event","id":"<id>"}',errorCodes:["auth_error","missing_schema","invalid_schema","update_error"],examples:[`resend events update <id> --schema '{"plan":"string","age":"number"}'`,"resend events update <id> --schema null",`resend events update <id> --schema '{"plan":"string"}' --json`]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,zt,i),n=t.schema;n===void 0&&((!U()||i.json)&&g({message:"Missing --schema flag.",code:"missing_schema"},{json:i.json}),n=await P(void 0,{message:'Schema JSON (or "null" to clear)',placeholder:'{"field":"string"}'},{message:"Missing --schema flag.",code:"missing_schema"},i));let s=Ui(n,i);await B({loading:"Updating event...",sdkCall:a=>a.events.update(r,{schema:s}),errorCode:"update_error",successMsg:`Event updated: ${r}`},i)});var dd=new u("events").description("Manage events").addHelpText("after",p({context:`Events define the signals that trigger automations.
716
718
  Each event has a name and an optional typed schema (string | number | boolean | date fields).
717
719
 
718
720
  Lifecycle:
@@ -721,70 +723,70 @@ Lifecycle:
721
723
  3. resend events list
722
724
  4. resend events get <id>
723
725
  5. resend events update <id> --schema '{"plan":"string","trial":"boolean"}'
724
- 6. resend events delete <id> --yes`,examples:["resend events list",'resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,"resend events get <id>",`resend events update <id> --schema '{"plan":"string"}'`,"resend events update <id> --schema null","resend events delete <id> --yes",'resend events send --event "user.signed_up" --contact-id <id>',`resend events send --event "user.signed_up" --email user@example.com --payload '{"plan":"pro"}'`]})).addCommand(od).addCommand(rd).addCommand(nd,{isDefault:!0}).addCommand(ld).addCommand(id).addCommand(sd).addCommand(ad);function dd(e){let t=e.map(o=>[o.method,o.endpoint,String(o.response_status),o.created_at,o.id]);return _(["Method","Endpoint","Status","Created","ID"],t,"(no logs)")}var ud={resource:"log",resourcePlural:"logs",fetchItems:(e,{limit:t,after:o})=>e.logs.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.method} ${e.endpoint}`,hint:e.id})};var md=new u("get").description("Retrieve a single API request log with full request/response bodies").argument("[id]","Log ID").addHelpText("after",p({output:" Full log object including request_body and response_body.",errorCodes:["auth_error","fetch_error"],examples:["resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ud,i);await Q({loading:"Fetching log...",sdkCall:n=>n.logs.get(r),onInteractive:n=>{console.log(`${n.method} ${n.endpoint} \u2014 ${n.response_status}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`User-Agent: ${n.user_agent??"(none)"}`),n.request_body&&console.log(`
726
+ 6. resend events delete <id> --yes`,examples:["resend events list",'resend events create --name "user.signed_up"',`resend events create --name "order.completed" --schema '{"amount":"number","currency":"string"}'`,"resend events get <id>",`resend events update <id> --schema '{"plan":"string"}'`,"resend events update <id> --schema null","resend events delete <id> --yes",'resend events send --event "user.signed_up" --contact-id <id>',`resend events send --event "user.signed_up" --email user@example.com --payload '{"plan":"pro"}'`]})).addCommand(id).addCommand(nd).addCommand(sd,{isDefault:!0}).addCommand(cd).addCommand(rd).addCommand(ad).addCommand(ld);function ud(e){let t=e.map(o=>[o.method,o.endpoint,String(o.response_status),o.created_at,o.id]);return _(["Method","Endpoint","Status","Created","ID"],t,"(no logs)")}var md={resource:"log",resourcePlural:"logs",fetchItems:(e,{limit:t,after:o})=>e.logs.list({limit:t,...o&&{after:o}}),display:e=>({label:`${e.method} ${e.endpoint}`,hint:e.id})};var pd=new u("get").description("Retrieve a single API request log with full request/response bodies").argument("[id]","Log ID").addHelpText("after",p({output:" Full log object including request_body and response_body.",errorCodes:["auth_error","fetch_error"],examples:["resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,md,i);await Q({loading:"Fetching log...",sdkCall:n=>n.logs.get(r),onInteractive:n=>{console.log(`${n.method} ${n.endpoint} \u2014 ${n.response_status}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`),console.log(`User-Agent: ${n.user_agent??"(none)"}`),n.request_body&&console.log(`
725
727
  Request Body:
726
728
  ${JSON.stringify(n.request_body,null,2)}`),n.response_body&&console.log(`
727
729
  Response Body:
728
- ${JSON.stringify(n.response_body,null,2)}`)}},i)});var pd=new u("list").alias("ls").description("List API request logs").option("--limit <n>","Maximum number of logs to return (1-100)","10").option("--after <cursor>","Return logs after this cursor (next page)").option("--before <cursor>","Return logs before this cursor (previous page)").addHelpText("after",p({output:` {"object":"list","data":[...],"has_more":true}
729
- The list response does not include request/response bodies \u2014 use "resend logs get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend logs list","resend logs list --limit 25 --json","resend logs list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching logs...",sdkCall:n=>n.logs.list(r),onInteractive:n=>{console.log(dd(n.data)),T(n,"logs list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var fd=new u("open").description("Open a log or the logs list in the Resend dashboard").argument("[id]","Log ID \u2014 omit to open the logs list").addHelpText("after",p({context:`Opens the Resend dashboard in your default browser.
730
+ ${JSON.stringify(n.response_body,null,2)}`)}},i)});var fd=new u("list").alias("ls").description("List API request logs").option("--limit <n>","Maximum number of logs to return (1-100)","10").option("--after <cursor>","Return logs after this cursor (next page)").option("--before <cursor>","Return logs before this cursor (previous page)").addHelpText("after",p({output:` {"object":"list","data":[...],"has_more":true}
731
+ The list response does not include request/response bodies \u2014 use "resend logs get <id>" for that.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend logs list","resend logs list --limit 25 --json","resend logs list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching logs...",sdkCall:n=>n.logs.list(r),onInteractive:n=>{console.log(ud(n.data)),T(n,"logs list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var gd=new u("open").description("Open a log or the logs list in the Resend dashboard").argument("[id]","Log ID \u2014 omit to open the logs list").addHelpText("after",p({context:`Opens the Resend dashboard in your default browser.
730
732
  With an ID: opens that log's detail page.
731
- Without an ID: opens the logs list.`,examples:["resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).action(async(e,t,o)=>{let i=e?pe.log(e):pe.logs,r=o.optsWithGlobals();await De(i,r)});var gd=new u("logs").description("View API request logs").addHelpText("after",p({examples:["resend logs list","resend logs list --limit 25 --json","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).addCommand(md).addCommand(pd,{isDefault:!0}).addCommand(fd);var hd={resource:"OAuth grant",resourcePlural:"OAuth grants",fetchItems:(e,{limit:t,after:o})=>e.oauthGrants.list({limit:t,...o&&{after:o}}),display:e=>({label:e.client.name,hint:e.id})};function Ad(e){let t=e.map(o=>[o.client.name,o.id,o.scopes.join(", "),o.created_at,o.revoked_at??""]);return _(["Client","ID","Scopes","Created","Revoked"],t,"(no OAuth grants)")}var bd=new u("list").alias("ls").description("List OAuth grants for the team (both active and revoked), including each grant's client, scopes, and revocation status").option("--limit <n>","Maximum number of OAuth grants to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({output:` {"object":"list","has_more":false,"data":[{"id":"<id>","client_id":"<id>","scopes":["<scope>"],"created_at":"<date>","revoked_at":"<date>|null","revoked_reason":"<reason>|null","client":{"name":"<name>","logo_uri":"<url>|null"}}]}
732
- Revoked grants have non-null revoked_at and revoked_reason.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching OAuth grants...",sdkCall:n=>n.oauthGrants.list(r),onInteractive:n=>{console.log(Ad(n.data)),T(n,"oauth-grants list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var yd=new u("revoke").description("Revoke an OAuth grant \u2014 every access and refresh token issued under it stops working immediately").argument("[id]","OAuth grant ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:`Non-interactive: --yes is required to confirm revocation when stdin/stdout is not a TTY.
733
+ Without an ID: opens the logs list.`,examples:["resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).action(async(e,t,o)=>{let i=e?pe.log(e):pe.logs,r=o.optsWithGlobals();await De(i,r)});var hd=new u("logs").description("View API request logs").addHelpText("after",p({examples:["resend logs list","resend logs list --limit 25 --json","resend logs get 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55","resend logs open","resend logs open 3d4a472d-bc6d-4dd2-aa9d-d3d11b549e55"]})).addCommand(pd).addCommand(fd,{isDefault:!0}).addCommand(gd);var Ad={resource:"OAuth grant",resourcePlural:"OAuth grants",fetchItems:(e,{limit:t,after:o})=>e.oauthGrants.list({limit:t,...o&&{after:o}}),display:e=>({label:e.client.name,hint:e.id})};function bd(e){let t=e.map(o=>[o.client.name,o.id,o.scopes.join(", "),o.created_at,o.revoked_at??""]);return _(["Client","ID","Scopes","Created","Revoked"],t,"(no OAuth grants)")}var yd=new u("list").alias("ls").description("List OAuth grants for the team (both active and revoked), including each grant's client, scopes, and revocation status").option("--limit <n>","Maximum number of OAuth grants to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({output:` {"object":"list","has_more":false,"data":[{"id":"<id>","client_id":"<id>","scopes":["<scope>"],"created_at":"<date>","revoked_at":"<date>|null","revoked_reason":"<reason>|null","client":{"name":"<name>","logo_uri":"<url>|null"}}]}
734
+ Revoked grants have non-null revoked_at and revoked_reason.`,errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants list --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching OAuth grants...",sdkCall:n=>n.oauthGrants.list(r),onInteractive:n=>{console.log(bd(n.data)),T(n,"oauth-grants list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Cd=new u("revoke").description("Revoke an OAuth grant \u2014 every access and refresh token issued under it stops working immediately").argument("[id]","OAuth grant ID").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:`Non-interactive: --yes is required to confirm revocation when stdin/stdout is not a TTY.
733
735
 
734
736
  Any team API key can revoke any of the team's grants. Revocation is immediate and
735
- irreversible \u2014 the client would need to re-authorize to regain access.`,output:' {"object":"oauth_grant","id":"<id>","revoked_at":"<date>","revoked_reason":"<reason>"}',errorCodes:["auth_error","confirmation_required","revoke_error"],examples:["resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes","resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,hd,i);t.yes||await ii(r.id,`Revoke OAuth grant for "${r.label}"?
737
+ irreversible \u2014 the client would need to re-authorize to regain access.`,output:' {"object":"oauth_grant","id":"<id>","revoked_at":"<date>","revoked_reason":"<reason>"}',errorCodes:["auth_error","confirmation_required","revoke_error"],examples:["resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes","resend oauth-grants revoke 650e8400-e29b-41d4-a716-446655440001 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Ad,i);t.yes||await ii(r.id,`Revoke OAuth grant for "${r.label}"?
736
738
  ID: ${r.id}
737
- Every access and refresh token issued under it will stop working.`,i),await B({loading:"Revoking OAuth grant...",sdkCall:n=>n.oauthGrants.revoke(r.id),errorCode:"revoke_error",successMsg:"OAuth grant revoked"},i)});var Cd=new u("oauth-grants").description("Manage OAuth grants (apps authorized to act on the team)").addHelpText("after",p({context:`An OAuth grant is a durable record of a client (app) authorized by the team.
739
+ Every access and refresh token issued under it will stop working.`,i),await B({loading:"Revoking OAuth grant...",sdkCall:n=>n.oauthGrants.revoke(r.id),errorCode:"revoke_error",successMsg:"OAuth grant revoked"},i)});var wd=new u("oauth-grants").description("Manage OAuth grants (apps authorized to act on the team)").addHelpText("after",p({context:`An OAuth grant is a durable record of a client (app) authorized by the team.
738
740
  - Listing returns every grant, active and revoked. revoked_at/revoked_reason are null while active.
739
- - Revoking is immediate: all access and refresh tokens issued under the grant stop working.`,examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants revoke <id> --yes"]})).addCommand(bd,{isDefault:!0}).addCommand(yd);var wd=new u("open").description("Open the Resend dashboard in your browser").addHelpText("after",p({context:"Opens https://resend.com/emails in your default browser.",examples:["resend open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.emails,o)});var Ud=new u("contacts").description("List contacts belonging to a segment").argument("[segmentId]","ID of the segment").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",p({context:`Lists all contacts that belong to the given segment.
741
+ - Revoking is immediate: all access and refresh tokens issued under the grant stop working.`,examples:["resend oauth-grants list","resend oauth-grants list --limit 25 --json","resend oauth-grants revoke <id> --yes"]})).addCommand(yd,{isDefault:!0}).addCommand(Cd);var Ud=new u("open").description("Open the Resend dashboard in your browser").addHelpText("after",p({context:"Opens https://resend.com/emails in your default browser.",examples:["resend open"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await De(pe.emails,o)});var Sd=new u("contacts").description("List contacts belonging to a segment").argument("[segmentId]","ID of the segment").option("--limit <n>","Maximum number of contacts to return (1-100)","10").option("--after <cursor>","Return contacts after this cursor (next page)").option("--before <cursor>","Return contacts before this cursor (previous page)").addHelpText("after",p({context:`Lists all contacts that belong to the given segment.
740
742
 
741
743
  If no segment ID is provided interactively, a picker will prompt you to choose one.
742
744
 
743
745
  Pagination: use --after or --before with a contact ID as the cursor.
744
746
  Only one of --after or --before may be used at a time.
745
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --limit 25 --json","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --after 479e3145-dd38-4932-8c0c-e58b548c9e76"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching segment contacts...",sdkCall:a=>a.contacts.list({segmentId:r,...s}),onInteractive:a=>{console.log(hi(a.data)),T(a,`segments contacts ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var Sd=new u("create").description("Create a new segment").option("--name <name>","Segment name (required)").addHelpText("after",p({context:`Segments are named groups of contacts. Broadcasts target segments via segment_id.
747
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"...","email":"...","first_name":"...","last_name":"...","unsubscribed":false}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --limit 25 --json","resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf --after 479e3145-dd38-4932-8c0c-e58b548c9e76"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i),n=O(t.limit,i),s=$(n,t.after,t.before,i);await F({loading:"Fetching segment contacts...",sdkCall:a=>a.contacts.list({segmentId:r,...s}),onInteractive:a=>{console.log(hi(a.data)),T(a,`segments contacts ${r}`,{limit:n,before:t.before,apiKey:i.apiKey,profile:i.profile})}},i)});var vd=new u("create").description("Create a new segment").option("--name <name>","Segment name (required)").addHelpText("after",p({context:`Segments are named groups of contacts. Broadcasts target segments via segment_id.
746
748
  Contacts can belong to multiple segments. Audiences are deprecated \u2014 use segments instead.
747
749
 
748
- Non-interactive: --name is required.`,output:' {"object":"segment","id":"<uuid>","name":"<name>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend segments create --name "Newsletter Subscribers"','resend segments create --name "Beta Users" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Segment name",placeholder:"e.g. Newsletter Subscribers"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating segment...",sdkCall:r=>r.segments.create({name:i}),onInteractive:r=>{console.log(`Segment created: ${r.id}`),console.log(`Name: ${r.name}`)}},o)});var vd=new u("delete").alias("rm").description("Delete a segment").argument("[id]","Segment UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a segment removes it as a target for future broadcasts,
750
+ Non-interactive: --name is required.`,output:' {"object":"segment","id":"<uuid>","name":"<name>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend segments create --name "Newsletter Subscribers"','resend segments create --name "Beta Users" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Segment name",placeholder:"e.g. Newsletter Subscribers"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating segment...",sdkCall:r=>r.segments.create({name:i}),onInteractive:r=>{console.log(`Segment created: ${r.id}`),console.log(`Name: ${r.name}`)}},o)});var Kd=new u("delete").alias("rm").description("Delete a segment").argument("[id]","Segment UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a segment removes it as a target for future broadcasts,
749
751
  but does NOT delete the contacts within it.
750
752
 
751
753
  Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"segment","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Ee,i);await te(r.id,!!t.yes,{confirmMessage:`Delete segment "${r.label}"?
752
754
  ID: ${r.id}
753
- Contacts will not be deleted, but broadcasts targeting this segment will no longer work.`,loading:"Deleting segment...",object:"segment",successMsg:"Segment deleted",sdkCall:n=>n.segments.remove(r.id)},i)});var Kd=new u("get").description("Retrieve a segment by ID").argument("[id]","Segment UUID").addHelpText("after",p({output:' {"object":"segment","id":"<uuid>","name":"<name>","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i);await Q({loading:"Fetching segment...",sdkCall:n=>n.segments.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`)}},i)});var xd=new u("list").alias("ls").description("List all segments").option("--limit <n>","Maximum number of segments to return (1-100)","10").option("--after <cursor>","Return segments after this cursor (next page)").option("--before <cursor>","Return segments before this cursor (previous page)").addHelpText("after",p({context:`Pagination: use --after or --before with a segment ID as the cursor.
755
+ Contacts will not be deleted, but broadcasts targeting this segment will no longer work.`,loading:"Deleting segment...",object:"segment",successMsg:"Segment deleted",sdkCall:n=>n.segments.remove(r.id)},i)});var xd=new u("get").description("Retrieve a segment by ID").argument("[id]","Segment UUID").addHelpText("after",p({output:' {"object":"segment","id":"<uuid>","name":"<name>","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i);await Q({loading:"Fetching segment...",sdkCall:n=>n.segments.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Created: ${n.created_at}`)}},i)});var kd=new u("list").alias("ls").description("List all segments").option("--limit <n>","Maximum number of segments to return (1-100)","10").option("--after <cursor>","Return segments after this cursor (next page)").option("--before <cursor>","Return segments before this cursor (previous page)").addHelpText("after",p({context:`Pagination: use --after or --before with a segment ID as the cursor.
754
756
  Only one of --after or --before may be used at a time.
755
757
  The response includes has_more: true when additional pages exist.
756
758
 
757
759
  Use "resend segments list" to discover segment IDs for use with broadcasts
758
- or "resend contacts add-segment".`,output:' {"object":"list","data":[{"id":"<uuid>","name":"<name>","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments list","resend segments list --limit 25 --json","resend segments list --after 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching segments...",sdkCall:n=>n.segments.list(r),onInteractive:n=>{console.log(pi(n.data)),T(n,"segments list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var kd=new u("update").description("Rename a segment").argument("[id]","Segment UUID").option("--name <name>","New segment name").addHelpText("after",p({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).",output:' {"object":"segment","id":"<uuid>"}',errorCodes:["auth_error","missing_name","update_error"],examples:['resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"','resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i),n=await P(t.name,{message:"New segment name",placeholder:"e.g. Active Subscribers",validate:s=>{if(!s)return"Name is required"}},{message:"Missing --name flag.",code:"missing_name"},i);n||g({message:"Name is required.",code:"missing_name"},{json:i.json}),await B({loading:"Updating segment...",sdkCall:s=>s.segments.update(r,{name:n}),errorCode:"update_error",successMsg:`Segment updated: ${r}`},i)});var Fd=new u("segments").description("Manage segments").addHelpText("after",p({context:`Segments are the modern replacement for Audiences (deprecated).
760
+ or "resend contacts add-segment".`,output:' {"object":"list","data":[{"id":"<uuid>","name":"<name>","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend segments list","resend segments list --limit 25 --json","resend segments list --after 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching segments...",sdkCall:n=>n.segments.list(r),onInteractive:n=>{console.log(pi(n.data)),T(n,"segments list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Fd=new u("update").description("Rename a segment").argument("[id]","Segment UUID").option("--name <name>","New segment name").addHelpText("after",p({context:"Non-interactive: --name is required (no prompts when stdin/stdout is not a TTY).",output:' {"object":"segment","id":"<uuid>"}',errorCodes:["auth_error","missing_name","update_error"],examples:['resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"','resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ee,i),n=await P(t.name,{message:"New segment name",placeholder:"e.g. Active Subscribers",validate:s=>{if(!s)return"Name is required"}},{message:"Missing --name flag.",code:"missing_name"},i);n||g({message:"Name is required.",code:"missing_name"},{json:i.json}),await B({loading:"Updating segment...",sdkCall:s=>s.segments.update(r,{name:n}),errorCode:"update_error",successMsg:`Segment updated: ${r}`},i)});var Rd=new u("segments").description("Manage segments").addHelpText("after",p({context:`Segments are the modern replacement for Audiences (deprecated).
759
761
  A segment is a named group of contacts. Broadcasts target segments via segment_id.
760
762
  Contacts can belong to multiple segments.
761
763
 
762
764
  Segment membership is managed through the contacts namespace:
763
765
  resend contacts add-segment <contactId> --segment-id <segmentId>
764
766
  resend contacts remove-segment <contactId> <segmentId>
765
- resend contacts segments <contactId>`,examples:["resend segments list",'resend segments create --name "Newsletter Subscribers"',"resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"',"resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(Ud).addCommand(Sd).addCommand(Kd).addCommand(xd,{isDefault:!0}).addCommand(kd).addCommand(vd);var Hr=ue(Ve(),1);var Rd=new u("add").description("Suppress an email address so it stops receiving your emails").argument("[email]","Email address to suppress").addHelpText("after",p({context:`Non-interactive: <email> is required (no prompts when stdin/stdout is not a TTY).
767
+ resend contacts segments <contactId>`,examples:["resend segments list",'resend segments create --name "Newsletter Subscribers"',"resend segments get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend segments update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Active Subscribers"',"resend segments contacts 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend segments delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(Sd).addCommand(vd).addCommand(xd).addCommand(kd,{isDefault:!0}).addCommand(Fd).addCommand(Kd);var Hr=ue(ze(),1);var _d=new u("add").description("Suppress an email address so it stops receiving your emails").argument("[email]","Email address to suppress").addHelpText("after",p({context:`Non-interactive: <email> is required (no prompts when stdin/stdout is not a TTY).
766
768
 
767
769
  A suppressed address is skipped on future sends. Added this way, the entry has
768
- origin "manual". Use "suppressions delete" to remove it again.`,output:' {"object":"suppression","id":"<id>"}',errorCodes:["auth_error","missing_email","create_error"],examples:["resend suppressions add spam@example.com","resend suppressions add spam@example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await P(e,{message:"Email to suppress",placeholder:"e.g. spam@example.com"},{message:"Missing <email> argument.",code:"missing_email"},i);await M({loading:"Suppressing address...",sdkCall:n=>n.suppressions.add({email:r}),onInteractive:n=>{console.log(` ${Hr.default.gray("Email:")} ${r}`),console.log(` ${Hr.default.gray("ID:")} ${n.id}`)}},i)});V();function Si(e,t){let o;try{o=JSON.parse(e)}catch{g({message:"File content is not valid JSON.",code:"invalid_json"},{json:t.json})}Array.isArray(o)||g({message:"File content must be a JSON array of strings.",code:"invalid_format"},{json:t.json});let i=o;for(let r=0;r<i.length;r++)(typeof i[r]!="string"||i[r]==="")&&g({message:`Item at index ${r} must be a non-empty string.`,code:"invalid_format"},{json:t.json});return i}var _d=new u("add").description("Suppress up to 100 email addresses from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').addHelpText("after",p({context:`Non-interactive: --file
770
+ origin "manual". Use "suppressions delete" to remove it again.`,output:' {"object":"suppression","id":"<id>"}',errorCodes:["auth_error","missing_email","create_error"],examples:["resend suppressions add spam@example.com","resend suppressions add spam@example.com --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await P(e,{message:"Email to suppress",placeholder:"e.g. spam@example.com"},{message:"Missing <email> argument.",code:"missing_email"},i);await M({loading:"Suppressing address...",sdkCall:n=>n.suppressions.add({email:r}),onInteractive:n=>{console.log(` ${Hr.default.gray("Email:")} ${r}`),console.log(` ${Hr.default.gray("ID:")} ${n.id}`)}},i)});V();function Si(e,t){let o;try{o=JSON.parse(e)}catch{g({message:"File content is not valid JSON.",code:"invalid_json"},{json:t.json})}Array.isArray(o)||g({message:"File content must be a JSON array of strings.",code:"invalid_format"},{json:t.json});let i=o;for(let r=0;r<i.length;r++)(typeof i[r]!="string"||i[r]==="")&&g({message:`Item at index ${r} must be a non-empty string.`,code:"invalid_format"},{json:t.json});return i}var Dd=new u("add").description("Suppress up to 100 email addresses from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').addHelpText("after",p({context:`Non-interactive: --file
769
771
  Limit: 100 emails per request (API hard limit \u2014 warned if exceeded)
770
772
 
771
773
  File format (--file path):
772
- ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>"}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","create_error"],examples:["resend suppressions batch add --file ./emails.json",`echo '["a@example.com","b@example.com"]' | resend suppressions batch add --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email strings.",code:"missing_file"},o),n=oe(r,o),s=Si(n,o);s.length>100&&console.warn(`Warning: ${s.length} emails exceeds the 100-email limit. The API may reject this request.`);let a=await ae("Suppressing addresses...",()=>i.suppressions.batch.add({emails:s}),"create_error",o);if(!o.json&&U()){console.log(`Suppressed ${a.data.length} address${a.data.length===1?"":"es"}`);for(let l of a.data)console.log(` ${l.id}`)}else H(a,{json:o.json})});V();var Dd=new u("remove").alias("rm").description("Remove up to 100 suppressions from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').option("--ids","Treat the file entries as suppression IDs instead of email addresses").addHelpText("after",p({context:`Non-interactive: --file
774
+ ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>"}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","create_error"],examples:["resend suppressions batch add --file ./emails.json",`echo '["a@example.com","b@example.com"]' | resend suppressions batch add --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of email strings.",code:"missing_file"},o),n=oe(r,o),s=Si(n,o);s.length>100&&console.warn(`Warning: ${s.length} emails exceeds the 100-email limit. The API may reject this request.`);let a=await ae("Suppressing addresses...",()=>i.suppressions.batch.add({emails:s}),"create_error",o);if(!o.json&&U()){console.log(`Suppressed ${a.data.length} address${a.data.length===1?"":"es"}`);for(let l of a.data)console.log(` ${l.id}`)}else H(a,{json:o.json})});V();var Ed=new u("remove").alias("rm").description("Remove up to 100 suppressions from a JSON file in one request").option("--file <path>",'Path to a JSON file containing an array of email strings (use "-" for stdin; required in non-interactive mode)').option("--ids","Treat the file entries as suppression IDs instead of email addresses").addHelpText("after",p({context:`Non-interactive: --file
773
775
  Limit: 100 entries per request (API hard limit \u2014 warned if exceeded)
774
776
  By default entries are treated as email addresses; pass --ids to remove by suppression ID.
775
777
 
776
778
  File format (--file path):
777
- ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>","deleted":true}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","delete_error"],examples:["resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids",`echo '["a@example.com","b@example.com"]' | resend suppressions batch rm --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of strings.",code:"missing_file"},o),n=oe(r,o),s=Si(n,o);s.length>100&&console.warn(`Warning: ${s.length} entries exceeds the 100-entry limit. The API may reject this request.`);let a=await ae("Removing suppressions...",()=>i.suppressions.batch.remove(e.ids?{ids:s}:{emails:s}),"delete_error",o);if(!o.json&&U()){console.log(`Removed ${a.data.length} suppression${a.data.length===1?"":"s"}`);for(let l of a.data)console.log(` ${l.id}`)}else H(a,{json:o.json})});var Ed=new u("batch").description("Suppress or remove many addresses in a single request").addHelpText("after",p({context:`Batch operations read a JSON array of strings from --file (up to 100 per request).
778
- "add" always operates on emails. "remove" defaults to emails; pass --ids to remove by ID.`,examples:["resend suppressions batch add --file ./emails.json","resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids"]})).addCommand(_d).addCommand(Dd);var vi={resource:"suppression",resourcePlural:"suppressions",fetchItems:(e,{limit:t,after:o})=>e.suppressions.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function Bd(e){let t=e.map(o=>[o.email,o.id,o.origin,o.created_at]);return _(["Email","ID","Origin","Created"],t,"(no suppressions)")}var Od=new u("delete").alias("rm").description("Remove a suppression so the address can receive your emails again").argument("[id-or-email]","Suppression ID or the suppressed email address").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:`Non-interactive: --yes is required to confirm removal when stdin/stdout is not a TTY.
779
+ ["spam@example.com", "bounce@example.com"]`,output:' {"data":[{"object":"suppression","id":"<id>","deleted":true}]}',errorCodes:["auth_error","missing_file","file_read_error","stdin_read_error","invalid_json","invalid_format","delete_error"],examples:["resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids",`echo '["a@example.com","b@example.com"]' | resend suppressions batch rm --file -`]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await Y(o),r=await P(e.file,{message:"Path to JSON file",placeholder:"./emails.json"},{message:"Missing --file flag. Provide a JSON file with an array of strings.",code:"missing_file"},o),n=oe(r,o),s=Si(n,o);s.length>100&&console.warn(`Warning: ${s.length} entries exceeds the 100-entry limit. The API may reject this request.`);let a=await ae("Removing suppressions...",()=>i.suppressions.batch.remove(e.ids?{ids:s}:{emails:s}),"delete_error",o);if(!o.json&&U()){console.log(`Removed ${a.data.length} suppression${a.data.length===1?"":"s"}`);for(let l of a.data)console.log(` ${l.id}`)}else H(a,{json:o.json})});var Bd=new u("batch").description("Suppress or remove many addresses in a single request").addHelpText("after",p({context:`Batch operations read a JSON array of strings from --file (up to 100 per request).
780
+ "add" always operates on emails. "remove" defaults to emails; pass --ids to remove by ID.`,examples:["resend suppressions batch add --file ./emails.json","resend suppressions batch remove --file ./emails.json","resend suppressions batch remove --file ./ids.json --ids"]})).addCommand(Dd).addCommand(Ed);var vi={resource:"suppression",resourcePlural:"suppressions",fetchItems:(e,{limit:t,after:o})=>e.suppressions.list({limit:t,...o&&{after:o}}),display:e=>({label:e.email,hint:e.id})};function Od(e){let t=e.map(o=>[o.email,o.id,o.origin,o.created_at]);return _(["Email","ID","Origin","Created"],t,"(no suppressions)")}var Td=new u("delete").alias("rm").description("Remove a suppression so the address can receive your emails again").argument("[id-or-email]","Suppression ID or the suppressed email address").option("--yes","Skip confirmation prompt").addHelpText("after",p({context:`Non-interactive: --yes is required to confirm removal when stdin/stdout is not a TTY.
779
781
 
780
782
  Removing a suppression means future sends to this address are no longer skipped.`,output:' {"object":"suppression","id":"<id>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend suppressions delete spam@example.com --yes","resend suppressions rm 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,vi,i);await te(r.id,!!t.yes,{confirmMessage:`Remove suppression "${r.label}"?
781
783
  ID: ${r.id}
782
- Resend will be able to send to this address again.`,loading:"Removing suppression...",object:"suppression",successMsg:"Suppression removed",sdkCall:n=>n.suppressions.remove(r.id)},i)});var Td=new u("get").description("Retrieve a suppression by ID or email address").argument("[id-or-email]","Suppression ID or the suppressed email address").addHelpText("after",p({output:' {"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend suppressions get spam@example.com","resend suppressions get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,vi,i);await Q({loading:"Fetching suppression...",sdkCall:n=>n.suppressions.get(r),onInteractive:n=>{console.log(`${n.email}`),console.log(`ID: ${n.id}`),console.log(`Origin: ${n.origin}`),n.source_id&&console.log(`Source: ${n.source_id}`),console.log(`Created: ${n.created_at}`)}},i)});var Id=new u("list").alias("ls").description("List suppressed email addresses").option("--limit <n>","Maximum number of suppressions to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addOption(new L("--origin <origin>","Filter by how the address was suppressed").choices(["bounce","complaint","manual"])).addHelpText("after",p({output:' {"object":"list","has_more":false,"data":[{"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend suppressions list","resend suppressions list --origin bounce --json","resend suppressions list --limit 25 --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching suppressions...",sdkCall:n=>n.suppressions.list({...r,...e.origin&&{origin:e.origin}}),onInteractive:n=>{console.log(Bd(n.data)),T(n,"suppressions list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,...e.origin&&{extraFlags:`--origin ${e.origin}`}})}},o)});var jd=new u("suppressions").description("Manage the suppression list \u2014 addresses that won't receive your emails").addHelpText("after",p({context:`Suppressions block future sends to an address. Entries have an origin:
784
+ Resend will be able to send to this address again.`,loading:"Removing suppression...",object:"suppression",successMsg:"Suppression removed",sdkCall:n=>n.suppressions.remove(r.id)},i)});var Id=new u("get").description("Retrieve a suppression by ID or email address").argument("[id-or-email]","Suppression ID or the suppressed email address").addHelpText("after",p({output:' {"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend suppressions get spam@example.com","resend suppressions get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,vi,i);await Q({loading:"Fetching suppression...",sdkCall:n=>n.suppressions.get(r),onInteractive:n=>{console.log(`${n.email}`),console.log(`ID: ${n.id}`),console.log(`Origin: ${n.origin}`),n.source_id&&console.log(`Source: ${n.source_id}`),console.log(`Created: ${n.created_at}`)}},i)});var jd=new u("list").alias("ls").description("List suppressed email addresses").option("--limit <n>","Maximum number of suppressions to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addOption(new L("--origin <origin>","Filter by how the address was suppressed").choices(["bounce","complaint","manual"])).addHelpText("after",p({output:' {"object":"list","has_more":false,"data":[{"object":"suppression","id":"<id>","email":"<email>","origin":"bounce|complaint|manual","source_id":"<id>|null","created_at":"<date>"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend suppressions list","resend suppressions list --origin bounce --json","resend suppressions list --limit 25 --after <cursor> --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching suppressions...",sdkCall:n=>n.suppressions.list({...r,...e.origin&&{origin:e.origin}}),onInteractive:n=>{console.log(Od(n.data)),T(n,"suppressions list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile,...e.origin&&{extraFlags:`--origin ${e.origin}`}})}},o)});var Pd=new u("suppressions").description("Manage the suppression list \u2014 addresses that won't receive your emails").addHelpText("after",p({context:`Suppressions block future sends to an address. Entries have an origin:
783
785
  bounce added automatically after a hard bounce
784
786
  complaint added automatically after a spam complaint
785
787
  manual added by you via "suppressions add"
786
788
 
787
- get/delete accept either a suppression ID or the email address.`,examples:["resend suppressions list","resend suppressions add spam@example.com","resend suppressions get spam@example.com","resend suppressions delete spam@example.com --yes","resend suppressions batch add --file ./emails.json"]})).addCommand(Id,{isDefault:!0}).addCommand(Rd).addCommand(Td).addCommand(Od).addCommand(Ed);V();function Ki(e){return e.map(t=>{let[o,i,...r]=t.split(":");if(!o)throw new Error(`Invalid --var "${t}": key is required.`);if(i!=="string"&&i!=="number")throw new Error(`Invalid --var "${t}": type must be "string" or "number".`);let n=r.length?r.join(":"):void 0;if(n!=null&&n==="")throw new Error(`Invalid --var "${t}": fallback value cannot be empty.`);let s=n;if(i==="number"){if(s!=null&&Number.isNaN(Number(s)))throw new Error(`Invalid --var "${t}": fallback "${s}" is not a valid number.`);return{key:o,type:"number",...s!=null?{fallbackValue:Number(s)}:{}}}return{key:o,type:"string",...s!=null?{fallbackValue:s}:{}}})}var Ze={resource:"template",resourcePlural:"templates",fetchItems:(e,{limit:t,after:o})=>e.templates.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function Pd(e){let t=e.map(o=>[o.name,o.status,o.alias??"",o.id,o.created_at]);return _(["Name","Status","Alias","ID","Created"],t,"(no templates)")}var $d=new u("create").description("Create a new template").option("--name <name>","Template name \u2014 required").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--subject <subject>","Email subject").option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Sender address").option("--reply-to <address>","Reply-to address").option("--alias <alias>","Template alias for lookup by name").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",p({context:`Creates a new draft template. Use "resend templates publish" to make it available for sending.
789
+ get/delete accept either a suppression ID or the email address.`,examples:["resend suppressions list","resend suppressions add spam@example.com","resend suppressions get spam@example.com","resend suppressions delete spam@example.com --yes","resend suppressions batch add --file ./emails.json"]})).addCommand(jd,{isDefault:!0}).addCommand(_d).addCommand(Id).addCommand(Td).addCommand(Bd);V();function Ki(e){return e.map(t=>{let[o,i,...r]=t.split(":");if(!o)throw new Error(`Invalid --var "${t}": key is required.`);if(i!=="string"&&i!=="number")throw new Error(`Invalid --var "${t}": type must be "string" or "number".`);let n=r.length?r.join(":"):void 0;if(n!=null&&n==="")throw new Error(`Invalid --var "${t}": fallback value cannot be empty.`);let s=n;if(i==="number"){if(s!=null&&Number.isNaN(Number(s)))throw new Error(`Invalid --var "${t}": fallback "${s}" is not a valid number.`);return{key:o,type:"number",...s!=null?{fallbackValue:Number(s)}:{}}}return{key:o,type:"string",...s!=null?{fallbackValue:s}:{}}})}var Ze={resource:"template",resourcePlural:"templates",fetchItems:(e,{limit:t,after:o})=>e.templates.list({limit:t,...o&&{after:o}}),display:e=>({label:e.name,hint:e.id})};function $d(e){let t=e.map(o=>[o.name,o.status,o.alias??"",o.id,o.created_at]);return _(["Name","Status","Alias","ID","Created"],t,"(no templates)")}var Gd=new u("create").description("Create a new template").option("--name <name>","Template name \u2014 required").option("--html <html>","HTML body").option("--html-file <path>",'Path to an HTML file for the body (use "-" for stdin)').option("--subject <subject>","Email subject").option("--text <text>","Plain-text body").option("--text-file <path>",'Path to a plain-text file for the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Sender address").option("--reply-to <address>","Reply-to address").option("--alias <alias>","Template alias for lookup by name").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",p({context:`Creates a new draft template. Use "resend templates publish" to make it available for sending.
788
790
 
789
791
  --name is required. Body: provide --html, --html-file, or --react-email. Optionally add --text or --text-file for plain-text.
790
792
 
@@ -796,22 +798,22 @@ get/delete accept either a suppression ID or the email address.`,examples:["rese
796
798
 
797
799
  Non-interactive: --name and a body (--html, --html-file, or --react-email) are required. --text-file provides a plain-text fallback.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","missing_name","missing_body","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","create_error"],examples:['resend templates create --name "Welcome" --html "<h1>Hello</h1>" --subject "Welcome!"','resend templates create --name "Newsletter" --html-file ./template.html --from acme@example.com','resend templates create --name "Onboarding" --html "<p>Hi</p>" --alias onboarding --json','resend templates create --name "Order" --html "<p>{{{PRODUCT}}}: {{{PRICE}}}</p>" --var PRODUCT:string:item --var PRICE:number:25']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=e.name;if(!i){(!U()||o.json)&&g({message:"Missing --name flag.",code:"missing_name"},{json:o.json});let s=await z({message:"Template name",placeholder:"e.g. Welcome Email",validate:a=>a?void 0:"Required"});k(s)&&R("Cancelled."),i=s}e.htmlFile==="-"&&e.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:o.json}),e.reactEmail&&(e.html||e.htmlFile)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:o.json});let r=e.html,n=e.text;if(e.htmlFile&&(e.html&&process.stderr.write(`Warning: both --html and --html-file provided; using --html-file
798
800
  `),r=oe(e.htmlFile,o)),e.textFile&&(e.text&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
799
- `),n=oe(e.textFile,o)),e.reactEmail&&(r=await Qe(e.reactEmail,o)),!r){(!U()||o.json)&&g({message:"Missing body. Provide --html, --html-file, or --react-email.",code:"missing_body"},{json:o.json});let s=await z({message:"HTML body",placeholder:"<h1>Hello {{name}}</h1>",validate:a=>a?void 0:"Required"});k(s)&&R("Cancelled."),r=s}await M({loading:"Creating template...",sdkCall:s=>Promise.resolve(s.templates.create({name:i,html:r,...e.subject&&{subject:e.subject},...n&&{text:n},...e.from&&{from:e.from},...e.replyTo&&{replyTo:e.replyTo},...e.alias&&{alias:e.alias},...e.var&&{variables:Ki(e.var)}})),onInteractive:s=>{console.log(`Template created: ${s.id}`)}},o)});var Gd=new u("delete").alias("rm").description("Delete a template").argument("[id]","Template ID or alias").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a template is permanent and cannot be undone.
801
+ `),n=oe(e.textFile,o)),e.reactEmail&&(r=await Ne(e.reactEmail,o)),!r){(!U()||o.json)&&g({message:"Missing body. Provide --html, --html-file, or --react-email.",code:"missing_body"},{json:o.json});let s=await z({message:"HTML body",placeholder:"<h1>Hello {{name}}</h1>",validate:a=>a?void 0:"Required"});k(s)&&R("Cancelled."),r=s}await M({loading:"Creating template...",sdkCall:s=>Promise.resolve(s.templates.create({name:i,html:r,...e.subject&&{subject:e.subject},...n&&{text:n},...e.from&&{from:e.from},...e.replyTo&&{replyTo:e.replyTo},...e.alias&&{alias:e.alias},...e.var&&{variables:Ki(e.var)}})),onInteractive:s=>{console.log(`Template created: ${s.id}`)}},o)});var Hd=new u("delete").alias("rm").description("Delete a template").argument("[id]","Template ID or alias").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a template is permanent and cannot be undone.
800
802
 
801
803
  Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"template","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend templates rm my-template-alias --yes","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,Ze,i);await te(r.id,!!t.yes,{confirmMessage:`Delete template "${r.label}"?
802
804
  ID: ${r.id}
803
- This action is permanent and cannot be undone.`,loading:"Deleting template...",object:"template",successMsg:"Template deleted",sdkCall:n=>n.templates.remove(r.id)},i)});var Hd=new u("duplicate").description("Duplicate a template").argument("[id]","Template ID or alias to duplicate").addHelpText("after",p({context:`Creates a copy of an existing template and returns the new template ID.
805
+ This action is permanent and cannot be undone.`,loading:"Deleting template...",object:"template",successMsg:"Template deleted",sdkCall:n=>n.templates.remove(r.id)},i)});var Qd=new u("duplicate").description("Duplicate a template").argument("[id]","Template ID or alias to duplicate").addHelpText("after",p({context:`Creates a copy of an existing template and returns the new template ID.
804
806
  The duplicate is created as a draft with " (Copy)" appended to the original name.
805
- All fields (HTML, subject, variables, etc.) are copied to the new template.`,output:' {"object":"template","id":"<new-template-id>"}',errorCodes:["auth_error","create_error"],examples:["resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate my-template-alias --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ze,i);await M({loading:"Duplicating template...",sdkCall:n=>Promise.resolve(n.templates.duplicate(r)),onInteractive:n=>{console.log(`Template duplicated: ${n.id}`)}},i)});var Qd=new u("get").description("Retrieve a template by ID or alias").argument("[id]","Template ID or alias").addHelpText("after",p({context:"Returns the full template including HTML body, variables, and publication status.",output:' {"object":"template","id":"...","name":"...","subject":"...","status":"draft|published","html":"...","alias":"...","from":"...","reply_to":["..."],"variables":[...],"created_at":"...","updated_at":"..."}',errorCodes:["auth_error","fetch_error"],examples:["resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates get my-template-alias","resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ze,i);await Q({loading:"Fetching template...",sdkCall:n=>n.templates.get(r),onInteractive:n=>{if(console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),n.alias&&console.log(`Alias: ${n.alias}`),n.subject&&console.log(`Subject: ${n.subject}`),n.from&&console.log(`From: ${n.from}`),n.reply_to?.length&&console.log(`Reply-To: ${n.reply_to.join(", ")}`),n.html){let s=n.html.length>200?`${n.html.slice(0,197)}...`:n.html;console.log(`HTML: ${s}`)}n.variables?.length&&console.log(`Variables: ${n.variables.map(s=>s.key).join(", ")}`),n.published_at&&console.log(`Published: ${n.published_at}`),console.log(`Created: ${n.created_at}`),console.log(`Updated: ${n.updated_at}`)}},i)});var Nd=new u("list").alias("ls").description("List all templates").option("--limit <n>","Maximum number of templates to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|published","alias":"...","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend templates list","resend templates list --limit 5","resend templates list --after <template-id> --limit 10","resend templates list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching templates...",sdkCall:n=>n.templates.list(r),onInteractive:n=>{console.log(Pd(n.data)),T(n,"templates list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var Md=new u("open").description("Open a template or the templates list in the Resend dashboard").argument("[id]","Template ID \u2014 omit to open the templates list").addHelpText("after",p({context:`Opens the Resend dashboard in your default browser.
807
+ All fields (HTML, subject, variables, etc.) are copied to the new template.`,output:' {"object":"template","id":"<new-template-id>"}',errorCodes:["auth_error","create_error"],examples:["resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate my-template-alias --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ze,i);await M({loading:"Duplicating template...",sdkCall:n=>Promise.resolve(n.templates.duplicate(r)),onInteractive:n=>{console.log(`Template duplicated: ${n.id}`)}},i)});var Nd=new u("get").description("Retrieve a template by ID or alias").argument("[id]","Template ID or alias").addHelpText("after",p({context:"Returns the full template including HTML body, variables, and publication status.",output:' {"object":"template","id":"...","name":"...","subject":"...","status":"draft|published","html":"...","alias":"...","from":"...","reply_to":["..."],"variables":[...],"created_at":"...","updated_at":"..."}',errorCodes:["auth_error","fetch_error"],examples:["resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates get my-template-alias","resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ze,i);await Q({loading:"Fetching template...",sdkCall:n=>n.templates.get(r),onInteractive:n=>{if(console.log(`${n.name}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),n.alias&&console.log(`Alias: ${n.alias}`),n.subject&&console.log(`Subject: ${n.subject}`),n.from&&console.log(`From: ${n.from}`),n.reply_to?.length&&console.log(`Reply-To: ${n.reply_to.join(", ")}`),n.html){let s=n.html.length>200?`${n.html.slice(0,197)}...`:n.html;console.log(`HTML: ${s}`)}n.variables?.length&&console.log(`Variables: ${n.variables.map(s=>s.key).join(", ")}`),n.published_at&&console.log(`Published: ${n.published_at}`),console.log(`Created: ${n.created_at}`),console.log(`Updated: ${n.updated_at}`)}},i)});var Md=new u("list").alias("ls").description("List all templates").option("--limit <n>","Maximum number of templates to return (1-100)","10").option("--after <cursor>","Cursor for forward pagination \u2014 list items after this ID").option("--before <cursor>","Cursor for backward pagination \u2014 list items before this ID").addHelpText("after",p({output:' {"object":"list","has_more":false,"data":[{"id":"...","name":"...","status":"draft|published","alias":"...","created_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend templates list","resend templates list --limit 5","resend templates list --after <template-id> --limit 10","resend templates list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching templates...",sdkCall:n=>n.templates.list(r),onInteractive:n=>{console.log($d(n.data)),T(n,"templates list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var qd=new u("open").description("Open a template or the templates list in the Resend dashboard").argument("[id]","Template ID \u2014 omit to open the templates list").addHelpText("after",p({context:`Opens the Resend dashboard in your default browser.
806
808
  With an ID: opens that template's page for editing or viewing.
807
- Without an ID: opens the templates list.`,examples:["resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t,o)=>{let i=e?pe.template(e):pe.templates,r=o.optsWithGlobals();await De(i,r)});var qd=new u("publish").description("Publish a draft template").argument("[id]","Template ID or alias").addHelpText("after",p({context:`Promotes a draft template to published status, making it available for use in emails.
809
+ Without an ID: opens the templates list.`,examples:["resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).action(async(e,t,o)=>{let i=e?pe.template(e):pe.templates,r=o.optsWithGlobals();await De(i,r)});var Ld=new u("publish").description("Publish a draft template").argument("[id]","Template ID or alias").addHelpText("after",p({context:`Promotes a draft template to published status, making it available for use in emails.
808
810
  After updating a published template, re-publish to make the changes live.
809
- Publishing an already-published template re-publishes it with the latest draft changes.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","publish_error"],examples:["resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ze,i);await B({loading:"Publishing template...",sdkCall:n=>n.templates.publish(r),errorCode:"publish_error",successMsg:`Template published: ${r}`,retryTransient:!0},i)});var Ld=new u("update").description("Update an existing template").argument("[id]","Template ID or alias").option("--name <name>","Update template name").option("--html <html>","Update HTML body").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin)').option("--subject <subject>","Update subject").option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Update sender address").option("--reply-to <address>","Update reply-to address").option("--alias <alias>","Update template alias").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",p({context:`At least one option is required. Only the provided fields are changed; others are left as-is.
811
+ Publishing an already-published template re-publishes it with the latest draft changes.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","publish_error"],examples:["resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,Ze,i);await B({loading:"Publishing template...",sdkCall:n=>n.templates.publish(r),errorCode:"publish_error",successMsg:`Template published: ${r}`,retryTransient:!0},i)});var Wd=new u("update").description("Update an existing template").argument("[id]","Template ID or alias").option("--name <name>","Update template name").option("--html <html>","Update HTML body").option("--html-file <path>",'Path to an HTML file to replace the body (use "-" for stdin)').option("--subject <subject>","Update subject").option("--text <text>","Update plain-text body").option("--text-file <path>",'Path to a plain-text file to replace the body (use "-" for stdin)').option("--react-email <path>","Path to a React Email template (.tsx) to bundle, render, and use as HTML body").option("--from <address>","Update sender address").option("--reply-to <address>","Update reply-to address").option("--alias <alias>","Update template alias").option("--var <var...>","Template variable: KEY:type or KEY:type:fallback (repeatable)").addHelpText("after",p({context:`At least one option is required. Only the provided fields are changed; others are left as-is.
810
812
 
811
813
  --var declares a template variable using the format KEY:type or KEY:type:fallback.
812
814
  Valid types: string, number.
813
815
  Variables must match {{{KEY}}} placeholders in the HTML body.`,output:' {"object":"template","id":"<template-id>"}',errorCodes:["auth_error","no_changes","file_read_error","invalid_options","stdin_read_error","react_email_build_error","react_email_render_error","update_error"],examples:['resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Updated Name"',"resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --html-file ./new-template.html",'resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --subject "New Subject" --from "acme@example.com" --json',"resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --var PRODUCT:string:item --var PRICE:number:25"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals();t.name==null&&t.html==null&&t.htmlFile==null&&t.reactEmail==null&&t.subject==null&&t.text==null&&t.textFile==null&&t.from==null&&t.replyTo==null&&t.alias==null&&t.var==null&&g({message:"Provide at least one option to update: --name, --html, --html-file, --react-email, --subject, --text, --text-file, --from, --reply-to, --alias, or --var.",code:"no_changes"},{json:i.json}),t.reactEmail!=null&&(t.html!=null||t.htmlFile!=null)&&g({message:"Cannot use --react-email with --html or --html-file",code:"invalid_options"},{json:i.json}),t.html!=null&&t.htmlFile!=null&&g({message:"--html and --html-file are mutually exclusive.",code:"invalid_options"},{json:i.json}),t.htmlFile==="-"&&t.textFile==="-"&&g({message:"Cannot read both --html-file and --text-file from stdin. Pipe to one and pass the other as a file path.",code:"invalid_options"},{json:i.json});let r=await C(e,Ze,i),n=t.html,s=t.text;t.htmlFile!=null&&(n=oe(t.htmlFile,i)),t.textFile!=null&&(t.text!=null&&process.stderr.write(`Warning: both --text and --text-file provided; using --text-file
814
- `),s=oe(t.textFile,i)),t.reactEmail!=null&&(n=await Qe(t.reactEmail,i)),await B({loading:"Updating template...",sdkCall:a=>a.templates.update(r,{...t.name!=null&&{name:t.name},...n!=null&&{html:n},...t.subject!=null&&{subject:t.subject},...s!=null&&{text:s},...t.from!=null&&{from:t.from},...t.replyTo!=null&&{replyTo:t.replyTo},...t.alias!=null&&{alias:t.alias},...t.var!=null&&{variables:Ki(t.var)}}),errorCode:"update_error",successMsg:`Template updated: ${r}`,retryTransient:!0},i)});var Wd=new u("templates").description("Manage templates").addHelpText("after",p({context:`Lifecycle:
816
+ `),s=oe(t.textFile,i)),t.reactEmail!=null&&(n=await Ne(t.reactEmail,i)),await B({loading:"Updating template...",sdkCall:a=>a.templates.update(r,{...t.name!=null&&{name:t.name},...n!=null&&{html:n},...t.subject!=null&&{subject:t.subject},...s!=null&&{text:s},...t.from!=null&&{from:t.from},...t.replyTo!=null&&{replyTo:t.replyTo},...t.alias!=null&&{alias:t.alias},...t.var!=null&&{variables:Ki(t.var)}}),errorCode:"update_error",successMsg:`Template updated: ${r}`,retryTransient:!0},i)});var Jd=new u("templates").description("Manage templates").addHelpText("after",p({context:`Lifecycle:
815
817
  Templates follow a draft \u2192 published workflow:
816
818
  1. create \u2014 creates a draft template
817
819
  2. update \u2014 edits name, subject, HTML, variables, etc.
@@ -825,7 +827,7 @@ Template variables:
825
827
  Each variable must be declared with --var when creating or updating:
826
828
  --var KEY:type e.g. --var NAME:string
827
829
  --var KEY:type:fallback e.g. --var PRICE:number:25
828
- Valid types: string, number.`,examples:["resend templates list",'resend templates create --name "Welcome" --html "<h1>Hello {{{NAME}}}</h1>" --subject "Welcome!" --var NAME:string',"resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --subject "Updated Subject"',"resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).addCommand($d).addCommand(Qd).addCommand(Md).addCommand(Nd,{isDefault:!0}).addCommand(Ld).addCommand(Gd).addCommand(qd).addCommand(Hd);var Jd=new u("create").description("Create a new topic for subscription management").option("--name <name>","Topic name (required)").option("--description <description>","Description shown to contacts when managing subscriptions").addOption(new L("--default-subscription <mode>","Default subscription state for contacts").choices(["opt_in","opt_out"]).default("opt_in")).addHelpText("after",p({context:`Topics enable fine-grained subscription management. Contacts can opt in or out of
830
+ Valid types: string, number.`,examples:["resend templates list",'resend templates create --name "Welcome" --html "<h1>Hello {{{NAME}}}</h1>" --subject "Welcome!" --var NAME:string',"resend templates get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend templates update 78261eea-8f8b-4381-83c6-79fa7120f1cf --subject "Updated Subject"',"resend templates publish 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates duplicate 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend templates delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend templates open","resend templates open 78261eea-8f8b-4381-83c6-79fa7120f1cf"]})).addCommand(Gd).addCommand(Nd).addCommand(qd).addCommand(Md,{isDefault:!0}).addCommand(Wd).addCommand(Hd).addCommand(Ld).addCommand(Qd);var Vd=new u("create").description("Create a new topic for subscription management").option("--name <name>","Topic name (required)").option("--description <description>","Description shown to contacts when managing subscriptions").addOption(new L("--default-subscription <mode>","Default subscription state for contacts").choices(["opt_in","opt_out"]).default("opt_in")).addHelpText("after",p({context:`Topics enable fine-grained subscription management. Contacts can opt in or out of
829
831
  individual topics. Broadcasts can target only contacts opted into a specific topic.
830
832
 
831
833
  Example topics: "Product Updates", "Security Alerts", "Weekly Digest".
@@ -834,16 +836,16 @@ Example topics: "Product Updates", "Security Alerts", "Weekly Digest".
834
836
  opt_in Contacts receive broadcasts unless they explicitly opt out (default)
835
837
  opt_out Contacts do NOT receive broadcasts unless they explicitly opt in
836
838
 
837
- Non-interactive: --name is required.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out','resend topics create --name "Security Alerts" --description "Critical security notices" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Topic name",placeholder:"e.g. Product Updates"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating topic...",sdkCall:r=>r.topics.create({name:i,defaultSubscription:e.defaultSubscription,...e.description&&{description:e.description}}),onInteractive:r=>{console.log(`Topic created: ${r.id}`)}},o)});var Vd=new u("delete").alias("rm").description("Delete a topic").argument("[id]","Topic UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a topic removes all contact subscriptions to that topic and may affect
839
+ Non-interactive: --name is required.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","missing_name","create_error"],examples:['resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out','resend topics create --name "Security Alerts" --description "Critical security notices" --json']})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.name,{message:"Topic name",placeholder:"e.g. Product Updates"},{message:"Missing --name flag.",code:"missing_name"},o);await M({loading:"Creating topic...",sdkCall:r=>r.topics.create({name:i,defaultSubscription:e.defaultSubscription,...e.description&&{description:e.description}}),onInteractive:r=>{console.log(`Topic created: ${r.id}`)}},o)});var zd=new u("delete").alias("rm").description("Delete a topic").argument("[id]","Topic UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a topic removes all contact subscriptions to that topic and may affect
838
840
  broadcasts that reference this topic_id. Contacts themselves are not deleted.
839
841
 
840
842
  Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"topic","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes","resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,At,i);await te(r.id,!!t.yes,{confirmMessage:`Delete topic "${r.label}"?
841
843
  ID: ${r.id}
842
- All contact subscriptions and broadcast associations will be removed.`,loading:"Deleting topic...",object:"topic",successMsg:"Topic deleted",sdkCall:n=>n.topics.remove(r.id)},i)});var zd=new u("get").description("Retrieve a topic by ID").argument("[id]","Topic UUID").addHelpText("after",p({output:' {"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,At,i);await Q({loading:"Fetching topic...",sdkCall:n=>n.topics.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),n.description&&console.log(`Description: ${n.description}`),console.log(`Default subscription: ${n.default_subscription}`),console.log(`Created: ${n.created_at}`)}},i)});var Yd=new u("list").alias("ls").description("List all topics").addHelpText("after",p({context:`Returns all topics in your account. Topic subscription management for individual
843
- contacts is handled via "resend contacts topics <contactId>".`,output:' {"data":[{"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend topics list","resend topics list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await F({loading:"Fetching topics...",sdkCall:i=>i.topics.list(),onInteractive:i=>console.log(rl(i.data))},o)});var Xd=new u("update").description("Update a topic's name or description").argument("[id]","Topic UUID").option("--name <name>","New topic name").option("--description <description>","New description shown to contacts").addHelpText("after",p({context:`At least one of --name or --description must be provided to update the topic.
844
+ All contact subscriptions and broadcast associations will be removed.`,loading:"Deleting topic...",object:"topic",successMsg:"Topic deleted",sdkCall:n=>n.topics.remove(r.id)},i)});var Yd=new u("get").description("Retrieve a topic by ID").argument("[id]","Topic UUID").addHelpText("after",p({output:' {"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}',errorCodes:["auth_error","fetch_error"],examples:["resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf","resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,At,i);await Q({loading:"Fetching topic...",sdkCall:n=>n.topics.get(r),onInteractive:n=>{console.log(`${n.name}`),console.log(`ID: ${n.id}`),n.description&&console.log(`Description: ${n.description}`),console.log(`Default subscription: ${n.default_subscription}`),console.log(`Created: ${n.created_at}`)}},i)});var Xd=new u("list").alias("ls").description("List all topics").addHelpText("after",p({context:`Returns all topics in your account. Topic subscription management for individual
845
+ contacts is handled via "resend contacts topics <contactId>".`,output:' {"data":[{"id":"<uuid>","name":"<name>","description":"<desc>","default_subscription":"opt_in|opt_out","created_at":"<date>"}]}',errorCodes:["auth_error","list_error"],examples:["resend topics list","resend topics list --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals();await F({loading:"Fetching topics...",sdkCall:i=>i.topics.list(),onInteractive:i=>console.log(rl(i.data))},o)});var Zd=new u("update").description("Update a topic's name or description").argument("[id]","Topic UUID").option("--name <name>","New topic name").option("--description <description>","New description shown to contacts").addHelpText("after",p({context:`At least one of --name or --description must be provided to update the topic.
844
846
 
845
847
  Note: --default-subscription cannot be changed after creation.
846
- To change the default subscription, delete the topic and recreate it.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:['resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"','resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --description "Critical notices" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,At,i);!t.name&&!t.description&&g({message:"Provide at least one option to update: --name or --description.",code:"no_changes"},{json:i.json}),await B({loading:"Updating topic...",sdkCall:n=>n.topics.update({id:r,...t.name&&{name:t.name},...t.description&&{description:t.description}}),errorCode:"update_error",successMsg:`Topic updated: ${r}`},i)});var Zd=new u("topics").description("Manage topics for contact subscription preferences").addHelpText("after",p({context:`Topics enable fine-grained subscription management beyond the global unsubscribe flag.
848
+ To change the default subscription, delete the topic and recreate it.`,output:' {"id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:['resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"','resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --description "Critical notices" --json']})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,At,i);!t.name&&!t.description&&g({message:"Provide at least one option to update: --name or --description.",code:"no_changes"},{json:i.json}),await B({loading:"Updating topic...",sdkCall:n=>n.topics.update({id:r,...t.name&&{name:t.name},...t.description&&{description:t.description}}),errorCode:"update_error",successMsg:`Topic updated: ${r}`},i)});var eu=new u("topics").description("Manage topics for contact subscription preferences").addHelpText("after",p({context:`Topics enable fine-grained subscription management beyond the global unsubscribe flag.
847
849
  A contact can opt in or out of individual topics independently.
848
850
 
849
851
  Broadcasts can target a topic_id so only contacts who have opted into that topic
@@ -856,11 +858,11 @@ Subscription states:
856
858
 
857
859
  Contact topic subscriptions are managed via the contacts namespace:
858
860
  resend contacts topics <contactId>
859
- resend contacts update-topics <contactId> --topic-id <id> --subscription opt_in`,examples:["resend topics list",'resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out',"resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"',"resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(Jd).addCommand(zd).addCommand(Yd,{isDefault:!0}).addCommand(Xd).addCommand(Vd);V();wo();St();var eu=new u("update").description("Check for available CLI updates").addHelpText("after",p({context:`Checks the latest release on GitHub (bypasses the cache).
861
+ resend contacts update-topics <contactId> --topic-id <id> --subscription opt_in`,examples:["resend topics list",'resend topics create --name "Product Updates"','resend topics create --name "Weekly Digest" --default-subscription opt_out',"resend topics get 78261eea-8f8b-4381-83c6-79fa7120f1cf",'resend topics update 78261eea-8f8b-4381-83c6-79fa7120f1cf --name "Security Alerts"',"resend topics delete 78261eea-8f8b-4381-83c6-79fa7120f1cf --yes"]})).addCommand(Vd).addCommand(Yd).addCommand(Xd,{isDefault:!0}).addCommand(Zd).addCommand(zd);V();wo();St();var tu=new u("update").description("Check for available CLI updates").addHelpText("after",p({context:`Checks the latest release on GitHub (bypasses the cache).
860
862
  Shows the current version, latest version, and how to upgrade.`,output:` {"current":"1.4.0","latest":"1.5.0","update_available":true,"upgrade_command":"npm install -g resend-cli"}
861
863
  {"current":"1.5.0","latest":"1.5.0","update_available":false}`,examples:["resend update","resend update --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),r=U()&&!o.json?se("Checking for updates..."):null,n=await Tr();if(!n){r?.fail("Could not check for updates"),g({message:"Could not reach GitHub releases",code:"fetch_failed"},{json:o.json});return}let s=yi(ne,n),a=Ci();if(o.json||!U()){H({current:ne,latest:n,update_available:s,...s?{upgrade_command:a}:{}},{json:o.json});return}if(s){let l=a.startsWith("http");r?.warn(`Update available: v${ne} \u2192 v${n}`),console.log(`
862
864
  ${l?"Visit":"Run"}: \x1B[36m${a}\x1B[0m
863
- `)}else r?.stop(`Already up to date (v${ne})`)});V();var st=["email.sent","email.delivered","email.delivery_delayed","email.bounced","email.complained","email.opened","email.clicked","email.failed","email.scheduled","email.suppressed","email.received","contact.created","contact.updated","contact.deleted","domain.created","domain.updated","domain.deleted","suppression.added","suppression.removed"];function Yt(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}var ye={resource:"webhook",resourcePlural:"webhooks",fetchItems:(e,{limit:t,after:o})=>e.webhooks.list({limit:t,...o&&{after:o}}),display:e=>({label:e.endpoint,hint:e.id})};function tu(e){let t=e.map(o=>{let i=(o.events??[]).join(", "),r=i.length>60?`${i.slice(0,57)}...`:i;return[o.endpoint,r,o.status,o.id]});return _(["Endpoint","Events","Status","ID"],t,"(no webhooks)")}var ou=new u("create").description("Register a new webhook endpoint to receive real-time event notifications").option("--endpoint <endpoint>","HTTPS URL to receive webhook events (required)").option("--events <events...>",'Event types to subscribe to (comma or space-separated). Use "all" for all 17 events.').addHelpText("after",p({context:`Webhooks deliver real-time event notifications to your HTTPS endpoint.
865
+ `)}else r?.stop(`Already up to date (v${ne})`)});V();var st=["email.sent","email.delivered","email.delivery_delayed","email.bounced","email.complained","email.opened","email.clicked","email.failed","email.scheduled","email.suppressed","email.received","contact.created","contact.updated","contact.deleted","domain.created","domain.updated","domain.deleted","suppression.added","suppression.removed"];function Yt(e){return e.flatMap(t=>t.split(",")).map(t=>t.trim()).filter(Boolean)}var ye={resource:"webhook",resourcePlural:"webhooks",fetchItems:(e,{limit:t,after:o})=>e.webhooks.list({limit:t,...o&&{after:o}}),display:e=>({label:e.endpoint,hint:e.id})};function ou(e){let t=e.map(o=>{let i=(o.events??[]).join(", "),r=i.length>60?`${i.slice(0,57)}...`:i;return[o.endpoint,r,o.status,o.id]});return _(["Endpoint","Events","Status","ID"],t,"(no webhooks)")}var iu=new u("create").description("Register a new webhook endpoint to receive real-time event notifications").option("--endpoint <endpoint>","HTTPS URL to receive webhook events (required)").option("--events <events...>",'Event types to subscribe to (comma or space-separated). Use "all" for all 17 events.').addHelpText("after",p({context:`Webhooks deliver real-time event notifications to your HTTPS endpoint.
864
866
  Events fire per-recipient: a batch email to 3 recipients generates 3 email.sent events.
865
867
 
866
868
  --endpoint must use HTTPS.
@@ -882,38 +884,38 @@ Use the signing_secret in the response to verify webhook payloads using Svix
882
884
  signature headers (svix-id, svix-timestamp, svix-signature). "resend webhooks get" returns it again.
883
885
  Use resend.webhooks.verify() in your application to validate incoming payloads.
884
886
 
885
- Non-interactive: --endpoint and --events are required.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","missing_endpoint","missing_events","create_error"],examples:["resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks create --endpoint https://app.example.com/hooks/resend --events email.sent email.bounced","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.endpoint,{message:"Webhook endpoint URL",placeholder:"https://your-app.com/webhooks/resend",validate:s=>{if(!s)return"Endpoint URL is required";if(!s.startsWith("https://"))return"Endpoint must use HTTPS"}},{message:"Missing --endpoint flag.",code:"missing_endpoint"},o),r,n=e.events?.length?Yt(e.events):void 0;if(n?.includes("all"))r=st;else if(n?.length)r=n;else{(!U()||o.json)&&g({message:"Missing --events flag.",code:"missing_events"},{json:o.json});let s=await Gn({message:"Select event types to subscribe to",options:st.map(a=>({value:a,label:a}))});k(s)&&R("Cancelled."),r=s}await M({loading:"Creating webhook...",sdkCall:s=>s.webhooks.create({endpoint:i,events:r}),onInteractive:s=>{console.log("Webhook created"),console.log(`ID: ${s.id}`),console.log(`Signing Secret: ${s.signing_secret}`)}},o)});var iu=new u("delete").alias("rm").description("Delete a webhook endpoint and stop all event deliveries to it").argument("[id]","Webhook UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a webhook immediately stops event delivery to the endpoint.
887
+ Non-interactive: --endpoint and --events are required.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","missing_endpoint","missing_events","create_error"],examples:["resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks create --endpoint https://app.example.com/hooks/resend --events email.sent email.bounced","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.endpoint,{message:"Webhook endpoint URL",placeholder:"https://your-app.com/webhooks/resend",validate:s=>{if(!s)return"Endpoint URL is required";if(!s.startsWith("https://"))return"Endpoint must use HTTPS"}},{message:"Missing --endpoint flag.",code:"missing_endpoint"},o),r,n=e.events?.length?Yt(e.events):void 0;if(n?.includes("all"))r=st;else if(n?.length)r=n;else{(!U()||o.json)&&g({message:"Missing --events flag.",code:"missing_events"},{json:o.json});let s=await Gn({message:"Select event types to subscribe to",options:st.map(a=>({value:a,label:a}))});k(s)&&R("Cancelled."),r=s}await M({loading:"Creating webhook...",sdkCall:s=>s.webhooks.create({endpoint:i,events:r}),onInteractive:s=>{console.log("Webhook created"),console.log(`ID: ${s.id}`),console.log(`Signing Secret: ${s.signing_secret}`)}},o)});var ru=new u("delete").alias("rm").description("Delete a webhook endpoint and stop all event deliveries to it").argument("[id]","Webhook UUID").option("--yes","Skip the confirmation prompt (required in non-interactive mode)").addHelpText("after",p({context:`Warning: Deleting a webhook immediately stops event delivery to the endpoint.
886
888
  In-flight events may still be attempted once before the deletion takes effect.
887
889
  To temporarily pause delivery without losing configuration, use:
888
890
  resend webhooks update <id> --status disabled
889
891
 
890
892
  Non-interactive: --yes is required to confirm deletion when stdin/stdout is not a TTY.`,output:' {"object":"webhook","id":"<uuid>","deleted":true}',errorCodes:["auth_error","confirmation_required","delete_error"],examples:["resend webhooks delete wh_abc123 --yes","resend webhooks delete wh_abc123 --yes --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await ee(e,ye,i);await te(r.id,!!t.yes,{confirmMessage:`Delete webhook "${r.label}"?
891
893
  ID: ${r.id}
892
- Events will no longer be delivered to this endpoint.`,loading:"Deleting webhook...",object:"webhook",successMsg:"Webhook deleted",sdkCall:n=>n.webhooks.remove(r.id)},i)});function Xt(e){return{resource:"webhook event",resourcePlural:"webhook events",fetchItems:(t,{limit:o,after:i})=>t.webhooks.events.list({webhookId:e,limit:o,...i&&{after:i}}),display:t=>({label:`${t.type} (${t.status})`,hint:t.id})}}function ru(e){let t=e.map(o=>[o.type,o.status,o.created_at,o.id]);return _(["Type","Status","Created","ID"],t,"(no webhook events)")}function nu(e){let t=e.map(o=>{let i=o.response.replace(/\s+/g," ").trim();return[String(o.http_status_code),o.sent_at,i.length>60?`${i.slice(0,57)}...`:i,o.id]});return _(["HTTP","Sent","Response","ID"],t,"(no delivery attempts)")}var su=new u("attempts").description("List the delivery attempts for a webhook event, most recent first").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").option("--limit <n>","Maximum number of attempts to return (1-100)","10").option("--after <cursor>","Return attempts after this attempt ID (next page)").addHelpText("after",p({context:`Each attempt records what your endpoint returned: http_status_code and the
894
+ Events will no longer be delivered to this endpoint.`,loading:"Deleting webhook...",object:"webhook",successMsg:"Webhook deleted",sdkCall:n=>n.webhooks.remove(r.id)},i)});function Xt(e){return{resource:"webhook event",resourcePlural:"webhook events",fetchItems:(t,{limit:o,after:i})=>t.webhooks.events.list({webhookId:e,limit:o,...i&&{after:i}}),display:t=>({label:`${t.type} (${t.status})`,hint:t.id})}}function nu(e){let t=e.map(o=>[o.type,o.status,o.created_at,o.id]);return _(["Type","Status","Created","ID"],t,"(no webhook events)")}function su(e){let t=e.map(o=>{let i=o.response.replace(/\s+/g," ").trim();return[String(o.http_status_code),o.sent_at,i.length>60?`${i.slice(0,57)}...`:i,o.id]});return _(["HTTP","Sent","Response","ID"],t,"(no delivery attempts)")}var au=new u("attempts").description("List the delivery attempts for a webhook event, most recent first").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").option("--limit <n>","Maximum number of attempts to return (1-100)","10").option("--after <cursor>","Return attempts after this attempt ID (next page)").addHelpText("after",p({context:`Each attempt records what your endpoint returned: http_status_code and the
893
895
  response body. Use this to debug why an event ended up in the failed status.
894
896
 
895
- This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"atmpt_...","http_status_code":500,"response":"Internal Server Error","sent_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,Xt(n),r),a=O(o.limit,r);await F({loading:"Fetching delivery attempts...",sdkCall:l=>l.webhooks.events.attempts.list({webhookId:n,eventId:s,limit:a,...o.after!==void 0&&{after:o.after}}),onInteractive:l=>{console.log(nu(l.data)),T(l,`webhooks events attempts ${n} ${s}`,{limit:a,apiKey:r.apiKey,profile:r.profile})}},r)});var au=new u("get").description("Retrieve a single event delivered to a webhook").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",p({context:`next_attempt_at is when the next delivery attempt is scheduled. It is null
897
+ This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"atmpt_...","http_status_code":500,"response":"Internal Server Error","sent_at":"..."}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,Xt(n),r),a=O(o.limit,r);await F({loading:"Fetching delivery attempts...",sdkCall:l=>l.webhooks.events.attempts.list({webhookId:n,eventId:s,limit:a,...o.after!==void 0&&{after:o.after}}),onInteractive:l=>{console.log(su(l.data)),T(l,`webhooks events attempts ${n} ${s}`,{limit:a,apiKey:r.apiKey,profile:r.profile})}},r)});var lu=new u("get").description("Retrieve a single event delivered to a webhook").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",p({context:`next_attempt_at is when the next delivery attempt is scheduled. It is null
896
898
  once the event reaches success or failed.
897
899
 
898
900
  payload is the JSON body that was sent to your endpoint.`,output:' {"object":"webhook_event","id":"msg_...","type":"email.sent","created_at":"...","status":"attempting","next_attempt_at":"...","payload":{...}}',errorCodes:["auth_error","fetch_error"],examples:["resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,Xt(n),r);await Q({loading:"Fetching webhook event...",sdkCall:a=>a.webhooks.events.get({webhookId:n,eventId:s}),onInteractive:a=>{console.log(`${a.type} - ${a.status}`),console.log(`ID: ${a.id}`),console.log(`Created: ${a.created_at}`),console.log(`Next attempt: ${a.next_attempt_at??"none scheduled"}`),console.log(`
899
901
  Payload:
900
- ${JSON.stringify(a.payload,null,2)}`)}},r)});var lu=new u("list").alias("ls").description("List the events delivered to a webhook, most recent first").argument("[webhookId]","Webhook ID").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this event ID (next page)").addHelpText("after",p({context:`status is the delivery status of the event to this webhook:
902
+ ${JSON.stringify(a.payload,null,2)}`)}},r)});var cu=new u("list").alias("ls").description("List the events delivered to a webhook, most recent first").argument("[webhookId]","Webhook ID").option("--limit <n>","Maximum number of events to return (1-100)","10").option("--after <cursor>","Return events after this event ID (next page)").addHelpText("after",p({context:`status is the delivery status of the event to this webhook:
901
903
  pending, attempting, success, or failed.
902
904
 
903
- This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"msg_...","type":"email.sent","created_at":"...","status":"success"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --limit 50","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --after msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i),n=O(t.limit,i);await F({loading:"Fetching webhook events...",sdkCall:s=>s.webhooks.events.list({webhookId:r,limit:n,...t.after!==void 0&&{after:t.after}}),onInteractive:s=>{console.log(ru(s.data)),T(s,`webhooks events list ${r}`,{limit:n,apiKey:i.apiKey,profile:i.profile})}},i)});var cu=new u("replay").description("Queue another delivery attempt for a webhook event").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",p({context:`Queues one more delivery of the event. Does not schedule automatic retries.
904
- The webhook must be enabled \u2014 re-enable it first with: resend webhooks update <webhook-id> --status enabled`,output:' {"object":"webhook_event","id":"msg_..."}',errorCodes:["auth_error","replay_error"],examples:["resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,Xt(n),r);await B({loading:"Replaying webhook event...",sdkCall:a=>a.webhooks.events.replay({webhookId:n,eventId:s}),errorCode:"replay_error",successMsg:`Webhook event replay queued: ${s}`},r)});var du=new u("events").description("Inspect or replay the events Resend delivered to a webhook").addHelpText("after",p({context:`Debugging a webhook that is missing deliveries:
905
+ This endpoint paginates forward only \u2014 there is no --before cursor.`,output:' {"object":"list","has_more":false,"data":[{"id":"msg_...","type":"email.sent","created_at":"...","status":"success"}]}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --limit 50","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --after msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i),n=O(t.limit,i);await F({loading:"Fetching webhook events...",sdkCall:s=>s.webhooks.events.list({webhookId:r,limit:n,...t.after!==void 0&&{after:t.after}}),onInteractive:s=>{console.log(nu(s.data)),T(s,`webhooks events list ${r}`,{limit:n,apiKey:i.apiKey,profile:i.profile})}},i)});var du=new u("replay").description("Queue another delivery attempt for a webhook event").argument("[webhookId]","Webhook ID").argument("[eventId]","Webhook event ID").addHelpText("after",p({context:`Queues one more delivery of the event. Does not schedule automatic retries.
906
+ The webhook must be enabled \u2014 re-enable it first with: resend webhooks update <webhook-id> --status enabled`,output:' {"object":"webhook_event","id":"msg_..."}',errorCodes:["auth_error","replay_error"],examples:["resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2 --json"]})).action(async(e,t,o,i)=>{let r=i.optsWithGlobals(),n=await C(e,ye,r),s=await C(t,Xt(n),r);await B({loading:"Replaying webhook event...",sdkCall:a=>a.webhooks.events.replay({webhookId:n,eventId:s}),errorCode:"replay_error",successMsg:`Webhook event replay queued: ${s}`},r)});var uu=new u("events").description("Inspect or replay the events Resend delivered to a webhook").addHelpText("after",p({context:`Debugging a webhook that is missing deliveries:
905
907
  1. resend webhooks events list <webhook-id> (find the event)
906
908
  2. resend webhooks events get <webhook-id> <event-id> (see the payload we sent)
907
909
  3. resend webhooks events attempts <webhook-id> <event-id> (see what your endpoint returned)
908
910
  4. resend webhooks events replay <webhook-id> <event-id> (queue another delivery)
909
911
 
910
912
  Events are listed most recent first. Both list commands paginate forward only,
911
- with --after.`,examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"]})).addCommand(lu,{isDefault:!0}).addCommand(au).addCommand(su).addCommand(cu);var uu=new u("get").description("Retrieve a webhook endpoint configuration by ID").argument("[id]","Webhook UUID").addHelpText("after",p({context:'The response includes the signing_secret. Rotate it with "resend webhooks rotate-signing-secret <id>".',output:' {"object":"webhook","id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled|disabled","created_at":"<date>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","fetch_error"],examples:["resend webhooks get wh_abc123","resend webhooks get wh_abc123 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i);await Q({loading:"Fetching webhook...",sdkCall:n=>n.webhooks.get(r),onInteractive:n=>{console.log(`${n.endpoint}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),console.log(`Events: ${(n.events??[]).join(", ")||"(none)"}`),console.log(`Created: ${n.created_at}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var mu=new u("list").alias("ls").description("List all registered webhook endpoints").option("--limit <n>","Maximum number of webhooks to return (1-100)","10").option("--after <cursor>","Return webhooks after this cursor (next page)").option("--before <cursor>","Return webhooks before this cursor (previous page)").addHelpText("after",p({context:`Pagination: use --after or --before with a webhook ID as the cursor.
913
+ with --after.`,examples:["resend webhooks events list 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks events get 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events attempts 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2","resend webhooks events replay 4dd369bc-aa82-4ff3-97de-514ae3000ee0 msg_1srOrx2ZWZBpBUvZwXKQmoEYga2"]})).addCommand(cu,{isDefault:!0}).addCommand(lu).addCommand(au).addCommand(du);var mu=new u("get").description("Retrieve a webhook endpoint configuration by ID").argument("[id]","Webhook UUID").addHelpText("after",p({context:'The response includes the signing_secret. Rotate it with "resend webhooks rotate-signing-secret <id>".',output:' {"object":"webhook","id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled|disabled","created_at":"<date>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","fetch_error"],examples:["resend webhooks get wh_abc123","resend webhooks get wh_abc123 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i);await Q({loading:"Fetching webhook...",sdkCall:n=>n.webhooks.get(r),onInteractive:n=>{console.log(`${n.endpoint}`),console.log(`ID: ${n.id}`),console.log(`Status: ${n.status}`),console.log(`Events: ${(n.events??[]).join(", ")||"(none)"}`),console.log(`Created: ${n.created_at}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var pu=new u("list").alias("ls").description("List all registered webhook endpoints").option("--limit <n>","Maximum number of webhooks to return (1-100)","10").option("--after <cursor>","Return webhooks after this cursor (next page)").option("--before <cursor>","Return webhooks before this cursor (previous page)").addHelpText("after",p({context:`Pagination: use --after or --before with a webhook ID as the cursor.
912
914
  Only one of --after or --before may be used at a time.
913
- The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks list","resend webhooks list --limit 25 --json","resend webhooks list --after wh_abc123 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching webhooks...",sdkCall:n=>n.webhooks.list(r),onInteractive:n=>{console.log(tu(n.data)),T(n,"webhooks list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var fu=require("node:http");var Ce=ue(Ve(),1);V();function pu(e){return e?"error"in e?e.timeout?{status:504,body:"Forward target timed out"}:{status:502,body:"Forward target unreachable"}:e.status>=200&&e.status<300?{status:200,body:"OK"}:{status:e.status,body:"Forward target failed"}:{status:200,body:"OK"}}var gu=["svix-id","svix-timestamp","svix-signature"],wg=3e4;function Ug(){return new Date().toLocaleTimeString("en-GB",{hour12:!1})}function Sg(e){let t=Fe(e.type??"unknown"),o=e.data??{},i=Fe(o.id??""),r="";if(t.startsWith("email.")){let n=Fe(o.from??""),s=Fe(Array.isArray(o.to)?o.to[0]:"");(n||s)&&(r=`${n} -> ${s}`)}else t.startsWith("domain.")?r=Fe(o.name??""):(t.startsWith("contact.")||t.startsWith("suppression."))&&(r=Fe(o.email??""));return{type:t,resourceId:i,detail:r}}function vg(e){let t=`${e} ${Kg(e)}`;return e>=200&&e<300?Ce.default.green(t):e>=400&&e<500?Ce.default.yellow(t):Ce.default.red(t)}function Kg(e){return{200:"OK",201:"Created",204:"No Content",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"}[e]??""}async function xg(e,t,o){let i={"content-type":"application/json"};for(let s of gu){let a=o[s];a&&(i[s]=a)}let r=e.startsWith("http")?e:`http://${e}`;return{status:(await fetch(r,{method:"POST",headers:i,body:t,signal:AbortSignal.timeout(wg)})).status}}function kg(e){return new Promise((t,o)=>{let i=[];e.on("data",r=>i.push(r)),e.on("end",()=>t(Buffer.concat(i).toString())),e.on("error",o)})}async function Fg(e,t,o){process.stderr.write(`
915
+ The response includes has_more: true when additional pages exist.`,output:' {"object":"list","data":[{"id":"<uuid>","endpoint":"<url>","events":["<event>"],"status":"enabled","created_at":"<date>"}],"has_more":false}',errorCodes:["auth_error","invalid_limit","list_error"],examples:["resend webhooks list","resend webhooks list --limit 25 --json","resend webhooks list --after wh_abc123 --json"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=O(e.limit,o),r=$(i,e.after,e.before,o);await F({loading:"Fetching webhooks...",sdkCall:n=>n.webhooks.list(r),onInteractive:n=>{console.log(ou(n.data)),T(n,"webhooks list",{limit:i,before:e.before,apiKey:o.apiKey,profile:o.profile})}},o)});var gu=require("node:http");var Ce=ue(ze(),1);V();function fu(e){return e?"error"in e?e.timeout?{status:504,body:"Forward target timed out"}:{status:502,body:"Forward target unreachable"}:e.status>=200&&e.status<300?{status:200,body:"OK"}:{status:e.status,body:"Forward target failed"}:{status:200,body:"OK"}}var hu=["svix-id","svix-timestamp","svix-signature"],Ug=3e4;function Sg(){return new Date().toLocaleTimeString("en-GB",{hour12:!1})}function vg(e){let t=Fe(e.type??"unknown"),o=e.data??{},i=Fe(o.id??""),r="";if(t.startsWith("email.")){let n=Fe(o.from??""),s=Fe(Array.isArray(o.to)?o.to[0]:"");(n||s)&&(r=`${n} -> ${s}`)}else t.startsWith("domain.")?r=Fe(o.name??""):(t.startsWith("contact.")||t.startsWith("suppression."))&&(r=Fe(o.email??""));return{type:t,resourceId:i,detail:r}}function Kg(e){let t=`${e} ${xg(e)}`;return e>=200&&e<300?Ce.default.green(t):e>=400&&e<500?Ce.default.yellow(t):Ce.default.red(t)}function xg(e){return{200:"OK",201:"Created",204:"No Content",400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout"}[e]??""}async function kg(e,t,o){let i={"content-type":"application/json"};for(let s of hu){let a=o[s];a&&(i[s]=a)}let r=e.startsWith("http")?e:`http://${e}`;return{status:(await fetch(r,{method:"POST",headers:i,body:t,signal:AbortSignal.timeout(Ug)})).status}}function Fg(e){return new Promise((t,o)=>{let i=[];e.on("data",r=>i.push(r)),e.on("end",()=>t(Buffer.concat(i).toString())),e.on("error",o)})}async function Rg(e,t,o){process.stderr.write(`
914
916
  Cleaning up...`);try{await e.webhooks.remove(t),process.stderr.write(` Webhook ${t} deleted.
915
917
  `)}catch{process.stderr.write(` Failed to delete webhook ${t}.
916
- `)}o.close()}var hu=new u("listen").description("Listen for webhook events locally during development").option("--url <url>","Public URL for receiving webhooks (your tunnel URL)").option("--forward-to <url>","Forward payloads to this local URL").option("--events <events...>","Event types to listen for (default: all)").option("--port <port>","Local server port","4318").addHelpText("after",p({context:`Start a local server that receives Resend webhook events in real time.
918
+ `)}o.close()}var Au=new u("listen").description("Listen for webhook events locally during development").option("--url <url>","Public URL for receiving webhooks (your tunnel URL)").option("--forward-to <url>","Forward payloads to this local URL").option("--events <events...>","Event types to listen for (default: all)").option("--port <port>","Local server port","4318").addHelpText("after",p({context:`Start a local server that receives Resend webhook events in real time.
917
919
 
918
920
  You must provide a public URL (e.g. from ngrok or localtunnel) that
919
921
  points to the local server port. The CLI will:
@@ -924,10 +926,10 @@ points to the local server port. The CLI will:
924
926
  5. Delete the temporary webhook on exit (Ctrl+C)
925
927
 
926
928
  Important: your tunnel must forward traffic to the same port as --port (default 4318).
927
- For example, if using ngrok: ngrok http 4318`,examples:["resend webhooks listen --url https://example.ngrok-free.app","resend webhooks listen --url https://example.ngrok-free.app --forward-to localhost:3000/webhook","resend webhooks listen --url https://example.ngrok-free.app --events email.sent email.bounced","resend webhooks listen --url https://example.ngrok-free.app --port 8080"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.url,{message:"Public tunnel URL",placeholder:"https://example.ngrok-free.app",validate:h=>{if(!h)return"URL is required";if(!h.startsWith("https://")&&!h.startsWith("http://"))return"URL must start with http:// or https://"}},{message:"Missing --url flag.",code:"missing_url"},o),r=Number.parseInt(e.port??"4318",10);(Number.isNaN(r)||r<1||r>65535)&&g({message:"Invalid port number.",code:"invalid_port"},{json:o.json});let n=e.events?.length?Yt(e.events):void 0,s;n?.includes("all")?s=st:n?.length?s=n:s=st;let a=await Y(o),l=o.json||!U(),d=(0,fu.createServer)(async(h,A)=>{try{if(h.method!=="POST"){A.writeHead(405).end("Method not allowed");return}let w=await kg(h),S;try{S=JSON.parse(w)}catch{A.writeHead(400).end("Invalid JSON");return}let v={};for(let E of gu){let N=h.headers[E];v[E]=Array.isArray(N)?N[0]:N}let{type:K,resourceId:x,detail:D}=Sg(S),I;if(e.forwardTo)try{let{status:E}=await xg(e.forwardTo,w,v);I={status:E}}catch(E){let N=E instanceof DOMException&&E.name==="TimeoutError";I={error:E instanceof Error?E.message:"Unknown error",timeout:N}}if(l){let E={timestamp:new Date().toISOString(),type:K,resource_id:x,payload:S};e.forwardTo&&I&&(E.forwarded="error"in I?{url:e.forwardTo,error:I.error}:{url:e.forwardTo,status:I.status}),console.log(JSON.stringify(E))}else{let E=Ce.default.dim(`[${Ug()}]`),N=K.padEnd(20),we=x.padEnd(14);if(process.stderr.write(`${E} ${Ce.default.bold(N)} ${Ce.default.cyan(we)} ${D}
929
+ For example, if using ngrok: ngrok http 4318`,examples:["resend webhooks listen --url https://example.ngrok-free.app","resend webhooks listen --url https://example.ngrok-free.app --forward-to localhost:3000/webhook","resend webhooks listen --url https://example.ngrok-free.app --events email.sent email.bounced","resend webhooks listen --url https://example.ngrok-free.app --port 8080"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=await P(e.url,{message:"Public tunnel URL",placeholder:"https://example.ngrok-free.app",validate:h=>{if(!h)return"URL is required";if(!h.startsWith("https://")&&!h.startsWith("http://"))return"URL must start with http:// or https://"}},{message:"Missing --url flag.",code:"missing_url"},o),r=Number.parseInt(e.port??"4318",10);(Number.isNaN(r)||r<1||r>65535)&&g({message:"Invalid port number.",code:"invalid_port"},{json:o.json});let n=e.events?.length?Yt(e.events):void 0,s;n?.includes("all")?s=st:n?.length?s=n:s=st;let a=await Y(o),l=o.json||!U(),d=(0,gu.createServer)(async(h,A)=>{try{if(h.method!=="POST"){A.writeHead(405).end("Method not allowed");return}let w=await Fg(h),S;try{S=JSON.parse(w)}catch{A.writeHead(400).end("Invalid JSON");return}let v={};for(let E of hu){let N=h.headers[E];v[E]=Array.isArray(N)?N[0]:N}let{type:K,resourceId:x,detail:D}=vg(S),I;if(e.forwardTo)try{let{status:E}=await kg(e.forwardTo,w,v);I={status:E}}catch(E){let N=E instanceof DOMException&&E.name==="TimeoutError";I={error:E instanceof Error?E.message:"Unknown error",timeout:N}}if(l){let E={timestamp:new Date().toISOString(),type:K,resource_id:x,payload:S};e.forwardTo&&I&&(E.forwarded="error"in I?{url:e.forwardTo,error:I.error}:{url:e.forwardTo,status:I.status}),console.log(JSON.stringify(E))}else{let E=Ce.default.dim(`[${Sg()}]`),N=K.padEnd(20),we=x.padEnd(14);if(process.stderr.write(`${E} ${Ce.default.bold(N)} ${Ce.default.cyan(we)} ${D}
928
930
  `),e.forwardTo&&I){let ie=e.forwardTo.startsWith("http")?e.forwardTo:`http://${e.forwardTo}`;"error"in I?process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.red(`[Error: ${I.error}]`)}
929
- `):process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.dim(`[${vg(I.status)}]`)}
930
- `)}}let G=pu(I);A.writeHead(G.status).end(G.body)}catch{A.headersSent||A.writeHead(500).end("Internal error")}});try{await new Promise((h,A)=>{d.on("error",A),d.listen(r,h)})}catch(h){g({message:h instanceof Error?`Failed to start local server on port ${r}: ${h.message}`:`Failed to start local server on port ${r}`,code:"server_listen_error"},{json:o.json})}let c=se("Setting up webhook listener...",o.quiet),m;try{let{data:h,error:A}=await a.webhooks.create({endpoint:i,events:s});(A||!h)&&(c.fail("Failed to create webhook"),d.close(),g({message:A?.message??"Unexpected empty response",code:"create_error"},{json:o.json})),m=h.id}catch(h){c.fail("Failed to create webhook"),d.close(),g({message:h instanceof Error?h.message:"Unknown error",code:"create_error"},{json:o.json})}if(c.stop("Webhook listener ready"),!l){let h=s.length===st.length?"all events":s.length<=3?s.join(", "):`${s.slice(0,3).join(", ")} (+${s.length-3} more)`;if(process.stderr.write(`
931
+ `):process.stderr.write(`${Ce.default.dim(" -> POST")} ${ie} ${Ce.default.dim(`[${Kg(I.status)}]`)}
932
+ `)}}let G=fu(I);A.writeHead(G.status).end(G.body)}catch{A.headersSent||A.writeHead(500).end("Internal error")}});try{await new Promise((h,A)=>{d.on("error",A),d.listen(r,h)})}catch(h){g({message:h instanceof Error?`Failed to start local server on port ${r}: ${h.message}`:`Failed to start local server on port ${r}`,code:"server_listen_error"},{json:o.json})}let c=se("Setting up webhook listener...",o.quiet),m;try{let{data:h,error:A}=await a.webhooks.create({endpoint:i,events:s});(A||!h)&&(c.fail("Failed to create webhook"),d.close(),g({message:A?.message??"Unexpected empty response",code:"create_error"},{json:o.json})),m=h.id}catch(h){c.fail("Failed to create webhook"),d.close(),g({message:h instanceof Error?h.message:"Unknown error",code:"create_error"},{json:o.json})}if(c.stop("Webhook listener ready"),!l){let h=s.length===st.length?"all events":s.length<=3?s.join(", "):`${s.slice(0,3).join(", ")} (+${s.length-3} more)`;if(process.stderr.write(`
931
933
  `),process.stderr.write(` ${Ce.default.bold("Webhook:")} ${m}
932
934
  `),process.stderr.write(` ${Ce.default.bold("Endpoint:")} ${i}
933
935
  `),process.stderr.write(` ${Ce.default.bold("Events:")} ${h}
@@ -936,16 +938,16 @@ For example, if using ngrok: ngrok http 4318`,examples:["resend webhooks listen
936
938
  `)}process.stderr.write(`
937
939
  Ready! Listening for webhook events. Press Ctrl+C to stop.
938
940
 
939
- `)}let f=!1,b=async()=>{f||(f=!0,await Fg(a,m,d),process.exit(Ht()))};ti(b),process.on("SIGTERM",b),await new Promise(()=>{})});var Au=new u("rotate-signing-secret").description("Generate a new signing secret for a webhook").argument("[id]","Webhook UUID").addHelpText("after",p({context:`Generates a new signing secret and returns it. For 24 hours, payloads are
941
+ `)}let f=!1,b=async()=>{f||(f=!0,await Rg(a,m,d),process.exit(Ht()))};ti(b),process.on("SIGTERM",b),await new Promise(()=>{})});var bu=new u("rotate-signing-secret").description("Generate a new signing secret for a webhook").argument("[id]","Webhook UUID").addHelpText("after",p({context:`Generates a new signing secret and returns it. For 24 hours, payloads are
940
942
  signed with both the new and the previous secret, so either one verifies them.
941
- After that, only the new secret does. Update your verification code within that window.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","create_error"],examples:["resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i);await M({loading:"Rotating webhook signing secret...",sdkCall:n=>n.webhooks.rotateSigningSecret(r),onInteractive:n=>{console.log("Webhook signing secret rotated"),console.log(`ID: ${n.id}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var bu=new u("update").description("Update a webhook's endpoint URL, event subscriptions, or enabled status").argument("[id]","Webhook UUID").option("--endpoint <endpoint>","New HTTPS URL for this webhook").option("--events <events...>",'Replace the full event subscription list (comma or space-separated). Use "all" for all 17 events.').addOption(new L("--status <status>","Enable or disable event delivery for this webhook").choices(["enabled","disabled"])).addHelpText("after",p({context:`At least one of --endpoint, --events, or --status must be provided.
943
+ After that, only the new secret does. Update your verification code within that window.`,output:' {"object":"webhook","id":"<uuid>","signing_secret":"<whsec_...>"}',errorCodes:["auth_error","create_error"],examples:["resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0","resend webhooks rotate-signing-secret 4dd369bc-aa82-4ff3-97de-514ae3000ee0 --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i);await M({loading:"Rotating webhook signing secret...",sdkCall:n=>n.webhooks.rotateSigningSecret(r),onInteractive:n=>{console.log("Webhook signing secret rotated"),console.log(`ID: ${n.id}`),console.log(`Signing Secret: ${n.signing_secret}`)}},i)});var yu=new u("update").description("Update a webhook's endpoint URL, event subscriptions, or enabled status").argument("[id]","Webhook UUID").option("--endpoint <endpoint>","New HTTPS URL for this webhook").option("--events <events...>",'Replace the full event subscription list (comma or space-separated). Use "all" for all 17 events.').addOption(new L("--status <status>","Enable or disable event delivery for this webhook").choices(["enabled","disabled"])).addHelpText("after",p({context:`At least one of --endpoint, --events, or --status must be provided.
942
944
 
943
945
  --events replaces the entire event list (it is not additive).
944
946
  Use "all" as a shorthand for all 17 event types.
945
947
 
946
948
  --status controls whether events are delivered to this endpoint:
947
949
  enabled Events are delivered (default on creation)
948
- disabled Events are suppressed without deleting the webhook`,output:' {"object":"webhook","id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend","resend webhooks update wh_abc123 --events email.sent email.bounced","resend webhooks update wh_abc123 --events all","resend webhooks update wh_abc123 --status disabled","resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend --events all --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i),n=t.events?.length?Yt(t.events):void 0,s=n!==void 0;!t.endpoint&&!s&&!t.status&&g({message:"Provide at least one option to update: --endpoint, --events, or --status.",code:"no_changes"},{json:i.json}),s&&!n.length&&g({message:"Missing --events values.",code:"no_changes"},{json:i.json});let a=n?.includes("all")?st:n?.length?n:void 0;await B({loading:"Updating webhook...",sdkCall:l=>l.webhooks.update(r,{...t.endpoint&&{endpoint:t.endpoint},...a?.length&&{events:a},...t.status&&{status:t.status}}),errorCode:"update_error",successMsg:`Webhook updated: ${r}`},i)});var yu=new u("webhooks").description("Manage webhook endpoints for real-time event notifications").addHelpText("after",p({context:`Webhooks let you receive real-time event notifications from Resend at an HTTPS endpoint.
950
+ disabled Events are suppressed without deleting the webhook`,output:' {"object":"webhook","id":"<uuid>"}',errorCodes:["auth_error","no_changes","update_error"],examples:["resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend","resend webhooks update wh_abc123 --events email.sent email.bounced","resend webhooks update wh_abc123 --events all","resend webhooks update wh_abc123 --status disabled","resend webhooks update wh_abc123 --endpoint https://new-app.example.com/hooks/resend --events all --json"]})).action(async(e,t,o)=>{let i=o.optsWithGlobals(),r=await C(e,ye,i),n=t.events?.length?Yt(t.events):void 0,s=n!==void 0;!t.endpoint&&!s&&!t.status&&g({message:"Provide at least one option to update: --endpoint, --events, or --status.",code:"no_changes"},{json:i.json}),s&&!n.length&&g({message:"Missing --events values.",code:"no_changes"},{json:i.json});let a=n?.includes("all")?st:n?.length?n:void 0;await B({loading:"Updating webhook...",sdkCall:l=>l.webhooks.update(r,{...t.endpoint&&{endpoint:t.endpoint},...a?.length&&{events:a},...t.status&&{status:t.status}}),errorCode:"update_error",successMsg:`Webhook updated: ${r}`},i)});var Cu=new u("webhooks").description("Manage webhook endpoints for real-time event notifications").addHelpText("after",p({context:`Webhooks let you receive real-time event notifications from Resend at an HTTPS endpoint.
949
951
  Payloads are signed with Svix headers for verification.
950
952
 
951
953
  Event categories (19 total):
@@ -962,18 +964,18 @@ Signature verification (Svix):
962
964
  Rotate a secret with "resend webhooks rotate-signing-secret <id>"; "resend webhooks get" returns the current one.
963
965
 
964
966
  Delivery history:
965
- Inspect what Resend sent and what your endpoint returned with "resend webhooks events".`,examples:["resend webhooks list","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks get wh_abc123","resend webhooks update wh_abc123 --status disabled","resend webhooks rotate-signing-secret wh_abc123","resend webhooks delete wh_abc123 --yes","resend webhooks events list wh_abc123"]})).addCommand(ou).addCommand(uu).addCommand(du).addCommand(hu).addCommand(mu,{isDefault:!0}).addCommand(bu).addCommand(Au).addCommand(iu);var wu=require("node:path");Ae();V();var Cu={flag:"flag",env:"environment variable",config:"config file",secure_storage:"secure storage"},Rg={full_access:"full access",sending_access:"sending access"},Uu=new u("whoami").description("Show current authentication status").addHelpText("after",p({setup:!0,context:`Local only \u2014 no network calls.
967
+ Inspect what Resend sent and what your endpoint returned with "resend webhooks events".`,examples:["resend webhooks list","resend webhooks create --endpoint https://app.example.com/hooks/resend --events all","resend webhooks get wh_abc123","resend webhooks update wh_abc123 --status disabled","resend webhooks rotate-signing-secret wh_abc123","resend webhooks delete wh_abc123 --yes","resend webhooks events list wh_abc123"]})).addCommand(iu).addCommand(mu).addCommand(uu).addCommand(Au).addCommand(pu,{isDefault:!0}).addCommand(yu).addCommand(bu).addCommand(ru);var Uu=require("node:path");Ae();V();var wu={flag:"flag",env:"environment variable",config:"config file",secure_storage:"secure storage"},_g={full_access:"full access",sending_access:"sending access"},Su=new u("whoami").description("Show current authentication status").addHelpText("after",p({setup:!0,context:`Local only \u2014 no network calls.
966
968
  Shows which profile is active and where the active credential comes from.`,output:' {"authenticated":true,"profile":"production","api_key":"re_...abcd","source":"config","config_path":"/Users/you/.config/resend/credentials.json"}\n {"error":{"message":"Not authenticated.\\nRun `resend login` to get started.","code":"not_authenticated"}}',examples:["resend whoami","resend whoami --json","resend whoami --profile production"]})).action(async(e,t)=>{let o=t.optsWithGlobals(),i=o.profile,r=await kt(o.apiKey,i,{refresh:!1});if(!r){let f=i||Xo(i),b=ke(),h=b.some(v=>v.name===f),A=i||process.env.RESEND_PROFILE,w=A&&!h?`Profile "${f}" not found.
967
- Available profiles: ${b.map(v=>v.name).join(", ")||"(none)"}`:"Not authenticated.\nRun `resend login` to get started.",S=A&&!h?"profile_not_found":"not_authenticated";o.json||!U()?g({message:w,code:S},{json:o.json}):g({message:w,code:S},{json:!1})}let n=r.profile??Xo(i),s=(0,wu.join)(Ge(),"credentials.json"),a=r.type==="api_key"?r.key:r.access_token,l=r.source,d=r.type==="api_key"?r.permission:void 0;if(o.json||!U()){H({authenticated:!0,profile:n,api_key:gt(a),source:l,...d&&{permission:d},config_path:s},{json:o.json});return}let c=r.type==="oauth_grant"?`${Cu[l]} (oauth)`:Cu[l],m=d?Rg[d]:void 0;console.log(""),console.log(` Profile: ${n}`),console.log(r.type==="oauth_grant"?` Token: ${gt(a)}`:` API Key: ${gt(a)}`),console.log(` Source: ${c}`),m&&console.log(` Access: ${m}`),console.log(` Config: ${s}`),console.log("")});function Su(e,t={}){let o=t.getArgv??(()=>process.argv.slice(2)),i=[],r=[e];for(;r.length>0;){let n=r.pop();if(!n)break;i.push(n);for(let s of n.commands)r.push(s)}for(let n of i){let a=n.configureOutput().outputError??((l,d)=>d(l));n.configureOutput({outputError:(l,d)=>{a(_g(l,e,o()),d)}})}}function _g(e,t,o){if(!Eg(e))return e;let i=Dg(t,o);return i?Bg(e,i):e}function Dg(e,t){let o=e,i=[];for(let r=0;r<t.length;r+=1){let n=t[r];if(!n||n==="--")return;let s=r;if(n.startsWith("-")&&n!=="-"){let d=n.startsWith("--")?n.split("=",1)[0]:n.length>2?n.slice(0,2):n,c;for(let m of Og(o)){for(let f of m.createHelp().visibleOptions(m))if(f.long===d||f.short===d){c=f;break}if(c)break}if(!c)s=void 0;else if(!c.required&&!c.optional)s=r+1;else if(c.variadic)s=t.length;else if(n.startsWith("--")&&n.includes("="))s=r+1;else if(!n.startsWith("--")&&n.length>2)s=r+1;else{let m=t[r+1];c.optional&&(m===void 0||m.startsWith("-"))?s=r+1:s=Math.min(r+2,t.length)}}if(s===void 0)return;if(s!==r){r=s-1;continue}if(n.startsWith("-"))return;let a=Tg(o).find(d=>Ku(d).has(n));if(a){o=a,i.push(a.name());continue}let l=Ig(n,vu(o)).map(d=>[e.name(),...i,d.name()].join(" "));return l.length===0?void 0:{unknownCommand:n,suggestions:l}}}function Eg(e){return/^error: unknown command /.test(e)||/^error: too many arguments/.test(e)}function Bg(e,t){let o=e.endsWith(`
969
+ Available profiles: ${b.map(v=>v.name).join(", ")||"(none)"}`:"Not authenticated.\nRun `resend login` to get started.",S=A&&!h?"profile_not_found":"not_authenticated";o.json||!U()?g({message:w,code:S},{json:o.json}):g({message:w,code:S},{json:!1})}let n=r.profile??Xo(i),s=(0,Uu.join)(Ge(),"credentials.json"),a=r.type==="api_key"?r.key:r.access_token,l=r.source,d=r.type==="api_key"?r.permission:void 0;if(o.json||!U()){H({authenticated:!0,profile:n,api_key:gt(a),source:l,...d&&{permission:d},config_path:s},{json:o.json});return}let c=r.type==="oauth_grant"?`${wu[l]} (oauth)`:wu[l],m=d?_g[d]:void 0;console.log(""),console.log(` Profile: ${n}`),console.log(r.type==="oauth_grant"?` Token: ${gt(a)}`:` API Key: ${gt(a)}`),console.log(` Source: ${c}`),m&&console.log(` Access: ${m}`),console.log(` Config: ${s}`),console.log("")});function vu(e,t={}){let o=t.getArgv??(()=>process.argv.slice(2)),i=[],r=[e];for(;r.length>0;){let n=r.pop();if(!n)break;i.push(n);for(let s of n.commands)r.push(s)}for(let n of i){let a=n.configureOutput().outputError??((l,d)=>d(l));n.configureOutput({outputError:(l,d)=>{a(Dg(l,e,o()),d)}})}}function Dg(e,t,o){if(!Bg(e))return e;let i=Eg(t,o);return i?Og(e,i):e}function Eg(e,t){let o=e,i=[];for(let r=0;r<t.length;r+=1){let n=t[r];if(!n||n==="--")return;let s=r;if(n.startsWith("-")&&n!=="-"){let d=n.startsWith("--")?n.split("=",1)[0]:n.length>2?n.slice(0,2):n,c;for(let m of Tg(o)){for(let f of m.createHelp().visibleOptions(m))if(f.long===d||f.short===d){c=f;break}if(c)break}if(!c)s=void 0;else if(!c.required&&!c.optional)s=r+1;else if(c.variadic)s=t.length;else if(n.startsWith("--")&&n.includes("="))s=r+1;else if(!n.startsWith("--")&&n.length>2)s=r+1;else{let m=t[r+1];c.optional&&(m===void 0||m.startsWith("-"))?s=r+1:s=Math.min(r+2,t.length)}}if(s===void 0)return;if(s!==r){r=s-1;continue}if(n.startsWith("-"))return;let a=Ig(o).find(d=>xu(d).has(n));if(a){o=a,i.push(a.name());continue}let l=jg(n,Ku(o)).map(d=>[e.name(),...i,d.name()].join(" "));return l.length===0?void 0:{unknownCommand:n,suggestions:l}}}function Bg(e){return/^error: unknown command /.test(e)||/^error: too many arguments/.test(e)}function Og(e,t){let o=e.endsWith(`
968
970
  `)?`
969
971
  `:"",{suggestions:i}=t,r=i.length===1?"Did you mean this?":"Did you mean one of these?",n=i.map(s=>` ${s}`).join(`
970
972
  `);return`error: unknown command '${t.unknownCommand}'
971
973
 
972
974
  ${r}
973
- ${n}${o}`}function Og(e){let t=[];for(let o=e;o;o=o.parent)t.push(o);return t}function vu(e){return e.createHelp().visibleCommands(e).filter(t=>!t._hidden)}function Tg(e){let t=[...e.commands];for(let o of vu(e))t.includes(o)||t.push(o);return t}function Ku(e){return new Set([e.name(),...e.aliases()])}function Ig(e,t){let o=t.map(r=>{let n=Number.POSITIVE_INFINITY;for(let s of Ku(r)){if(s.length<=1)continue;let a=jg(e,s,3),l=Math.max(e.length,s.length),d=(l-a)/l;a<=3&&d>.4&&a<n&&(n=a)}return{command:r,distance:n}}).filter(r=>Number.isFinite(r.distance));if(o.length===0)return[];let i=Math.min(...o.map(r=>r.distance));return o.filter(r=>r.distance===i).sort((r,n)=>r.command.name().localeCompare(n.command.name())).map(r=>r.command)}function jg(e,t,o=Number.POSITIVE_INFINITY){if(Math.abs(e.length-t.length)>o)return Math.max(e.length,t.length);let i=[];for(let r=0;r<=e.length;r+=1)i[r]=[r];for(let r=0;r<=t.length;r+=1)i[0][r]=r;for(let r=1;r<=t.length;r+=1)for(let n=1;n<=e.length;n+=1){let s=e[n-1]===t[r-1]?0:1;i[n][r]=Math.min(i[n-1][r]+1,i[n][r-1]+1,i[n-1][r-1]+s),n>1&&r>1&&e[n-1]===t[r-2]&&e[n-2]===t[r-1]&&(i[n][r]=Math.min(i[n][r],i[n-2][r-2]+1))}return i[e.length][t.length]}var Pg=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 "," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557"," \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D"," \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D "];function xu(){process.stdout.write(`
974
- `);for(let e of Pg)process.stdout.write(`${e}
975
+ ${n}${o}`}function Tg(e){let t=[];for(let o=e;o;o=o.parent)t.push(o);return t}function Ku(e){return e.createHelp().visibleCommands(e).filter(t=>!t._hidden)}function Ig(e){let t=[...e.commands];for(let o of Ku(e))t.includes(o)||t.push(o);return t}function xu(e){return new Set([e.name(),...e.aliases()])}function jg(e,t){let o=t.map(r=>{let n=Number.POSITIVE_INFINITY;for(let s of xu(r)){if(s.length<=1)continue;let a=Pg(e,s,3),l=Math.max(e.length,s.length),d=(l-a)/l;a<=3&&d>.4&&a<n&&(n=a)}return{command:r,distance:n}}).filter(r=>Number.isFinite(r.distance));if(o.length===0)return[];let i=Math.min(...o.map(r=>r.distance));return o.filter(r=>r.distance===i).sort((r,n)=>r.command.name().localeCompare(n.command.name())).map(r=>r.command)}function Pg(e,t,o=Number.POSITIVE_INFINITY){if(Math.abs(e.length-t.length)>o)return Math.max(e.length,t.length);let i=[];for(let r=0;r<=e.length;r+=1)i[r]=[r];for(let r=0;r<=t.length;r+=1)i[0][r]=r;for(let r=1;r<=t.length;r+=1)for(let n=1;n<=e.length;n+=1){let s=e[n-1]===t[r-1]?0:1;i[n][r]=Math.min(i[n-1][r]+1,i[n][r-1]+1,i[n-1][r-1]+s),n>1&&r>1&&e[n-1]===t[r-2]&&e[n-2]===t[r-1]&&(i[n][r]=Math.min(i[n][r],i[n-2][r-2]+1))}return i[e.length][t.length]}var $g=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 "," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557"," \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u255D \u2588\u2588\u2551\u255A\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551"," \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D"," \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2550\u2550\u2550\u255D "];function ku(){process.stdout.write(`
976
+ `);for(let e of $g)process.stdout.write(`${e}
975
977
  `);process.stdout.write(`
976
- `)}Mr();wo();St();ia();var qr="",Ou=[],Tu=[],Ct=new u().name("resend").description("Resend CLI \u2014 email for developers").configureHelp({showGlobalOptions:!0,styleTitle:e=>Zt.default.gray(e)}).configureOutput({writeErr:e=>{process.stderr.write(e.replace(/^error:/,()=>Zt.default.red("error:")))}}).helpCommand(!0).version(`${Mn} v${ne}`,"-v, --version","Output the current version").option("--api-key <key>","Resend API key (overrides env/config)").option("-p, --profile <name>","Profile to use (overrides RESEND_PROFILE)").option("--json","Force JSON output").option("-q, --quiet","Suppress spinners and status output (implies --json)").option("--insecure-storage","Save API key as plaintext instead of secure storage").hook("preAction",(e,t)=>{let o=[];for(let r=t;r?.parent;r=r.parent)o.unshift(r.name());qr=o.join(" ");let i=r=>r.options.filter(n=>r.getOptionValueSource(n.attributeName())==="cli").map(n=>n.long?.replace(/^--/,"")??n.short?.replace(/^-/,"")??"").filter(Boolean);Ou=i(t),Tu=i(e),t.optsWithGlobals().quiet&&e.setOptionValue("json",!0),t.optsWithGlobals().insecureStorage&&(process.env.RESEND_CREDENTIAL_STORE="file")}).addHelpText("after",`
978
+ `)}Mr();wo();St();ia();var qr="",Tu=[],Iu=[],Ct=new u().name("resend").description("Resend CLI \u2014 email for developers").configureHelp({showGlobalOptions:!0,styleTitle:e=>Zt.default.gray(e)}).configureOutput({writeErr:e=>{process.stderr.write(e.replace(/^error:/,()=>Zt.default.red("error:")))}}).helpCommand(!0).version(`${Mn} v${ne}`,"-v, --version","Output the current version").option("--api-key <key>","Resend API key (overrides env/config)").option("-p, --profile <name>","Profile to use (overrides RESEND_PROFILE)").option("--json","Force JSON output").option("-q, --quiet","Suppress spinners and status output (implies --json)").option("--insecure-storage","Save API key as plaintext instead of secure storage").hook("preAction",(e,t)=>{let o=[];for(let r=t;r?.parent;r=r.parent)o.unshift(r.name());qr=o.join(" ");let i=r=>r.options.filter(n=>r.getOptionValueSource(n.attributeName())==="cli").map(n=>n.long?.replace(/^--/,"")??n.short?.replace(/^-/,"")??"").filter(Boolean);Tu=i(t),Iu=i(e),t.optsWithGlobals().quiet&&e.setOptionValue("json",!0),t.optsWithGlobals().insecureStorage&&(process.env.RESEND_CREDENTIAL_STORE="file")}).addHelpText("after",`
977
979
  ${Zt.default.gray("Examples:")}
978
980
 
979
981
  - Login to Resend
@@ -983,4 +985,4 @@ ${Zt.default.gray("Examples:")}
983
985
  - Send an email
984
986
 
985
987
  ${Zt.default.blue("$ resend emails send")}
986
- `).action(()=>{process.stdout.isTTY&&xu();let e=Ct.opts();e.apiKey&&g({message:"--api-key is a per-command override and was not saved. To store your API key, run `resend login`.",code:"missing_command"},{json:e.json}),Ct.help()}).addCommand(li).addCommand(ed).addCommand(fl).addCommand($a).addCommand(cd).addCommand(Wd).addCommand(ac).addCommand(Gl).addCommand(Fd).addCommand(Zd).addCommand(xc).addCommand(gd).addCommand(Sl).addCommand(jd).addCommand(Aa).addCommand(yu).addCommand(Cd).addCommand(xa).addCommand(ci).addCommand(Uu).addCommand(gc).addCommand(wd).addCommand(lc).addCommand(eu).addCommand(Rl).addCommand(Bl),Iu=new u("telemetry").description("Telemetry management").helpCommand(!1);Iu.command("flush").argument("<file>").action(async e=>{let{flushFromFile:t}=await Promise.resolve().then(()=>(Mr(),Bu));await t(e)});Ct.addCommand(Iu,{hidden:!0});Su(Ct);Ct.parseAsync().then(()=>{let e=Ct.args[0];if(e==="update"||e==="telemetry")return;qr&&Nr(qr,{...Ct.opts(),flags:Ou,globalFlags:Tu});let t=Ct.opts();pc({json:!!(t.json||t.quiet)}).catch(()=>{})}).catch(e=>{g({message:q(e,"An unexpected error occurred"),code:"unexpected_error"})});
988
+ `).action(()=>{process.stdout.isTTY&&ku();let e=Ct.opts();e.apiKey&&g({message:"--api-key is a per-command override and was not saved. To store your API key, run `resend login`.",code:"missing_command"},{json:e.json}),Ct.help()}).addCommand(li).addCommand(td).addCommand(gl).addCommand($a).addCommand(dd).addCommand(Jd).addCommand(lc).addCommand(Hl).addCommand(Rd).addCommand(eu).addCommand(kc).addCommand(hd).addCommand(vl).addCommand(Pd).addCommand(Aa).addCommand(Cu).addCommand(wd).addCommand(xa).addCommand(ci).addCommand(Su).addCommand(hc).addCommand(Ud).addCommand(cc).addCommand(tu).addCommand(_l).addCommand(Ol),ju=new u("telemetry").description("Telemetry management").helpCommand(!1);ju.command("flush").argument("<file>").action(async e=>{let{flushFromFile:t}=await Promise.resolve().then(()=>(Mr(),Ou));await t(e)});Ct.addCommand(ju,{hidden:!0});vu(Ct);Ct.parseAsync().then(()=>{let e=Ct.args[0];if(e==="update"||e==="telemetry")return;qr&&Nr(qr,{...Ct.opts(),flags:Tu,globalFlags:Iu});let t=Ct.opts();fc({json:!!(t.json||t.quiet)}).catch(()=>{})}).catch(e=>{g({message:q(e,"An unexpected error occurred"),code:"unexpected_error"})});